tactus 0.37.0__py3-none-any.whl → 0.39.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 (48) 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 +568 -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 +441 -75
  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/plugins/__init__.py +3 -0
  20. tactus/plugins/noaa.py +76 -0
  21. tactus/primitives/handles.py +79 -7
  22. tactus/sandbox/config.py +1 -1
  23. tactus/sandbox/container_runner.py +2 -0
  24. tactus/sandbox/entrypoint.py +51 -8
  25. tactus/sandbox/protocol.py +5 -0
  26. tactus/stdlib/README.md +10 -1
  27. tactus/stdlib/biblicus/__init__.py +3 -0
  28. tactus/stdlib/biblicus/text.py +208 -0
  29. tactus/stdlib/tac/biblicus/text.tac +32 -0
  30. tactus/stdlib/tac/tactus/biblicus.spec.tac +179 -0
  31. tactus/stdlib/tac/tactus/corpora/base.tac +42 -0
  32. tactus/stdlib/tac/tactus/corpora/filesystem.tac +5 -0
  33. tactus/stdlib/tac/tactus/retrievers/base.tac +37 -0
  34. tactus/stdlib/tac/tactus/retrievers/embedding_index_file.tac +6 -0
  35. tactus/stdlib/tac/tactus/retrievers/embedding_index_inmemory.tac +6 -0
  36. tactus/stdlib/tac/tactus/retrievers/index.md +137 -0
  37. tactus/stdlib/tac/tactus/retrievers/init.tac +11 -0
  38. tactus/stdlib/tac/tactus/retrievers/sqlite_full_text_search.tac +6 -0
  39. tactus/stdlib/tac/tactus/retrievers/tf_vector.tac +6 -0
  40. tactus/testing/behave_integration.py +2 -0
  41. tactus/testing/context.py +4 -0
  42. tactus/validation/semantic_visitor.py +430 -88
  43. tactus/validation/validator.py +142 -2
  44. {tactus-0.37.0.dist-info → tactus-0.39.0.dist-info}/METADATA +3 -2
  45. {tactus-0.37.0.dist-info → tactus-0.39.0.dist-info}/RECORD +48 -28
  46. {tactus-0.37.0.dist-info → tactus-0.39.0.dist-info}/WHEEL +0 -0
  47. {tactus-0.37.0.dist-info → tactus-0.39.0.dist-info}/entry_points.txt +0 -0
  48. {tactus-0.37.0.dist-info → tactus-0.39.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.39.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=FbndoB7McjD-smRU9tGDLvNIw7o7-dCqiKRP3LSD23c,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=l1icTqTM092Z2AsrdLAo3WjZtDDVggMBG662KdWUIIU,110257
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=YMZKfUj2sfyGyBFdKvXWjbt2dbf-mckz4CefeMm_7sw,157790
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,25 @@ 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
79
+ tactus/plugins/__init__.py,sha256=MOSTLvPnXeDHKNcGzTv26bRxsK62pVRmTjEwbuoaWHk,39
80
+ tactus/plugins/noaa.py,sha256=BTBxmbI55AFgDNB4ZhNR7NaKqJECRvRJRua4gahaSvU,2022
74
81
  tactus/primitives/__init__.py,sha256=x6bGwoa9DizKUwqsg7SqURfJxisEdctTCv1XnSAZxIk,1709
75
82
  tactus/primitives/control.py,sha256=jw-7ggHtNLfFL5aTUUs6Fo5y4xsxEG8OIRe0RyIjVnc,4783
76
83
  tactus/primitives/file.py,sha256=GFHmXOADRllfJw6gHpIdVMmZ_ZS7DVgresQ0F71nqJE,7458
77
- tactus/primitives/handles.py,sha256=su7w61BO8cgNl-z-a7By-J6P8PxEuu4-db7fu8fMoiQ,13260
84
+ tactus/primitives/handles.py,sha256=RqX-bSAMSVScOw33CfmLBG2MPwpvaov1UN-g2tJJWcQ,14728
78
85
  tactus/primitives/host.py,sha256=yjNc5nKLfGCBNu8nR0c49N50hhQ7MxfDsHbjKvMH010,3557
79
86
  tactus/primitives/human.py,sha256=YTxw0LXtTL_hxm2G1fhNxR9Qa7n9MJGG9OD9WGRTnp0,36507
80
87
  tactus/primitives/json.py,sha256=-uFwrr9y2kfFLy3D7q8oLAgM1p3mUmfIL-DX36TA6sQ,5771
@@ -108,14 +115,16 @@ tactus/providers/bedrock.py,sha256=cVNDV7uHhCnnL6BNl7DFF8OwkD9ZYqa9CP2wXMcCJGY,3
108
115
  tactus/providers/google.py,sha256=wgZ3eiQif1rq1T8BK5V2kL_QVCmqBQZuWLz37y9cxOQ,3123
109
116
  tactus/providers/openai.py,sha256=3qSXfdELTHdU7vuRSxQrtnfNctt0HhrePOLFj3YlViA,2692
110
117
  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
118
+ tactus/sandbox/config.py,sha256=273ZI_9OWpGOBXo_yMQWZzgm4phRyA3POsLqExUw3_A,5812
119
+ tactus/sandbox/container_runner.py,sha256=Yo_VhSyjIT7BU7460xMJpid2LTA73orVk96mNfIcPeg,47622
113
120
  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
121
+ tactus/sandbox/entrypoint.py,sha256=9lBiDQxxbGGjp8bpf9d1gp1hsSe4iE_wwjGCbDtYo78,9774
122
+ tactus/sandbox/protocol.py,sha256=kW8I9lVpOluPeDFOxJEeZjXrXtSllY90HU8dSteBa8s,6371
123
+ tactus/stdlib/README.md,sha256=AqKYj7JxtphfKJlhq_sNezIUPfblzzubzdxE3PheiQE,2576
117
124
  tactus/stdlib/__init__.py,sha256=NkRsL413VXr0rLAadbb3meP5TelwcrEFVJd1u39XCbk,1047
118
125
  tactus/stdlib/loader.py,sha256=qjVnz5mn3Uu7g1O4vjSREHkR-YdRoON1vqJQq-oiFIE,8679
126
+ tactus/stdlib/biblicus/__init__.py,sha256=Y6Nb-wp33KeDtkjBccZrGYlyR98yhZBm1RfmiKIJHm8,50
127
+ tactus/stdlib/biblicus/text.py,sha256=aL7FF5MmX0aXskGwSTD970kGP4C0bAGHm0vJe7MThPU,6255
119
128
  tactus/stdlib/classify/__init__.py,sha256=51Lqge0g0Q6GWXkmw42HwuqkkDCsww9VBcoreYId374,5623
120
129
  tactus/stdlib/classify/classify.spec.tac,sha256=0yuRD_2dbPKTuhyqwk3vtsj_R3kwGoSEiEF4OY-ARqA,6475
121
130
  tactus/stdlib/classify/classify.tac,sha256=KvOXLihspPK1_g2GcT9wnLkynDubglp1S_JUfZlo-88,6850
@@ -140,6 +149,8 @@ tactus/stdlib/io/hdf5.py,sha256=7ELLaQZI1GOsycU1a60J6RTPNLH7EMdaPAYlNx0dQLA,3025
140
149
  tactus/stdlib/io/json.py,sha256=P6C6rIwAxY97MivCanxKF8TmRotIUxBlHcuv8etmLu8,2641
141
150
  tactus/stdlib/io/parquet.py,sha256=hycr0pjqysjhggHx7_UZJL_jkeP1wz8BCozL39EWk-0,2045
142
151
  tactus/stdlib/io/tsv.py,sha256=456V2g-dp0mOTxo0ojM-rQl-LlmeV6WAVh0HmEDd_kQ,2350
152
+ tactus/stdlib/tac/biblicus/text.tac,sha256=DXe4YW2_bBhvNHg3OF9K_Sxw9o-nuwHWBlrAuzFoP-Q,691
153
+ tactus/stdlib/tac/tactus/biblicus.spec.tac,sha256=JRvyL_JQZVq6kCSKW10hrRpJRDKtfnjeGwOYpbSgd8w,6709
143
154
  tactus/stdlib/tac/tactus/classify.spec.tac,sha256=UVXRaYx8Z-oLjnaiYaTOnq-gF4NlC14q0F2yBFJXmxk,6469
144
155
  tactus/stdlib/tac/tactus/extract.spec.tac,sha256=Unj7bIgZWfUUuyxrh66fQKRy2sDpWUEu_Q7x3tkicPE,5534
145
156
  tactus/stdlib/tac/tactus/generate.spec.tac,sha256=4IA31Cwx5QQOcvqnazIYXBXFy8l7v3ruQpzdgsgsgRw,6982
@@ -148,6 +159,8 @@ tactus/stdlib/tac/tactus/classify/fuzzy.tac,sha256=bgG9qt4z8x81szFU3PdhsefBAvWrv
148
159
  tactus/stdlib/tac/tactus/classify/index.md,sha256=gt6QVfqwTDSsREpOYDCisN-C99ou2vjZevZ_8xmYRSQ,2413
149
160
  tactus/stdlib/tac/tactus/classify/init.tac,sha256=B2qXZzgcN6W7-IVBgGkFtlGgvGB3F9VpnAEoJyTD_j0,876
150
161
  tactus/stdlib/tac/tactus/classify/llm.tac,sha256=1jKnHDpwtT_L8eq2UdIhdb5Y3Vt8I_Q9mBhYycEyyWI,4195
162
+ tactus/stdlib/tac/tactus/corpora/base.tac,sha256=D6tacnx6zW77tvmDi8xG_asdcvPlLE5IiLvDIQ5NDso,936
163
+ tactus/stdlib/tac/tactus/corpora/filesystem.tac,sha256=DTKnvQ153zwHVLtmlAsB6Cz2jJitpUObYzOFgtluI9I,89
151
164
  tactus/stdlib/tac/tactus/extract/base.tac,sha256=OI7Fx9VdkAJYQI9qQGTW4ylbwU0tEOAAJQBfLyD6IrU,3884
152
165
  tactus/stdlib/tac/tactus/extract/index.md,sha256=ZrXVgJasEqLwyS6SJ-fG_jRym4YUQJ9NbC7NVQIWOM4,2756
153
166
  tactus/stdlib/tac/tactus/extract/init.tac,sha256=cyzvlO1rWOX3xHYDezUmexux0Zvs-44PluBcLNGxmSo,738
@@ -156,12 +169,19 @@ tactus/stdlib/tac/tactus/generate/base.tac,sha256=hNEOnXDHtgSNE1AU8UO940FsH8EJ5T
156
169
  tactus/stdlib/tac/tactus/generate/index.md,sha256=zCOxHmF-nzYf5HazheBqZBhq-Dnr-ESmOhQdhtg6Sz4,6315
157
170
  tactus/stdlib/tac/tactus/generate/init.tac,sha256=342rzePc1shBLAmG_EFeo0Wt6JuFg87Pm8Tk3h3QoxU,806
158
171
  tactus/stdlib/tac/tactus/generate/llm.tac,sha256=HXF_p31nWe_sRICvVOojg4zI6TsJ7iWVMW83zB3QyM0,5327
172
+ tactus/stdlib/tac/tactus/retrievers/base.tac,sha256=NXs5NhiQv9hKDDEjQtE3LsfjEDw5RHGj4zH1w3zihkk,808
173
+ tactus/stdlib/tac/tactus/retrievers/embedding_index_file.tac,sha256=XXEe7boM8vunXWduz1DTPdm0jmg0q90Ns2j58cXc8d4,170
174
+ tactus/stdlib/tac/tactus/retrievers/embedding_index_inmemory.tac,sha256=-UzeXOm3bu4JdDS5WVj_SU3HNFKXgVit6VyotyACO94,174
175
+ tactus/stdlib/tac/tactus/retrievers/index.md,sha256=fgGhli3sJEqiJeSwGmAZobNt78d_LtOdcAu6tRmrNww,2662
176
+ tactus/stdlib/tac/tactus/retrievers/init.tac,sha256=Hh7kQKCK5MtDetSX4iyEq2u1Ts3we0tqz_4wU8EweEU,492
177
+ tactus/stdlib/tac/tactus/retrievers/sqlite_full_text_search.tac,sha256=KoRqi7disyyMHWQIT_dneFe2FT1mCIEZtRhayr_fpKw,173
178
+ tactus/stdlib/tac/tactus/retrievers/tf_vector.tac,sha256=VoeoB-xPyWfcns5h03NF9jbnZIBFU9e5jVyd-yGJnwk,159
159
179
  tactus/stdlib/tac/tactus/tools/done.tac,sha256=_PobbaUQY2PUZg-qy2eJ2jhdx2-UllePnvW_tFdGFao,729
160
180
  tactus/stdlib/tac/tactus/tools/log.tac,sha256=sNGYUSkehvKmrgag1b8rHpDME09MQbL4qkt9Kfd0jgg,1389
161
181
  tactus/testing/README.md,sha256=fUumwbVC56d7ZB2srAKSb7XxQ0vHFKPbZz70Zv59KRY,6840
162
182
  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
183
+ tactus/testing/behave_integration.py,sha256=I9A8G4-pGg_S8KlmEozaRFmP15kaAR6s1fbGbH3YVKs,22155
184
+ tactus/testing/context.py,sha256=ycrHiGCrm-eAQ5_zvS23lDm5yoBvlI4oRrmftKtOeTs,18773
165
185
  tactus/testing/eval_models.py,sha256=UI3geZp4vilbn3Jt4Mjy95luRVON3T4sGnAwlpb7jLo,3540
166
186
  tactus/testing/evaluation_runner.py,sha256=Mu-wVDlF9BwA8aOxAdMer8E7-VfZPBgyI09R6HMHmRg,6989
167
187
  tactus/testing/evaluators.py,sha256=NW_LHhssdMRYCCoYmtJIsst-DEsk8iBVebsxRyHx7I0,20751
@@ -192,8 +212,8 @@ tactus/validation/LuaParserBase.py,sha256=o3klCIY0ANkVCU0VHml0IOYE4CdEledeoyoIAP
192
212
  tactus/validation/README.md,sha256=AS6vr4blY7IKWRsj4wuvWBHVMTc5fto7IgNmv-Rjkdo,5366
193
213
  tactus/validation/__init__.py,sha256=rnap-YvNievWigYYUewuXBcLtAdjZ8YpeJDYS1T7XZM,153
194
214
  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
215
+ tactus/validation/semantic_visitor.py,sha256=YLX54qXpGNrJSANr15UfbGmxT017vGE10dBtBZTphIQ,55149
216
+ tactus/validation/validator.py,sha256=JSQHmI3EkNjJsPxrztTszJGuNuHyyaDdRsV62I4P0QU,11911
197
217
  tactus/validation/generated/LuaLexer.interp,sha256=B-Xb6HNXS7YYYQB_cvsWzf8OQLFnEhZHDN5vCOyP3yw,20444
198
218
  tactus/validation/generated/LuaLexer.py,sha256=6B-HNB_vAp3bA5iACLvMWw0R4KFENsuiG7bccysxbRQ,67252
199
219
  tactus/validation/generated/LuaLexer.tokens,sha256=uo4NdATiGedhiDccWz1jXH5tYJWyT3OZ0216z1Zif7E,1005
@@ -206,8 +226,8 @@ tactus/validation/generated/LuaParserVisitor.py,sha256=ageKSmHPxnO3jBS2fBtkmYBOd
206
226
  tactus/validation/generated/__init__.py,sha256=5gWlwRI0UvmHw2fnBpj_IG6N8oZeabr5tbj1AODDvjc,196
207
227
  tactus/validation/grammar/LuaLexer.g4,sha256=t2MXiTCr127RWAyQGvamkcU_m4veqPzSuHUtAKwalw4,2771
208
228
  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,,
229
+ tactus-0.39.0.dist-info/METADATA,sha256=5Axn0cmSvHUPhqcpvlbMouG27Gu2YkmxHfINh3ucnig,60383
230
+ tactus-0.39.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
231
+ tactus-0.39.0.dist-info/entry_points.txt,sha256=vWseqty8m3z-Worje0IYxlioMjPDCoSsm0AtY4GghBY,47
232
+ tactus-0.39.0.dist-info/licenses/LICENSE,sha256=ivohBcAIYnaLPQ-lKEeCXSMvQUVISpQfKyxHBHoa4GA,1066
233
+ tactus-0.39.0.dist-info/RECORD,,