specsmith 0.10.1.dev262__tar.gz → 0.10.1.dev277__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.
- {specsmith-0.10.1.dev262/src/specsmith.egg-info → specsmith-0.10.1.dev277}/PKG-INFO +90 -93
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/README.md +89 -86
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/pyproject.toml +2 -12
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/chat_runner.py +50 -208
- specsmith-0.10.1.dev277/src/specsmith/agent/execution_profiles.py +274 -0
- specsmith-0.10.1.dev277/src/specsmith/agent/model_intelligence.py +293 -0
- specsmith-0.10.1.dev277/src/specsmith/agent/permissions.py +278 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/profiles.py +36 -0
- specsmith-0.10.1.dev277/src/specsmith/agent/provider_registry.py +366 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/repl.py +33 -11
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/runner.py +57 -10
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/tools.py +154 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/auditor.py +46 -4
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/cli.py +678 -248
- {specsmith-0.10.1.dev262/src/specsmith/tui/screens → specsmith-0.10.1.dev277/src/specsmith/commands}/__init__.py +1 -1
- specsmith-0.10.1.dev277/src/specsmith/commands/intelligence.py +292 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/compressor.py +10 -5
- specsmith-0.10.1.dev277/src/specsmith/datasources/__init__.py +14 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/base.py +141 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/citations.py +83 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/fpd.py +72 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/odp.py +75 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/patentsview.py +272 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/pfw.py +81 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/ppubs.py +111 -0
- specsmith-0.10.1.dev277/src/specsmith/datasources/ptab.py +126 -0
- specsmith-0.10.1.dev277/src/specsmith/editor.py +277 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/epistemic/belief.py +101 -26
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/exporter.py +39 -3
- specsmith-0.10.1.dev277/src/specsmith/governance_logic.py +589 -0
- specsmith-0.10.1.dev277/src/specsmith/instinct.py +330 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/ledger.py +14 -8
- specsmith-0.10.1.dev277/src/specsmith/paths.py +152 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/phase.py +111 -37
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/requirements.py +61 -17
- specsmith-0.10.1.dev277/src/specsmith/safe_write.py +188 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/scaffolder.py +3 -0
- specsmith-0.10.1.dev277/src/specsmith/sync.py +286 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/upgrader.py +15 -7
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277/src/specsmith.egg-info}/PKG-INFO +90 -93
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith.egg-info/SOURCES.txt +20 -37
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith.egg-info/requires.txt +0 -8
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_auditor.py +5 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_nexus.py +14 -4
- specsmith-0.10.1.dev277/tests/test_permissions.py +448 -0
- specsmith-0.10.1.dev262/src/specsmith/commands/__init__.py +0 -7
- specsmith-0.10.1.dev262/src/specsmith/commands/ask.py +0 -21
- specsmith-0.10.1.dev262/src/specsmith/commands/commit.py +0 -31
- specsmith-0.10.1.dev262/src/specsmith/commands/context.py +0 -17
- specsmith-0.10.1.dev262/src/specsmith/commands/fix.py +0 -19
- specsmith-0.10.1.dev262/src/specsmith/commands/plan.py +0 -19
- specsmith-0.10.1.dev262/src/specsmith/commands/registry.py +0 -94
- specsmith-0.10.1.dev262/src/specsmith/commands/review.py +0 -18
- specsmith-0.10.1.dev262/src/specsmith/commands/test.py +0 -17
- specsmith-0.10.1.dev262/src/specsmith/eval/__init__.py +0 -17
- specsmith-0.10.1.dev262/src/specsmith/eval/graders.py +0 -137
- specsmith-0.10.1.dev262/src/specsmith/eval/harness.py +0 -78
- specsmith-0.10.1.dev262/src/specsmith/eval/types.py +0 -94
- specsmith-0.10.1.dev262/src/specsmith/feature_flags.py +0 -90
- specsmith-0.10.1.dev262/src/specsmith/instinct.py +0 -172
- specsmith-0.10.1.dev262/src/specsmith/tui/__init__.py +0 -24
- specsmith-0.10.1.dev262/src/specsmith/tui/app.py +0 -133
- specsmith-0.10.1.dev262/src/specsmith/tui/bridge.py +0 -227
- specsmith-0.10.1.dev262/src/specsmith/tui/screens/project.py +0 -93
- specsmith-0.10.1.dev262/src/specsmith/tui/screens/session.py +0 -170
- specsmith-0.10.1.dev262/src/specsmith/tui/screens/settings.py +0 -100
- specsmith-0.10.1.dev262/src/specsmith/tui/themes/__init__.py +0 -3
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/__init__.py +0 -3
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/chat.py +0 -132
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/command_block.py +0 -74
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/governance_bar.py +0 -66
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/input_bar.py +0 -117
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/provider_bar.py +0 -123
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/token_meter.py +0 -37
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/tool_block.py +0 -99
- specsmith-0.10.1.dev262/src/specsmith/tui/widgets/vcs_bar.py +0 -60
- specsmith-0.10.1.dev262/src/specsmith/webui/__init__.py +0 -29
- specsmith-0.10.1.dev262/src/specsmith/webui/app.py +0 -636
- specsmith-0.10.1.dev262/tests/test_commands.py +0 -139
- specsmith-0.10.1.dev262/tests/test_eval.py +0 -156
- specsmith-0.10.1.dev262/tests/test_feature_flags.py +0 -76
- specsmith-0.10.1.dev262/tests/test_instinct.py +0 -82
- specsmith-0.10.1.dev262/tests/test_tui.py +0 -342
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/LICENSE +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/setup.cfg +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/belief.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/certainty.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/py.typed +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/recovery.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/session.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/epistemic/trace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/__main__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/architect.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/auth.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/block_export.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/config.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/credits.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/differ.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/doctor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/drive.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/executor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/history_search.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/importer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/languages.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/patent.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/plugins.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/profiles.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/releaser.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/serve.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/session.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/skills.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/tools.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/trace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/updater.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/validator.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith/workspace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_CMD_001.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_cli.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_compressor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_epistemic.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_importer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_integrations.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_mcp_client.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_rate_limits.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_scaffolder.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_smoke.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_suggester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_tools.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_validator.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_vcs.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/tests/test_warp_parity.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev277}/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.
|
|
3
|
+
Version: 0.10.1.dev277
|
|
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
|
|
@@ -38,8 +38,6 @@ 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: pytest-asyncio>=0.23; extra == "dev"
|
|
42
|
-
Requires-Dist: pytest-textual-snapshot>=1.0; extra == "dev"
|
|
43
41
|
Provides-Extra: docs
|
|
44
42
|
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
45
43
|
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
|
|
@@ -53,10 +51,6 @@ Provides-Extra: mistral
|
|
|
53
51
|
Requires-Dist: openai>=1.0; extra == "mistral"
|
|
54
52
|
Provides-Extra: gui
|
|
55
53
|
Requires-Dist: PySide6>=6.6; extra == "gui"
|
|
56
|
-
Provides-Extra: tui
|
|
57
|
-
Requires-Dist: textual>=3.0; extra == "tui"
|
|
58
|
-
Provides-Extra: webui
|
|
59
|
-
Requires-Dist: nicegui>=3.0; extra == "webui"
|
|
60
54
|
Provides-Extra: ag2
|
|
61
55
|
Requires-Dist: ag2[ollama]; extra == "ag2"
|
|
62
56
|
Provides-Extra: history-semantic
|
|
@@ -84,8 +78,6 @@ Dynamic: license-file
|
|
|
84
78
|
[](https://pypi.org/project/specsmith/)
|
|
85
79
|
[](https://www.python.org/downloads/)
|
|
86
80
|
[](LICENSE)
|
|
87
|
-
[](https://github.com/BitConcepts/specsmith-vscode)
|
|
88
|
-
|
|
89
81
|
**Applied Epistemic Engineering toolkit for AI-assisted development.**
|
|
90
82
|
|
|
91
83
|
> Intelligence proposes. Constraints decide. The ledger remembers.
|
|
@@ -94,23 +86,17 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
94
86
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
95
87
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
96
88
|
|
|
97
|
-
**0.10.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
OpenAI-v1-compatible backend you self-host (vLLM, llama.cpp `server`,
|
|
104
|
-
LM Studio, TGI, ...). Cross-family **diversity guard**, capability
|
|
105
|
-
filtering, transient-failure fallback chains, and TraceVault decision
|
|
106
|
-
seals on every `/agent` pin are wired in by default. See
|
|
107
|
-
[`docs/site/agents.md`](docs/site/agents.md) for the five-minute walkthrough.
|
|
89
|
+
**0.10.1 — Governance REST API, machine-state sync, and least-privilege permissions.**
|
|
90
|
+
Specsmith now serves as the governance backend for Kairos (the epistemically-governed
|
|
91
|
+
Rust terminal) via `specsmith governance-serve`, keeps `.specsmith/` JSON in sync
|
|
92
|
+
with `docs/` Markdown via `specsmith sync`, and gates every agent tool call via
|
|
93
|
+
`specsmith agent permissions-check`. Multi-agent profiles, BYOE endpoints, and the
|
|
94
|
+
AEE phase lifecycle are all fully wired.
|
|
108
95
|
|
|
109
96
|
```bash
|
|
110
|
-
specsmith
|
|
111
|
-
specsmith
|
|
112
|
-
|
|
113
|
-
specsmith run --agent opus-reviewer # one-shot per-session pin
|
|
97
|
+
specsmith governance-serve --port 7700 # Kairos governance REST API
|
|
98
|
+
specsmith sync # sync .specsmith/ from docs/ markdown
|
|
99
|
+
specsmith agent permissions-check git_push # check tool permission (REG-012)
|
|
114
100
|
```
|
|
115
101
|
|
|
116
102
|
It also co-installs the standalone `epistemic` Python library for direct use in any project:
|
|
@@ -154,23 +140,15 @@ specsmith phase set requirements # jump to a specific phase
|
|
|
154
140
|
specsmith phase list # list all phases
|
|
155
141
|
```
|
|
156
142
|
|
|
157
|
-
The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the
|
|
158
|
-
|
|
159
|
-
and a readiness percentage.
|
|
143
|
+
The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the
|
|
144
|
+
Kairos Governance page. Each phase has a checklist of file/command criteria, recommended
|
|
145
|
+
commands, and a readiness percentage.
|
|
160
146
|
|
|
161
147
|
---
|
|
162
148
|
|
|
163
149
|
## Install
|
|
164
150
|
|
|
165
|
-
**Recommended — via
|
|
166
|
-
|
|
167
|
-
1. Install the [specsmith AEE Workbench](https://github.com/BitConcepts/specsmith-vscode) VS Code extension
|
|
168
|
-
2. Open `Ctrl+Shift+,` (⚙ specsmith Settings)
|
|
169
|
-
3. Click **🔒 Create Environment** — creates `~/.specsmith/venv/` with specsmith + your provider packages
|
|
170
|
-
|
|
171
|
-
The extension uses this environment for all agent sessions and terminal commands.
|
|
172
|
-
|
|
173
|
-
**Or via pipx (system-wide):**
|
|
151
|
+
**Recommended — via pipx (works with Kairos, any terminal, and CI):**
|
|
174
152
|
|
|
175
153
|
```bash
|
|
176
154
|
pipx install specsmith # core CLI + epistemic library
|
|
@@ -232,47 +210,82 @@ specsmith phase --project-dir ./my-project
|
|
|
232
210
|
|
|
233
211
|
---
|
|
234
212
|
|
|
235
|
-
##
|
|
213
|
+
## Machine State Sync
|
|
236
214
|
|
|
237
|
-
specsmith
|
|
215
|
+
`.specsmith/` always mirrors the human-readable `docs/` governance files.
|
|
216
|
+
Run `specsmith sync` after any change to `docs/REQUIREMENTS.md` or `docs/TESTS.md`:
|
|
238
217
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
218
|
+
```bash
|
|
219
|
+
specsmith sync # regenerate .specsmith/requirements.json + testcases.json
|
|
220
|
+
specsmith sync --check # CI mode: exits 1 if out of sync without writing
|
|
221
|
+
specsmith sync --json # emit sync result as JSON
|
|
222
|
+
```
|
|
242
223
|
|
|
243
|
-
|
|
224
|
+
## Least-Privilege Agent Permissions (REG-012)
|
|
244
225
|
|
|
245
226
|
```bash
|
|
246
|
-
|
|
247
|
-
specsmith agent
|
|
248
|
-
specsmith agent
|
|
249
|
-
specsmith agent improve "add tests for config.py" # self-improvement with reports
|
|
227
|
+
specsmith agent permissions # show active permission profile
|
|
228
|
+
specsmith agent permissions-check git_push # check if git_push is allowed
|
|
229
|
+
specsmith agent permissions-check git_push --no-log # dry-run (no ledger write)
|
|
250
230
|
```
|
|
251
231
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
232
|
+
Configure in `docs/SPECSMITH.yml`:
|
|
233
|
+
```yaml
|
|
234
|
+
agent:
|
|
235
|
+
permissions:
|
|
236
|
+
preset: standard # read_only | standard | extended | admin
|
|
237
|
+
# Or custom:
|
|
238
|
+
allow: [read_file, write_file, run_shell, git_status]
|
|
239
|
+
deny: [git_push, git_create_pr]
|
|
240
|
+
```
|
|
257
241
|
|
|
258
242
|
---
|
|
259
243
|
|
|
260
|
-
##
|
|
244
|
+
## Kairos + Governance REST API
|
|
261
245
|
|
|
262
|
-
**
|
|
263
|
-
|
|
264
|
-
|
|
246
|
+
**Kairos** is the companion Rust terminal runtime (`BitConcepts/kairos`). specsmith
|
|
247
|
+
acts as the governance backend: Kairos spawns `specsmith governance-serve` at startup
|
|
248
|
+
and routes all preflight and verify calls through it.
|
|
265
249
|
|
|
266
250
|
```bash
|
|
251
|
+
# Start the governance REST API (Kairos calls this automatically)
|
|
252
|
+
specsmith governance-serve --port 7700 --project-dir .
|
|
253
|
+
|
|
267
254
|
# Classify a natural-language utterance under Specsmith governance
|
|
268
255
|
specsmith preflight "fix the cleanup dry-run regression" --json
|
|
269
256
|
|
|
270
|
-
#
|
|
257
|
+
# Start the agentic REPL
|
|
258
|
+
specsmith run
|
|
259
|
+
> what does the cleanup module do? # read-only ask -> answered
|
|
260
|
+
> fix the cleanup dry-run regression # change -> Specsmith approves, runs
|
|
261
|
+
> delete the entire dist directory # destructive -> needs clarification
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Nexus
|
|
267
|
+
|
|
268
|
+
The Nexus runtime is specsmith's local-first agentic REPL — a
|
|
269
|
+
governance-gated broker that sits between you and the LLM.
|
|
270
|
+
|
|
271
|
+
Every utterance passes through `specsmith preflight` before execution.
|
|
272
|
+
The broker classifies intent, matches requirements, and gates the action.
|
|
273
|
+
After execution, `specsmith verify` checks equilibrium. The `/why` command
|
|
274
|
+
shows the full governance trace.
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# Interactive REPL with governance
|
|
271
278
|
specsmith run
|
|
272
|
-
nexus>
|
|
273
|
-
nexus>
|
|
274
|
-
nexus>
|
|
275
|
-
|
|
279
|
+
nexus> fix the cleanup bug # broker classifies → accepts → executes → verifies
|
|
280
|
+
nexus> /why # show governance trace for last action
|
|
281
|
+
nexus> /exit
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
The Nexus broker:
|
|
285
|
+
- **Preflight gate**: every change goes through `specsmith preflight`
|
|
286
|
+
- **Bounded retry**: failed actions retry up to 3× with strategy classification
|
|
287
|
+
- **Execution trace**: every action is sealed in the cryptographic trace vault
|
|
288
|
+
- **`/why` toggle**: shows governance rationale in human-readable form
|
|
276
289
|
```
|
|
277
290
|
|
|
278
291
|
**How it works.** A natural-language **broker** classifies intent, infers scope from
|
|
@@ -293,36 +306,20 @@ requirement, test, and work-item identifiers Specsmith assigned.
|
|
|
293
306
|
|
|
294
307
|
---
|
|
295
308
|
|
|
296
|
-
##
|
|
309
|
+
## Kairos — Flagship Terminal Client
|
|
297
310
|
|
|
298
|
-
|
|
311
|
+
**[Kairos](https://github.com/BitConcepts/kairos)** is the recommended terminal client for specsmith.
|
|
312
|
+
Kairos spawns specsmith as a managed governance child process at startup and routes all
|
|
313
|
+
preflight, verify, and BYOE proxy calls through it. The Governance settings page shows live
|
|
314
|
+
specsmith status, version, and one-click update.
|
|
299
315
|
|
|
300
|
-
```
|
|
301
|
-
#
|
|
302
|
-
|
|
303
|
-
# Project Settings: Ctrl+Shift+G (⚙ Project Settings — per-project)
|
|
316
|
+
```bash
|
|
317
|
+
# Kairos starts specsmith automatically; or run manually:
|
|
318
|
+
specsmith governance-serve --port 7700 --project-dir .
|
|
304
319
|
```
|
|
305
320
|
|
|
306
|
-
**
|
|
307
|
-
|
|
308
|
-
and **⚙ Project Settings** (per-project: scaffold, tools, files, actions, execution)
|
|
309
|
-
- **Global environment management** — `~/.specsmith/venv/` with Create / Update / Rebuild / Delete;
|
|
310
|
-
persistent restart banner; Remove System Installs cleanup button
|
|
311
|
-
- **VCS context at session start** — git status + recent commits shown in chat and in system prompt
|
|
312
|
-
- **Execution profiles** — safe / standard / open / admin; custom allow/block command lists
|
|
313
|
-
- **AEE phase indicator** — shows current phase with readiness %, Next Phase button, phase selector
|
|
314
|
-
- **AI agent sessions** — independent process per project, JSONL bridge, chat with file injection
|
|
315
|
-
- **AG2 agent shell** — Planner/Builder/Verifier agents over Ollama in Actions tab
|
|
316
|
-
- **Agent tab** — per-project provider/model/context/iteration config (overrides global defaults)
|
|
317
|
-
- **Live model listing** — Anthropic, OpenAI, Gemini, Mistral, local Ollama (GPU-aware)
|
|
318
|
-
- **Ollama model catalog** — 16 models, 4 tiers, GPU-aware recommendations, filter by installed/available
|
|
319
|
-
- **Ollama integration** — model manager (update/remove/update-all), version check, upgrade
|
|
320
|
-
- **FPGA/HDL tool support** — vivado, gtkwave, vsg, ghdl, verilator, yosys, nextpnr, and 15 more
|
|
321
|
-
- **Tool installer** — scan installed tools; one-click install via winget/brew/apt for missing tools
|
|
322
|
-
- **API key management** — stored in OS credential store (Windows Credential Manager / macOS Keychain)
|
|
323
|
-
- **Update checker** — PyPI version check, auto-checks on panel open, release channel selector
|
|
324
|
-
|
|
325
|
-
**[→ specsmith-vscode on GitHub](https://github.com/BitConcepts/specsmith-vscode)**
|
|
321
|
+
The VS Code extension (`specsmith-vscode`) has been **deprecated** in favour of Kairos.
|
|
322
|
+
Use `pipx install specsmith` for standalone CLI usage from any terminal.
|
|
326
323
|
|
|
327
324
|
---
|
|
328
325
|
|
|
@@ -330,7 +327,7 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
|
|
|
330
327
|
|
|
331
328
|
specsmith is open source and built by a small team. Every bit of support helps:
|
|
332
329
|
|
|
333
|
-
- ⭐ **Star** [specsmith](https://github.com/BitConcepts/specsmith) and [
|
|
330
|
+
- ⭐ **Star** [specsmith](https://github.com/BitConcepts/specsmith) and [kairos](https://github.com/BitConcepts/kairos) on GitHub
|
|
334
331
|
- 📣 **Tell your friends and colleagues** — word of mouth is our best marketing
|
|
335
332
|
- 🐛 **Report bugs** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues) — even small ones help
|
|
336
333
|
- 💡 **Suggest features** via [GitHub Discussions](https://github.com/BitConcepts/specsmith/discussions) — we read every suggestion
|
|
@@ -353,8 +350,8 @@ specsmith ollama suggest requirements # task-based recommendations
|
|
|
353
350
|
specsmith ollama list # show installed models
|
|
354
351
|
```
|
|
355
352
|
|
|
356
|
-
GPU-aware context sizing
|
|
357
|
-
Override
|
|
353
|
+
GPU-aware context sizing: 4K/8K/16K/32K tokens based on detected VRAM.
|
|
354
|
+
Override via `SPECSMITH_OLLAMA_CONTEXT_LENGTH` env var or `ollama.context_length` in `.specsmith/config.yml`.
|
|
358
355
|
|
|
359
356
|
---
|
|
360
357
|
|
|
@@ -455,20 +452,20 @@ Use cases: linguistics research, compliance pipelines, AI alignment, patent pros
|
|
|
455
452
|
|
|
456
453
|
specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
|
|
457
454
|
in this repo to check its governance health. This means every feature we add to specsmith is
|
|
458
|
-
immediately dogfooded on specsmith itself.
|
|
459
|
-
is
|
|
455
|
+
immediately dogfooded on specsmith itself. [Kairos](https://github.com/BitConcepts/kairos)
|
|
456
|
+
is the companion terminal and flagship client.
|
|
460
457
|
|
|
461
458
|
## Documentation
|
|
462
459
|
|
|
463
460
|
**[specsmith.readthedocs.io](https://specsmith.readthedocs.io)** — Full manual: AEE primer,
|
|
464
|
-
command reference, project types, tool registry, governance model, Ollama guide,
|
|
461
|
+
command reference, project types, tool registry, governance model, Ollama guide, Kairos integration.
|
|
465
462
|
|
|
466
463
|
## Links
|
|
467
464
|
|
|
468
465
|
- [PyPI](https://pypi.org/project/specsmith/)
|
|
469
466
|
- [Documentation](https://specsmith.readthedocs.io)
|
|
470
467
|
- [Changelog](CHANGELOG.md)
|
|
471
|
-
- [
|
|
468
|
+
- [Kairos terminal client](https://github.com/BitConcepts/kairos)
|
|
472
469
|
- [Contributing](CONTRIBUTING.md)
|
|
473
470
|
- [Security](SECURITY.md)
|
|
474
471
|
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
[](https://pypi.org/project/specsmith/)
|
|
7
7
|
[](https://www.python.org/downloads/)
|
|
8
8
|
[](LICENSE)
|
|
9
|
-
[](https://github.com/BitConcepts/specsmith-vscode)
|
|
10
|
-
|
|
11
9
|
**Applied Epistemic Engineering toolkit for AI-assisted development.**
|
|
12
10
|
|
|
13
11
|
> Intelligence proposes. Constraints decide. The ledger remembers.
|
|
@@ -16,23 +14,17 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
16
14
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
17
15
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
18
16
|
|
|
19
|
-
**0.10.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
OpenAI-v1-compatible backend you self-host (vLLM, llama.cpp `server`,
|
|
26
|
-
LM Studio, TGI, ...). Cross-family **diversity guard**, capability
|
|
27
|
-
filtering, transient-failure fallback chains, and TraceVault decision
|
|
28
|
-
seals on every `/agent` pin are wired in by default. See
|
|
29
|
-
[`docs/site/agents.md`](docs/site/agents.md) for the five-minute walkthrough.
|
|
17
|
+
**0.10.1 — Governance REST API, machine-state sync, and least-privilege permissions.**
|
|
18
|
+
Specsmith now serves as the governance backend for Kairos (the epistemically-governed
|
|
19
|
+
Rust terminal) via `specsmith governance-serve`, keeps `.specsmith/` JSON in sync
|
|
20
|
+
with `docs/` Markdown via `specsmith sync`, and gates every agent tool call via
|
|
21
|
+
`specsmith agent permissions-check`. Multi-agent profiles, BYOE endpoints, and the
|
|
22
|
+
AEE phase lifecycle are all fully wired.
|
|
30
23
|
|
|
31
24
|
```bash
|
|
32
|
-
specsmith
|
|
33
|
-
specsmith
|
|
34
|
-
|
|
35
|
-
specsmith run --agent opus-reviewer # one-shot per-session pin
|
|
25
|
+
specsmith governance-serve --port 7700 # Kairos governance REST API
|
|
26
|
+
specsmith sync # sync .specsmith/ from docs/ markdown
|
|
27
|
+
specsmith agent permissions-check git_push # check tool permission (REG-012)
|
|
36
28
|
```
|
|
37
29
|
|
|
38
30
|
It also co-installs the standalone `epistemic` Python library for direct use in any project:
|
|
@@ -76,23 +68,15 @@ specsmith phase set requirements # jump to a specific phase
|
|
|
76
68
|
specsmith phase list # list all phases
|
|
77
69
|
```
|
|
78
70
|
|
|
79
|
-
The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the
|
|
80
|
-
|
|
81
|
-
and a readiness percentage.
|
|
71
|
+
The current phase is persisted in `scaffold.yml` as `aee_phase` and displayed in the
|
|
72
|
+
Kairos Governance page. Each phase has a checklist of file/command criteria, recommended
|
|
73
|
+
commands, and a readiness percentage.
|
|
82
74
|
|
|
83
75
|
---
|
|
84
76
|
|
|
85
77
|
## Install
|
|
86
78
|
|
|
87
|
-
**Recommended — via
|
|
88
|
-
|
|
89
|
-
1. Install the [specsmith AEE Workbench](https://github.com/BitConcepts/specsmith-vscode) VS Code extension
|
|
90
|
-
2. Open `Ctrl+Shift+,` (⚙ specsmith Settings)
|
|
91
|
-
3. Click **🔒 Create Environment** — creates `~/.specsmith/venv/` with specsmith + your provider packages
|
|
92
|
-
|
|
93
|
-
The extension uses this environment for all agent sessions and terminal commands.
|
|
94
|
-
|
|
95
|
-
**Or via pipx (system-wide):**
|
|
79
|
+
**Recommended — via pipx (works with Kairos, any terminal, and CI):**
|
|
96
80
|
|
|
97
81
|
```bash
|
|
98
82
|
pipx install specsmith # core CLI + epistemic library
|
|
@@ -154,47 +138,82 @@ specsmith phase --project-dir ./my-project
|
|
|
154
138
|
|
|
155
139
|
---
|
|
156
140
|
|
|
157
|
-
##
|
|
141
|
+
## Machine State Sync
|
|
158
142
|
|
|
159
|
-
specsmith
|
|
143
|
+
`.specsmith/` always mirrors the human-readable `docs/` governance files.
|
|
144
|
+
Run `specsmith sync` after any change to `docs/REQUIREMENTS.md` or `docs/TESTS.md`:
|
|
160
145
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
146
|
+
```bash
|
|
147
|
+
specsmith sync # regenerate .specsmith/requirements.json + testcases.json
|
|
148
|
+
specsmith sync --check # CI mode: exits 1 if out of sync without writing
|
|
149
|
+
specsmith sync --json # emit sync result as JSON
|
|
150
|
+
```
|
|
164
151
|
|
|
165
|
-
|
|
152
|
+
## Least-Privilege Agent Permissions (REG-012)
|
|
166
153
|
|
|
167
154
|
```bash
|
|
168
|
-
|
|
169
|
-
specsmith agent
|
|
170
|
-
specsmith agent
|
|
171
|
-
specsmith agent improve "add tests for config.py" # self-improvement with reports
|
|
155
|
+
specsmith agent permissions # show active permission profile
|
|
156
|
+
specsmith agent permissions-check git_push # check if git_push is allowed
|
|
157
|
+
specsmith agent permissions-check git_push --no-log # dry-run (no ledger write)
|
|
172
158
|
```
|
|
173
159
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
160
|
+
Configure in `docs/SPECSMITH.yml`:
|
|
161
|
+
```yaml
|
|
162
|
+
agent:
|
|
163
|
+
permissions:
|
|
164
|
+
preset: standard # read_only | standard | extended | admin
|
|
165
|
+
# Or custom:
|
|
166
|
+
allow: [read_file, write_file, run_shell, git_status]
|
|
167
|
+
deny: [git_push, git_create_pr]
|
|
168
|
+
```
|
|
179
169
|
|
|
180
170
|
---
|
|
181
171
|
|
|
182
|
-
##
|
|
172
|
+
## Kairos + Governance REST API
|
|
183
173
|
|
|
184
|
-
**
|
|
185
|
-
|
|
186
|
-
|
|
174
|
+
**Kairos** is the companion Rust terminal runtime (`BitConcepts/kairos`). specsmith
|
|
175
|
+
acts as the governance backend: Kairos spawns `specsmith governance-serve` at startup
|
|
176
|
+
and routes all preflight and verify calls through it.
|
|
187
177
|
|
|
188
178
|
```bash
|
|
179
|
+
# Start the governance REST API (Kairos calls this automatically)
|
|
180
|
+
specsmith governance-serve --port 7700 --project-dir .
|
|
181
|
+
|
|
189
182
|
# Classify a natural-language utterance under Specsmith governance
|
|
190
183
|
specsmith preflight "fix the cleanup dry-run regression" --json
|
|
191
184
|
|
|
192
|
-
#
|
|
185
|
+
# Start the agentic REPL
|
|
186
|
+
specsmith run
|
|
187
|
+
> what does the cleanup module do? # read-only ask -> answered
|
|
188
|
+
> fix the cleanup dry-run regression # change -> Specsmith approves, runs
|
|
189
|
+
> delete the entire dist directory # destructive -> needs clarification
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Nexus
|
|
195
|
+
|
|
196
|
+
The Nexus runtime is specsmith's local-first agentic REPL — a
|
|
197
|
+
governance-gated broker that sits between you and the LLM.
|
|
198
|
+
|
|
199
|
+
Every utterance passes through `specsmith preflight` before execution.
|
|
200
|
+
The broker classifies intent, matches requirements, and gates the action.
|
|
201
|
+
After execution, `specsmith verify` checks equilibrium. The `/why` command
|
|
202
|
+
shows the full governance trace.
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
# Interactive REPL with governance
|
|
193
206
|
specsmith run
|
|
194
|
-
nexus>
|
|
195
|
-
nexus>
|
|
196
|
-
nexus>
|
|
197
|
-
|
|
207
|
+
nexus> fix the cleanup bug # broker classifies → accepts → executes → verifies
|
|
208
|
+
nexus> /why # show governance trace for last action
|
|
209
|
+
nexus> /exit
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
The Nexus broker:
|
|
213
|
+
- **Preflight gate**: every change goes through `specsmith preflight`
|
|
214
|
+
- **Bounded retry**: failed actions retry up to 3× with strategy classification
|
|
215
|
+
- **Execution trace**: every action is sealed in the cryptographic trace vault
|
|
216
|
+
- **`/why` toggle**: shows governance rationale in human-readable form
|
|
198
217
|
```
|
|
199
218
|
|
|
200
219
|
**How it works.** A natural-language **broker** classifies intent, infers scope from
|
|
@@ -215,36 +234,20 @@ requirement, test, and work-item identifiers Specsmith assigned.
|
|
|
215
234
|
|
|
216
235
|
---
|
|
217
236
|
|
|
218
|
-
##
|
|
237
|
+
## Kairos — Flagship Terminal Client
|
|
219
238
|
|
|
220
|
-
|
|
239
|
+
**[Kairos](https://github.com/BitConcepts/kairos)** is the recommended terminal client for specsmith.
|
|
240
|
+
Kairos spawns specsmith as a managed governance child process at startup and routes all
|
|
241
|
+
preflight, verify, and BYOE proxy calls through it. The Governance settings page shows live
|
|
242
|
+
specsmith status, version, and one-click update.
|
|
221
243
|
|
|
222
|
-
```
|
|
223
|
-
#
|
|
224
|
-
|
|
225
|
-
# Project Settings: Ctrl+Shift+G (⚙ Project Settings — per-project)
|
|
244
|
+
```bash
|
|
245
|
+
# Kairos starts specsmith automatically; or run manually:
|
|
246
|
+
specsmith governance-serve --port 7700 --project-dir .
|
|
226
247
|
```
|
|
227
248
|
|
|
228
|
-
**
|
|
229
|
-
|
|
230
|
-
and **⚙ Project Settings** (per-project: scaffold, tools, files, actions, execution)
|
|
231
|
-
- **Global environment management** — `~/.specsmith/venv/` with Create / Update / Rebuild / Delete;
|
|
232
|
-
persistent restart banner; Remove System Installs cleanup button
|
|
233
|
-
- **VCS context at session start** — git status + recent commits shown in chat and in system prompt
|
|
234
|
-
- **Execution profiles** — safe / standard / open / admin; custom allow/block command lists
|
|
235
|
-
- **AEE phase indicator** — shows current phase with readiness %, Next Phase button, phase selector
|
|
236
|
-
- **AI agent sessions** — independent process per project, JSONL bridge, chat with file injection
|
|
237
|
-
- **AG2 agent shell** — Planner/Builder/Verifier agents over Ollama in Actions tab
|
|
238
|
-
- **Agent tab** — per-project provider/model/context/iteration config (overrides global defaults)
|
|
239
|
-
- **Live model listing** — Anthropic, OpenAI, Gemini, Mistral, local Ollama (GPU-aware)
|
|
240
|
-
- **Ollama model catalog** — 16 models, 4 tiers, GPU-aware recommendations, filter by installed/available
|
|
241
|
-
- **Ollama integration** — model manager (update/remove/update-all), version check, upgrade
|
|
242
|
-
- **FPGA/HDL tool support** — vivado, gtkwave, vsg, ghdl, verilator, yosys, nextpnr, and 15 more
|
|
243
|
-
- **Tool installer** — scan installed tools; one-click install via winget/brew/apt for missing tools
|
|
244
|
-
- **API key management** — stored in OS credential store (Windows Credential Manager / macOS Keychain)
|
|
245
|
-
- **Update checker** — PyPI version check, auto-checks on panel open, release channel selector
|
|
246
|
-
|
|
247
|
-
**[→ specsmith-vscode on GitHub](https://github.com/BitConcepts/specsmith-vscode)**
|
|
249
|
+
The VS Code extension (`specsmith-vscode`) has been **deprecated** in favour of Kairos.
|
|
250
|
+
Use `pipx install specsmith` for standalone CLI usage from any terminal.
|
|
248
251
|
|
|
249
252
|
---
|
|
250
253
|
|
|
@@ -252,7 +255,7 @@ The **specsmith AEE Workbench** VS Code extension is the flagship client:
|
|
|
252
255
|
|
|
253
256
|
specsmith is open source and built by a small team. Every bit of support helps:
|
|
254
257
|
|
|
255
|
-
- ⭐ **Star** [specsmith](https://github.com/BitConcepts/specsmith) and [
|
|
258
|
+
- ⭐ **Star** [specsmith](https://github.com/BitConcepts/specsmith) and [kairos](https://github.com/BitConcepts/kairos) on GitHub
|
|
256
259
|
- 📣 **Tell your friends and colleagues** — word of mouth is our best marketing
|
|
257
260
|
- 🐛 **Report bugs** via [GitHub Issues](https://github.com/BitConcepts/specsmith/issues) — even small ones help
|
|
258
261
|
- 💡 **Suggest features** via [GitHub Discussions](https://github.com/BitConcepts/specsmith/discussions) — we read every suggestion
|
|
@@ -275,8 +278,8 @@ specsmith ollama suggest requirements # task-based recommendations
|
|
|
275
278
|
specsmith ollama list # show installed models
|
|
276
279
|
```
|
|
277
280
|
|
|
278
|
-
GPU-aware context sizing
|
|
279
|
-
Override
|
|
281
|
+
GPU-aware context sizing: 4K/8K/16K/32K tokens based on detected VRAM.
|
|
282
|
+
Override via `SPECSMITH_OLLAMA_CONTEXT_LENGTH` env var or `ollama.context_length` in `.specsmith/config.yml`.
|
|
280
283
|
|
|
281
284
|
---
|
|
282
285
|
|
|
@@ -377,20 +380,20 @@ Use cases: linguistics research, compliance pipelines, AI alignment, patent pros
|
|
|
377
380
|
|
|
378
381
|
specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
|
|
379
382
|
in this repo to check its governance health. This means every feature we add to specsmith is
|
|
380
|
-
immediately dogfooded on specsmith itself.
|
|
381
|
-
is
|
|
383
|
+
immediately dogfooded on specsmith itself. [Kairos](https://github.com/BitConcepts/kairos)
|
|
384
|
+
is the companion terminal and flagship client.
|
|
382
385
|
|
|
383
386
|
## Documentation
|
|
384
387
|
|
|
385
388
|
**[specsmith.readthedocs.io](https://specsmith.readthedocs.io)** — Full manual: AEE primer,
|
|
386
|
-
command reference, project types, tool registry, governance model, Ollama guide,
|
|
389
|
+
command reference, project types, tool registry, governance model, Ollama guide, Kairos integration.
|
|
387
390
|
|
|
388
391
|
## Links
|
|
389
392
|
|
|
390
393
|
- [PyPI](https://pypi.org/project/specsmith/)
|
|
391
394
|
- [Documentation](https://specsmith.readthedocs.io)
|
|
392
395
|
- [Changelog](CHANGELOG.md)
|
|
393
|
-
- [
|
|
396
|
+
- [Kairos terminal client](https://github.com/BitConcepts/kairos)
|
|
394
397
|
- [Contributing](CONTRIBUTING.md)
|
|
395
398
|
- [Security](SECURITY.md)
|
|
396
399
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.10.1.
|
|
7
|
+
version = "0.10.1.dev277"
|
|
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"
|
|
@@ -51,8 +51,6 @@ dev = [
|
|
|
51
51
|
"mypy>=1.10",
|
|
52
52
|
"pre-commit>=3.0",
|
|
53
53
|
"types-pyyaml>=6.0",
|
|
54
|
-
"pytest-asyncio>=0.23",
|
|
55
|
-
"pytest-textual-snapshot>=1.0",
|
|
56
54
|
]
|
|
57
55
|
docs = [
|
|
58
56
|
"mkdocs>=1.6",
|
|
@@ -67,8 +65,6 @@ openai = ["openai>=1.0"]
|
|
|
67
65
|
gemini = ["google-genai>=1.0"]
|
|
68
66
|
mistral = ["openai>=1.0"] # Mistral uses the openai SDK pointed at api.mistral.ai
|
|
69
67
|
gui = ["PySide6>=6.6"]
|
|
70
|
-
tui = ["textual>=3.0"]
|
|
71
|
-
webui = ["nicegui>=3.0"]
|
|
72
68
|
# AG2 agent shell (Planner/Builder/Verifier over Ollama)
|
|
73
69
|
ag2 = ["ag2[ollama]"]
|
|
74
70
|
# Optional semantic backend for `specsmith history search --semantic` (REQ-135).
|
|
@@ -186,15 +182,9 @@ module = [
|
|
|
186
182
|
"specsmith.serve",
|
|
187
183
|
"specsmith.toolrules",
|
|
188
184
|
"specsmith.tool_installer",
|
|
189
|
-
"specsmith.commands
|
|
190
|
-
"specsmith.eval.*",
|
|
191
|
-
"specsmith.feature_flags",
|
|
192
|
-
"specsmith.instinct",
|
|
193
|
-
"specsmith.tui.*",
|
|
194
|
-
"specsmith.webui.*",
|
|
185
|
+
"specsmith.commands.intelligence",
|
|
195
186
|
]
|
|
196
187
|
ignore_errors = true
|
|
197
188
|
|
|
198
189
|
[tool.pytest.ini_options]
|
|
199
190
|
testpaths = ["tests"]
|
|
200
|
-
asyncio_mode = "auto"
|