specsmith 0.10.1.dev291__tar.gz → 0.10.1.dev293__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 (231) hide show
  1. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/PKG-INFO +1 -1
  2. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/pyproject.toml +1 -1
  3. specsmith-0.10.1.dev293/src/specsmith/esdb/__init__.py +20 -0
  4. specsmith-0.10.1.dev293/src/specsmith/esdb/bridge.py +137 -0
  5. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/governance_logic.py +18 -0
  6. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith.egg-info/PKG-INFO +1 -1
  7. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith.egg-info/SOURCES.txt +2 -0
  8. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/LICENSE +0 -0
  9. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/README.md +0 -0
  10. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/setup.cfg +0 -0
  11. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/__init__.py +0 -0
  12. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/belief.py +0 -0
  13. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/certainty.py +0 -0
  14. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/failure_graph.py +0 -0
  15. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/py.typed +0 -0
  16. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/recovery.py +0 -0
  17. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/session.py +0 -0
  18. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/stress_tester.py +0 -0
  19. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/epistemic/trace.py +0 -0
  20. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/__init__.py +0 -0
  21. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/__main__.py +0 -0
  22. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/__init__.py +0 -0
  23. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/broker.py +0 -0
  24. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/chat_runner.py +0 -0
  25. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/cleanup.py +0 -0
  26. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/core.py +0 -0
  27. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/endpoints.py +0 -0
  28. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/events.py +0 -0
  29. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/execution_profiles.py +0 -0
  30. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/fallback.py +0 -0
  31. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/hf_sync.py +0 -0
  32. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/indexer.py +0 -0
  33. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/mcp.py +0 -0
  34. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/memory.py +0 -0
  35. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/model_intelligence.py +0 -0
  36. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/orchestrator.py +0 -0
  37. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/permissions.py +0 -0
  38. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/profiles.py +0 -0
  39. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/provider_registry.py +0 -0
  40. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/repl.py +0 -0
  41. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/router.py +0 -0
  42. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/rules.py +0 -0
  43. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/runner.py +0 -0
  44. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/safety.py +0 -0
  45. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/spawner.py +0 -0
  46. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/suggester.py +0 -0
  47. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/teams.py +0 -0
  48. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/tools.py +0 -0
  49. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/verifier.py +0 -0
  50. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/agent/voice.py +0 -0
  51. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/architect.py +0 -0
  52. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/auditor.py +0 -0
  53. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/auth.py +0 -0
  54. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/block_export.py +0 -0
  55. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/cli.py +0 -0
  56. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/commands/__init__.py +0 -0
  57. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/commands/intelligence.py +0 -0
  58. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/compliance.py +0 -0
  59. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/compressor.py +0 -0
  60. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/config.py +0 -0
  61. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/console_utils.py +0 -0
  62. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/context_window.py +0 -0
  63. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/credit_analyzer.py +0 -0
  64. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/credits.py +0 -0
  65. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/__init__.py +0 -0
  66. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/base.py +0 -0
  67. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/citations.py +0 -0
  68. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/fpd.py +0 -0
  69. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/odp.py +0 -0
  70. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/patentsview.py +0 -0
  71. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/pfw.py +0 -0
  72. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/ppubs.py +0 -0
  73. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/datasources/ptab.py +0 -0
  74. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/differ.py +0 -0
  75. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/doctor.py +0 -0
  76. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/drive.py +0 -0
  77. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/editor.py +0 -0
  78. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/epistemic/__init__.py +0 -0
  79. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/epistemic/belief.py +0 -0
  80. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/epistemic/certainty.py +0 -0
  81. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/epistemic/failure_graph.py +0 -0
  82. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/epistemic/recovery.py +0 -0
  83. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/epistemic/stress_tester.py +0 -0
  84. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/eval/__init__.py +0 -0
  85. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/eval/builtins.py +0 -0
  86. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/eval/runner.py +0 -0
  87. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/executor.py +0 -0
  88. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/exporter.py +0 -0
  89. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/__init__.py +0 -0
  90. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/app.py +0 -0
  91. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/main_window.py +0 -0
  92. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/session_tab.py +0 -0
  93. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/theme.py +0 -0
  94. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/widgets/__init__.py +0 -0
  95. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/widgets/chat_view.py +0 -0
  96. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/widgets/input_bar.py +0 -0
  97. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/widgets/provider_bar.py +0 -0
  98. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/widgets/token_meter.py +0 -0
  99. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/widgets/tool_panel.py +0 -0
  100. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/widgets/update_checker.py +0 -0
  101. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/gui/worker.py +0 -0
  102. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/history_search.py +0 -0
  103. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/importer.py +0 -0
  104. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/instinct.py +0 -0
  105. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/__init__.py +0 -0
  106. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/agent_skill.py +0 -0
  107. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/aider.py +0 -0
  108. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/base.py +0 -0
  109. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/claude_code.py +0 -0
  110. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/copilot.py +0 -0
  111. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/cursor.py +0 -0
  112. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/gemini.py +0 -0
  113. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/integrations/windsurf.py +0 -0
  114. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/languages.py +0 -0
  115. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/ledger.py +0 -0
  116. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/patent.py +0 -0
  117. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/paths.py +0 -0
  118. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/phase.py +0 -0
  119. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/plugins.py +0 -0
  120. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/profiles.py +0 -0
  121. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/rate_limits.py +0 -0
  122. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/releaser.py +0 -0
  123. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/requirements.py +0 -0
  124. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/requirements_parser.py +0 -0
  125. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/retrieval.py +0 -0
  126. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/safe_write.py +0 -0
  127. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/scaffolder.py +0 -0
  128. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/serve.py +0 -0
  129. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/session.py +0 -0
  130. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/session_init.py +0 -0
  131. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/skills.py +0 -0
  132. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/sync.py +0 -0
  133. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/agents.md.j2 +0 -0
  134. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
  135. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
  136. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/contributing.md.j2 +0 -0
  137. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
  138. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
  139. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/license-MIT.j2 +0 -0
  140. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
  141. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/community/security.md.j2 +0 -0
  142. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
  143. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
  144. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
  145. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
  146. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
  147. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/editorconfig.j2 +0 -0
  148. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/gitattributes.j2 +0 -0
  149. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/gitignore.j2 +0 -0
  150. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/go/go.mod.j2 +0 -0
  151. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/go/main.go.j2 +0 -0
  152. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
  153. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
  154. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
  155. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
  156. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
  157. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
  158. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/roles.md.j2 +0 -0
  159. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/rules.md.j2 +0 -0
  160. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
  161. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
  162. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/governance/verification.md.j2 +0 -0
  163. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/js/package.json.j2 +0 -0
  164. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/ledger.md.j2 +0 -0
  165. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/python/cli.py.j2 +0 -0
  166. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/python/init.py.j2 +0 -0
  167. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
  168. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/readme.md.j2 +0 -0
  169. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
  170. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/rust/main.rs.j2 +0 -0
  171. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
  172. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
  173. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
  174. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
  175. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
  176. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
  177. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
  178. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/tool_installer.py +0 -0
  179. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/toolrules.py +0 -0
  180. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/tools.py +0 -0
  181. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/trace.py +0 -0
  182. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/updater.py +0 -0
  183. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/upgrader.py +0 -0
  184. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/validator.py +0 -0
  185. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/vcs/__init__.py +0 -0
  186. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/vcs/base.py +0 -0
  187. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/vcs/bitbucket.py +0 -0
  188. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/vcs/github.py +0 -0
  189. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/vcs/gitlab.py +0 -0
  190. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/vcs_commands.py +0 -0
  191. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/wireframes.py +0 -0
  192. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith/workspace.py +0 -0
  193. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith.egg-info/dependency_links.txt +0 -0
  194. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith.egg-info/entry_points.txt +0 -0
  195. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith.egg-info/requires.txt +0 -0
  196. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/src/specsmith.egg-info/top_level.txt +0 -0
  197. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_CMD_001.py +0 -0
  198. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_agent_profiles.py +0 -0
  199. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_agent_runner_ready.py +0 -0
  200. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_auditor.py +0 -0
  201. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_chat_diff_decision.py +0 -0
  202. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_chat_runner_openai_compat.py +0 -0
  203. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_chat_stdin_protocol.py +0 -0
  204. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_cli.py +0 -0
  205. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_cli_workflows_history_drive.py +0 -0
  206. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_compliance.py +0 -0
  207. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_compressor.py +0 -0
  208. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_e2e_nexus.py +0 -0
  209. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_endpoints_cli.py +0 -0
  210. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_endpoints_store.py +0 -0
  211. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_epistemic.py +0 -0
  212. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_fallback_chain.py +0 -0
  213. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_importer.py +0 -0
  214. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_integrations.py +0 -0
  215. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_intelligence.py +0 -0
  216. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_mcp_client.py +0 -0
  217. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_new_modules.py +0 -0
  218. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_nexus.py +0 -0
  219. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_permissions.py +0 -0
  220. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_phase1_4_new.py +0 -0
  221. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_phase34_completion.py +0 -0
  222. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_rate_limits.py +0 -0
  223. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_scaffolder.py +0 -0
  224. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_skill_marketplace.py +0 -0
  225. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_smoke.py +0 -0
  226. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_suggester.py +0 -0
  227. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_tools.py +0 -0
  228. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_validator.py +0 -0
  229. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_vcs.py +0 -0
  230. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/tests/test_warp_parity.py +0 -0
  231. {specsmith-0.10.1.dev291 → specsmith-0.10.1.dev293}/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.10.1.dev291
3
+ Version: 0.10.1.dev293
4
4
  Summary: Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands.
5
5
  Author: BitConcepts
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "specsmith"
7
- version = "0.10.1.dev291"
7
+ version = "0.10.1.dev293"
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"
@@ -0,0 +1,20 @@
1
+ # SPDX-License-Identifier: MIT
2
+ # Copyright (c) 2026 Layer1Labs / BitConcepts, LLC.
3
+ """ChronoMemory ESDB Python bridge.
4
+
5
+ Provides a pure-Python adapter for the Rust ESDB engine.
6
+ Until PyO3 bindings are compiled, this module exposes the ESDB
7
+ data model as Python dataclasses that mirror the Rust types.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ __all__ = ["EsdbBridge", "is_esdb_available"]
13
+
14
+
15
+ def is_esdb_available(project_dir: str = ".") -> bool:
16
+ """Check if an ESDB exists for the given project."""
17
+ from pathlib import Path
18
+
19
+ esdb_dir = Path(project_dir).resolve() / ".chronomemory"
20
+ return (esdb_dir / "events.wal").is_file()
@@ -0,0 +1,137 @@
1
+ # SPDX-License-Identifier: MIT
2
+ # Copyright (c) 2026 Layer1Labs / BitConcepts, LLC.
3
+ """ESDB bridge — adapter between .specsmith/ JSON and ESDB concepts.
4
+
5
+ This module provides read-only access to the current .specsmith/ flat JSON
6
+ state through ESDB-compatible query interfaces. It allows specsmith's
7
+ governance logic to work with either backend transparently.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import json
13
+ from dataclasses import dataclass, field
14
+ from pathlib import Path
15
+ from typing import Any
16
+
17
+
18
+ @dataclass
19
+ class EsdbRecord:
20
+ """Python mirror of the Rust Record type."""
21
+
22
+ id: str
23
+ kind: str
24
+ status: str = "active"
25
+ confidence: float = 0.7
26
+ label: str = ""
27
+ data: dict[str, Any] = field(default_factory=dict)
28
+ source_ids: list[str] = field(default_factory=list)
29
+
30
+
31
+ @dataclass
32
+ class EsdbStatus:
33
+ """ESDB health status for the REST API."""
34
+
35
+ available: bool
36
+ backend: str # "esdb" or "json-fallback"
37
+ record_count: int = 0
38
+ wal_seq: int = 0
39
+ epoch: int = 0
40
+ chain_valid: bool = True
41
+
42
+ def to_dict(self) -> dict[str, Any]:
43
+ return {
44
+ "available": self.available,
45
+ "backend": self.backend,
46
+ "record_count": self.record_count,
47
+ "wal_seq": self.wal_seq,
48
+ "epoch": self.epoch,
49
+ "chain_valid": self.chain_valid,
50
+ }
51
+
52
+
53
+ class EsdbBridge:
54
+ """Read-only bridge to .specsmith/ JSON files using ESDB semantics.
55
+
56
+ When the Rust ESDB engine is available (via PyO3 bindings), this
57
+ class delegates to it. Otherwise, it reads the flat JSON files
58
+ directly and presents them through an ESDB-compatible interface.
59
+ """
60
+
61
+ def __init__(self, project_dir: str = ".") -> None:
62
+ self.root = Path(project_dir).resolve()
63
+ self._requirements: list[EsdbRecord] | None = None
64
+ self._testcases: list[EsdbRecord] | None = None
65
+
66
+ def status(self) -> EsdbStatus:
67
+ """Return ESDB status."""
68
+ reqs = self._load_requirements()
69
+ tests = self._load_testcases()
70
+ return EsdbStatus(
71
+ available=True,
72
+ backend="json-fallback",
73
+ record_count=len(reqs) + len(tests),
74
+ )
75
+
76
+ def requirements(self) -> list[EsdbRecord]:
77
+ """Load requirements as ESDB records."""
78
+ return self._load_requirements()
79
+
80
+ def testcases(self) -> list[EsdbRecord]:
81
+ """Load test cases as ESDB records."""
82
+ return self._load_testcases()
83
+
84
+ def record_counts(self) -> dict[str, int]:
85
+ """Record counts by kind (for dashboard)."""
86
+ return {
87
+ "requirements": len(self._load_requirements()),
88
+ "testcases": len(self._load_testcases()),
89
+ }
90
+
91
+ def _load_requirements(self) -> list[EsdbRecord]:
92
+ if self._requirements is not None:
93
+ return self._requirements
94
+ path = self.root / ".specsmith" / "requirements.json"
95
+ if not path.is_file():
96
+ self._requirements = []
97
+ return []
98
+ try:
99
+ raw = json.loads(path.read_text(encoding="utf-8"))
100
+ self._requirements = [
101
+ EsdbRecord(
102
+ id=r.get("id", ""),
103
+ kind="requirement",
104
+ label=r.get("title", ""),
105
+ confidence=float(r.get("confidence", 0.7)),
106
+ data=r,
107
+ )
108
+ for r in raw
109
+ if isinstance(r, dict)
110
+ ]
111
+ except (OSError, ValueError):
112
+ self._requirements = []
113
+ return self._requirements
114
+
115
+ def _load_testcases(self) -> list[EsdbRecord]:
116
+ if self._testcases is not None:
117
+ return self._testcases
118
+ path = self.root / ".specsmith" / "testcases.json"
119
+ if not path.is_file():
120
+ self._testcases = []
121
+ return []
122
+ try:
123
+ raw = json.loads(path.read_text(encoding="utf-8"))
124
+ self._testcases = [
125
+ EsdbRecord(
126
+ id=r.get("id", ""),
127
+ kind="testcase",
128
+ label=r.get("title", ""),
129
+ confidence=float(r.get("confidence", 1.0)),
130
+ data=r,
131
+ )
132
+ for r in raw
133
+ if isinstance(r, dict)
134
+ ]
135
+ except (OSError, ValueError):
136
+ self._testcases = []
137
+ return self._testcases
@@ -614,6 +614,24 @@ class GovernanceHTTPServer:
614
614
  except Exception as exc: # noqa: BLE001
615
615
  self._json_err(str(exc), code=500)
616
616
 
617
+ # ── ESDB ──────────────────────────────────────────────
618
+ elif self.path == "/api/esdb/status":
619
+ try:
620
+ from specsmith.esdb.bridge import EsdbBridge
621
+
622
+ bridge = EsdbBridge(project_dir)
623
+ self._json_ok(bridge.status().to_dict())
624
+ except Exception as exc: # noqa: BLE001
625
+ self._json_err(str(exc), code=500)
626
+ elif self.path == "/api/esdb/counts":
627
+ try:
628
+ from specsmith.esdb.bridge import EsdbBridge
629
+
630
+ bridge = EsdbBridge(project_dir)
631
+ self._json_ok(bridge.record_counts())
632
+ except Exception as exc: # noqa: BLE001
633
+ self._json_err(str(exc), code=500)
634
+
617
635
  # ── Datasources ────────────────────────────────────────
618
636
  elif self.path == "/api/datasources":
619
637
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specsmith
3
- Version: 0.10.1.dev291
3
+ Version: 0.10.1.dev293
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
@@ -115,6 +115,8 @@ src/specsmith/epistemic/certainty.py
115
115
  src/specsmith/epistemic/failure_graph.py
116
116
  src/specsmith/epistemic/recovery.py
117
117
  src/specsmith/epistemic/stress_tester.py
118
+ src/specsmith/esdb/__init__.py
119
+ src/specsmith/esdb/bridge.py
118
120
  src/specsmith/eval/__init__.py
119
121
  src/specsmith/eval/builtins.py
120
122
  src/specsmith/eval/runner.py