tactus 0.37.0__py3-none-any.whl → 0.38.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.
Files changed (46) hide show
  1. tactus/__init__.py +1 -1
  2. tactus/adapters/channels/base.py +2 -0
  3. tactus/cli/app.py +212 -57
  4. tactus/core/compaction.py +17 -0
  5. tactus/core/context_assembler.py +73 -0
  6. tactus/core/context_models.py +41 -0
  7. tactus/core/dsl_stubs.py +557 -17
  8. tactus/core/exceptions.py +8 -0
  9. tactus/core/execution_context.py +1 -1
  10. tactus/core/mocking.py +12 -0
  11. tactus/core/registry.py +142 -0
  12. tactus/core/retrieval.py +317 -0
  13. tactus/core/retriever_tasks.py +30 -0
  14. tactus/core/runtime.py +388 -74
  15. tactus/dspy/agent.py +143 -82
  16. tactus/dspy/config.py +16 -0
  17. tactus/dspy/module.py +12 -1
  18. tactus/ide/coding_assistant.py +2 -2
  19. tactus/primitives/handles.py +79 -7
  20. tactus/sandbox/config.py +1 -1
  21. tactus/sandbox/container_runner.py +2 -0
  22. tactus/sandbox/entrypoint.py +51 -8
  23. tactus/sandbox/protocol.py +5 -0
  24. tactus/stdlib/README.md +10 -1
  25. tactus/stdlib/biblicus/__init__.py +3 -0
  26. tactus/stdlib/biblicus/text.py +189 -0
  27. tactus/stdlib/tac/biblicus/text.tac +32 -0
  28. tactus/stdlib/tac/tactus/biblicus.spec.tac +179 -0
  29. tactus/stdlib/tac/tactus/corpora/base.tac +42 -0
  30. tactus/stdlib/tac/tactus/corpora/filesystem.tac +5 -0
  31. tactus/stdlib/tac/tactus/retrievers/base.tac +37 -0
  32. tactus/stdlib/tac/tactus/retrievers/embedding_index_file.tac +6 -0
  33. tactus/stdlib/tac/tactus/retrievers/embedding_index_inmemory.tac +6 -0
  34. tactus/stdlib/tac/tactus/retrievers/index.md +137 -0
  35. tactus/stdlib/tac/tactus/retrievers/init.tac +11 -0
  36. tactus/stdlib/tac/tactus/retrievers/sqlite_full_text_search.tac +6 -0
  37. tactus/stdlib/tac/tactus/retrievers/tf_vector.tac +6 -0
  38. tactus/testing/behave_integration.py +2 -0
  39. tactus/testing/context.py +4 -0
  40. tactus/validation/semantic_visitor.py +357 -6
  41. tactus/validation/validator.py +142 -2
  42. {tactus-0.37.0.dist-info → tactus-0.38.0.dist-info}/METADATA +3 -2
  43. {tactus-0.37.0.dist-info → tactus-0.38.0.dist-info}/RECORD +46 -28
  44. {tactus-0.37.0.dist-info → tactus-0.38.0.dist-info}/WHEEL +0 -0
  45. {tactus-0.37.0.dist-info → tactus-0.38.0.dist-info}/entry_points.txt +0 -0
  46. {tactus-0.37.0.dist-info → tactus-0.38.0.dist-info}/licenses/LICENSE +0 -0
@@ -9,6 +9,7 @@ Validates .tac files using ANTLR parser:
9
9
 
10
10
  import logging
11
11
  from enum import Enum
12
+ from pathlib import Path
12
13
  from typing import Optional
13
14
 
14
15
  from antlr4 import InputStream, CommonTokenStream
@@ -16,7 +17,7 @@ from .generated.LuaLexer import LuaLexer
16
17
  from .generated.LuaParser import LuaParser
17
18
  from .semantic_visitor import TactusDSLVisitor
18
19
  from .error_listener import TactusErrorListener
19
- from tactus.core.registry import ValidationResult, ValidationMessage
20
+ from tactus.core.registry import ValidationResult, ValidationMessage, TaskDeclaration
20
21
 
21
22
  logger = logging.getLogger(__name__)
22
23
 
@@ -175,7 +176,101 @@ class TactusValidator:
175
176
  try:
176
177
  with open(file_path, "r") as source_file_handle:
177
178
  source_text = source_file_handle.read()
178
- return self.validate(source_text, mode)
179
+ primary_result = self.validate(source_text, mode)
180
+ if not primary_result.valid or mode == ValidationMode.QUICK:
181
+ return primary_result
182
+ registry = primary_result.registry
183
+ if not registry or not registry.include_tasks:
184
+ return primary_result
185
+
186
+ base_path = Path(file_path).parent
187
+ merged_registry = registry
188
+ include_queue = [
189
+ {
190
+ "path": include.get("path"),
191
+ "namespace": include.get("namespace"),
192
+ "base": base_path,
193
+ }
194
+ for include in registry.include_tasks
195
+ ]
196
+ seen_includes: set[Path] = set()
197
+
198
+ while include_queue:
199
+ include = include_queue.pop(0)
200
+ include_path = include.get("path")
201
+ if not include_path:
202
+ continue
203
+ include_base = include.get("base") or base_path
204
+ include_file = (include_base / include_path).resolve()
205
+ if include_file in seen_includes:
206
+ return self._result_with_errors(
207
+ errors=[
208
+ ValidationMessage(
209
+ level="error",
210
+ message=f"IncludeTasks cycle detected: {include_file}",
211
+ )
212
+ ]
213
+ )
214
+ seen_includes.add(include_file)
215
+ if not include_file.exists():
216
+ return self._result_with_errors(
217
+ errors=[
218
+ ValidationMessage(
219
+ level="error",
220
+ message=f"Included tasks file not found: {include_file}",
221
+ )
222
+ ]
223
+ )
224
+ with open(include_file, "r") as include_handle:
225
+ include_source = include_handle.read()
226
+ include_result = self.validate(include_source, mode)
227
+ if not include_result.valid or not include_result.registry:
228
+ return include_result
229
+ if self._include_has_non_task_declarations(include_result.registry):
230
+ return self._result_with_errors(
231
+ errors=[
232
+ ValidationMessage(
233
+ level="error",
234
+ message=(
235
+ "IncludeTasks files must only contain Task declarations: "
236
+ f"{include_file}"
237
+ ),
238
+ )
239
+ ]
240
+ )
241
+ try:
242
+ self._merge_tasks(
243
+ merged_registry,
244
+ include_result.registry,
245
+ namespace=include.get("namespace"),
246
+ )
247
+ except ValueError as merge_error:
248
+ return self._result_with_errors(
249
+ errors=[
250
+ ValidationMessage(
251
+ level="error",
252
+ message=str(merge_error),
253
+ )
254
+ ]
255
+ )
256
+
257
+ if include_result.registry.include_tasks:
258
+ include_queue.extend(
259
+ [
260
+ {
261
+ "path": nested.get("path"),
262
+ "namespace": nested.get("namespace"),
263
+ "base": include_file.parent,
264
+ }
265
+ for nested in include_result.registry.include_tasks
266
+ ]
267
+ )
268
+
269
+ return self._result_success(
270
+ errors=primary_result.errors,
271
+ warnings=primary_result.warnings,
272
+ registry=merged_registry,
273
+ )
179
274
  except FileNotFoundError:
180
275
  return self._result_with_errors(
181
276
  errors=[
@@ -194,3 +289,48 @@ class TactusValidator:
194
289
  )
195
290
  ]
196
291
  )
292
+
293
+ def _include_has_non_task_declarations(self, registry) -> bool:
294
+ if registry is None:
295
+ return False
296
+ return any(
297
+ [
298
+ registry.agents,
299
+ registry.toolsets,
300
+ registry.lua_tools,
301
+ registry.contexts,
302
+ registry.corpora,
303
+ registry.retrievers,
304
+ registry.compactors,
305
+ registry.named_procedures,
306
+ registry.specifications,
307
+ registry.dependencies,
308
+ registry.models,
309
+ registry.hitl_points,
310
+ registry.mocks,
311
+ registry.agent_mocks,
312
+ registry.prompts,
313
+ ]
314
+ )
315
+
316
+ def _merge_tasks(
317
+ self,
318
+ target_registry,
319
+ include_registry,
320
+ namespace: Optional[str] = None,
321
+ ) -> None:
322
+ if not include_registry.tasks:
323
+ return
324
+ if namespace:
325
+ if namespace in target_registry.tasks:
326
+ raise ValueError(f"Duplicate task namespace '{namespace}'")
327
+ target_registry.tasks[namespace] = TaskDeclaration(
328
+ name=namespace,
329
+ children=include_registry.tasks,
330
+ )
331
+ return
332
+
333
+ for task_name, task in include_registry.tasks.items():
334
+ if task_name in target_registry.tasks:
335
+ raise ValueError(f"Duplicate task '{task_name}'")
336
+ target_registry.tasks[task_name] = task
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tactus
3
- Version: 0.37.0
3
+ Version: 0.38.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
@@ -23,6 +23,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
23
  Requires-Python: >=3.9
24
24
  Requires-Dist: antlr4-python3-runtime==4.13.1
25
25
  Requires-Dist: behave>=1.2.6
26
+ Requires-Dist: biblicus>=1.0.0
26
27
  Requires-Dist: boto3>=1.28.0
27
28
  Requires-Dist: dotyaml>=0.1.4
28
29
  Requires-Dist: dspy>=2.5
@@ -41,7 +42,7 @@ Requires-Dist: openpyxl>=3.1
41
42
  Requires-Dist: opentelemetry-api>=1.39.1
42
43
  Requires-Dist: opentelemetry-sdk>=1.39.1
43
44
  Requires-Dist: pyarrow>=14.0
44
- Requires-Dist: pydantic-ai-slim[bedrock,evals]
45
+ Requires-Dist: pydantic-ai
45
46
  Requires-Dist: pydantic>=2.0
46
47
  Requires-Dist: pyyaml
47
48
  Requires-Dist: rapidfuzz>=3.0.0
@@ -1,4 +1,4 @@
1
- tactus/__init__.py,sha256=Yj_oWwkl1LwtT-IEYuMZ5P1sAhaYAcNH3QiqziIgjU8,1245
1
+ tactus/__init__.py,sha256=g5cqIhFTf2v9_3EjAdhFDjXJWMvCrtSaYVs7B7LpU7M,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
@@ -14,7 +14,7 @@ tactus/adapters/mcp_manager.py,sha256=mDfU6dcQSpgV6fsgsFJqXM4Ayi-LDCGinWVki1_bCK
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=n1gNIpsKlxAKsyqF72SQRwLNl8H5lkXoq7xQFbMwB8w,6382
17
+ tactus/adapters/channels/base.py,sha256=mnH0AIZstfCB_huR2YBNZn17pu5KuhZJB_bAC4ZFJTQ,6490
18
18
  tactus/adapters/channels/broker.py,sha256=agJKxWbYw0gas7rLBmd9QM6_B3Qa6nSalOE_i1emzwk,7477
19
19
  tactus/adapters/channels/cli.py,sha256=lC4WcUuVZD7ik5DkKDmaHTzA2axfnH7yKhWvAH55MuQ,16847
20
20
  tactus/adapters/channels/host.py,sha256=t3Rf5f5_mnaAvtuKgt_YB1_t0z7CbYrqBgHAJCyLGPw,7907
@@ -29,20 +29,25 @@ tactus/broker/protocol.py,sha256=v4DFSVoecerqxbqK-vbRfYEAD10tk-QXNH_d9PFgkWg,534
29
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
- tactus/cli/app.py,sha256=t-0WzquFq9BH3tw41ruARLQVVxZZYpTaqyB3b1NDy3E,96374
32
+ tactus/cli/app.py,sha256=-w6iY0rjbTn3TCV9vTIrUp7wV2WdHmeWa16ZgD7yEC4,102181
33
33
  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
+ tactus/core/compaction.py,sha256=mVwFsEb9FEc-bMPFcKgXyAO-pVnAXeQGZka7RWtjVsY,397
36
37
  tactus/core/config_manager.py,sha256=kxz853j4Nx97SBh8-fAar_OfmfWZvvcfafLyxjTQG1A,35131
37
- tactus/core/dsl_stubs.py,sha256=odWaRl78NFixnzi4DSZ_xrNVGPwe4tTO7KxcAITJKV0,87545
38
- tactus/core/exceptions.py,sha256=Mjg7J5_zs528wcoHn-4vGROFFhk1DGbjMmwjII4-uZI,1683
39
- tactus/core/execution_context.py,sha256=vHdhk8TZXr9txu93VpxOHgq1YCtauCznRWZs_O7GMwE,29404
38
+ tactus/core/context_assembler.py,sha256=tbd-XACBvAFkBlPrzAAZ_L-2JGnO4meS-GL4ilE7XHw,2406
39
+ tactus/core/context_models.py,sha256=YHKjHKEzLk3fgpkmXYQ9RWDPKRNStt92ve40xcMv3p0,975
40
+ tactus/core/dsl_stubs.py,sha256=3yg7yWcflDPOOzbLG7VmHh7yZPXf1G_q6sdYt5DWPOw,109777
41
+ tactus/core/exceptions.py,sha256=r-4IrZw_WrioBkpMR42Q3LNwEqimJ6jxXgfOo2wANTM,1962
42
+ tactus/core/execution_context.py,sha256=OgTe9E0xc3nTQbCTEaaBfI11dVA1-J0eFz0eQR4XMZY,29402
40
43
  tactus/core/lua_sandbox.py,sha256=Ln2P1gdxVl396HLvEw7FmDKV3eVdVdbDzYHMbDSEciY,19106
41
44
  tactus/core/message_history_manager.py,sha256=zBzZeymwg5Z_JvYznxwQPrzrgDNM4iyFQjn402OB4LE,11823
42
- tactus/core/mocking.py,sha256=ew0rv-kzMCiObk5bKOtZOeIohfu6KVfnlkIG-aJOo3A,9521
45
+ tactus/core/mocking.py,sha256=nhZCS3UClpr62PQAlV56GqvntnWbng-xuom7vKjzQp8,9954
43
46
  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
47
+ tactus/core/registry.py,sha256=z5HFoi1zb81-TJ_6qeTWSte4J0Zw-NYmN19VjjBjJE8,26577
48
+ tactus/core/retrieval.py,sha256=AMDa4X4YWaSDNdf3T3hRUzgM4W1l_sGqxAX5Jki5PH0,12083
49
+ tactus/core/retriever_tasks.py,sha256=i2wsoZN9cZOypkdPAJKqlrRP_jwtqpHVCFoxPL0Iirk,931
50
+ tactus/core/runtime.py,sha256=kwDM88Ell2RkOkEbwmI5v92fQOLeruod-dpbCTq6hM0,155443
46
51
  tactus/core/template_resolver.py,sha256=r97KzFNaK4nFSoWtIFZeSKyuUWgbp-ay1_BGrb-BgUY,4179
47
52
  tactus/core/yaml_parser.py,sha256=JD7Nehaxw3uP1KV_uTU_xiXTbEWqoKOceU5tAJ4lcH8,13985
48
53
  tactus/core/dependencies/__init__.py,sha256=28-TM7_i-JqTD3hvkq1kMzr__A8VjfIKXymdW9mn5NM,362
@@ -58,23 +63,23 @@ tactus/docs/templates/base.html,sha256=7ZNIKnAR7bsEug6_3uw68oooz8ity4T77a7IImJ6h
58
63
  tactus/docs/templates/index.html,sha256=6yMzjeajTvPexzKaLrKBetTrup5_fMs1vfGZIz11uaM,1848
59
64
  tactus/docs/templates/module.html,sha256=0Tp7NETi7g77xpuqaaR0VpLVeVuz4SI544873yHpOdg,2772
60
65
  tactus/dspy/__init__.py,sha256=beUkvMUFdPvZE9-bEOfRo2TH-FoCvPT_L9_dpJPW324,1226
61
- tactus/dspy/agent.py,sha256=wUFAjrWjM8g7pI79RKNOv0EoiSwx9NQAgf-uLYRTXKQ,64200
66
+ tactus/dspy/agent.py,sha256=eyP96iXJNJ0RE0if1i9vEyQXnJ0Au3zDyat0Yfeck2Q,66316
62
67
  tactus/dspy/broker_lm.py,sha256=3uIhgHjRl4MdLIEEqPwmnuXaTQZHrVVxrgbhNG8dCLo,8636
63
- tactus/dspy/config.py,sha256=gVJIQ0IUPe2_1YP2PZnC6rgOJp12BHW2MjKKx77HpHE,7137
68
+ tactus/dspy/config.py,sha256=uSrt80esbM2uRs3wEndvEB-gMAhXcmKNQkusyNBS24M,7465
64
69
  tactus/dspy/history.py,sha256=rnynY_xHQv5zQ0Ys8Pf6p3v8HrrKrX2sgyyOxyqx6FU,6066
65
- tactus/dspy/module.py,sha256=sgXvtrDQNCnY0xCesZlsidsBiPkzud1XdmQ-GQHEhcM,21701
70
+ tactus/dspy/module.py,sha256=jfQdQWGF2N4BBGBqeyVSw1qKvPWbBaX4B9v-BGrRhX4,22139
66
71
  tactus/dspy/prediction.py,sha256=nnofvBPGFX7bvYdTVcEMVcIXC5EVrRQ21QsnC1PRHeU,9758
67
72
  tactus/dspy/signature.py,sha256=NQWyYVMPGxPHT3Tf4Wuk4FDVmKphSADW_o9fRWmk84Q,6052
68
73
  tactus/formatting/__init__.py,sha256=pkwfAJwMxdRha2oahXoUrVjk6if7QH5d1U5t5dF2fXc,162
69
74
  tactus/formatting/formatter.py,sha256=DfHp977t5reMPIWZwRChRE5Yflw7xGgTNUM0AOcS8LQ,14510
70
75
  tactus/ide/__init__.py,sha256=1fSC0xWP-Lq5wl4FgDq7SMnkvZ0DxXupreTl3ZRX1zw,143
71
- tactus/ide/coding_assistant.py,sha256=GgmspWIn9IPgBK0ZYapeISIOrcDfRyK7yyPDPV85r8g,12184
76
+ tactus/ide/coding_assistant.py,sha256=i2cfT6uMSM7TEFw-9p9Ed_BWSbAMqgokoaFdbjKAQcg,12187
72
77
  tactus/ide/config_server.py,sha256=U8OWxi5l24GH1lUHIAQ8WB8j0cJ5ofLX9iVecW1O2vc,18862
73
78
  tactus/ide/server.py,sha256=nE_UDiXJZN7G-RzPD-guZ_4qPxPl722qcrv4UY6bjII,111151
74
79
  tactus/primitives/__init__.py,sha256=x6bGwoa9DizKUwqsg7SqURfJxisEdctTCv1XnSAZxIk,1709
75
80
  tactus/primitives/control.py,sha256=jw-7ggHtNLfFL5aTUUs6Fo5y4xsxEG8OIRe0RyIjVnc,4783
76
81
  tactus/primitives/file.py,sha256=GFHmXOADRllfJw6gHpIdVMmZ_ZS7DVgresQ0F71nqJE,7458
77
- tactus/primitives/handles.py,sha256=su7w61BO8cgNl-z-a7By-J6P8PxEuu4-db7fu8fMoiQ,13260
82
+ tactus/primitives/handles.py,sha256=RqX-bSAMSVScOw33CfmLBG2MPwpvaov1UN-g2tJJWcQ,14728
78
83
  tactus/primitives/host.py,sha256=yjNc5nKLfGCBNu8nR0c49N50hhQ7MxfDsHbjKvMH010,3557
79
84
  tactus/primitives/human.py,sha256=YTxw0LXtTL_hxm2G1fhNxR9Qa7n9MJGG9OD9WGRTnp0,36507
80
85
  tactus/primitives/json.py,sha256=-uFwrr9y2kfFLy3D7q8oLAgM1p3mUmfIL-DX36TA6sQ,5771
@@ -108,14 +113,16 @@ tactus/providers/bedrock.py,sha256=cVNDV7uHhCnnL6BNl7DFF8OwkD9ZYqa9CP2wXMcCJGY,3
108
113
  tactus/providers/google.py,sha256=wgZ3eiQif1rq1T8BK5V2kL_QVCmqBQZuWLz37y9cxOQ,3123
109
114
  tactus/providers/openai.py,sha256=3qSXfdELTHdU7vuRSxQrtnfNctt0HhrePOLFj3YlViA,2692
110
115
  tactus/sandbox/__init__.py,sha256=UCBvPD63szvSdwSzpznLW-cnJOgGkVHiKcmJtsAmnuA,1424
111
- tactus/sandbox/config.py,sha256=43FINPDE0k1nL56IKxI29dEw7pi-Arp8qtZYtdkLvec,5813
112
- tactus/sandbox/container_runner.py,sha256=e82dMnBbIDh02eU2JIMAa7IGgcmTjR5E3-vx3LVskJk,47544
116
+ tactus/sandbox/config.py,sha256=273ZI_9OWpGOBXo_yMQWZzgm4phRyA3POsLqExUw3_A,5812
117
+ tactus/sandbox/container_runner.py,sha256=Yo_VhSyjIT7BU7460xMJpid2LTA73orVk96mNfIcPeg,47622
113
118
  tactus/sandbox/docker_manager.py,sha256=2oWu7_E6l4KNhGFt9gPAjiKrIqjhY9_YM71U72_OI3c,14793
114
- tactus/sandbox/entrypoint.py,sha256=AYwqPB19vn9pzHMa8eQ7PN7U71z4kHIhzoa3NAyNCCE,8121
115
- tactus/sandbox/protocol.py,sha256=8EOSxB7qASYMalnI_L-0Co_o9Te7Y_SHYcHtTAYkmXc,6210
116
- tactus/stdlib/README.md,sha256=j1p0jsC8vAcO31AOzOwqDdCpx3DF27F5efoSFAeVsUw,2235
119
+ tactus/sandbox/entrypoint.py,sha256=9lBiDQxxbGGjp8bpf9d1gp1hsSe4iE_wwjGCbDtYo78,9774
120
+ tactus/sandbox/protocol.py,sha256=kW8I9lVpOluPeDFOxJEeZjXrXtSllY90HU8dSteBa8s,6371
121
+ tactus/stdlib/README.md,sha256=AqKYj7JxtphfKJlhq_sNezIUPfblzzubzdxE3PheiQE,2576
117
122
  tactus/stdlib/__init__.py,sha256=NkRsL413VXr0rLAadbb3meP5TelwcrEFVJd1u39XCbk,1047
118
123
  tactus/stdlib/loader.py,sha256=qjVnz5mn3Uu7g1O4vjSREHkR-YdRoON1vqJQq-oiFIE,8679
124
+ tactus/stdlib/biblicus/__init__.py,sha256=Y6Nb-wp33KeDtkjBccZrGYlyR98yhZBm1RfmiKIJHm8,50
125
+ tactus/stdlib/biblicus/text.py,sha256=KMbMlaGQsrAwXgCShoLs54xYDoLm-s0Ymob5zZOhOeY,6285
119
126
  tactus/stdlib/classify/__init__.py,sha256=51Lqge0g0Q6GWXkmw42HwuqkkDCsww9VBcoreYId374,5623
120
127
  tactus/stdlib/classify/classify.spec.tac,sha256=0yuRD_2dbPKTuhyqwk3vtsj_R3kwGoSEiEF4OY-ARqA,6475
121
128
  tactus/stdlib/classify/classify.tac,sha256=KvOXLihspPK1_g2GcT9wnLkynDubglp1S_JUfZlo-88,6850
@@ -140,6 +147,8 @@ tactus/stdlib/io/hdf5.py,sha256=7ELLaQZI1GOsycU1a60J6RTPNLH7EMdaPAYlNx0dQLA,3025
140
147
  tactus/stdlib/io/json.py,sha256=P6C6rIwAxY97MivCanxKF8TmRotIUxBlHcuv8etmLu8,2641
141
148
  tactus/stdlib/io/parquet.py,sha256=hycr0pjqysjhggHx7_UZJL_jkeP1wz8BCozL39EWk-0,2045
142
149
  tactus/stdlib/io/tsv.py,sha256=456V2g-dp0mOTxo0ojM-rQl-LlmeV6WAVh0HmEDd_kQ,2350
150
+ tactus/stdlib/tac/biblicus/text.tac,sha256=DXe4YW2_bBhvNHg3OF9K_Sxw9o-nuwHWBlrAuzFoP-Q,691
151
+ tactus/stdlib/tac/tactus/biblicus.spec.tac,sha256=JRvyL_JQZVq6kCSKW10hrRpJRDKtfnjeGwOYpbSgd8w,6709
143
152
  tactus/stdlib/tac/tactus/classify.spec.tac,sha256=UVXRaYx8Z-oLjnaiYaTOnq-gF4NlC14q0F2yBFJXmxk,6469
144
153
  tactus/stdlib/tac/tactus/extract.spec.tac,sha256=Unj7bIgZWfUUuyxrh66fQKRy2sDpWUEu_Q7x3tkicPE,5534
145
154
  tactus/stdlib/tac/tactus/generate.spec.tac,sha256=4IA31Cwx5QQOcvqnazIYXBXFy8l7v3ruQpzdgsgsgRw,6982
@@ -148,6 +157,8 @@ tactus/stdlib/tac/tactus/classify/fuzzy.tac,sha256=bgG9qt4z8x81szFU3PdhsefBAvWrv
148
157
  tactus/stdlib/tac/tactus/classify/index.md,sha256=gt6QVfqwTDSsREpOYDCisN-C99ou2vjZevZ_8xmYRSQ,2413
149
158
  tactus/stdlib/tac/tactus/classify/init.tac,sha256=B2qXZzgcN6W7-IVBgGkFtlGgvGB3F9VpnAEoJyTD_j0,876
150
159
  tactus/stdlib/tac/tactus/classify/llm.tac,sha256=1jKnHDpwtT_L8eq2UdIhdb5Y3Vt8I_Q9mBhYycEyyWI,4195
160
+ tactus/stdlib/tac/tactus/corpora/base.tac,sha256=D6tacnx6zW77tvmDi8xG_asdcvPlLE5IiLvDIQ5NDso,936
161
+ tactus/stdlib/tac/tactus/corpora/filesystem.tac,sha256=DTKnvQ153zwHVLtmlAsB6Cz2jJitpUObYzOFgtluI9I,89
151
162
  tactus/stdlib/tac/tactus/extract/base.tac,sha256=OI7Fx9VdkAJYQI9qQGTW4ylbwU0tEOAAJQBfLyD6IrU,3884
152
163
  tactus/stdlib/tac/tactus/extract/index.md,sha256=ZrXVgJasEqLwyS6SJ-fG_jRym4YUQJ9NbC7NVQIWOM4,2756
153
164
  tactus/stdlib/tac/tactus/extract/init.tac,sha256=cyzvlO1rWOX3xHYDezUmexux0Zvs-44PluBcLNGxmSo,738
@@ -156,12 +167,19 @@ tactus/stdlib/tac/tactus/generate/base.tac,sha256=hNEOnXDHtgSNE1AU8UO940FsH8EJ5T
156
167
  tactus/stdlib/tac/tactus/generate/index.md,sha256=zCOxHmF-nzYf5HazheBqZBhq-Dnr-ESmOhQdhtg6Sz4,6315
157
168
  tactus/stdlib/tac/tactus/generate/init.tac,sha256=342rzePc1shBLAmG_EFeo0Wt6JuFg87Pm8Tk3h3QoxU,806
158
169
  tactus/stdlib/tac/tactus/generate/llm.tac,sha256=HXF_p31nWe_sRICvVOojg4zI6TsJ7iWVMW83zB3QyM0,5327
170
+ tactus/stdlib/tac/tactus/retrievers/base.tac,sha256=NXs5NhiQv9hKDDEjQtE3LsfjEDw5RHGj4zH1w3zihkk,808
171
+ tactus/stdlib/tac/tactus/retrievers/embedding_index_file.tac,sha256=XXEe7boM8vunXWduz1DTPdm0jmg0q90Ns2j58cXc8d4,170
172
+ tactus/stdlib/tac/tactus/retrievers/embedding_index_inmemory.tac,sha256=-UzeXOm3bu4JdDS5WVj_SU3HNFKXgVit6VyotyACO94,174
173
+ tactus/stdlib/tac/tactus/retrievers/index.md,sha256=fgGhli3sJEqiJeSwGmAZobNt78d_LtOdcAu6tRmrNww,2662
174
+ tactus/stdlib/tac/tactus/retrievers/init.tac,sha256=Hh7kQKCK5MtDetSX4iyEq2u1Ts3we0tqz_4wU8EweEU,492
175
+ tactus/stdlib/tac/tactus/retrievers/sqlite_full_text_search.tac,sha256=KoRqi7disyyMHWQIT_dneFe2FT1mCIEZtRhayr_fpKw,173
176
+ tactus/stdlib/tac/tactus/retrievers/tf_vector.tac,sha256=VoeoB-xPyWfcns5h03NF9jbnZIBFU9e5jVyd-yGJnwk,159
159
177
  tactus/stdlib/tac/tactus/tools/done.tac,sha256=_PobbaUQY2PUZg-qy2eJ2jhdx2-UllePnvW_tFdGFao,729
160
178
  tactus/stdlib/tac/tactus/tools/log.tac,sha256=sNGYUSkehvKmrgag1b8rHpDME09MQbL4qkt9Kfd0jgg,1389
161
179
  tactus/testing/README.md,sha256=fUumwbVC56d7ZB2srAKSb7XxQ0vHFKPbZz70Zv59KRY,6840
162
180
  tactus/testing/__init__.py,sha256=M5b3r9E0vkltfhqfIOSASk-qp6fDnm3FBxc9dDBPUhU,1540
163
- tactus/testing/behave_integration.py,sha256=RuHKC5V5-wfbVq43ksZVGyyIjzxMBR7VveJo-JSAY_o,22025
164
- tactus/testing/context.py,sha256=dpAm19mmbEp1lke471xHRCsTIwc1mCRehneyklnUW2I,18570
181
+ tactus/testing/behave_integration.py,sha256=I9A8G4-pGg_S8KlmEozaRFmP15kaAR6s1fbGbH3YVKs,22155
182
+ tactus/testing/context.py,sha256=ycrHiGCrm-eAQ5_zvS23lDm5yoBvlI4oRrmftKtOeTs,18773
165
183
  tactus/testing/eval_models.py,sha256=UI3geZp4vilbn3Jt4Mjy95luRVON3T4sGnAwlpb7jLo,3540
166
184
  tactus/testing/evaluation_runner.py,sha256=Mu-wVDlF9BwA8aOxAdMer8E7-VfZPBgyI09R6HMHmRg,6989
167
185
  tactus/testing/evaluators.py,sha256=NW_LHhssdMRYCCoYmtJIsst-DEsk8iBVebsxRyHx7I0,20751
@@ -192,8 +210,8 @@ tactus/validation/LuaParserBase.py,sha256=o3klCIY0ANkVCU0VHml0IOYE4CdEledeoyoIAP
192
210
  tactus/validation/README.md,sha256=AS6vr4blY7IKWRsj4wuvWBHVMTc5fto7IgNmv-Rjkdo,5366
193
211
  tactus/validation/__init__.py,sha256=rnap-YvNievWigYYUewuXBcLtAdjZ8YpeJDYS1T7XZM,153
194
212
  tactus/validation/error_listener.py,sha256=MPkvsVbojwYjNA8MpapG_GNtR6ZDyb3cTt7aLwekCtM,1010
195
- tactus/validation/semantic_visitor.py,sha256=GRPZeAugevrAeqwPfKjvXjVUuJwLQjOK-gc_k973OqI,41628
196
- tactus/validation/validator.py,sha256=v2klPlZwv827HkNMswv37q9jDbZYiwMtzJH2iGNHVIA,6355
213
+ tactus/validation/semantic_visitor.py,sha256=frs7zc66rQkAKtPwshMSXYxXyqyYxEV9TokOiRY5lxo,57135
214
+ tactus/validation/validator.py,sha256=JSQHmI3EkNjJsPxrztTszJGuNuHyyaDdRsV62I4P0QU,11911
197
215
  tactus/validation/generated/LuaLexer.interp,sha256=B-Xb6HNXS7YYYQB_cvsWzf8OQLFnEhZHDN5vCOyP3yw,20444
198
216
  tactus/validation/generated/LuaLexer.py,sha256=6B-HNB_vAp3bA5iACLvMWw0R4KFENsuiG7bccysxbRQ,67252
199
217
  tactus/validation/generated/LuaLexer.tokens,sha256=uo4NdATiGedhiDccWz1jXH5tYJWyT3OZ0216z1Zif7E,1005
@@ -206,8 +224,8 @@ tactus/validation/generated/LuaParserVisitor.py,sha256=ageKSmHPxnO3jBS2fBtkmYBOd
206
224
  tactus/validation/generated/__init__.py,sha256=5gWlwRI0UvmHw2fnBpj_IG6N8oZeabr5tbj1AODDvjc,196
207
225
  tactus/validation/grammar/LuaLexer.g4,sha256=t2MXiTCr127RWAyQGvamkcU_m4veqPzSuHUtAKwalw4,2771
208
226
  tactus/validation/grammar/LuaParser.g4,sha256=ceZenb90BdiZmVdOxMGj9qJk3QbbWVZe5HUqPgoePfY,3202
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,,
227
+ tactus-0.38.0.dist-info/METADATA,sha256=aWNJ9IXllKc79gX9ed4X-MSGqjGSiEtGT8xTdYHQzjA,60383
228
+ tactus-0.38.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
229
+ tactus-0.38.0.dist-info/entry_points.txt,sha256=vWseqty8m3z-Worje0IYxlioMjPDCoSsm0AtY4GghBY,47
230
+ tactus-0.38.0.dist-info/licenses/LICENSE,sha256=ivohBcAIYnaLPQ-lKEeCXSMvQUVISpQfKyxHBHoa4GA,1066
231
+ tactus-0.38.0.dist-info/RECORD,,