specsmith 0.3.7.dev188__tar.gz → 0.3.7.dev189__tar.gz

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 (166) hide show
  1. {specsmith-0.3.7.dev188/src/specsmith.egg-info → specsmith-0.3.7.dev189}/PKG-INFO +1 -1
  2. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/pyproject.toml +1 -1
  3. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/runner.py +31 -0
  4. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189/src/specsmith.egg-info}/PKG-INFO +1 -1
  5. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/LICENSE +0 -0
  6. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/README.md +0 -0
  7. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/setup.cfg +0 -0
  8. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/__init__.py +0 -0
  9. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/belief.py +0 -0
  10. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/certainty.py +0 -0
  11. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/failure_graph.py +0 -0
  12. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/py.typed +0 -0
  13. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/recovery.py +0 -0
  14. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/session.py +0 -0
  15. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/stress_tester.py +0 -0
  16. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/epistemic/trace.py +0 -0
  17. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/__init__.py +0 -0
  18. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/__main__.py +0 -0
  19. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/__init__.py +0 -0
  20. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/core.py +0 -0
  21. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/hooks.py +0 -0
  22. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/optimizer.py +0 -0
  23. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/profiles/epistemic-auditor.md +0 -0
  24. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/profiles/planner.md +0 -0
  25. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/profiles/verifier.md +0 -0
  26. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/providers/__init__.py +0 -0
  27. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/providers/anthropic.py +0 -0
  28. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/providers/gemini.py +0 -0
  29. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/providers/mistral.py +0 -0
  30. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/providers/ollama.py +0 -0
  31. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/providers/openai.py +0 -0
  32. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/skills.py +0 -0
  33. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/agent/tools.py +0 -0
  34. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/architect.py +0 -0
  35. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/auditor.py +0 -0
  36. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/auth.py +0 -0
  37. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/cli.py +0 -0
  38. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/commands/__init__.py +0 -0
  39. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/compressor.py +0 -0
  40. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/config.py +0 -0
  41. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/credit_analyzer.py +0 -0
  42. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/credits.py +0 -0
  43. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/differ.py +0 -0
  44. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/doctor.py +0 -0
  45. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/epistemic/__init__.py +0 -0
  46. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/epistemic/belief.py +0 -0
  47. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/epistemic/certainty.py +0 -0
  48. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/epistemic/failure_graph.py +0 -0
  49. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/epistemic/recovery.py +0 -0
  50. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/epistemic/stress_tester.py +0 -0
  51. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/executor.py +0 -0
  52. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/exporter.py +0 -0
  53. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/__init__.py +0 -0
  54. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/app.py +0 -0
  55. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/main_window.py +0 -0
  56. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/session_tab.py +0 -0
  57. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/theme.py +0 -0
  58. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/widgets/__init__.py +0 -0
  59. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/widgets/chat_view.py +0 -0
  60. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/widgets/input_bar.py +0 -0
  61. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/widgets/provider_bar.py +0 -0
  62. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/widgets/token_meter.py +0 -0
  63. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/widgets/tool_panel.py +0 -0
  64. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/widgets/update_checker.py +0 -0
  65. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/gui/worker.py +0 -0
  66. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/importer.py +0 -0
  67. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/__init__.py +0 -0
  68. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/aider.py +0 -0
  69. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/base.py +0 -0
  70. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/claude_code.py +0 -0
  71. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/copilot.py +0 -0
  72. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/cursor.py +0 -0
  73. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/gemini.py +0 -0
  74. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/warp.py +0 -0
  75. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/integrations/windsurf.py +0 -0
  76. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/languages.py +0 -0
  77. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/ledger.py +0 -0
  78. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/ollama_cmds.py +0 -0
  79. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/patent.py +0 -0
  80. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/phase.py +0 -0
  81. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/plugins.py +0 -0
  82. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/profiles.py +0 -0
  83. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/rate_limits.py +0 -0
  84. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/releaser.py +0 -0
  85. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/requirements.py +0 -0
  86. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/retrieval.py +0 -0
  87. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/scaffolder.py +0 -0
  88. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/session.py +0 -0
  89. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/agents.md.j2 +0 -0
  90. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  91. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  92. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  93. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  94. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  95. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  96. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  97. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/community/security.md.j2 +0 -0
  98. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  99. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  100. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  101. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  102. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  103. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/editorconfig.j2 +0 -0
  104. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/gitattributes.j2 +0 -0
  105. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/gitignore.j2 +0 -0
  106. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/go/go.mod.j2 +0 -0
  107. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/go/main.go.j2 +0 -0
  108. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
  109. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  110. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  111. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
  112. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
  113. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
  114. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  115. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  116. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
  117. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
  118. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  119. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/js/package.json.j2 +0 -0
  120. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/ledger.md.j2 +0 -0
  121. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/python/cli.py.j2 +0 -0
  122. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/python/init.py.j2 +0 -0
  123. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  124. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/readme.md.j2 +0 -0
  125. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  126. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  127. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  128. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  129. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  130. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  131. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  132. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  133. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  134. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/tool_installer.py +0 -0
  135. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/toolrules.py +0 -0
  136. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/tools.py +0 -0
  137. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/trace.py +0 -0
  138. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/updater.py +0 -0
  139. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/upgrader.py +0 -0
  140. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/validator.py +0 -0
  141. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/vcs/__init__.py +0 -0
  142. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/vcs/base.py +0 -0
  143. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/vcs/bitbucket.py +0 -0
  144. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/vcs/github.py +0 -0
  145. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/vcs/gitlab.py +0 -0
  146. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/vcs_commands.py +0 -0
  147. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/wireframes.py +0 -0
  148. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith/workspace.py +0 -0
  149. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith.egg-info/SOURCES.txt +0 -0
  150. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith.egg-info/dependency_links.txt +0 -0
  151. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith.egg-info/entry_points.txt +0 -0
  152. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith.egg-info/requires.txt +0 -0
  153. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/src/specsmith.egg-info/top_level.txt +0 -0
  154. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_auditor.py +0 -0
  155. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_cli.py +0 -0
  156. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_compressor.py +0 -0
  157. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_epistemic.py +0 -0
  158. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_importer.py +0 -0
  159. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_integrations.py +0 -0
  160. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_optimizer.py +0 -0
  161. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_rate_limits.py +0 -0
  162. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_scaffolder.py +0 -0
  163. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_smoke.py +0 -0
  164. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_tools.py +0 -0
  165. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_validator.py +0 -0
  166. {specsmith-0.3.7.dev188 → specsmith-0.3.7.dev189}/tests/test_vcs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.3.7.dev188
3
+ Version: 0.3.7.dev189
4
4
  Summary: Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands.
5
5
  Author: BitConcepts
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specsmith"
7
- version = "0.3.7.dev188"
7
+ version = "0.3.7.dev189"
8
8
  description = "Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -213,6 +213,22 @@ When ANY tool returns an error, exception, or non-zero exit code:
213
213
  4. Wait. Do nothing else. The user will decide.
214
214
  This tool is not designed to fix itself. Fail fast, report quickly.
215
215
 
216
+ ## NO-RETRY RULE — NEVER repeat a failing command:
217
+ If a command fails (non-zero exit, "not recognized", "not found"):
218
+ 1. NEVER retry the exact same command.
219
+ 2. Instead: investigate WHY it failed (check PATH, try `where`/`which`, look for the binary).
220
+ 3. If a tool like `git` is not found, try common paths:
221
+ - Windows: `C:/Program Files/Git/cmd/git.exe`, `where.exe git`
222
+ - Linux/Mac: `/usr/bin/git`, `which git`
223
+ 4. If you cannot find it after ONE investigation attempt, tell the user:
224
+ "I couldn’t find [tool] on your PATH. Please tell me the full path or add it to PATH."
225
+ 5. NEVER loop between retrying and suggesting installation.
226
+
227
+ ## TOOL CALL FORMAT RULE:
228
+ NEVER output raw JSON tool calls as text. Use ONLY the native tool_use mechanism.
229
+ Do NOT write <tools>, <tool_call>, or JSON blocks in your response text.
230
+ If you want to call a tool, use the tool calling API — never emit tool calls as plain text.
231
+
216
232
  ## RESPONSE STYLE RULE — CONVERSATIONAL PLAIN ENGLISH:
217
233
  Always respond in natural sentences, like a helpful colleague would.
218
234
  - NEVER dump raw tool output, JSON, tables of IDs, or code blocks in your reply.
@@ -567,6 +583,21 @@ class AgentRunner:
567
583
 
568
584
  if response.content:
569
585
  final_response = response.content
586
+ # Strip inline tool call blocks that local models (Qwen/Mistral)
587
+ # sometimes emit as text instead of using the tool_use API.
588
+ _TOOL_BLOCK = re.compile(r"<tools?>\s*\{.*?\}\s*</tools?>", re.DOTALL)
589
+ if _TOOL_BLOCK.search(final_response):
590
+ final_response = _TOOL_BLOCK.sub("", final_response).strip()
591
+ # If the response was ONLY a tool call block, suppress entirely
592
+ if not final_response:
593
+ response = CompletionResponse(
594
+ content="",
595
+ model=response.model,
596
+ input_tokens=response.input_tokens,
597
+ output_tokens=response.output_tokens,
598
+ estimated_cost_usd=response.estimated_cost_usd,
599
+ tool_calls=response.tool_calls,
600
+ )
570
601
 
571
602
  if not response.has_tool_calls:
572
603
  # Non-English correction: if the final response is in a non-English
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.3.7.dev188
3
+ Version: 0.3.7.dev189
4
4
  Summary: Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands.
5
5
  Author: BitConcepts
6
6
  License-Expression: MIT