specsmith 0.15.0.dev554__tar.gz → 0.15.0.dev556__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.15.0.dev554/src/specsmith.egg-info → specsmith-0.15.0.dev556}/PKG-INFO +6 -2
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/README.md +5 -1
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/pyproject.toml +1 -1
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/config.py +8 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/importer.py +6 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/languages.py +11 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/scaffolder.py +11 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/software_engineering.py +230 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/tools.py +30 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556/src/specsmith.egg-info}/PKG-INFO +6 -2
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/LICENSE +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/setup.cfg +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/belief.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/certainty.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/py.typed +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/recovery.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/session.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/epistemic/trace.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/__main__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/chat_runner.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/context_seed.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/_status.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/dag.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/events.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/result.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/hf_leaderboard.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/llm_client.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/model_profiles.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/provider_registry.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/repl.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/runner.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/spawner.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/tools.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/architect.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/auditor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/auth.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/block_export.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/channel.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/ci_manager.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/cli.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/compliance/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/compliance/_compat.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/compliance/checker.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/compliance/evidence.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/compliance/regulations.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/compliance/reporter.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/compressor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/context_orchestrator.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/context_window.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/credits.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/differ.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/doctor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/drive.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/editor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/epistemic/belief.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/esdb/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/esdb/_license.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/esdb/bridge.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/esdb/sqlite_store.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/eval/runner.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/executor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/exporter.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/governance_logic.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/governance_store.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/governance_yaml.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/history_search.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/instinct.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/codity.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/issue_reporter.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/ledger.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/mcp_server.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/m002_agents_slim.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/m003_compliance_init.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/m006_session_governance.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/migrations/runner.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/ollama_cmds.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/patent.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/paths.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/phase.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/plugins.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/profiles.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/releaser.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/requirements.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/serve.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/session.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/session_init.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/session_store.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/ai_agents.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/cloud.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/corporate.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/cross_platform.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/data_engineering.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/devops.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/docs.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/embedded.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/governance.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/hardware.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/mobile.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/platform_engineering.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/productivity.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/specsmith_skills.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/ssh.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/web_backend.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills_builder.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/sync.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/trace.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/updater.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/upgrader.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/validator.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/wi_store.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/workspace.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith.egg-info/SOURCES.txt +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_CMD_001.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_agent_run_feedback.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_ai_client.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_ai_intelligence.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_auditor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_channel.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_cli.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_compliance.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_compliance_governance.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_compressor.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_dispatch.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_epistemic.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_esdb_license.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_esdb_sqlite.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_importer.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_integrations.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_integrations_codity.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_intelligence.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_issue_reporter.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_mcp_client.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_mcp_server.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_new_modules.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_nexus.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_permissions.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_rate_limits.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_req_248_262.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_req_358_359.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_scaffolder.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_smoke.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_suggester.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_tools.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_validator.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_vcs.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_warp_parity.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_warp_parity_followup.py +0 -0
- {specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/tests/test_wi_lifecycle.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.15.0.
|
|
3
|
+
Version: 0.15.0.dev556
|
|
4
4
|
Summary: AEE governance toolkit for AI-assisted development — session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider.
|
|
5
5
|
Author: Layer1Labs Silicon, Inc.
|
|
6
6
|
License-Expression: MIT
|
|
@@ -915,6 +915,8 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
915
915
|
|
|
916
916
|
**Workflow:** `phase show/set/next/list` `ledger add/list` `req list/add/gaps/trace`
|
|
917
917
|
|
|
918
|
+
**Work Items:** `wi list` `wi show` `wi close` `wi archive` `wi promote` `wi tag` `wi import`
|
|
919
|
+
|
|
918
920
|
**Agent:** `run` `agent run/plan/status/verify/improve/reports` `agent providers/tools/skills` `agent suggest-profiles` `agent endpoint-presets`
|
|
919
921
|
|
|
920
922
|
**Dispatch:** `dispatch run` `dispatch status` `dispatch list` `dispatch retry`
|
|
@@ -939,7 +941,7 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
939
941
|
|
|
940
942
|
---
|
|
941
943
|
|
|
942
|
-
##
|
|
944
|
+
## 64 Project Types
|
|
943
945
|
|
|
944
946
|
**Python:** `cli-python`, `library-python`, `backend-frontend`, `backend-frontend-tray`, `embedded-python-hmi`, `research-python`.
|
|
945
947
|
|
|
@@ -967,6 +969,8 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
967
969
|
|
|
968
970
|
**Business / Legal / AEE:** `business-plan`, `legal-compliance`, `monorepo`, `browser-extension`, `epistemic-pipeline`, `knowledge-engineering`, `aee-research`.
|
|
969
971
|
|
|
972
|
+
**Declarative / Formal:** `brief-lang` (Brief v0.14.0 — contract-enforced logic language, `.bv`/`.sbv`/`.ebv`/`.rbv`).
|
|
973
|
+
|
|
970
974
|
---
|
|
971
975
|
|
|
972
976
|
## epistemic Library
|
|
@@ -837,6 +837,8 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
837
837
|
|
|
838
838
|
**Workflow:** `phase show/set/next/list` `ledger add/list` `req list/add/gaps/trace`
|
|
839
839
|
|
|
840
|
+
**Work Items:** `wi list` `wi show` `wi close` `wi archive` `wi promote` `wi tag` `wi import`
|
|
841
|
+
|
|
840
842
|
**Agent:** `run` `agent run/plan/status/verify/improve/reports` `agent providers/tools/skills` `agent suggest-profiles` `agent endpoint-presets`
|
|
841
843
|
|
|
842
844
|
**Dispatch:** `dispatch run` `dispatch status` `dispatch list` `dispatch retry`
|
|
@@ -861,7 +863,7 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
861
863
|
|
|
862
864
|
---
|
|
863
865
|
|
|
864
|
-
##
|
|
866
|
+
## 64 Project Types
|
|
865
867
|
|
|
866
868
|
**Python:** `cli-python`, `library-python`, `backend-frontend`, `backend-frontend-tray`, `embedded-python-hmi`, `research-python`.
|
|
867
869
|
|
|
@@ -889,6 +891,8 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
889
891
|
|
|
890
892
|
**Business / Legal / AEE:** `business-plan`, `legal-compliance`, `monorepo`, `browser-extension`, `epistemic-pipeline`, `knowledge-engineering`, `aee-research`.
|
|
891
893
|
|
|
894
|
+
**Declarative / Formal:** `brief-lang` (Brief v0.14.0 — contract-enforced logic language, `.bv`/`.sbv`/`.ebv`/`.rbv`).
|
|
895
|
+
|
|
892
896
|
---
|
|
893
897
|
|
|
894
898
|
## epistemic Library
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.15.0.
|
|
7
|
+
version = "0.15.0.dev556"
|
|
8
8
|
description = "AEE governance toolkit for AI-assisted development — session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -96,6 +96,10 @@ class ProjectType(str, Enum):
|
|
|
96
96
|
# Desktop
|
|
97
97
|
DESKTOP_ELECTRON = "desktop-electron" # Electron desktop app
|
|
98
98
|
DESKTOP_TAURI = "desktop-tauri" # Tauri desktop app (Rust + WebView)
|
|
99
|
+
# Brief lang — declarative contract-enforced logic language (github.com/Randozart/brief-lang)
|
|
100
|
+
# Version anchor: v0.14.0 @ commit 6a43c4aebcc5c6c774dbc2908445fb19486e8043 (2026-06-14)
|
|
101
|
+
# No release tags exist yet; version string + commit hash are both recorded.
|
|
102
|
+
BRIEF_LANG = "brief-lang" # .bv/.sbv/.rbv/.ebv project using brief-compiler
|
|
99
103
|
|
|
100
104
|
|
|
101
105
|
class Platform(str, Enum):
|
|
@@ -604,6 +608,8 @@ _TYPE_LABELS: dict[str, str] = {
|
|
|
604
608
|
# Desktop
|
|
605
609
|
ProjectType.DESKTOP_ELECTRON: "Desktop application (Electron)",
|
|
606
610
|
ProjectType.DESKTOP_TAURI: "Desktop application (Tauri — Rust + WebView)",
|
|
611
|
+
# Brief lang
|
|
612
|
+
ProjectType.BRIEF_LANG: "Brief lang — declarative contract-enforced logic language (v0.14.0)",
|
|
607
613
|
}
|
|
608
614
|
|
|
609
615
|
_SECTION_REFS: dict[str, str] = {
|
|
@@ -662,4 +668,6 @@ _SECTION_REFS: dict[str, str] = {
|
|
|
662
668
|
# Desktop
|
|
663
669
|
ProjectType.DESKTOP_ELECTRON: "17.48",
|
|
664
670
|
ProjectType.DESKTOP_TAURI: "17.49",
|
|
671
|
+
# Brief lang
|
|
672
|
+
ProjectType.BRIEF_LANG: "17.50",
|
|
665
673
|
}
|
|
@@ -1100,6 +1100,12 @@ def _infer_type(result: DetectionResult) -> ProjectType:
|
|
|
1100
1100
|
lang = result.primary_language
|
|
1101
1101
|
build = result.build_system
|
|
1102
1102
|
|
|
1103
|
+
# Brief lang — .bv/.sbv/.rbv/.ebv files are unambiguous; check before Rust
|
|
1104
|
+
# (the brief-lang compiler repo is Rust + .bv files; .bv files are the signal)
|
|
1105
|
+
# Version anchor: v0.14.0 @ 6a43c4ae (github.com/Randozart/brief-lang)
|
|
1106
|
+
if lang == "brief":
|
|
1107
|
+
return ProjectType.BRIEF_LANG
|
|
1108
|
+
|
|
1103
1109
|
# Hardware types
|
|
1104
1110
|
if lang in ("vhdl", "verilog", "systemverilog"):
|
|
1105
1111
|
return ProjectType.FPGA_RTL
|
|
@@ -131,6 +131,15 @@ EXT_LANG: dict[str, str] = {
|
|
|
131
131
|
".kicad_sch": "kicad",
|
|
132
132
|
".kicad_pro": "kicad",
|
|
133
133
|
".sch": "kicad", # legacy KiCad schematic
|
|
134
|
+
# Brief lang (github.com/Randozart/brief-lang v0.14.0 @ 6a43c4ae)
|
|
135
|
+
# All variants map to the same language key; strictness is a compiler flag, not a language.
|
|
136
|
+
".bv": "brief", # Brief — declarative contract logic (normal mode)
|
|
137
|
+
".sbv": "brief", # Strict Brief — hard errors on incomplete contracts
|
|
138
|
+
".rbv": "brief", # Rendered Brief — Brief + web UI (HTML/CSS/SVG → WASM)
|
|
139
|
+
".ebv": "brief", # Embedded Brief — Brief + hardware triggers (FPGA/ARM)
|
|
140
|
+
".dbv": "brief", # Data Brief — configuration data
|
|
141
|
+
".dbvs": "brief", # Data Brief Schema — FFI bindings / target specs
|
|
142
|
+
".dbvl": "brief", # Data Brief Lines — line-based databases
|
|
134
143
|
# Data science
|
|
135
144
|
".r": "r",
|
|
136
145
|
".rmd": "r",
|
|
@@ -197,6 +206,7 @@ LANG_DISPLAY: dict[str, str] = {
|
|
|
197
206
|
"latex": "LaTeX",
|
|
198
207
|
"bibtex": "BibTeX",
|
|
199
208
|
"asciidoc": "AsciiDoc",
|
|
209
|
+
"brief": "Brief",
|
|
200
210
|
"kicad": "KiCad",
|
|
201
211
|
"r": "R",
|
|
202
212
|
"julia": "Julia",
|
|
@@ -264,6 +274,7 @@ LANG_CATEGORY: dict[str, str] = {
|
|
|
264
274
|
"latex": "Documentation",
|
|
265
275
|
"bibtex": "Documentation",
|
|
266
276
|
"asciidoc": "Documentation",
|
|
277
|
+
"brief": "Declarative / Formal",
|
|
267
278
|
"kicad": "Hardware / EDA",
|
|
268
279
|
"r": "Data Science",
|
|
269
280
|
"julia": "Data Science",
|
|
@@ -284,6 +284,17 @@ def _get_empty_dirs(config: ProjectConfig, target: Path) -> list[Path]:
|
|
|
284
284
|
)
|
|
285
285
|
elif config.type in (ProjectType.CLI_RUST, ProjectType.LIBRARY_RUST):
|
|
286
286
|
dirs.extend([target / "src", target / "tests", target / "benches"])
|
|
287
|
+
elif config.type == ProjectType.BRIEF_LANG:
|
|
288
|
+
# Brief lang project: .bv sources, library modules, contract tests
|
|
289
|
+
# brief-compiler check src/ — lint pass
|
|
290
|
+
# brief-compiler rust src/main.bv — compile to Rust
|
|
291
|
+
dirs.extend(
|
|
292
|
+
[
|
|
293
|
+
target / "src", # .bv source files
|
|
294
|
+
target / "lib", # imported .bv library modules
|
|
295
|
+
target / "tests", # contract test .bv files
|
|
296
|
+
]
|
|
297
|
+
)
|
|
287
298
|
elif config.type in (ProjectType.CLI_GO,):
|
|
288
299
|
dirs.extend([target / "cmd", target / "internal", target / "pkg", target / "tests"])
|
|
289
300
|
elif config.type in (ProjectType.CLI_C, ProjectType.LIBRARY_C):
|
{specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/skills/software_engineering.py
RENAMED
|
@@ -1188,6 +1188,236 @@ git remote prune origin
|
|
|
1188
1188
|
- [ ] CI passing before requesting review
|
|
1189
1189
|
- [ ] All review comments addressed or explained
|
|
1190
1190
|
- [ ] Branch deleted after merge
|
|
1191
|
+
""",
|
|
1192
|
+
),
|
|
1193
|
+
# ── Brief lang ────────────────────────────────────────────────────────────
|
|
1194
|
+
SkillEntry(
|
|
1195
|
+
slug="brief-lang",
|
|
1196
|
+
name="Brief lang — declarative contract-enforced logic language",
|
|
1197
|
+
description=(
|
|
1198
|
+
"End-to-end workflow for projects using Brief (v0.14.0): file variants, "
|
|
1199
|
+
"compiler commands, contract syntax (txn/rct/let/[pre][post]), "
|
|
1200
|
+
"build targets (Rust/C/LLVM/WASM/VHDL/COBOL), and governance rules."
|
|
1201
|
+
),
|
|
1202
|
+
domain=SkillDomain.SOFTWARE_ENGINEERING,
|
|
1203
|
+
tags=[
|
|
1204
|
+
"brief",
|
|
1205
|
+
"brief-lang",
|
|
1206
|
+
"declarative",
|
|
1207
|
+
"contracts",
|
|
1208
|
+
"transactions",
|
|
1209
|
+
"state-machine",
|
|
1210
|
+
"llvm",
|
|
1211
|
+
"wasm",
|
|
1212
|
+
"fpga",
|
|
1213
|
+
"cobol",
|
|
1214
|
+
"formal-verification",
|
|
1215
|
+
"rust",
|
|
1216
|
+
],
|
|
1217
|
+
project_types=["brief-lang"],
|
|
1218
|
+
platforms=["windows", "linux", "macos"],
|
|
1219
|
+
prerequisites=["brief-compiler", "cargo"],
|
|
1220
|
+
body="""\
|
|
1221
|
+
# Brief lang
|
|
1222
|
+
|
|
1223
|
+
**Version anchor: v0.14.0 — commit `6a43c4aebcc5c6c774dbc2908445fb19486e8043` (2026-06-14)**
|
|
1224
|
+
No release tags exist yet. Both the declared version and the commit hash are kept for
|
|
1225
|
+
reproducibility. Update this file when Brief ships a tagged release.
|
|
1226
|
+
|
|
1227
|
+
Source: https://github.com/Randozart/brief-lang
|
|
1228
|
+
|
|
1229
|
+
## What is Brief?
|
|
1230
|
+
|
|
1231
|
+
Brief is a declarative, contract-enforced logic language for verifiable state machines.
|
|
1232
|
+
Programs are a set of *transactions* whose preconditions and postconditions the compiler
|
|
1233
|
+
proves. Execution is inferred: a reactor loop fires transactions automatically when their
|
|
1234
|
+
preconditions are met. Brief transpiles to many imperative backends — Rust, C, LLVM IR,
|
|
1235
|
+
COBOL, SystemVerilog, VHDL, and browser WASM.
|
|
1236
|
+
|
|
1237
|
+
## File variants
|
|
1238
|
+
|
|
1239
|
+
| Extension | Variant | Targets |
|
|
1240
|
+
|-----------|---------|--------|
|
|
1241
|
+
| `.bv` | Brief (normal) | LLVM → binary, COBOL |
|
|
1242
|
+
| `.sbv` | Strict Brief | Same — hard errors on incomplete contracts |
|
|
1243
|
+
| `.rbv` | Rendered Brief | Browser: WASM + JS + HTML + CSS + SVG |
|
|
1244
|
+
| `.ebv` | Embedded Brief | FPGA (VHDL/SystemVerilog), ARM bare-metal |
|
|
1245
|
+
| `.dbv` | Data Brief | Configuration data (all targets) |
|
|
1246
|
+
| `.dbvs` | Data Brief Schema | FFI bindings / target specs |
|
|
1247
|
+
| `.dbvl` | Data Brief Lines | Line-based databases |
|
|
1248
|
+
|
|
1249
|
+
Prefer `.sbv` for production code — the proof engine enforces complete contracts.
|
|
1250
|
+
|
|
1251
|
+
## Build the compiler (required — no pre-built binaries at v0.14.0)
|
|
1252
|
+
|
|
1253
|
+
```bash
|
|
1254
|
+
git clone https://github.com/Randozart/brief-lang.git
|
|
1255
|
+
cd brief-lang
|
|
1256
|
+
git checkout 6a43c4aebcc5c6c774dbc2908445fb19486e8043 # pin to v0.14.0
|
|
1257
|
+
cargo build --release
|
|
1258
|
+
# Compiler is now at ./target/release/brief-compiler
|
|
1259
|
+
export PATH="$PWD/target/release:$PATH"
|
|
1260
|
+
```
|
|
1261
|
+
|
|
1262
|
+
## Compiler commands (v0.14.0)
|
|
1263
|
+
|
|
1264
|
+
```bash
|
|
1265
|
+
# Type-check only (fast — use in CI lint step)
|
|
1266
|
+
brief-compiler check counter.bv
|
|
1267
|
+
|
|
1268
|
+
# Strict mode — proof engine, hard errors (use in CI typecheck step)
|
|
1269
|
+
brief-compiler check --strict counter.sbv
|
|
1270
|
+
brief-compiler check --strict counter.bv # force strict on .bv file
|
|
1271
|
+
|
|
1272
|
+
# Compile to backend
|
|
1273
|
+
brief-compiler rust counter.bv # → Rust source
|
|
1274
|
+
brief-compiler c counter.bv # → C source
|
|
1275
|
+
brief-compiler llvm counter.bv # → LLVM IR (.ll)
|
|
1276
|
+
brief-compiler compile counter.bv --target aarch64.dbvs # → AArch64 asm
|
|
1277
|
+
brief-compiler compile counter.bv --target x86_64.dbvs # → x86-64 asm
|
|
1278
|
+
|
|
1279
|
+
# Hardware targets
|
|
1280
|
+
brief-compiler compile counter.ebv --target vhdl.dbvs # → VHDL
|
|
1281
|
+
brief-compiler compile counter.ebv --target systemverilog.dbvs # → SV
|
|
1282
|
+
|
|
1283
|
+
# Web target
|
|
1284
|
+
brief-compiler compile app.rbv --target wasm.dbvs # → WASM + JS glue
|
|
1285
|
+
|
|
1286
|
+
# FFI bindings from a C header
|
|
1287
|
+
brief-compiler bind mylib.h # generates mylib.dbvs
|
|
1288
|
+
|
|
1289
|
+
# Metropolitan shared-memory service
|
|
1290
|
+
brief-compiler metrod connect WeatherApi # bind to a running service
|
|
1291
|
+
|
|
1292
|
+
# LSP server (for editor integration)
|
|
1293
|
+
brief-compiler lsp
|
|
1294
|
+
|
|
1295
|
+
# Run compiler-internal tests (requires Cargo.toml)
|
|
1296
|
+
cargo test --lib
|
|
1297
|
+
```
|
|
1298
|
+
|
|
1299
|
+
## Language syntax
|
|
1300
|
+
|
|
1301
|
+
### Variables
|
|
1302
|
+
```brief
|
|
1303
|
+
let counter: Int = 0;
|
|
1304
|
+
let name: String = "Alice";
|
|
1305
|
+
```
|
|
1306
|
+
|
|
1307
|
+
### Transactions — the core unit
|
|
1308
|
+
```brief
|
|
1309
|
+
txn increment() [counter < 100][counter == @counter + 1] {
|
|
1310
|
+
&counter = counter + 1; // &var = mutation
|
|
1311
|
+
term; // required terminator
|
|
1312
|
+
};
|
|
1313
|
+
|
|
1314
|
+
// @counter = "counter before this transaction"
|
|
1315
|
+
// [pre][post] = precondition and postcondition contracts
|
|
1316
|
+
```
|
|
1317
|
+
|
|
1318
|
+
### Reactive transactions — fire automatically
|
|
1319
|
+
```brief
|
|
1320
|
+
rct txn auto_save() [dirty && !saving][!dirty] {
|
|
1321
|
+
save_to_disk();
|
|
1322
|
+
&dirty = false;
|
|
1323
|
+
term;
|
|
1324
|
+
};
|
|
1325
|
+
// Fires whenever dirty==true and saving==false — no polling, no event handlers
|
|
1326
|
+
```
|
|
1327
|
+
|
|
1328
|
+
### Guards (replaces if/else)
|
|
1329
|
+
```brief
|
|
1330
|
+
[x > 0] { &result = x * 2; };
|
|
1331
|
+
[x < 0] { &result = x * -1; };
|
|
1332
|
+
[x == 0] { escape; }; // escape = rollback this transaction
|
|
1333
|
+
```
|
|
1334
|
+
|
|
1335
|
+
### Entry point
|
|
1336
|
+
```brief
|
|
1337
|
+
txn main() [true][true] {
|
|
1338
|
+
increment();
|
|
1339
|
+
increment();
|
|
1340
|
+
term;
|
|
1341
|
+
};
|
|
1342
|
+
```
|
|
1343
|
+
|
|
1344
|
+
### Contract patterns
|
|
1345
|
+
```brief
|
|
1346
|
+
// Withdraw with full pre+post contract
|
|
1347
|
+
txn withdraw(amount: Int)
|
|
1348
|
+
[amount > 0 && balance >= amount] // precondition
|
|
1349
|
+
[balance == @balance - amount] // postcondition
|
|
1350
|
+
{
|
|
1351
|
+
&balance = balance - amount;
|
|
1352
|
+
term;
|
|
1353
|
+
};
|
|
1354
|
+
|
|
1355
|
+
// Partial contract — compiles with warnings (.bv)
|
|
1356
|
+
txn log_event(msg: String) [true][] {
|
|
1357
|
+
write_log(msg);
|
|
1358
|
+
term;
|
|
1359
|
+
};
|
|
1360
|
+
```
|
|
1361
|
+
|
|
1362
|
+
### FFI (Metropolitan interface)
|
|
1363
|
+
```brief
|
|
1364
|
+
// Declare an external function via .dbvs binding
|
|
1365
|
+
use std::io::PrintLine; // from std/bindings/io.dbvs
|
|
1366
|
+
|
|
1367
|
+
txn greet(name: String) [true][true] {
|
|
1368
|
+
PrintLine(name);
|
|
1369
|
+
term;
|
|
1370
|
+
};
|
|
1371
|
+
```
|
|
1372
|
+
|
|
1373
|
+
## Project layout (specsmith scaffold)
|
|
1374
|
+
|
|
1375
|
+
```
|
|
1376
|
+
src/ — .bv / .sbv primary source files
|
|
1377
|
+
lib/ — .bv library modules (imported by src/)
|
|
1378
|
+
tests/ — contract test .bv files
|
|
1379
|
+
target/ — build output (gitignored)
|
|
1380
|
+
```
|
|
1381
|
+
|
|
1382
|
+
## CI workflow (GitHub Actions)
|
|
1383
|
+
|
|
1384
|
+
```yaml
|
|
1385
|
+
steps:
|
|
1386
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
1387
|
+
- name: Build brief-compiler (v0.14.0 @ 6a43c4ae)
|
|
1388
|
+
run: |
|
|
1389
|
+
git clone https://github.com/Randozart/brief-lang.git brief-lang
|
|
1390
|
+
cd brief-lang && git checkout 6a43c4aebcc5c6c774dbc2908445fb19486e8043
|
|
1391
|
+
cargo build --release
|
|
1392
|
+
echo "$PWD/brief-lang/target/release" >> $GITHUB_PATH
|
|
1393
|
+
|
|
1394
|
+
- name: Lint (brief-compiler check)
|
|
1395
|
+
run: brief-compiler check src/
|
|
1396
|
+
|
|
1397
|
+
- name: Typecheck (strict mode)
|
|
1398
|
+
run: brief-compiler check --strict src/
|
|
1399
|
+
|
|
1400
|
+
- name: Build to Rust
|
|
1401
|
+
run: brief-compiler rust src/main.bv
|
|
1402
|
+
```
|
|
1403
|
+
|
|
1404
|
+
## Governance rules for Brief projects
|
|
1405
|
+
|
|
1406
|
+
- Every transaction MUST declare at least a precondition or postcondition — H13.
|
|
1407
|
+
- `.sbv` (strict mode) is required for all production code paths.
|
|
1408
|
+
- Compiler output (`target/`) is a **derived artifact** — never hand-edit generated Rust/C.
|
|
1409
|
+
- FFI boundaries declared via `.dbvs` files are governance artifacts: treat them like API specs.
|
|
1410
|
+
- `escape;` (rollback) must be documented with a comment explaining the failure condition.
|
|
1411
|
+
- Contract completeness = proof coverage: treat incomplete contracts as audit warnings.
|
|
1412
|
+
|
|
1413
|
+
## Common pitfalls
|
|
1414
|
+
|
|
1415
|
+
- `term;` is required at the end of every transaction body — missing it is a parse error.
|
|
1416
|
+
- `@var` refers to the variable value *before* the transaction; `var` after reassignment is the new value.
|
|
1417
|
+
- `.bv` files compile with warnings for incomplete contracts; `.sbv` makes them errors.
|
|
1418
|
+
- The Metropolitan FFI is the only way to interact with foreign code — no inline foreign calls.
|
|
1419
|
+
- The reactor loop infers execution order; don't assume sequential call order between transactions.
|
|
1420
|
+
- `brief-compiler lsp` provides editor integration — configure it in your IDE before writing Brief.
|
|
1191
1421
|
""",
|
|
1192
1422
|
),
|
|
1193
1423
|
SkillEntry(
|
|
@@ -12,6 +12,14 @@ if TYPE_CHECKING:
|
|
|
12
12
|
|
|
13
13
|
from specsmith.config import ProjectType
|
|
14
14
|
|
|
15
|
+
# ---------------------------------------------------------------------------
|
|
16
|
+
# Brief lang version anchor — no release tags exist; both identifiers are kept.
|
|
17
|
+
# Update both when a new Brief version is adopted.
|
|
18
|
+
# ---------------------------------------------------------------------------
|
|
19
|
+
BRIEF_LANG_VERSION: str = "v0.14.0"
|
|
20
|
+
BRIEF_LANG_COMMIT: str = "6a43c4aebcc5c6c774dbc2908445fb19486e8043"
|
|
21
|
+
BRIEF_LANG_COMMIT_SHORT: str = BRIEF_LANG_COMMIT[:8] # 6a43c4ae
|
|
22
|
+
|
|
15
23
|
|
|
16
24
|
@dataclass(frozen=True)
|
|
17
25
|
class ToolSet:
|
|
@@ -504,6 +512,21 @@ _TOOL_REGISTRY: dict[ProjectType, ToolSet] = {
|
|
|
504
512
|
format=["prettier"],
|
|
505
513
|
compliance=["specsmith trace verify"],
|
|
506
514
|
),
|
|
515
|
+
# --- Brief lang (v0.14.0 @ 6a43c4ae, github.com/Randozart/brief-lang) ---
|
|
516
|
+
# brief-compiler check — type-checker + contract verifier (normal mode)
|
|
517
|
+
# brief-compiler check --strict — proof engine; hard errors on incomplete contracts
|
|
518
|
+
# cargo test --lib — compiler-internal tests (Cargo.toml must exist)
|
|
519
|
+
# brief-compiler rust — primary software build target
|
|
520
|
+
# brief-compiler llvm — compile to LLVM IR
|
|
521
|
+
# brief-compiler lsp — start LSP server for editor integration
|
|
522
|
+
ProjectType.BRIEF_LANG: ToolSet(
|
|
523
|
+
lint=["brief-compiler check"],
|
|
524
|
+
typecheck=["brief-compiler check --strict"],
|
|
525
|
+
test=["cargo test --lib"],
|
|
526
|
+
build=["brief-compiler rust", "brief-compiler llvm"],
|
|
527
|
+
security=[],
|
|
528
|
+
format=[],
|
|
529
|
+
),
|
|
507
530
|
}
|
|
508
531
|
|
|
509
532
|
|
|
@@ -615,6 +638,13 @@ LANG_CI_META: dict[str, dict[str, str]] = {
|
|
|
615
638
|
"docker_image": "gcc:latest",
|
|
616
639
|
"install": "",
|
|
617
640
|
},
|
|
641
|
+
# Brief lang — compiler is built from source (Rust), no pre-built binary yet
|
|
642
|
+
"brief": {
|
|
643
|
+
"gh_setup": " - uses: dtolnay/rust-toolchain@stable\n",
|
|
644
|
+
"docker_image": "rust:latest",
|
|
645
|
+
"install": "cargo build --release",
|
|
646
|
+
"brief_compiler": "./target/release/brief-compiler",
|
|
647
|
+
},
|
|
618
648
|
"terraform": {
|
|
619
649
|
"gh_setup": " - uses: hashicorp/setup-terraform@v3\n",
|
|
620
650
|
"docker_image": "hashicorp/terraform:latest",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.15.0.
|
|
3
|
+
Version: 0.15.0.dev556
|
|
4
4
|
Summary: AEE governance toolkit for AI-assisted development — session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider.
|
|
5
5
|
Author: Layer1Labs Silicon, Inc.
|
|
6
6
|
License-Expression: MIT
|
|
@@ -915,6 +915,8 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
915
915
|
|
|
916
916
|
**Workflow:** `phase show/set/next/list` `ledger add/list` `req list/add/gaps/trace`
|
|
917
917
|
|
|
918
|
+
**Work Items:** `wi list` `wi show` `wi close` `wi archive` `wi promote` `wi tag` `wi import`
|
|
919
|
+
|
|
918
920
|
**Agent:** `run` `agent run/plan/status/verify/improve/reports` `agent providers/tools/skills` `agent suggest-profiles` `agent endpoint-presets`
|
|
919
921
|
|
|
920
922
|
**Dispatch:** `dispatch run` `dispatch status` `dispatch list` `dispatch retry`
|
|
@@ -939,7 +941,7 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
939
941
|
|
|
940
942
|
---
|
|
941
943
|
|
|
942
|
-
##
|
|
944
|
+
## 64 Project Types
|
|
943
945
|
|
|
944
946
|
**Python:** `cli-python`, `library-python`, `backend-frontend`, `backend-frontend-tray`, `embedded-python-hmi`, `research-python`.
|
|
945
947
|
|
|
@@ -967,6 +969,8 @@ Supported tools: **Synthesis:** vivado, quartus, radiant, diamond, gowin.
|
|
|
967
969
|
|
|
968
970
|
**Business / Legal / AEE:** `business-plan`, `legal-compliance`, `monorepo`, `browser-extension`, `epistemic-pipeline`, `knowledge-engineering`, `aee-research`.
|
|
969
971
|
|
|
972
|
+
**Declarative / Formal:** `brief-lang` (Brief v0.14.0 — contract-enforced logic language, `.bv`/`.sbv`/`.ebv`/`.rbv`).
|
|
973
|
+
|
|
970
974
|
---
|
|
971
975
|
|
|
972
976
|
## epistemic Library
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/dispatch/dispatcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/execution_profiles.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/model_intelligence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.15.0.dev554 → specsmith-0.15.0.dev556}/src/specsmith/agent/provider_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|