tactus 0.35.1__py3-none-any.whl → 0.37.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tactus/__init__.py +1 -1
- tactus/adapters/channels/base.py +20 -2
- tactus/adapters/channels/broker.py +1 -0
- tactus/adapters/channels/host.py +3 -1
- tactus/adapters/channels/ipc.py +18 -3
- tactus/adapters/channels/sse.py +13 -5
- tactus/adapters/control_loop.py +44 -30
- tactus/adapters/mcp_manager.py +24 -7
- tactus/backends/http_backend.py +2 -2
- tactus/backends/pytorch_backend.py +2 -2
- tactus/broker/client.py +3 -3
- tactus/broker/server.py +17 -5
- tactus/core/dsl_stubs.py +3 -3
- tactus/core/execution_context.py +32 -27
- tactus/core/lua_sandbox.py +42 -34
- tactus/core/message_history_manager.py +51 -28
- tactus/core/output_validator.py +65 -51
- tactus/core/registry.py +29 -29
- tactus/core/runtime.py +69 -61
- tactus/dspy/broker_lm.py +13 -7
- tactus/dspy/config.py +7 -4
- tactus/ide/server.py +63 -33
- tactus/primitives/host.py +19 -16
- tactus/primitives/message_history.py +11 -14
- tactus/primitives/model.py +1 -1
- tactus/primitives/procedure.py +11 -8
- tactus/primitives/session.py +9 -9
- tactus/primitives/state.py +2 -2
- tactus/primitives/tool_handle.py +27 -24
- tactus/sandbox/container_runner.py +11 -6
- tactus/testing/context.py +6 -6
- tactus/testing/evaluation_runner.py +5 -5
- tactus/testing/mock_hitl.py +2 -2
- tactus/testing/models.py +2 -0
- tactus/testing/steps/builtin.py +2 -2
- tactus/testing/test_runner.py +6 -4
- tactus/utils/asyncio_helpers.py +2 -1
- tactus/utils/safe_libraries.py +2 -2
- {tactus-0.35.1.dist-info → tactus-0.37.0.dist-info}/METADATA +11 -5
- {tactus-0.35.1.dist-info → tactus-0.37.0.dist-info}/RECORD +43 -43
- {tactus-0.35.1.dist-info → tactus-0.37.0.dist-info}/WHEEL +0 -0
- {tactus-0.35.1.dist-info → tactus-0.37.0.dist-info}/entry_points.txt +0 -0
- {tactus-0.35.1.dist-info → tactus-0.37.0.dist-info}/licenses/LICENSE +0 -0
tactus/testing/context.py
CHANGED
|
@@ -45,18 +45,18 @@ class TactusTestContext:
|
|
|
45
45
|
self.total_tokens: int = 0 # Track total tokens
|
|
46
46
|
self.cost_breakdown: List[Any] = [] # Track per-call costs
|
|
47
47
|
self._agent_mock_turns: Dict[str, List[Dict[str, Any]]] = {}
|
|
48
|
-
self._scenario_message: str
|
|
48
|
+
self._scenario_message: Optional[str] = None
|
|
49
49
|
|
|
50
50
|
def set_scenario_message(self, message: str) -> None:
|
|
51
51
|
"""Set the scenario's primary injected message (for in-spec mocking coordination)."""
|
|
52
52
|
self._scenario_message = message
|
|
53
53
|
|
|
54
|
-
def get_scenario_message(self) -> str
|
|
54
|
+
def get_scenario_message(self) -> Optional[str]:
|
|
55
55
|
"""Get the scenario's primary injected message, if set."""
|
|
56
56
|
return self._scenario_message
|
|
57
57
|
|
|
58
58
|
def mock_agent_response(
|
|
59
|
-
self, agent: str, message: str, when_message: str
|
|
59
|
+
self, agent: str, message: str, when_message: Optional[str] = None
|
|
60
60
|
) -> None:
|
|
61
61
|
"""Add a mocked agent response for this scenario (temporal; 1 per agent turn).
|
|
62
62
|
|
|
@@ -79,8 +79,8 @@ class TactusTestContext:
|
|
|
79
79
|
self,
|
|
80
80
|
agent: str,
|
|
81
81
|
tool: str,
|
|
82
|
-
args: Dict[str, Any]
|
|
83
|
-
when_message: str
|
|
82
|
+
args: Optional[Dict[str, Any]] = None,
|
|
83
|
+
when_message: Optional[str] = None,
|
|
84
84
|
) -> None:
|
|
85
85
|
"""Add a mocked tool call to an agent's next mocked turn for this scenario."""
|
|
86
86
|
args = args or {}
|
|
@@ -114,7 +114,7 @@ class TactusTestContext:
|
|
|
114
114
|
self.runtime.external_agent_mocks = self._agent_mock_turns
|
|
115
115
|
|
|
116
116
|
def mock_agent_data(
|
|
117
|
-
self, agent: str, data: Dict[str, Any], when_message: str
|
|
117
|
+
self, agent: str, data: Dict[str, Any], when_message: Optional[str] = None
|
|
118
118
|
) -> None:
|
|
119
119
|
"""Set structured output mock data for an agent's next mocked turn.
|
|
120
120
|
|
|
@@ -94,6 +94,9 @@ class TactusEvaluationRunner(TactusTestRunner):
|
|
|
94
94
|
EvaluationResult with all metrics
|
|
95
95
|
"""
|
|
96
96
|
logger.info(f"Evaluating scenario '{scenario_name}' with {runs} runs")
|
|
97
|
+
run_iteration = self._run_single_iteration
|
|
98
|
+
if isinstance(run_iteration, staticmethod):
|
|
99
|
+
run_iteration = run_iteration.__func__
|
|
97
100
|
|
|
98
101
|
# Run scenario N times
|
|
99
102
|
if parallel:
|
|
@@ -102,12 +105,9 @@ class TactusEvaluationRunner(TactusTestRunner):
|
|
|
102
105
|
ctx = multiprocessing.get_context("spawn")
|
|
103
106
|
with ctx.Pool(processes=workers) as pool:
|
|
104
107
|
iteration_args = [(scenario_name, str(self.work_dir), i) for i in range(runs)]
|
|
105
|
-
results = pool.starmap(
|
|
108
|
+
results = pool.starmap(run_iteration, iteration_args)
|
|
106
109
|
else:
|
|
107
|
-
results = [
|
|
108
|
-
self._run_single_iteration(scenario_name, str(self.work_dir), i)
|
|
109
|
-
for i in range(runs)
|
|
110
|
-
]
|
|
110
|
+
results = [run_iteration(scenario_name, str(self.work_dir), i) for i in range(runs)]
|
|
111
111
|
|
|
112
112
|
# Calculate metrics
|
|
113
113
|
return self._calculate_metrics(scenario_name, results)
|
tactus/testing/mock_hitl.py
CHANGED
|
@@ -6,7 +6,7 @@ allowing tests to run without human intervention.
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
import logging
|
|
9
|
-
from datetime import datetime
|
|
9
|
+
from datetime import datetime, timezone
|
|
10
10
|
from typing import Any, Dict, Optional
|
|
11
11
|
|
|
12
12
|
from tactus.protocols.models import HITLRequest, HITLResponse
|
|
@@ -71,7 +71,7 @@ class MockHITLHandler:
|
|
|
71
71
|
|
|
72
72
|
return HITLResponse(
|
|
73
73
|
value=value,
|
|
74
|
-
responded_at=datetime.
|
|
74
|
+
responded_at=datetime.now(timezone.utc),
|
|
75
75
|
timed_out=False,
|
|
76
76
|
)
|
|
77
77
|
|
tactus/testing/models.py
CHANGED
tactus/testing/steps/builtin.py
CHANGED
|
@@ -14,7 +14,7 @@ Provides a comprehensive library of steps for testing:
|
|
|
14
14
|
import logging
|
|
15
15
|
import re
|
|
16
16
|
import ast
|
|
17
|
-
from typing import Any
|
|
17
|
+
from typing import Any, Optional
|
|
18
18
|
|
|
19
19
|
from .registry import StepRegistry
|
|
20
20
|
|
|
@@ -645,7 +645,7 @@ def step_agent_takes_turn(context: Any, agent: str) -> None:
|
|
|
645
645
|
|
|
646
646
|
|
|
647
647
|
def step_mock_agent_responds_with(
|
|
648
|
-
context: Any, agent: str, message: str, when_message: str
|
|
648
|
+
context: Any, agent: str, message: str, when_message: Optional[str] = None
|
|
649
649
|
) -> None:
|
|
650
650
|
"""Configure a per-scenario mock agent response (temporal)."""
|
|
651
651
|
message, _ = _parse_step_string_literal(message)
|
tactus/testing/test_runner.py
CHANGED
|
@@ -128,6 +128,10 @@ class TactusTestRunner:
|
|
|
128
128
|
if not scenarios:
|
|
129
129
|
raise ValueError(f"Scenario not found: {scenario_filter}")
|
|
130
130
|
|
|
131
|
+
run_scenario = self._run_single_scenario
|
|
132
|
+
if isinstance(run_scenario, staticmethod):
|
|
133
|
+
run_scenario = run_scenario.__func__
|
|
134
|
+
|
|
131
135
|
# Run scenarios
|
|
132
136
|
if parallel and len(scenarios) > 1:
|
|
133
137
|
# Run in parallel using 'spawn' to avoid Behave global state conflicts
|
|
@@ -135,13 +139,11 @@ class TactusTestRunner:
|
|
|
135
139
|
ctx = multiprocessing.get_context("spawn")
|
|
136
140
|
with ctx.Pool(processes=min(len(scenarios), os.cpu_count() or 1)) as pool:
|
|
137
141
|
scenario_results = pool.starmap(
|
|
138
|
-
|
|
142
|
+
run_scenario, [(s.name, str(self.work_dir)) for s in scenarios]
|
|
139
143
|
)
|
|
140
144
|
else:
|
|
141
145
|
# Run sequentially
|
|
142
|
-
scenario_results = [
|
|
143
|
-
self._run_single_scenario(s.name, str(self.work_dir)) for s in scenarios
|
|
144
|
-
]
|
|
146
|
+
scenario_results = [run_scenario(s.name, str(self.work_dir)) for s in scenarios]
|
|
145
147
|
|
|
146
148
|
# Build feature result
|
|
147
149
|
feature_result = self._build_feature_result(scenario_results)
|
tactus/utils/asyncio_helpers.py
CHANGED
tactus/utils/safe_libraries.py
CHANGED
|
@@ -10,7 +10,7 @@ import math
|
|
|
10
10
|
import random
|
|
11
11
|
import time
|
|
12
12
|
import warnings
|
|
13
|
-
from datetime import datetime
|
|
13
|
+
from datetime import datetime, timezone
|
|
14
14
|
from typing import Any, Callable, Optional
|
|
15
15
|
from functools import wraps
|
|
16
16
|
|
|
@@ -191,7 +191,7 @@ def create_safe_os_library(get_context: Callable, strict_mode: bool = False):
|
|
|
191
191
|
@warn_if_unsafe("os.date()", get_context)
|
|
192
192
|
def safe_date(format_string=None):
|
|
193
193
|
"""Safe os.date() with checkpoint warning."""
|
|
194
|
-
now = datetime.
|
|
194
|
+
now = datetime.now(timezone.utc)
|
|
195
195
|
|
|
196
196
|
if format_string is None:
|
|
197
197
|
# Default format like Lua's os.date()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tactus
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.37.0
|
|
4
4
|
Summary: Tactus: Lua-based DSL for agentic workflows
|
|
5
5
|
Project-URL: Homepage, https://github.com/AnthusAI/Tactus
|
|
6
6
|
Project-URL: Documentation, https://github.com/AnthusAI/Tactus/tree/main/docs
|
|
@@ -14,26 +14,32 @@ Classifier: Development Status :: 3 - Alpha
|
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
15
15
|
Classifier: License :: OSI Approved :: MIT License
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
21
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
22
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.9
|
|
22
24
|
Requires-Dist: antlr4-python3-runtime==4.13.1
|
|
23
25
|
Requires-Dist: behave>=1.2.6
|
|
24
26
|
Requires-Dist: boto3>=1.28.0
|
|
25
|
-
Requires-Dist: dotyaml>=0.1.
|
|
27
|
+
Requires-Dist: dotyaml>=0.1.4
|
|
26
28
|
Requires-Dist: dspy>=2.5
|
|
27
29
|
Requires-Dist: flask-cors>=4.0.0
|
|
28
30
|
Requires-Dist: flask>=3.0.0
|
|
29
31
|
Requires-Dist: gherkin-official>=28.0.0
|
|
30
32
|
Requires-Dist: h5py>=3.10
|
|
31
33
|
Requires-Dist: jinja2>=3.0
|
|
34
|
+
Requires-Dist: litellm>=1.81.5
|
|
35
|
+
Requires-Dist: logfire>=4.20.0
|
|
32
36
|
Requires-Dist: lupa>=2.6
|
|
33
37
|
Requires-Dist: markdown>=3.0
|
|
34
38
|
Requires-Dist: nanoid>=2.0.0
|
|
35
39
|
Requires-Dist: nest-asyncio>=1.5.0
|
|
36
40
|
Requires-Dist: openpyxl>=3.1
|
|
41
|
+
Requires-Dist: opentelemetry-api>=1.39.1
|
|
42
|
+
Requires-Dist: opentelemetry-sdk>=1.39.1
|
|
37
43
|
Requires-Dist: pyarrow>=14.0
|
|
38
44
|
Requires-Dist: pydantic-ai-slim[bedrock,evals]
|
|
39
45
|
Requires-Dist: pydantic>=2.0
|
|
@@ -44,9 +50,9 @@ Requires-Dist: typer
|
|
|
44
50
|
Provides-Extra: dev
|
|
45
51
|
Requires-Dist: antlr4-tools>=0.2.1; extra == 'dev'
|
|
46
52
|
Requires-Dist: behave>=1.2.6; extra == 'dev'
|
|
47
|
-
Requires-Dist: black==
|
|
53
|
+
Requires-Dist: black==24.10.0; extra == 'dev'
|
|
48
54
|
Requires-Dist: coverage>=7.4; extra == 'dev'
|
|
49
|
-
Requires-Dist: fastmcp>=2.3.5; extra == 'dev'
|
|
55
|
+
Requires-Dist: fastmcp>=2.3.5; (python_version >= '3.10') and extra == 'dev'
|
|
50
56
|
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
51
57
|
Requires-Dist: pytest-xdist>=3.0; extra == 'dev'
|
|
52
58
|
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
tactus/__init__.py,sha256=
|
|
1
|
+
tactus/__init__.py,sha256=Yj_oWwkl1LwtT-IEYuMZ5P1sAhaYAcNH3QiqziIgjU8,1245
|
|
2
2
|
tactus/adapters/__init__.py,sha256=47Y8kGBR4QGxqEGvjA1mneOSACb2L7oELnj6P2uI7uk,759
|
|
3
3
|
tactus/adapters/broker_log.py,sha256=9ZR-rJdyW6bMNZx3OfXoQEnDxcAzNsiJ8aPxZGqJYrM,6019
|
|
4
4
|
tactus/adapters/cli_hitl.py,sha256=Nrfoi35Ei9fTMReLG2QxKkhKyIvl3pYcAUdQCAUOZDk,17361
|
|
5
5
|
tactus/adapters/cli_log.py,sha256=w2orj3bDAcuK8QEQxLMM9yVarAMJDyTQjemQwbgJDWw,8890
|
|
6
|
-
tactus/adapters/control_loop.py,sha256=
|
|
6
|
+
tactus/adapters/control_loop.py,sha256=4I9uEK2FG535785tdl79EnYXy3EVC8ZZk0h_1NDB3gE,35996
|
|
7
7
|
tactus/adapters/cost_collector_log.py,sha256=O8w03qikrVqq5oltoEmBHIxwydTlODNrHYgfdWZP-a4,1784
|
|
8
8
|
tactus/adapters/file_storage.py,sha256=CslJoOh2yatwTleNllmiXY6apdyqc3OMSxB3Fj5Kz9I,14684
|
|
9
9
|
tactus/adapters/http_callback_log.py,sha256=J3K47zDUFj1SDka1CGwzLHhKw7ffKNNZhY5x8tJdnXY,3907
|
|
10
10
|
tactus/adapters/ide_log.py,sha256=lJsstRlK1iKpO72T3oQL7WmiGBtpLf9YeK0rQ8zT7HU,2435
|
|
11
11
|
tactus/adapters/lua_tools.py,sha256=eEQueiEI1e50ElqDD39cGsFlVDW7cPUcsGT9TkUiiJU,12988
|
|
12
12
|
tactus/adapters/mcp.py,sha256=EiwmFYp8JJKiDP18cp-DlwzV8HNOBwz7vVDFlltF6iI,10836
|
|
13
|
-
tactus/adapters/mcp_manager.py,sha256=
|
|
13
|
+
tactus/adapters/mcp_manager.py,sha256=mDfU6dcQSpgV6fsgsFJqXM4Ayi-LDCGinWVki1_bCKU,8456
|
|
14
14
|
tactus/adapters/memory.py,sha256=fCBNMIQQMVOUgFM39_Kky2idffP1sCifSjRafZsBbkg,2060
|
|
15
15
|
tactus/adapters/plugins.py,sha256=DRLvQT7GIy1q-PGhs80p6wswEs_arhYmhfe4O6sb5WU,14513
|
|
16
16
|
tactus/adapters/channels/__init__.py,sha256=oh1ymJmP8Lalq6JSDnXEnPdKMiPosAuqiUYF_HxEO64,4925
|
|
17
|
-
tactus/adapters/channels/base.py,sha256=
|
|
18
|
-
tactus/adapters/channels/broker.py,sha256=
|
|
17
|
+
tactus/adapters/channels/base.py,sha256=n1gNIpsKlxAKsyqF72SQRwLNl8H5lkXoq7xQFbMwB8w,6382
|
|
18
|
+
tactus/adapters/channels/broker.py,sha256=agJKxWbYw0gas7rLBmd9QM6_B3Qa6nSalOE_i1emzwk,7477
|
|
19
19
|
tactus/adapters/channels/cli.py,sha256=lC4WcUuVZD7ik5DkKDmaHTzA2axfnH7yKhWvAH55MuQ,16847
|
|
20
|
-
tactus/adapters/channels/host.py,sha256=
|
|
21
|
-
tactus/adapters/channels/ipc.py,sha256=
|
|
22
|
-
tactus/adapters/channels/sse.py,sha256=
|
|
23
|
-
tactus/backends/http_backend.py,sha256=
|
|
20
|
+
tactus/adapters/channels/host.py,sha256=t3Rf5f5_mnaAvtuKgt_YB1_t0z7CbYrqBgHAJCyLGPw,7907
|
|
21
|
+
tactus/adapters/channels/ipc.py,sha256=bSObEB4nP0Ebwu4zo33TW3rHR3APWaO0JUkZeZza3nA,12405
|
|
22
|
+
tactus/adapters/channels/sse.py,sha256=2PGlzzRhQ1SG5vGVtKsjQevFKjsaGLGvhpFulGZNt5U,11594
|
|
23
|
+
tactus/backends/http_backend.py,sha256=vnTXPOY5GsEaZuEu7bQ8zt_YcDHqedpHDyAhSgYUG-A,1671
|
|
24
24
|
tactus/backends/model_backend.py,sha256=P8dCUpDxJmA8_EO1snZuXyIyUZ_BlqReeC6zenO7Kv0,763
|
|
25
|
-
tactus/backends/pytorch_backend.py,sha256=
|
|
25
|
+
tactus/backends/pytorch_backend.py,sha256=8rSNYtfTcOvk06--GX1s8fu3C2FxrsbY7ToI4z7frkA,3324
|
|
26
26
|
tactus/broker/__init__.py,sha256=UTvqLofrgE3c4m6u2iNOg5R7BrS4dmfzMRO4Oq_0A9U,396
|
|
27
|
-
tactus/broker/client.py,sha256=
|
|
27
|
+
tactus/broker/client.py,sha256=pB7xzJqObFZYHpxhgoosiU4YmSt196XnvrJrHB-lU8A,10393
|
|
28
28
|
tactus/broker/protocol.py,sha256=v4DFSVoecerqxbqK-vbRfYEAD10tk-QXNH_d9PFgkWg,5342
|
|
29
|
-
tactus/broker/server.py,sha256=
|
|
29
|
+
tactus/broker/server.py,sha256=s0_Uokovf5s-IR8Ieb3r1h9dnt4eO_PT0aycwuHwhks,56236
|
|
30
30
|
tactus/broker/stdio.py,sha256=JXkEz-PCU3IQXNkt16YJtYmwkR43eS6CfjxAHc-YCfQ,439
|
|
31
31
|
tactus/cli/__init__.py,sha256=kVhdCkwWEPdt3vn9si-iKvh6M9817aOH6rLSsNzRuyg,80
|
|
32
32
|
tactus/cli/app.py,sha256=t-0WzquFq9BH3tw41ruARLQVVxZZYpTaqyB3b1NDy3E,96374
|
|
@@ -34,15 +34,15 @@ tactus/cli/control.py,sha256=jCKKy8f6x8wV5im-MwxOtgz85oYLTHhPKXx-3FtRwoU,13364
|
|
|
34
34
|
tactus/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
tactus/core/__init__.py,sha256=TK5rWr3HmOO_igFa5ESGp6teWwS58vnvQhIWqkcgqwk,880
|
|
36
36
|
tactus/core/config_manager.py,sha256=kxz853j4Nx97SBh8-fAar_OfmfWZvvcfafLyxjTQG1A,35131
|
|
37
|
-
tactus/core/dsl_stubs.py,sha256=
|
|
37
|
+
tactus/core/dsl_stubs.py,sha256=odWaRl78NFixnzi4DSZ_xrNVGPwe4tTO7KxcAITJKV0,87545
|
|
38
38
|
tactus/core/exceptions.py,sha256=Mjg7J5_zs528wcoHn-4vGROFFhk1DGbjMmwjII4-uZI,1683
|
|
39
|
-
tactus/core/execution_context.py,sha256=
|
|
40
|
-
tactus/core/lua_sandbox.py,sha256=
|
|
41
|
-
tactus/core/message_history_manager.py,sha256=
|
|
39
|
+
tactus/core/execution_context.py,sha256=vHdhk8TZXr9txu93VpxOHgq1YCtauCznRWZs_O7GMwE,29404
|
|
40
|
+
tactus/core/lua_sandbox.py,sha256=Ln2P1gdxVl396HLvEw7FmDKV3eVdVdbDzYHMbDSEciY,19106
|
|
41
|
+
tactus/core/message_history_manager.py,sha256=zBzZeymwg5Z_JvYznxwQPrzrgDNM4iyFQjn402OB4LE,11823
|
|
42
42
|
tactus/core/mocking.py,sha256=ew0rv-kzMCiObk5bKOtZOeIohfu6KVfnlkIG-aJOo3A,9521
|
|
43
|
-
tactus/core/output_validator.py,sha256=
|
|
44
|
-
tactus/core/registry.py,sha256=
|
|
45
|
-
tactus/core/runtime.py,sha256
|
|
43
|
+
tactus/core/output_validator.py,sha256=LcSjgAiDRvzsj2uWasQihengQRt7R-ZYaPiLQPbZyQE,10732
|
|
44
|
+
tactus/core/registry.py,sha256=oosYnYQ1BOut9760GjO_LOcgnFjo9FTLVnCWsTk_j78,21085
|
|
45
|
+
tactus/core/runtime.py,sha256=-bkGaK_44CU8gznJlFBz4bhoERp882beUb7aTWA5Gkc,141782
|
|
46
46
|
tactus/core/template_resolver.py,sha256=r97KzFNaK4nFSoWtIFZeSKyuUWgbp-ay1_BGrb-BgUY,4179
|
|
47
47
|
tactus/core/yaml_parser.py,sha256=JD7Nehaxw3uP1KV_uTU_xiXTbEWqoKOceU5tAJ4lcH8,13985
|
|
48
48
|
tactus/core/dependencies/__init__.py,sha256=28-TM7_i-JqTD3hvkq1kMzr__A8VjfIKXymdW9mn5NM,362
|
|
@@ -59,8 +59,8 @@ tactus/docs/templates/index.html,sha256=6yMzjeajTvPexzKaLrKBetTrup5_fMs1vfGZIz11
|
|
|
59
59
|
tactus/docs/templates/module.html,sha256=0Tp7NETi7g77xpuqaaR0VpLVeVuz4SI544873yHpOdg,2772
|
|
60
60
|
tactus/dspy/__init__.py,sha256=beUkvMUFdPvZE9-bEOfRo2TH-FoCvPT_L9_dpJPW324,1226
|
|
61
61
|
tactus/dspy/agent.py,sha256=wUFAjrWjM8g7pI79RKNOv0EoiSwx9NQAgf-uLYRTXKQ,64200
|
|
62
|
-
tactus/dspy/broker_lm.py,sha256=
|
|
63
|
-
tactus/dspy/config.py,sha256=
|
|
62
|
+
tactus/dspy/broker_lm.py,sha256=3uIhgHjRl4MdLIEEqPwmnuXaTQZHrVVxrgbhNG8dCLo,8636
|
|
63
|
+
tactus/dspy/config.py,sha256=gVJIQ0IUPe2_1YP2PZnC6rgOJp12BHW2MjKKx77HpHE,7137
|
|
64
64
|
tactus/dspy/history.py,sha256=rnynY_xHQv5zQ0Ys8Pf6p3v8HrrKrX2sgyyOxyqx6FU,6066
|
|
65
65
|
tactus/dspy/module.py,sha256=sgXvtrDQNCnY0xCesZlsidsBiPkzud1XdmQ-GQHEhcM,21701
|
|
66
66
|
tactus/dspy/prediction.py,sha256=nnofvBPGFX7bvYdTVcEMVcIXC5EVrRQ21QsnC1PRHeU,9758
|
|
@@ -70,26 +70,26 @@ tactus/formatting/formatter.py,sha256=DfHp977t5reMPIWZwRChRE5Yflw7xGgTNUM0AOcS8L
|
|
|
70
70
|
tactus/ide/__init__.py,sha256=1fSC0xWP-Lq5wl4FgDq7SMnkvZ0DxXupreTl3ZRX1zw,143
|
|
71
71
|
tactus/ide/coding_assistant.py,sha256=GgmspWIn9IPgBK0ZYapeISIOrcDfRyK7yyPDPV85r8g,12184
|
|
72
72
|
tactus/ide/config_server.py,sha256=U8OWxi5l24GH1lUHIAQ8WB8j0cJ5ofLX9iVecW1O2vc,18862
|
|
73
|
-
tactus/ide/server.py,sha256=
|
|
73
|
+
tactus/ide/server.py,sha256=nE_UDiXJZN7G-RzPD-guZ_4qPxPl722qcrv4UY6bjII,111151
|
|
74
74
|
tactus/primitives/__init__.py,sha256=x6bGwoa9DizKUwqsg7SqURfJxisEdctTCv1XnSAZxIk,1709
|
|
75
75
|
tactus/primitives/control.py,sha256=jw-7ggHtNLfFL5aTUUs6Fo5y4xsxEG8OIRe0RyIjVnc,4783
|
|
76
76
|
tactus/primitives/file.py,sha256=GFHmXOADRllfJw6gHpIdVMmZ_ZS7DVgresQ0F71nqJE,7458
|
|
77
77
|
tactus/primitives/handles.py,sha256=su7w61BO8cgNl-z-a7By-J6P8PxEuu4-db7fu8fMoiQ,13260
|
|
78
|
-
tactus/primitives/host.py,sha256=
|
|
78
|
+
tactus/primitives/host.py,sha256=yjNc5nKLfGCBNu8nR0c49N50hhQ7MxfDsHbjKvMH010,3557
|
|
79
79
|
tactus/primitives/human.py,sha256=YTxw0LXtTL_hxm2G1fhNxR9Qa7n9MJGG9OD9WGRTnp0,36507
|
|
80
80
|
tactus/primitives/json.py,sha256=-uFwrr9y2kfFLy3D7q8oLAgM1p3mUmfIL-DX36TA6sQ,5771
|
|
81
81
|
tactus/primitives/log.py,sha256=LFHIFv8157wtEJF-qEqhLDKwh914oF0jiI257JUUyd0,6491
|
|
82
|
-
tactus/primitives/message_history.py,sha256=
|
|
83
|
-
tactus/primitives/model.py,sha256=
|
|
84
|
-
tactus/primitives/procedure.py,sha256=
|
|
82
|
+
tactus/primitives/message_history.py,sha256=xPL5PKfkC-UFjNK8-0iZTWEnVzriVIUFvEjTknZecFc,14782
|
|
83
|
+
tactus/primitives/model.py,sha256=9b5RTE_NvrR-rHf7SFdFac8zsL77OjW4Sv8o0bed5zo,5269
|
|
84
|
+
tactus/primitives/procedure.py,sha256=Rp57JRdfzsv24Jr85Vpd9wlguwbAeFP6ooWE8IsDpTM,20178
|
|
85
85
|
tactus/primitives/procedure_callable.py,sha256=vGNFaATxkJqusFPJ6KekCiXWiU5pKvPaoxuAvIjeqKw,14167
|
|
86
86
|
tactus/primitives/retry.py,sha256=zhGSZX3VPWcWdGjhf_-uFAksq_APf50wtO9AVelXKKc,5428
|
|
87
|
-
tactus/primitives/session.py,sha256=
|
|
88
|
-
tactus/primitives/state.py,sha256=
|
|
87
|
+
tactus/primitives/session.py,sha256=w7sV6atIZVPuw94uK1-0DSFwaMaesLywrB8HAXfzHxE,5025
|
|
88
|
+
tactus/primitives/state.py,sha256=LabH4VMElBwnxOrRNW71Fkuay1ugU0GVqT3PaGxoqos,6224
|
|
89
89
|
tactus/primitives/step.py,sha256=edSKLFLAHyJuJV894K0frPOUefd1R7vXoI8-BTrNUOI,7065
|
|
90
90
|
tactus/primitives/system.py,sha256=gDMvxYDmPrn9dMCYBLfOTNMWIOscX_CVHkPkcT2iCTw,3630
|
|
91
91
|
tactus/primitives/tool.py,sha256=2nv8torlSv_cLxM402HmFxOLGXjM1ZQjbmjrZl72Z5w,12829
|
|
92
|
-
tactus/primitives/tool_handle.py,sha256=
|
|
92
|
+
tactus/primitives/tool_handle.py,sha256=sSrUP5SGXmTy65_bTuEnD8Ok3FZbduszHSdns8bEU9k,10011
|
|
93
93
|
tactus/primitives/toolset.py,sha256=omlU2RQrdWCzXvjFnM_LAQJ7Bgw1YiHL1litk9ly9eQ,7868
|
|
94
94
|
tactus/protocols/__init__.py,sha256=exFwWenyU0LXjqK5Ong3abY00xVYIHPu80-zLReCfxQ,1341
|
|
95
95
|
tactus/protocols/chat_recorder.py,sha256=dswAHpwlxq30GTGKT-ktCIKCaixn5izEMSb7sbiZARE,2074
|
|
@@ -109,7 +109,7 @@ tactus/providers/google.py,sha256=wgZ3eiQif1rq1T8BK5V2kL_QVCmqBQZuWLz37y9cxOQ,31
|
|
|
109
109
|
tactus/providers/openai.py,sha256=3qSXfdELTHdU7vuRSxQrtnfNctt0HhrePOLFj3YlViA,2692
|
|
110
110
|
tactus/sandbox/__init__.py,sha256=UCBvPD63szvSdwSzpznLW-cnJOgGkVHiKcmJtsAmnuA,1424
|
|
111
111
|
tactus/sandbox/config.py,sha256=43FINPDE0k1nL56IKxI29dEw7pi-Arp8qtZYtdkLvec,5813
|
|
112
|
-
tactus/sandbox/container_runner.py,sha256
|
|
112
|
+
tactus/sandbox/container_runner.py,sha256=e82dMnBbIDh02eU2JIMAa7IGgcmTjR5E3-vx3LVskJk,47544
|
|
113
113
|
tactus/sandbox/docker_manager.py,sha256=2oWu7_E6l4KNhGFt9gPAjiKrIqjhY9_YM71U72_OI3c,14793
|
|
114
114
|
tactus/sandbox/entrypoint.py,sha256=AYwqPB19vn9pzHMa8eQ7PN7U71z4kHIhzoa3NAyNCCE,8121
|
|
115
115
|
tactus/sandbox/protocol.py,sha256=8EOSxB7qASYMalnI_L-0Co_o9Te7Y_SHYcHtTAYkmXc,6210
|
|
@@ -161,32 +161,32 @@ tactus/stdlib/tac/tactus/tools/log.tac,sha256=sNGYUSkehvKmrgag1b8rHpDME09MQbL4qk
|
|
|
161
161
|
tactus/testing/README.md,sha256=fUumwbVC56d7ZB2srAKSb7XxQ0vHFKPbZz70Zv59KRY,6840
|
|
162
162
|
tactus/testing/__init__.py,sha256=M5b3r9E0vkltfhqfIOSASk-qp6fDnm3FBxc9dDBPUhU,1540
|
|
163
163
|
tactus/testing/behave_integration.py,sha256=RuHKC5V5-wfbVq43ksZVGyyIjzxMBR7VveJo-JSAY_o,22025
|
|
164
|
-
tactus/testing/context.py,sha256=
|
|
164
|
+
tactus/testing/context.py,sha256=dpAm19mmbEp1lke471xHRCsTIwc1mCRehneyklnUW2I,18570
|
|
165
165
|
tactus/testing/eval_models.py,sha256=UI3geZp4vilbn3Jt4Mjy95luRVON3T4sGnAwlpb7jLo,3540
|
|
166
|
-
tactus/testing/evaluation_runner.py,sha256=
|
|
166
|
+
tactus/testing/evaluation_runner.py,sha256=Mu-wVDlF9BwA8aOxAdMer8E7-VfZPBgyI09R6HMHmRg,6989
|
|
167
167
|
tactus/testing/evaluators.py,sha256=NW_LHhssdMRYCCoYmtJIsst-DEsk8iBVebsxRyHx7I0,20751
|
|
168
168
|
tactus/testing/events.py,sha256=7YNLoOKF1QT_0ZWVC0H7yjS-yIIkUdqDj54JjP8Ldy4,2694
|
|
169
169
|
tactus/testing/gherkin_parser.py,sha256=nqCwqynzWCISqckPbcqteyrukYKSFq7ZkBb5qn9p9Sg,4093
|
|
170
170
|
tactus/testing/mock_agent.py,sha256=z8AAZkD_lj59fBW7wRD0ahmw7aHytH43nqxH-9DGwcs,10801
|
|
171
171
|
tactus/testing/mock_dependencies.py,sha256=saGukLaq46uzz995TYcNDgz7LONxUgMJNkd8DXGUNP0,6970
|
|
172
|
-
tactus/testing/mock_hitl.py,sha256=
|
|
172
|
+
tactus/testing/mock_hitl.py,sha256=EM9qlLtryVCMUSfv9Ur7uALqeCmE1V7kE4MBzpLJrNE,5604
|
|
173
173
|
tactus/testing/mock_registry.py,sha256=9PFlUuUxjCgZUR1a7wnxqwLiC_gpyO0vuUl1H5dDieI,5699
|
|
174
174
|
tactus/testing/mock_tools.py,sha256=huPkE5zJXPyZqpRwNisoXPS6XklZFY0_ut2jvviyEbY,4008
|
|
175
|
-
tactus/testing/models.py,sha256=
|
|
175
|
+
tactus/testing/models.py,sha256=rQnx3Z4xSeTQYzAhuYAqUTCm2elles4nx0EllpoMSBA,3279
|
|
176
176
|
tactus/testing/pydantic_eval_runner.py,sha256=dGN3ix4U6TwAMdWjDmycc3kq3fyEZImSTor5WrXK8wQ,17842
|
|
177
|
-
tactus/testing/test_runner.py,sha256=
|
|
177
|
+
tactus/testing/test_runner.py,sha256=VfoKN9_3YBJfZ-CY5V1d2JdaO_z3rNGPp3Q85BuWYp4,19265
|
|
178
178
|
tactus/testing/steps/__init__.py,sha256=oitGDW-M3uckHk8ySLnjCHi6VjCr6L4MDT2_uPYgR-8,257
|
|
179
|
-
tactus/testing/steps/builtin.py,sha256=
|
|
179
|
+
tactus/testing/steps/builtin.py,sha256=wPNZOCOmz6eIb2DNFGOa-GaSLCK5Rr9ulO6_BxHepNA,31675
|
|
180
180
|
tactus/testing/steps/custom.py,sha256=00RvNlyIGz4ABv2AbkdrkjnfPjPCBO18DOZ89sMxkZY,4410
|
|
181
181
|
tactus/testing/steps/registry.py,sha256=71xN-4B9nyBjeYNFZlOyKCjBBl1Ad9Oj6jdLxHA8baM,2102
|
|
182
182
|
tactus/tracing/__init__.py,sha256=32Uc7ACuxBfstNh7t2A4q2mub-PGR_zB-02mNH5f_0s,142
|
|
183
183
|
tactus/tracing/trace_manager.py,sha256=PNCEztpza-P6-L2a4gWZS_0Z7yOvaV9V2BEsK9csZWk,12922
|
|
184
184
|
tactus/utils/__init__.py,sha256=8TN2bqJybOVlf1Wx5fsV0cLjue5UC4EhL0K1TVzBzIQ,34
|
|
185
|
-
tactus/utils/asyncio_helpers.py,sha256=
|
|
185
|
+
tactus/utils/asyncio_helpers.py,sha256=kfjY_wagWDhjqL6DK2vbi81TD8ezGx47LLcL8frj0ak,856
|
|
186
186
|
tactus/utils/cost_calculator.py,sha256=cZFKlapBxeIDyMDjd0Zjqczrnx_eggf0B24h0bVmOYo,2524
|
|
187
187
|
tactus/utils/model_pricing.py,sha256=ggfPJK6RSq8j8YcBXWrnNoujrhP-MkPhexOUsCMwiPY,5051
|
|
188
188
|
tactus/utils/safe_file_library.py,sha256=_SfbdyoVy6rm-DMhQg3Iau7M4QJLr7UtlcsKUZE4Rns,17855
|
|
189
|
-
tactus/utils/safe_libraries.py,sha256=
|
|
189
|
+
tactus/utils/safe_libraries.py,sha256=5PGfrkCoj4QJQQrAiR9KGFTH9kyoNZJRc5WEUFDwgbU,8011
|
|
190
190
|
tactus/validation/LuaLexerBase.py,sha256=b2Q3kiWFAle-MY4GaUCsewJh6L9oGKYcjGkNCbkRPmk,1683
|
|
191
191
|
tactus/validation/LuaParserBase.py,sha256=o3klCIY0ANkVCU0VHml0IOYE4CdEledeoyoIAPxV58k,528
|
|
192
192
|
tactus/validation/README.md,sha256=AS6vr4blY7IKWRsj4wuvWBHVMTc5fto7IgNmv-Rjkdo,5366
|
|
@@ -206,8 +206,8 @@ tactus/validation/generated/LuaParserVisitor.py,sha256=ageKSmHPxnO3jBS2fBtkmYBOd
|
|
|
206
206
|
tactus/validation/generated/__init__.py,sha256=5gWlwRI0UvmHw2fnBpj_IG6N8oZeabr5tbj1AODDvjc,196
|
|
207
207
|
tactus/validation/grammar/LuaLexer.g4,sha256=t2MXiTCr127RWAyQGvamkcU_m4veqPzSuHUtAKwalw4,2771
|
|
208
208
|
tactus/validation/grammar/LuaParser.g4,sha256=ceZenb90BdiZmVdOxMGj9qJk3QbbWVZe5HUqPgoePfY,3202
|
|
209
|
-
tactus-0.
|
|
210
|
-
tactus-0.
|
|
211
|
-
tactus-0.
|
|
212
|
-
tactus-0.
|
|
213
|
-
tactus-0.
|
|
209
|
+
tactus-0.37.0.dist-info/METADATA,sha256=xBYDiQisGYIIxml5-L7XwtvVQ1fN_07OaFQ24tmYWQI,60372
|
|
210
|
+
tactus-0.37.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
211
|
+
tactus-0.37.0.dist-info/entry_points.txt,sha256=vWseqty8m3z-Worje0IYxlioMjPDCoSsm0AtY4GghBY,47
|
|
212
|
+
tactus-0.37.0.dist-info/licenses/LICENSE,sha256=ivohBcAIYnaLPQ-lKEeCXSMvQUVISpQfKyxHBHoa4GA,1066
|
|
213
|
+
tactus-0.37.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|