specsmith 0.13.0.dev506__tar.gz → 0.13.0.dev517__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 (300) hide show
  1. {specsmith-0.13.0.dev506/src/specsmith.egg-info → specsmith-0.13.0.dev517}/PKG-INFO +53 -70
  2. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/README.md +45 -68
  3. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/pyproject.toml +18 -3
  4. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/cli.py +234 -68
  5. specsmith-0.13.0.dev517/src/specsmith/esdb/__init__.py +191 -0
  6. specsmith-0.13.0.dev517/src/specsmith/esdb/_license.py +226 -0
  7. specsmith-0.13.0.dev517/src/specsmith/esdb/bridge.py +63 -0
  8. specsmith-0.13.0.dev517/src/specsmith/esdb/sqlite_store.py +360 -0
  9. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/mcp_server.py +74 -31
  10. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/governance.py +299 -3
  11. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517/src/specsmith.egg-info}/PKG-INFO +53 -70
  12. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith.egg-info/SOURCES.txt +4 -0
  13. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith.egg-info/requires.txt +8 -0
  14. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_dispatch.py +3 -1
  15. specsmith-0.13.0.dev517/tests/test_esdb_license.py +261 -0
  16. specsmith-0.13.0.dev517/tests/test_esdb_sqlite.py +278 -0
  17. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_mcp_server.py +89 -0
  18. specsmith-0.13.0.dev506/src/specsmith/esdb/__init__.py +0 -110
  19. specsmith-0.13.0.dev506/src/specsmith/esdb/bridge.py +0 -28
  20. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/LICENSE +0 -0
  21. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/setup.cfg +0 -0
  22. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/__init__.py +0 -0
  23. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/belief.py +0 -0
  24. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/certainty.py +0 -0
  25. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/failure_graph.py +0 -0
  26. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/py.typed +0 -0
  27. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/recovery.py +0 -0
  28. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/session.py +0 -0
  29. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/stress_tester.py +0 -0
  30. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/epistemic/trace.py +0 -0
  31. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/__init__.py +0 -0
  32. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/__main__.py +0 -0
  33. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/__init__.py +0 -0
  34. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/broker.py +0 -0
  35. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/chat_runner.py +0 -0
  36. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/cleanup.py +0 -0
  37. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/context_seed.py +0 -0
  38. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/core.py +0 -0
  39. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/dispatch/__init__.py +0 -0
  40. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/dispatch/_status.py +0 -0
  41. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/dispatch/dag.py +0 -0
  42. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
  43. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/dispatch/events.py +0 -0
  44. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/dispatch/result.py +0 -0
  45. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/endpoints.py +0 -0
  46. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/events.py +0 -0
  47. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/execution_profiles.py +0 -0
  48. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/fallback.py +0 -0
  49. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/hf_leaderboard.py +0 -0
  50. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/hf_sync.py +0 -0
  51. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/indexer.py +0 -0
  52. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/llm_client.py +0 -0
  53. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/mcp.py +0 -0
  54. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/memory.py +0 -0
  55. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/model_intelligence.py +0 -0
  56. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/model_profiles.py +0 -0
  57. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/orchestrator.py +0 -0
  58. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/permissions.py +0 -0
  59. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/profiles.py +0 -0
  60. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/provider_registry.py +0 -0
  61. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/repl.py +0 -0
  62. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/router.py +0 -0
  63. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/rules.py +0 -0
  64. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/runner.py +0 -0
  65. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/safety.py +0 -0
  66. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/spawner.py +0 -0
  67. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/suggester.py +0 -0
  68. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/teams.py +0 -0
  69. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/tools.py +0 -0
  70. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/verifier.py +0 -0
  71. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/agent/voice.py +0 -0
  72. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/architect.py +0 -0
  73. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/auditor.py +0 -0
  74. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/auth.py +0 -0
  75. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/block_export.py +0 -0
  76. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/channel.py +0 -0
  77. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/ci_manager.py +0 -0
  78. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/commands/__init__.py +0 -0
  79. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/commands/intelligence.py +0 -0
  80. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/compliance/__init__.py +0 -0
  81. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/compliance/_compat.py +0 -0
  82. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/compliance/checker.py +0 -0
  83. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/compliance/evidence.py +0 -0
  84. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/compliance/regulations.py +0 -0
  85. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/compliance/reporter.py +0 -0
  86. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/compressor.py +0 -0
  87. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/config.py +0 -0
  88. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/console_utils.py +0 -0
  89. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/context_orchestrator.py +0 -0
  90. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/context_window.py +0 -0
  91. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/credit_analyzer.py +0 -0
  92. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/credits.py +0 -0
  93. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/__init__.py +0 -0
  94. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/base.py +0 -0
  95. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/citations.py +0 -0
  96. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/fpd.py +0 -0
  97. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/odp.py +0 -0
  98. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/patentsview.py +0 -0
  99. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/pfw.py +0 -0
  100. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/ppubs.py +0 -0
  101. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/datasources/ptab.py +0 -0
  102. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/differ.py +0 -0
  103. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/doctor.py +0 -0
  104. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/drive.py +0 -0
  105. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/editor.py +0 -0
  106. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/epistemic/__init__.py +0 -0
  107. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/epistemic/belief.py +0 -0
  108. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/epistemic/certainty.py +0 -0
  109. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/epistemic/failure_graph.py +0 -0
  110. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/epistemic/recovery.py +0 -0
  111. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/epistemic/stress_tester.py +0 -0
  112. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/eval/__init__.py +0 -0
  113. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/eval/builtins.py +0 -0
  114. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/eval/runner.py +0 -0
  115. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/executor.py +0 -0
  116. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/exporter.py +0 -0
  117. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/governance_logic.py +0 -0
  118. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/governance_store.py +0 -0
  119. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/governance_yaml.py +0 -0
  120. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/__init__.py +0 -0
  121. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/app.py +0 -0
  122. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/main_window.py +0 -0
  123. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/session_tab.py +0 -0
  124. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/theme.py +0 -0
  125. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/widgets/__init__.py +0 -0
  126. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/widgets/chat_view.py +0 -0
  127. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/widgets/input_bar.py +0 -0
  128. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/widgets/provider_bar.py +0 -0
  129. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/widgets/token_meter.py +0 -0
  130. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/widgets/tool_panel.py +0 -0
  131. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/widgets/update_checker.py +0 -0
  132. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/gui/worker.py +0 -0
  133. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/history_search.py +0 -0
  134. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/importer.py +0 -0
  135. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/instinct.py +0 -0
  136. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/__init__.py +0 -0
  137. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/agent_skill.py +0 -0
  138. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/aider.py +0 -0
  139. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/base.py +0 -0
  140. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/claude_code.py +0 -0
  141. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/codity.py +0 -0
  142. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/copilot.py +0 -0
  143. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/cursor.py +0 -0
  144. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/gemini.py +0 -0
  145. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/integrations/windsurf.py +0 -0
  146. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/issue_reporter.py +0 -0
  147. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/languages.py +0 -0
  148. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/ledger.py +0 -0
  149. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/mcp_generator.py +0 -0
  150. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/__init__.py +0 -0
  151. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
  152. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/m002_agents_slim.py +0 -0
  153. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/m003_compliance_init.py +0 -0
  154. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
  155. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
  156. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/m006_session_governance.py +0 -0
  157. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/migrations/runner.py +0 -0
  158. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/ollama_cmds.py +0 -0
  159. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/patent.py +0 -0
  160. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/paths.py +0 -0
  161. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/phase.py +0 -0
  162. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/plugins.py +0 -0
  163. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/profiles.py +0 -0
  164. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/rate_limits.py +0 -0
  165. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/releaser.py +0 -0
  166. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/requirements.py +0 -0
  167. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/requirements_parser.py +0 -0
  168. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/retrieval.py +0 -0
  169. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/safe_write.py +0 -0
  170. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/scaffolder.py +0 -0
  171. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/serve.py +0 -0
  172. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/session.py +0 -0
  173. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/session_init.py +0 -0
  174. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/session_store.py +0 -0
  175. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/__init__.py +0 -0
  176. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/ai_agents.py +0 -0
  177. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/cloud.py +0 -0
  178. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/corporate.py +0 -0
  179. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/cross_platform.py +0 -0
  180. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/data_engineering.py +0 -0
  181. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/devops.py +0 -0
  182. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/docs.py +0 -0
  183. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/embedded.py +0 -0
  184. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/hardware.py +0 -0
  185. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/mobile.py +0 -0
  186. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/platform_engineering.py +0 -0
  187. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/productivity.py +0 -0
  188. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/software_engineering.py +0 -0
  189. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/specsmith_skills.py +0 -0
  190. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/ssh.py +0 -0
  191. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills/web_backend.py +0 -0
  192. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/skills_builder.py +0 -0
  193. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/sync.py +0 -0
  194. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/agents.md.j2 +0 -0
  195. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  196. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  197. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  198. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  199. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  200. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  201. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  202. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/community/security.md.j2 +0 -0
  203. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  204. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  205. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  206. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  207. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  208. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/editorconfig.j2 +0 -0
  209. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/gitattributes.j2 +0 -0
  210. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/gitignore.j2 +0 -0
  211. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/go/go.mod.j2 +0 -0
  212. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/go/main.go.j2 +0 -0
  213. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
  214. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  215. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  216. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
  217. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
  218. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
  219. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  220. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  221. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
  222. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
  223. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  224. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/js/package.json.j2 +0 -0
  225. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/ledger.md.j2 +0 -0
  226. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/python/cli.py.j2 +0 -0
  227. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/python/init.py.j2 +0 -0
  228. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  229. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/readme.md.j2 +0 -0
  230. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  231. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  232. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  233. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  234. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  235. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  236. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  237. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  238. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  239. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/tool_installer.py +0 -0
  240. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/toolrules.py +0 -0
  241. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/tools.py +0 -0
  242. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/trace.py +0 -0
  243. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/updater.py +0 -0
  244. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/upgrader.py +0 -0
  245. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/validator.py +0 -0
  246. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/vcs/__init__.py +0 -0
  247. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/vcs/base.py +0 -0
  248. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/vcs/bitbucket.py +0 -0
  249. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/vcs/github.py +0 -0
  250. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/vcs/gitlab.py +0 -0
  251. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/vcs_commands.py +0 -0
  252. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/wireframes.py +0 -0
  253. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith/workspace.py +0 -0
  254. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith.egg-info/dependency_links.txt +0 -0
  255. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith.egg-info/entry_points.txt +0 -0
  256. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/src/specsmith.egg-info/top_level.txt +0 -0
  257. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_CMD_001.py +0 -0
  258. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_agent_profiles.py +0 -0
  259. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_agent_run_feedback.py +0 -0
  260. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_agent_runner_ready.py +0 -0
  261. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_ai_client.py +0 -0
  262. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_ai_intelligence.py +0 -0
  263. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_auditor.py +0 -0
  264. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_channel.py +0 -0
  265. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_chat_diff_decision.py +0 -0
  266. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_chat_runner_openai_compat.py +0 -0
  267. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_chat_stdin_protocol.py +0 -0
  268. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_cli.py +0 -0
  269. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_cli_workflows_history_drive.py +0 -0
  270. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_compliance.py +0 -0
  271. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_compressor.py +0 -0
  272. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_e2e_nexus.py +0 -0
  273. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_endpoints_cli.py +0 -0
  274. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_endpoints_store.py +0 -0
  275. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_epistemic.py +0 -0
  276. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_fallback_chain.py +0 -0
  277. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_importer.py +0 -0
  278. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_integrations.py +0 -0
  279. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_integrations_codity.py +0 -0
  280. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_intelligence.py +0 -0
  281. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_issue_reporter.py +0 -0
  282. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_mcp_client.py +0 -0
  283. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_new_modules.py +0 -0
  284. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_nexus.py +0 -0
  285. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_permissions.py +0 -0
  286. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_phase1_4_new.py +0 -0
  287. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_phase34_completion.py +0 -0
  288. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_rate_limits.py +0 -0
  289. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_req_248_262.py +0 -0
  290. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_req_358_359.py +0 -0
  291. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_scaffolder.py +0 -0
  292. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_skill_marketplace.py +0 -0
  293. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_skills_mcp.py +0 -0
  294. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_smoke.py +0 -0
  295. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_suggester.py +0 -0
  296. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_tools.py +0 -0
  297. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_validator.py +0 -0
  298. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_vcs.py +0 -0
  299. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_warp_parity.py +0 -0
  300. {specsmith-0.13.0.dev506 → specsmith-0.13.0.dev517}/tests/test_warp_parity_followup.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.13.0.dev506
4
- Summary: Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands.
3
+ Version: 0.13.0.dev517
4
+ Summary: AEE governance toolkit for AI-assisted development session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider.
5
5
  Author: BitConcepts
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/BitConcepts/specsmith
@@ -38,6 +38,10 @@ Requires-Dist: ruff>=0.4; extra == "dev"
38
38
  Requires-Dist: mypy>=1.10; extra == "dev"
39
39
  Requires-Dist: pre-commit>=3.0; extra == "dev"
40
40
  Requires-Dist: types-pyyaml>=6.0; extra == "dev"
41
+ Requires-Dist: cryptography>=42.0; extra == "dev"
42
+ Provides-Extra: esdb
43
+ Requires-Dist: chronomemory>=0.1.2; extra == "esdb"
44
+ Requires-Dist: cryptography>=42.0; extra == "esdb"
41
45
  Provides-Extra: docs
42
46
  Requires-Dist: mkdocs>=1.6; extra == "docs"
43
47
  Requires-Dist: mkdocs-material>=9.5; extra == "docs"
@@ -68,6 +72,8 @@ Requires-Dist: pytest>=7.0; extra == "all"
68
72
  Requires-Dist: pytest-cov>=4.0; extra == "all"
69
73
  Requires-Dist: ruff>=0.4; extra == "all"
70
74
  Requires-Dist: mypy>=1.10; extra == "all"
75
+ Provides-Extra: license-verify
76
+ Requires-Dist: cryptography>=42.0; extra == "license-verify"
71
77
  Dynamic: license-file
72
78
 
73
79
  # specsmith
@@ -88,14 +94,13 @@ epistemically-governed projects, stress-tests requirements as BeliefArtifacts, r
88
94
  cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
89
95
 
90
96
  **v0.13.0 — 16 new project types (LLM apps, MCP servers, Kubernetes operators, game dev, Web3, desktop, JVM and more), 131 built-in skills across 16 domains, EU AI Act / NIST AI RMF compliance, native Warp/Oz MCP governance server, multi-agent DAG dispatch, and context window management.**
91
- Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
97
+ specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
92
98
  and the NIST AI Risk Management Framework 1.0. Every agent action is cryptographically sealed,
93
99
  every AI-generated output is disclosed, context windows are GPU-aware and protected against
94
- overflow, and a dedicated governance tools panel in Kairos surfaces compliance settings
95
- per-session and per-project.
100
+ overflow, and compliance settings are configurable per-session and per-project.
96
101
 
97
102
  ```bash
98
- specsmith governance-serve --port 7700 # Kairos governance REST API
103
+ specsmith governance-serve --port 7700 # governance REST API
99
104
  specsmith sync # sync YAML → JSON → MD (YAML-first mode)
100
105
  specsmith generate docs # regenerate REQUIREMENTS.md + TESTS.md from YAML
101
106
  specsmith validate --strict # YAML schema checks: dup IDs, orphans, coverage
@@ -134,6 +139,10 @@ from epistemic import AEESession # works in any Python 3.10+ project
134
139
  from epistemic import BeliefArtifact, StressTester, CertaintyEngine
135
140
  ```
136
141
 
142
+ > **Library vs CLI:** The `specsmith` CLI requires pipx for isolation. The `epistemic` library
143
+ > (and `specsmith.esdb`) work in any venv — `pip install specsmith` is all you need for
144
+ > library-only use. The pipx guard only fires on CLI invocations.
145
+
137
146
  ---
138
147
 
139
148
  ## What is Applied Epistemic Engineering?
@@ -168,15 +177,14 @@ specsmith phase set requirements # jump to a specific phase
168
177
  specsmith phase list # list all phases
169
178
  ```
170
179
 
171
- The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the
172
- Kairos Governance page. Each phase has a checklist of file/command criteria, recommended
173
- commands, and a readiness percentage.
180
+ The current phase is persisted in `scaffold.yml` as `aee_phase`. Each phase has a checklist
181
+ of file/command criteria, recommended commands, and a readiness percentage.
174
182
 
175
183
  ---
176
184
 
177
185
  ## Install
178
186
 
179
- **Recommended — via pipx (works with Kairos, any terminal, and CI):**
187
+ **Recommended — via pipx (CLI + CI):**
180
188
 
181
189
  ```bash
182
190
  pipx install specsmith # core CLI + epistemic library
@@ -185,15 +193,30 @@ pipx inject specsmith openai # + GPT / O-series support
185
193
  pipx inject specsmith google-generativeai # + Gemini support
186
194
  ```
187
195
 
188
- **Or with pip:**
196
+ **Library-only use (venv / conda / any Python environment):**
197
+
198
+ ```bash
199
+ pip install specsmith # epistemic library + SQLite ESDB — no pipx needed
200
+ ```
201
+
202
+ This makes `from epistemic import AEESession` and `from specsmith.esdb import SqliteStore`
203
+ immediately importable. The pipx isolation guard only applies to the `specsmith` CLI
204
+ command — not to library imports. Use this when you want the AEE belief-state machinery
205
+ in your own application without managing a pipx environment.
206
+
207
+ **ESDB ChronoStore (commercial, requires license):**
189
208
 
190
209
  ```bash
191
- pip install specsmith # core
192
- pip install "specsmith[anthropic]" # + Claude
193
- pip install "specsmith[openai]" # + GPT/O-series
194
- pip install "specsmith[gemini]" # + Gemini
210
+ pip install "specsmith[esdb]" # + chronomemory from PyPI (commercial — requires license key)
211
+ specsmith esdb enable --key-file /path/to/your.esdb.key
212
+ specsmith esdb status # confirms ChronoStore is active
195
213
  ```
196
214
 
215
+ The default ESDB backend is SQLite (free, MIT, no license needed). ChronoStore
216
+ (tamper-evident WAL, OEA fields, Rust acceleration) is a commercial add-on.
217
+ Contact [licensing@layer1labs.com](mailto:licensing@layer1labs.com) to obtain a license.
218
+ See [ESDB docs](https://specsmith.readthedocs.io/esdb) for a full feature comparison.
219
+
197
220
  **Update:**
198
221
 
199
222
  ```bash
@@ -374,7 +397,7 @@ any response is returned to the client.
374
397
 
375
398
  When an action's confidence is below the escalation threshold, specsmith sets
376
399
  `escalation_required: true` and includes an `escalation_reason` in the preflight payload.
377
- Kairos surfaces this as a confirmation dialog before execution proceeds.
400
+ AI clients that support MCP will surface this via the `governance_preflight` tool response.
378
401
 
379
402
  ```bash
380
403
  specsmith preflight "deploy to production" --escalate-threshold 0.85 --json
@@ -385,8 +408,8 @@ This implements **EU AI Act Art. 14** (human oversight) and **NIST AI RMF MANAGE
385
408
 
386
409
  #### 4. Kill-Switch — Immediate Session Termination (REQ-210)
387
410
 
388
- A `kill-session` CLI command and keyboard shortcut (surfaced in Kairos) immediately
389
- terminates all active agent sessions and records a timestamped kill event in `LEDGER.md`:
411
+ A `kill-session` CLI command immediately terminates all active agent sessions and records
412
+ a timestamped kill event in `LEDGER.md`:
390
413
 
391
414
  ```bash
392
415
  specsmith kill-session # terminate all sessions, log kill event
@@ -449,12 +472,11 @@ Compliance settings are layered:
449
472
 
450
473
  1. **Global defaults** — `~/.specsmith/config.yml` (user-level defaults)
451
474
  2. **Per-project policy** — `.specsmith/config.yml` (committed to the repo)
452
- 3. **Per-session overrides** — Kairos Governance panel or CLI flags
475
+ 3. **Per-session overrides** — CLI flags
453
476
 
454
- The Kairos **Governance Tools Panel** (Settings Governance) exposes all compliance
455
- controls in a live UI: escalation threshold, permission profile, kill-switch, audit log
456
- viewer, and context window settings. Changes take effect immediately for the active
457
- session and can optionally be written back to the per-project `.specsmith/config.yml`.
477
+ Compliance controls include: escalation threshold, permission profile, kill-switch, and
478
+ context window settings. Changes take effect immediately and can optionally be written back
479
+ to the per-project `.specsmith/config.yml`.
458
480
 
459
481
  ---
460
482
 
@@ -483,15 +505,14 @@ Override via `SPECSMITH_OLLAMA_CONTEXT_LENGTH` or `ollama.context_length` in `.s
483
505
 
484
506
  ### Live Context Fill Indicator (REQ-245)
485
507
 
486
- The context fill tracker emits real-time JSONL events consumed by Kairos:
508
+ The context fill tracker emits real-time JSONL events:
487
509
 
488
510
  ```jsonl
489
511
  {"type": "context_fill", "used": 27500, "limit": 32768, "pct": 83.9}
490
512
  ```
491
513
 
492
- Kairos displays a compact fill bar in the agent footer. When fill reaches the
493
- compression threshold (default 80%), specsmith signals that context summarization
494
- should run before the next turn.
514
+ When fill reaches the compression threshold (default 80%), specsmith signals that context
515
+ summarization should run before the next turn.
495
516
 
496
517
  ### Auto Context Compression (REQ-246)
497
518
 
@@ -517,14 +538,10 @@ request cannot be processed. This is a safety invariant, not a configuration opt
517
538
 
518
539
  ---
519
540
 
520
- ## Kairos + Governance REST API
521
-
522
- **Kairos** is the companion Rust terminal runtime (`BitConcepts/kairos`). specsmith
523
- acts as the governance backend: Kairos spawns `specsmith governance-serve` at startup
524
- and routes all preflight and verify calls through it.
541
+ ## Governance REST API
525
542
 
526
543
  ```bash
527
- # Start the governance REST API (Kairos calls this automatically)
544
+ # Start the governance REST API (for MCP clients and IDE integrations)
528
545
  specsmith governance-serve --port 7700 --project-dir .
529
546
 
530
547
  # Classify a natural-language utterance under Specsmith governance
@@ -658,13 +675,6 @@ specsmith agent suggest-profiles --json # structured suggestions with bucket
658
675
  Suggestions are read-only (never persisted) and inspect `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`,
659
676
  `GOOGLE_API_KEY`, and local Ollama availability.
660
677
 
661
- ### Kairos AI Providers — Bucket Score Columns (REQ-281)
662
-
663
- The Kairos **Agents > AI Providers** table gained three new columns — **R** (reasoning),
664
- **C** (conversational), **L** (longform) — showing each provider's HF bucket scores inline.
665
- A **Sync Scores** button triggers a background sync from the HF leaderboard without
666
- interrupting the active session.
667
-
668
678
  ---
669
679
 
670
680
  ## Multi-Agent DAG Dispatcher (REQ-321..334)
@@ -714,7 +724,6 @@ print(f"{len(summary.completed)} completed, {len(summary.failed)} failed")
714
724
  ```
715
725
 
716
726
  Events are persisted to `.specsmith/dispatch/<dag_id>/events.jsonl` for resume and replay.
717
- Kairos renders the live dispatch view — see `app/` for build instructions.
718
727
 
719
728
  ---
720
729
 
@@ -752,35 +761,11 @@ result = run_vsg("rtl/top.vhd", rules="vsg_rules.yaml")
752
761
 
753
762
  ---
754
763
 
755
- ## Kairos — Flagship Terminal Client
756
-
757
- **[Kairos](https://github.com/layer1labs/kairos)** is the recommended terminal client for specsmith.
758
- Kairos spawns specsmith as a managed governance child process at startup and routes all
759
- preflight, verify, and BYOE proxy calls through it. The Governance settings page shows live
760
- specsmith status, version, and one-click update.
761
-
762
- ```bash
763
- # Kairos starts specsmith automatically; or run manually:
764
- specsmith governance-serve --port 7700 --project-dir .
765
- ```
766
-
767
- The Kairos **Dispatch Panel** (`app/` — Rust, egui/eframe) renders the multi-agent DAG live:
768
- - SVG DAG graph with nodes coloured by status (grey/blue/green/red/amber)
769
- - Gantt timeline strip showing parallelism
770
- - Per-node Retry (FAILED/BLOCKED) and Abort (RUNNING) buttons
771
- - Subscribes to `GET /api/dispatch/events?dag_id=` SSE from `specsmith serve`
772
-
773
- Build Kairos dispatch panel: `cd app && cargo build --release`
774
-
775
- Use `pipx install specsmith` for standalone CLI usage from any terminal.
776
-
777
- ---
778
-
779
764
  ## Supporting specsmith
780
765
 
781
766
  specsmith is open source and built by a small team. Every bit of support helps:
782
767
 
783
- - ⭐ **Star** [specsmith](https://github.com/layer1labs/specsmith) and [kairos](https://github.com/layer1labs/kairos) on GitHub
768
+ - ⭐ **Star** [specsmith](https://github.com/layer1labs/specsmith) on GitHub
784
769
  - 📣 **Tell your friends and colleagues** — word of mouth is our best marketing
785
770
  - 🐛 **Report bugs** via [GitHub Issues](https://github.com/layer1labs/specsmith/issues) — even small ones help
786
771
  - 💡 **Suggest features** via [GitHub Discussions](https://github.com/layer1labs/specsmith/discussions) — we read every suggestion
@@ -1088,20 +1073,18 @@ Clone this repo and open it in Warp — seven governance workflows appear automa
1088
1073
 
1089
1074
  specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
1090
1075
  in this repo to check its governance health. This means every feature we add to specsmith is
1091
- immediately dogfooded on specsmith itself. [Kairos](https://github.com/layer1labs/kairos)
1092
- is the companion terminal and flagship client.
1076
+ immediately dogfooded on specsmith itself.
1093
1077
 
1094
1078
  ## Documentation
1095
1079
 
1096
1080
  **[specsmith.readthedocs.io](https://specsmith.readthedocs.io)** — Full manual: AEE primer,
1097
- command reference, project types, tool registry, governance model, Ollama guide, Kairos integration.
1081
+ command reference, project types, tool registry, governance model, ESDB, skills integrations, Ollama guide.
1098
1082
 
1099
1083
  ## Links
1100
1084
 
1101
1085
  - [PyPI](https://pypi.org/project/specsmith/)
1102
1086
  - [Documentation](https://specsmith.readthedocs.io)
1103
1087
  - [Changelog](CHANGELOG.md)
1104
- - [Kairos terminal client](https://github.com/layer1labs/kairos)
1105
1088
  - [Contributing](CONTRIBUTING.md)
1106
1089
  - [Security](SECURITY.md)
1107
1090
 
@@ -16,14 +16,13 @@ epistemically-governed projects, stress-tests requirements as BeliefArtifacts, r
16
16
  cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
17
17
 
18
18
  **v0.13.0 — 16 new project types (LLM apps, MCP servers, Kubernetes operators, game dev, Web3, desktop, JVM and more), 131 built-in skills across 16 domains, EU AI Act / NIST AI RMF compliance, native Warp/Oz MCP governance server, multi-agent DAG dispatch, and context window management.**
19
- Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
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
22
- overflow, and a dedicated governance tools panel in Kairos surfaces compliance settings
23
- per-session and per-project.
22
+ overflow, and compliance settings are configurable per-session and per-project.
24
23
 
25
24
  ```bash
26
- specsmith governance-serve --port 7700 # Kairos governance REST API
25
+ specsmith governance-serve --port 7700 # governance REST API
27
26
  specsmith sync # sync YAML → JSON → MD (YAML-first mode)
28
27
  specsmith generate docs # regenerate REQUIREMENTS.md + TESTS.md from YAML
29
28
  specsmith validate --strict # YAML schema checks: dup IDs, orphans, coverage
@@ -62,6 +61,10 @@ from epistemic import AEESession # works in any Python 3.10+ project
62
61
  from epistemic import BeliefArtifact, StressTester, CertaintyEngine
63
62
  ```
64
63
 
64
+ > **Library vs CLI:** The `specsmith` CLI requires pipx for isolation. The `epistemic` library
65
+ > (and `specsmith.esdb`) work in any venv — `pip install specsmith` is all you need for
66
+ > library-only use. The pipx guard only fires on CLI invocations.
67
+
65
68
  ---
66
69
 
67
70
  ## What is Applied Epistemic Engineering?
@@ -96,15 +99,14 @@ specsmith phase set requirements # jump to a specific phase
96
99
  specsmith phase list # list all phases
97
100
  ```
98
101
 
99
- The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the
100
- Kairos Governance page. Each phase has a checklist of file/command criteria, recommended
101
- commands, and a readiness percentage.
102
+ The current phase is persisted in `scaffold.yml` as `aee_phase`. Each phase has a checklist
103
+ of file/command criteria, recommended commands, and a readiness percentage.
102
104
 
103
105
  ---
104
106
 
105
107
  ## Install
106
108
 
107
- **Recommended — via pipx (works with Kairos, any terminal, and CI):**
109
+ **Recommended — via pipx (CLI + CI):**
108
110
 
109
111
  ```bash
110
112
  pipx install specsmith # core CLI + epistemic library
@@ -113,15 +115,30 @@ pipx inject specsmith openai # + GPT / O-series support
113
115
  pipx inject specsmith google-generativeai # + Gemini support
114
116
  ```
115
117
 
116
- **Or with pip:**
118
+ **Library-only use (venv / conda / any Python environment):**
119
+
120
+ ```bash
121
+ pip install specsmith # epistemic library + SQLite ESDB — no pipx needed
122
+ ```
123
+
124
+ This makes `from epistemic import AEESession` and `from specsmith.esdb import SqliteStore`
125
+ immediately importable. The pipx isolation guard only applies to the `specsmith` CLI
126
+ command — not to library imports. Use this when you want the AEE belief-state machinery
127
+ in your own application without managing a pipx environment.
128
+
129
+ **ESDB ChronoStore (commercial, requires license):**
117
130
 
118
131
  ```bash
119
- pip install specsmith # core
120
- pip install "specsmith[anthropic]" # + Claude
121
- pip install "specsmith[openai]" # + GPT/O-series
122
- pip install "specsmith[gemini]" # + Gemini
132
+ pip install "specsmith[esdb]" # + chronomemory from PyPI (commercial — requires license key)
133
+ specsmith esdb enable --key-file /path/to/your.esdb.key
134
+ specsmith esdb status # confirms ChronoStore is active
123
135
  ```
124
136
 
137
+ The default ESDB backend is SQLite (free, MIT, no license needed). ChronoStore
138
+ (tamper-evident WAL, OEA fields, Rust acceleration) is a commercial add-on.
139
+ Contact [licensing@layer1labs.com](mailto:licensing@layer1labs.com) to obtain a license.
140
+ See [ESDB docs](https://specsmith.readthedocs.io/esdb) for a full feature comparison.
141
+
125
142
  **Update:**
126
143
 
127
144
  ```bash
@@ -302,7 +319,7 @@ any response is returned to the client.
302
319
 
303
320
  When an action's confidence is below the escalation threshold, specsmith sets
304
321
  `escalation_required: true` and includes an `escalation_reason` in the preflight payload.
305
- Kairos surfaces this as a confirmation dialog before execution proceeds.
322
+ AI clients that support MCP will surface this via the `governance_preflight` tool response.
306
323
 
307
324
  ```bash
308
325
  specsmith preflight "deploy to production" --escalate-threshold 0.85 --json
@@ -313,8 +330,8 @@ This implements **EU AI Act Art. 14** (human oversight) and **NIST AI RMF MANAGE
313
330
 
314
331
  #### 4. Kill-Switch — Immediate Session Termination (REQ-210)
315
332
 
316
- A `kill-session` CLI command and keyboard shortcut (surfaced in Kairos) immediately
317
- terminates all active agent sessions and records a timestamped kill event in `LEDGER.md`:
333
+ A `kill-session` CLI command immediately terminates all active agent sessions and records
334
+ a timestamped kill event in `LEDGER.md`:
318
335
 
319
336
  ```bash
320
337
  specsmith kill-session # terminate all sessions, log kill event
@@ -377,12 +394,11 @@ Compliance settings are layered:
377
394
 
378
395
  1. **Global defaults** — `~/.specsmith/config.yml` (user-level defaults)
379
396
  2. **Per-project policy** — `.specsmith/config.yml` (committed to the repo)
380
- 3. **Per-session overrides** — Kairos Governance panel or CLI flags
397
+ 3. **Per-session overrides** — CLI flags
381
398
 
382
- The Kairos **Governance Tools Panel** (Settings Governance) exposes all compliance
383
- controls in a live UI: escalation threshold, permission profile, kill-switch, audit log
384
- viewer, and context window settings. Changes take effect immediately for the active
385
- session and can optionally be written back to the per-project `.specsmith/config.yml`.
399
+ Compliance controls include: escalation threshold, permission profile, kill-switch, and
400
+ context window settings. Changes take effect immediately and can optionally be written back
401
+ to the per-project `.specsmith/config.yml`.
386
402
 
387
403
  ---
388
404
 
@@ -411,15 +427,14 @@ Override via `SPECSMITH_OLLAMA_CONTEXT_LENGTH` or `ollama.context_length` in `.s
411
427
 
412
428
  ### Live Context Fill Indicator (REQ-245)
413
429
 
414
- The context fill tracker emits real-time JSONL events consumed by Kairos:
430
+ The context fill tracker emits real-time JSONL events:
415
431
 
416
432
  ```jsonl
417
433
  {"type": "context_fill", "used": 27500, "limit": 32768, "pct": 83.9}
418
434
  ```
419
435
 
420
- Kairos displays a compact fill bar in the agent footer. When fill reaches the
421
- compression threshold (default 80%), specsmith signals that context summarization
422
- should run before the next turn.
436
+ When fill reaches the compression threshold (default 80%), specsmith signals that context
437
+ summarization should run before the next turn.
423
438
 
424
439
  ### Auto Context Compression (REQ-246)
425
440
 
@@ -445,14 +460,10 @@ request cannot be processed. This is a safety invariant, not a configuration opt
445
460
 
446
461
  ---
447
462
 
448
- ## Kairos + Governance REST API
449
-
450
- **Kairos** is the companion Rust terminal runtime (`BitConcepts/kairos`). specsmith
451
- acts as the governance backend: Kairos spawns `specsmith governance-serve` at startup
452
- and routes all preflight and verify calls through it.
463
+ ## Governance REST API
453
464
 
454
465
  ```bash
455
- # Start the governance REST API (Kairos calls this automatically)
466
+ # Start the governance REST API (for MCP clients and IDE integrations)
456
467
  specsmith governance-serve --port 7700 --project-dir .
457
468
 
458
469
  # Classify a natural-language utterance under Specsmith governance
@@ -586,13 +597,6 @@ specsmith agent suggest-profiles --json # structured suggestions with bucket
586
597
  Suggestions are read-only (never persisted) and inspect `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`,
587
598
  `GOOGLE_API_KEY`, and local Ollama availability.
588
599
 
589
- ### Kairos AI Providers — Bucket Score Columns (REQ-281)
590
-
591
- The Kairos **Agents > AI Providers** table gained three new columns — **R** (reasoning),
592
- **C** (conversational), **L** (longform) — showing each provider's HF bucket scores inline.
593
- A **Sync Scores** button triggers a background sync from the HF leaderboard without
594
- interrupting the active session.
595
-
596
600
  ---
597
601
 
598
602
  ## Multi-Agent DAG Dispatcher (REQ-321..334)
@@ -642,7 +646,6 @@ print(f"{len(summary.completed)} completed, {len(summary.failed)} failed")
642
646
  ```
643
647
 
644
648
  Events are persisted to `.specsmith/dispatch/<dag_id>/events.jsonl` for resume and replay.
645
- Kairos renders the live dispatch view — see `app/` for build instructions.
646
649
 
647
650
  ---
648
651
 
@@ -680,35 +683,11 @@ result = run_vsg("rtl/top.vhd", rules="vsg_rules.yaml")
680
683
 
681
684
  ---
682
685
 
683
- ## Kairos — Flagship Terminal Client
684
-
685
- **[Kairos](https://github.com/layer1labs/kairos)** is the recommended terminal client for specsmith.
686
- Kairos spawns specsmith as a managed governance child process at startup and routes all
687
- preflight, verify, and BYOE proxy calls through it. The Governance settings page shows live
688
- specsmith status, version, and one-click update.
689
-
690
- ```bash
691
- # Kairos starts specsmith automatically; or run manually:
692
- specsmith governance-serve --port 7700 --project-dir .
693
- ```
694
-
695
- The Kairos **Dispatch Panel** (`app/` — Rust, egui/eframe) renders the multi-agent DAG live:
696
- - SVG DAG graph with nodes coloured by status (grey/blue/green/red/amber)
697
- - Gantt timeline strip showing parallelism
698
- - Per-node Retry (FAILED/BLOCKED) and Abort (RUNNING) buttons
699
- - Subscribes to `GET /api/dispatch/events?dag_id=` SSE from `specsmith serve`
700
-
701
- Build Kairos dispatch panel: `cd app && cargo build --release`
702
-
703
- Use `pipx install specsmith` for standalone CLI usage from any terminal.
704
-
705
- ---
706
-
707
686
  ## Supporting specsmith
708
687
 
709
688
  specsmith is open source and built by a small team. Every bit of support helps:
710
689
 
711
- - ⭐ **Star** [specsmith](https://github.com/layer1labs/specsmith) and [kairos](https://github.com/layer1labs/kairos) on GitHub
690
+ - ⭐ **Star** [specsmith](https://github.com/layer1labs/specsmith) on GitHub
712
691
  - 📣 **Tell your friends and colleagues** — word of mouth is our best marketing
713
692
  - 🐛 **Report bugs** via [GitHub Issues](https://github.com/layer1labs/specsmith/issues) — even small ones help
714
693
  - 💡 **Suggest features** via [GitHub Discussions](https://github.com/layer1labs/specsmith/discussions) — we read every suggestion
@@ -1016,20 +995,18 @@ Clone this repo and open it in Warp — seven governance workflows appear automa
1016
995
 
1017
996
  specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
1018
997
  in this repo to check its governance health. This means every feature we add to specsmith is
1019
- immediately dogfooded on specsmith itself. [Kairos](https://github.com/layer1labs/kairos)
1020
- is the companion terminal and flagship client.
998
+ immediately dogfooded on specsmith itself.
1021
999
 
1022
1000
  ## Documentation
1023
1001
 
1024
1002
  **[specsmith.readthedocs.io](https://specsmith.readthedocs.io)** — Full manual: AEE primer,
1025
- command reference, project types, tool registry, governance model, Ollama guide, Kairos integration.
1003
+ command reference, project types, tool registry, governance model, ESDB, skills integrations, Ollama guide.
1026
1004
 
1027
1005
  ## Links
1028
1006
 
1029
1007
  - [PyPI](https://pypi.org/project/specsmith/)
1030
1008
  - [Documentation](https://specsmith.readthedocs.io)
1031
1009
  - [Changelog](CHANGELOG.md)
1032
- - [Kairos terminal client](https://github.com/layer1labs/kairos)
1033
1010
  - [Contributing](CONTRIBUTING.md)
1034
1011
  - [Security](SECURITY.md)
1035
1012
 
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specsmith"
7
- version = "0.13.0.dev506"
8
- description = "Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands."
7
+ version = "0.13.0.dev517"
8
+ description = "AEE governance toolkit for AI-assisted development session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider."
9
9
  readme = "README.md"
10
10
  license = "MIT"
11
11
  requires-python = ">=3.10"
@@ -41,6 +41,9 @@ dependencies = [
41
41
  "pyyaml>=6.0",
42
42
  "pydantic>=2.0",
43
43
  "rich>=13.0",
44
+ # chronomemory is now an OPTIONAL commercial dep (specsmith[esdb]).
45
+ # The free SQLite backend is built-in and requires no extra install.
46
+ # To unlock ChronoStore: pip install specsmith[esdb] + specsmith esdb enable
44
47
  ]
45
48
 
46
49
  [project.optional-dependencies]
@@ -51,6 +54,14 @@ dev = [
51
54
  "mypy>=1.10",
52
55
  "pre-commit>=3.0",
53
56
  "types-pyyaml>=6.0",
57
+ "cryptography>=42.0", # needed for test_esdb_license.py signing helpers
58
+ ]
59
+ # ESDB commercial backend — requires a valid license from licensing@layer1labs.com
60
+ # Install: pip install specsmith[esdb]
61
+ # Activate: specsmith esdb enable --key-file /path/to/your.esdb.key
62
+ esdb = [
63
+ "chronomemory>=0.1.2", # proprietary commercial — see chronomemory LICENSE
64
+ "cryptography>=42.0",
54
65
  ]
55
66
  docs = [
56
67
  "mkdocs>=1.6",
@@ -74,7 +85,7 @@ history-semantic = ["sentence-transformers>=2.2", "numpy>=1.24"]
74
85
  voice = ["whisper-cpp-python>=0.2"]
75
86
  # Install all optional LLM providers
76
87
  agent = ["anthropic>=0.56", "openai>=1.0"]
77
- # Convenience bundle: everything
88
+ # Convenience bundle: everything EXCEPT esdb (commercial license required separately)
78
89
  all = [
79
90
  "anthropic>=0.56",
80
91
  "openai>=1.0",
@@ -83,6 +94,8 @@ all = [
83
94
  "ruff>=0.4",
84
95
  "mypy>=1.10",
85
96
  ]
97
+ # cryptography for license verification (usable without full esdb extra)
98
+ license-verify = ["cryptography>=42.0"]
86
99
 
87
100
  [project.scripts]
88
101
  specsmith = "specsmith.cli:main"
@@ -227,7 +240,9 @@ module = [
227
240
  # ESDB package: conditional chronomemory stubs in except ImportError branch
228
241
  # produce type[_Stub] vs type[ChronoRecord] assignment errors that are
229
242
  # correct at runtime but cannot be expressed statically without TYPE_CHECKING.
243
+ # specsmith.esdb.* covers bridge.py and _license.py sub-modules too.
230
244
  "specsmith.esdb",
245
+ "specsmith.esdb.*",
231
246
  ]
232
247
  ignore_errors = true
233
248