specsmith 0.17.0.dev644__tar.gz → 0.17.0.dev647__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.17.0.dev644/src/specsmith.egg-info → specsmith-0.17.0.dev647}/PKG-INFO +1 -1
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/pyproject.toml +1 -1
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/cli.py +11 -14
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/governance_logic.py +6 -3
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/quality_report.py +4 -6
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647/src/specsmith.egg-info}/PKG-INFO +1 -1
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/LICENSE +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/README.md +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/setup.cfg +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/belief.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/certainty.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/py.typed +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/recovery.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/session.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/epistemic/trace.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/__main__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/chat_runner.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/context_seed.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/_status.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/dag.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/events.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/result.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/hf_leaderboard.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/llm_client.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/model_profiles.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/model_router.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/provider_registry.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/repl.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/runner.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/spawner.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/tools.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/approvals.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/architect.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/auditor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/auth.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/block_export.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/channel.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/ci_manager.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/commands/issues_policy.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/commands/reporting.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/compliance/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/compliance/_compat.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/compliance/checker.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/compliance/evidence.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/compliance/regulations.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/compliance/reporter.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/compressor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/config.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/context_orchestrator.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/context_window.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/credits.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/dashboard.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/differ.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/doctor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/drive.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/editor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/belief.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/esdb/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/esdb/_license.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/esdb/bridge.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/esdb/sqlite_store.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/eval/runner.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/executor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/exporter.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/governance_store.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/governance_yaml.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/governed_pr.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/history_search.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/importer.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/instinct.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/codity.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/issue_reporter.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/languages.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/ledger.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/local_model.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/mcp_server.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m002_agents_slim.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m003_compliance_init.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m006_session_governance.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m007_yaml_first.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/runner.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/ollama_cmds.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/patent.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/paths.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/phase.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/plugins.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/policy.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/profiles.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/project_metrics.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/recover.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/releaser.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/requirements.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/risk.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/scaffolder.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/serve.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/session.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/session_init.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/session_store.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/ai_agents.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/cloud.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/corporate.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/cross_platform.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/data_engineering.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/devops.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/docs.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/embedded.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/governance.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/hardware.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/mobile.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/platform_engineering.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/productivity.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/software_engineering.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/specsmith_skills.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/ssh.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills/web_backend.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/skills_builder.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/sync.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/tools.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/trace.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/transcripts.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/updater.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/upgrader.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/validator.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/wi_store.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/workspace.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith.egg-info/SOURCES.txt +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_CMD_001.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_agent_run_feedback.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_ai_client.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_ai_intelligence.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_architect_interview.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_architect_v2.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_architecture.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_auditor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_channel.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_cleanup_cmd.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_cli.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_cli_regressions.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_compliance.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_compliance_governance.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_compressor.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_dispatch.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_epistemic.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_esdb_backend_switch.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_esdb_enforcement.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_esdb_license.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_esdb_sqlite.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_esdb_verify_chain_cli.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_golden_path.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_importer.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_init_modes.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_integrations.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_integrations_codity.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_intelligence.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_issue_policy_features.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_issue_reporter.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_issues_263_264.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_local_model.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_markdown_deprecation.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_mcp_client.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_mcp_server.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_migration_direction.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_model_router.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_new_modules.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_nexus.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_permissions.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_project_metrics.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_quality_report.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_rate_limits.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_reporting_commands.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_req_248_262.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_req_358_359.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_scaffolder.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_schema_migrations.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_smoke.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_suggester.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_tools.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_typing_guardrails.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_validator.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_vcs.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_warp_parity.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_warp_parity_followup.py +0 -0
- {specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/tests/test_wi_lifecycle.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.17.0.
|
|
3
|
+
Version: 0.17.0.dev647
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.17.0.
|
|
7
|
+
version = "0.17.0.dev647"
|
|
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"
|
|
@@ -1845,8 +1845,9 @@ def doctor(project_dir: str, onboarding: bool, as_json: bool) -> None:
|
|
|
1845
1845
|
import subprocess
|
|
1846
1846
|
import sys
|
|
1847
1847
|
|
|
1848
|
+
# Single import style (no from-import) avoids CodeQL py/import-and-import-from.
|
|
1849
|
+
import specsmith.esdb as _esdb_mod_dr
|
|
1848
1850
|
from specsmith.auditor import run_audit
|
|
1849
|
-
from specsmith.esdb import open_default_store
|
|
1850
1851
|
from specsmith.phase import read_phase
|
|
1851
1852
|
|
|
1852
1853
|
def _tool_version(cmd: str) -> tuple[bool, str]:
|
|
@@ -1896,7 +1897,7 @@ def doctor(project_dir: str, onboarding: bool, as_json: bool) -> None:
|
|
|
1896
1897
|
chain_ok = False
|
|
1897
1898
|
record_count = 0
|
|
1898
1899
|
try:
|
|
1899
|
-
with open_default_store(root, warn=False) as store: # type: ignore[attr-defined]
|
|
1900
|
+
with _esdb_mod_dr.open_default_store(root, warn=False) as store: # type: ignore[attr-defined]
|
|
1900
1901
|
esdb_open = True
|
|
1901
1902
|
record_count = int(store.record_count())
|
|
1902
1903
|
chain_ok = store.chain_valid() is not False
|
|
@@ -1904,10 +1905,9 @@ def doctor(project_dir: str, onboarding: bool, as_json: bool) -> None:
|
|
|
1904
1905
|
_add("esdb backend", False, f"open failed: {exc}")
|
|
1905
1906
|
if esdb_open:
|
|
1906
1907
|
# Re-read the module-level ESDB_BACKEND — open_default_store() updates
|
|
1907
|
-
# the global in-place
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
_add("esdb backend", True, f"{_esdb_mod.ESDB_BACKEND} open")
|
|
1908
|
+
# the global in-place so we read it via the module object, not a
|
|
1909
|
+
# locally-imported name that would be stale. (#263)
|
|
1910
|
+
_add("esdb backend", True, f"{_esdb_mod_dr.ESDB_BACKEND} open")
|
|
1911
1911
|
_add(
|
|
1912
1912
|
"esdb chain",
|
|
1913
1913
|
chain_ok,
|
|
@@ -11252,8 +11252,7 @@ def esdb_status_cmd(project_dir: str, as_json: bool) -> None:
|
|
|
11252
11252
|
import json as _json
|
|
11253
11253
|
import sys
|
|
11254
11254
|
|
|
11255
|
-
import specsmith.esdb as _esdb_mod # used after open to read updated ESDB_BACKEND
|
|
11256
|
-
from specsmith.esdb import CHRONO_AVAILABLE, open_default_store
|
|
11255
|
+
import specsmith.esdb as _esdb_mod # used after open to read updated ESDB_BACKEND (#263)
|
|
11257
11256
|
from specsmith.esdb._license import check_license, resolve_license_path
|
|
11258
11257
|
from specsmith.sync import auto_migrate_if_needed
|
|
11259
11258
|
|
|
@@ -11265,7 +11264,7 @@ def esdb_status_cmd(project_dir: str, as_json: bool) -> None:
|
|
|
11265
11264
|
lic_status = check_license(warn=False) if lic_path else None
|
|
11266
11265
|
|
|
11267
11266
|
# Open the appropriate store (no warning — we’ll report it ourselves)
|
|
11268
|
-
store = open_default_store(root, warn=False)
|
|
11267
|
+
store = _esdb_mod.open_default_store(root, warn=False)
|
|
11269
11268
|
# Re-read ESDB_BACKEND from the module — open_default_store() updates the
|
|
11270
11269
|
# module-level global; the locally-imported name would be stale. (#263)
|
|
11271
11270
|
active_backend = _esdb_mod.ESDB_BACKEND
|
|
@@ -11300,7 +11299,7 @@ def esdb_status_cmd(project_dir: str, as_json: bool) -> None:
|
|
|
11300
11299
|
backend_label = f"{active_backend} (error: {exc})"
|
|
11301
11300
|
|
|
11302
11301
|
license_info: dict[str, object]
|
|
11303
|
-
if not CHRONO_AVAILABLE:
|
|
11302
|
+
if not _esdb_mod.CHRONO_AVAILABLE:
|
|
11304
11303
|
license_info = {"chronomemory_installed": False, "active": False}
|
|
11305
11304
|
elif lic_status is None:
|
|
11306
11305
|
license_info = {
|
|
@@ -11372,7 +11371,7 @@ def esdb_status_cmd(project_dir: str, as_json: bool) -> None:
|
|
|
11372
11371
|
if store_error:
|
|
11373
11372
|
console.print(f" [red]\u2717[/red] Store error: {store_error}")
|
|
11374
11373
|
# License line
|
|
11375
|
-
if not CHRONO_AVAILABLE:
|
|
11374
|
+
if not _esdb_mod.CHRONO_AVAILABLE:
|
|
11376
11375
|
console.print(
|
|
11377
11376
|
" [dim]chronomemory not installed \u2014 run "
|
|
11378
11377
|
"'pip install specsmith[esdb]' for ChronoStore[/dim]"
|
|
@@ -12240,14 +12239,12 @@ def cleanup_cmd(project_dir: str, apply_flag: bool, as_json: bool) -> None:
|
|
|
12240
12239
|
removed: list[str] = []
|
|
12241
12240
|
if apply_flag:
|
|
12242
12241
|
for p in targets:
|
|
12243
|
-
|
|
12242
|
+
with contextlib.suppress(OSError): # best-effort; locked/missing files are skipped
|
|
12244
12243
|
if p.is_dir():
|
|
12245
12244
|
shutil.rmtree(p)
|
|
12246
12245
|
else:
|
|
12247
12246
|
p.unlink(missing_ok=True)
|
|
12248
12247
|
removed.append(str(p.relative_to(root)))
|
|
12249
|
-
except OSError:
|
|
12250
|
-
pass
|
|
12251
12248
|
with contextlib.suppress(Exception):
|
|
12252
12249
|
from specsmith.ledger import add_entry
|
|
12253
12250
|
|
|
@@ -83,11 +83,14 @@ def run_preflight(
|
|
|
83
83
|
# docs/REQUIREMENTS.md is deprecated (REQ-373) but still used as a fallback
|
|
84
84
|
# for keyword matching in infer_scope() when it exists. Explicit REQ-NNN IDs
|
|
85
85
|
# in the utterance are always resolved from requirements.json regardless.
|
|
86
|
-
|
|
86
|
+
# Use os.path.realpath directly (not through _safe_resolve) so CodeQL's
|
|
87
|
+
# interprocedural taint analysis can confirm the sanitiser inline without
|
|
88
|
+
# having to track through a user-defined wrapper function.
|
|
89
|
+
_req_md = Path(os.path.realpath(os.path.join(_root_str, "docs", "REQUIREMENTS.md")))
|
|
87
90
|
if not _req_md.is_file():
|
|
88
|
-
_req_md =
|
|
91
|
+
_req_md = Path(os.path.realpath(os.path.join(_root_str, "REQUIREMENTS.md"))) # legacy
|
|
89
92
|
# infer_scope handles a non-existent path gracefully (returns empty scope)
|
|
90
|
-
_repo_idx =
|
|
93
|
+
_repo_idx = Path(os.path.realpath(os.path.join(_root_str, ".repo-index", "files.json")))
|
|
91
94
|
scope = infer_scope(
|
|
92
95
|
utterance,
|
|
93
96
|
_req_md,
|
|
@@ -210,7 +210,7 @@ def render_markdown(data: QualityReportData) -> str:
|
|
|
210
210
|
"---",
|
|
211
211
|
"",
|
|
212
212
|
"*Generated by `specsmith quality-report`. "
|
|
213
|
-
"Run `specsmith metrics report` for session-level detail.*",
|
|
213
|
+
+ "Run `specsmith metrics report` for session-level detail.*",
|
|
214
214
|
]
|
|
215
215
|
|
|
216
216
|
return "\n".join(lines)
|
|
@@ -364,7 +364,7 @@ def _read_project_name(root: Path) -> str:
|
|
|
364
364
|
text = pyp.read_text(encoding="utf-8")
|
|
365
365
|
# Match [project] section name field
|
|
366
366
|
m = re.search(
|
|
367
|
-
r'^\[project\].*?^name\s*=\s*["\']
|
|
367
|
+
r'^\[project\].*?^name\s*=\s*["\']+)["\']',
|
|
368
368
|
text,
|
|
369
369
|
re.MULTILINE | re.DOTALL,
|
|
370
370
|
)
|
|
@@ -372,7 +372,7 @@ def _read_project_name(root: Path) -> str:
|
|
|
372
372
|
return m.group(1).strip()
|
|
373
373
|
# Match [tool.poetry] name field
|
|
374
374
|
m2 = re.search(
|
|
375
|
-
r'^\[tool\.poetry\].*?^name\s*=\s*["\']
|
|
375
|
+
r'^\[tool\.poetry\].*?^name\s*=\s*["\']+)["\']',
|
|
376
376
|
text,
|
|
377
377
|
re.MULTILINE | re.DOTALL,
|
|
378
378
|
)
|
|
@@ -492,13 +492,11 @@ def _fill_github_issues(root: Path, data: QualityReportData) -> None:
|
|
|
492
492
|
for issue in issues:
|
|
493
493
|
created = issue.get("createdAt", "")
|
|
494
494
|
if created:
|
|
495
|
-
|
|
495
|
+
with contextlib.suppress(ValueError): # malformed createdAt — skip
|
|
496
496
|
dt = datetime.datetime.fromisoformat(created.replace("Z", "+00:00"))
|
|
497
497
|
days = (now - dt).days
|
|
498
498
|
if days > oldest_delta:
|
|
499
499
|
oldest_delta = days
|
|
500
|
-
except ValueError:
|
|
501
|
-
pass
|
|
502
500
|
data.oldest_open_issue_days = oldest_delta
|
|
503
501
|
except Exception: # noqa: BLE001
|
|
504
502
|
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.17.0.
|
|
3
|
+
Version: 0.17.0.dev647
|
|
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
|
|
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
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/dispatch/dispatcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/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.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/agent/model_intelligence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/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
|
|
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.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/datasources/patentsview.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
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/failure_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/epistemic/stress_tester.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
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/provider_bar.py
RENAMED
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/token_meter.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/gui/widgets/update_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/agent_skill.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/integrations/claude_code.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
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m001_governance_yaml.py
RENAMED
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m002_agents_slim.py
RENAMED
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m003_compliance_init.py
RENAMED
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m004_ledger_esdb.py
RENAMED
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m005_agent_run_tool.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.17.0.dev644 → specsmith-0.17.0.dev647}/src/specsmith/migrations/m007_yaml_first.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
|