specsmith 0.10.1.dev298__tar.gz → 0.11.3.dev418__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.dev298/src/specsmith.egg-info → specsmith-0.11.3.dev418}/PKG-INFO +290 -24
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/README.md +289 -23
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/pyproject.toml +36 -1
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/__init__.py +1 -1
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/broker.py +34 -5
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/chat_runner.py +27 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/context_seed.py +209 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/core.py +1 -1
- specsmith-0.11.3.dev418/src/specsmith/agent/dispatch/__init__.py +35 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/dispatch/_status.py +18 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/dispatch/dag.py +292 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/dispatch/dispatcher.py +498 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/dispatch/events.py +277 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/dispatch/result.py +64 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/events.py +2 -2
- specsmith-0.11.3.dev418/src/specsmith/agent/hf_leaderboard.py +947 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/llm_client.py +550 -0
- specsmith-0.11.3.dev418/src/specsmith/agent/model_profiles.py +494 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/orchestrator.py +117 -2
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/provider_registry.py +307 -11
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/repl.py +22 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/runner.py +32 -11
- specsmith-0.11.3.dev418/src/specsmith/agent/spawner.py +179 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/suggester.py +1 -1
- specsmith-0.11.3.dev418/src/specsmith/agent/tools.py +693 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/voice.py +13 -5
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/auditor.py +408 -20
- specsmith-0.11.3.dev418/src/specsmith/channel.py +112 -0
- specsmith-0.11.3.dev418/src/specsmith/ci_manager.py +498 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/cli.py +2826 -111
- specsmith-0.11.3.dev418/src/specsmith/compliance/__init__.py +66 -0
- specsmith-0.10.1.dev298/src/specsmith/compliance.py → specsmith-0.11.3.dev418/src/specsmith/compliance/_compat.py +52 -3
- specsmith-0.11.3.dev418/src/specsmith/compliance/checker.py +311 -0
- specsmith-0.11.3.dev418/src/specsmith/compliance/evidence.py +497 -0
- specsmith-0.11.3.dev418/src/specsmith/compliance/regulations.py +798 -0
- specsmith-0.11.3.dev418/src/specsmith/compliance/reporter.py +259 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/compressor.py +19 -9
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/config.py +112 -0
- specsmith-0.11.3.dev418/src/specsmith/context_orchestrator.py +290 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/differ.py +29 -0
- specsmith-0.11.3.dev418/src/specsmith/doctor.py +217 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/epistemic/belief.py +31 -7
- specsmith-0.11.3.dev418/src/specsmith/eval/runner.py +208 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/governance_logic.py +192 -22
- specsmith-0.11.3.dev418/src/specsmith/governance_store.py +173 -0
- specsmith-0.11.3.dev418/src/specsmith/governance_yaml.py +544 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/importer.py +145 -4
- specsmith-0.11.3.dev418/src/specsmith/issue_reporter.py +373 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/languages.py +1 -1
- specsmith-0.11.3.dev418/src/specsmith/migrations/__init__.py +136 -0
- specsmith-0.11.3.dev418/src/specsmith/migrations/m001_governance_yaml.py +133 -0
- specsmith-0.11.3.dev418/src/specsmith/migrations/m002_agents_slim.py +106 -0
- specsmith-0.11.3.dev418/src/specsmith/migrations/m003_compliance_init.py +108 -0
- specsmith-0.11.3.dev418/src/specsmith/migrations/m004_ledger_esdb.py +91 -0
- specsmith-0.11.3.dev418/src/specsmith/migrations/m005_agent_run_tool.py +191 -0
- specsmith-0.11.3.dev418/src/specsmith/migrations/runner.py +116 -0
- specsmith-0.11.3.dev418/src/specsmith/ollama_cmds.py +409 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/phase.py +37 -7
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/rate_limits.py +152 -3
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/requirements_parser.py +0 -1
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/retrieval.py +29 -1
- specsmith-0.11.3.dev418/src/specsmith/serve.py +808 -0
- specsmith-0.11.3.dev418/src/specsmith/session_store.py +144 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/__init__.py +249 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/cloud.py +457 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/corporate.py +901 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/cross_platform.py +291 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/devops.py +525 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/docs.py +1003 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/embedded.py +884 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/governance.py +168 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/hardware.py +1442 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/mobile.py +420 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/productivity.py +336 -0
- specsmith-0.11.3.dev418/src/specsmith/skills/ssh.py +377 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/skills_builder.py +135 -22
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/sync.py +188 -25
- specsmith-0.11.3.dev418/src/specsmith/templates/agents.md.j2 +47 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/python/pyproject.toml.j2 +1 -1
- specsmith-0.11.3.dev418/src/specsmith/templates/scripts/setup.cmd.j2 +46 -0
- specsmith-0.11.3.dev418/src/specsmith/templates/scripts/setup.sh.j2 +33 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/tools.py +46 -11
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/updater.py +6 -3
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/upgrader.py +93 -7
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/vcs/github.py +11 -11
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418/src/specsmith.egg-info}/PKG-INFO +290 -24
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith.egg-info/SOURCES.txt +49 -4
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_agent_profiles.py +2 -1
- specsmith-0.11.3.dev418/tests/test_ai_client.py +206 -0
- specsmith-0.11.3.dev418/tests/test_ai_intelligence.py +601 -0
- specsmith-0.11.3.dev418/tests/test_channel.py +205 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_chat_stdin_protocol.py +1 -1
- specsmith-0.11.3.dev418/tests/test_dispatch.py +961 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_intelligence.py +9 -2
- specsmith-0.11.3.dev418/tests/test_issue_reporter.py +351 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_new_modules.py +2 -1
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_nexus.py +10 -0
- specsmith-0.11.3.dev418/tests/test_req_248_262.py +749 -0
- specsmith-0.10.1.dev298/src/specsmith/agent/spawner.py +0 -92
- specsmith-0.10.1.dev298/src/specsmith/agent/tools.py +0 -343
- specsmith-0.10.1.dev298/src/specsmith/doctor.py +0 -124
- specsmith-0.10.1.dev298/src/specsmith/esdb/__init__.py +0 -20
- specsmith-0.10.1.dev298/src/specsmith/esdb/bridge.py +0 -137
- specsmith-0.10.1.dev298/src/specsmith/eval/runner.py +0 -102
- specsmith-0.10.1.dev298/src/specsmith/serve.py +0 -345
- specsmith-0.10.1.dev298/src/specsmith/skills.py +0 -199
- specsmith-0.10.1.dev298/src/specsmith/templates/agents.md.j2 +0 -256
- specsmith-0.10.1.dev298/src/specsmith/templates/scripts/setup.cmd.j2 +0 -23
- specsmith-0.10.1.dev298/src/specsmith/templates/scripts/setup.sh.j2 +0 -12
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/LICENSE +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/setup.cfg +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/belief.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/certainty.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/py.typed +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/recovery.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/session.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/epistemic/trace.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/__main__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/architect.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/auth.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/block_export.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/context_window.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/credits.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/drive.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/editor.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/executor.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/exporter.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/history_search.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/instinct.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/ledger.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/patent.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/paths.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/plugins.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/profiles.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/releaser.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/requirements.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/scaffolder.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/session.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/session_init.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/trace.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/validator.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith/workspace.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_CMD_001.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_auditor.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_cli.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_compliance.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_compressor.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_epistemic.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_importer.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_integrations.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_mcp_client.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_permissions.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_rate_limits.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_scaffolder.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_smoke.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_suggester.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_tools.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_validator.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_vcs.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/tests/test_warp_parity.py +0 -0
- {specsmith-0.10.1.dev298 → specsmith-0.11.3.dev418}/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.11.3.dev418
|
|
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
|
|
@@ -72,8 +72,8 @@ Dynamic: license-file
|
|
|
72
72
|
|
|
73
73
|
# specsmith
|
|
74
74
|
|
|
75
|
-
[](https://github.com/sponsors/
|
|
75
|
+
[](https://github.com/layer1labs/specsmith/actions/workflows/ci.yml)
|
|
76
|
+
[](https://github.com/sponsors/layer1labs)
|
|
77
77
|
[](https://specsmith.readthedocs.io/en/stable/)
|
|
78
78
|
[](https://pypi.org/project/specsmith/)
|
|
79
79
|
[](https://www.python.org/downloads/)
|
|
@@ -96,10 +96,35 @@ per-session and per-project.
|
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
98
|
specsmith governance-serve --port 7700 # Kairos governance REST API
|
|
99
|
-
specsmith sync # sync
|
|
99
|
+
specsmith sync # sync YAML → JSON → MD (YAML-first mode)
|
|
100
|
+
specsmith generate docs # regenerate REQUIREMENTS.md + TESTS.md from YAML
|
|
101
|
+
specsmith validate --strict # YAML schema checks: dup IDs, orphans, coverage
|
|
100
102
|
specsmith agent permissions-check git_push # check tool permission (REQ-012)
|
|
101
103
|
specsmith ollama gpu # detect GPU VRAM, recommend context size
|
|
102
104
|
specsmith export # generate full compliance report
|
|
105
|
+
|
|
106
|
+
# Update channel management (REQ-248)
|
|
107
|
+
specsmith channel set stable # pin to stable releases
|
|
108
|
+
specsmith channel set dev # opt in to dev/pre-release builds
|
|
109
|
+
specsmith channel get --json # show current channel + source
|
|
110
|
+
|
|
111
|
+
# ESDB extended lifecycle (REQ-249..253)
|
|
112
|
+
specsmith esdb export --json # dump all records to JSON snapshot
|
|
113
|
+
specsmith esdb import backup.json # validate + stage an import
|
|
114
|
+
specsmith esdb backup # create timestamped snapshot
|
|
115
|
+
specsmith esdb rollback --steps 2 # report WAL rollback (stub)
|
|
116
|
+
specsmith esdb compact # request WAL compaction
|
|
117
|
+
|
|
118
|
+
# Skills lifecycle (REQ-254..255)
|
|
119
|
+
specsmith skills deactivate <skill-id> # set active=false in skill.json
|
|
120
|
+
specsmith skills delete <skill-id> --yes # permanently remove skill
|
|
121
|
+
|
|
122
|
+
# MCP config generation (REQ-256)
|
|
123
|
+
specsmith mcp generate "Search USPTO patents" --json # JSON config stub
|
|
124
|
+
|
|
125
|
+
# Agent ask dispatcher — no LLM required (REQ-257)
|
|
126
|
+
specsmith agent ask "show esdb status" --json-output
|
|
127
|
+
specsmith agent ask "build skill for summarizing"
|
|
103
128
|
```
|
|
104
129
|
|
|
105
130
|
It also co-installs the standalone `epistemic` Python library for direct use in any project:
|
|
@@ -213,17 +238,47 @@ specsmith phase --project-dir ./my-project
|
|
|
213
238
|
|
|
214
239
|
---
|
|
215
240
|
|
|
216
|
-
## Machine State Sync
|
|
241
|
+
## Machine State Sync + YAML Governance
|
|
217
242
|
|
|
218
|
-
|
|
219
|
-
|
|
243
|
+
As of v0.12, specsmith uses **YAML-first governance**: `docs/requirements/*.yml`
|
|
244
|
+
and `docs/tests/*.yml` are the canonical sources. `REQUIREMENTS.md` and `TESTS.md`
|
|
245
|
+
are **generated artifacts** — do not hand-edit them.
|
|
220
246
|
|
|
221
247
|
```bash
|
|
222
|
-
|
|
223
|
-
specsmith sync
|
|
224
|
-
specsmith
|
|
248
|
+
# YAML-first pipeline (v0.12+)
|
|
249
|
+
specsmith sync # YAML → .specsmith/*.json → docs/*.md (all in one)
|
|
250
|
+
specsmith generate docs # regenerate only the Markdown artifacts from YAML
|
|
251
|
+
specsmith generate docs --check # dry-run: report what would change
|
|
252
|
+
specsmith validate --strict # enforce schema: dup IDs, orphans, missing fields
|
|
253
|
+
specsmith validate --strict --json # machine-readable validation result
|
|
254
|
+
|
|
255
|
+
# CI guard (already in .github/workflows/ci.yml)
|
|
256
|
+
specsmith sync --check # exits 1 if JSON cache is out of sync with YAML
|
|
225
257
|
```
|
|
226
258
|
|
|
259
|
+
**To add a new requirement**, edit the appropriate `docs/requirements/<domain>.yml`
|
|
260
|
+
file and run `specsmith sync`. **Never** hand-edit `docs/REQUIREMENTS.md` — it will
|
|
261
|
+
be overwritten by the next sync.
|
|
262
|
+
|
|
263
|
+
**Domain files:**
|
|
264
|
+
|
|
265
|
+
| File | REQ range | Domain |
|
|
266
|
+
|---|---|---|
|
|
267
|
+
| `docs/requirements/governance.yml` | REQ-001..064 | Core AEE governance |
|
|
268
|
+
| `docs/requirements/agent.yml` | REQ-065..129 | Nexus + CI |
|
|
269
|
+
| `docs/requirements/harness.yml` | REQ-130..160 | Slash commands + subagents |
|
|
270
|
+
| `docs/requirements/intelligence.yml` | REQ-161..220 | Instinct, eval, memory |
|
|
271
|
+
| `docs/requirements/context.yml` | REQ-244..247 | Context window |
|
|
272
|
+
| `docs/requirements/esdb.yml` | REQ-248..262 | ESDB + skills + MCP |
|
|
273
|
+
| `docs/requirements/ai_intelligence.yml` | REQ-263..299 | AI model intelligence |
|
|
274
|
+
| `docs/requirements/yaml_governance.yml` | REQ-300..312 | YAML governance layer |
|
|
275
|
+
| `docs/requirements/multiagent_compliance.yml` | REQ-313..320 | Multi-agent governance traceability |
|
|
276
|
+
| `docs/requirements/dispatch.yml` | REQ-321..334 | Multi-agent DAG dispatcher |
|
|
277
|
+
|
|
278
|
+
**Migration from Markdown-primary:** Run
|
|
279
|
+
`scripts/migrate_governance_to_yaml.py` once to convert an existing project.
|
|
280
|
+
Idempotent — safe to re-run.
|
|
281
|
+
|
|
227
282
|
## Least-Privilege Agent Permissions (REG-012)
|
|
228
283
|
|
|
229
284
|
```bash
|
|
@@ -269,11 +324,11 @@ human oversight, and robustness. specsmith implements:
|
|
|
269
324
|
across the AI lifecycle. specsmith addresses all four core functions:
|
|
270
325
|
|
|
271
326
|
| NIST AI RMF Function | specsmith Mechanism |
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
327
|
+
||---|
|
|
328
|
+
|| **GOVERN** — Policies & accountability | Governance rules (H1–H22), permissions profile, `scaffold.yml` policy |
|
|
329
|
+
|| **MAP** — Risk identification | AEE stress-test, belief graph, contradictions and uncertainty metrics |
|
|
330
|
+
|| **MEASURE** — Risk analysis | Confidence scoring, epistemic equilibrium, `specsmith epistemic-audit` |
|
|
331
|
+
|| **MANAGE** — Risk treatment | Kill-switch, escalation, bounded retry, safe-write backup, permissions deny-list |
|
|
277
332
|
|
|
278
333
|
### How Each Compliance Mechanism Works
|
|
279
334
|
|
|
@@ -526,6 +581,177 @@ requirement, test, and work-item identifiers Specsmith assigned.
|
|
|
526
581
|
|
|
527
582
|
---
|
|
528
583
|
|
|
584
|
+
## AI Model Intelligence
|
|
585
|
+
|
|
586
|
+
specsmith ships a complete AI model intelligence layer for tracking, scoring, and routing
|
|
587
|
+
to the best available LLM for each task type.
|
|
588
|
+
|
|
589
|
+
### HF Open LLM Leaderboard Sync (REQ-263..REQ-269)
|
|
590
|
+
|
|
591
|
+
Syncs benchmark data from the HuggingFace Open LLM Leaderboard and computes three
|
|
592
|
+
task-specific bucket scores — **reasoning**, **conversational**, and **longform** — for
|
|
593
|
+
every model. A 40+ model static fallback ensures scores are always available even without
|
|
594
|
+
network access.
|
|
595
|
+
|
|
596
|
+
```bash
|
|
597
|
+
specsmith model-intel sync # sync from HF leaderboard (static fallback if offline)
|
|
598
|
+
specsmith model-intel scores # list all cached bucket scores
|
|
599
|
+
specsmith model-intel scores --model gpt-4o # show scores for a specific model
|
|
600
|
+
specsmith model-intel recommendations # top-10 models for reasoning bucket
|
|
601
|
+
specsmith model-intel recommendations --bucket conversational # or longform
|
|
602
|
+
specsmith model-intel connection # test HF API connectivity + token status
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
Set `SPECSMITH_HF_TOKEN` for authenticated access (1000 req/5min instead of 500).
|
|
606
|
+
Scores persist to `~/.specsmith/model_scores.json`. Background sync runs 15s after startup
|
|
607
|
+
then daily.
|
|
608
|
+
|
|
609
|
+
**Bucket formulas (normalised 0-100):**
|
|
610
|
+
- Reasoning = 0.35×MATH + 0.30×GPQA + 0.25×BBH + 0.10×IFEval
|
|
611
|
+
- Conversational = 0.40×IFEval + 0.35×MMLU-PRO + 0.25×BBH
|
|
612
|
+
- Longform = 0.35×MUSR + 0.35×IFEval + 0.30×MMLU-PRO
|
|
613
|
+
|
|
614
|
+
### Model Capability Profiles (REQ-270..REQ-271)
|
|
615
|
+
|
|
616
|
+
40+ pre-built model profiles cover all major providers (OpenAI, Anthropic, Google, Mistral,
|
|
617
|
+
Meta Llama, Qwen, DeepSeek, and local Ollama variants). Each profile specifies:
|
|
618
|
+
`max_tokens`, `prompt_style` (sections/xml/markdown), `supports_vision`,
|
|
619
|
+
`supports_tool_calls`, `reasoning_mode`, and `context_window`.
|
|
620
|
+
|
|
621
|
+
Context-aware history trimming preserves system messages while summarising older turns when
|
|
622
|
+
the token budget is exceeded:
|
|
623
|
+
|
|
624
|
+
```python
|
|
625
|
+
from specsmith.agent.model_profiles import get_profile, trim_history
|
|
626
|
+
|
|
627
|
+
profile = get_profile("qwen2.5:14b") # exact or prefix match; returns default if unknown
|
|
628
|
+
messages = trim_history(messages, budget_chars=12000)
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
### LLM Client with Provider Fallback (REQ-275..REQ-277)
|
|
632
|
+
|
|
633
|
+
`LLMClient` wraps multiple providers with automatic fallback on 429 / 401 errors,
|
|
634
|
+
O-series parameter translation (`max_completion_tokens`, temperature=1, developer role),
|
|
635
|
+
and vLLM guided-JSON payload injection:
|
|
636
|
+
|
|
637
|
+
```python
|
|
638
|
+
from specsmith.agent.llm_client import LLMClient
|
|
639
|
+
|
|
640
|
+
client = LLMClient([
|
|
641
|
+
{"provider_type": "cloud", "model": "gpt-4o", ...},
|
|
642
|
+
{"provider_type": "ollama", "model": "qwen2.5:14b", ...}, # local fallback
|
|
643
|
+
])
|
|
644
|
+
result = client.chat([{"role": "user", "content": "hello"}])
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
### Endpoint Presets + Suggest Profiles (REQ-278..REQ-280)
|
|
648
|
+
|
|
649
|
+
A registry of 10+ pre-configured endpoint presets for common cloud and local LLM providers:
|
|
650
|
+
|
|
651
|
+
```bash
|
|
652
|
+
specsmith agent endpoint-presets # list all presets (vllm, lm_studio, openrouter, etc.)
|
|
653
|
+
specsmith agent endpoint-presets --json # machine-readable output
|
|
654
|
+
specsmith agent suggest-profiles # suggest optimal profiles based on env (API keys, hardware)
|
|
655
|
+
specsmith agent suggest-profiles --json # structured suggestions with bucket/role annotations
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
Suggestions are read-only (never persisted) and inspect `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`,
|
|
659
|
+
`GOOGLE_API_KEY`, and local Ollama availability.
|
|
660
|
+
|
|
661
|
+
### Kairos AI Providers — Bucket Score Columns (REQ-281)
|
|
662
|
+
|
|
663
|
+
The Kairos **Agents > AI Providers** table gained three new columns — **R** (reasoning),
|
|
664
|
+
**C** (conversational), **L** (longform) — showing each provider's HF bucket scores inline.
|
|
665
|
+
A **Sync Scores** button triggers a background sync from the HF leaderboard without
|
|
666
|
+
interrupting the active session.
|
|
667
|
+
|
|
668
|
+
---
|
|
669
|
+
|
|
670
|
+
## Multi-Agent DAG Dispatcher (REQ-321..334)
|
|
671
|
+
|
|
672
|
+
The `specsmith dispatch` command group decomposes a task into a **Directed Acyclic Graph** of
|
|
673
|
+
agent work items and executes them concurrently, with fail-forward BLOCKED propagation and
|
|
674
|
+
ESDB context injection between nodes.
|
|
675
|
+
|
|
676
|
+
```bash
|
|
677
|
+
# Run a task through the DAG dispatcher (default: up to 4 concurrent workers)
|
|
678
|
+
specsmith dispatch run "add API endpoint with tests" --max-workers 4
|
|
679
|
+
|
|
680
|
+
# Stream JSONL events while the run is in progress
|
|
681
|
+
specsmith dispatch run "refactor auth module" --json
|
|
682
|
+
|
|
683
|
+
# Check status of a saved run
|
|
684
|
+
specsmith dispatch status --dag-id abc123def456
|
|
685
|
+
|
|
686
|
+
# List all saved runs
|
|
687
|
+
specsmith dispatch list
|
|
688
|
+
|
|
689
|
+
# Retry a single failed node from a checkpoint
|
|
690
|
+
specsmith dispatch retry --node impl --dag-id abc123def456
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
The dispatcher is also available programmatically:
|
|
694
|
+
|
|
695
|
+
```python
|
|
696
|
+
from specsmith.agent.orchestrator import Orchestrator
|
|
697
|
+
|
|
698
|
+
orchestrator = Orchestrator()
|
|
699
|
+
|
|
700
|
+
# Use the DAG path (falls back to GroupChat on cycle detection)
|
|
701
|
+
result = orchestrator.run_task("add feature X", use_dag=True)
|
|
702
|
+
|
|
703
|
+
# Always use DAG — returns DispatchSummary with per-node outcomes
|
|
704
|
+
summary = orchestrator.run_dispatch(
|
|
705
|
+
"add feature X",
|
|
706
|
+
planner_output=[
|
|
707
|
+
{"id": "arch", "title": "Design", "role": "architect", "depends_on": []},
|
|
708
|
+
{"id": "impl", "title": "Implement", "role": "coder", "depends_on": ["arch"]},
|
|
709
|
+
{"id": "test", "title": "Write tests", "role": "tester", "depends_on": ["arch"]},
|
|
710
|
+
],
|
|
711
|
+
max_workers=3,
|
|
712
|
+
)
|
|
713
|
+
print(f"{len(summary.completed)} completed, {len(summary.failed)} failed")
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
Events are persisted to `.specsmith/dispatch/<dag_id>/events.jsonl` for resume and replay.
|
|
717
|
+
Kairos renders the live dispatch view — see `app/` for build instructions.
|
|
718
|
+
|
|
719
|
+
---
|
|
720
|
+
|
|
721
|
+
## Compiler and Tool Support
|
|
722
|
+
|
|
723
|
+
All agent roles can invoke compiler, linter, and formatter tools. These are registered in
|
|
724
|
+
`AVAILABLE_TOOLS` and wired into `ROLE_TOOLS` for the `coder`, `reviewer`, `tester`, `architect`,
|
|
725
|
+
and `embedded-coder` roles.
|
|
726
|
+
|
|
727
|
+
| Tool | Function | Default binary |
|
|
728
|
+
|------|----------|-|
|
|
729
|
+
| GCC / G++ | `run_gcc(args, compiler='gcc')` | `gcc` / `g++` |
|
|
730
|
+
| ARM bare-metal | `run_arm_gcc(args, compiler='arm-none-eabi-gcc')` | `arm-none-eabi-gcc` |
|
|
731
|
+
| AArch64 Linux | `run_aarch64_gcc(args, compiler='aarch64-linux-gnu-gcc')` | `aarch64-linux-gnu-gcc` |
|
|
732
|
+
| IAR Embedded | `run_iar_compiler(project_file, executable='IarBuild')` | `IarBuild` |
|
|
733
|
+
| Intel oneAPI | `run_intel_compiler(args, compiler='icx')` | `icx` / `icpx` / `icc` |
|
|
734
|
+
| clang-format | `run_clang_format(files, style='file', in_place=False)` | `clang-format` |
|
|
735
|
+
| clang-tidy | `run_clang_tidy(files, checks='', fix=False)` | `clang-tidy` |
|
|
736
|
+
| VSG (VHDL) | `run_vsg(files, rules=None, fix=False)` | `vsg` |
|
|
737
|
+
|
|
738
|
+
All tools are usable directly in the agentic REPL and in `specsmith dispatch` worker nodes:
|
|
739
|
+
|
|
740
|
+
```python
|
|
741
|
+
from specsmith.agent.tools import run_arm_gcc, run_clang_tidy, run_vsg
|
|
742
|
+
|
|
743
|
+
# Cross-compile for ARM bare-metal
|
|
744
|
+
result = run_arm_gcc("-Wall -O2 main.c -o firmware.elf", compiler="arm-none-eabi-gcc")
|
|
745
|
+
|
|
746
|
+
# Lint C/C++ with clang-tidy
|
|
747
|
+
result = run_clang_tidy("src/", checks="modernize-*,readability-*")
|
|
748
|
+
|
|
749
|
+
# Style-check VHDL files
|
|
750
|
+
result = run_vsg("rtl/top.vhd", rules="vsg_rules.yaml")
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
---
|
|
754
|
+
|
|
529
755
|
## Kairos — Flagship Terminal Client
|
|
530
756
|
|
|
531
757
|
**[Kairos](https://github.com/BitConcepts/kairos)** is the recommended terminal client for specsmith.
|
|
@@ -538,7 +764,14 @@ specsmith status, version, and one-click update.
|
|
|
538
764
|
specsmith governance-serve --port 7700 --project-dir .
|
|
539
765
|
```
|
|
540
766
|
|
|
541
|
-
The
|
|
767
|
+
The Kairos **Dispatch Panel** (`app/` — Rust, egui/eframe) renders the multi-agent DAG live:
|
|
768
|
+
- SVG DAG graph with nodes coloured by status (grey/blue/green/red/amber)
|
|
769
|
+
- Gantt timeline strip showing parallelism
|
|
770
|
+
- Per-node Retry (FAILED/BLOCKED) and Abort (RUNNING) buttons
|
|
771
|
+
- Subscribes to `GET /api/dispatch/events?dag_id=` SSE from `specsmith serve`
|
|
772
|
+
|
|
773
|
+
Build Kairos dispatch panel: `cd app && cargo build --release`
|
|
774
|
+
|
|
542
775
|
Use `pipx install specsmith` for standalone CLI usage from any terminal.
|
|
543
776
|
|
|
544
777
|
---
|
|
@@ -605,7 +838,11 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
605
838
|
|
|
606
839
|
**Workflow:** `phase show/set/next/list` `ledger add/list` `req list/add/gaps/trace`
|
|
607
840
|
|
|
608
|
-
**Agent:** `run` `agent run/plan/status/verify/improve/reports` `agent providers/tools/skills`
|
|
841
|
+
**Agent:** `run` `agent run/plan/status/verify/improve/reports` `agent providers/tools/skills` `agent suggest-profiles` `agent endpoint-presets`
|
|
842
|
+
|
|
843
|
+
**Dispatch:** `dispatch run` `dispatch status` `dispatch list` `dispatch retry`
|
|
844
|
+
|
|
845
|
+
**Model Intel:** `model-intel sync` `model-intel scores` `model-intel recommendations` `model-intel connection`
|
|
609
846
|
|
|
610
847
|
**Ollama:** `ollama list/available/gpu/pull/suggest`
|
|
611
848
|
|
|
@@ -658,13 +895,42 @@ Use cases: linguistics research, compliance pipelines, AI alignment, patent pros
|
|
|
658
895
|
|
|
659
896
|
---
|
|
660
897
|
|
|
661
|
-
## Governance Rules (H1–
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
- **
|
|
898
|
+
## Governance Rules (H1–H22)
|
|
899
|
+
|
|
900
|
+
22 hard rules enforced by `specsmith validate` and `specsmith audit`.
|
|
901
|
+
Full rule text: [`docs/governance/RULES.md`](docs/governance/RULES.md)
|
|
902
|
+
|
|
903
|
+
**H1–H14 — Core engineering and traceability rules:**
|
|
904
|
+
- **H1** — No ledger entry = work not done.
|
|
905
|
+
- **H2** — No proposal = no execution.
|
|
906
|
+
- **H3** — All work must consider every target platform.
|
|
907
|
+
- **H4** — No system-dependent assumptions; virtual environments required.
|
|
908
|
+
- **H5** — No hidden service logic.
|
|
909
|
+
- **H6** — If the task grows beyond the proposal, stop and re-propose.
|
|
910
|
+
- **H7** — Every state change must be traceable and recorded.
|
|
911
|
+
- **H8** — Architecture changes MUST update docs in the same work cycle.
|
|
912
|
+
- **H9** — Every agent command must have a timeout.
|
|
913
|
+
- **H10** — No hardcoded version strings outside `pyproject.toml`.
|
|
914
|
+
- **H11** — Every loop must have a deadline; no unbounded blocking I/O.
|
|
915
|
+
- **H12** — Platform-aware automation: sh/bash on Unix, `.cmd`/`.ps1` on Windows.
|
|
916
|
+
- **H13** — Every proposal must declare its epistemic boundaries and assumptions.
|
|
917
|
+
- **H14** — Documentation must be updated in the same work cycle as code changes.
|
|
918
|
+
|
|
919
|
+
**H15–H22 — Anti-hallucination and epistemic stability (OEA framework):**
|
|
920
|
+
|
|
921
|
+
Rules H15–H22 are derived from the *"Ontology-Epistemic-Agentic (OEA) Recursive
|
|
922
|
+
Generative Stability"* study (BitConcepts Research, 2026), which empirically validated
|
|
923
|
+
the primary control mechanisms for preventing hallucination and semantic drift in
|
|
924
|
+
production LLM systems:
|
|
925
|
+
|
|
926
|
+
- **H15** — Epistemic scope bounding: no claims outside verified knowledge; say "unknown" rather than fabricate.
|
|
927
|
+
- **H16** — Anti-drift recursion guard: max 5 autonomous generation steps before a human checkpoint.
|
|
928
|
+
- **H17** — Calibration direction: express uncertainty, not false confidence.
|
|
929
|
+
- **H18** — RAG retrieval filtering: validate context relevance (similarity ≥ 0.6) before injection.
|
|
930
|
+
- **H19** — Synthetic contamination prevention: never mix synthetic and real data silently.
|
|
931
|
+
- **H20** — Falsifiability required: cite sources or flag claims as `[HYPOTHESIS]`.
|
|
932
|
+
- **H21** — Disclose all model-specific assumptions (context window, format, temperature).
|
|
933
|
+
- **H22** — Cross-platform CI: green on one OS ≠ cross-platform coverage.
|
|
668
934
|
|
|
669
935
|
---
|
|
670
936
|
|