specsmith 0.11.8.dev487__tar.gz → 0.12.0.dev492__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.11.8.dev487/src/specsmith.egg-info → specsmith-0.12.0.dev492}/PKG-INFO +55 -2
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/README.md +54 -1
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/pyproject.toml +5 -1
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/cli.py +71 -0
- specsmith-0.12.0.dev492/src/specsmith/mcp_server.py +618 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492/src/specsmith.egg-info}/PKG-INFO +55 -2
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith.egg-info/SOURCES.txt +2 -0
- specsmith-0.12.0.dev492/tests/test_mcp_server.py +461 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/LICENSE +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/setup.cfg +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/belief.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/certainty.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/py.typed +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/recovery.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/session.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/epistemic/trace.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/__main__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/chat_runner.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/context_seed.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/dispatch/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/dispatch/_status.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/dispatch/dag.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/dispatch/events.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/dispatch/result.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/hf_leaderboard.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/llm_client.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/model_profiles.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/provider_registry.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/repl.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/runner.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/spawner.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/tools.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/architect.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/auditor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/auth.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/block_export.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/channel.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/ci_manager.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/compliance/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/compliance/_compat.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/compliance/checker.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/compliance/evidence.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/compliance/regulations.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/compliance/reporter.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/compressor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/config.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/context_orchestrator.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/context_window.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/credits.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/differ.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/doctor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/drive.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/editor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/epistemic/belief.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/esdb/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/esdb/bridge.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/eval/runner.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/executor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/exporter.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/governance_logic.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/governance_store.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/governance_yaml.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/history_search.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/importer.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/instinct.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/codity.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/issue_reporter.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/languages.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/ledger.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/m002_agents_slim.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/m003_compliance_init.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/m006_session_governance.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/migrations/runner.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/ollama_cmds.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/patent.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/paths.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/phase.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/plugins.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/profiles.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/releaser.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/requirements.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/scaffolder.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/serve.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/session.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/session_init.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/session_store.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/cloud.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/corporate.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/cross_platform.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/devops.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/docs.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/embedded.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/governance.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/hardware.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/mobile.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/productivity.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/specsmith_skills.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills/ssh.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/skills_builder.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/sync.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/tools.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/trace.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/updater.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/upgrader.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/validator.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith/workspace.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_CMD_001.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_agent_run_feedback.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_ai_client.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_ai_intelligence.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_auditor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_channel.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_cli.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_compliance.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_compressor.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_dispatch.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_epistemic.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_importer.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_integrations.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_integrations_codity.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_intelligence.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_issue_reporter.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_mcp_client.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_new_modules.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_nexus.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_permissions.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_rate_limits.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_req_248_262.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_req_358_359.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_scaffolder.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_smoke.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_suggester.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_tools.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_validator.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_vcs.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/tests/test_warp_parity.py +0 -0
- {specsmith-0.11.8.dev487 → specsmith-0.12.0.dev492}/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.
|
|
3
|
+
Version: 0.12.0.dev492
|
|
4
4
|
Summary: Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands.
|
|
5
5
|
Author: BitConcepts
|
|
6
6
|
License-Expression: MIT
|
|
@@ -87,7 +87,7 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
87
87
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
88
88
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
89
89
|
|
|
90
|
-
**v0.
|
|
90
|
+
**v0.12.0 — Native Warp/Oz MCP governance server, repository workflows, 72 built-in skills, EU AI Act / NIST AI RMF compliance, multi-agent DAG dispatch, and context window management.**
|
|
91
91
|
Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
|
|
92
92
|
and the NIST AI Risk Management Framework 1.0. Every agent action is cryptographically sealed,
|
|
93
93
|
every AI-generated output is disclosed, context windows are GPU-aware and protected against
|
|
@@ -994,6 +994,59 @@ oz agent run-cloud --skill "layer1labs/specsmith:specsmith-save" --prompt "save
|
|
|
994
994
|
|
|
995
995
|
---
|
|
996
996
|
|
|
997
|
+
## Warp Terminal Integration (v0.12.0)
|
|
998
|
+
|
|
999
|
+
specsmith ships native integration with [Warp](https://www.warp.dev) terminal — both as
|
|
1000
|
+
an MCP server and as repository workflows.
|
|
1001
|
+
|
|
1002
|
+
### Native MCP Governance Server
|
|
1003
|
+
|
|
1004
|
+
`specsmith mcp serve` starts a zero-dependency stdio MCP server (JSON-RPC 2.0, MCP 2024-11-05).
|
|
1005
|
+
Warp/Oz, Cursor, Claude Code, or any other MCP client can call governance commands as structured
|
|
1006
|
+
tool calls — no shell roundtrip, fully typed inputs and outputs.
|
|
1007
|
+
|
|
1008
|
+
**Setup (one time):**
|
|
1009
|
+
|
|
1010
|
+
```bash
|
|
1011
|
+
# Get the Warp config snippet
|
|
1012
|
+
specsmith mcp install-warp
|
|
1013
|
+
```
|
|
1014
|
+
|
|
1015
|
+
Copy the output JSON into **Warp Settings → Agents → MCP servers**. Or pass it inline:
|
|
1016
|
+
|
|
1017
|
+
```bash
|
|
1018
|
+
oz agent run --mcp '{"specsmith-governance": {"command": "specsmith", "args": ["mcp", "serve"]}}' \
|
|
1019
|
+
--prompt "check governance health and preflight my next change"
|
|
1020
|
+
```
|
|
1021
|
+
|
|
1022
|
+
**Six MCP tools exposed:**
|
|
1023
|
+
|
|
1024
|
+
| Tool | What it returns |
|
|
1025
|
+
|---|---|
|
|
1026
|
+
| `governance_audit` | Full audit health JSON — passed/failed checks, fixable count |
|
|
1027
|
+
| `governance_checkpoint` | GOVERNANCE ANCHOR snapshot — phase, health, REQ/TEST counts, ESDB chain |
|
|
1028
|
+
| `governance_preflight` | Preflight decision — `accepted`/`needs_clarification` + `work_item_id` |
|
|
1029
|
+
| `governance_phase` | Current AEE phase, readiness %, failing checks |
|
|
1030
|
+
| `governance_req_list` | All requirements with status + test coverage, filterable |
|
|
1031
|
+
| `governance_trace_seal` | Create a cryptographic trace vault seal |
|
|
1032
|
+
|
|
1033
|
+
### Repository Workflows (Ctrl+Shift+R)
|
|
1034
|
+
|
|
1035
|
+
Clone this repo and open it in Warp — seven governance workflows appear automatically in
|
|
1036
|
+
`Ctrl+Shift+R` search:
|
|
1037
|
+
|
|
1038
|
+
| Workflow | Command |
|
|
1039
|
+
|---|---|
|
|
1040
|
+
| specsmith — Session Start | Full bootstrap: kill → migrate → audit → sync → checkpoint |
|
|
1041
|
+
| specsmith — Audit | `specsmith audit` |
|
|
1042
|
+
| specsmith — Checkpoint | `specsmith checkpoint` (emits GOVERNANCE ANCHOR) |
|
|
1043
|
+
| specsmith — Preflight | `specsmith preflight "{{intent}}" --json` |
|
|
1044
|
+
| specsmith — Save | `specsmith save` |
|
|
1045
|
+
| specsmith — Phase Status | `specsmith phase show` |
|
|
1046
|
+
| specsmith — Session End | `specsmith save && specsmith kill-session` |
|
|
1047
|
+
|
|
1048
|
+
---
|
|
1049
|
+
|
|
997
1050
|
## The specsmith Bootstrap
|
|
998
1051
|
|
|
999
1052
|
specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
|
|
@@ -15,7 +15,7 @@ specsmith treats belief systems like code: codable, testable, and deployable. It
|
|
|
15
15
|
epistemically-governed projects, stress-tests requirements as BeliefArtifacts, runs
|
|
16
16
|
cryptographically-sealed trace vaults, and orchestrates AI agents under formal AEE governance.
|
|
17
17
|
|
|
18
|
-
**v0.
|
|
18
|
+
**v0.12.0 — Native Warp/Oz MCP governance server, repository workflows, 72 built-in skills, EU AI Act / NIST AI RMF compliance, multi-agent DAG dispatch, and context window management.**
|
|
19
19
|
Specsmith ships a full compliance and auditability layer aligned to the EU AI Act (2024/1689)
|
|
20
20
|
and the NIST AI Risk Management Framework 1.0. Every agent action is cryptographically sealed,
|
|
21
21
|
every AI-generated output is disclosed, context windows are GPU-aware and protected against
|
|
@@ -922,6 +922,59 @@ oz agent run-cloud --skill "layer1labs/specsmith:specsmith-save" --prompt "save
|
|
|
922
922
|
|
|
923
923
|
---
|
|
924
924
|
|
|
925
|
+
## Warp Terminal Integration (v0.12.0)
|
|
926
|
+
|
|
927
|
+
specsmith ships native integration with [Warp](https://www.warp.dev) terminal — both as
|
|
928
|
+
an MCP server and as repository workflows.
|
|
929
|
+
|
|
930
|
+
### Native MCP Governance Server
|
|
931
|
+
|
|
932
|
+
`specsmith mcp serve` starts a zero-dependency stdio MCP server (JSON-RPC 2.0, MCP 2024-11-05).
|
|
933
|
+
Warp/Oz, Cursor, Claude Code, or any other MCP client can call governance commands as structured
|
|
934
|
+
tool calls — no shell roundtrip, fully typed inputs and outputs.
|
|
935
|
+
|
|
936
|
+
**Setup (one time):**
|
|
937
|
+
|
|
938
|
+
```bash
|
|
939
|
+
# Get the Warp config snippet
|
|
940
|
+
specsmith mcp install-warp
|
|
941
|
+
```
|
|
942
|
+
|
|
943
|
+
Copy the output JSON into **Warp Settings → Agents → MCP servers**. Or pass it inline:
|
|
944
|
+
|
|
945
|
+
```bash
|
|
946
|
+
oz agent run --mcp '{"specsmith-governance": {"command": "specsmith", "args": ["mcp", "serve"]}}' \
|
|
947
|
+
--prompt "check governance health and preflight my next change"
|
|
948
|
+
```
|
|
949
|
+
|
|
950
|
+
**Six MCP tools exposed:**
|
|
951
|
+
|
|
952
|
+
| Tool | What it returns |
|
|
953
|
+
|---|---|
|
|
954
|
+
| `governance_audit` | Full audit health JSON — passed/failed checks, fixable count |
|
|
955
|
+
| `governance_checkpoint` | GOVERNANCE ANCHOR snapshot — phase, health, REQ/TEST counts, ESDB chain |
|
|
956
|
+
| `governance_preflight` | Preflight decision — `accepted`/`needs_clarification` + `work_item_id` |
|
|
957
|
+
| `governance_phase` | Current AEE phase, readiness %, failing checks |
|
|
958
|
+
| `governance_req_list` | All requirements with status + test coverage, filterable |
|
|
959
|
+
| `governance_trace_seal` | Create a cryptographic trace vault seal |
|
|
960
|
+
|
|
961
|
+
### Repository Workflows (Ctrl+Shift+R)
|
|
962
|
+
|
|
963
|
+
Clone this repo and open it in Warp — seven governance workflows appear automatically in
|
|
964
|
+
`Ctrl+Shift+R` search:
|
|
965
|
+
|
|
966
|
+
| Workflow | Command |
|
|
967
|
+
|---|---|
|
|
968
|
+
| specsmith — Session Start | Full bootstrap: kill → migrate → audit → sync → checkpoint |
|
|
969
|
+
| specsmith — Audit | `specsmith audit` |
|
|
970
|
+
| specsmith — Checkpoint | `specsmith checkpoint` (emits GOVERNANCE ANCHOR) |
|
|
971
|
+
| specsmith — Preflight | `specsmith preflight "{{intent}}" --json` |
|
|
972
|
+
| specsmith — Save | `specsmith save` |
|
|
973
|
+
| specsmith — Phase Status | `specsmith phase show` |
|
|
974
|
+
| specsmith — Session End | `specsmith save && specsmith kill-session` |
|
|
975
|
+
|
|
976
|
+
---
|
|
977
|
+
|
|
925
978
|
## The specsmith Bootstrap
|
|
926
979
|
|
|
927
980
|
specsmith governs itself — the specsmith repo is a specsmith-managed project. Run `specsmith audit`
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.12.0.dev492"
|
|
8
8
|
description = "Applied Epistemic Engineering toolkit — AEE agent sessions, execution profiles, FPGA/HDL governance, tool installer, 50+ CLI commands."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -129,6 +129,8 @@ select = ["E", "F", "W", "I", "UP", "B", "SIM"]
|
|
|
129
129
|
"src/specsmith/context_orchestrator.py" = ["E501"]
|
|
130
130
|
# Skills module: skill body strings contain markdown content with long lines
|
|
131
131
|
"src/specsmith/skills/*.py" = ["E501"]
|
|
132
|
+
# MCP server module: tool schema description strings are long but cannot be split
|
|
133
|
+
"src/specsmith/mcp_server.py" = ["E501"]
|
|
132
134
|
# Migration files: rule description strings and template content
|
|
133
135
|
"src/specsmith/migrations/m001_governance_yaml.py" = ["E501"]
|
|
134
136
|
"src/specsmith/migrations/m004_ledger_esdb.py" = ["E501"]
|
|
@@ -220,6 +222,8 @@ module = [
|
|
|
220
222
|
"specsmith.ci_manager",
|
|
221
223
|
"specsmith.context_orchestrator",
|
|
222
224
|
"specsmith.session_store",
|
|
225
|
+
# MCP server: lazy in-function imports and dynamic Any patterns
|
|
226
|
+
"specsmith.mcp_server",
|
|
223
227
|
]
|
|
224
228
|
ignore_errors = true
|
|
225
229
|
|
|
@@ -9019,6 +9019,77 @@ def mcp_list_cmd(project_dir: str, as_json: bool) -> None:
|
|
|
9019
9019
|
console.print(f" [dim]{s['description']}[/dim]")
|
|
9020
9020
|
|
|
9021
9021
|
|
|
9022
|
+
@mcp_group.command(name="serve")
|
|
9023
|
+
@click.option("--project-dir", type=click.Path(), default=".", show_default=True)
|
|
9024
|
+
def mcp_serve_cmd(project_dir: str) -> None:
|
|
9025
|
+
"""Start the native governance MCP stdio server (REQ-363).
|
|
9026
|
+
|
|
9027
|
+
Implements MCP 2024-11-05 over stdin/stdout (JSON-RPC 2.0).
|
|
9028
|
+
Exposes six governance tools to any MCP client:
|
|
9029
|
+
|
|
9030
|
+
\b
|
|
9031
|
+
governance_audit Run governance audit
|
|
9032
|
+
governance_checkpoint Emit GOVERNANCE ANCHOR JSON
|
|
9033
|
+
governance_preflight Preflight a change intent
|
|
9034
|
+
governance_phase Current AEE phase + readiness %
|
|
9035
|
+
governance_req_list List all requirements
|
|
9036
|
+
governance_trace_seal Seal a milestone/decision
|
|
9037
|
+
|
|
9038
|
+
\b
|
|
9039
|
+
Warp config (Settings → Agents → MCP servers)::
|
|
9040
|
+
|
|
9041
|
+
{"specsmith-governance": {"command": "specsmith", "args": ["mcp", "serve"]}}
|
|
9042
|
+
|
|
9043
|
+
\b
|
|
9044
|
+
Or pass inline to oz (use ``specsmith mcp install-warp`` for the full snippet)::
|
|
9045
|
+
|
|
9046
|
+
oz agent run --mcp "$(specsmith mcp install-warp --json)" --prompt "..."
|
|
9047
|
+
"""
|
|
9048
|
+
from specsmith.mcp_server import run_server
|
|
9049
|
+
|
|
9050
|
+
run_server(project_dir=project_dir)
|
|
9051
|
+
|
|
9052
|
+
|
|
9053
|
+
@mcp_group.command(name="install-warp")
|
|
9054
|
+
@click.option("--project-dir", type=click.Path(), default=".", show_default=True)
|
|
9055
|
+
@click.option("--json", "as_json", is_flag=True, default=False, help="Emit JSON config only.")
|
|
9056
|
+
def mcp_install_warp_cmd(project_dir: str, as_json: bool) -> None:
|
|
9057
|
+
"""Print the Warp MCP config snippet for the governance server (REQ-363).
|
|
9058
|
+
|
|
9059
|
+
Copy the output into Warp Settings → Agents → MCP servers, or pass it
|
|
9060
|
+
to ``oz agent run --mcp '<json>'`` for a one-off cloud agent run.
|
|
9061
|
+
"""
|
|
9062
|
+
import json as _json
|
|
9063
|
+
import os
|
|
9064
|
+
import sys
|
|
9065
|
+
|
|
9066
|
+
config = {
|
|
9067
|
+
"specsmith-governance": {
|
|
9068
|
+
"command": (
|
|
9069
|
+
sys.executable if os.environ.get("SPECSMITH_ALLOW_NON_PIPX") else "specsmith"
|
|
9070
|
+
),
|
|
9071
|
+
"args": ["mcp", "serve", "--project-dir", str(Path(project_dir).resolve())],
|
|
9072
|
+
}
|
|
9073
|
+
}
|
|
9074
|
+
|
|
9075
|
+
if as_json:
|
|
9076
|
+
click.echo(_json.dumps(config, indent=2))
|
|
9077
|
+
return
|
|
9078
|
+
|
|
9079
|
+
console.print("[bold green]specsmith Governance MCP Server[/bold green]\n")
|
|
9080
|
+
console.print(
|
|
9081
|
+
"Add the following to [bold]Warp Settings → Agents → MCP servers[/bold],\n"
|
|
9082
|
+
"or pass inline to [bold]oz agent run --mcp '<json>'[/bold]:\n"
|
|
9083
|
+
)
|
|
9084
|
+
console.print(_json.dumps(config, indent=2))
|
|
9085
|
+
console.print(
|
|
9086
|
+
"\n[dim]After adding, Warp/Oz can call governance_audit, governance_preflight,\n"
|
|
9087
|
+
"governance_checkpoint, governance_phase, governance_req_list, and\n"
|
|
9088
|
+
"governance_trace_seal as structured MCP tool calls.\n"
|
|
9089
|
+
"\nVerify with: specsmith mcp serve (then send an initialize message).[/dim]"
|
|
9090
|
+
)
|
|
9091
|
+
|
|
9092
|
+
|
|
9022
9093
|
main.add_command(mcp_group)
|
|
9023
9094
|
|
|
9024
9095
|
|