specsmith 0.10.1.dev262__tar.gz → 0.10.1.dev272__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.dev272}/PKG-INFO +69 -46
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/README.md +68 -39
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/pyproject.toml +2 -12
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/chat_runner.py +50 -208
- specsmith-0.10.1.dev272/src/specsmith/agent/execution_profiles.py +274 -0
- specsmith-0.10.1.dev272/src/specsmith/agent/model_intelligence.py +293 -0
- specsmith-0.10.1.dev272/src/specsmith/agent/permissions.py +278 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/profiles.py +36 -0
- specsmith-0.10.1.dev272/src/specsmith/agent/provider_registry.py +366 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/repl.py +33 -11
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/runner.py +57 -10
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/tools.py +154 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/auditor.py +46 -4
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/cli.py +571 -248
- {specsmith-0.10.1.dev262/src/specsmith/tui/screens → specsmith-0.10.1.dev272/src/specsmith/commands}/__init__.py +1 -1
- specsmith-0.10.1.dev272/src/specsmith/commands/intelligence.py +292 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/compressor.py +10 -5
- specsmith-0.10.1.dev272/src/specsmith/datasources/__init__.py +14 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/base.py +141 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/citations.py +83 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/fpd.py +72 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/odp.py +75 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/patentsview.py +272 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/pfw.py +81 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/ppubs.py +111 -0
- specsmith-0.10.1.dev272/src/specsmith/datasources/ptab.py +126 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/epistemic/belief.py +101 -26
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/exporter.py +39 -3
- specsmith-0.10.1.dev272/src/specsmith/governance_logic.py +589 -0
- specsmith-0.10.1.dev272/src/specsmith/instinct.py +330 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/ledger.py +14 -8
- specsmith-0.10.1.dev272/src/specsmith/paths.py +152 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/phase.py +111 -37
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/requirements.py +61 -17
- specsmith-0.10.1.dev272/src/specsmith/safe_write.py +188 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/scaffolder.py +3 -0
- specsmith-0.10.1.dev272/src/specsmith/sync.py +286 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/upgrader.py +15 -7
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272/src/specsmith.egg-info}/PKG-INFO +69 -46
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith.egg-info/SOURCES.txt +19 -37
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith.egg-info/requires.txt +0 -8
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_auditor.py +5 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_nexus.py +6 -1
- specsmith-0.10.1.dev272/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.dev272}/LICENSE +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/setup.cfg +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/belief.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/certainty.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/py.typed +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/recovery.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/session.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/epistemic/trace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/__main__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/architect.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/auth.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/block_export.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/config.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/credits.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/differ.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/doctor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/drive.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/executor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/history_search.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/importer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/languages.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/patent.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/plugins.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/profiles.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/releaser.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/serve.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/session.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/skills.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/tools.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/trace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/updater.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/validator.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith/workspace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_CMD_001.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_cli.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_compressor.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_epistemic.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_importer.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_integrations.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_mcp_client.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_rate_limits.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_scaffolder.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_smoke.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_suggester.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_tools.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_validator.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_vcs.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/tests/test_warp_parity.py +0 -0
- {specsmith-0.10.1.dev262 → specsmith-0.10.1.dev272}/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.dev272
|
|
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
|
|
@@ -94,23 +88,17 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
94
88
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
95
89
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
96
90
|
|
|
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.
|
|
91
|
+
**0.10.1 — Governance REST API, machine-state sync, and least-privilege permissions.**
|
|
92
|
+
Specsmith now serves as the governance backend for Kairos (the epistemically-governed
|
|
93
|
+
Rust terminal) via `specsmith governance-serve`, keeps `.specsmith/` JSON in sync
|
|
94
|
+
with `docs/` Markdown via `specsmith sync`, and gates every agent tool call via
|
|
95
|
+
`specsmith agent permissions-check`. Multi-agent profiles, BYOE endpoints, and the
|
|
96
|
+
AEE phase lifecycle are all fully wired.
|
|
108
97
|
|
|
109
98
|
```bash
|
|
110
|
-
specsmith
|
|
111
|
-
specsmith
|
|
112
|
-
|
|
113
|
-
specsmith run --agent opus-reviewer # one-shot per-session pin
|
|
99
|
+
specsmith governance-serve --port 7700 # Kairos governance REST API
|
|
100
|
+
specsmith sync # sync .specsmith/ from docs/ markdown
|
|
101
|
+
specsmith agent permissions-check git_push # check tool permission (REG-012)
|
|
114
102
|
```
|
|
115
103
|
|
|
116
104
|
It also co-installs the standalone `epistemic` Python library for direct use in any project:
|
|
@@ -232,47 +220,82 @@ specsmith phase --project-dir ./my-project
|
|
|
232
220
|
|
|
233
221
|
---
|
|
234
222
|
|
|
235
|
-
##
|
|
223
|
+
## Machine State Sync
|
|
236
224
|
|
|
237
|
-
specsmith
|
|
225
|
+
`.specsmith/` always mirrors the human-readable `docs/` governance files.
|
|
226
|
+
Run `specsmith sync` after any change to `docs/REQUIREMENTS.md` or `docs/TESTS.md`:
|
|
238
227
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
228
|
+
```bash
|
|
229
|
+
specsmith sync # regenerate .specsmith/requirements.json + testcases.json
|
|
230
|
+
specsmith sync --check # CI mode: exits 1 if out of sync without writing
|
|
231
|
+
specsmith sync --json # emit sync result as JSON
|
|
232
|
+
```
|
|
242
233
|
|
|
243
|
-
|
|
234
|
+
## Least-Privilege Agent Permissions (REG-012)
|
|
244
235
|
|
|
245
236
|
```bash
|
|
246
|
-
|
|
247
|
-
specsmith agent
|
|
248
|
-
specsmith agent
|
|
249
|
-
specsmith agent improve "add tests for config.py" # self-improvement with reports
|
|
237
|
+
specsmith agent permissions # show active permission profile
|
|
238
|
+
specsmith agent permissions-check git_push # check if git_push is allowed
|
|
239
|
+
specsmith agent permissions-check git_push --no-log # dry-run (no ledger write)
|
|
250
240
|
```
|
|
251
241
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
242
|
+
Configure in `docs/SPECSMITH.yml`:
|
|
243
|
+
```yaml
|
|
244
|
+
agent:
|
|
245
|
+
permissions:
|
|
246
|
+
preset: standard # read_only | standard | extended | admin
|
|
247
|
+
# Or custom:
|
|
248
|
+
allow: [read_file, write_file, run_shell, git_status]
|
|
249
|
+
deny: [git_push, git_create_pr]
|
|
250
|
+
```
|
|
257
251
|
|
|
258
252
|
---
|
|
259
253
|
|
|
260
|
-
##
|
|
254
|
+
## Kairos + Governance REST API
|
|
261
255
|
|
|
262
|
-
**
|
|
263
|
-
|
|
264
|
-
|
|
256
|
+
**Kairos** is the companion Rust terminal runtime (`BitConcepts/kairos`). specsmith
|
|
257
|
+
acts as the governance backend: Kairos spawns `specsmith governance-serve` at startup
|
|
258
|
+
and routes all preflight and verify calls through it.
|
|
265
259
|
|
|
266
260
|
```bash
|
|
261
|
+
# Start the governance REST API (Kairos calls this automatically)
|
|
262
|
+
specsmith governance-serve --port 7700 --project-dir .
|
|
263
|
+
|
|
267
264
|
# Classify a natural-language utterance under Specsmith governance
|
|
268
265
|
specsmith preflight "fix the cleanup dry-run regression" --json
|
|
269
266
|
|
|
270
|
-
#
|
|
267
|
+
# Start the agentic REPL
|
|
268
|
+
specsmith run
|
|
269
|
+
> what does the cleanup module do? # read-only ask -> answered
|
|
270
|
+
> fix the cleanup dry-run regression # change -> Specsmith approves, runs
|
|
271
|
+
> delete the entire dist directory # destructive -> needs clarification
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Nexus
|
|
277
|
+
|
|
278
|
+
The Nexus runtime is specsmith's local-first agentic REPL — a
|
|
279
|
+
governance-gated broker that sits between you and the LLM.
|
|
280
|
+
|
|
281
|
+
Every utterance passes through `specsmith preflight` before execution.
|
|
282
|
+
The broker classifies intent, matches requirements, and gates the action.
|
|
283
|
+
After execution, `specsmith verify` checks equilibrium. The `/why` command
|
|
284
|
+
shows the full governance trace.
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# Interactive REPL with governance
|
|
271
288
|
specsmith run
|
|
272
|
-
nexus>
|
|
273
|
-
nexus>
|
|
274
|
-
nexus>
|
|
275
|
-
|
|
289
|
+
nexus> fix the cleanup bug # broker classifies → accepts → executes → verifies
|
|
290
|
+
nexus> /why # show governance trace for last action
|
|
291
|
+
nexus> /exit
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
The Nexus broker:
|
|
295
|
+
- **Preflight gate**: every change goes through `specsmith preflight`
|
|
296
|
+
- **Bounded retry**: failed actions retry up to 3× with strategy classification
|
|
297
|
+
- **Execution trace**: every action is sealed in the cryptographic trace vault
|
|
298
|
+
- **`/why` toggle**: shows governance rationale in human-readable form
|
|
276
299
|
```
|
|
277
300
|
|
|
278
301
|
**How it works.** A natural-language **broker** classifies intent, infers scope from
|
|
@@ -16,23 +16,17 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
16
16
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
17
17
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
18
18
|
|
|
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.
|
|
19
|
+
**0.10.1 — Governance REST API, machine-state sync, and least-privilege permissions.**
|
|
20
|
+
Specsmith now serves as the governance backend for Kairos (the epistemically-governed
|
|
21
|
+
Rust terminal) via `specsmith governance-serve`, keeps `.specsmith/` JSON in sync
|
|
22
|
+
with `docs/` Markdown via `specsmith sync`, and gates every agent tool call via
|
|
23
|
+
`specsmith agent permissions-check`. Multi-agent profiles, BYOE endpoints, and the
|
|
24
|
+
AEE phase lifecycle are all fully wired.
|
|
30
25
|
|
|
31
26
|
```bash
|
|
32
|
-
specsmith
|
|
33
|
-
specsmith
|
|
34
|
-
|
|
35
|
-
specsmith run --agent opus-reviewer # one-shot per-session pin
|
|
27
|
+
specsmith governance-serve --port 7700 # Kairos governance REST API
|
|
28
|
+
specsmith sync # sync .specsmith/ from docs/ markdown
|
|
29
|
+
specsmith agent permissions-check git_push # check tool permission (REG-012)
|
|
36
30
|
```
|
|
37
31
|
|
|
38
32
|
It also co-installs the standalone `epistemic` Python library for direct use in any project:
|
|
@@ -154,47 +148,82 @@ specsmith phase --project-dir ./my-project
|
|
|
154
148
|
|
|
155
149
|
---
|
|
156
150
|
|
|
157
|
-
##
|
|
151
|
+
## Machine State Sync
|
|
158
152
|
|
|
159
|
-
specsmith
|
|
153
|
+
`.specsmith/` always mirrors the human-readable `docs/` governance files.
|
|
154
|
+
Run `specsmith sync` after any change to `docs/REQUIREMENTS.md` or `docs/TESTS.md`:
|
|
160
155
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
156
|
+
```bash
|
|
157
|
+
specsmith sync # regenerate .specsmith/requirements.json + testcases.json
|
|
158
|
+
specsmith sync --check # CI mode: exits 1 if out of sync without writing
|
|
159
|
+
specsmith sync --json # emit sync result as JSON
|
|
160
|
+
```
|
|
164
161
|
|
|
165
|
-
|
|
162
|
+
## Least-Privilege Agent Permissions (REG-012)
|
|
166
163
|
|
|
167
164
|
```bash
|
|
168
|
-
|
|
169
|
-
specsmith agent
|
|
170
|
-
specsmith agent
|
|
171
|
-
specsmith agent improve "add tests for config.py" # self-improvement with reports
|
|
165
|
+
specsmith agent permissions # show active permission profile
|
|
166
|
+
specsmith agent permissions-check git_push # check if git_push is allowed
|
|
167
|
+
specsmith agent permissions-check git_push --no-log # dry-run (no ledger write)
|
|
172
168
|
```
|
|
173
169
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
170
|
+
Configure in `docs/SPECSMITH.yml`:
|
|
171
|
+
```yaml
|
|
172
|
+
agent:
|
|
173
|
+
permissions:
|
|
174
|
+
preset: standard # read_only | standard | extended | admin
|
|
175
|
+
# Or custom:
|
|
176
|
+
allow: [read_file, write_file, run_shell, git_status]
|
|
177
|
+
deny: [git_push, git_create_pr]
|
|
178
|
+
```
|
|
179
179
|
|
|
180
180
|
---
|
|
181
181
|
|
|
182
|
-
##
|
|
182
|
+
## Kairos + Governance REST API
|
|
183
183
|
|
|
184
|
-
**
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
**Kairos** is the companion Rust terminal runtime (`BitConcepts/kairos`). specsmith
|
|
185
|
+
acts as the governance backend: Kairos spawns `specsmith governance-serve` at startup
|
|
186
|
+
and routes all preflight and verify calls through it.
|
|
187
187
|
|
|
188
188
|
```bash
|
|
189
|
+
# Start the governance REST API (Kairos calls this automatically)
|
|
190
|
+
specsmith governance-serve --port 7700 --project-dir .
|
|
191
|
+
|
|
189
192
|
# Classify a natural-language utterance under Specsmith governance
|
|
190
193
|
specsmith preflight "fix the cleanup dry-run regression" --json
|
|
191
194
|
|
|
192
|
-
#
|
|
195
|
+
# Start the agentic REPL
|
|
196
|
+
specsmith run
|
|
197
|
+
> what does the cleanup module do? # read-only ask -> answered
|
|
198
|
+
> fix the cleanup dry-run regression # change -> Specsmith approves, runs
|
|
199
|
+
> delete the entire dist directory # destructive -> needs clarification
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Nexus
|
|
205
|
+
|
|
206
|
+
The Nexus runtime is specsmith's local-first agentic REPL — a
|
|
207
|
+
governance-gated broker that sits between you and the LLM.
|
|
208
|
+
|
|
209
|
+
Every utterance passes through `specsmith preflight` before execution.
|
|
210
|
+
The broker classifies intent, matches requirements, and gates the action.
|
|
211
|
+
After execution, `specsmith verify` checks equilibrium. The `/why` command
|
|
212
|
+
shows the full governance trace.
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Interactive REPL with governance
|
|
193
216
|
specsmith run
|
|
194
|
-
nexus>
|
|
195
|
-
nexus>
|
|
196
|
-
nexus>
|
|
197
|
-
|
|
217
|
+
nexus> fix the cleanup bug # broker classifies → accepts → executes → verifies
|
|
218
|
+
nexus> /why # show governance trace for last action
|
|
219
|
+
nexus> /exit
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
The Nexus broker:
|
|
223
|
+
- **Preflight gate**: every change goes through `specsmith preflight`
|
|
224
|
+
- **Bounded retry**: failed actions retry up to 3× with strategy classification
|
|
225
|
+
- **Execution trace**: every action is sealed in the cryptographic trace vault
|
|
226
|
+
- **`/why` toggle**: shows governance rationale in human-readable form
|
|
198
227
|
```
|
|
199
228
|
|
|
200
229
|
**How it works.** A natural-language **broker** classifies intent, infers scope from
|
|
@@ -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.dev272"
|
|
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"
|