specsmith 0.3.8.dev190__tar.gz → 0.3.8.dev191__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.8.dev190/src/specsmith.egg-info → specsmith-0.3.8.dev191}/PKG-INFO +1 -1
  2. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/pyproject.toml +1 -1
  3. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/tool_installer.py +131 -2
  4. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191/src/specsmith.egg-info}/PKG-INFO +1 -1
  5. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/LICENSE +0 -0
  6. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/README.md +0 -0
  7. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/setup.cfg +0 -0
  8. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/__init__.py +0 -0
  9. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/belief.py +0 -0
  10. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/certainty.py +0 -0
  11. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/failure_graph.py +0 -0
  12. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/py.typed +0 -0
  13. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/recovery.py +0 -0
  14. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/session.py +0 -0
  15. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/stress_tester.py +0 -0
  16. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/epistemic/trace.py +0 -0
  17. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/__init__.py +0 -0
  18. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/__main__.py +0 -0
  19. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/__init__.py +0 -0
  20. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/core.py +0 -0
  21. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/hooks.py +0 -0
  22. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/optimizer.py +0 -0
  23. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/profiles/epistemic-auditor.md +0 -0
  24. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/profiles/planner.md +0 -0
  25. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/profiles/verifier.md +0 -0
  26. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/providers/__init__.py +0 -0
  27. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/providers/anthropic.py +0 -0
  28. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/providers/gemini.py +0 -0
  29. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/providers/mistral.py +0 -0
  30. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/providers/ollama.py +0 -0
  31. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/providers/openai.py +0 -0
  32. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/runner.py +0 -0
  33. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/skills.py +0 -0
  34. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/agent/tools.py +0 -0
  35. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/architect.py +0 -0
  36. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/auditor.py +0 -0
  37. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/auth.py +0 -0
  38. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/cli.py +0 -0
  39. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/commands/__init__.py +0 -0
  40. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/compressor.py +0 -0
  41. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/config.py +0 -0
  42. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/credit_analyzer.py +0 -0
  43. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/credits.py +0 -0
  44. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/differ.py +0 -0
  45. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/doctor.py +0 -0
  46. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/epistemic/__init__.py +0 -0
  47. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/epistemic/belief.py +0 -0
  48. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/epistemic/certainty.py +0 -0
  49. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/epistemic/failure_graph.py +0 -0
  50. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/epistemic/recovery.py +0 -0
  51. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/epistemic/stress_tester.py +0 -0
  52. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/executor.py +0 -0
  53. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/exporter.py +0 -0
  54. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/__init__.py +0 -0
  55. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/app.py +0 -0
  56. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/main_window.py +0 -0
  57. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/session_tab.py +0 -0
  58. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/theme.py +0 -0
  59. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/widgets/__init__.py +0 -0
  60. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/widgets/chat_view.py +0 -0
  61. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/widgets/input_bar.py +0 -0
  62. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/widgets/provider_bar.py +0 -0
  63. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/widgets/token_meter.py +0 -0
  64. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/widgets/tool_panel.py +0 -0
  65. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/widgets/update_checker.py +0 -0
  66. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/gui/worker.py +0 -0
  67. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/importer.py +0 -0
  68. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/__init__.py +0 -0
  69. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/aider.py +0 -0
  70. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/base.py +0 -0
  71. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/claude_code.py +0 -0
  72. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/copilot.py +0 -0
  73. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/cursor.py +0 -0
  74. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/gemini.py +0 -0
  75. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/warp.py +0 -0
  76. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/integrations/windsurf.py +0 -0
  77. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/languages.py +0 -0
  78. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/ledger.py +0 -0
  79. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/ollama_cmds.py +0 -0
  80. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/patent.py +0 -0
  81. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/phase.py +0 -0
  82. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/plugins.py +0 -0
  83. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/profiles.py +0 -0
  84. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/rate_limits.py +0 -0
  85. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/releaser.py +0 -0
  86. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/requirements.py +0 -0
  87. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/retrieval.py +0 -0
  88. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/scaffolder.py +0 -0
  89. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/session.py +0 -0
  90. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/agents.md.j2 +0 -0
  91. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  92. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  93. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  94. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  95. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  96. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  97. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  98. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/community/security.md.j2 +0 -0
  99. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  100. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  101. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  102. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  103. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  104. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/editorconfig.j2 +0 -0
  105. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/gitattributes.j2 +0 -0
  106. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/gitignore.j2 +0 -0
  107. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/go/go.mod.j2 +0 -0
  108. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/go/main.go.j2 +0 -0
  109. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
  110. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  111. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  112. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
  113. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
  114. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
  115. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  116. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  117. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
  118. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
  119. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  120. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/js/package.json.j2 +0 -0
  121. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/ledger.md.j2 +0 -0
  122. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/python/cli.py.j2 +0 -0
  123. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/python/init.py.j2 +0 -0
  124. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  125. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/readme.md.j2 +0 -0
  126. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  127. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  128. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  129. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  130. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  131. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  132. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  133. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  134. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  135. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/toolrules.py +0 -0
  136. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/tools.py +0 -0
  137. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/trace.py +0 -0
  138. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/updater.py +0 -0
  139. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/upgrader.py +0 -0
  140. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/validator.py +0 -0
  141. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/vcs/__init__.py +0 -0
  142. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/vcs/base.py +0 -0
  143. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/vcs/bitbucket.py +0 -0
  144. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/vcs/github.py +0 -0
  145. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/vcs/gitlab.py +0 -0
  146. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/vcs_commands.py +0 -0
  147. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/wireframes.py +0 -0
  148. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith/workspace.py +0 -0
  149. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith.egg-info/SOURCES.txt +0 -0
  150. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith.egg-info/dependency_links.txt +0 -0
  151. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith.egg-info/entry_points.txt +0 -0
  152. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith.egg-info/requires.txt +0 -0
  153. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/src/specsmith.egg-info/top_level.txt +0 -0
  154. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_auditor.py +0 -0
  155. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_cli.py +0 -0
  156. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_compressor.py +0 -0
  157. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_epistemic.py +0 -0
  158. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_importer.py +0 -0
  159. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_integrations.py +0 -0
  160. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_optimizer.py +0 -0
  161. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_rate_limits.py +0 -0
  162. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_scaffolder.py +0 -0
  163. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_smoke.py +0 -0
  164. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_tools.py +0 -0
  165. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_validator.py +0 -0
  166. {specsmith-0.3.8.dev190 → specsmith-0.3.8.dev191}/tests/test_vcs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.3.8.dev190
3
+ Version: 0.3.8.dev191
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.8.dev190"
7
+ version = "0.3.8.dev191"
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"
@@ -176,7 +176,123 @@ KNOWN_TOOLS: dict[str, ToolInstallInfo] = {
176
176
  windows_scoop="scoop install uv",
177
177
  manual="https://docs.astral.sh/uv/",
178
178
  ),
179
- # ── C / C++ tooling ─────────────────────────────────────────────────────
179
+ "pip-audit": ToolInstallInfo(
180
+ key="pip-audit",
181
+ display_name="pip-audit (Python security)",
182
+ category="python",
183
+ pip="pip install pip-audit",
184
+ manual="https://github.com/pypa/pip-audit",
185
+ ),
186
+ "bandit": ToolInstallInfo(
187
+ key="bandit",
188
+ display_name="Bandit (Python security linter)",
189
+ category="python",
190
+ pip="pip install bandit",
191
+ manual="https://bandit.readthedocs.io/",
192
+ ),
193
+ "safety": ToolInstallInfo(
194
+ key="safety",
195
+ display_name="Safety (dependency checker)",
196
+ category="python",
197
+ pip="pip install safety",
198
+ manual="https://safetycli.com/",
199
+ ),
200
+ "black": ToolInstallInfo(
201
+ key="black",
202
+ display_name="Black (Python formatter)",
203
+ category="python",
204
+ pip="pip install black",
205
+ macos="brew install black",
206
+ manual="https://black.readthedocs.io/",
207
+ ),
208
+ "isort": ToolInstallInfo(
209
+ key="isort",
210
+ display_name="isort (import sorter)",
211
+ category="python",
212
+ pip="pip install isort",
213
+ manual="https://pycqa.github.io/isort/",
214
+ ),
215
+ "pyright": ToolInstallInfo(
216
+ key="pyright",
217
+ display_name="Pyright (Python type checker)",
218
+ category="python",
219
+ pip="pip install pyright",
220
+ npm="npm install -g pyright",
221
+ manual="https://github.com/microsoft/pyright",
222
+ ),
223
+ "pylint": ToolInstallInfo(
224
+ key="pylint",
225
+ display_name="Pylint",
226
+ category="python",
227
+ pip="pip install pylint",
228
+ manual="https://pylint.readthedocs.io/",
229
+ ),
230
+ "flake8": ToolInstallInfo(
231
+ key="flake8",
232
+ display_name="Flake8",
233
+ category="python",
234
+ pip="pip install flake8",
235
+ manual="https://flake8.pycqa.org/",
236
+ ),
237
+ "coverage": ToolInstallInfo(
238
+ key="coverage",
239
+ display_name="Coverage.py",
240
+ category="python",
241
+ pip="pip install coverage",
242
+ manual="https://coverage.readthedocs.io/",
243
+ ),
244
+ "pre-commit": ToolInstallInfo(
245
+ key="pre-commit",
246
+ display_name="pre-commit",
247
+ category="python",
248
+ pip="pip install pre-commit",
249
+ macos="brew install pre-commit",
250
+ manual="https://pre-commit.com/",
251
+ ),
252
+ "nbstripout": ToolInstallInfo(
253
+ key="nbstripout",
254
+ display_name="nbstripout (notebook cleanup)",
255
+ category="python",
256
+ pip="pip install nbstripout",
257
+ manual="https://github.com/kynan/nbstripout",
258
+ ),
259
+ "tox": ToolInstallInfo(
260
+ key="tox",
261
+ display_name="tox (test runner)",
262
+ category="python",
263
+ pip="pip install tox",
264
+ manual="https://tox.wiki/",
265
+ ),
266
+ # ── JavaScript / TypeScript tooling ────────────────────────────────────────
267
+ "eslint": ToolInstallInfo(
268
+ key="eslint",
269
+ display_name="ESLint",
270
+ category="js",
271
+ npm="npm install -g eslint",
272
+ manual="https://eslint.org/",
273
+ ),
274
+ "prettier": ToolInstallInfo(
275
+ key="prettier",
276
+ display_name="Prettier",
277
+ category="js",
278
+ npm="npm install -g prettier",
279
+ manual="https://prettier.io/",
280
+ ),
281
+ "jest": ToolInstallInfo(
282
+ key="jest",
283
+ display_name="Jest",
284
+ category="js",
285
+ npm="npm install -g jest",
286
+ manual="https://jestjs.io/",
287
+ ),
288
+ "vitest": ToolInstallInfo(
289
+ key="vitest",
290
+ display_name="Vitest",
291
+ category="js",
292
+ npm="npm install -g vitest",
293
+ manual="https://vitest.dev/",
294
+ ),
295
+ # ── C / C++ tooling ─────────────────────────────────────────────────────────
180
296
  "clang-tidy": ToolInstallInfo(
181
297
  key="clang-tidy",
182
298
  display_name="clang-tidy",
@@ -220,7 +336,14 @@ KNOWN_TOOLS: dict[str, ToolInstallInfo] = {
220
336
  pip="pip install cmake",
221
337
  manual="https://cmake.org/download/",
222
338
  ),
223
- # ── Rust tooling ─────────────────────────────────────────────────────────
339
+ # ── Rust tooling ───────────────────────────────────────────────────────────
340
+ "cargo-audit": ToolInstallInfo(
341
+ key="cargo-audit",
342
+ display_name="cargo-audit (Rust security)",
343
+ category="rust",
344
+ cargo="cargo install cargo-audit",
345
+ manual="https://github.com/rustsec/rustsec",
346
+ ),
224
347
  "rustup": ToolInstallInfo(
225
348
  key="rustup",
226
349
  display_name="Rust (via rustup)",
@@ -232,6 +355,12 @@ KNOWN_TOOLS: dict[str, ToolInstallInfo] = {
232
355
  manual="https://rustup.rs/",
233
356
  ),
234
357
  # ── Go tooling ────────────────────────────────────────────────────────────
358
+ "govulncheck": ToolInstallInfo(
359
+ key="govulncheck",
360
+ display_name="govulncheck (Go security)",
361
+ category="go",
362
+ manual="go install golang.org/x/vuln/cmd/govulncheck@latest",
363
+ ),
235
364
  "go": ToolInstallInfo(
236
365
  key="go",
237
366
  display_name="Go",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.3.8.dev190
3
+ Version: 0.3.8.dev191
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