@event4u/agent-config 9.8.0 → 9.10.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 +234 -295
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +55 -9
- package/dist/agent-src/commands/agent-status.md +12 -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/accept.md +115 -30
- package/dist/agent-src/commands/agents/user/delete.md +147 -0
- package/dist/agent-src/commands/agents/user/review.md +65 -28
- package/dist/agent-src/commands/agents/user/show.md +82 -29
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +17 -4
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -13
- package/dist/agent-src/commands/condense.md +28 -97
- package/dist/agent-src/commands/cost/report.md +7 -0
- package/dist/agent-src/commands/fix/portability.md +2 -10
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -10
- 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/humanize.md +2 -2
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/memory/load.md +11 -0
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +3 -3
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -4
- package/dist/agent-src/commands/profile/show.md +3 -3
- 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/rule-compliance-audit.md +5 -4
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tdd.md +21 -0
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
- package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
- package/dist/agent-src/commands/team.md +4 -1
- package/dist/agent-src/commands/upstream-contribute.md +0 -1
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
- package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
- package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +99 -23
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
- package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +34 -0
- package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
- 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-routing.md +11 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
- package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
- package/dist/agent-src/contexts/model-recommendations.md +3 -2
- package/dist/agent-src/contexts/subagent-configuration.md +3 -3
- package/dist/agent-src/ghostwriter/README.md +2 -2
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/personas/README.md +5 -5
- package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
- package/dist/agent-src/personas/backend-architect.md +24 -23
- package/dist/agent-src/personas/eloquent-tamer.md +30 -30
- package/dist/agent-src/personas/frontend-engineer.md +30 -30
- package/dist/agent-src/personas/product-owner.md +41 -38
- package/dist/agent-src/personas/qa.md +13 -13
- package/dist/agent-src/personas/security-engineer.md +22 -22
- package/dist/agent-src/presets/README.md +3 -3
- package/dist/agent-src/profiles/README.md +3 -3
- package/dist/agent-src/rules/active-remediation.md +2 -2
- package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
- package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
- package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
- package/dist/agent-src/rules/broken-access-control.md +4 -4
- package/dist/agent-src/rules/code-comment-discipline.md +1 -1
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/commit-policy.md +4 -9
- package/dist/agent-src/rules/communication-through-line.md +5 -5
- package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/external-code-graph-interop.md +5 -5
- package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
- package/dist/agent-src/rules/finance-safety-floor.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/legal-safety-floor.md +1 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
- package/dist/agent-src/rules/media-governance-routing.md +13 -13
- package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
- package/dist/agent-src/rules/no-cheap-questions.md +7 -7
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
- package/dist/agent-src/rules/no-roadmap-references.md +1 -1
- package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
- package/dist/agent-src/rules/onboarding-gate.md +14 -4
- package/dist/agent-src/rules/persona-governance.md +2 -2
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
- package/dist/agent-src/rules/preservation-guard.md +10 -2
- package/dist/agent-src/rules/question-not-instruction.md +1 -1
- 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 +7 -0
- package/dist/agent-src/rules/rule-type-governance.md +1 -1
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/scope-control.md +1 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +24 -8
- package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/skill-quality.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +21 -19
- package/dist/agent-src/rules/source-of-truth.md +6 -5
- package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
- package/dist/agent-src/rules/think-before-action.md +5 -5
- package/dist/agent-src/rules/token-budget-discipline.md +5 -3
- package/dist/agent-src/rules/token-efficiency.md +2 -2
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/tool-safety.md +3 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/rules/user-interaction.md +12 -0
- package/dist/agent-src/rules/verify-before-complete.md +4 -24
- package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agent-security-review/SKILL.md +53 -46
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
- package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
- package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
- package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
- package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
- package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -15
- package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
- package/dist/agent-src/skills/code-review/SKILL.md +6 -6
- package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
- package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
- package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
- package/dist/agent-src/skills/context-document/SKILL.md +23 -21
- package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-review/SKILL.md +20 -20
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
- package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
- package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
- package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -5
- package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
- package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
- package/dist/agent-src/skills/grafana/SKILL.md +5 -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 +84 -67
- package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
- package/dist/agent-src/skills/image-editing/SKILL.md +1 -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/judge-artifact-completeness/SKILL.md +82 -37
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
- package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
- package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
- package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
- package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
- package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
- package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/dist/agent-src/skills/launch-readiness/SKILL.md +2 -2
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
- package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
- package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
- 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/llm-provider-knowledge/SKILL.md +0 -1
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
- package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
- package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
- package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
- package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +136 -127
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +5 -5
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
- package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +57 -21
- package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
- package/dist/agent-src/skills/recursive-verification/SKILL.md +7 -0
- package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +23 -5
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -73
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +4 -4
- 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/evals/triggers.json +52 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
- package/dist/agent-src/skills/security-audit/SKILL.md +27 -10
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +39 -17
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +17 -14
- package/dist/agent-src/skills/skill-writing/SKILL.md +11 -10
- package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
- package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +60 -86
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +33 -6
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +24 -23
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -4
- package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
- package/dist/agent-src/skills/terraform/SKILL.md +2 -2
- package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
- package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
- package/dist/agent-src/skills/video-director/SKILL.md +7 -7
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +5 -6
- 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/contexts/knowledge-pages.md +47 -45
- package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
- package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/dist/agent-src/templates/contexts.md +1 -1
- package/dist/agent-src/templates/features.md +1 -1
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/roadmaps.md +125 -116
- package/dist/agent-src/templates/rule.md +4 -3
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
- package/dist/agent-src/user-types/README.md +8 -8
- package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
- package/dist/agent-src/user-types/metalworking-shop.md +35 -34
- package/dist/agent-src/user-types/truck-driver.md +22 -20
- 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/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/main.js +35 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/python/workspace_roles.js +2 -2
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/cli/registry.js +7 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +429 -119
- 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 +91 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +32 -7
- package/dist/hooks/dispatch.js +19649 -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 +783 -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 +44634 -0
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/compile_time_toggles.js +48 -0
- package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
- package/dist/scripts/condense.js +248 -224
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +4 -2
- 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 +14 -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 +8 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/userMd/utils.js +30 -0
- package/dist/shared/userMd/utils.js.map +1 -1
- 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 +2 -2
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
- package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +21 -11
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
- package/src/config/agent-settings.template.yml +84 -16
- package/src/config/ci-local-parity.yml +142 -0
- 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/gate-coverage.yml +127 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/config/preamble-payload-budget.json +44 -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 +139 -2
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +81 -0
- package/src/scripts/_lib/agent_user_profile.ts +381 -0
- package/src/scripts/_lib/agents_overlay.ts +9 -0
- package/src/scripts/_lib/anchor_eval.ts +311 -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/cc_transcript.ts +316 -0
- package/src/scripts/_lib/compile_time_toggles.ts +79 -0
- package/src/scripts/_lib/confusables.ts +101 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
- package/src/scripts/_lib/install_drift.ts +194 -0
- package/src/scripts/_lib/managed_agents_folder.ts +181 -0
- package/src/scripts/_lib/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/payload_hash_drift.ts +126 -0
- 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/preservation_migration.ts +291 -0
- package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
- package/src/scripts/_lib/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/scan_scope.ts +115 -0
- package/src/scripts/_lib/secret_detector.test.ts +5 -0
- package/src/scripts/_lib/secret_detector.ts +9 -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/user_global_memory_audit.ts +187 -0
- package/src/scripts/_lib/user_global_observations.ts +830 -0
- package/src/scripts/_lib/user_global_revocations.ts +110 -0
- package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
- package/src/scripts/_lib/worker_budget.ts +107 -0
- package/src/scripts/ai_council/blind_review.ts +212 -0
- package/src/scripts/ai_council/budget_guard.ts +90 -11
- package/src/scripts/ai_council/bundler.ts +2 -2
- package/src/scripts/ai_council/clients.ts +59 -3
- package/src/scripts/ai_council/config.ts +50 -6
- package/src/scripts/ai_council/orchestrator.ts +127 -12
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +65 -6
- package/src/scripts/anchor_eval_falsify.ts +198 -0
- package/src/scripts/anchor_scoring_run.ts +239 -0
- package/src/scripts/annotate_discovery.ts +1 -65
- 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/bench_quality_run.ts +168 -4
- 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 +45 -0
- package/src/scripts/cache_realization_report.ts +782 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_artefact_count_messaging.ts +5 -1
- package/src/scripts/check_augment_description_cap.ts +15 -4
- package/src/scripts/check_backstop_debt.ts +23 -13
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_ci_local_parity.ts +317 -0
- package/src/scripts/check_condensation.ts +96 -191
- package/src/scripts/check_context_paths.ts +38 -9
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_gate_coverage.ts +299 -0
- package/src/scripts/check_iron_law_prominence.ts +22 -1
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_no_new_legacy_path.ts +16 -6
- package/src/scripts/check_no_roadmap_refs.ts +22 -9
- package/src/scripts/check_originality_freshness.ts +167 -0
- package/src/scripts/check_preamble_payload_budget.ts +130 -0
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_references.ts +0 -1
- package/src/scripts/check_safety_floor_untouched.ts +171 -24
- package/src/scripts/check_site_links.ts +62 -3
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +181 -9
- package/src/scripts/code_graph/detect.ts +52 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/query.ts +143 -29
- package/src/scripts/code_graph/sqlite_store.ts +174 -0
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +10 -14
- package/src/scripts/condense.sh +3 -4
- package/src/scripts/condense.ts +261 -234
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/cost/track.mjs +168 -33
- package/src/scripts/cost_summary.ts +33 -1
- package/src/scripts/council_cli.ts +171 -15
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/discovery_graph.ts +0 -0
- package/src/scripts/encoding_corpus.ts +500 -0
- package/src/scripts/encoding_corpus_report.ts +216 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +5 -3
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/generate_index.ts +19 -2
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +55 -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 +11 -4
- 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 +6 -6
- package/src/scripts/install.sh +5 -4
- package/src/scripts/install.ts +264 -23
- 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_confusables.ts +10 -72
- 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_featured_skills.ts +0 -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 +214 -0
- package/src/scripts/lint_load_context.ts +17 -5
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_new_skill_gate.ts +9 -3
- package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
- package/src/scripts/lint_originality.ts +1 -1
- package/src/scripts/lint_override_kernel_guard.ts +74 -26
- 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_skill_originality.ts +1 -1
- package/src/scripts/lint_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_ticket_buildable.ts +1 -1
- 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 +57 -6
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/measure_scope_dedup.ts +224 -0
- 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/mine_session.ts +98 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/preamble_byte_census.ts +574 -0
- 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/probe_skill_registration.ts +2 -2
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/redact_hook_capture.ts +13 -0
- package/src/scripts/release.ts +65 -10
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/rule.schema.json +10 -0
- package/src/scripts/second_brain_retrieval.ts +14 -4
- 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 +5 -0
- package/src/scripts/smoke_quickstart.ts +2 -2
- package/src/scripts/surface-tiers.yml +2 -0
- 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_pack_yaml.ts +0 -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 +16 -2
- package/src/shared/userMd/utils.ts +31 -0
- package/dist/agent-src/rules/telegraph-speak.md +0 -87
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
- package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
- package/docs/CLAIMS.md +0 -286
- 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 -785
- 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 -726
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -87
- 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/local-server-ports.md +0 -53
- 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 -74
- 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 -696
- 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 -191
- 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 -248
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
- 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 -209
- 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-124-embedded-engine-doctrine.md +0 -255
- package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
- package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
- package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
- package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
- 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 -157
- package/docs/decisions/engine-reclassification-2026-07.md +0 -104
- 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 -126
- 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 -51
- 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/gated-platform-reads.md +0 -221
- 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 -252
- 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 -30
- 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
- package/src/scripts/postinstall_gui.ts +0 -129
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
// Derived FTS5 index over curated memory + intake JSONL
|
|
2
|
+
// (road-to-reachable-code-memory Phase 6 item 2 / ADR-129).
|
|
3
|
+
//
|
|
4
|
+
// `memory_lookup.ts`'s `_score` is a literal substring/glob scorer over
|
|
5
|
+
// unsplit haystack text. A curated entry's `key` field normalises separators
|
|
6
|
+
// to spaces (`key: ai council cli repo local only`), so a hyphen/underscore
|
|
7
|
+
// query (`ai_council`, `roadmap-progress`) scores 0 against EVERY entry —
|
|
8
|
+
// not a ranking preference, a recall defect (ADR-129 context point 1). This
|
|
9
|
+
// module builds a real FTS5 index (unicode61 tokenizer splits on the same
|
|
10
|
+
// separators on both the indexed text and the query, so the mismatch
|
|
11
|
+
// disappears) as a DERIVED, gitignored, disposable accelerant — JSON/YAML
|
|
12
|
+
// stays canonical; deleting the derived SQLite file is always safe, it
|
|
13
|
+
// rebuilds on the next lookup.
|
|
14
|
+
//
|
|
15
|
+
// Node < 22.5 (no `node:sqlite`) or a build failure → every public function
|
|
16
|
+
// here degrades to `null`/no-hits rather than throwing; `memory_lookup.ts`'s
|
|
17
|
+
// substring `_score` is the documented, always-available fallback.
|
|
18
|
+
import * as fs from 'node:fs';
|
|
19
|
+
import * as path from 'node:path';
|
|
20
|
+
import type * as NodeSqlite from 'node:sqlite';
|
|
21
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
22
|
+
|
|
23
|
+
import {
|
|
24
|
+
loadSqliteSync,
|
|
25
|
+
probeFts5Sync,
|
|
26
|
+
readUserVersion,
|
|
27
|
+
stampUserVersion,
|
|
28
|
+
} from './sqlite_guard.js';
|
|
29
|
+
import {
|
|
30
|
+
_iter_curated_entries,
|
|
31
|
+
_setMemoryRoot as _reportSetMemoryRoot,
|
|
32
|
+
MEMORY_ROOT as _reportMemoryRoot,
|
|
33
|
+
} from '../memory_report.js';
|
|
34
|
+
|
|
35
|
+
/** Versioned in the path itself (cache-invalidation lint: `-v1-`). */
|
|
36
|
+
export const MEMORY_INDEX_REL = path.join('agents', 'runtime', 'state', 'memory-index-v1.sqlite3');
|
|
37
|
+
/** Stamped via `PRAGMA user_version` on every build (road-to-reachable-code-memory Phase 7). */
|
|
38
|
+
export const SCHEMA_VERSION = 1;
|
|
39
|
+
|
|
40
|
+
const CURATED_STATUS_EXCLUDE: ReadonlySet<string> = new Set(['deprecated', 'archived', 'superseded']);
|
|
41
|
+
const INDEX_TEXT_FIELDS: readonly string[] = ['path', 'key', 'symptom', 'feature', 'rule', 'body'];
|
|
42
|
+
|
|
43
|
+
export type IndexedSource = 'curated' | 'intake';
|
|
44
|
+
|
|
45
|
+
export interface IndexedEntry {
|
|
46
|
+
id: string;
|
|
47
|
+
mtype: string;
|
|
48
|
+
source: IndexedSource;
|
|
49
|
+
path: string;
|
|
50
|
+
text: string;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** One FTS5-recalled candidate. `relevance` is already a positive, `>0` value. */
|
|
54
|
+
export interface FtsHit {
|
|
55
|
+
id: string;
|
|
56
|
+
mtype: string;
|
|
57
|
+
source: IndexedSource;
|
|
58
|
+
path: string;
|
|
59
|
+
relevance: number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Absolute index path for a consumer root (defaults to `process.cwd()`). */
|
|
63
|
+
export function resolveIndexPath(consumerRoot?: string | null): string {
|
|
64
|
+
return path.join(consumerRoot ?? process.cwd(), MEMORY_INDEX_REL);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function _pyStr(v: unknown): string {
|
|
68
|
+
if (v === undefined || v === null) return '';
|
|
69
|
+
if (typeof v === 'string') return v;
|
|
70
|
+
return String(v);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Mirrors `memory_lookup.ts`'s `_entryIndexText` — the fields `_score` reads. */
|
|
74
|
+
function _entryIndexText(entry: Record<string, unknown>): string {
|
|
75
|
+
const parts: string[] = [];
|
|
76
|
+
for (const f of INDEX_TEXT_FIELDS) {
|
|
77
|
+
const v = entry[f];
|
|
78
|
+
if (typeof v === 'string') parts.push(v);
|
|
79
|
+
else if (Array.isArray(v)) for (const x of v) parts.push(_pyStr(x));
|
|
80
|
+
}
|
|
81
|
+
return parts.join(' | ');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function _isPlainObject(v: unknown): v is Record<string, unknown> {
|
|
85
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Curated entries across both layouts, via `memory_report.ts`'s exported
|
|
90
|
+
* iterator. `memory_report` keeps its own module-level `MEMORY_ROOT`
|
|
91
|
+
* (separate from `memory_lookup.ts`'s), so this repoints it for the scan and
|
|
92
|
+
* restores it immediately after — the two calls are synchronous and never
|
|
93
|
+
* interleaved with another caller's use of that module state.
|
|
94
|
+
*/
|
|
95
|
+
function _collectCurated(memoryRoot: string): IndexedEntry[] {
|
|
96
|
+
const out: IndexedEntry[] = [];
|
|
97
|
+
// `_reportMemoryRoot` is a live ESM binding — reading it here captures
|
|
98
|
+
// whatever `memory_report.ts` was actually set to (its own default, or a
|
|
99
|
+
// prior caller's override), so restoring it below is exact, not a guess.
|
|
100
|
+
const previous = _reportMemoryRoot;
|
|
101
|
+
_reportSetMemoryRoot(memoryRoot);
|
|
102
|
+
try {
|
|
103
|
+
for (const [file, mtype, entry] of _iter_curated_entries()) {
|
|
104
|
+
const status = entry['status'];
|
|
105
|
+
if (typeof status === 'string' && CURATED_STATUS_EXCLUDE.has(status)) continue;
|
|
106
|
+
const id = typeof entry['id'] === 'string' ? entry['id'] : '';
|
|
107
|
+
if (id === '') continue;
|
|
108
|
+
out.push({ id, mtype, source: 'curated', path: file, text: _entryIndexText(entry) });
|
|
109
|
+
}
|
|
110
|
+
} finally {
|
|
111
|
+
_reportSetMemoryRoot(previous);
|
|
112
|
+
}
|
|
113
|
+
return out;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Sorted `*.jsonl` file names directly under `intakeRoot` (absent dir → []). */
|
|
117
|
+
function _globJsonl(intakeRoot: string): string[] {
|
|
118
|
+
let names: string[];
|
|
119
|
+
try {
|
|
120
|
+
names = fs.readdirSync(intakeRoot);
|
|
121
|
+
} catch {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
return names.filter((n) => n.endsWith('.jsonl')).sort().map((n) => path.join(intakeRoot, n));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Intake entries, supersede-chains resolved (later `{"type":"supersede",
|
|
129
|
+
* "supersedes":<id>}` lines drop the target). A self-contained twin of
|
|
130
|
+
* `memory_lookup.ts`'s private `_iter_intake_entries` (kept intentionally
|
|
131
|
+
* separate — that generator is per-mtype and not exported; duplicating the
|
|
132
|
+
* ~20-line supersede resolution here is cheaper than coupling two modules'
|
|
133
|
+
* private generators together for a build-time-only scan).
|
|
134
|
+
*/
|
|
135
|
+
function _collectIntake(intakeRoot: string): IndexedEntry[] {
|
|
136
|
+
const out: IndexedEntry[] = [];
|
|
137
|
+
for (const jsonl of _globJsonl(intakeRoot)) {
|
|
138
|
+
const by_id = new Map<string, Record<string, unknown>>();
|
|
139
|
+
const superseded = new Set<string>();
|
|
140
|
+
let content: string;
|
|
141
|
+
try {
|
|
142
|
+
content = fs.readFileSync(jsonl, 'utf-8');
|
|
143
|
+
} catch {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
for (let line of content.split(/\n/)) {
|
|
147
|
+
line = line.trim();
|
|
148
|
+
if (!line) continue;
|
|
149
|
+
let obj: unknown;
|
|
150
|
+
try {
|
|
151
|
+
obj = JSON.parse(line);
|
|
152
|
+
} catch {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (!_isPlainObject(obj)) continue;
|
|
156
|
+
if (obj['type'] === 'supersede') {
|
|
157
|
+
const target = obj['supersedes'];
|
|
158
|
+
if (typeof target === 'string') superseded.add(target);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
const eid = obj['id'];
|
|
162
|
+
if (typeof eid === 'string') by_id.set(eid, obj);
|
|
163
|
+
}
|
|
164
|
+
for (const [eid, obj] of by_id.entries()) {
|
|
165
|
+
if (superseded.has(eid)) continue;
|
|
166
|
+
const mtype = typeof obj['entry_type'] === 'string' ? obj['entry_type'] : '';
|
|
167
|
+
out.push({ id: eid, mtype, source: 'intake', path: jsonl, text: _entryIndexText(obj) });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return out;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/** All indexable entries (curated + intake) for one memory tree. */
|
|
174
|
+
export function collectEntries(memoryRoot: string, intakeRoot: string): IndexedEntry[] {
|
|
175
|
+
return [..._collectCurated(memoryRoot), ..._collectIntake(intakeRoot)];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** Newest mtime (ms) across every source file the index is built from. */
|
|
179
|
+
function _sourcesMaxMtimeMs(memoryRoot: string, intakeRoot: string): number {
|
|
180
|
+
let max = 0;
|
|
181
|
+
const bump = (p: string): void => {
|
|
182
|
+
try {
|
|
183
|
+
const st = fs.statSync(p);
|
|
184
|
+
if (st.mtimeMs > max) max = st.mtimeMs;
|
|
185
|
+
} catch {
|
|
186
|
+
/* absent — ignore */
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
const walk = (dir: string): void => {
|
|
190
|
+
let entries: fs.Dirent[];
|
|
191
|
+
try {
|
|
192
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
193
|
+
} catch {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
for (const e of entries) {
|
|
197
|
+
const full = path.join(dir, e.name);
|
|
198
|
+
if (e.isDirectory()) walk(full);
|
|
199
|
+
else if (e.isFile() && e.name.endsWith('.yml')) bump(full);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
// Curated: both the flat `<type>.yml` files and the `<type>/*.yml` dirs.
|
|
203
|
+
let memEntries: fs.Dirent[];
|
|
204
|
+
try {
|
|
205
|
+
memEntries = fs.readdirSync(memoryRoot, { withFileTypes: true });
|
|
206
|
+
for (const e of memEntries) {
|
|
207
|
+
const full = path.join(memoryRoot, e.name);
|
|
208
|
+
if (e.isFile() && e.name.endsWith('.yml')) bump(full);
|
|
209
|
+
else if (e.isDirectory()) walk(full);
|
|
210
|
+
}
|
|
211
|
+
} catch {
|
|
212
|
+
/* memory root absent — total stays 0 */
|
|
213
|
+
}
|
|
214
|
+
for (const f of _globJsonl(intakeRoot)) bump(f);
|
|
215
|
+
return max;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const META_KEY_SOURCES_MTIME = 'sources_mtime_ms';
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Whether the index at `indexPath` is missing, schema-mismatched, corrupt, or
|
|
222
|
+
* stale relative to its sources. Any read failure (including a truncated /
|
|
223
|
+
* corrupt file — road-to-reachable-code-memory Phase 7) counts as stale;
|
|
224
|
+
* corruption is a non-event, not an error the caller has to handle.
|
|
225
|
+
*/
|
|
226
|
+
export function isStale(indexPath: string, memoryRoot: string, intakeRoot: string): boolean {
|
|
227
|
+
if (!fs.existsSync(indexPath)) return true;
|
|
228
|
+
let sqlite: typeof NodeSqlite;
|
|
229
|
+
try {
|
|
230
|
+
sqlite = loadSqliteSync('memory_fts_index.isStale');
|
|
231
|
+
} catch {
|
|
232
|
+
return true; // no sqlite → caller will skip building anyway
|
|
233
|
+
}
|
|
234
|
+
let conn: DatabaseSync | null = null;
|
|
235
|
+
try {
|
|
236
|
+
conn = new sqlite.DatabaseSync(indexPath, { readOnly: true });
|
|
237
|
+
if (readUserVersion(conn) !== SCHEMA_VERSION) return true;
|
|
238
|
+
const row = conn.prepare('SELECT value FROM _meta WHERE key = ?').get(META_KEY_SOURCES_MTIME);
|
|
239
|
+
const stored = row?.['value'];
|
|
240
|
+
const storedMs = typeof stored === 'string' ? Number(stored) : NaN;
|
|
241
|
+
if (!Number.isFinite(storedMs)) return true;
|
|
242
|
+
return _sourcesMaxMtimeMs(memoryRoot, intakeRoot) > storedMs;
|
|
243
|
+
} catch {
|
|
244
|
+
return true; // corrupt / unreadable → rebuild
|
|
245
|
+
} finally {
|
|
246
|
+
try {
|
|
247
|
+
conn?.close();
|
|
248
|
+
} catch {
|
|
249
|
+
/* best-effort */
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export interface BuildReport {
|
|
255
|
+
indexPath: string;
|
|
256
|
+
entriesIndexed: number;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Rebuild the index from scratch (JSON/YAML is canonical — a full rebuild is
|
|
261
|
+
* always correct and cheap enough for the corpus sizes this suite runs at;
|
|
262
|
+
* "rebuilt batch/lazy" per the roadmap, never incremental). Deletes any
|
|
263
|
+
* existing file first so a corrupt/partial index never lingers.
|
|
264
|
+
*/
|
|
265
|
+
export function buildIndex(indexPath: string, memoryRoot: string, intakeRoot: string): BuildReport {
|
|
266
|
+
fs.mkdirSync(path.dirname(indexPath), { recursive: true });
|
|
267
|
+
try {
|
|
268
|
+
fs.rmSync(indexPath, { force: true });
|
|
269
|
+
fs.rmSync(`${indexPath}-wal`, { force: true });
|
|
270
|
+
fs.rmSync(`${indexPath}-shm`, { force: true });
|
|
271
|
+
} catch {
|
|
272
|
+
/* best-effort */
|
|
273
|
+
}
|
|
274
|
+
const { DatabaseSync } = loadSqliteSync('memory_fts_index.buildIndex');
|
|
275
|
+
const conn = new DatabaseSync(indexPath);
|
|
276
|
+
let count = 0;
|
|
277
|
+
try {
|
|
278
|
+
conn.exec('PRAGMA journal_mode=WAL');
|
|
279
|
+
conn.exec(
|
|
280
|
+
"CREATE VIRTUAL TABLE entries USING fts5(id UNINDEXED, mtype UNINDEXED, source UNINDEXED, path UNINDEXED, text)",
|
|
281
|
+
);
|
|
282
|
+
conn.exec('CREATE TABLE _meta (key TEXT PRIMARY KEY, value TEXT NOT NULL)');
|
|
283
|
+
const stmt = conn.prepare(
|
|
284
|
+
'INSERT INTO entries (id, mtype, source, path, text) VALUES (?, ?, ?, ?, ?)',
|
|
285
|
+
);
|
|
286
|
+
for (const e of collectEntries(memoryRoot, intakeRoot)) {
|
|
287
|
+
stmt.run(e.id, e.mtype, e.source, e.path, e.text);
|
|
288
|
+
count += 1;
|
|
289
|
+
}
|
|
290
|
+
const metaStmt = conn.prepare('INSERT INTO _meta (key, value) VALUES (?, ?)');
|
|
291
|
+
metaStmt.run(META_KEY_SOURCES_MTIME, String(_sourcesMaxMtimeMs(memoryRoot, intakeRoot)));
|
|
292
|
+
stampUserVersion(conn, SCHEMA_VERSION);
|
|
293
|
+
conn.exec('PRAGMA wal_checkpoint(TRUNCATE)');
|
|
294
|
+
conn.exec('PRAGMA journal_mode=DELETE');
|
|
295
|
+
} finally {
|
|
296
|
+
conn.close();
|
|
297
|
+
}
|
|
298
|
+
return { indexPath, entriesIndexed: count };
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Ensure a fresh index exists at `indexPath`, building/rebuilding it when
|
|
303
|
+
* absent or stale. Returns `false` (never throws) when `node:sqlite` or FTS5
|
|
304
|
+
* is unavailable, or the build itself fails — callers fall back to `_score`.
|
|
305
|
+
*/
|
|
306
|
+
export function ensureIndex(indexPath: string, memoryRoot: string, intakeRoot: string): boolean {
|
|
307
|
+
if (!probeFts5Sync()) return false;
|
|
308
|
+
try {
|
|
309
|
+
if (isStale(indexPath, memoryRoot, intakeRoot)) {
|
|
310
|
+
buildIndex(indexPath, memoryRoot, intakeRoot);
|
|
311
|
+
}
|
|
312
|
+
return true;
|
|
313
|
+
} catch {
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Turn a raw query key into an FTS5 MATCH clause of separate, implicitly
|
|
320
|
+
* AND'd barewords.
|
|
321
|
+
*
|
|
322
|
+
* FTS5's QUERY GRAMMAR (not the content tokenizer) treats an unbroken
|
|
323
|
+
* hyphen/underscore run as ONE bareword — `adr-number-collision` tokenizes
|
|
324
|
+
* to 6 tokens, but a single ungapped bareword is matched as an EXACT
|
|
325
|
+
* ADJACENT PHRASE of those tokens, not a free AND. That reintroduces a
|
|
326
|
+
* separator-shaped recall gap one layer up (a hyphenated query key with the
|
|
327
|
+
* matching words in non-adjacent or reordered position in the entry text
|
|
328
|
+
* would miss). Replacing every separator with a literal SPACE here forces
|
|
329
|
+
* the grammar to see distinct barewords — implicit AND, any position — which
|
|
330
|
+
* is the recall behaviour this index exists to provide.
|
|
331
|
+
*/
|
|
332
|
+
function _sanitizeFtsClause(key: string): string {
|
|
333
|
+
// Keep letters/digits; every other character (hyphen, underscore, quote,
|
|
334
|
+
// paren, colon, asterisk, ...) becomes a bareword boundary.
|
|
335
|
+
return key.replace(/[^\p{L}\p{N}]+/gu, ' ').trim();
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Query the FTS5 index for `keys` (OR'd — any key matching is a hit),
|
|
340
|
+
* optionally restricted to `types`. Never throws — a MATCH syntax error or a
|
|
341
|
+
* read failure resolves to `[]`, the caller's cue to stay on `_score`.
|
|
342
|
+
*/
|
|
343
|
+
export function queryIndex(
|
|
344
|
+
indexPath: string,
|
|
345
|
+
keys: readonly string[],
|
|
346
|
+
types: readonly string[],
|
|
347
|
+
): FtsHit[] {
|
|
348
|
+
const clauses = keys.map(_sanitizeFtsClause).filter((c) => c.length > 0);
|
|
349
|
+
if (clauses.length === 0) return [];
|
|
350
|
+
let sqlite: typeof NodeSqlite;
|
|
351
|
+
try {
|
|
352
|
+
sqlite = loadSqliteSync('memory_fts_index.queryIndex');
|
|
353
|
+
} catch {
|
|
354
|
+
return [];
|
|
355
|
+
}
|
|
356
|
+
let conn: DatabaseSync | null = null;
|
|
357
|
+
try {
|
|
358
|
+
conn = new sqlite.DatabaseSync(indexPath, { readOnly: true });
|
|
359
|
+
const matchQuery = clauses.map((c) => `(${c})`).join(' OR ');
|
|
360
|
+
const typeFilter = types.length > 0 ? `AND mtype IN (${types.map(() => '?').join(',')})` : '';
|
|
361
|
+
const rows = conn
|
|
362
|
+
.prepare(
|
|
363
|
+
`SELECT id, mtype, source, path, bm25(entries) AS score
|
|
364
|
+
FROM entries
|
|
365
|
+
WHERE entries MATCH ? ${typeFilter}
|
|
366
|
+
ORDER BY score ASC`,
|
|
367
|
+
)
|
|
368
|
+
.all(matchQuery, ...types);
|
|
369
|
+
return rows.map((r) => {
|
|
370
|
+
// bm25(): more negative is a better match. Flip to a positive
|
|
371
|
+
// "relevance" so the caller's ranking math reads naturally.
|
|
372
|
+
const bm25 = typeof r['score'] === 'number' ? r['score'] : Number(r['score'] ?? 0);
|
|
373
|
+
return {
|
|
374
|
+
id: String(r['id']),
|
|
375
|
+
mtype: String(r['mtype']),
|
|
376
|
+
source: (r['source'] as IndexedSource) ?? 'curated',
|
|
377
|
+
path: String(r['path']),
|
|
378
|
+
relevance: Math.max(0, -bm25),
|
|
379
|
+
};
|
|
380
|
+
});
|
|
381
|
+
} catch {
|
|
382
|
+
return [];
|
|
383
|
+
} finally {
|
|
384
|
+
try {
|
|
385
|
+
conn?.close();
|
|
386
|
+
} catch {
|
|
387
|
+
/* best-effort */
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
@@ -16,7 +16,11 @@
|
|
|
16
16
|
* add one. (Mirrors `domain-safety-pii` § Surface 2 / artifact-engagement.)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import type { LookupClass } from './auto_dispatch.js';
|
|
20
|
+
|
|
19
21
|
export type DispatchOutcome = 'DONE' | 'DONE_WITH_CONCERNS' | 'NEEDS_CONTEXT' | 'BLOCKED' | 'killed';
|
|
22
|
+
/** Which route the lookup-class rung took (lean-init L0). */
|
|
23
|
+
export type RouteTaken = 'primitive' | 'subagent';
|
|
20
24
|
export type VerifyMode = 'deterministic' | 'judge' | 'none';
|
|
21
25
|
export type Provenance = 'measured' | 'estimated';
|
|
22
26
|
export type TierChosen = 'lite' | 'medium' | 'high';
|
|
@@ -66,6 +70,32 @@ export interface RecordInput {
|
|
|
66
70
|
* ran (ordered agent-type ids, e.g. ['implementer','implementer','judge']) —
|
|
67
71
|
* with `outcome`, lets the orchestrator prefer combos that worked. Ids only. */
|
|
68
72
|
agent_combo?: string[] | undefined;
|
|
73
|
+
// ── lean-init additive fields (road-to-lean-agent-init Phase 3) —
|
|
74
|
+
// schema_version stays 1 per audit-log-v1 forward-compat rule.
|
|
75
|
+
// ALL remain counts / enums / hashes / ids — never free-form content. ──
|
|
76
|
+
/** Spawn-payload tokens at worker init (the payload-truth measurement). */
|
|
77
|
+
init_tokens?: number | null | undefined;
|
|
78
|
+
/** Hash of the spawn payload (prefix-stability / cache measurement). Hex only, never content. */
|
|
79
|
+
payload_hash?: string | null | undefined;
|
|
80
|
+
/** Lookup class the L0 rung matched, or null for non-lookup dispatches. */
|
|
81
|
+
lookup_class?: LookupClass | null | undefined;
|
|
82
|
+
/** Route the lookup rung took: deterministic primitive vs subagent escalation. */
|
|
83
|
+
route_taken?: RouteTaken | null | undefined;
|
|
84
|
+
/** Worker hit its max_tokens_per_worker stop-loss (L0b). */
|
|
85
|
+
budget_hit?: boolean | undefined;
|
|
86
|
+
/** Golden/correctness comparison verdict for a primitive route (null = not compared). */
|
|
87
|
+
correctness_match?: boolean | undefined;
|
|
88
|
+
/** Provider-reported prompt-cache hit on the spawn payload (Phase 4 prefix stability). */
|
|
89
|
+
cache_hit?: boolean | undefined;
|
|
90
|
+
/** Sample-segregation tag (council Q5), e.g. 'lean-init-2026'. Id-shaped, never free-form. */
|
|
91
|
+
origin?: string | null | undefined;
|
|
92
|
+
/** Rules in the worker's scoped projection (the carried set). The L6 demand
|
|
93
|
+
* signal: `rules_used`/`rules_carried` is the per-worker usage quota the
|
|
94
|
+
* parked deferred-rule-retriever's resume condition asks for. Counts only. */
|
|
95
|
+
rules_carried?: number | null | undefined;
|
|
96
|
+
/** Rules the worker actually applied/cited (count of the envelope's
|
|
97
|
+
* `rules_applied`-equivalent on the worker side). Counts only. */
|
|
98
|
+
rules_used?: number | null | undefined;
|
|
69
99
|
// Audit-log envelope (sensible defaults for a dispatch record)
|
|
70
100
|
phase?: LinePhase | undefined;
|
|
71
101
|
outcome?: LineOutcome | undefined;
|
|
@@ -91,6 +121,12 @@ const TIERS_CHOSEN: readonly TierChosen[] = ['lite', 'medium', 'high'];
|
|
|
91
121
|
const TIER_SOURCES: readonly TierSource[] = ['static', 'inferred', 'inherit'];
|
|
92
122
|
const BANDS: readonly Band[] = ['low', 'medium', 'high'];
|
|
93
123
|
const PHASES: readonly LinePhase[] = ['refine', 'memory', 'analyze', 'plan', 'implement', 'test', 'verify', 'report'];
|
|
124
|
+
const LOOKUP_CLASSES: readonly LookupClass[] = ['definition', 'references', 'string-existence', 'report-run'];
|
|
125
|
+
const ROUTES_TAKEN: readonly RouteTaken[] = ['primitive', 'subagent'];
|
|
126
|
+
/** Hex-only payload hash — a hash can never smuggle content (privacy by construction). */
|
|
127
|
+
const PAYLOAD_HASH_RE = /^[a-f0-9]{8,64}$/i;
|
|
128
|
+
/** Id-shaped origin tag — enum-ish, never free-form prose. */
|
|
129
|
+
const ORIGIN_RE = /^[a-z0-9][a-z0-9-]{0,63}$/;
|
|
94
130
|
|
|
95
131
|
/** Map a dispatch outcome to the audit-log envelope outcome enum. */
|
|
96
132
|
function envelopeOutcome(d: DispatchOutcome): LineOutcome {
|
|
@@ -111,8 +147,13 @@ function isInt(n: unknown): n is number {
|
|
|
111
147
|
export function buildOrchestrationLine(input: RecordInput): BuiltLine {
|
|
112
148
|
const errors: string[] = [];
|
|
113
149
|
|
|
114
|
-
|
|
115
|
-
|
|
150
|
+
// A lookup-class primitive route is the ONE recordable zero-spawn event
|
|
151
|
+
// (lean-init L0): the routing decision itself is the datum the
|
|
152
|
+
// cost-reduction claim reads. Everything else with spawn_count 0 stays
|
|
153
|
+
// unrecordable in-session work.
|
|
154
|
+
const zeroSpawnPrimitive = input.route_taken === 'primitive' && input.spawn_count === 0;
|
|
155
|
+
if (!zeroSpawnPrimitive && (!isInt(input.spawn_count) || input.spawn_count < 1)) {
|
|
156
|
+
errors.push('spawn_count must be an integer ≥ 1 (0 = handled in-session, not a dispatch — do not record; exception: route_taken=primitive lookup routes record with spawn_count 0)');
|
|
116
157
|
}
|
|
117
158
|
if (!isInt(input.token_delta)) errors.push('token_delta must be an integer (negative = net saved vs the in-session baseline)');
|
|
118
159
|
if (input.task_size_estimate !== undefined && (!isInt(input.task_size_estimate) || input.task_size_estimate < 0)) {
|
|
@@ -155,6 +196,43 @@ export function buildOrchestrationLine(input: RecordInput): BuiltLine {
|
|
|
155
196
|
errors.push('escalated must be a boolean (true = retried on a higher tier after verification failure) or omitted');
|
|
156
197
|
}
|
|
157
198
|
|
|
199
|
+
// ── lean-init additive fields ──
|
|
200
|
+
if (input.init_tokens != null && (!isInt(input.init_tokens) || input.init_tokens < 0)) {
|
|
201
|
+
errors.push('init_tokens must be a non-negative integer (spawn-payload tokens at worker init)');
|
|
202
|
+
}
|
|
203
|
+
if (input.payload_hash != null && !PAYLOAD_HASH_RE.test(input.payload_hash)) {
|
|
204
|
+
errors.push('payload_hash must be an 8–64 char hex digest (never content)');
|
|
205
|
+
}
|
|
206
|
+
if (input.lookup_class != null && !LOOKUP_CLASSES.includes(input.lookup_class)) {
|
|
207
|
+
errors.push(`lookup_class must be one of ${LOOKUP_CLASSES.join(' | ')} (or omitted)`);
|
|
208
|
+
}
|
|
209
|
+
if (input.route_taken != null && !ROUTES_TAKEN.includes(input.route_taken)) {
|
|
210
|
+
errors.push(`route_taken must be one of ${ROUTES_TAKEN.join(' | ')} (or omitted)`);
|
|
211
|
+
}
|
|
212
|
+
for (const [key, v] of [
|
|
213
|
+
['budget_hit', input.budget_hit],
|
|
214
|
+
['correctness_match', input.correctness_match],
|
|
215
|
+
['cache_hit', input.cache_hit],
|
|
216
|
+
] as const) {
|
|
217
|
+
if (v !== undefined && typeof v !== 'boolean') errors.push(`${key} must be a boolean or omitted`);
|
|
218
|
+
}
|
|
219
|
+
if (input.origin != null && !ORIGIN_RE.test(input.origin)) {
|
|
220
|
+
errors.push("origin must be an id-shaped tag like 'lean-init-2026' (lowercase alnum + hyphens)");
|
|
221
|
+
}
|
|
222
|
+
for (const [key, v] of [
|
|
223
|
+
['rules_carried', input.rules_carried],
|
|
224
|
+
['rules_used', input.rules_used],
|
|
225
|
+
] as const) {
|
|
226
|
+
if (v != null && (!isInt(v) || v < 0)) errors.push(`${key} must be a non-negative integer count`);
|
|
227
|
+
}
|
|
228
|
+
if (
|
|
229
|
+
input.rules_carried != null &&
|
|
230
|
+
input.rules_used != null &&
|
|
231
|
+
input.rules_used > input.rules_carried
|
|
232
|
+
) {
|
|
233
|
+
errors.push('rules_used cannot exceed rules_carried (a worker cannot apply a rule it was not given)');
|
|
234
|
+
}
|
|
235
|
+
|
|
158
236
|
if (!input.ts) errors.push('ts (ISO-8601 UTC) is required');
|
|
159
237
|
if (!input.id) errors.push('id (ULID or content hash) is required');
|
|
160
238
|
|
|
@@ -178,6 +256,17 @@ export function buildOrchestrationLine(input: RecordInput): BuiltLine {
|
|
|
178
256
|
first_pass_success: input.first_pass_success ?? null,
|
|
179
257
|
escalated: input.escalated ?? null,
|
|
180
258
|
agent_combo: input.agent_combo ?? [],
|
|
259
|
+
// lean-init additive fields — readers ignore unknowns per audit-log-v1
|
|
260
|
+
init_tokens: input.init_tokens ?? null,
|
|
261
|
+
payload_hash: input.payload_hash ?? null,
|
|
262
|
+
lookup_class: input.lookup_class ?? null,
|
|
263
|
+
route_taken: input.route_taken ?? null,
|
|
264
|
+
budget_hit: input.budget_hit ?? null,
|
|
265
|
+
correctness_match: input.correctness_match ?? null,
|
|
266
|
+
cache_hit: input.cache_hit ?? null,
|
|
267
|
+
origin: input.origin ?? null,
|
|
268
|
+
rules_carried: input.rules_carried ?? null,
|
|
269
|
+
rules_used: input.rules_used ?? null,
|
|
181
270
|
};
|
|
182
271
|
|
|
183
272
|
const line: Record<string, unknown> = {
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload-hash × cache-hit drift aggregator (pure, no-I/O).
|
|
3
|
+
*
|
|
4
|
+
* `road-to-cache-economy.md` Phase 3, step 6: the
|
|
5
|
+
* `orchestration` object's `payload_hash` and `cache_hit` fields are both
|
|
6
|
+
* `null`-by-default and read by nothing (per the roadmap's own defect list).
|
|
7
|
+
* This module is the reader: it joins the two fields recorded on the SAME
|
|
8
|
+
* audit-log-v1 line — `payload_hash` names which spawn-payload shape a
|
|
9
|
+
* dispatch used, `cache_hit` is the provider-reported prompt-cache hit for
|
|
10
|
+
* that dispatch — so prefix-stability drift becomes visible.
|
|
11
|
+
*
|
|
12
|
+
* Cohort split (the roadmap's own verify criterion — "a cohort dispatched
|
|
13
|
+
* with a deliberately unstable payload shows a lower read share than a
|
|
14
|
+
* stable one"):
|
|
15
|
+
*
|
|
16
|
+
* - STABLE cohort: every occurrence of a `payload_hash` AFTER its first —
|
|
17
|
+
* a hash that repeats means the same payload shape was dispatched again,
|
|
18
|
+
* so a cache hit on the repeat is the signal a stable prefix predicts.
|
|
19
|
+
* - UNSTABLE cohort: every `payload_hash` that occurs exactly once in the
|
|
20
|
+
* window — a payload that never repeats can never show a repeat-hit, so
|
|
21
|
+
* its (necessarily first-call) `cache_hit` value is the unstable-payload
|
|
22
|
+
* baseline.
|
|
23
|
+
*
|
|
24
|
+
* A hash's FIRST occurrence is excluded from the stable cohort — nothing
|
|
25
|
+
* exists yet for a first call to hit, so counting it would understate the
|
|
26
|
+
* stable cohort's hit rate for a reason that has nothing to do with prefix
|
|
27
|
+
* stability.
|
|
28
|
+
*
|
|
29
|
+
* Zero recorded lines is a VALID state (both fields are lean-init
|
|
30
|
+
* extensions with no caller wiring a real value yet) — the aggregator
|
|
31
|
+
* returns a report with empty cohorts rather than failing, and the CLI
|
|
32
|
+
* wrapper states that plainly rather than presenting empty input as a green
|
|
33
|
+
* result.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
export interface PayloadHashLine {
|
|
37
|
+
payload_hash: string | null;
|
|
38
|
+
cache_hit: boolean | null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface HashGroupStat {
|
|
42
|
+
payload_hash: string;
|
|
43
|
+
occurrences: number;
|
|
44
|
+
hit_count: number;
|
|
45
|
+
hit_rate: number;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface CohortStat {
|
|
49
|
+
n: number;
|
|
50
|
+
hit_count: number;
|
|
51
|
+
hit_rate: number | null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface PayloadHashDriftReport {
|
|
55
|
+
total_lines: number;
|
|
56
|
+
/** Lines carrying both a non-null `payload_hash` and a boolean `cache_hit`. */
|
|
57
|
+
lines_with_data: number;
|
|
58
|
+
/** Per-hash breakdown, most-occurrences first. */
|
|
59
|
+
groups: HashGroupStat[];
|
|
60
|
+
stable_cohort: CohortStat;
|
|
61
|
+
unstable_cohort: CohortStat;
|
|
62
|
+
/** True only when BOTH cohorts have data AND the stable cohort's hit rate is strictly higher. */
|
|
63
|
+
drift_visible: boolean;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function emptyCohort(): CohortStat {
|
|
67
|
+
return { n: 0, hit_count: 0, hit_rate: null };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Aggregates already-parsed audit-log-v1 orchestration lines. `lines` order
|
|
72
|
+
* matters — it is read as chronological (the CLI wrapper reads
|
|
73
|
+
* `agents/runtime/state/audit/*.jsonl` in filename-sorted order, matching
|
|
74
|
+
* `readAuditLines`), since "first occurrence of a hash" is the only signal
|
|
75
|
+
* that decides which cohort an occurrence falls into.
|
|
76
|
+
*/
|
|
77
|
+
export function aggregatePayloadHashDrift(lines: readonly PayloadHashLine[]): PayloadHashDriftReport {
|
|
78
|
+
const withData = lines.filter((l) => l.payload_hash !== null && l.cache_hit !== null);
|
|
79
|
+
|
|
80
|
+
const byHash = new Map<string, boolean[]>();
|
|
81
|
+
for (const l of withData) {
|
|
82
|
+
const hash = l.payload_hash as string;
|
|
83
|
+
const arr = byHash.get(hash) ?? [];
|
|
84
|
+
arr.push(l.cache_hit as boolean);
|
|
85
|
+
byHash.set(hash, arr);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const groups: HashGroupStat[] = [];
|
|
89
|
+
const stable = emptyCohort();
|
|
90
|
+
const unstable = emptyCohort();
|
|
91
|
+
|
|
92
|
+
for (const [hash, hits] of byHash) {
|
|
93
|
+
const hitCount = hits.filter(Boolean).length;
|
|
94
|
+
groups.push({
|
|
95
|
+
payload_hash: hash,
|
|
96
|
+
occurrences: hits.length,
|
|
97
|
+
hit_count: hitCount,
|
|
98
|
+
hit_rate: hitCount / hits.length,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
if (hits.length === 1) {
|
|
102
|
+
unstable.n += 1;
|
|
103
|
+
if (hits[0] === true) unstable.hit_count += 1;
|
|
104
|
+
} else {
|
|
105
|
+
// Every occurrence AFTER the first (repeat dispatches of the same payload shape).
|
|
106
|
+
const repeats = hits.slice(1);
|
|
107
|
+
stable.n += repeats.length;
|
|
108
|
+
stable.hit_count += repeats.filter(Boolean).length;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
groups.sort((a, b) => b.occurrences - a.occurrences || a.payload_hash.localeCompare(b.payload_hash));
|
|
113
|
+
stable.hit_rate = stable.n > 0 ? stable.hit_count / stable.n : null;
|
|
114
|
+
unstable.hit_rate = unstable.n > 0 ? unstable.hit_count / unstable.n : null;
|
|
115
|
+
|
|
116
|
+
const driftVisible = stable.hit_rate !== null && unstable.hit_rate !== null && stable.hit_rate > unstable.hit_rate;
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
total_lines: lines.length,
|
|
120
|
+
lines_with_data: withData.length,
|
|
121
|
+
groups,
|
|
122
|
+
stable_cohort: stable,
|
|
123
|
+
unstable_cohort: unstable,
|
|
124
|
+
drift_visible: driftVisible,
|
|
125
|
+
};
|
|
126
|
+
}
|