From 720ed0591202c42debeae3200e0490d8c6949651 Mon Sep 17 00:00:00 2001 From: James Eversole Date: Wed, 28 May 2025 12:34:43 -0500 Subject: [PATCH] We're working! --- llm_tools_tricu_bridge.py | 29 ++++++++++++++++++++++------ pyproject.toml | 2 +- tests/test_llm_tools_tricu_bridge.py | 9 ++++----- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/llm_tools_tricu_bridge.py b/llm_tools_tricu_bridge.py index b8087d3..44b164e 100644 --- a/llm_tools_tricu_bridge.py +++ b/llm_tools_tricu_bridge.py @@ -1,13 +1,30 @@ +import resource +import subprocess +import time import llm +TRICU_PATH = "/usr/local/bin/tricu" -def tricu-bridge(input: str) -> str: - """ - Description of tool goes here. - """ - return f"hello {input}" +def tricubridge(input: str) -> str: + try: + result = subprocess.run( + [TRICU_PATH, "eval", "+RTS", "-M250M", "-RTS"], + input=input, + capture_output=True, + text=True, + check=True, + ) + if len(result.stdout) > 2000: + return "Output too large; limited to 2000 chars." + else: + return result.stdout.strip() + + except subprocess.CalledProcessError as e: + return f"Error executing Tricu code: {e.stderr or str(e)}" + except Exception as e: + return f"Unexpected error: {str(e)}" @llm.hookimpl def register_tools(register): - register(tricu-bridge) + register(tricubridge) diff --git a/pyproject.toml b/pyproject.toml index d6a23ed..7910249 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "llm-tools-tricu-bridge" +name = "llm-tools-tricubridge" version = "0.1" description = "A tool that allows running Tricu expressions" readme = "README.md" diff --git a/tests/test_llm_tools_tricu_bridge.py b/tests/test_llm_tools_tricu_bridge.py index 4e63881..f9d0152 100644 --- a/tests/test_llm_tools_tricu_bridge.py +++ b/tests/test_llm_tools_tricu_bridge.py @@ -1,7 +1,6 @@ import llm import json -from llm_tools_tricu_bridge import tricu-bridge - +from llm_tools_tricu_bridge import tricubridge def test_tool(): model = llm.get_model("echo") @@ -9,14 +8,14 @@ def test_tool(): json.dumps( { "tool_calls": [ - {"name": "tricu-bridge", "arguments": {"input": "pelican"}} + {"name": "tricubridge", "arguments": {"input": "x = t t"}} ] } ), - tools=[tricu-bridge], + tools=[tricubridge], ) responses = list(chain_response.responses()) tool_results = json.loads(responses[-1].text())["tool_results"] assert tool_results == [ - {"name": "tricu-bridge", "output": "hello pelican", "tool_call_id": None} + {"name": "tricubridge", "output": "t t", "tool_call_id": None} ]