specsmith 0.3.6.dev183__tar.gz → 0.3.6.dev186__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.6.dev183/src/specsmith.egg-info → specsmith-0.3.6.dev186}/PKG-INFO +16 -6
  2. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/README.md +15 -5
  3. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/pyproject.toml +1 -1
  4. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/cli.py +42 -0
  5. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/upgrader.py +20 -10
  6. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186/src/specsmith.egg-info}/PKG-INFO +16 -6
  7. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/LICENSE +0 -0
  8. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/setup.cfg +0 -0
  9. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/__init__.py +0 -0
  10. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/belief.py +0 -0
  11. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/certainty.py +0 -0
  12. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/failure_graph.py +0 -0
  13. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/py.typed +0 -0
  14. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/recovery.py +0 -0
  15. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/session.py +0 -0
  16. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/stress_tester.py +0 -0
  17. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/epistemic/trace.py +0 -0
  18. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/__init__.py +0 -0
  19. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/__main__.py +0 -0
  20. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/__init__.py +0 -0
  21. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/core.py +0 -0
  22. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/hooks.py +0 -0
  23. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/optimizer.py +0 -0
  24. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/profiles/epistemic-auditor.md +0 -0
  25. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/profiles/planner.md +0 -0
  26. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/profiles/verifier.md +0 -0
  27. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/providers/__init__.py +0 -0
  28. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/providers/anthropic.py +0 -0
  29. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/providers/gemini.py +0 -0
  30. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/providers/mistral.py +0 -0
  31. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/providers/ollama.py +0 -0
  32. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/providers/openai.py +0 -0
  33. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/runner.py +0 -0
  34. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/skills.py +0 -0
  35. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/agent/tools.py +0 -0
  36. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/architect.py +0 -0
  37. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/auditor.py +0 -0
  38. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/auth.py +0 -0
  39. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/commands/__init__.py +0 -0
  40. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/compressor.py +0 -0
  41. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/config.py +0 -0
  42. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/credit_analyzer.py +0 -0
  43. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/credits.py +0 -0
  44. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/differ.py +0 -0
  45. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/doctor.py +0 -0
  46. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/epistemic/__init__.py +0 -0
  47. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/epistemic/belief.py +0 -0
  48. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/epistemic/certainty.py +0 -0
  49. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/epistemic/failure_graph.py +0 -0
  50. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/epistemic/recovery.py +0 -0
  51. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/epistemic/stress_tester.py +0 -0
  52. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/executor.py +0 -0
  53. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/exporter.py +0 -0
  54. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/__init__.py +0 -0
  55. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/app.py +0 -0
  56. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/main_window.py +0 -0
  57. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/session_tab.py +0 -0
  58. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/theme.py +0 -0
  59. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/widgets/__init__.py +0 -0
  60. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/widgets/chat_view.py +0 -0
  61. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/widgets/input_bar.py +0 -0
  62. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/widgets/provider_bar.py +0 -0
  63. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/widgets/token_meter.py +0 -0
  64. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/widgets/tool_panel.py +0 -0
  65. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/widgets/update_checker.py +0 -0
  66. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/gui/worker.py +0 -0
  67. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/importer.py +0 -0
  68. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/__init__.py +0 -0
  69. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/aider.py +0 -0
  70. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/base.py +0 -0
  71. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/claude_code.py +0 -0
  72. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/copilot.py +0 -0
  73. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/cursor.py +0 -0
  74. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/gemini.py +0 -0
  75. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/warp.py +0 -0
  76. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/integrations/windsurf.py +0 -0
  77. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/languages.py +0 -0
  78. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/ledger.py +0 -0
  79. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/ollama_cmds.py +0 -0
  80. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/patent.py +0 -0
  81. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/phase.py +0 -0
  82. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/plugins.py +0 -0
  83. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/profiles.py +0 -0
  84. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/rate_limits.py +0 -0
  85. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/releaser.py +0 -0
  86. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/requirements.py +0 -0
  87. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/retrieval.py +0 -0
  88. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/scaffolder.py +0 -0
  89. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/session.py +0 -0
  90. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/agents.md.j2 +0 -0
  91. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  92. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  93. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  94. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  95. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  96. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  97. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  98. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/community/security.md.j2 +0 -0
  99. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  100. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  101. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  102. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  103. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  104. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/editorconfig.j2 +0 -0
  105. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/gitattributes.j2 +0 -0
  106. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/gitignore.j2 +0 -0
  107. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/go/go.mod.j2 +0 -0
  108. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/go/main.go.j2 +0 -0
  109. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
  110. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  111. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  112. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
  113. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
  114. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
  115. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  116. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  117. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
  118. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
  119. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  120. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/js/package.json.j2 +0 -0
  121. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/ledger.md.j2 +0 -0
  122. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/python/cli.py.j2 +0 -0
  123. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/python/init.py.j2 +0 -0
  124. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  125. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/readme.md.j2 +0 -0
  126. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  127. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  128. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  129. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  130. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  131. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  132. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  133. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  134. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  135. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/tool_installer.py +0 -0
  136. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/toolrules.py +0 -0
  137. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/tools.py +0 -0
  138. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/trace.py +0 -0
  139. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/updater.py +0 -0
  140. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/validator.py +0 -0
  141. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/vcs/__init__.py +0 -0
  142. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/vcs/base.py +0 -0
  143. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/vcs/bitbucket.py +0 -0
  144. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/vcs/github.py +0 -0
  145. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/vcs/gitlab.py +0 -0
  146. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/vcs_commands.py +0 -0
  147. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/wireframes.py +0 -0
  148. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith/workspace.py +0 -0
  149. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith.egg-info/SOURCES.txt +0 -0
  150. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith.egg-info/dependency_links.txt +0 -0
  151. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith.egg-info/entry_points.txt +0 -0
  152. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith.egg-info/requires.txt +0 -0
  153. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/src/specsmith.egg-info/top_level.txt +0 -0
  154. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_auditor.py +0 -0
  155. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_cli.py +0 -0
  156. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_compressor.py +0 -0
  157. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_epistemic.py +0 -0
  158. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_importer.py +0 -0
  159. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_integrations.py +0 -0
  160. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_optimizer.py +0 -0
  161. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_rate_limits.py +0 -0
  162. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_scaffolder.py +0 -0
  163. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_smoke.py +0 -0
  164. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_tools.py +0 -0
  165. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/tests/test_validator.py +0 -0
  166. {specsmith-0.3.6.dev183 → specsmith-0.3.6.dev186}/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.dev183
3
+ Version: 0.3.6.dev186
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
@@ -224,12 +224,15 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
224
224
 
225
225
  ## Supporting specsmith
226
226
 
227
- If specsmith is saving you time or helping your team ship better software, please consider:
227
+ specsmith is open source and built by a small team. Every bit of support helps:
228
228
 
229
- - **[Sponsoring BitConcepts](https://github.com/sponsors/BitConcepts)** directly funds development
230
- - **Starring** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
231
- - **Reporting bugs** and **requesting features** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues)
232
- - **Contributing** see [CONTRIBUTING.md](CONTRIBUTING.md)
229
+ - **Star** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
230
+ - 📣 **Tell your friends and colleagues** word of mouth is our best marketing
231
+ - 🐛 **Report bugs** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues) — even small ones help
232
+ - 💡 **Suggest features** via [GitHub Discussions](https://github.com/BitConcepts/specsmith/discussions) — we read every suggestion
233
+ - 🔧 **Fix bugs and contribute** — see [CONTRIBUTING.md](CONTRIBUTING.md); PRs welcome
234
+ - 📝 **Write about specsmith** — blog posts, tutorials, and talks help the community grow
235
+ - ❤️ **[Sponsor BitConcepts](https://github.com/sponsors/BitConcepts)** — directly funds development
233
236
 
234
237
  ---
235
238
 
@@ -344,6 +347,13 @@ Use cases: linguistics research, compliance pipelines, AI alignment, patent pros
344
347
 
345
348
  ---
346
349
 
350
+ ## The specsmith Bootstrap
351
+
352
+ specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
353
+ in this repo to check its governance health. This means every feature we add to specsmith is
354
+ immediately dogfooded on specsmith itself. The [VS Code extension](https://github.com/BitConcepts/specsmith-vscode)
355
+ is developed alongside it as the flagship client.
356
+
347
357
  ## Documentation
348
358
 
349
359
  **[specsmith.readthedocs.io](https://specsmith.readthedocs.io)** — Full manual: AEE primer,
@@ -159,12 +159,15 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
159
159
 
160
160
  ## Supporting specsmith
161
161
 
162
- If specsmith is saving you time or helping your team ship better software, please consider:
162
+ specsmith is open source and built by a small team. Every bit of support helps:
163
163
 
164
- - **[Sponsoring BitConcepts](https://github.com/sponsors/BitConcepts)** directly funds development
165
- - **Starring** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
166
- - **Reporting bugs** and **requesting features** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues)
167
- - **Contributing** see [CONTRIBUTING.md](CONTRIBUTING.md)
164
+ - **Star** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
165
+ - 📣 **Tell your friends and colleagues** word of mouth is our best marketing
166
+ - 🐛 **Report bugs** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues) — even small ones help
167
+ - 💡 **Suggest features** via [GitHub Discussions](https://github.com/BitConcepts/specsmith/discussions) — we read every suggestion
168
+ - 🔧 **Fix bugs and contribute** — see [CONTRIBUTING.md](CONTRIBUTING.md); PRs welcome
169
+ - 📝 **Write about specsmith** — blog posts, tutorials, and talks help the community grow
170
+ - ❤️ **[Sponsor BitConcepts](https://github.com/sponsors/BitConcepts)** — directly funds development
168
171
 
169
172
  ---
170
173
 
@@ -279,6 +282,13 @@ Use cases: linguistics research, compliance pipelines, AI alignment, patent pros
279
282
 
280
283
  ---
281
284
 
285
+ ## The specsmith Bootstrap
286
+
287
+ specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
288
+ in this repo to check its governance health. This means every feature we add to specsmith is
289
+ immediately dogfooded on specsmith itself. The [VS Code extension](https://github.com/BitConcepts/specsmith-vscode)
290
+ is developed alongside it as the flagship client.
291
+
282
292
  ## Documentation
283
293
 
284
294
  **[specsmith.readthedocs.io](https://specsmith.readthedocs.io)** — Full manual: AEE primer,
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specsmith"
7
- version = "0.3.6.dev183"
7
+ version = "0.3.6.dev186"
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"
@@ -64,6 +64,7 @@ class _AutoUpdateGroup(click.Group):
64
64
 
65
65
  if not skip:
66
66
  _maybe_prompt_project_update()
67
+ _maybe_notify_pypi_update()
67
68
 
68
69
  return super().invoke(ctx)
69
70
 
@@ -125,6 +126,47 @@ def _maybe_prompt_project_update() -> None:
125
126
  pass # Never break the actual command on version check errors
126
127
 
127
128
 
129
+ def _maybe_notify_pypi_update() -> None:
130
+ """Check PyPI for a newer specsmith version. Prints one-liner if outdated.
131
+
132
+ Runs at most once per shell session (tracked via env var). Uses a 3-second
133
+ timeout to avoid blocking the CLI. Only checks stable versions.
134
+ """
135
+ import os
136
+
137
+ session_key = "SPECSMITH_PYPI_CHECKED"
138
+ if os.environ.get(session_key):
139
+ return
140
+ os.environ[session_key] = "1"
141
+
142
+ try:
143
+ import json as _json # noqa: PLC0415
144
+ from urllib.request import urlopen # noqa: PLC0415
145
+
146
+ resp = urlopen("https://pypi.org/pypi/specsmith/json", timeout=3) # noqa: S310
147
+ data = _json.loads(resp.read())
148
+ latest = data.get("info", {}).get("version", "")
149
+ if not latest:
150
+ return
151
+
152
+ # Simple version comparison: split into tuples of ints
153
+ def _ver(v: str) -> tuple[int, ...]:
154
+ import re
155
+
156
+ clean = re.match(r"(\d+\.\d+\.\d+)", v)
157
+ return tuple(int(x) for x in clean.group(1).split(".")) if clean else (0,)
158
+
159
+ if _ver(latest) > _ver(__version__):
160
+ console.print(
161
+ f" [dim]specsmith [bold]{latest}[/bold] available "
162
+ f"(you have {__version__}). "
163
+ f"Run [bold]specsmith self-update[/bold] or "
164
+ f"[bold]pipx upgrade specsmith[/bold].[/dim]"
165
+ )
166
+ except Exception: # noqa: BLE001
167
+ pass # Never block the CLI on network errors
168
+
169
+
128
170
  @click.group(cls=_AutoUpdateGroup)
129
171
  @click.version_option(version=__version__, prog_name="specsmith")
130
172
  def main() -> None:
@@ -235,17 +235,27 @@ def _sync_full(
235
235
  except ValueError:
236
236
  pass
237
237
 
238
- # 3. VCS CI configs — regenerate
238
+ # 3. VCS CI configs — create only if missing (never overwrite user CI)
239
239
  if config.vcs_platform:
240
- try:
241
- from specsmith.vcs import get_platform
242
-
243
- platform = get_platform(config.vcs_platform)
244
- files = platform.generate_all(config, root)
245
- for f in files:
246
- synced.append(str(f.relative_to(root)))
247
- except ValueError:
248
- pass
240
+ ci_exists = (
241
+ (
242
+ list((root / ".github" / "workflows").glob("*.yml"))
243
+ if (root / ".github" / "workflows").is_dir()
244
+ else []
245
+ )
246
+ or (root / ".gitlab-ci.yml").exists()
247
+ or (root / "bitbucket-pipelines.yml").exists()
248
+ )
249
+ if not ci_exists:
250
+ try:
251
+ from specsmith.vcs import get_platform
252
+
253
+ platform = get_platform(config.vcs_platform)
254
+ files = platform.generate_all(config, root)
255
+ for f in files:
256
+ synced.append(str(f.relative_to(root)) + " (created)")
257
+ except ValueError:
258
+ pass
249
259
 
250
260
  # 4. Community files — create only if missing
251
261
  for tmpl_name, output_rel in _build_community_files(config):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.3.6.dev183
3
+ Version: 0.3.6.dev186
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
@@ -224,12 +224,15 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
224
224
 
225
225
  ## Supporting specsmith
226
226
 
227
- If specsmith is saving you time or helping your team ship better software, please consider:
227
+ specsmith is open source and built by a small team. Every bit of support helps:
228
228
 
229
- - **[Sponsoring BitConcepts](https://github.com/sponsors/BitConcepts)** directly funds development
230
- - **Starring** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
231
- - **Reporting bugs** and **requesting features** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues)
232
- - **Contributing** see [CONTRIBUTING.md](CONTRIBUTING.md)
229
+ - **Star** [specsmith](https://github.com/BitConcepts/specsmith) and [specsmith-vscode](https://github.com/BitConcepts/specsmith-vscode) on GitHub
230
+ - 📣 **Tell your friends and colleagues** word of mouth is our best marketing
231
+ - 🐛 **Report bugs** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues) — even small ones help
232
+ - 💡 **Suggest features** via [GitHub Discussions](https://github.com/BitConcepts/specsmith/discussions) — we read every suggestion
233
+ - 🔧 **Fix bugs and contribute** — see [CONTRIBUTING.md](CONTRIBUTING.md); PRs welcome
234
+ - 📝 **Write about specsmith** — blog posts, tutorials, and talks help the community grow
235
+ - ❤️ **[Sponsor BitConcepts](https://github.com/sponsors/BitConcepts)** — directly funds development
233
236
 
234
237
  ---
235
238
 
@@ -344,6 +347,13 @@ Use cases: linguistics research, compliance pipelines, AI alignment, patent pros
344
347
 
345
348
  ---
346
349
 
350
+ ## The specsmith Bootstrap
351
+
352
+ specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
353
+ in this repo to check its governance health. This means every feature we add to specsmith is
354
+ immediately dogfooded on specsmith itself. The [VS Code extension](https://github.com/BitConcepts/specsmith-vscode)
355
+ is developed alongside it as the flagship client.
356
+
347
357
  ## Documentation
348
358
 
349
359
  **[specsmith.readthedocs.io](https://specsmith.readthedocs.io)** — Full manual: AEE primer,