@event4u/agent-config 9.7.0 → 9.9.0
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +314 -190
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +57 -11
- package/dist/agent-src/commands/agents/audit.md +1 -1
- package/dist/agent-src/commands/agents/optimize.md +2 -2
- package/dist/agent-src/commands/agents/user.md +1 -1
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -3
- package/dist/agent-src/commands/commit/in-chunks.md +8 -0
- package/dist/agent-src/commands/commit.md +17 -0
- package/dist/agent-src/commands/fix/portability.md +2 -2
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -2
- package/dist/agent-src/commands/fix/route.md +4 -3
- package/dist/agent-src/commands/fix.md +9 -6
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +2 -2
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -0
- package/dist/agent-src/commands/research.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/contexts/override-system.md +75 -5
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
- package/dist/agent-src/rules/domain-safety-pii.md +1 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
- package/dist/agent-src/rules/git-history-discipline.md +2 -0
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/language-and-tone.md +2 -0
- package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
- package/dist/agent-src/rules/media-governance-routing.md +2 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
- package/dist/agent-src/rules/no-roadmap-references.md +4 -1
- package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
- package/dist/agent-src/rules/onboarding-gate.md +2 -0
- package/dist/agent-src/rules/output-discipline.md +2 -0
- package/dist/agent-src/rules/persona-governance.md +2 -0
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/preservation-guard.md +3 -0
- package/dist/agent-src/rules/reviewer-awareness.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +9 -0
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +11 -1
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/skill-quality.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +2 -0
- package/dist/agent-src/rules/source-of-truth.md +2 -0
- package/dist/agent-src/rules/telegraph-speak.md +2 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -1
- package/dist/agent-src/rules/tool-safety.md +4 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/rules/verify-before-complete.md +2 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
- package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +97 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-review/SKILL.md +5 -6
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
- package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
- package/dist/agent-src/skills/history-design/SKILL.md +101 -0
- package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
- package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
- package/dist/agent-src/skills/image-editing/SKILL.md +2 -1
- package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
- package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
- package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +43 -1
- package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
- package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +3 -3
- package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/rule.md +2 -2
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/cli/commands/doctorShell.js +20 -0
- package/dist/cli/commands/doctorShell.js.map +1 -1
- package/dist/cli/commands/rtkDetect.js +58 -0
- package/dist/cli/commands/rtkDetect.js.map +1 -0
- package/dist/cli/configRoot.js +112 -0
- package/dist/cli/configRoot.js.map +1 -0
- package/dist/cli/configRoot.test.js +97 -0
- package/dist/cli/configRoot.test.js.map +1 -0
- package/dist/cli/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/help.js +4 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +54 -5
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +8 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +502 -101
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +6 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +95 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +36 -7
- package/dist/hooks/dispatch.js +19475 -0
- package/dist/install/agentSwitchDetection.js +75 -0
- package/dist/install/agentSwitchDetection.js.map +1 -0
- package/dist/install/agentSwitchProfile.js +117 -0
- package/dist/install/agentSwitchProfile.js.map +1 -0
- package/dist/install/atomic.js +1 -1
- package/dist/install/detect.js +1 -1
- package/dist/install/install.mjs +791 -486
- package/dist/install/rtkDetection.js +213 -0
- package/dist/install/rtkDetection.js.map +1 -0
- package/dist/install/rule_scope.js +2 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/types.js +2 -2
- package/dist/install/wizard-plan.js +1 -1
- package/dist/install/wizardDismissals.js +58 -0
- package/dist/install/wizardDismissals.js.map +1 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +15 -4
- package/dist/mcp/server.json +20 -0
- package/dist/mcp/server.mjs +44292 -0
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +14 -7
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +12 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/io/sharedWriteCheck.js +101 -0
- package/dist/server/io/sharedWriteCheck.js.map +1 -0
- package/dist/server/routes/ping.js +32 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +21 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/userMd.js +21 -4
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +68 -25
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +12 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/server/serverInfo.js +6 -2
- package/dist/server/serverInfo.js.map +1 -1
- package/dist/server/token.js +11 -4
- package/dist/server/token.js.map +1 -1
- package/dist/server/writeRoot.js +15 -1
- package/dist/server/writeRoot.js.map +1 -1
- package/dist/shared/capabilities.js +33 -0
- package/dist/shared/capabilities.js.map +1 -0
- package/dist/shared/capabilities.test.js +39 -0
- package/dist/shared/capabilities.test.js.map +1 -0
- package/dist/ui/assets/index-BpSQt5vm.js +40 -0
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
- package/dist/ui/assets/index-jSfMW8_t.css +1 -0
- package/dist/ui/index.html +15 -6
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +22 -9
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/config/agent-settings.template.yml +94 -13
- package/src/config/discovery/packs.yml +22 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/evaluator-budgets.json +47 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/config/reach-channels.yml +217 -0
- package/src/config/reach-prescriptions-intake.yml +200 -0
- package/src/install/agentSwitchDetection.ts +90 -0
- package/src/install/agentSwitchProfile.ts +131 -0
- package/src/install/atomic.ts +1 -1
- package/src/install/detect.ts +1 -1
- package/src/install/rtkDetection.ts +274 -0
- package/src/install/rule_scope.ts +9 -2
- package/src/install/types.ts +2 -2
- package/src/install/wizard-plan.ts +1 -1
- package/src/install/wizardDismissals.ts +60 -0
- package/src/scripts/_cli/cmd_doctor.ts +62 -1
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +96 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
- package/src/scripts/_lib/auto_dispatch.ts +76 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/exec_evidence.ts +251 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +15 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +15 -0
- package/src/scripts/_lib/install_drift.ts +194 -0
- package/src/scripts/_lib/kernel_rules.ts +46 -0
- package/src/scripts/_lib/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
- package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
- package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
- package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
- package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
- package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
- package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
- package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
- package/src/scripts/_lib/persistence/types.ts +109 -0
- package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
- package/src/scripts/_lib/risk_paths.ts +160 -0
- package/src/scripts/_lib/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/secret_detector.test.ts +108 -0
- package/src/scripts/_lib/secret_detector.ts +328 -0
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
- package/src/scripts/_lib/spawn_env.ts +7 -0
- package/src/scripts/_lib/sqlite_guard.ts +191 -0
- package/src/scripts/_lib/subagent_spawn.ts +53 -0
- package/src/scripts/_lib/tool_probe.ts +359 -0
- package/src/scripts/_lib/worker_budget.ts +107 -0
- package/src/scripts/adr/regenerate_index.ts +81 -6
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/config.ts +12 -6
- package/src/scripts/ai_council/orchestrator.ts +73 -3
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +48 -0
- package/src/scripts/audit_adr_coverage.ts +33 -0
- package/src/scripts/audit_initial_context.ts +1 -1
- package/src/scripts/bench_cross_source_eval.ts +400 -0
- package/src/scripts/bench_honesty_score.ts +1093 -0
- package/src/scripts/bench_hook_latency.ts +218 -0
- package/src/scripts/build_mcp_catalog.ts +275 -0
- package/src/scripts/build_mcp_registry_manifest.ts +46 -0
- package/src/scripts/build_proof.ts +207 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_adr_frontmatter.ts +195 -0
- package/src/scripts/check_artefact_count_messaging.ts +4 -0
- package/src/scripts/check_backstop_debt.ts +210 -0
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_claims.ts +188 -8
- package/src/scripts/check_comparison.ts +12 -0
- package/src/scripts/check_enforcement_coverage.ts +592 -0
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_kernel_rule_bundle.ts +16 -12
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_reach_channels.ts +407 -0
- package/src/scripts/check_reach_staleness.ts +364 -0
- package/src/scripts/check_secret_leak.test.ts +47 -0
- package/src/scripts/check_secret_leak.ts +290 -0
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +379 -0
- package/src/scripts/code_graph/detect.ts +186 -0
- package/src/scripts/code_graph/extract.ts +386 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/loader.ts +123 -0
- package/src/scripts/code_graph/query.ts +290 -0
- package/src/scripts/code_graph/sanitize.ts +30 -0
- package/src/scripts/code_graph/sqlite_store.ts +174 -0
- package/src/scripts/code_graph/types.ts +83 -0
- package/src/scripts/code_graph/validate.ts +63 -0
- package/src/scripts/condense.ts +14 -6
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/council_cli.ts +126 -12
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +8 -4
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/generate_subagent_floor.ts +194 -0
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +65 -16
- package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
- package/src/scripts/hooks/block_no_verify.ts +9 -9
- package/src/scripts/hooks/code_graph_nudge_hook.ts +191 -0
- package/src/scripts/hooks/concern_registry.ts +75 -0
- package/src/scripts/hooks/design_slop_hook.ts +8 -5
- package/src/scripts/hooks/dispatch_entry.ts +37 -0
- package/src/scripts/hooks/dispatch_hook.ts +176 -3
- package/src/scripts/hooks/hook_stdin.ts +42 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
- package/src/scripts/hot_context_hook.ts +7 -6
- package/src/scripts/injection_scan_hook.ts +9 -1
- package/src/scripts/install +6 -6
- package/src/scripts/install-hooks.sh +4 -4
- package/src/scripts/install.sh +5 -4
- package/src/scripts/install.ts +264 -23
- package/src/scripts/iron_law_sha.ts +3 -12
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_budget_ownership.ts +89 -0
- package/src/scripts/lint_command_routing.ts +35 -5
- package/src/scripts/lint_command_verbs.ts +42 -9
- package/src/scripts/lint_consumer_internal_refs.ts +211 -0
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_documented_commands.ts +670 -0
- package/src/scripts/lint_framework_leakage.ts +17 -3
- package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
- package/src/scripts/lint_governed_writes.ts +335 -0
- package/src/scripts/lint_hidden_unicode.ts +6 -0
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_override_kernel_guard.ts +267 -0
- package/src/scripts/lint_persistence.ts +171 -0
- package/src/scripts/lint_pre_migration_refs.ts +106 -0
- package/src/scripts/lint_provenance.ts +547 -0
- package/src/scripts/lint_provenance_vocabulary.ts +437 -0
- package/src/scripts/lint_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_versioned_cache.ts +7 -1
- package/src/scripts/mcp_server/__main__.ts +7 -2
- package/src/scripts/mcp_server/catalog.ts +23 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
- package/src/scripts/mcp_server/prompts.ts +6 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
- package/src/scripts/mcp_server/tools.ts +56 -5
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/measure_rule_budget.ts +3 -12
- package/src/scripts/memory_learn_hook.ts +126 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/memory_replay_24.ts +312 -0
- package/src/scripts/memory_report.ts +16 -3
- package/src/scripts/memory_signal.ts +48 -0
- package/src/scripts/memory_status.ts +6 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/prepack-check.mjs +17 -0
- package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
- package/src/scripts/prepack_lifecycle_check.mjs +82 -0
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/reach_doctor.ts +1651 -0
- package/src/scripts/release.ts +24 -3
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/risk_escalation_shadow.ts +160 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/schemas/agent-settings.schema.json +23 -0
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/reach-channels.schema.json +134 -0
- package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
- package/src/scripts/schemas/rule.schema.json +20 -0
- package/src/scripts/self_review_gate.test.ts +173 -1
- package/src/scripts/self_review_gate.ts +155 -15
- package/src/scripts/session_canary_hook.ts +182 -0
- package/src/scripts/skill_linter.ts +55 -0
- package/src/scripts/smoke_quickstart.ts +2 -2
- package/src/scripts/surface_probe_hook.ts +8 -7
- package/src/scripts/sync_gitattributes.ts +310 -0
- package/src/scripts/team_review_gate_hook.ts +13 -16
- package/src/scripts/validate_reach_prescriptions.ts +751 -0
- package/src/scripts/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +24 -2
- package/src/shared/capabilities.test.ts +43 -0
- package/src/shared/capabilities.ts +75 -0
- package/src/templates/minimal/agents-overrides-readme.md +20 -0
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-BiEZiZ31.js +0 -40
- package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
- package/docs/CLAIMS.md +0 -261
- package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
- package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
- package/docs/SKILL_CENSUS.md +0 -352
- package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
- package/docs/adrs/cost/README.md +0 -9
- package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
- package/docs/adrs/memory/README.md +0 -10
- package/docs/adrs/router/0001-three-tier-routing.md +0 -119
- package/docs/adrs/router/README.md +0 -9
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
- package/docs/adrs/schema/README.md +0 -9
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
- package/docs/adrs/smoke/README.md +0 -9
- package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
- package/docs/adrs/telegraph/README.md +0 -9
- package/docs/announcements/2026-05-non-dev-launch.md +0 -79
- package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
- package/docs/anti-reskin-gate.md +0 -60
- package/docs/architecture/augment-projection.md +0 -70
- package/docs/architecture/claude-bundle.md +0 -77
- package/docs/architecture/current-onboard-baseline.md +0 -126
- package/docs/architecture/current-safety-behavior.md +0 -137
- package/docs/architecture/multi-tool-projection.md +0 -125
- package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
- package/docs/architecture/source-projection.md +0 -85
- package/docs/architecture.md +0 -390
- package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
- package/docs/archive/CHANGELOG-7.0.0.md +0 -419
- package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
- package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
- package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
- package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
- package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
- package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
- package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
- package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
- package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
- package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
- package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
- package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
- package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
- package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
- package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
- package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
- package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
- package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
- package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
- package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
- package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
- package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
- package/docs/artefact-census.md +0 -71
- package/docs/benchmark.md +0 -648
- package/docs/benchmark.pinned.yml +0 -31
- package/docs/benchmarks.md +0 -85
- package/docs/capability-matrix.md +0 -33
- package/docs/case-studies/_template.md +0 -60
- package/docs/case-studies/frontend-design-positioning.md +0 -86
- package/docs/catalog.md +0 -721
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -45
- package/docs/contracts/CHANGELOG-conventions.md +0 -149
- package/docs/contracts/STABILITY.md +0 -188
- package/docs/contracts/adoption-signal-floor.md +0 -127
- package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
- package/docs/contracts/adr-chat-history-split.md +0 -140
- package/docs/contracts/adr-command-suggestion.md +0 -144
- package/docs/contracts/adr-forecast-construction-shape.md +0 -90
- package/docs/contracts/adr-gtm-context-spine.md +0 -116
- package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
- package/docs/contracts/adr-install-user-type-axis.md +0 -107
- package/docs/contracts/adr-layout.md +0 -107
- package/docs/contracts/adr-level-6-productization.md +0 -145
- package/docs/contracts/adr-mcp-runtime.md +0 -128
- package/docs/contracts/adr-product-ui-track.md +0 -381
- package/docs/contracts/adr-prompt-driven-execution.md +0 -186
- package/docs/contracts/adr-settings-sync-engine.md +0 -128
- package/docs/contracts/adr-user-types-axis.md +0 -127
- package/docs/contracts/adr-wing4-context-spine.md +0 -126
- package/docs/contracts/agent-user-schema.md +0 -170
- package/docs/contracts/agents-layout.md +0 -148
- package/docs/contracts/agents-md-tech-stack.md +0 -75
- package/docs/contracts/ai-council-config.md +0 -829
- package/docs/contracts/ai-team-config.md +0 -224
- package/docs/contracts/analysis-memory-loop.md +0 -149
- package/docs/contracts/at-rest-encryption.md +0 -191
- package/docs/contracts/audit-log-v1.md +0 -150
- package/docs/contracts/auto-orchestration-v1.md +0 -70
- package/docs/contracts/benchmark-ab-contract.md +0 -106
- package/docs/contracts/benchmark-corpus-spec.md +0 -125
- package/docs/contracts/benchmark-report-schema.md +0 -113
- package/docs/contracts/branch-protection-policy.md +0 -139
- package/docs/contracts/brand-token-consumption.md +0 -74
- package/docs/contracts/capability-boundary.md +0 -69
- package/docs/contracts/capability-packs.md +0 -217
- package/docs/contracts/ci-cost-budget.md +0 -111
- package/docs/contracts/ci-green-floor.md +0 -141
- package/docs/contracts/command-category-governance.md +0 -84
- package/docs/contracts/command-clusters.md +0 -399
- package/docs/contracts/command-surface-tiers.md +0 -176
- package/docs/contracts/command-taxonomy.md +0 -137
- package/docs/contracts/condensation-default-kill-criterion.md +0 -116
- package/docs/contracts/config-presets.md +0 -144
- package/docs/contracts/conformance.md +0 -84
- package/docs/contracts/consumer-bridge.md +0 -73
- package/docs/contracts/context-paths.md +0 -101
- package/docs/contracts/context-spine.md +0 -179
- package/docs/contracts/cost-dashboard.md +0 -143
- package/docs/contracts/cost-enforcement.md +0 -134
- package/docs/contracts/cost-profile-defaults.md +0 -110
- package/docs/contracts/cost-summary-schema.md +0 -107
- package/docs/contracts/creative-pack-boundary.md +0 -63
- package/docs/contracts/cross-repo-retrieval.md +0 -64
- package/docs/contracts/cross-wing-handoff.md +0 -134
- package/docs/contracts/daily-workspace.md +0 -147
- package/docs/contracts/decision-engine-gates.md +0 -120
- package/docs/contracts/decision-trace-v1.md +0 -177
- package/docs/contracts/design-artifact-lifecycle.md +0 -93
- package/docs/contracts/design-artifact-verification.md +0 -153
- package/docs/contracts/discovery-manifest.md +0 -209
- package/docs/contracts/discovery-manifest.schema.json +0 -254
- package/docs/contracts/evidence-based-pruning.md +0 -102
- package/docs/contracts/explain-modes.md +0 -187
- package/docs/contracts/explain-trace.schema.json +0 -144
- package/docs/contracts/file-ownership-matrix.json +0 -13941
- package/docs/contracts/file-ownership-matrix.md +0 -135
- package/docs/contracts/frontmatter-contract.md +0 -140
- package/docs/contracts/ghostwriter-schema.md +0 -337
- package/docs/contracts/governance-enforcement-projection.md +0 -159
- package/docs/contracts/gui-wizard.md +0 -350
- package/docs/contracts/harness-expectations.md +0 -128
- package/docs/contracts/hook-architecture-v1.md +0 -325
- package/docs/contracts/host-agent-protocol.md +0 -110
- package/docs/contracts/implement-ticket-flow.md +0 -625
- package/docs/contracts/init-telemetry.md +0 -132
- package/docs/contracts/injected-block-authenticity-model.md +0 -66
- package/docs/contracts/install-layout.md +0 -249
- package/docs/contracts/install-scopes.md +0 -82
- package/docs/contracts/installed-tools-lockfile.md +0 -144
- package/docs/contracts/installer-agent-mode.md +0 -137
- package/docs/contracts/iron-law-overrides.txt +0 -26
- package/docs/contracts/kernel-membership.md +0 -339
- package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
- package/docs/contracts/linear-ai-three-layers.md +0 -130
- package/docs/contracts/linter-structural-model.md +0 -181
- package/docs/contracts/load-context-budget-model.md +0 -259
- package/docs/contracts/load-context-schema.md +0 -220
- package/docs/contracts/local-analytics.md +0 -160
- package/docs/contracts/local-knowledge-ingestion.md +0 -96
- package/docs/contracts/local-server-api.md +0 -134
- package/docs/contracts/low-impact-corpus-format.md +0 -95
- package/docs/contracts/mcp-beta-criteria.md +0 -130
- package/docs/contracts/mcp-cloud-scope.md +0 -355
- package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
- package/docs/contracts/mcp-phase-1-scope.md +0 -272
- package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
- package/docs/contracts/mcp-tool-inventory.md +0 -64
- package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
- package/docs/contracts/measurement-baseline.md +0 -103
- package/docs/contracts/memory-visibility-v1.md +0 -160
- package/docs/contracts/mental-models.md +0 -336
- package/docs/contracts/migrate-command.md +0 -233
- package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
- package/docs/contracts/namespace.md +0 -125
- package/docs/contracts/no-runtime-boundary.md +0 -61
- package/docs/contracts/one-off-script-lifecycle.md +0 -110
- package/docs/contracts/orchestration-dsl-v1.md +0 -153
- package/docs/contracts/package-self-orientation.md +0 -163
- package/docs/contracts/pilot/agent-authority.md +0 -24
- package/docs/contracts/pilot/direct-answers.md +0 -70
- package/docs/contracts/pilot/language-and-tone.md +0 -63
- package/docs/contracts/plain-language-surface.md +0 -117
- package/docs/contracts/prelaunch-diagnostics.md +0 -151
- package/docs/contracts/profile-system.md +0 -167
- package/docs/contracts/reasoning-discipline-protocol.md +0 -83
- package/docs/contracts/release-pr-gating.md +0 -151
- package/docs/contracts/release-sizing.md +0 -107
- package/docs/contracts/release-trunk-sync.md +0 -105
- package/docs/contracts/review-lens-schema.md +0 -64
- package/docs/contracts/roadmap-complexity-standard.md +0 -138
- package/docs/contracts/role-experience.md +0 -125
- package/docs/contracts/router-blending.md +0 -71
- package/docs/contracts/rule-classification.md +0 -171
- package/docs/contracts/rule-interactions.md +0 -132
- package/docs/contracts/rule-interactions.yml +0 -260
- package/docs/contracts/rule-priority-hierarchy.md +0 -88
- package/docs/contracts/rule-router.md +0 -287
- package/docs/contracts/safety-model.md +0 -129
- package/docs/contracts/session-profile-overlay.md +0 -157
- package/docs/contracts/settings-api.md +0 -264
- package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
- package/docs/contracts/settings-sync-yaml-subset.md +0 -139
- package/docs/contracts/skill-bundled-assets.md +0 -62
- package/docs/contracts/skill-discovery.md +0 -80
- package/docs/contracts/skill-distribution-channels.md +0 -66
- package/docs/contracts/skill-domains.md +0 -144
- package/docs/contracts/skill-dry-run.md +0 -47
- package/docs/contracts/skill-family-map.yml +0 -915
- package/docs/contracts/smoke-contracts.md +0 -144
- package/docs/contracts/subagent-boundary.md +0 -59
- package/docs/contracts/surface-agent-contracts.md +0 -153
- package/docs/contracts/surface-matrix.md +0 -108
- package/docs/contracts/surface-tiers.md +0 -81
- package/docs/contracts/telegraph-telemetry.md +0 -83
- package/docs/contracts/ticket-bundle-format.md +0 -233
- package/docs/contracts/tier-3-contrib-plugin.md +0 -137
- package/docs/contracts/trust-and-safety.md +0 -144
- package/docs/contracts/ui-stack-extension.md +0 -237
- package/docs/contracts/ui-track-flow.md +0 -329
- package/docs/contracts/universal-skills.md +0 -91
- package/docs/contracts/user-type-schema.md +0 -146
- package/docs/contracts/value-dashboard-spec.md +0 -378
- package/docs/contracts/value-report-schema.md +0 -168
- package/docs/contracts/workflow-packs.md +0 -121
- package/docs/contracts/workspace-boundary.md +0 -84
- package/docs/contracts/workspace-documents.md +0 -144
- package/docs/contracts/write-engine.md +0 -182
- package/docs/cookbook.md +0 -152
- package/docs/customization.md +0 -685
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
- package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
- package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
- package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
- package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
- package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
- package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
- package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
- package/docs/decisions/ADR-016-installer-architecture.md +0 -189
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
- package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
- package/docs/decisions/ADR-021-deployment-shape.md +0 -153
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
- package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
- package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
- package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
- package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
- package/docs/decisions/ADR-028-root-layout.md +0 -147
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
- package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
- package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
- package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
- package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
- package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
- package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
- package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
- package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
- package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
- package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
- package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
- package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
- package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
- package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
- package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
- package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
- package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
- package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
- package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
- package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
- package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
- package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
- package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
- package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
- package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
- package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
- package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
- package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
- package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
- package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
- package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
- package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
- package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
- package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
- package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
- package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
- package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
- package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
- package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
- package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
- package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
- package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
- package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
- package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
- package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
- package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
- package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
- package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
- package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
- package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
- package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
- package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
- package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
- package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
- package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
- package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
- package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
- package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
- package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
- package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
- package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
- package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
- package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
- package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
- package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
- package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
- package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
- package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
- package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
- package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
- package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
- package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
- package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
- package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
- package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
- package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -246
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -110
- package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -201
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
- package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
- package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
- package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
- package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
- package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
- package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
- package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
- package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
- package/docs/decisions/INDEX.md +0 -136
- package/docs/deploy/connector-setup.md +0 -129
- package/docs/deploy/env-vars.md +0 -70
- package/docs/deploy/policy-cookbook.md +0 -130
- package/docs/deploy/quickstart.md +0 -112
- package/docs/deploy/small-team-recipe.md +0 -148
- package/docs/deploy/team-deployment-posture.md +0 -111
- package/docs/design/adversarial-council-eval.md +0 -106
- package/docs/design/council-vs-solo-baseline.md +0 -92
- package/docs/design/cross-model-parity-eval.md +0 -82
- package/docs/design/length-neutral-judge-rerun.md +0 -92
- package/docs/design/utilization-window-criteria.md +0 -51
- package/docs/development.md +0 -230
- package/docs/distribution/awesome-list-submission.md +0 -46
- package/docs/distribution/consumer-matrix.md +0 -96
- package/docs/distribution/launch-story-draft.md +0 -58
- package/docs/distribution/mcp-submission-checklist.md +0 -95
- package/docs/distribution/public-install-smoke.md +0 -68
- package/docs/distribution/registries.md +0 -117
- package/docs/distribution/registry-submissions.md +0 -85
- package/docs/distribution/telemetry-privacy.md +0 -128
- package/docs/distribution/telemetry-schema.md +0 -174
- package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
- package/docs/end-to-end-walkthroughs.md +0 -165
- package/docs/enforcement-by-host.md +0 -44
- package/docs/examples/agent-user.example.md +0 -22
- package/docs/experiences/agency.md +0 -49
- package/docs/experiences/content_creator.md +0 -49
- package/docs/experiences/developer.md +0 -49
- package/docs/experiences/finance.md +0 -50
- package/docs/experiences/founder.md +0 -49
- package/docs/experiences/ops.md +0 -49
- package/docs/featured-commands.md +0 -27
- package/docs/featured-skills.md +0 -95
- package/docs/flows.md +0 -67
- package/docs/getting-started-by-role.md +0 -190
- package/docs/getting-started-laravel.md +0 -72
- package/docs/getting-started-local-stdio.md +0 -77
- package/docs/getting-started.md +0 -254
- package/docs/github-topics.md +0 -93
- package/docs/governance-advantage.md +0 -72
- package/docs/governance.md +0 -96
- package/docs/guides/cross-repo-linked-projects.md +0 -93
- package/docs/guides/cross-repo-retrieval.md +0 -61
- package/docs/guides/frontend-design-corpus-refresh.md +0 -83
- package/docs/guides/local-analytics.md +0 -125
- package/docs/guides/local-knowledge.md +0 -127
- package/docs/guides/skill-discovery.md +0 -71
- package/docs/guides/skill-preview.md +0 -71
- package/docs/hook-payload-capture.md +0 -221
- package/docs/install-friction-report.md +0 -66
- package/docs/installation.md +0 -959
- package/docs/maintainers/branch-protection.md +0 -105
- package/docs/maintainers/dev-mode.md +0 -106
- package/docs/maintainers/optional-media-deps.md +0 -50
- package/docs/maintainers/system-map.md +0 -85
- package/docs/mcp-registries.md +0 -94
- package/docs/mcp-server.md +0 -175
- package/docs/mcp.md +0 -147
- package/docs/media/proof-demo.cast +0 -14
- package/docs/media/proof-demo.gif +0 -0
- package/docs/migration/consumer-template-consumption-model.md +0 -145
- package/docs/migration/divergences/README.md +0 -55
- package/docs/migration/divergences/_template.md +0 -50
- package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
- package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
- package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
- package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
- package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
- package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
- package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
- package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
- package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
- package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
- package/docs/migration/node-floor.md +0 -86
- package/docs/migration/v1-to-v2.md +0 -156
- package/docs/migration/yaml-roundtrip-spike.md +0 -163
- package/docs/migrations/commands-1.15.0.md +0 -117
- package/docs/parity/bench-external.json +0 -58
- package/docs/parity/bench.json +0 -41
- package/docs/parity/command-frontmatter.md +0 -60
- package/docs/parity/external-runtime.md +0 -46
- package/docs/personas.md +0 -178
- package/docs/positioning-evidence.md +0 -86
- package/docs/profiles.md +0 -108
- package/docs/proof.md +0 -176
- package/docs/quality.md +0 -98
- package/docs/readme-split-plan.md +0 -102
- package/docs/recruits/_template.md +0 -81
- package/docs/release-runbook.md +0 -141
- package/docs/role-experiences.md +0 -19
- package/docs/safety.md +0 -30
- package/docs/second-brain-scope.md +0 -116
- package/docs/self-review-gate.md +0 -65
- package/docs/setup/enterprise-and-offline.md +0 -201
- package/docs/setup/mcp-client-config.md +0 -358
- package/docs/setup/mcp-cloud-endpoints.md +0 -116
- package/docs/setup/mcp-cloud-registry-listing.md +0 -99
- package/docs/setup/mcp-cloud-setup.md +0 -183
- package/docs/setup/mcp-r2-bootstrap.md +0 -82
- package/docs/setup/mcp-server-docker.md +0 -101
- package/docs/setup/per-ide/aider.md +0 -48
- package/docs/setup/per-ide/antigravity.md +0 -68
- package/docs/setup/per-ide/augment.md +0 -89
- package/docs/setup/per-ide/claude-code.md +0 -97
- package/docs/setup/per-ide/claude-desktop.md +0 -207
- package/docs/setup/per-ide/cline.md +0 -43
- package/docs/setup/per-ide/codebuddy.md +0 -63
- package/docs/setup/per-ide/codex.md +0 -46
- package/docs/setup/per-ide/continue.md +0 -68
- package/docs/setup/per-ide/copilot.md +0 -80
- package/docs/setup/per-ide/cursor.md +0 -125
- package/docs/setup/per-ide/droid.md +0 -65
- package/docs/setup/per-ide/gemini-cli.md +0 -45
- package/docs/setup/per-ide/jetbrains.md +0 -76
- package/docs/setup/per-ide/kilocode.md +0 -66
- package/docs/setup/per-ide/kiro.md +0 -72
- package/docs/setup/per-ide/opencode.md +0 -62
- package/docs/setup/per-ide/qoder.md +0 -63
- package/docs/setup/per-ide/roocode.md +0 -68
- package/docs/setup/per-ide/trae.md +0 -63
- package/docs/setup/per-ide/warp.md +0 -63
- package/docs/setup/per-ide/windsurf.md +0 -109
- package/docs/setup/per-ide/zed.md +0 -73
- package/docs/showcase.md +0 -209
- package/docs/skill-duplication-findings.md +0 -91
- package/docs/skills-catalog.md +0 -265
- package/docs/skills-taxonomy.md +0 -90
- package/docs/spawn-site-policy.md +0 -72
- package/docs/succession.md +0 -80
- package/docs/threat-model.md +0 -29
- package/docs/troubleshooting.md +0 -155
- package/docs/ui-track-mental-model.md +0 -121
- package/docs/us-vs-the-category.md +0 -38
- package/docs/value.md +0 -86
- package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
- package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
- package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
- package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
- package/docs/walkthroughs/daily-workspace.md +0 -127
- package/docs/wedge/production-validator/README.md +0 -81
- package/docs/wedge/production-validator/first-run-check.sh +0 -42
- package/docs/wedge/production-validator/production-validator.md +0 -83
- package/docs/wizard.md +0 -173
|
@@ -72,10 +72,16 @@ export interface SkillPrompt {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/** Walk up from this file to the repo root (parent of `scripts/`). */
|
|
75
|
+
declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
|
|
75
76
|
export function _project_root(): string {
|
|
76
77
|
// Python: Path(__file__).resolve().parent.parent.parent.parent
|
|
77
78
|
// __file__ = src/scripts/mcp_server/prompts.py
|
|
78
79
|
// → .../src/scripts/mcp_server → src/scripts → src → repo root.
|
|
80
|
+
// Bundled (dist/mcp/server.mjs) the module sits two levels below the
|
|
81
|
+
// package root — the esbuild --define sentinel picks the right depth.
|
|
82
|
+
if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) {
|
|
83
|
+
return path.resolve(fileURLToPath(import.meta.url), '..', '..', '..');
|
|
84
|
+
}
|
|
79
85
|
return path.resolve(fileURLToPath(import.meta.url), '..', '..', '..', '..');
|
|
80
86
|
}
|
|
81
87
|
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
// Source-of-truth data for `../build_mcp_catalog.ts` (Phase 3 of
|
|
2
|
+
// road-to-credible-install — MCP hygiene: generated truth, honest stubs).
|
|
3
|
+
//
|
|
4
|
+
// `consumer_tool_catalog.json` used to be hand-maintained: every tool's
|
|
5
|
+
// name/description/input_schema had to be kept in sync by hand across the
|
|
6
|
+
// JSON file AND its real handler registration in `tools.ts`. The generator
|
|
7
|
+
// derives the JSON from two registries instead of a third hand-edited copy:
|
|
8
|
+
//
|
|
9
|
+
// - Implemented tools — `ALLOWLIST` in `./tools.ts`. Name, description,
|
|
10
|
+
// input_schema, and side_effect all live on the handler registration
|
|
11
|
+
// itself; the generator reads them directly.
|
|
12
|
+
// - Stub-only tools — `STUB_TOOLS` below. Catalog-listed discovery
|
|
13
|
+
// placeholders with no wired handler (or, for `catalog_search` /
|
|
14
|
+
// `catalog_inspect` / `catalog_load`, a handler that exists in
|
|
15
|
+
// `catalog_tools.ts` but is deliberately not promoted into ALLOWLIST
|
|
16
|
+
// yet — see the file header there). These have no other natural home
|
|
17
|
+
// in the codebase, so their metadata is authored here.
|
|
18
|
+
//
|
|
19
|
+
// Never hand-edit `consumer_tool_catalog.json` — run
|
|
20
|
+
// `npm run build:mcp-catalog` (or `./scripts-run src/scripts/build_mcp_catalog
|
|
21
|
+
// --write`) after changing a tool's registration or a `STUB_TOOLS` entry.
|
|
22
|
+
import type { ToolSideEffect } from './tools.js';
|
|
23
|
+
|
|
24
|
+
export type { ToolSideEffect };
|
|
25
|
+
|
|
26
|
+
/** Free-text top-level `description` field. Human-facing only. */
|
|
27
|
+
export const CATALOG_DESCRIPTION =
|
|
28
|
+
'Source-of-truth catalog of consumer-relevant MCP tools. Read by the ' +
|
|
29
|
+
'stdio server (scripts/mcp_server/) and packed into the Cloud Worker ' +
|
|
30
|
+
"bundle (internal/workers/mcp/). The 'implemented_on' field lists " +
|
|
31
|
+
'transports where the real handler is wired. Entries marked ' +
|
|
32
|
+
"'[stub — implemented on demand]' are DOCUMENTATION of the on-demand " +
|
|
33
|
+
'backlog: per ADR-132 they are NOT registered on the stdio tools/list ' +
|
|
34
|
+
"(the wire carries implemented tools only); the 'not_implemented' " +
|
|
35
|
+
'envelope contract (docs/contracts/mcp-tool-stub-envelope.md) remains ' +
|
|
36
|
+
'for Worker parity. Generated by `src/scripts/build_mcp_catalog.ts` — ' +
|
|
37
|
+
'never hand-edit this file.';
|
|
38
|
+
|
|
39
|
+
export interface StubToolSource {
|
|
40
|
+
readonly name: string;
|
|
41
|
+
readonly description: string;
|
|
42
|
+
readonly side_effect: ToolSideEffect;
|
|
43
|
+
readonly input_schema: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Catalog-only tools with no wired ALLOWLIST handler. `implemented_on` is
|
|
48
|
+
* always `[]` for these — the generator adds the `[stub — implemented on
|
|
49
|
+
* demand]` description marker and omits `annotations` (no real behavior to
|
|
50
|
+
* annotate).
|
|
51
|
+
*/
|
|
52
|
+
export const STUB_TOOLS: readonly StubToolSource[] = [
|
|
53
|
+
{
|
|
54
|
+
name: 'skill_trigger_eval',
|
|
55
|
+
description:
|
|
56
|
+
'Score a user message against the compiled router and return ' +
|
|
57
|
+
'the skills whose triggers match, each with the reason it ' +
|
|
58
|
+
'fired. Use to predict which skills a given message would ' +
|
|
59
|
+
'activate, for debugging trigger coverage. Read-only and ' +
|
|
60
|
+
'deterministic. Returns a ranked list of matching skills with ' +
|
|
61
|
+
'their trigger reasons.',
|
|
62
|
+
side_effect: 'ro',
|
|
63
|
+
input_schema: {
|
|
64
|
+
type: 'object',
|
|
65
|
+
properties: {
|
|
66
|
+
message: { type: 'string', description: 'The user message to score against skill triggers.' },
|
|
67
|
+
context: { type: 'string', description: 'Optional recent-turn context to sharpen the match.' },
|
|
68
|
+
limit: {
|
|
69
|
+
type: 'integer',
|
|
70
|
+
minimum: 1,
|
|
71
|
+
default: 5,
|
|
72
|
+
description: 'Maximum number of matching skills to return. Defaults to 5.',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
required: ['message'],
|
|
76
|
+
additionalProperties: false,
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'suggest_command',
|
|
81
|
+
description:
|
|
82
|
+
'Run the command-suggestion engine: score the available slash ' +
|
|
83
|
+
'commands against a user message and context, and return a ' +
|
|
84
|
+
'ranked, numbered-options block of the best matches. Use to ' +
|
|
85
|
+
'recommend a command for a free-form request without invoking ' +
|
|
86
|
+
'anything. Read-only and deterministic. Returns the formatted ' +
|
|
87
|
+
'suggestion block plus the scored candidates.',
|
|
88
|
+
side_effect: 'ro',
|
|
89
|
+
input_schema: {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: {
|
|
92
|
+
message: { type: 'string', description: 'The user message to match commands against.' },
|
|
93
|
+
context: { type: 'string', description: 'Optional recent-turn context to sharpen the match.' },
|
|
94
|
+
},
|
|
95
|
+
required: ['message'],
|
|
96
|
+
additionalProperties: false,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'suggest_skill_for_task',
|
|
101
|
+
description:
|
|
102
|
+
'Match a free-form task description to the most relevant ' +
|
|
103
|
+
'skills, ranked by their frontmatter triggers. Use to pick a ' +
|
|
104
|
+
'skill for a described task before starting work. Read-only. ' +
|
|
105
|
+
'Returns a ranked list of skills with name, description, and ' +
|
|
106
|
+
'match reason.',
|
|
107
|
+
side_effect: 'ro',
|
|
108
|
+
input_schema: {
|
|
109
|
+
type: 'object',
|
|
110
|
+
properties: {
|
|
111
|
+
task: { type: 'string', description: 'Free-form description of the task to find a skill for.' },
|
|
112
|
+
limit: {
|
|
113
|
+
type: 'integer',
|
|
114
|
+
minimum: 1,
|
|
115
|
+
default: 5,
|
|
116
|
+
description: 'Maximum number of skills to return. Defaults to 5.',
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
required: ['task'],
|
|
120
|
+
additionalProperties: false,
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: 'mine_session',
|
|
125
|
+
description:
|
|
126
|
+
'Extract reusable patterns, decisions, and learnings from a ' +
|
|
127
|
+
'single chat-history session, as candidate memory entries. Use ' +
|
|
128
|
+
'to distill a finished session into durable memory before it ' +
|
|
129
|
+
'ages out. Read-only. Returns the mined candidates grouped by ' +
|
|
130
|
+
'kind.',
|
|
131
|
+
side_effect: 'ro',
|
|
132
|
+
input_schema: {
|
|
133
|
+
type: 'object',
|
|
134
|
+
properties: {
|
|
135
|
+
session: { type: 'string', description: 'Session id to mine.' },
|
|
136
|
+
path: {
|
|
137
|
+
type: 'string',
|
|
138
|
+
description: 'Optional path to a chat-history JSONL; defaults to the standard location.',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
additionalProperties: false,
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: 'update_form_request_messages',
|
|
146
|
+
description:
|
|
147
|
+
"Synchronise the `messages()` method of a Laravel FormRequest " +
|
|
148
|
+
'class: add entries for validation rules that lack a custom ' +
|
|
149
|
+
'message, link them to translation keys, and drop stale ones. ' +
|
|
150
|
+
"Use after changing a FormRequest's `rules()`. Edits the class " +
|
|
151
|
+
'file on disk and returns the planned or applied message ' +
|
|
152
|
+
'changes. Set `dry_run: true` to preview the diff without ' +
|
|
153
|
+
'writing.',
|
|
154
|
+
side_effect: 'fs-write',
|
|
155
|
+
input_schema: {
|
|
156
|
+
type: 'object',
|
|
157
|
+
properties: {
|
|
158
|
+
request_class: {
|
|
159
|
+
type: 'string',
|
|
160
|
+
description: 'Fully-qualified FormRequest class FQN or repo-relative file path.',
|
|
161
|
+
},
|
|
162
|
+
dry_run: {
|
|
163
|
+
type: 'boolean',
|
|
164
|
+
default: false,
|
|
165
|
+
description: 'When true, return the planned message changes without editing the file.',
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
required: ['request_class'],
|
|
169
|
+
additionalProperties: false,
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
name: 'sync_gitignore',
|
|
174
|
+
description:
|
|
175
|
+
'Synchronise the managed `event4u/agent-config` block in the ' +
|
|
176
|
+
"consumer project's `.gitignore` — add missing canonical " +
|
|
177
|
+
'entries while preserving user-added lines. Use after ' +
|
|
178
|
+
'upgrading the package or when generated paths are being ' +
|
|
179
|
+
'tracked by mistake. Edits `.gitignore` and returns the added ' +
|
|
180
|
+
'/ removed entries. Set `dry_run: true` to preview the changes.',
|
|
181
|
+
side_effect: 'fs-write',
|
|
182
|
+
input_schema: {
|
|
183
|
+
type: 'object',
|
|
184
|
+
properties: {
|
|
185
|
+
dry_run: {
|
|
186
|
+
type: 'boolean',
|
|
187
|
+
default: false,
|
|
188
|
+
description: 'When true, return the planned `.gitignore` changes without writing the file.',
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
additionalProperties: false,
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
name: 'sync_agent_settings',
|
|
196
|
+
description:
|
|
197
|
+
'Synchronise `.agent-settings.yml` against the current ' +
|
|
198
|
+
'template and active profile — add new sections and keys ' +
|
|
199
|
+
'while preserving existing user values. Use after a package ' +
|
|
200
|
+
'upgrade to pick up newly introduced settings. Edits the ' +
|
|
201
|
+
'settings file and returns the keys that were (or would be) ' +
|
|
202
|
+
'added. Set `dry_run: true` to preview.',
|
|
203
|
+
side_effect: 'fs-write',
|
|
204
|
+
input_schema: {
|
|
205
|
+
type: 'object',
|
|
206
|
+
properties: {
|
|
207
|
+
profile: { type: 'string', description: 'Override the profile pinned in the settings file.' },
|
|
208
|
+
dry_run: {
|
|
209
|
+
type: 'boolean',
|
|
210
|
+
default: false,
|
|
211
|
+
description: 'When true, return the planned settings changes without writing the file.',
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
additionalProperties: false,
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
name: 'run_quality_checks',
|
|
219
|
+
description:
|
|
220
|
+
"Run the consumer project's configured quality gate (PHPStan " +
|
|
221
|
+
'/ Rector / ECS or the stack equivalent) and return a ' +
|
|
222
|
+
'structured per-tool result. Use before committing to confirm ' +
|
|
223
|
+
'static-analysis and style gates pass. Shell-bound. Pass ' +
|
|
224
|
+
'`tool` to run a single gate; omit to run all.',
|
|
225
|
+
side_effect: 'shell',
|
|
226
|
+
input_schema: {
|
|
227
|
+
type: 'object',
|
|
228
|
+
properties: {
|
|
229
|
+
tool: { type: 'string', description: 'Restrict to a single quality tool by name (e.g. phpstan, rector, ecs).' },
|
|
230
|
+
},
|
|
231
|
+
additionalProperties: false,
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: 'compile_router',
|
|
236
|
+
description:
|
|
237
|
+
'Regenerate the compiled router (`router.compiled.json`) from ' +
|
|
238
|
+
'the current rule, skill, and command frontmatter, so ' +
|
|
239
|
+
'trigger-based routing reflects the latest artifacts. Use ' +
|
|
240
|
+
"after adding or editing a rule / skill / command's trigger " +
|
|
241
|
+
'metadata. Shell-bound — wraps `scripts/compile_router.py` — ' +
|
|
242
|
+
'and returns the regenerated router summary. Set `dry_run: ' +
|
|
243
|
+
'true` to compute the result without writing the file.',
|
|
244
|
+
side_effect: 'shell',
|
|
245
|
+
input_schema: {
|
|
246
|
+
type: 'object',
|
|
247
|
+
properties: {
|
|
248
|
+
dry_run: {
|
|
249
|
+
type: 'boolean',
|
|
250
|
+
default: false,
|
|
251
|
+
description: 'When true, compute the router without writing `router.compiled.json` to disk.',
|
|
252
|
+
},
|
|
253
|
+
},
|
|
254
|
+
additionalProperties: false,
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
name: 'catalog_search',
|
|
259
|
+
description:
|
|
260
|
+
"Search the package's own artifact catalog (skills, personas, " +
|
|
261
|
+
'commands) by free-text query and return ranked summaries — ' +
|
|
262
|
+
'name, description, tags, score — WITHOUT loading any body. ' +
|
|
263
|
+
'Use to discover which skill or persona fits a task when the ' +
|
|
264
|
+
'full catalog is not in context. Read-only, deterministic ' +
|
|
265
|
+
'(BM25 over an on-disk index). Activation deferred behind a ' +
|
|
266
|
+
'task-quality A/B (see catalog_tools.ts).',
|
|
267
|
+
side_effect: 'ro',
|
|
268
|
+
input_schema: {
|
|
269
|
+
type: 'object',
|
|
270
|
+
properties: {
|
|
271
|
+
query: { type: 'string', description: 'Free-text search query.' },
|
|
272
|
+
class: {
|
|
273
|
+
type: 'string',
|
|
274
|
+
enum: ['skill', 'persona', 'command'],
|
|
275
|
+
description: 'Optional: restrict to one artifact class.',
|
|
276
|
+
},
|
|
277
|
+
pack: { type: 'string', description: 'Optional: restrict to entries tagged with this pack/domain.' },
|
|
278
|
+
limit: {
|
|
279
|
+
type: 'integer',
|
|
280
|
+
minimum: 1,
|
|
281
|
+
default: 8,
|
|
282
|
+
description: 'Maximum results. Defaults to 8.',
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
required: ['query'],
|
|
286
|
+
additionalProperties: false,
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: 'catalog_inspect',
|
|
291
|
+
description:
|
|
292
|
+
'Return the metadata for one catalog entry by id (id, class, ' +
|
|
293
|
+
'name, description, tags, path). Body is returned ONLY when ' +
|
|
294
|
+
'include_body is true. Use after catalog_search to look at a ' +
|
|
295
|
+
'candidate before loading it. Read-only. Activation deferred ' +
|
|
296
|
+
'(see catalog_search).',
|
|
297
|
+
side_effect: 'ro',
|
|
298
|
+
input_schema: {
|
|
299
|
+
type: 'object',
|
|
300
|
+
properties: {
|
|
301
|
+
id: { type: 'string', description: 'Catalog id, e.g. `skill:api-design` or `persona:backend-architect`.' },
|
|
302
|
+
include_body: {
|
|
303
|
+
type: 'boolean',
|
|
304
|
+
default: false,
|
|
305
|
+
description: 'When true, include the full body. Defaults to false (metadata only).',
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
required: ['id'],
|
|
309
|
+
additionalProperties: false,
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: 'catalog_load',
|
|
314
|
+
description:
|
|
315
|
+
'Load the full body of one catalog entry by id, wrapped in a ' +
|
|
316
|
+
"neutral reference preamble that subordinates it to the user's " +
|
|
317
|
+
'request and system instructions. Use to bring a ' +
|
|
318
|
+
'skill/persona/command body into context on demand. Read-only, ' +
|
|
319
|
+
'path-confined to the package root. Never injects or acts — ' +
|
|
320
|
+
'the host decides what to do with the body. Activation ' +
|
|
321
|
+
'deferred (see catalog_search).',
|
|
322
|
+
side_effect: 'ro',
|
|
323
|
+
input_schema: {
|
|
324
|
+
type: 'object',
|
|
325
|
+
properties: {
|
|
326
|
+
id: { type: 'string', description: 'Catalog id to load the body for.' },
|
|
327
|
+
},
|
|
328
|
+
required: ['id'],
|
|
329
|
+
additionalProperties: false,
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
];
|
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
// TS port of the retired Python tools.py (ADR-200). Preserves the full public surface:
|
|
31
31
|
// STDIO_TRANSPORT, BuiltinTool, ToolHandler, ALLOWLIST, to_mcp_tool_meta,
|
|
32
32
|
// CATALOG_STUBS, STUB_NAMES, REGISTRY, ToolCache, boot_log_line.
|
|
33
|
+
// TS-only addition (Phase 3 of road-to-credible-install): `ToolSideEffect` +
|
|
34
|
+
// `BuiltinTool.side_effect` — the generated-catalog source of truth for a
|
|
35
|
+
// tool's side-effect classification and `readOnlyHint` annotation.
|
|
33
36
|
import * as fs from 'node:fs';
|
|
34
37
|
import * as path from 'node:path';
|
|
35
38
|
import { fileURLToPath } from 'node:url';
|
|
@@ -77,6 +80,16 @@ export type ToolHandler = (
|
|
|
77
80
|
consumerRoot: string,
|
|
78
81
|
) => Promise<Record<string, unknown>>;
|
|
79
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Side-effect classification surfaced in `consumer_tool_catalog.json` and
|
|
85
|
+
* (for implemented tools) as the `readOnlyHint` MCP annotation. `ro` never
|
|
86
|
+
* writes or spawns; `fs-write` edits the filesystem; `shell` spawns a
|
|
87
|
+
* subprocess. Single source of truth for a tool's own classification — the
|
|
88
|
+
* catalog generator (`build_mcp_catalog.ts`) reads it directly off
|
|
89
|
+
* `ALLOWLIST` rather than a hand-maintained shadow list.
|
|
90
|
+
*/
|
|
91
|
+
export type ToolSideEffect = 'ro' | 'fs-write' | 'shell';
|
|
92
|
+
|
|
80
93
|
/**
|
|
81
94
|
* Static registration record for an allowlisted MCP tool.
|
|
82
95
|
*
|
|
@@ -85,12 +98,15 @@ export type ToolHandler = (
|
|
|
85
98
|
* validated arguments + the resolved `consumer_root` path.
|
|
86
99
|
*
|
|
87
100
|
* Mirrors the Python frozen dataclass `BuiltinTool` (field order
|
|
88
|
-
* preserved).
|
|
101
|
+
* preserved). `side_effect` is a TS-only addition (Phase 3 of
|
|
102
|
+
* road-to-credible-install) — the Python original predates the generated
|
|
103
|
+
* catalog and had no analogous field.
|
|
89
104
|
*/
|
|
90
105
|
export interface BuiltinTool {
|
|
91
106
|
readonly name: string;
|
|
92
107
|
readonly description: string;
|
|
93
108
|
readonly input_schema: Record<string, unknown>;
|
|
109
|
+
readonly side_effect: ToolSideEffect;
|
|
94
110
|
readonly handler: ToolHandler;
|
|
95
111
|
}
|
|
96
112
|
|
|
@@ -1197,6 +1213,7 @@ async function _readResourceBodyHandler(
|
|
|
1197
1213
|
export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
1198
1214
|
lint_skills: {
|
|
1199
1215
|
name: 'lint_skills',
|
|
1216
|
+
side_effect: 'ro',
|
|
1200
1217
|
description:
|
|
1201
1218
|
'Lint skill, rule, command, guideline, and persona markdown ' +
|
|
1202
1219
|
'files for frontmatter and structural errors. Use before ' +
|
|
@@ -1225,6 +1242,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1225
1242
|
},
|
|
1226
1243
|
chat_history_append: {
|
|
1227
1244
|
name: 'chat_history_append',
|
|
1245
|
+
side_effect: 'fs-write',
|
|
1228
1246
|
description:
|
|
1229
1247
|
"Append one structured entry to the consumer project's " +
|
|
1230
1248
|
'chat-history log (a JSONL file). Use to record a decision, ' +
|
|
@@ -1286,6 +1304,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1286
1304
|
},
|
|
1287
1305
|
chat_history_read: {
|
|
1288
1306
|
name: 'chat_history_read',
|
|
1307
|
+
side_effect: 'ro',
|
|
1289
1308
|
description:
|
|
1290
1309
|
"Read recent entries back from the consumer project's " +
|
|
1291
1310
|
'chat-history JSONL ' +
|
|
@@ -1362,6 +1381,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1362
1381
|
},
|
|
1363
1382
|
memory_lookup: {
|
|
1364
1383
|
name: 'memory_lookup',
|
|
1384
|
+
side_effect: 'ro',
|
|
1365
1385
|
description:
|
|
1366
1386
|
'Retrieve engineering-memory entries for one or more memory ' +
|
|
1367
1387
|
'types, optionally narrowed to specific anchor paths. Use ' +
|
|
@@ -1429,6 +1449,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1429
1449
|
},
|
|
1430
1450
|
memory_get: {
|
|
1431
1451
|
name: 'memory_get',
|
|
1452
|
+
side_effect: 'ro',
|
|
1432
1453
|
description:
|
|
1433
1454
|
'Batch-fetch FULL memory entries by id — the second half of ' +
|
|
1434
1455
|
'the index-first retrieval workflow. Call memory_lookup with ' +
|
|
@@ -1453,6 +1474,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1453
1474
|
},
|
|
1454
1475
|
memory_status: {
|
|
1455
1476
|
name: 'memory_status',
|
|
1477
|
+
side_effect: 'ro',
|
|
1456
1478
|
description:
|
|
1457
1479
|
'Report the memory backend status. Memory is entirely ' +
|
|
1458
1480
|
'file-backed (`agents/memory/`); there is no external backend. ' +
|
|
@@ -1467,6 +1489,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1467
1489
|
},
|
|
1468
1490
|
list_skills: {
|
|
1469
1491
|
name: 'list_skills',
|
|
1492
|
+
side_effect: 'ro',
|
|
1470
1493
|
description:
|
|
1471
1494
|
'Enumerate every skill the server currently exposes as a ' +
|
|
1472
1495
|
'prompt, each with its name, description, and source. Use to ' +
|
|
@@ -1482,6 +1505,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1482
1505
|
},
|
|
1483
1506
|
list_commands: {
|
|
1484
1507
|
name: 'list_commands',
|
|
1508
|
+
side_effect: 'ro',
|
|
1485
1509
|
description:
|
|
1486
1510
|
'Enumerate every slash command the server currently exposes ' +
|
|
1487
1511
|
'as a prompt, each with its name and description. Use to ' +
|
|
@@ -1497,6 +1521,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1497
1521
|
},
|
|
1498
1522
|
list_rules: {
|
|
1499
1523
|
name: 'list_rules',
|
|
1524
|
+
side_effect: 'ro',
|
|
1500
1525
|
description:
|
|
1501
1526
|
'Enumerate every behavioral rule the server exposes as a ' +
|
|
1502
1527
|
'resource, each with its URI, name, and description. Use to ' +
|
|
@@ -1513,6 +1538,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1513
1538
|
},
|
|
1514
1539
|
read_resource_body: {
|
|
1515
1540
|
name: 'read_resource_body',
|
|
1541
|
+
side_effect: 'ro',
|
|
1516
1542
|
description:
|
|
1517
1543
|
'Fetch the rendered body of a single resource URI (rule, ' +
|
|
1518
1544
|
'guideline, or context document) in one call, without the ' +
|
|
@@ -1538,6 +1564,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1538
1564
|
},
|
|
1539
1565
|
memory_signal: {
|
|
1540
1566
|
name: 'memory_signal',
|
|
1567
|
+
side_effect: 'fs-write',
|
|
1541
1568
|
description:
|
|
1542
1569
|
'Record an engineering-memory signal — a short, anchored ' +
|
|
1543
1570
|
'observation such as a recurring bug pattern or an ownership ' +
|
|
@@ -1572,6 +1599,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1572
1599
|
},
|
|
1573
1600
|
roadmap_progress: {
|
|
1574
1601
|
name: 'roadmap_progress',
|
|
1602
|
+
side_effect: 'fs-write',
|
|
1575
1603
|
description:
|
|
1576
1604
|
'Regenerate `agents/roadmaps-progress.md` from the current ' +
|
|
1577
1605
|
'checkbox state of every active roadmap. Use after landing ' +
|
|
@@ -1595,6 +1623,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1595
1623
|
},
|
|
1596
1624
|
roadmap_archive: {
|
|
1597
1625
|
name: 'roadmap_archive',
|
|
1626
|
+
side_effect: 'fs-write',
|
|
1598
1627
|
description:
|
|
1599
1628
|
'Archive every roadmap that has reached `count_open == 0` and ' +
|
|
1600
1629
|
'was touched on the current branch — `git mv` to ' +
|
|
@@ -1611,6 +1640,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1611
1640
|
},
|
|
1612
1641
|
capabilities_index: {
|
|
1613
1642
|
name: 'capabilities_index',
|
|
1643
|
+
side_effect: 'fs-write',
|
|
1614
1644
|
description:
|
|
1615
1645
|
"Regenerate `CAPABILITIES.yaml`, the package's coverage index " +
|
|
1616
1646
|
'of skills, rules, commands, and guidelines. Use after adding ' +
|
|
@@ -1634,6 +1664,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1634
1664
|
},
|
|
1635
1665
|
doctor_report: {
|
|
1636
1666
|
name: 'doctor_report',
|
|
1667
|
+
side_effect: 'ro',
|
|
1637
1668
|
description:
|
|
1638
1669
|
'Run the consumer-project doctor diagnostic and return a ' +
|
|
1639
1670
|
'structured health report (install drift, hook wiring, ' +
|
|
@@ -1648,6 +1679,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1648
1679
|
},
|
|
1649
1680
|
conformance_check: {
|
|
1650
1681
|
name: 'conformance_check',
|
|
1682
|
+
side_effect: 'ro',
|
|
1651
1683
|
description:
|
|
1652
1684
|
'Run the consumer conformance contract (`doctor --ci` plus ' +
|
|
1653
1685
|
'installed-and-firing checks) and return pass/fail per check. ' +
|
|
@@ -1662,6 +1694,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1662
1694
|
},
|
|
1663
1695
|
telemetry_report: {
|
|
1664
1696
|
name: 'telemetry_report',
|
|
1697
|
+
side_effect: 'ro',
|
|
1665
1698
|
description:
|
|
1666
1699
|
'Return the artefact-engagement telemetry report — essential ' +
|
|
1667
1700
|
'/ useful / retirement-candidate skills and rules ranked by ' +
|
|
@@ -1684,6 +1717,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1684
1717
|
},
|
|
1685
1718
|
council_estimate: {
|
|
1686
1719
|
name: 'council_estimate',
|
|
1720
|
+
side_effect: 'ro',
|
|
1687
1721
|
description:
|
|
1688
1722
|
'Estimate the token cost of an AI-council debate over a given ' +
|
|
1689
1723
|
'input (roadmap, diff, prompt, or file set) without spending ' +
|
|
@@ -1713,6 +1747,7 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1713
1747
|
},
|
|
1714
1748
|
run_tests: {
|
|
1715
1749
|
name: 'run_tests',
|
|
1750
|
+
side_effect: 'shell',
|
|
1716
1751
|
description:
|
|
1717
1752
|
"Run the consumer project's vitest test suite under a " +
|
|
1718
1753
|
'compiled safety envelope: fixed argv (no shell ' +
|
|
@@ -1744,11 +1779,18 @@ export const ALLOWLIST: Record<string, BuiltinTool> = {
|
|
|
1744
1779
|
|
|
1745
1780
|
/** Render a `BuiltinTool` as kwargs for `mcp.types.Tool`. */
|
|
1746
1781
|
export function to_mcp_tool_meta(tool: BuiltinTool): Record<string, unknown> {
|
|
1747
|
-
|
|
1782
|
+
const meta: Record<string, unknown> = {
|
|
1748
1783
|
name: tool.name,
|
|
1749
1784
|
description: tool.description,
|
|
1750
1785
|
inputSchema: tool.input_schema,
|
|
1751
1786
|
};
|
|
1787
|
+
// Annotations are honest MCP tool-behavior hints (Phase 3 of
|
|
1788
|
+
// road-to-credible-install): only the implemented set carries them — a
|
|
1789
|
+
// stub never actually runs, so there is nothing true to annotate.
|
|
1790
|
+
if (tool.name in ALLOWLIST) {
|
|
1791
|
+
meta['annotations'] = { readOnlyHint: tool.side_effect === 'ro' };
|
|
1792
|
+
}
|
|
1793
|
+
return meta;
|
|
1752
1794
|
}
|
|
1753
1795
|
|
|
1754
1796
|
// ---------------------------------------------------------------------
|
|
@@ -1790,6 +1832,7 @@ function _buildCatalogRegistry(): [Record<string, BuiltinTool>, ReadonlySet<stri
|
|
|
1790
1832
|
name: entry.name,
|
|
1791
1833
|
description: entry.description,
|
|
1792
1834
|
input_schema: entry.input_schema,
|
|
1835
|
+
side_effect: entry.side_effect as ToolSideEffect,
|
|
1793
1836
|
handler: _makeStubHandler(entry, installHintValue),
|
|
1794
1837
|
};
|
|
1795
1838
|
stubNames.add(entry.name);
|
|
@@ -1801,9 +1844,17 @@ const _catalogBuild = _buildCatalogRegistry();
|
|
|
1801
1844
|
export const CATALOG_STUBS: Record<string, BuiltinTool> = _catalogBuild[0];
|
|
1802
1845
|
export const STUB_NAMES: ReadonlySet<string> = _catalogBuild[1];
|
|
1803
1846
|
|
|
1804
|
-
//
|
|
1805
|
-
//
|
|
1806
|
-
|
|
1847
|
+
// Wire-surface registry — IMPLEMENTED TOOLS ONLY (ADR-132, council revisit
|
|
1848
|
+
// 2026-07-27 after the evaluator scoring-model claim was verified: the
|
|
1849
|
+
// 40%-minimum term makes phantom stub tools the structural worst-scored
|
|
1850
|
+
// entries, and an unlisted tool is uncallable in compliant MCP clients
|
|
1851
|
+
// anyway — so a stub on `tools/list` is pure cost). The 12 stub entries
|
|
1852
|
+
// remain in the GENERATED catalog as the documented implemented-on-demand
|
|
1853
|
+
// backlog (marked "[stub — implemented on demand]"); they are no longer
|
|
1854
|
+
// registered as callable tools on the stdio transport. `CATALOG_STUBS` /
|
|
1855
|
+
// `STUB_NAMES` stay exported for the catalog surface, the cloud packer,
|
|
1856
|
+
// and the parity tests.
|
|
1857
|
+
export const REGISTRY: Record<string, BuiltinTool> = { ...ALLOWLIST };
|
|
1807
1858
|
|
|
1808
1859
|
/**
|
|
1809
1860
|
* Registry view backing the MCP `tools/*` handlers.
|
|
@@ -18,9 +18,9 @@ import * as fs from 'node:fs';
|
|
|
18
18
|
import * as path from 'node:path';
|
|
19
19
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
20
20
|
import type { DatabaseSync } from 'node:sqlite';
|
|
21
|
-
import type * as NodeSqlite from 'node:sqlite';
|
|
22
21
|
|
|
23
22
|
import { resolve_db } from './mcp_telemetry_store.js';
|
|
23
|
+
import { loadSqlite } from './_lib/sqlite_guard.js';
|
|
24
24
|
|
|
25
25
|
export interface ToolRow {
|
|
26
26
|
tool_name: string;
|
|
@@ -48,43 +48,12 @@ function toolRowAsDict(t: ToolRow): Record<string, unknown> {
|
|
|
48
48
|
/** Python error subclass marker so main() can mirror the FileNotFoundError branch. */
|
|
49
49
|
class FileNotFoundLikeError extends Error {}
|
|
50
50
|
|
|
51
|
-
// Python's stdlib sqlite3 emits nothing on stderr; node:sqlite is flagged
|
|
52
|
-
// experimental on node 22 and prints an `ExperimentalWarning: SQLite …` line
|
|
53
|
-
// to stderr on first import (stable / silent on node >= 23). Drop only that
|
|
54
|
-
// specific warning so stderr stays byte-stable across node versions (tests
|
|
55
|
-
// pin the exact bytes). Installed once, narrowly matched.
|
|
56
|
-
let _sqliteWarningSilenced = false;
|
|
57
|
-
function _silenceSqliteExperimentalWarning(): void {
|
|
58
|
-
if (_sqliteWarningSilenced) return;
|
|
59
|
-
_sqliteWarningSilenced = true;
|
|
60
|
-
const orig = process.emitWarning.bind(process);
|
|
61
|
-
process.emitWarning = ((warning: string | Error, ...rest: unknown[]): void => {
|
|
62
|
-
const text = typeof warning === 'string' ? warning : (warning?.message ?? '');
|
|
63
|
-
if (/SQLite is an experimental/i.test(text)) return;
|
|
64
|
-
(orig as (w: string | Error, ...a: unknown[]) => void)(warning, ...rest);
|
|
65
|
-
}) as typeof process.emitWarning;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/** Lazy `node:sqlite` import — keeps the module loadable on a runtime without it. */
|
|
69
|
-
async function _loadSqlite(): Promise<typeof NodeSqlite> {
|
|
70
|
-
_silenceSqliteExperimentalWarning();
|
|
71
|
-
try {
|
|
72
|
-
return await import('node:sqlite');
|
|
73
|
-
} catch (exc) {
|
|
74
|
-
const message = exc instanceof Error ? exc.message : String(exc);
|
|
75
|
-
throw new Error(
|
|
76
|
-
`node:sqlite is unavailable in this runtime (${message}). ` +
|
|
77
|
-
'mcp_telemetry_query requires Node with the built-in SQLite module.',
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
51
|
/** Open read-only. Mirrors `_connect_ro`; raises FileNotFound-like on absence. */
|
|
83
52
|
async function _connect_ro(db_path: string): Promise<DatabaseSync> {
|
|
84
53
|
if (!fs.existsSync(db_path)) {
|
|
85
54
|
throw new FileNotFoundLikeError(`telemetry db not found: ${db_path}`);
|
|
86
55
|
}
|
|
87
|
-
const { DatabaseSync } = await
|
|
56
|
+
const { DatabaseSync } = await loadSqlite('mcp_telemetry_query');
|
|
88
57
|
// `file:<posix>?mode=ro` — Python opens via the same URI form.
|
|
89
58
|
const uri = `file:${_asPosix(db_path)}?mode=ro`;
|
|
90
59
|
return new DatabaseSync(uri, { readOnly: true });
|