specsmith 0.3.6.dev164__tar.gz → 0.3.6.dev171__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 (164) hide show
  1. {specsmith-0.3.6.dev164/src/specsmith.egg-info → specsmith-0.3.6.dev171}/PKG-INFO +15 -3
  2. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/README.md +14 -2
  3. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/pyproject.toml +1 -1
  4. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/__init__.py +1 -1
  5. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/tools.py +11 -0
  6. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/cli.py +12 -12
  7. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/config.py +17 -5
  8. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171/src/specsmith.egg-info}/PKG-INFO +15 -3
  9. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/LICENSE +0 -0
  10. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/setup.cfg +0 -0
  11. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/__init__.py +0 -0
  12. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/belief.py +0 -0
  13. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/certainty.py +0 -0
  14. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/failure_graph.py +0 -0
  15. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/py.typed +0 -0
  16. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/recovery.py +0 -0
  17. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/session.py +0 -0
  18. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/stress_tester.py +0 -0
  19. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/epistemic/trace.py +0 -0
  20. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/__main__.py +0 -0
  21. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/__init__.py +0 -0
  22. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/core.py +0 -0
  23. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/hooks.py +0 -0
  24. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/optimizer.py +0 -0
  25. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/profiles/epistemic-auditor.md +0 -0
  26. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/profiles/planner.md +0 -0
  27. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/profiles/verifier.md +0 -0
  28. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/providers/__init__.py +0 -0
  29. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/providers/anthropic.py +0 -0
  30. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/providers/gemini.py +0 -0
  31. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/providers/mistral.py +0 -0
  32. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/providers/ollama.py +0 -0
  33. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/providers/openai.py +0 -0
  34. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/runner.py +0 -0
  35. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/agent/skills.py +0 -0
  36. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/architect.py +0 -0
  37. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/auditor.py +0 -0
  38. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/auth.py +0 -0
  39. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/commands/__init__.py +0 -0
  40. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/compressor.py +0 -0
  41. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/credit_analyzer.py +0 -0
  42. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/credits.py +0 -0
  43. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/differ.py +0 -0
  44. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/doctor.py +0 -0
  45. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/epistemic/__init__.py +0 -0
  46. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/epistemic/belief.py +0 -0
  47. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/epistemic/certainty.py +0 -0
  48. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/epistemic/failure_graph.py +0 -0
  49. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/epistemic/recovery.py +0 -0
  50. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/epistemic/stress_tester.py +0 -0
  51. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/executor.py +0 -0
  52. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/exporter.py +0 -0
  53. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/__init__.py +0 -0
  54. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/app.py +0 -0
  55. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/main_window.py +0 -0
  56. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/session_tab.py +0 -0
  57. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/theme.py +0 -0
  58. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/widgets/__init__.py +0 -0
  59. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/widgets/chat_view.py +0 -0
  60. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/widgets/input_bar.py +0 -0
  61. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/widgets/provider_bar.py +0 -0
  62. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/widgets/token_meter.py +0 -0
  63. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/widgets/tool_panel.py +0 -0
  64. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/widgets/update_checker.py +0 -0
  65. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/gui/worker.py +0 -0
  66. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/importer.py +0 -0
  67. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/__init__.py +0 -0
  68. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/aider.py +0 -0
  69. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/base.py +0 -0
  70. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/claude_code.py +0 -0
  71. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/copilot.py +0 -0
  72. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/cursor.py +0 -0
  73. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/gemini.py +0 -0
  74. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/warp.py +0 -0
  75. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/integrations/windsurf.py +0 -0
  76. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/languages.py +0 -0
  77. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/ledger.py +0 -0
  78. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/ollama_cmds.py +0 -0
  79. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/patent.py +0 -0
  80. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/phase.py +0 -0
  81. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/plugins.py +0 -0
  82. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/profiles.py +0 -0
  83. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/rate_limits.py +0 -0
  84. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/releaser.py +0 -0
  85. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/requirements.py +0 -0
  86. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/scaffolder.py +0 -0
  87. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/session.py +0 -0
  88. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/agents.md.j2 +0 -0
  89. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  90. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  91. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  92. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  93. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  94. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  95. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  96. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/community/security.md.j2 +0 -0
  97. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  98. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  99. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  100. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  101. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  102. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/docs/workflow.md.j2 +0 -0
  103. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/editorconfig.j2 +0 -0
  104. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/gitattributes.j2 +0 -0
  105. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/gitignore.j2 +0 -0
  106. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/go/go.mod.j2 +0 -0
  107. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/go/main.go.j2 +0 -0
  108. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
  109. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  110. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  111. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
  112. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
  113. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  114. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  115. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
  116. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  117. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/governance/workflow.md.j2 +0 -0
  118. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/js/package.json.j2 +0 -0
  119. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/ledger.md.j2 +0 -0
  120. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/python/cli.py.j2 +0 -0
  121. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/python/init.py.j2 +0 -0
  122. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  123. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/readme.md.j2 +0 -0
  124. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  125. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  126. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  127. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  128. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  129. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  130. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  131. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  132. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  133. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/tool_installer.py +0 -0
  134. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/toolrules.py +0 -0
  135. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/tools.py +0 -0
  136. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/trace.py +0 -0
  137. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/updater.py +0 -0
  138. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/upgrader.py +0 -0
  139. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/validator.py +0 -0
  140. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/vcs/__init__.py +0 -0
  141. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/vcs/base.py +0 -0
  142. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/vcs/bitbucket.py +0 -0
  143. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/vcs/github.py +0 -0
  144. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/vcs/gitlab.py +0 -0
  145. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/vcs_commands.py +0 -0
  146. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith/workspace.py +0 -0
  147. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith.egg-info/SOURCES.txt +0 -0
  148. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith.egg-info/dependency_links.txt +0 -0
  149. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith.egg-info/entry_points.txt +0 -0
  150. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith.egg-info/requires.txt +0 -0
  151. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/src/specsmith.egg-info/top_level.txt +0 -0
  152. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_auditor.py +0 -0
  153. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_cli.py +0 -0
  154. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_compressor.py +0 -0
  155. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_epistemic.py +0 -0
  156. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_importer.py +0 -0
  157. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_integrations.py +0 -0
  158. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_optimizer.py +0 -0
  159. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_rate_limits.py +0 -0
  160. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_scaffolder.py +0 -0
  161. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_smoke.py +0 -0
  162. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_tools.py +0 -0
  163. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_validator.py +0 -0
  164. {specsmith-0.3.6.dev164 → specsmith-0.3.6.dev171}/tests/test_vcs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.3.6.dev164
3
+ Version: 0.3.6.dev171
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
@@ -66,6 +66,7 @@ Dynamic: license-file
66
66
  # specsmith
67
67
 
68
68
  [![CI](https://github.com/BitConcepts/specsmith/actions/workflows/ci.yml/badge.svg)](https://github.com/BitConcepts/specsmith/actions/workflows/ci.yml)
69
+ [![Sponsor](https://img.shields.io/badge/sponsor-%E2%9D%A4-ea4aaa?logo=github)](https://github.com/sponsors/BitConcepts)
69
70
  [![Docs](https://readthedocs.org/projects/specsmith/badge/?version=stable)](https://specsmith.readthedocs.io/en/stable/)
70
71
  [![PyPI](https://img.shields.io/pypi/v/specsmith?label=stable&style=flat&color=blue&cacheSeconds=60)](https://pypi.org/project/specsmith/)
71
72
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
@@ -122,7 +123,7 @@ specsmith phase list # list all phases
122
123
  ```
123
124
 
124
125
  The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the VS Code
125
- Governance Panel. Each phase has a checklist of file/command criteria, recommended commands,
126
+ Settings Panel. Each phase has a checklist of file/command criteria, recommended commands,
126
127
  and a readiness percentage.
127
128
 
128
129
  ---
@@ -190,7 +191,7 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
190
191
  ```
191
192
  # Install specsmith first, then:
192
193
  # VS Code: Ctrl+Shift+P → specsmith: New Agent Session
193
- # Governance Panel: Ctrl+Shift+G
194
+ # Settings Panel: Ctrl+Shift+G
194
195
  ```
195
196
 
196
197
  **Key features:**
@@ -211,6 +212,17 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
211
212
 
212
213
  ---
213
214
 
215
+ ## Supporting specsmith
216
+
217
+ If specsmith is saving you time or helping your team ship better software, please consider:
218
+
219
+ - **[Sponsoring BitConcepts](https://github.com/sponsors/BitConcepts)** — directly funds development
220
+ - **Starring** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
221
+ - **Reporting bugs** and **requesting features** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues)
222
+ - **Contributing** — see [CONTRIBUTING.md](CONTRIBUTING.md)
223
+
224
+ ---
225
+
214
226
  ## Ollama — Local LLMs (Zero API Cost)
215
227
 
216
228
  specsmith has first-class Ollama support, including:
@@ -1,6 +1,7 @@
1
1
  # specsmith
2
2
 
3
3
  [![CI](https://github.com/BitConcepts/specsmith/actions/workflows/ci.yml/badge.svg)](https://github.com/BitConcepts/specsmith/actions/workflows/ci.yml)
4
+ [![Sponsor](https://img.shields.io/badge/sponsor-%E2%9D%A4-ea4aaa?logo=github)](https://github.com/sponsors/BitConcepts)
4
5
  [![Docs](https://readthedocs.org/projects/specsmith/badge/?version=stable)](https://specsmith.readthedocs.io/en/stable/)
5
6
  [![PyPI](https://img.shields.io/pypi/v/specsmith?label=stable&style=flat&color=blue&cacheSeconds=60)](https://pypi.org/project/specsmith/)
6
7
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
@@ -57,7 +58,7 @@ specsmith phase list # list all phases
57
58
  ```
58
59
 
59
60
  The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the VS Code
60
- Governance Panel. Each phase has a checklist of file/command criteria, recommended commands,
61
+ Settings Panel. Each phase has a checklist of file/command criteria, recommended commands,
61
62
  and a readiness percentage.
62
63
 
63
64
  ---
@@ -125,7 +126,7 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
125
126
  ```
126
127
  # Install specsmith first, then:
127
128
  # VS Code: Ctrl+Shift+P → specsmith: New Agent Session
128
- # Governance Panel: Ctrl+Shift+G
129
+ # Settings Panel: Ctrl+Shift+G
129
130
  ```
130
131
 
131
132
  **Key features:**
@@ -146,6 +147,17 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
146
147
 
147
148
  ---
148
149
 
150
+ ## Supporting specsmith
151
+
152
+ If specsmith is saving you time or helping your team ship better software, please consider:
153
+
154
+ - **[Sponsoring BitConcepts](https://github.com/sponsors/BitConcepts)** — directly funds development
155
+ - **Starring** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
156
+ - **Reporting bugs** and **requesting features** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues)
157
+ - **Contributing** — see [CONTRIBUTING.md](CONTRIBUTING.md)
158
+
159
+ ---
160
+
149
161
  ## Ollama — Local LLMs (Zero API Cost)
150
162
 
151
163
  specsmith has first-class Ollama support, including:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specsmith"
7
- version = "0.3.6.dev164"
7
+ version = "0.3.6.dev171"
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"
@@ -8,4 +8,4 @@ from importlib.metadata import version as _pkg_version
8
8
  try:
9
9
  __version__: str = _pkg_version("specsmith")
10
10
  except PackageNotFoundError: # running from source without install
11
- __version__ = "0.2.3"
11
+ __version__ = "0.3.6" # fallback: keep in sync with pyproject.toml
@@ -26,6 +26,16 @@ from pathlib import Path
26
26
 
27
27
  from specsmith.agent.core import Tool, ToolParam
28
28
 
29
+ # Env vars that prevent Rich from using the Windows Console API
30
+ # (LegacyWindowsTerm) when stdout is a captured pipe. Without these, Rich
31
+ # crashes with 'WriteFile failed' / handle errors on every command.
32
+ _SUBPROCESS_ENV: dict[str, str] = {
33
+ **os.environ,
34
+ "NO_COLOR": "1", # Disables Rich colour / Windows console API path
35
+ "FORCE_COLOR": "0", # Belt-and-suspenders: also suppress colour
36
+ "PYTHONIOENCODING": "utf-8", # Ensure UTF-8 on pipes regardless of locale
37
+ }
38
+
29
39
 
30
40
  def _run_specsmith(args: list[str], project_dir: str = ".") -> str:
31
41
  """Execute a specsmith command and return combined stdout+stderr."""
@@ -36,6 +46,7 @@ def _run_specsmith(args: list[str], project_dir: str = ".") -> str:
36
46
  capture_output=True,
37
47
  text=True,
38
48
  timeout=120,
49
+ env=_SUBPROCESS_ENV,
39
50
  )
40
51
  output = (result.stdout + result.stderr).strip()
41
52
  if result.returncode != 0:
@@ -1969,8 +1969,8 @@ def run_cmd(
1969
1969
  SPECSMITH_PROVIDER=<name> → explicit override
1970
1970
 
1971
1971
  Install a provider:
1972
- pip install specsmith[anthropic] # Claude
1973
- pip install specsmith[openai] # GPT/O-series
1972
+ pipx inject specsmith anthropic # Claude
1973
+ pipx inject specsmith openai # GPT/O-series
1974
1974
  """
1975
1975
  from specsmith.agent.core import ModelTier
1976
1976
  from specsmith.agent.runner import AgentRunner
@@ -2002,11 +2002,11 @@ def run_cmd(
2002
2002
  except Exception as e: # noqa: BLE001
2003
2003
  console.print(f"[red]{e}[/red]")
2004
2004
  console.print(
2005
- "\nInstall a provider:\n"
2006
- " pip install specsmith[anthropic] # Claude\n"
2007
- " pip install specsmith[openai] # GPT\n"
2008
- " pip install specsmith[gemini] # Gemini\n"
2009
- " # Ollama: install locally, no pip extra needed"
2005
+ "\nInstall a provider (pipx recommended):\n"
2006
+ " pipx inject specsmith anthropic # Claude\n"
2007
+ " pipx inject specsmith openai # GPT\n"
2008
+ " pipx inject specsmith google-generativeai # Gemini\n"
2009
+ " # Ollama: install locally from https://ollama.ai"
2010
2010
  )
2011
2011
  raise SystemExit(1) from None
2012
2012
 
@@ -2027,11 +2027,11 @@ def agent_providers_cmd() -> None:
2027
2027
  icon = "[green]\u2713[/green]" if configured else "[yellow]\u2014[/yellow]"
2028
2028
  console.print(f" {icon} {p['name']:12s} {p['status']}")
2029
2029
 
2030
- console.print("\nInstall providers:")
2031
- console.print(" pip install specsmith[anthropic] # Claude")
2032
- console.print(" pip install specsmith[openai] # GPT/O-series")
2033
- console.print(" pip install specsmith[gemini] # Gemini")
2034
- console.print(" # Ollama: install from https://ollama.ai (no pip extra)")
2030
+ console.print("\nInstall providers (pipx recommended):")
2031
+ console.print(" pipx inject specsmith anthropic # Claude")
2032
+ console.print(" pipx inject specsmith openai # GPT/O-series")
2033
+ console.print(" pipx inject specsmith google-generativeai # Gemini")
2034
+ console.print(" # Ollama: install from https://ollama.ai (no extra needed)")
2035
2035
 
2036
2036
 
2037
2037
  @agent_group.command(name="tools")
@@ -64,7 +64,7 @@ class ProjectType(str, Enum):
64
64
 
65
65
 
66
66
  class Platform(str, Enum):
67
- """Target platforms."""
67
+ """Target platforms (kept for backward compatibility; ProjectConfig now uses list[str])."""
68
68
 
69
69
  WINDOWS = "windows"
70
70
  LINUX = "linux"
@@ -91,9 +91,15 @@ class ProjectConfig(BaseModel):
91
91
  default=ProjectType.CLI_PYTHON.value,
92
92
  description="Project type. Should match a ProjectType value.",
93
93
  )
94
- platforms: list[Platform] = Field(
95
- default=[Platform.WINDOWS, Platform.LINUX, Platform.MACOS],
96
- description="Target platforms",
94
+ # str instead of Platform enum so FPGA/embedded/cloud targets (e.g. 'embedded',
95
+ # 'amd-fpga', 'wasm') don't crash pydantic validation. The Platform enum is kept
96
+ # for backward-compatible imports; use its .value strings as defaults.
97
+ platforms: list[str] = Field(
98
+ default=["windows", "linux", "macos"],
99
+ description=(
100
+ "Target build platforms. Standard: windows, linux, macos. "
101
+ "Domain-specific: embedded, cloud, wasm, amd-fpga, intel-fpga, lattice-fpga, etc."
102
+ ),
97
103
  )
98
104
  language: str = Field(default="python", description="Primary language/runtime")
99
105
  spec_version: str = Field(default="0.3.0", description="Spec version to scaffold from")
@@ -238,7 +244,13 @@ class ProjectConfig(BaseModel):
238
244
  @property
239
245
  def platform_names(self) -> list[str]:
240
246
  """Human-readable platform names."""
241
- return [p.value.capitalize() if p != Platform.MACOS else "macOS" for p in self.platforms]
247
+
248
+ def _label(p: str) -> str:
249
+ if p.lower() == "macos":
250
+ return "macOS"
251
+ return p.replace("-", " ").title()
252
+
253
+ return [_label(str(p)) for p in self.platforms]
242
254
 
243
255
  @property
244
256
  def is_epistemic_type(self) -> bool:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.3.6.dev164
3
+ Version: 0.3.6.dev171
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
@@ -66,6 +66,7 @@ Dynamic: license-file
66
66
  # specsmith
67
67
 
68
68
  [![CI](https://github.com/BitConcepts/specsmith/actions/workflows/ci.yml/badge.svg)](https://github.com/BitConcepts/specsmith/actions/workflows/ci.yml)
69
+ [![Sponsor](https://img.shields.io/badge/sponsor-%E2%9D%A4-ea4aaa?logo=github)](https://github.com/sponsors/BitConcepts)
69
70
  [![Docs](https://readthedocs.org/projects/specsmith/badge/?version=stable)](https://specsmith.readthedocs.io/en/stable/)
70
71
  [![PyPI](https://img.shields.io/pypi/v/specsmith?label=stable&style=flat&color=blue&cacheSeconds=60)](https://pypi.org/project/specsmith/)
71
72
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
@@ -122,7 +123,7 @@ specsmith phase list # list all phases
122
123
  ```
123
124
 
124
125
  The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the VS Code
125
- Governance Panel. Each phase has a checklist of file/command criteria, recommended commands,
126
+ Settings Panel. Each phase has a checklist of file/command criteria, recommended commands,
126
127
  and a readiness percentage.
127
128
 
128
129
  ---
@@ -190,7 +191,7 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
190
191
  ```
191
192
  # Install specsmith first, then:
192
193
  # VS Code: Ctrl+Shift+P → specsmith: New Agent Session
193
- # Governance Panel: Ctrl+Shift+G
194
+ # Settings Panel: Ctrl+Shift+G
194
195
  ```
195
196
 
196
197
  **Key features:**
@@ -211,6 +212,17 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
211
212
 
212
213
  ---
213
214
 
215
+ ## Supporting specsmith
216
+
217
+ If specsmith is saving you time or helping your team ship better software, please consider:
218
+
219
+ - **[Sponsoring BitConcepts](https://github.com/sponsors/BitConcepts)** — directly funds development
220
+ - **Starring** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
221
+ - **Reporting bugs** and **requesting features** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues)
222
+ - **Contributing** — see [CONTRIBUTING.md](CONTRIBUTING.md)
223
+
224
+ ---
225
+
214
226
  ## Ollama — Local LLMs (Zero API Cost)
215
227
 
216
228
  specsmith has first-class Ollama support, including: