@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
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* `agent-config memory:get` — CLI twin of the `memory_get` MCP tool
|
|
4
|
+
* (`src/scripts/mcp_server/tools.ts` `_memoryGetHandler`, road-to-memory-
|
|
5
|
+
* retrieval-economy Phase 1).
|
|
6
|
+
*
|
|
7
|
+
* Batch-fetches FULL memory entries by id — the second half of the
|
|
8
|
+
* index-first retrieval workflow: `memory:lookup --detail index` returns
|
|
9
|
+
* compact priced rows, this fetches ONLY the bodies actually needed, in one
|
|
10
|
+
* call. Reuses the exact same shared function the MCP tool calls
|
|
11
|
+
* (`memory_get_v1` in `../memory_lookup.js`) — no duplicated lookup logic.
|
|
12
|
+
*
|
|
13
|
+
* Unlike the MCP handler (which `chdir`s into the consumer root before
|
|
14
|
+
* calling), this CLI relies on `agent-config`'s existing invariant that the
|
|
15
|
+
* dispatcher never changes CWD — `memory_get_v1` resolves `agents/memory`
|
|
16
|
+
* relative to `process.cwd()`, which is already the consumer's repo root.
|
|
17
|
+
*
|
|
18
|
+
* Usage: memory:get <id> [<id> ...] [--format text|json]
|
|
19
|
+
* Exit codes:
|
|
20
|
+
* 0 — every requested id was found.
|
|
21
|
+
* 1 — at least one requested id was not found (unknown id).
|
|
22
|
+
* 2 — usage error (no ids given, unrecognized flag, missing flag value).
|
|
23
|
+
*/
|
|
24
|
+
import process from 'node:process';
|
|
25
|
+
import * as fs from 'node:fs';
|
|
26
|
+
import * as path from 'node:path';
|
|
27
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
28
|
+
|
|
29
|
+
import { memory_get_v1 } from '../memory_lookup.js';
|
|
30
|
+
|
|
31
|
+
const PROG = 'agent-config memory:get';
|
|
32
|
+
const USAGE = `usage: ${PROG} <id> [<id> ...] [--format text|json]\n`;
|
|
33
|
+
|
|
34
|
+
/** argparse-style usage / help exit (code 2 / 0). Caught at the CLI entry. */
|
|
35
|
+
class ArgparseExit extends Error {
|
|
36
|
+
constructor(public readonly code: number) {
|
|
37
|
+
super(`argparse-exit-${code}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
interface Opts {
|
|
42
|
+
ids: string[];
|
|
43
|
+
format: 'text' | 'json';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function _argError(msg: string): never {
|
|
47
|
+
process.stderr.write(USAGE);
|
|
48
|
+
process.stderr.write(`${PROG}: error: ${msg}\n`);
|
|
49
|
+
throw new ArgparseExit(2);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function _parse(argv: string[]): Opts {
|
|
53
|
+
const opts: Opts = { ids: [], format: 'text' };
|
|
54
|
+
let i = 0;
|
|
55
|
+
while (i < argv.length) {
|
|
56
|
+
const a = argv[i] as string;
|
|
57
|
+
if (a === '-h' || a === '--help') {
|
|
58
|
+
process.stdout.write(
|
|
59
|
+
`${USAGE}\n` +
|
|
60
|
+
'Batch-fetch FULL memory entries by id — the second half of the\n' +
|
|
61
|
+
"index-first retrieval workflow (`memory:lookup --detail index`\n" +
|
|
62
|
+
'first, then `memory:get` the ids that justify the fetch).\n\n' +
|
|
63
|
+
'options:\n' +
|
|
64
|
+
' --format text|json output format (default: text)\n' +
|
|
65
|
+
' -h, --help show this help and exit\n\n' +
|
|
66
|
+
'exit codes:\n' +
|
|
67
|
+
' 0 every requested id was found\n' +
|
|
68
|
+
' 1 at least one requested id was not found\n' +
|
|
69
|
+
' 2 usage error\n',
|
|
70
|
+
);
|
|
71
|
+
throw new ArgparseExit(0);
|
|
72
|
+
} else if (a === '--format') {
|
|
73
|
+
const val = argv[i + 1];
|
|
74
|
+
if (val === undefined) _argError('argument --format: expected one argument');
|
|
75
|
+
if (val !== 'text' && val !== 'json') {
|
|
76
|
+
_argError(`argument --format: invalid choice: '${val}' (choose from 'text', 'json')`);
|
|
77
|
+
}
|
|
78
|
+
opts.format = val;
|
|
79
|
+
i += 2;
|
|
80
|
+
} else if (a.startsWith('--format=')) {
|
|
81
|
+
const val = a.slice('--format='.length);
|
|
82
|
+
if (val !== 'text' && val !== 'json') {
|
|
83
|
+
_argError(`argument --format: invalid choice: '${val}' (choose from 'text', 'json')`);
|
|
84
|
+
}
|
|
85
|
+
opts.format = val;
|
|
86
|
+
i += 1;
|
|
87
|
+
} else if (a.startsWith('--')) {
|
|
88
|
+
_argError(`unrecognized arguments: ${a}`);
|
|
89
|
+
} else {
|
|
90
|
+
opts.ids.push(a);
|
|
91
|
+
i += 1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (opts.ids.length === 0) {
|
|
95
|
+
_argError('at least one <id> is required');
|
|
96
|
+
}
|
|
97
|
+
return opts;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function isPlainObject(value: unknown): value is Record<string, unknown> {
|
|
101
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Render one fetched entry as an indented `key: value` block. */
|
|
105
|
+
function _renderEntryText(entry: Record<string, unknown>): string {
|
|
106
|
+
const lines: string[] = [];
|
|
107
|
+
const id = typeof entry['id'] === 'string' ? entry['id'] : '(unknown id)';
|
|
108
|
+
const type = typeof entry['type'] === 'string' ? entry['type'] : '(unknown type)';
|
|
109
|
+
lines.push(`[${id}] ${type}`);
|
|
110
|
+
const body = entry['body'];
|
|
111
|
+
if (isPlainObject(body)) {
|
|
112
|
+
for (const key of Object.keys(body).sort()) {
|
|
113
|
+
lines.push(` ${key}: ${_renderValue(body[key])}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return lines.join('\n');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Render one body value for text output. `memory_lookup.ts` wraps YAML
|
|
121
|
+
* date scalars in a `PyTimestamp`-shaped object (`{ pyStr: string }`, not
|
|
122
|
+
* exported) to mirror Python's `yaml.safe_load` date parsing — duck-type
|
|
123
|
+
* that shape rather than importing the private class.
|
|
124
|
+
*/
|
|
125
|
+
function _renderValue(value: unknown): string {
|
|
126
|
+
if (typeof value === 'string') return value;
|
|
127
|
+
if (isPlainObject(value) && typeof value['pyStr'] === 'string' && Object.keys(value).length === 1) {
|
|
128
|
+
return value['pyStr'];
|
|
129
|
+
}
|
|
130
|
+
return JSON.stringify(value);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function main(argv: string[] | null = null): number {
|
|
134
|
+
const opts = _parse(argv ?? process.argv.slice(2));
|
|
135
|
+
const envelope = memory_get_v1(opts.ids);
|
|
136
|
+
const entries = Array.isArray(envelope['entries']) ? (envelope['entries'] as Record<string, unknown>[]) : [];
|
|
137
|
+
const idStatus = isPlainObject(envelope['ids']) ? (envelope['ids'] as Record<string, string>) : {};
|
|
138
|
+
const unknown = opts.ids.filter((id) => idStatus[id] === 'unknown');
|
|
139
|
+
|
|
140
|
+
if (opts.format === 'json') {
|
|
141
|
+
process.stdout.write(`${JSON.stringify(envelope, null, 2)}\n`);
|
|
142
|
+
} else {
|
|
143
|
+
if (entries.length === 0) {
|
|
144
|
+
process.stdout.write(' (no entries found)\n');
|
|
145
|
+
} else {
|
|
146
|
+
for (const entry of entries) {
|
|
147
|
+
process.stdout.write(`${_renderEntryText(entry)}\n`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const id of unknown) {
|
|
151
|
+
process.stderr.write(`${PROG}: unknown id: ${id}\n`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return unknown.length > 0 ? 1 : 0;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// --- CLI entry ---
|
|
159
|
+
|
|
160
|
+
const _HERE = fileURLToPath(import.meta.url);
|
|
161
|
+
|
|
162
|
+
function _isCliEntry(): boolean {
|
|
163
|
+
if (process.argv[1] === undefined) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
167
|
+
if (import.meta.url === argvUrl) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
171
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
172
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
173
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
174
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
175
|
+
try {
|
|
176
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
177
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
178
|
+
return here === argv;
|
|
179
|
+
} catch {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
185
|
+
try {
|
|
186
|
+
process.exitCode = main(process.argv.slice(2));
|
|
187
|
+
} catch (exc) {
|
|
188
|
+
if (exc instanceof ArgparseExit) {
|
|
189
|
+
process.exitCode = exc.code;
|
|
190
|
+
} else {
|
|
191
|
+
throw exc;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export { ArgparseExit };
|
|
197
|
+
export type { Opts };
|
|
@@ -68,6 +68,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
|
68
68
|
|
|
69
69
|
import * as cli_wrapper from '../_lib/cli_wrapper.js';
|
|
70
70
|
import * as sync_gitignore from '../sync_gitignore.js';
|
|
71
|
+
import * as sync_gitattributes from '../sync_gitattributes.js';
|
|
71
72
|
|
|
72
73
|
const PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..');
|
|
73
74
|
|
|
@@ -306,6 +307,12 @@ function _refresh_project(project_root: string, out: OutSink, err: OutSink): num
|
|
|
306
307
|
if (rc !== 0) {
|
|
307
308
|
return rc;
|
|
308
309
|
}
|
|
310
|
+
|
|
311
|
+
// Memory merge-safety attributes (road-to-reachable-code-memory Phase 5):
|
|
312
|
+
// advisory, same shape as the gitignore sync above — never fails the
|
|
313
|
+
// refresh on its own.
|
|
314
|
+
_sync_gitattributes(project_root, out, err);
|
|
315
|
+
|
|
309
316
|
_print(out, '✅ refresh --project complete.');
|
|
310
317
|
return 0;
|
|
311
318
|
}
|
|
@@ -329,6 +336,28 @@ function _sync_gitignore(project_root: string, out: OutSink, err: OutSink): numb
|
|
|
329
336
|
return 0;
|
|
330
337
|
}
|
|
331
338
|
|
|
339
|
+
/**
|
|
340
|
+
* Sync the memory-merge-safety block into the consumer's `.gitattributes`.
|
|
341
|
+
* Advisory only (mirrors `_sync_gitignore`'s failure shape) — a missing
|
|
342
|
+
* template or a write failure is reported but never fails the refresh.
|
|
343
|
+
*/
|
|
344
|
+
function _sync_gitattributes(project_root: string, out: OutSink, err: OutSink): number {
|
|
345
|
+
let mod: typeof sync_gitattributes;
|
|
346
|
+
try {
|
|
347
|
+
mod = sync_gitattributes;
|
|
348
|
+
} catch (exc) {
|
|
349
|
+
_print(err, `⚠️ refresh --project: gitattributes sync unavailable (${osErrorStr(exc)})`);
|
|
350
|
+
return 0;
|
|
351
|
+
}
|
|
352
|
+
const rc = mod.main(['--path', path.join(project_root, '.gitattributes')]);
|
|
353
|
+
if (rc !== 0 && rc !== null && rc !== undefined) {
|
|
354
|
+
_print(err, `⚠️ refresh --project: gitattributes sync returned ${rc}`);
|
|
355
|
+
} else {
|
|
356
|
+
_print(out, '✅ .gitattributes memory merge-safety block synced.');
|
|
357
|
+
}
|
|
358
|
+
return 0;
|
|
359
|
+
}
|
|
360
|
+
|
|
332
361
|
interface Args {
|
|
333
362
|
is_global: boolean;
|
|
334
363
|
is_project: boolean;
|
|
@@ -460,6 +489,7 @@ export {
|
|
|
460
489
|
_is_source_repo,
|
|
461
490
|
_refresh_project,
|
|
462
491
|
_sync_gitignore,
|
|
492
|
+
_sync_gitattributes,
|
|
463
493
|
_remove_legacy_consumer_bridge_marker,
|
|
464
494
|
ArgparseExit,
|
|
465
495
|
};
|
|
@@ -76,6 +76,7 @@ TS-shell native (run via the installed `agent-config` binary):
|
|
|
76
76
|
commands [ls|explain] List/explain the command surface from the discovery manifest
|
|
77
77
|
mcp-server Turnkey read-only stdio MCP server (no repo clone; ADR-085)
|
|
78
78
|
doctor-shell Probe the TS-shell environment
|
|
79
|
+
rtk:detect rtk (Rust Token Killer) presence + identity readout (--json)
|
|
79
80
|
eval:record Record a live trigger-eval result into a corpus manifest
|
|
80
81
|
EOF
|
|
81
82
|
|
|
@@ -173,6 +174,8 @@ Tier 2 — maintenance / internal (hooks, MCP, memory, telemetry):
|
|
|
173
174
|
relation-graph with a node budget. Flags: --budget N
|
|
174
175
|
benchmark Report context-token reduction vs the full always-loaded
|
|
175
176
|
projection (from the pinned token baseline). Flags: --format
|
|
177
|
+
code-graph Deterministic code-graph engine (ADR-124, Class A).
|
|
178
|
+
Usage: code-graph build|validate|detect|query|explain|affected|path [options]
|
|
176
179
|
roadmap:progress Regenerate agents/roadmaps-progress.md from open roadmaps
|
|
177
180
|
roadmap:progress-check Fail if agents/roadmaps-progress.md is stale (for CI)
|
|
178
181
|
roadmap:archive Archive completed roadmaps (branch-touched by default;
|
|
@@ -205,13 +208,31 @@ Tier 2 — maintenance / internal (hooks, MCP, memory, telemetry):
|
|
|
205
208
|
Usage: hooks:replay --platform <name> --event <event>
|
|
206
209
|
--payload <path|event-name> [--native-event <native>]
|
|
207
210
|
[--manifest <path>] [--json] [--dry-run]
|
|
211
|
+
reach:doctor Health report over the reach channel registry: per channel
|
|
212
|
+
the active backend, lifecycle, and the pinned install command
|
|
213
|
+
for this platform when a backend is missing/broken.
|
|
214
|
+
Read-only — no writes, no installs; NOT a router and NOT an
|
|
215
|
+
agent-facing recommendation.
|
|
216
|
+
Flags: --format json|table, --strict (CI), --channel <id>,
|
|
217
|
+
--registry <path>, --deep (⚠️ opt-in NETWORK: one real
|
|
218
|
+
read-only request per declared backend; never runs in CI,
|
|
219
|
+
writes nothing)
|
|
208
220
|
memory:lookup Retrieve memory entries (text or JSON envelope)
|
|
221
|
+
memory:get Batch-fetch full memory entries by id (CLI twin of the
|
|
222
|
+
memory_get MCP tool). Usage: memory:get <id> [<id> ...] [--format text|json]
|
|
209
223
|
linked-projects:list List opted-in IDE-attached sibling repos (path · detected_via · large)
|
|
210
224
|
Flags: --all (show undecided too), --format json
|
|
211
225
|
memory:signal Append a provisional intake signal (memory proposal)
|
|
212
226
|
memory:hash Hash a memory entry (YAML or JSON stdin)
|
|
213
227
|
memory:check Validate memory YAML schema + staleness
|
|
214
228
|
memory:check-proposal Run the admission gate on a memory proposal
|
|
229
|
+
memory:learn Aggregate memory intake signals into the local learning
|
|
230
|
+
sidecar (read-only; --write to emit). Usage: memory:learn [--intake-dir DIR]
|
|
231
|
+
[--out-dir DIR] [--now ISO] [--write] [--format text|json]
|
|
232
|
+
analytics Local-only workspace analytics (emit|show|prune|migrate).
|
|
233
|
+
Usage: analytics show [--window 30d|7d|24h] · analytics prune
|
|
234
|
+
knowledge Global knowledge-card store (list|show|trace|forget|promote|
|
|
235
|
+
validate|lead-check|purge). Usage: knowledge list [--json]
|
|
215
236
|
proposal:check Validate a learning/skill/rule proposal markdown
|
|
216
237
|
refine-ticket:detect Run the deterministic refine-ticket detection helper
|
|
217
238
|
chat-history:hook Platform hook entry point (read JSON from stdin)
|
|
@@ -296,8 +317,12 @@ Examples (Tier 2):
|
|
|
296
317
|
./agent-config hooks:install
|
|
297
318
|
./agent-config hooks:replay --platform augment --event post_tool_use --payload post_tool_use --json
|
|
298
319
|
./agent-config memory:lookup --types domain-invariants --key billing
|
|
320
|
+
./agent-config memory:get a1-crosshost-subagent-degradation
|
|
299
321
|
./agent-config memory:signal --type architecture-decision --path src/Foo.php --body "…"
|
|
300
322
|
./agent-config memory:check --path agents/memory
|
|
323
|
+
./agent-config memory:learn --format json
|
|
324
|
+
./agent-config code-graph detect
|
|
325
|
+
./agent-config code-graph query <symbol>
|
|
301
326
|
./agent-config refine-ticket:detect ticket-body.txt
|
|
302
327
|
./agent-config telemetry:status
|
|
303
328
|
./agent-config telemetry:status --format json
|
|
@@ -455,6 +480,15 @@ cmd_benchmark() {
|
|
|
455
480
|
exec_ts "$script" "$@"
|
|
456
481
|
}
|
|
457
482
|
|
|
483
|
+
# `agent-config code-graph` — deterministic code-graph engine (ADR-124,
|
|
484
|
+
# Class A). Delegates 1:1 to the engine CLI's own subcommand dispatch
|
|
485
|
+
# (build|validate|detect|query|explain|affected|path); no re-parsing here.
|
|
486
|
+
cmd_code_graph() {
|
|
487
|
+
local script
|
|
488
|
+
script="$(resolve_script "src/scripts/code_graph/cli.ts")"
|
|
489
|
+
exec_ts "$script" "$@"
|
|
490
|
+
}
|
|
491
|
+
|
|
458
492
|
cmd_mcp_check() {
|
|
459
493
|
local script
|
|
460
494
|
script="$(resolve_script "src/scripts/mcp_render.ts")"
|
|
@@ -471,6 +505,13 @@ cmd_mcp_setup() {
|
|
|
471
505
|
# package (PACKAGE_ROOT/src/scripts/mcp_server/) as a TypeScript module run
|
|
472
506
|
# via tsx — no Python venv / SDK install any more (the runtime is Node/tsx).
|
|
473
507
|
cmd_mcp_run() {
|
|
508
|
+
# Precompiled bundle first (road-to-credible-install Phase 1 tsx sweep):
|
|
509
|
+
# one node start, no tsx in the runtime tree. tsx path is the dev-tree
|
|
510
|
+
# fallback only.
|
|
511
|
+
local server_bundle="$PACKAGE_ROOT/dist/mcp/server.mjs"
|
|
512
|
+
if [[ -f "$server_bundle" ]]; then
|
|
513
|
+
exec node "$server_bundle" "$@"
|
|
514
|
+
fi
|
|
474
515
|
local server_main="$PACKAGE_ROOT/src/scripts/mcp_server/__main__.ts"
|
|
475
516
|
if [[ ! -f "$server_main" ]]; then
|
|
476
517
|
echo "❌ agent-config: MCP server module not found at $server_main" >&2
|
|
@@ -542,6 +583,43 @@ cmd_memory_lookup() {
|
|
|
542
583
|
exec_ts "$script" "$@"
|
|
543
584
|
}
|
|
544
585
|
|
|
586
|
+
# `agent-config memory:get` — CLI twin of the `memory_get` MCP tool
|
|
587
|
+
# (batch full-entry fetch by id). Package-internal handler
|
|
588
|
+
# (src/scripts/_cli/cmd_memory_get.ts) reuses `memory_get_v1` from
|
|
589
|
+
# src/scripts/memory_lookup.ts — no separate resolve needed, same
|
|
590
|
+
# direct-PACKAGE_ROOT pattern as cmd_export / cmd_sync / cmd_validate.
|
|
591
|
+
cmd_memory_get() {
|
|
592
|
+
exec_ts "$PACKAGE_ROOT/src/scripts/_cli/cmd_memory_get.ts" "$@"
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
# `agent-config memory:learn` — aggregate the memory intake signal log
|
|
596
|
+
# into the local, gitignored learning sidecar (road-to-retrieval-
|
|
597
|
+
# substrate-hardening B3). Read-only by default (the sidecar's own
|
|
598
|
+
# default); `--write` emits `.agent-learning.json` + `LESSONS.md`.
|
|
599
|
+
cmd_memory_learn() {
|
|
600
|
+
local script
|
|
601
|
+
script="$(resolve_script "src/scripts/learning_sidecar.ts")" || return 1
|
|
602
|
+
exec_ts "$script" "$@"
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
# `agent-config analytics` — local-only workspace analytics
|
|
606
|
+
# (docs/contracts/local-analytics.md). Delegates 1:1 to the module's own
|
|
607
|
+
# subcommand dispatch (emit|show|prune|migrate|decrypt-all|rekey).
|
|
608
|
+
cmd_analytics() {
|
|
609
|
+
local script
|
|
610
|
+
script="$(resolve_script "src/cli/python/workspace_analytics.ts")" || return 1
|
|
611
|
+
exec_ts "$script" "$@"
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
# `agent-config knowledge` — file-first global knowledge-card store
|
|
615
|
+
# (ADR-100). Delegates 1:1 to the store CLI's own subcommand dispatch
|
|
616
|
+
# (list|show|trace|forget|promote|validate|lead-check|purge).
|
|
617
|
+
cmd_knowledge() {
|
|
618
|
+
local script
|
|
619
|
+
script="$(resolve_script "src/scripts/knowledge_global_cli.ts")" || return 1
|
|
620
|
+
exec_ts "$script" "$@"
|
|
621
|
+
}
|
|
622
|
+
|
|
545
623
|
cmd_linked_projects_list() {
|
|
546
624
|
local script
|
|
547
625
|
script="$(resolve_script "src/scripts/linked_projects_list.ts")" || return 1
|
|
@@ -621,6 +699,13 @@ cmd_context_hygiene_hook() {
|
|
|
621
699
|
}
|
|
622
700
|
|
|
623
701
|
cmd_dispatch_hook() {
|
|
702
|
+
# Hook hot path (road-to-credible-install Phase 1): prefer the precompiled
|
|
703
|
+
# single-process bundle — one node start, concerns in-process, no tsx.
|
|
704
|
+
# Fallback to the tsx path only on a stale dev tree without dist/.
|
|
705
|
+
local bundle="$PACKAGE_ROOT/dist/hooks/dispatch.js"
|
|
706
|
+
if [[ -f "$bundle" ]]; then
|
|
707
|
+
exec node "$bundle" "$@"
|
|
708
|
+
fi
|
|
624
709
|
exec_hook "src/scripts/hooks/dispatch_hook" "$@"
|
|
625
710
|
}
|
|
626
711
|
|
|
@@ -636,6 +721,11 @@ cmd_hooks_replay() {
|
|
|
636
721
|
exec_hook "src/scripts/hooks/replay_hook" "$@"
|
|
637
722
|
}
|
|
638
723
|
|
|
724
|
+
# Read-only reach-channel health report. Never installs, never writes.
|
|
725
|
+
cmd_reach_doctor() {
|
|
726
|
+
exec_hook "src/scripts/reach_doctor" "$@"
|
|
727
|
+
}
|
|
728
|
+
|
|
639
729
|
cmd_chat_history_checkpoint() {
|
|
640
730
|
local script
|
|
641
731
|
script="$(resolve_script "src/scripts/chat_history.ts")" || return 1
|
|
@@ -1058,6 +1148,7 @@ main() {
|
|
|
1058
1148
|
affected) cmd_affected "$@" ;;
|
|
1059
1149
|
graph-explain) cmd_graph_explain "$@" ;;
|
|
1060
1150
|
benchmark) cmd_benchmark "$@" ;;
|
|
1151
|
+
code-graph) cmd_code_graph "$@" ;;
|
|
1061
1152
|
roadmap:progress) cmd_roadmap_progress "$@" ;;
|
|
1062
1153
|
roadmap:progress-check) cmd_roadmap_progress_check "$@" ;;
|
|
1063
1154
|
roadmap:archive) cmd_roadmap_archive "$@" ;;
|
|
@@ -1069,11 +1160,15 @@ main() {
|
|
|
1069
1160
|
implement-ticket) cmd_implement_ticket "$@" ;;
|
|
1070
1161
|
work) cmd_work "$@" ;;
|
|
1071
1162
|
memory:lookup) cmd_memory_lookup "$@" ;;
|
|
1163
|
+
memory:get) cmd_memory_get "$@" ;;
|
|
1072
1164
|
linked-projects:list) cmd_linked_projects_list "$@" ;;
|
|
1073
1165
|
memory:signal) cmd_memory_signal "$@" ;;
|
|
1074
1166
|
memory:hash) cmd_memory_hash "$@" ;;
|
|
1075
1167
|
memory:check) cmd_memory_check "$@" ;;
|
|
1076
1168
|
memory:check-proposal) cmd_memory_check_proposal "$@" ;;
|
|
1169
|
+
memory:learn) cmd_memory_learn "$@" ;;
|
|
1170
|
+
analytics) cmd_analytics "$@" ;;
|
|
1171
|
+
knowledge) cmd_knowledge "$@" ;;
|
|
1077
1172
|
proposal:check) cmd_proposal_check "$@" ;;
|
|
1078
1173
|
refine-ticket:detect) cmd_refine_ticket_detect "$@" ;;
|
|
1079
1174
|
chat-history:hook) cmd_chat_history_hook "$@" ;;
|
|
@@ -1085,6 +1180,7 @@ main() {
|
|
|
1085
1180
|
hooks:status) cmd_hooks_status "$@" ;;
|
|
1086
1181
|
hooks:doctor) cmd_hooks_doctor "$@" ;;
|
|
1087
1182
|
hooks:replay) cmd_hooks_replay "$@" ;;
|
|
1183
|
+
reach:doctor) cmd_reach_doctor "$@" ;;
|
|
1088
1184
|
telemetry:record) cmd_telemetry_record "$@" ;;
|
|
1089
1185
|
telemetry:status) cmd_telemetry_status "$@" ;;
|
|
1090
1186
|
telemetry:report) cmd_telemetry_report "$@" ;;
|
|
@@ -15,7 +15,13 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { describe, expect, it } from 'vitest';
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
classifyLookup,
|
|
20
|
+
classifyTask,
|
|
21
|
+
type ActivationInputs,
|
|
22
|
+
type LookupClass,
|
|
23
|
+
type TaskSignals,
|
|
24
|
+
} from './auto_dispatch.js';
|
|
19
25
|
|
|
20
26
|
const ON: ActivationInputs = { enabled: true, auto: 'on', subagent_spawn: true };
|
|
21
27
|
|
|
@@ -85,3 +91,60 @@ describe('parallelizable classifier — corpus recall', () => {
|
|
|
85
91
|
}
|
|
86
92
|
});
|
|
87
93
|
});
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Lookup-class corpus (L0 — road-to-lean-agent-init Phase 1). The first four
|
|
97
|
+
* entries are the live-observed 2026-07-28 task shapes that burned ~1.21M
|
|
98
|
+
* subagent tokens; each must route to a primitive, never a spawn. The
|
|
99
|
+
* negative controls are non-lookup tasks that must escalate unchanged.
|
|
100
|
+
*/
|
|
101
|
+
const LOOKUP_CORPUS: Array<{ id: string; text: string; expect: LookupClass | null }> = [
|
|
102
|
+
// ── the four observed shapes (live evidence, 2026-07-28 session) ──
|
|
103
|
+
{ id: 'lk-01', text: 'Confirming ExternalApiProviderEnum definition location', expect: 'definition' },
|
|
104
|
+
{ id: 'lk-02', text: 'Confirming GWInput import call sites', expect: 'references' },
|
|
105
|
+
{ id: 'lk-03', text: 'Running check_enforcement_coverage report', expect: 'report-run' },
|
|
106
|
+
{ id: 'lk-04', text: 'Probing candidate strings with tsx', expect: 'string-existence' },
|
|
107
|
+
// ── generalizations of the same shapes ──
|
|
108
|
+
{ id: 'lk-05', text: 'Where is classifyTask defined?', expect: 'definition' },
|
|
109
|
+
{ id: 'lk-06', text: 'Who calls readOrchestrationMetrics across the repo?', expect: 'references' },
|
|
110
|
+
{ id: 'lk-07', text: 'Does the string "lean-init-2026" exist anywhere in src/?', expect: 'string-existence' },
|
|
111
|
+
{ id: 'lk-08', text: 'Run the roadmap:progress-check report and summarize', expect: 'report-run' },
|
|
112
|
+
{ id: 'lk-09', text: 'Find all usages of InferredTier in tests', expect: 'references' },
|
|
113
|
+
{ id: 'lk-10', text: 'Locate the enum that lists the dispatch actions', expect: 'definition' },
|
|
114
|
+
// ── negative controls — must escalate, never route to a primitive ──
|
|
115
|
+
{ id: 'lk-n1', text: 'Refactor the auth middleware to use the new session store', expect: null },
|
|
116
|
+
{ id: 'lk-n2', text: 'Fix the failing corpus test and explain the root cause', expect: null },
|
|
117
|
+
{ id: 'lk-n3', text: 'Design a migration plan for the audit schema', expect: null },
|
|
118
|
+
{ id: 'lk-n4', text: 'Review this diff for security issues', expect: null },
|
|
119
|
+
];
|
|
120
|
+
|
|
121
|
+
describe('lookup-class routing — corpus recall + FP=0 (lean-init L0)', () => {
|
|
122
|
+
for (const c of LOOKUP_CORPUS) {
|
|
123
|
+
it(`${c.id}: ${c.text}`, () => {
|
|
124
|
+
const r = classifyLookup(c.text);
|
|
125
|
+
expect(r.lookup_class).toBe(c.expect);
|
|
126
|
+
expect(r.route).toBe(c.expect === null ? 'escalate' : 'primitive');
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
it('recall on the four live-observed shapes is 4/4', () => {
|
|
131
|
+
const observed = LOOKUP_CORPUS.filter((c) => c.id.startsWith('lk-0') && Number(c.id.slice(3)) <= 4);
|
|
132
|
+
expect(observed).toHaveLength(4);
|
|
133
|
+
for (const c of observed) {
|
|
134
|
+
expect(classifyLookup(c.text).route).toBe('primitive');
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it('false-positive rate is 0 — no negative control routes to a primitive', () => {
|
|
139
|
+
for (const c of LOOKUP_CORPUS.filter((x) => x.expect === null)) {
|
|
140
|
+
expect(classifyLookup(c.text).route).toBe('escalate');
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it('unknown resolves to escalate with a non-degradation reason', () => {
|
|
145
|
+
const r = classifyLookup('Do something clever with the codebase');
|
|
146
|
+
expect(r.route).toBe('escalate');
|
|
147
|
+
expect(r.primitive).toBeNull();
|
|
148
|
+
expect(r.reason).toContain('never down-guessed');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
@@ -94,6 +94,82 @@ export function classifyTask(signals: TaskSignals, activation: ActivationInputs)
|
|
|
94
94
|
return { delegable: true, action, mode, reason };
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
// ── Lookup-class routing (L0 — road-to-lean-agent-init) ──
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Lookup-class task shapes that route to a deterministic primitive INSTEAD of
|
|
101
|
+
* a subagent spawn. Contract:
|
|
102
|
+
* `auto-dispatch-classification.md § Lookup-class rung`.
|
|
103
|
+
*
|
|
104
|
+
* Live evidence (2026-07-28): four `general-purpose` subagents burned ~1.21M
|
|
105
|
+
* tokens on tasks of exactly these shapes; the primitives answer each for <1k.
|
|
106
|
+
*/
|
|
107
|
+
export type LookupClass =
|
|
108
|
+
| 'definition' // "where is X defined" → code_graph query
|
|
109
|
+
| 'references' // "who calls / imports X" → code_graph query
|
|
110
|
+
| 'string-existence' // "does string Y exist" → FTS one-shot / capped grep
|
|
111
|
+
| 'report-run'; // "run report Z" → script-run with rtk wrap
|
|
112
|
+
|
|
113
|
+
export type LookupPrimitive = 'code-graph-query' | 'fts-or-capped-grep' | 'script-run-rtk';
|
|
114
|
+
|
|
115
|
+
export interface LookupRoute {
|
|
116
|
+
/** Matched lookup class, or null when the task is not lookup-shaped. */
|
|
117
|
+
lookup_class: LookupClass | null;
|
|
118
|
+
/** `primitive` = skip the spawn; `escalate` = normal classification path. */
|
|
119
|
+
route: 'primitive' | 'escalate';
|
|
120
|
+
primitive: LookupPrimitive | null;
|
|
121
|
+
reason: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const LOOKUP_PATTERNS: Array<{ cls: LookupClass; primitive: LookupPrimitive; re: RegExp }> = [
|
|
125
|
+
{
|
|
126
|
+
cls: 'definition',
|
|
127
|
+
primitive: 'code-graph-query',
|
|
128
|
+
re: /\b(where\s+is\s+\S+\s+defined|definition\s+(location|of|site)|find\s+the\s+definition|locate\s+the\s+(class|enum|function|type|interface|symbol)|confirm\w*\s+\S+\s+definition)\b/i,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
cls: 'references',
|
|
132
|
+
primitive: 'code-graph-query',
|
|
133
|
+
re: /\b(who\s+(calls|imports|uses|references)|call\s*sites?|import\s+(call\s*)?sites?|reverse\s+references|where\s+is\s+\S+\s+(used|imported|referenced|called)|all\s+(callers|usages|references)\s+of)\b/i,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
cls: 'string-existence',
|
|
137
|
+
primitive: 'fts-or-capped-grep',
|
|
138
|
+
re: /\b(does\s+(the\s+)?string\s+.*\bexist|is\s+(the\s+)?string\s+.*\b(present|used)\b|prob\w+\s+(candidate\s+)?strings?|search\s+for\s+the\s+(exact\s+)?string|(grep|check)\s+(for\s+)?(the\s+)?(literal|string)\b|does\s+\S+\s+appear\s+anywhere)/i,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
cls: 'report-run',
|
|
142
|
+
primitive: 'script-run-rtk',
|
|
143
|
+
re: /\b(run(ning)?\s+(the\s+)?\S*(report|check|lint\w*|coverage)\b|run(ning)?\s+(check|lint|report)_\w+|regenerate\s+the\s+\S+\s+report)/i,
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Route a task description to a lookup-class primitive or the regular
|
|
149
|
+
* escalation path. Deterministic regex layer, no LLM call (design lock:
|
|
150
|
+
* no LLM classifier fallback — cut C3). Non-matches escalate — never a
|
|
151
|
+
* silently degraded answer; an index-miss at execution time escalates the
|
|
152
|
+
* same way (runtime concern, documented in the classification context).
|
|
153
|
+
*/
|
|
154
|
+
export function classifyLookup(taskText: string): LookupRoute {
|
|
155
|
+
for (const p of LOOKUP_PATTERNS) {
|
|
156
|
+
if (p.re.test(taskText)) {
|
|
157
|
+
return {
|
|
158
|
+
lookup_class: p.cls,
|
|
159
|
+
route: 'primitive',
|
|
160
|
+
primitive: p.primitive,
|
|
161
|
+
reason: `lookup-class ${p.cls} — deterministic primitive, no spawn`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
lookup_class: null,
|
|
167
|
+
route: 'escalate',
|
|
168
|
+
primitive: null,
|
|
169
|
+
reason: 'not lookup-shaped — regular classification path (never down-guessed)',
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
97
173
|
// ── Per-slice tier inference (v1.5 — road-to-cost-aware-model-routing) ──
|
|
98
174
|
|
|
99
175
|
/**
|