specsmith 0.11.8.dev487__tar.gz → 0.12.0__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 (289) hide show
  1. {specsmith-0.11.8.dev487/src/specsmith.egg-info → specsmith-0.12.0}/PKG-INFO +55 -2
  2. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/README.md +54 -1
  3. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/pyproject.toml +5 -1
  4. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/cli.py +71 -0
  5. specsmith-0.12.0/src/specsmith/mcp_server.py +618 -0
  6. {specsmith-0.11.8.dev487 → specsmith-0.12.0/src/specsmith.egg-info}/PKG-INFO +55 -2
  7. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith.egg-info/SOURCES.txt +2 -0
  8. specsmith-0.12.0/tests/test_mcp_server.py +461 -0
  9. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/LICENSE +0 -0
  10. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/setup.cfg +0 -0
  11. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/__init__.py +0 -0
  12. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/belief.py +0 -0
  13. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/certainty.py +0 -0
  14. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/failure_graph.py +0 -0
  15. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/py.typed +0 -0
  16. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/recovery.py +0 -0
  17. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/session.py +0 -0
  18. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/stress_tester.py +0 -0
  19. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/epistemic/trace.py +0 -0
  20. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/__init__.py +0 -0
  21. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/__main__.py +0 -0
  22. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/__init__.py +0 -0
  23. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/broker.py +0 -0
  24. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/chat_runner.py +0 -0
  25. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/cleanup.py +0 -0
  26. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/context_seed.py +0 -0
  27. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/core.py +0 -0
  28. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/dispatch/__init__.py +0 -0
  29. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/dispatch/_status.py +0 -0
  30. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/dispatch/dag.py +0 -0
  31. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
  32. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/dispatch/events.py +0 -0
  33. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/dispatch/result.py +0 -0
  34. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/endpoints.py +0 -0
  35. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/events.py +0 -0
  36. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/execution_profiles.py +0 -0
  37. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/fallback.py +0 -0
  38. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/hf_leaderboard.py +0 -0
  39. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/hf_sync.py +0 -0
  40. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/indexer.py +0 -0
  41. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/llm_client.py +0 -0
  42. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/mcp.py +0 -0
  43. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/memory.py +0 -0
  44. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/model_intelligence.py +0 -0
  45. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/model_profiles.py +0 -0
  46. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/orchestrator.py +0 -0
  47. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/permissions.py +0 -0
  48. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/profiles.py +0 -0
  49. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/provider_registry.py +0 -0
  50. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/repl.py +0 -0
  51. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/router.py +0 -0
  52. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/rules.py +0 -0
  53. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/runner.py +0 -0
  54. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/safety.py +0 -0
  55. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/spawner.py +0 -0
  56. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/suggester.py +0 -0
  57. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/teams.py +0 -0
  58. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/tools.py +0 -0
  59. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/verifier.py +0 -0
  60. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/agent/voice.py +0 -0
  61. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/architect.py +0 -0
  62. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/auditor.py +0 -0
  63. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/auth.py +0 -0
  64. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/block_export.py +0 -0
  65. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/channel.py +0 -0
  66. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/ci_manager.py +0 -0
  67. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/commands/__init__.py +0 -0
  68. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/commands/intelligence.py +0 -0
  69. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/compliance/__init__.py +0 -0
  70. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/compliance/_compat.py +0 -0
  71. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/compliance/checker.py +0 -0
  72. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/compliance/evidence.py +0 -0
  73. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/compliance/regulations.py +0 -0
  74. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/compliance/reporter.py +0 -0
  75. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/compressor.py +0 -0
  76. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/config.py +0 -0
  77. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/console_utils.py +0 -0
  78. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/context_orchestrator.py +0 -0
  79. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/context_window.py +0 -0
  80. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/credit_analyzer.py +0 -0
  81. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/credits.py +0 -0
  82. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/__init__.py +0 -0
  83. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/base.py +0 -0
  84. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/citations.py +0 -0
  85. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/fpd.py +0 -0
  86. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/odp.py +0 -0
  87. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/patentsview.py +0 -0
  88. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/pfw.py +0 -0
  89. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/ppubs.py +0 -0
  90. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/datasources/ptab.py +0 -0
  91. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/differ.py +0 -0
  92. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/doctor.py +0 -0
  93. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/drive.py +0 -0
  94. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/editor.py +0 -0
  95. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/epistemic/__init__.py +0 -0
  96. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/epistemic/belief.py +0 -0
  97. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/epistemic/certainty.py +0 -0
  98. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/epistemic/failure_graph.py +0 -0
  99. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/epistemic/recovery.py +0 -0
  100. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/epistemic/stress_tester.py +0 -0
  101. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/esdb/__init__.py +0 -0
  102. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/esdb/bridge.py +0 -0
  103. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/eval/__init__.py +0 -0
  104. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/eval/builtins.py +0 -0
  105. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/eval/runner.py +0 -0
  106. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/executor.py +0 -0
  107. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/exporter.py +0 -0
  108. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/governance_logic.py +0 -0
  109. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/governance_store.py +0 -0
  110. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/governance_yaml.py +0 -0
  111. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/__init__.py +0 -0
  112. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/app.py +0 -0
  113. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/main_window.py +0 -0
  114. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/session_tab.py +0 -0
  115. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/theme.py +0 -0
  116. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/widgets/__init__.py +0 -0
  117. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/widgets/chat_view.py +0 -0
  118. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/widgets/input_bar.py +0 -0
  119. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/widgets/provider_bar.py +0 -0
  120. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/widgets/token_meter.py +0 -0
  121. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/widgets/tool_panel.py +0 -0
  122. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/widgets/update_checker.py +0 -0
  123. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/gui/worker.py +0 -0
  124. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/history_search.py +0 -0
  125. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/importer.py +0 -0
  126. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/instinct.py +0 -0
  127. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/__init__.py +0 -0
  128. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/agent_skill.py +0 -0
  129. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/aider.py +0 -0
  130. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/base.py +0 -0
  131. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/claude_code.py +0 -0
  132. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/codity.py +0 -0
  133. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/copilot.py +0 -0
  134. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/cursor.py +0 -0
  135. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/gemini.py +0 -0
  136. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/integrations/windsurf.py +0 -0
  137. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/issue_reporter.py +0 -0
  138. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/languages.py +0 -0
  139. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/ledger.py +0 -0
  140. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/mcp_generator.py +0 -0
  141. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/__init__.py +0 -0
  142. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
  143. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/m002_agents_slim.py +0 -0
  144. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/m003_compliance_init.py +0 -0
  145. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
  146. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
  147. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/m006_session_governance.py +0 -0
  148. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/migrations/runner.py +0 -0
  149. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/ollama_cmds.py +0 -0
  150. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/patent.py +0 -0
  151. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/paths.py +0 -0
  152. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/phase.py +0 -0
  153. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/plugins.py +0 -0
  154. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/profiles.py +0 -0
  155. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/rate_limits.py +0 -0
  156. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/releaser.py +0 -0
  157. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/requirements.py +0 -0
  158. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/requirements_parser.py +0 -0
  159. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/retrieval.py +0 -0
  160. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/safe_write.py +0 -0
  161. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/scaffolder.py +0 -0
  162. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/serve.py +0 -0
  163. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/session.py +0 -0
  164. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/session_init.py +0 -0
  165. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/session_store.py +0 -0
  166. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/__init__.py +0 -0
  167. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/cloud.py +0 -0
  168. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/corporate.py +0 -0
  169. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/cross_platform.py +0 -0
  170. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/devops.py +0 -0
  171. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/docs.py +0 -0
  172. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/embedded.py +0 -0
  173. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/governance.py +0 -0
  174. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/hardware.py +0 -0
  175. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/mobile.py +0 -0
  176. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/productivity.py +0 -0
  177. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/specsmith_skills.py +0 -0
  178. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills/ssh.py +0 -0
  179. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/skills_builder.py +0 -0
  180. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/sync.py +0 -0
  181. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/agents.md.j2 +0 -0
  182. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  183. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  184. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  185. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  186. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  187. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  188. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  189. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/community/security.md.j2 +0 -0
  190. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  191. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  192. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  193. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  194. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  195. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/editorconfig.j2 +0 -0
  196. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/gitattributes.j2 +0 -0
  197. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/gitignore.j2 +0 -0
  198. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/go/go.mod.j2 +0 -0
  199. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/go/main.go.j2 +0 -0
  200. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
  201. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  202. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  203. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
  204. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
  205. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
  206. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  207. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  208. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
  209. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
  210. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  211. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/js/package.json.j2 +0 -0
  212. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/ledger.md.j2 +0 -0
  213. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/python/cli.py.j2 +0 -0
  214. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/python/init.py.j2 +0 -0
  215. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  216. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/readme.md.j2 +0 -0
  217. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  218. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  219. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  220. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  221. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  222. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  223. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  224. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  225. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  226. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/tool_installer.py +0 -0
  227. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/toolrules.py +0 -0
  228. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/tools.py +0 -0
  229. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/trace.py +0 -0
  230. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/updater.py +0 -0
  231. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/upgrader.py +0 -0
  232. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/validator.py +0 -0
  233. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/vcs/__init__.py +0 -0
  234. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/vcs/base.py +0 -0
  235. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/vcs/bitbucket.py +0 -0
  236. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/vcs/github.py +0 -0
  237. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/vcs/gitlab.py +0 -0
  238. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/vcs_commands.py +0 -0
  239. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/wireframes.py +0 -0
  240. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith/workspace.py +0 -0
  241. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith.egg-info/dependency_links.txt +0 -0
  242. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith.egg-info/entry_points.txt +0 -0
  243. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith.egg-info/requires.txt +0 -0
  244. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/src/specsmith.egg-info/top_level.txt +0 -0
  245. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_CMD_001.py +0 -0
  246. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_agent_profiles.py +0 -0
  247. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_agent_run_feedback.py +0 -0
  248. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_agent_runner_ready.py +0 -0
  249. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_ai_client.py +0 -0
  250. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_ai_intelligence.py +0 -0
  251. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_auditor.py +0 -0
  252. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_channel.py +0 -0
  253. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_chat_diff_decision.py +0 -0
  254. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_chat_runner_openai_compat.py +0 -0
  255. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_chat_stdin_protocol.py +0 -0
  256. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_cli.py +0 -0
  257. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_cli_workflows_history_drive.py +0 -0
  258. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_compliance.py +0 -0
  259. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_compressor.py +0 -0
  260. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_dispatch.py +0 -0
  261. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_e2e_nexus.py +0 -0
  262. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_endpoints_cli.py +0 -0
  263. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_endpoints_store.py +0 -0
  264. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_epistemic.py +0 -0
  265. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_fallback_chain.py +0 -0
  266. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_importer.py +0 -0
  267. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_integrations.py +0 -0
  268. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_integrations_codity.py +0 -0
  269. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_intelligence.py +0 -0
  270. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_issue_reporter.py +0 -0
  271. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_mcp_client.py +0 -0
  272. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_new_modules.py +0 -0
  273. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_nexus.py +0 -0
  274. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_permissions.py +0 -0
  275. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_phase1_4_new.py +0 -0
  276. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_phase34_completion.py +0 -0
  277. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_rate_limits.py +0 -0
  278. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_req_248_262.py +0 -0
  279. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_req_358_359.py +0 -0
  280. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_scaffolder.py +0 -0
  281. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_skill_marketplace.py +0 -0
  282. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_skills_mcp.py +0 -0
  283. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_smoke.py +0 -0
  284. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_suggester.py +0 -0
  285. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_tools.py +0 -0
  286. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_validator.py +0 -0
  287. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_vcs.py +0 -0
  288. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_warp_parity.py +0 -0
  289. {specsmith-0.11.8.dev487 → specsmith-0.12.0}/tests/test_warp_parity_followup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.11.8.dev487
3
+ Version: 0.12.0
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
@@ -87,7 +87,7 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
87
87
  epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
88
88
  cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
89
89
 
90
- **v0.11.4Codity.ai AI code review integration, 70 built-in skills, EU AI Act / NIST AI RMF compliance, context window management, and governance tools panel.**
90
+ **v0.12.0Native Warp/Oz MCP governance server, repository workflows, 72 built-in skills, EU AI Act / NIST AI RMF compliance, multi-agent DAG dispatch, and context window management.**
91
91
  Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
92
92
  and the NIST AI Risk Management Framework 1.0. Every agent action is cryptographically sealed,
93
93
  every AI-generated output is disclosed, context windows are GPU-aware and protected against
@@ -994,6 +994,59 @@ oz agent run-cloud --skill "layer1labs/specsmith:specsmith-save" --prompt "save
994
994
 
995
995
  ---
996
996
 
997
+ ## Warp Terminal Integration (v0.12.0)
998
+
999
+ specsmith ships native integration with [Warp](https://www.warp.dev) terminal — both as
1000
+ an MCP server and as repository workflows.
1001
+
1002
+ ### Native MCP Governance Server
1003
+
1004
+ `specsmith mcp serve` starts a zero-dependency stdio MCP server (JSON-RPC 2.0, MCP 2024-11-05).
1005
+ Warp/Oz, Cursor, Claude Code, or any other MCP client can call governance commands as structured
1006
+ tool calls — no shell roundtrip, fully typed inputs and outputs.
1007
+
1008
+ **Setup (one time):**
1009
+
1010
+ ```bash
1011
+ # Get the Warp config snippet
1012
+ specsmith mcp install-warp
1013
+ ```
1014
+
1015
+ Copy the output JSON into **Warp Settings → Agents → MCP servers**. Or pass it inline:
1016
+
1017
+ ```bash
1018
+ oz agent run --mcp '{"specsmith-governance": {"command": "specsmith", "args": ["mcp", "serve"]}}' \
1019
+ --prompt "check governance health and preflight my next change"
1020
+ ```
1021
+
1022
+ **Six MCP tools exposed:**
1023
+
1024
+ | Tool | What it returns |
1025
+ |---|---|
1026
+ | `governance_audit` | Full audit health JSON — passed/failed checks, fixable count |
1027
+ | `governance_checkpoint` | GOVERNANCE ANCHOR snapshot — phase, health, REQ/TEST counts, ESDB chain |
1028
+ | `governance_preflight` | Preflight decision — `accepted`/`needs_clarification` + `work_item_id` |
1029
+ | `governance_phase` | Current AEE phase, readiness %, failing checks |
1030
+ | `governance_req_list` | All requirements with status + test coverage, filterable |
1031
+ | `governance_trace_seal` | Create a cryptographic trace vault seal |
1032
+
1033
+ ### Repository Workflows (Ctrl+Shift+R)
1034
+
1035
+ Clone this repo and open it in Warp — seven governance workflows appear automatically in
1036
+ `Ctrl+Shift+R` search:
1037
+
1038
+ | Workflow | Command |
1039
+ |---|---|
1040
+ | specsmith — Session Start | Full bootstrap: kill → migrate → audit → sync → checkpoint |
1041
+ | specsmith — Audit | `specsmith audit` |
1042
+ | specsmith — Checkpoint | `specsmith checkpoint` (emits GOVERNANCE ANCHOR) |
1043
+ | specsmith — Preflight | `specsmith preflight "{{intent}}" --json` |
1044
+ | specsmith — Save | `specsmith save` |
1045
+ | specsmith — Phase Status | `specsmith phase show` |
1046
+ | specsmith — Session End | `specsmith save && specsmith kill-session` |
1047
+
1048
+ ---
1049
+
997
1050
  ## The specsmith Bootstrap
998
1051
 
999
1052
  specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
@@ -15,7 +15,7 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
15
15
  epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
16
16
  cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
17
17
 
18
- **v0.11.4Codity.ai AI code review integration, 70 built-in skills, EU AI Act / NIST AI RMF compliance, context window management, and governance tools panel.**
18
+ **v0.12.0Native Warp/Oz MCP governance server, repository workflows, 72 built-in skills, EU AI Act / NIST AI RMF compliance, multi-agent DAG dispatch, and context window management.**
19
19
  Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
20
20
  and the NIST AI Risk Management Framework 1.0. Every agent action is cryptographically sealed,
21
21
  every AI-generated output is disclosed, context windows are GPU-aware and protected against
@@ -922,6 +922,59 @@ oz agent run-cloud --skill "layer1labs/specsmith:specsmith-save" --prompt "save
922
922
 
923
923
  ---
924
924
 
925
+ ## Warp Terminal Integration (v0.12.0)
926
+
927
+ specsmith ships native integration with [Warp](https://www.warp.dev) terminal — both as
928
+ an MCP server and as repository workflows.
929
+
930
+ ### Native MCP Governance Server
931
+
932
+ `specsmith mcp serve` starts a zero-dependency stdio MCP server (JSON-RPC 2.0, MCP 2024-11-05).
933
+ Warp/Oz, Cursor, Claude Code, or any other MCP client can call governance commands as structured
934
+ tool calls — no shell roundtrip, fully typed inputs and outputs.
935
+
936
+ **Setup (one time):**
937
+
938
+ ```bash
939
+ # Get the Warp config snippet
940
+ specsmith mcp install-warp
941
+ ```
942
+
943
+ Copy the output JSON into **Warp Settings → Agents → MCP servers**. Or pass it inline:
944
+
945
+ ```bash
946
+ oz agent run --mcp '{"specsmith-governance": {"command": "specsmith", "args": ["mcp", "serve"]}}' \
947
+ --prompt "check governance health and preflight my next change"
948
+ ```
949
+
950
+ **Six MCP tools exposed:**
951
+
952
+ | Tool | What it returns |
953
+ |---|---|
954
+ | `governance_audit` | Full audit health JSON — passed/failed checks, fixable count |
955
+ | `governance_checkpoint` | GOVERNANCE ANCHOR snapshot — phase, health, REQ/TEST counts, ESDB chain |
956
+ | `governance_preflight` | Preflight decision — `accepted`/`needs_clarification` + `work_item_id` |
957
+ | `governance_phase` | Current AEE phase, readiness %, failing checks |
958
+ | `governance_req_list` | All requirements with status + test coverage, filterable |
959
+ | `governance_trace_seal` | Create a cryptographic trace vault seal |
960
+
961
+ ### Repository Workflows (Ctrl+Shift+R)
962
+
963
+ Clone this repo and open it in Warp — seven governance workflows appear automatically in
964
+ `Ctrl+Shift+R` search:
965
+
966
+ | Workflow | Command |
967
+ |---|---|
968
+ | specsmith — Session Start | Full bootstrap: kill → migrate → audit → sync → checkpoint |
969
+ | specsmith — Audit | `specsmith audit` |
970
+ | specsmith — Checkpoint | `specsmith checkpoint` (emits GOVERNANCE ANCHOR) |
971
+ | specsmith — Preflight | `specsmith preflight "{{intent}}" --json` |
972
+ | specsmith — Save | `specsmith save` |
973
+ | specsmith — Phase Status | `specsmith phase show` |
974
+ | specsmith — Session End | `specsmith save && specsmith kill-session` |
975
+
976
+ ---
977
+
925
978
  ## The specsmith Bootstrap
926
979
 
927
980
  specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specsmith"
7
- version = "0.11.8.dev487"
7
+ version = "0.12.0"
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"
@@ -129,6 +129,8 @@ select = ["E", "F", "W", "I", "UP", "B", "SIM"]
129
129
  "src/specsmith/context_orchestrator.py" = ["E501"]
130
130
  # Skills module: skill body strings contain markdown content with long lines
131
131
  "src/specsmith/skills/*.py" = ["E501"]
132
+ # MCP server module: tool schema description strings are long but cannot be split
133
+ "src/specsmith/mcp_server.py" = ["E501"]
132
134
  # Migration files: rule description strings and template content
133
135
  "src/specsmith/migrations/m001_governance_yaml.py" = ["E501"]
134
136
  "src/specsmith/migrations/m004_ledger_esdb.py" = ["E501"]
@@ -220,6 +222,8 @@ module = [
220
222
  "specsmith.ci_manager",
221
223
  "specsmith.context_orchestrator",
222
224
  "specsmith.session_store",
225
+ # MCP server: lazy in-function imports and dynamic Any patterns
226
+ "specsmith.mcp_server",
223
227
  ]
224
228
  ignore_errors = true
225
229
 
@@ -9019,6 +9019,77 @@ def mcp_list_cmd(project_dir: str, as_json: bool) -> None:
9019
9019
  console.print(f" [dim]{s['description']}[/dim]")
9020
9020
 
9021
9021
 
9022
+ @mcp_group.command(name="serve")
9023
+ @click.option("--project-dir", type=click.Path(), default=".", show_default=True)
9024
+ def mcp_serve_cmd(project_dir: str) -> None:
9025
+ """Start the native governance MCP stdio server (REQ-363).
9026
+
9027
+ Implements MCP 2024-11-05 over stdin/stdout (JSON-RPC 2.0).
9028
+ Exposes six governance tools to any MCP client:
9029
+
9030
+ \b
9031
+ governance_audit Run governance audit
9032
+ governance_checkpoint Emit GOVERNANCE ANCHOR JSON
9033
+ governance_preflight Preflight a change intent
9034
+ governance_phase Current AEE phase + readiness %
9035
+ governance_req_list List all requirements
9036
+ governance_trace_seal Seal a milestone/decision
9037
+
9038
+ \b
9039
+ Warp config (Settings → Agents → MCP servers)::
9040
+
9041
+ {"specsmith-governance": {"command": "specsmith", "args": ["mcp", "serve"]}}
9042
+
9043
+ \b
9044
+ Or pass inline to oz (use ``specsmith mcp install-warp`` for the full snippet)::
9045
+
9046
+ oz agent run --mcp "$(specsmith mcp install-warp --json)" --prompt "..."
9047
+ """
9048
+ from specsmith.mcp_server import run_server
9049
+
9050
+ run_server(project_dir=project_dir)
9051
+
9052
+
9053
+ @mcp_group.command(name="install-warp")
9054
+ @click.option("--project-dir", type=click.Path(), default=".", show_default=True)
9055
+ @click.option("--json", "as_json", is_flag=True, default=False, help="Emit JSON config only.")
9056
+ def mcp_install_warp_cmd(project_dir: str, as_json: bool) -> None:
9057
+ """Print the Warp MCP config snippet for the governance server (REQ-363).
9058
+
9059
+ Copy the output into Warp Settings → Agents → MCP servers, or pass it
9060
+ to ``oz agent run --mcp '<json>'`` for a one-off cloud agent run.
9061
+ """
9062
+ import json as _json
9063
+ import os
9064
+ import sys
9065
+
9066
+ config = {
9067
+ "specsmith-governance": {
9068
+ "command": (
9069
+ sys.executable if os.environ.get("SPECSMITH_ALLOW_NON_PIPX") else "specsmith"
9070
+ ),
9071
+ "args": ["mcp", "serve", "--project-dir", str(Path(project_dir).resolve())],
9072
+ }
9073
+ }
9074
+
9075
+ if as_json:
9076
+ click.echo(_json.dumps(config, indent=2))
9077
+ return
9078
+
9079
+ console.print("[bold green]specsmith Governance MCP Server[/bold green]\n")
9080
+ console.print(
9081
+ "Add the following to [bold]Warp Settings → Agents → MCP servers[/bold],\n"
9082
+ "or pass inline to [bold]oz agent run --mcp '<json>'[/bold]:\n"
9083
+ )
9084
+ console.print(_json.dumps(config, indent=2))
9085
+ console.print(
9086
+ "\n[dim]After adding, Warp/Oz can call governance_audit, governance_preflight,\n"
9087
+ "governance_checkpoint, governance_phase, governance_req_list, and\n"
9088
+ "governance_trace_seal as structured MCP tool calls.\n"
9089
+ "\nVerify with: specsmith mcp serve (then send an initialize message).[/dim]"
9090
+ )
9091
+
9092
+
9022
9093
  main.add_command(mcp_group)
9023
9094
 
9024
9095