specsmith 0.14.0.dev540__tar.gz → 0.14.0.dev543__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.14.0.dev540/src/specsmith.egg-info → specsmith-0.14.0.dev543}/PKG-INFO +3 -3
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/README.md +1 -1
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/pyproject.toml +2 -2
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/governance_logic.py +21 -22
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543/src/specsmith.egg-info}/PKG-INFO +3 -3
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith.egg-info/requires.txt +1 -1
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/LICENSE +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/setup.cfg +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/belief.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/certainty.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/py.typed +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/recovery.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/session.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/epistemic/trace.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/__main__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/chat_runner.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/context_seed.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/_status.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/dag.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/events.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/result.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/hf_leaderboard.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/llm_client.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/model_profiles.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/provider_registry.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/repl.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/runner.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/spawner.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/tools.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/architect.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/auditor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/auth.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/block_export.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/channel.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/ci_manager.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/cli.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/compliance/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/compliance/_compat.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/compliance/checker.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/compliance/evidence.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/compliance/regulations.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/compliance/reporter.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/compressor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/config.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/context_orchestrator.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/context_window.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/credits.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/differ.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/doctor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/drive.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/editor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/epistemic/belief.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/esdb/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/esdb/_license.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/esdb/bridge.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/esdb/sqlite_store.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/eval/runner.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/executor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/exporter.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/governance_store.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/governance_yaml.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/history_search.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/importer.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/instinct.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/codity.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/issue_reporter.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/languages.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/ledger.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/mcp_server.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m002_agents_slim.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m003_compliance_init.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m006_session_governance.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/runner.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/ollama_cmds.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/patent.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/paths.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/phase.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/plugins.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/profiles.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/releaser.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/requirements.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/scaffolder.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/serve.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/session.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/session_init.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/session_store.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/ai_agents.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/cloud.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/corporate.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/cross_platform.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/data_engineering.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/devops.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/docs.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/embedded.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/governance.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/hardware.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/mobile.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/platform_engineering.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/productivity.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/software_engineering.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/specsmith_skills.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/ssh.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills/web_backend.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/skills_builder.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/sync.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/tools.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/trace.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/updater.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/upgrader.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/validator.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/workspace.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith.egg-info/SOURCES.txt +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_CMD_001.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_agent_run_feedback.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_ai_client.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_ai_intelligence.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_auditor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_channel.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_cli.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_compliance.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_compressor.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_dispatch.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_epistemic.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_esdb_license.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_esdb_sqlite.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_importer.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_integrations.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_integrations_codity.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_intelligence.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_issue_reporter.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_mcp_client.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_mcp_server.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_new_modules.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_nexus.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_permissions.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_rate_limits.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_req_248_262.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_req_358_359.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_scaffolder.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_smoke.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_suggester.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_tools.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_validator.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_vcs.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_warp_parity.py +0 -0
- {specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/tests/test_warp_parity_followup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.14.0.
|
|
3
|
+
Version: 0.14.0.dev543
|
|
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
|
|
@@ -40,7 +40,7 @@ Requires-Dist: pre-commit>=3.0; extra == "dev"
|
|
|
40
40
|
Requires-Dist: types-pyyaml>=6.0; extra == "dev"
|
|
41
41
|
Requires-Dist: cryptography>=42.0; extra == "dev"
|
|
42
42
|
Provides-Extra: esdb
|
|
43
|
-
Requires-Dist: chronomemory>=0.1.
|
|
43
|
+
Requires-Dist: chronomemory>=0.1.7; extra == "esdb"
|
|
44
44
|
Requires-Dist: cryptography>=42.0; extra == "esdb"
|
|
45
45
|
Provides-Extra: docs
|
|
46
46
|
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
@@ -239,7 +239,7 @@ If you hold a chronomemory ESDB license, activate the commercial backend:
|
|
|
239
239
|
# Step 1 — install the chronomemory package
|
|
240
240
|
pip install "specsmith[esdb]" # installs chronomemory from PyPI
|
|
241
241
|
# or if using pipx:
|
|
242
|
-
pipx inject specsmith "chronomemory>=0.1.
|
|
242
|
+
pipx inject specsmith "chronomemory>=0.1.7" # inject into the specsmith pipx venv
|
|
243
243
|
|
|
244
244
|
# Step 2 — activate your license key
|
|
245
245
|
specsmith esdb enable --key-file /path/to/your.esdb.key
|
|
@@ -161,7 +161,7 @@ If you hold a chronomemory ESDB license, activate the commercial backend:
|
|
|
161
161
|
# Step 1 — install the chronomemory package
|
|
162
162
|
pip install "specsmith[esdb]" # installs chronomemory from PyPI
|
|
163
163
|
# or if using pipx:
|
|
164
|
-
pipx inject specsmith "chronomemory>=0.1.
|
|
164
|
+
pipx inject specsmith "chronomemory>=0.1.7" # inject into the specsmith pipx venv
|
|
165
165
|
|
|
166
166
|
# Step 2 — activate your license key
|
|
167
167
|
specsmith esdb enable --key-file /path/to/your.esdb.key
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.14.0.
|
|
7
|
+
version = "0.14.0.dev543"
|
|
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"
|
|
@@ -60,7 +60,7 @@ dev = [
|
|
|
60
60
|
# Install: pip install specsmith[esdb]
|
|
61
61
|
# Activate: specsmith esdb enable --key-file /path/to/your.esdb.key
|
|
62
62
|
esdb = [
|
|
63
|
-
"chronomemory>=0.1.
|
|
63
|
+
"chronomemory>=0.1.7", # proprietary commercial — see chronomemory LICENSE
|
|
64
64
|
"cryptography>=42.0",
|
|
65
65
|
]
|
|
66
66
|
docs = [
|
|
@@ -72,30 +72,29 @@ def run_preflight(
|
|
|
72
72
|
from specsmith.agent.broker import Intent, classify_intent, infer_scope
|
|
73
73
|
|
|
74
74
|
_safe_resolve(project_dir) # validate: reject null bytes and traversal sequences
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
#
|
|
75
|
+
# os.path.realpath breaks the taint chain and returns a clean plain str.
|
|
76
|
+
# ALL subsequent path construction uses os.path.join on _root_str — never
|
|
77
|
+
# the Path / operator on root — so CodeQL never re-acquires the taint from
|
|
78
|
+
# project_dir through a Path object.
|
|
78
79
|
_root_str: str = os.path.realpath(str(project_dir))
|
|
79
|
-
root = Path(_root_str)
|
|
80
80
|
intent = classify_intent(utterance)
|
|
81
81
|
# Requirements live at docs/REQUIREMENTS.md, not at the project root.
|
|
82
82
|
# Falling back to root/REQUIREMENTS.md would always yield an empty list
|
|
83
83
|
# on standard projects, causing preflight to always return
|
|
84
84
|
# needs_clarification (GitHub issue #197).
|
|
85
|
-
|
|
86
|
-
# at the point of the file-system call (.exists()), not just at root.
|
|
87
|
-
_req_md = Path(os.path.realpath(str(root / "docs" / "REQUIREMENTS.md")))
|
|
85
|
+
_req_md = Path(os.path.realpath(os.path.join(_root_str, "docs", "REQUIREMENTS.md")))
|
|
88
86
|
if not _req_md.exists():
|
|
89
|
-
_req_md = Path(os.path.realpath(
|
|
87
|
+
_req_md = Path(os.path.realpath(os.path.join(_root_str, "REQUIREMENTS.md"))) # legacy
|
|
88
|
+
_repo_idx = Path(os.path.realpath(os.path.join(_root_str, ".repo-index", "files.json")))
|
|
90
89
|
scope = infer_scope(
|
|
91
90
|
utterance,
|
|
92
91
|
_req_md,
|
|
93
|
-
repo_index_path=
|
|
92
|
+
repo_index_path=_repo_idx,
|
|
94
93
|
)
|
|
95
94
|
|
|
96
95
|
requirement_ids = [r.req_id for r in scope.matched_requirements]
|
|
97
96
|
|
|
98
|
-
# ── Direct ID extraction (fix #166)
|
|
97
|
+
# ── Direct ID extraction (fix #166) ───────────────────────────────────────────
|
|
99
98
|
# If the utterance contains explicit REQ-*/TEST-* IDs, look them up in the
|
|
100
99
|
# JSON machine state and merge them in — this handles project-prefixed IDs
|
|
101
100
|
# (e.g. REQ-NN-001, TEST-NN-002a) that token overlap may not catch.
|
|
@@ -104,12 +103,10 @@ def run_preflight(
|
|
|
104
103
|
explicit_req_ids = [m.upper() for m in _EXPLICIT_REQ.findall(utterance)]
|
|
105
104
|
explicit_test_ids = [m.upper() for m in _EXPLICIT_TEST.findall(utterance)]
|
|
106
105
|
|
|
107
|
-
# Read requirements machine-state
|
|
108
|
-
#
|
|
109
|
-
# (Helper functions with a root: Path parameter are analysed conservatively
|
|
110
|
-
# by CodeQL and can re-introduce py/path-injection alerts.)
|
|
106
|
+
# Read requirements machine-state using os.path.join on the clean _root_str
|
|
107
|
+
# so CodeQL traces the full sanitisation chain without re-tainting via Path.
|
|
111
108
|
rq_records: list[Any] = []
|
|
112
|
-
rq_path = Path(os.path.realpath(
|
|
109
|
+
rq_path = Path(os.path.realpath(os.path.join(_root_str, ".specsmith", "requirements.json")))
|
|
113
110
|
if rq_path.is_file():
|
|
114
111
|
try:
|
|
115
112
|
_rq = _json.loads(rq_path.read_text(encoding="utf-8"))
|
|
@@ -123,10 +120,10 @@ def run_preflight(
|
|
|
123
120
|
if eid in known_req_ids and eid not in requirement_ids:
|
|
124
121
|
requirement_ids.append(eid)
|
|
125
122
|
|
|
126
|
-
# Read test-case machine-state
|
|
123
|
+
# Read test-case machine-state (same rationale as above).
|
|
127
124
|
test_case_ids: list[str] = []
|
|
128
125
|
tc_records: list[Any] = []
|
|
129
|
-
tc_path = Path(os.path.realpath(
|
|
126
|
+
tc_path = Path(os.path.realpath(os.path.join(_root_str, ".specsmith", "testcases.json")))
|
|
130
127
|
if tc_path.is_file():
|
|
131
128
|
try:
|
|
132
129
|
_tc = _json.loads(tc_path.read_text(encoding="utf-8"))
|
|
@@ -193,8 +190,9 @@ def run_preflight(
|
|
|
193
190
|
)
|
|
194
191
|
confidence_target = 0.7
|
|
195
192
|
|
|
196
|
-
# Config floor (REQ-098)
|
|
197
|
-
|
|
193
|
+
# Config floor (REQ-098) — pass _root_str so the helper never receives
|
|
194
|
+
# a tainted Path object derived from project_dir.
|
|
195
|
+
cfg_threshold = _read_confidence_threshold(_root_str)
|
|
198
196
|
if cfg_threshold is not None and cfg_threshold > confidence_target:
|
|
199
197
|
confidence_target = cfg_threshold
|
|
200
198
|
|
|
@@ -1021,9 +1019,10 @@ def _resolve_provider_name() -> str:
|
|
|
1021
1019
|
return "byoe"
|
|
1022
1020
|
|
|
1023
1021
|
|
|
1024
|
-
def _read_confidence_threshold(root: Path) -> float | None:
|
|
1025
|
-
# .
|
|
1026
|
-
|
|
1022
|
+
def _read_confidence_threshold(root: Path | str) -> float | None:
|
|
1023
|
+
# Use os.path.join + os.path.realpath on the plain-string form so CodeQL
|
|
1024
|
+
# sees the sanitiser inline and does not flag cfg.is_file() or cfg.read_text().
|
|
1025
|
+
cfg = Path(os.path.realpath(os.path.join(str(root), ".specsmith", "config.yml")))
|
|
1027
1026
|
if not cfg.is_file():
|
|
1028
1027
|
return None
|
|
1029
1028
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.14.0.
|
|
3
|
+
Version: 0.14.0.dev543
|
|
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
|
|
@@ -40,7 +40,7 @@ Requires-Dist: pre-commit>=3.0; extra == "dev"
|
|
|
40
40
|
Requires-Dist: types-pyyaml>=6.0; extra == "dev"
|
|
41
41
|
Requires-Dist: cryptography>=42.0; extra == "dev"
|
|
42
42
|
Provides-Extra: esdb
|
|
43
|
-
Requires-Dist: chronomemory>=0.1.
|
|
43
|
+
Requires-Dist: chronomemory>=0.1.7; extra == "esdb"
|
|
44
44
|
Requires-Dist: cryptography>=42.0; extra == "esdb"
|
|
45
45
|
Provides-Extra: docs
|
|
46
46
|
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
@@ -239,7 +239,7 @@ If you hold a chronomemory ESDB license, activate the commercial backend:
|
|
|
239
239
|
# Step 1 — install the chronomemory package
|
|
240
240
|
pip install "specsmith[esdb]" # installs chronomemory from PyPI
|
|
241
241
|
# or if using pipx:
|
|
242
|
-
pipx inject specsmith "chronomemory>=0.1.
|
|
242
|
+
pipx inject specsmith "chronomemory>=0.1.7" # inject into the specsmith pipx venv
|
|
243
243
|
|
|
244
244
|
# Step 2 — activate your license key
|
|
245
245
|
specsmith esdb enable --key-file /path/to/your.esdb.key
|
|
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.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/dispatch/dispatcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/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.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/agent/model_intelligence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/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
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/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.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/epistemic/failure_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/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
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/provider_bar.py
RENAMED
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/gui/widgets/token_meter.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/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.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/integrations/agent_skill.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/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
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m001_governance_yaml.py
RENAMED
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m002_agents_slim.py
RENAMED
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m003_compliance_init.py
RENAMED
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m004_ledger_esdb.py
RENAMED
|
File without changes
|
{specsmith-0.14.0.dev540 → specsmith-0.14.0.dev543}/src/specsmith/migrations/m005_agent_run_tool.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
|