@event4u/agent-config 9.8.0 → 9.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +278 -298
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +55 -9
- package/dist/agent-src/commands/agents/audit.md +1 -1
- package/dist/agent-src/commands/agents/optimize.md +2 -2
- package/dist/agent-src/commands/agents/user.md +1 -1
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -3
- package/dist/agent-src/commands/fix/portability.md +2 -2
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -2
- package/dist/agent-src/commands/fix/route.md +4 -3
- package/dist/agent-src/commands/fix.md +9 -6
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +2 -2
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/research.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +4 -4
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/no-roadmap-references.md +1 -1
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/reviewer-awareness.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +10 -0
- package/dist/agent-src/rules/session-canary.md +77 -0
- 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/skills/agent-security-review/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -14
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-review/SKILL.md +5 -6
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/history-design/SKILL.md +101 -0
- package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
- package/dist/agent-src/skills/image-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/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
- package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
- package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
- package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +3 -3
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/rule.md +2 -2
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/cli/commands/doctorShell.js +20 -0
- package/dist/cli/commands/doctorShell.js.map +1 -1
- package/dist/cli/commands/rtkDetect.js +58 -0
- package/dist/cli/commands/rtkDetect.js.map +1 -0
- package/dist/cli/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/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 +362 -78
- 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 +90 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +31 -7
- package/dist/hooks/dispatch.js +19475 -0
- package/dist/install/agentSwitchDetection.js +75 -0
- package/dist/install/agentSwitchDetection.js.map +1 -0
- package/dist/install/agentSwitchProfile.js +117 -0
- package/dist/install/agentSwitchProfile.js.map +1 -0
- package/dist/install/atomic.js +1 -1
- package/dist/install/detect.js +1 -1
- package/dist/install/install.mjs +775 -486
- package/dist/install/rtkDetection.js +213 -0
- package/dist/install/rtkDetection.js.map +1 -0
- package/dist/install/rule_scope.js +2 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/types.js +2 -2
- package/dist/install/wizard-plan.js +1 -1
- package/dist/install/wizardDismissals.js +58 -0
- package/dist/install/wizardDismissals.js.map +1 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +15 -4
- package/dist/mcp/server.json +20 -0
- package/dist/mcp/server.mjs +44292 -0
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +14 -7
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +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 +4 -2
- package/dist/server/schemas/settings.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/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/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/config/agent-settings.template.yml +52 -14
- package/src/config/discovery/packs.yml +22 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/evaluator-budgets.json +47 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/install/agentSwitchDetection.ts +90 -0
- package/src/install/agentSwitchProfile.ts +131 -0
- package/src/install/atomic.ts +1 -1
- package/src/install/detect.ts +1 -1
- package/src/install/rtkDetection.ts +274 -0
- package/src/install/rule_scope.ts +9 -2
- package/src/install/types.ts +2 -2
- package/src/install/wizard-plan.ts +1 -1
- package/src/install/wizardDismissals.ts +60 -0
- package/src/scripts/_cli/cmd_doctor.ts +62 -1
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +81 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
- package/src/scripts/_lib/auto_dispatch.ts +76 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/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/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
- package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
- package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
- package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
- package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
- package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
- package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
- package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
- package/src/scripts/_lib/persistence/types.ts +109 -0
- package/src/scripts/_lib/rtk_allowlist.ts +44 -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/worker_budget.ts +107 -0
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/config.ts +12 -6
- package/src/scripts/ai_council/orchestrator.ts +73 -3
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +48 -0
- package/src/scripts/audit_initial_context.ts +1 -1
- package/src/scripts/bench_cross_source_eval.ts +400 -0
- package/src/scripts/bench_honesty_score.ts +1093 -0
- package/src/scripts/bench_hook_latency.ts +218 -0
- package/src/scripts/build_mcp_catalog.ts +275 -0
- package/src/scripts/build_mcp_registry_manifest.ts +46 -0
- package/src/scripts/build_proof.ts +45 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_backstop_debt.ts +23 -13
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +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/condense.ts +14 -6
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/council_cli.ts +126 -12
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +5 -3
- package/src/scripts/first_run_gate_hook.ts +9 -5
- 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 +4 -4
- 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_consumer_internal_refs.ts +211 -0
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_documented_commands.ts +670 -0
- package/src/scripts/lint_framework_leakage.ts +17 -3
- package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
- package/src/scripts/lint_governed_writes.ts +335 -0
- package/src/scripts/lint_hidden_unicode.ts +6 -0
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_override_kernel_guard.ts +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_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_versioned_cache.ts +7 -1
- package/src/scripts/mcp_server/__main__.ts +7 -2
- package/src/scripts/mcp_server/catalog.ts +23 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
- package/src/scripts/mcp_server/prompts.ts +6 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
- package/src/scripts/mcp_server/tools.ts +56 -5
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/memory_learn_hook.ts +126 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/memory_replay_24.ts +312 -0
- package/src/scripts/memory_report.ts +16 -3
- package/src/scripts/memory_signal.ts +48 -0
- package/src/scripts/memory_status.ts +6 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/prepack-check.mjs +17 -0
- package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
- package/src/scripts/prepack_lifecycle_check.mjs +82 -0
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- 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/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/smoke_quickstart.ts +2 -2
- package/src/scripts/surface_probe_hook.ts +8 -7
- package/src/scripts/sync_gitattributes.ts +310 -0
- package/src/scripts/team_review_gate_hook.ts +13 -16
- package/src/scripts/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +8 -2
- 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
|
@@ -50,7 +50,7 @@ INTENT
|
|
|
50
50
|
│ → cite [cli-output-handling](../../rules/cli-output-handling.md)
|
|
51
51
|
│ (Iron Law: redirect / tail / grep / wrap)
|
|
52
52
|
│ → cite [rtk-output-filtering](../rtk-output-filtering/SKILL.md)
|
|
53
|
-
│ (rtk wrapper
|
|
53
|
+
│ (rtk wrapper — upstream reports 60-90% on tests/linters/git)
|
|
54
54
|
│
|
|
55
55
|
├── Large document or paste (PDF, DOCX, HTML, transcript)
|
|
56
56
|
│ → cite markitdown (upstream: https://github.com/microsoft/markitdown)
|
|
@@ -61,7 +61,7 @@ INTENT
|
|
|
61
61
|
│ (batch, parallelize, prune; one tool call > many)
|
|
62
62
|
│
|
|
63
63
|
├── Near context limit, work not finished
|
|
64
|
-
│ → cite [agent-handoff](
|
|
64
|
+
│ → cite [agent-handoff](../../domains/meta/agent-handoff/command.md)
|
|
65
65
|
│ (structured handoff envelope; resume in fresh chat)
|
|
66
66
|
│
|
|
67
67
|
├── Cost-aware decision (model pick, budget, stop-criterion)
|
|
@@ -82,10 +82,10 @@ INTENT
|
|
|
82
82
|
| `cli-output-handling` | `.agent-src.uncondensed/rules/cli-output-handling.md` | `verbose`, `tail`, `grep`, `CLI` | Wrap-tail-grep contract for any verbose command |
|
|
83
83
|
| `rtk-output-filtering` | `.agent-src.uncondensed/skills/rtk-output-filtering/SKILL.md` | `rtk`, `verbose`, `filter`, `wrap` | Project-local rtk filters; wrapper command |
|
|
84
84
|
| `token-efficiency` | `.agent-src.uncondensed/rules/token-efficiency.md` | `redirect`, `verbose`, `concise`, `tool` | Batch + parallelize tool calls; brevity floor |
|
|
85
|
-
| `agent-handoff` |
|
|
85
|
+
| `agent-handoff` | `src/domains/meta/agent-handoff/command.md` | `handoff`, `fresh`, `chat`, `context` | Context envelope for fresh-chat continuation |
|
|
86
86
|
| `direct-answers` | `.agent-src.uncondensed/rules/direct-answers.md` | `brevity`, `flattery`, `severity`, `tiered` | Iron-Law brevity floor (kernel) |
|
|
87
87
|
| `markitdown` | upstream: github.com/microsoft/markitdown | `PDF`, `DOCX`, `HTML`, `convert` | Document → markdown converter (authoritative-link only) |
|
|
88
|
-
| `/cost:report` | TBD — an internal roadmap (local-only) | `cost`, `model spend`, `budget` | Per-session cost telemetry (planned) |
|
|
88
|
+
| `/cost:report` | TBD — an internal roadmap (local-only) § P1.2` | `cost`, `model spend`, `budget` | Per-session cost telemetry (planned) |
|
|
89
89
|
| `api-cost-levers` | `docs/guidelines/agent-infra/api-cost-levers.md` | `cache`, `caching`, `batch`, `tiering`, `effort` | Anthropic billing levers: prompt caching, Batch API, model tiering, effort/output right-sizing |
|
|
90
90
|
|
|
91
91
|
## Output format
|
|
@@ -208,6 +208,6 @@ iter2 fixes A, breaks B, 92% → "PASS" ✗ regression ignored
|
|
|
208
208
|
* [`no-runtime-boundary`](../../../docs/contracts/no-runtime-boundary.md) — the
|
|
209
209
|
runtime-free constraint this loop honors.
|
|
210
210
|
* Optional impact pre-step (when a code-graph is present, ADR-124): run
|
|
211
|
-
`
|
|
211
|
+
`agent-config code-graph affected --since <ref>` to scope which symbols a change touches
|
|
212
212
|
before choosing verdict sources — cited, not duplicated; the loop itself is
|
|
213
213
|
unchanged when no graph exists.
|
|
@@ -103,11 +103,10 @@ A worktree is **merge-ready** only when ALL hold:
|
|
|
103
103
|
|
|
104
104
|
Removal gated by the deterministic helper (edge-case-tested: detached
|
|
105
105
|
HEAD, branch without remote, tag-only reachability, deleted remote
|
|
106
|
-
branch, untracked files, paths with spaces
|
|
107
|
-
`tests/scripts/worktree_cleanup_check.test.ts`):
|
|
106
|
+
branch, untracked files, paths with spaces):
|
|
108
107
|
|
|
109
108
|
```bash
|
|
110
|
-
|
|
109
|
+
npx tsx node_modules/@event4u/agent-config/src/scripts/worktree_cleanup_check.ts check <worktree-path>
|
|
111
110
|
```
|
|
112
111
|
|
|
113
112
|
Exit `0` → removal allowed; exit `1` → refuse, gates in order:
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
## Pointers
|
|
20
20
|
|
|
21
21
|
- **Filling out this AGENTS.md** — section templates, capability bullets, multi-agent entry flow, monorepo per-package layout: [`.augment/contexts/contracts/consumer-agents-md-guide.md`](.augment/contexts/contracts/consumer-agents-md-guide.md).
|
|
22
|
-
- **Behavior rules (always active)** —
|
|
22
|
+
- **Behavior rules (always active)** — [`.augment/rules/`](.augment/rules/). Kernel rules are **immutable** — never propose an edit; tighten-only via the override registry.
|
|
23
23
|
- **Skills (on-demand expertise)** — domain skills surfaced by description; invoked when their trigger fires: [`.augment/skills/`](.augment/skills/).
|
|
24
24
|
- **Commands (workflows)** — slash-commands the agent runs end-to-end (`/work`, `/implement-ticket`, `/commit`, `/create-pr`, …): [`.augment/commands/`](.augment/commands/).
|
|
25
25
|
- **Project-specific docs** — your own architecture notes, roadmaps, sessions, contexts: [`agents/`](agents/).
|
|
@@ -1,13 +1,32 @@
|
|
|
1
|
-
# Agent memory —
|
|
1
|
+
# Agent memory — merge-safety attributes for parallel-branch memory writes.
|
|
2
2
|
# Append this block to the consumer project's root .gitattributes.
|
|
3
|
-
# See: agents/roadmaps/road-to-
|
|
3
|
+
# See: agents/roadmaps/archive/road-to-reachable-code-memory.md (Phase 5)
|
|
4
4
|
|
|
5
|
-
# Intake layer — agent-written, append-only. Union merge concats both
|
|
6
|
-
# sides on conflict instead of failing. Reader
|
|
5
|
+
# Intake layer — agent-written, append-only JSONL. Union merge concats both
|
|
6
|
+
# sides on conflict instead of failing. Reader (_iter_intake_entries in
|
|
7
|
+
# memory_lookup.ts) resolves supersede chains keyed by id, so a duplicate
|
|
8
|
+
# line surviving a bad merge collapses harmlessly — same id, later line wins.
|
|
7
9
|
agents/memory/intake/*.jsonl merge=union eol=lf
|
|
8
10
|
|
|
9
|
-
# Curated memory —
|
|
10
|
-
#
|
|
11
|
+
# Curated memory — flat layout: one YAML file per type holding an `entries:`
|
|
12
|
+
# list (agents/memory/<type>.yml). Two branches each appending a genuinely
|
|
13
|
+
# NEW entry — the common case — union-merges cleanly (concats both sides).
|
|
14
|
+
# CAVEAT: union merge operates per LINE, not per YAML block. If both branches
|
|
15
|
+
# touch overlapping lines (not pure appends), the result can interleave
|
|
16
|
+
# partial multi-line list items into invalid YAML. The reader
|
|
17
|
+
# (_iter_curated_entries in memory_lookup.ts) does NOT dedup entries by id for
|
|
18
|
+
# this layout, so an exact duplicate block surviving a bad union merge would
|
|
19
|
+
# surface twice. Treat this as a best-effort safety net for the append-only
|
|
20
|
+
# case, not a guarantee — the directory layout below has no such caveat.
|
|
21
|
+
agents/memory/ownership.yml merge=union text eol=lf
|
|
22
|
+
agents/memory/historical-patterns.yml merge=union text eol=lf
|
|
23
|
+
agents/memory/domain-invariants.yml merge=union text eol=lf
|
|
24
|
+
agents/memory/incident-learnings.yml merge=union text eol=lf
|
|
25
|
+
agents/memory/product-rules.yml merge=union text eol=lf
|
|
26
|
+
|
|
27
|
+
# Curated memory — directory layout: one file per entry, content-addressed
|
|
28
|
+
# by hash. Filename collisions are content-identity, so normal (non-union)
|
|
29
|
+
# merge is fine here; only line-ending normalization matters.
|
|
11
30
|
agents/memory/ownership/*.yml text eol=lf
|
|
12
31
|
agents/memory/historical-patterns/*.yml text eol=lf
|
|
13
32
|
agents/memory/domain-invariants/*.yml text eol=lf
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.ts (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "9.
|
|
42
|
+
agent_config_version: "9.9.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Command Template
|
|
2
2
|
|
|
3
|
-
> Template for creating new commands in
|
|
3
|
+
> Template for creating new commands in `src/agent-src/commands/{command-name}.md`.
|
|
4
4
|
|
|
5
5
|
## Instructions
|
|
6
6
|
|
|
7
|
-
1. Create file:
|
|
7
|
+
1. Create file: `src/agent-src/commands/{command-name}.md`
|
|
8
8
|
2. Copy the template below
|
|
9
9
|
3. Replace all `{placeholders}` with actual content
|
|
10
10
|
4. Remove all `<!-- comments -->` when done
|
|
@@ -97,7 +97,7 @@ Before considering a command complete:
|
|
|
97
97
|
|
|
98
98
|
- [ ] **Frontmatter**: has `name`, `description`, `disable-model-invocation: true`, `suggestion` block
|
|
99
99
|
- [ ] **Steps**: numbered sub-headings (`### 1.`, `### 2.`, ...)
|
|
100
|
-
- [ ] **Source of truth**: works on
|
|
100
|
+
- [ ] **Source of truth**: works on `src/`, not `dist/agent-src/` or `.augment/`
|
|
101
101
|
- [ ] **No auto-apply**: presents findings, asks before destructive changes
|
|
102
102
|
- [ ] **Linter passes**: `./scripts-run src/scripts/skill_linter` reports 0 FAIL
|
|
103
103
|
- [ ] **English only**: all content in English
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Persona Template
|
|
2
2
|
|
|
3
3
|
> Template for creating a new persona in
|
|
4
|
-
>
|
|
4
|
+
> `src/agent-src/personas/{persona-id}.md`. Personas declare
|
|
5
5
|
> a *voice* — focus, mindset, unique questions, output expectations.
|
|
6
6
|
> Skills cite personas in a `personas:` frontmatter key. Users invoke
|
|
7
7
|
> them via `--personas=<id>`.
|
|
8
8
|
|
|
9
9
|
## Instructions
|
|
10
10
|
|
|
11
|
-
1. Create the file:
|
|
11
|
+
1. Create the file: `src/agent-src/personas/{persona-id}.md`.
|
|
12
12
|
2. Copy the template below.
|
|
13
13
|
3. Replace all `{placeholders}` with real content.
|
|
14
14
|
4. Pass the Unique-Questions heuristic — ≥ 3 questions that no other
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Rule Template
|
|
2
2
|
|
|
3
|
-
> Template for creating new rules in
|
|
3
|
+
> Template for creating new rules in `src/rules/{rule-name}.md`.
|
|
4
4
|
> Rules ship to `dist/agent-src/rules/` (condensed) and `.augment/rules/` (projected).
|
|
5
5
|
> Schema: `scripts/schemas/rule.schema.json`.
|
|
6
6
|
|
|
7
7
|
## Instructions
|
|
8
8
|
|
|
9
9
|
1. Pick a kebab-case `{rule-name}` matching the file stem.
|
|
10
|
-
2. Copy the template below into
|
|
10
|
+
2. Copy the template below into `src/rules/{rule-name}.md`.
|
|
11
11
|
3. Replace placeholders, drop sections that don't apply.
|
|
12
12
|
4. Run `task lint-skills` and `./scripts-run src/scripts/lint_load_context`.
|
|
13
13
|
5. Condense: `bash scripts/condense.sh --changed` then follow the agent flow.
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
* (same PII-exclusion-by-construction shape as consulted).
|
|
22
22
|
* "outcomes": ["blocked", "verification_failed", ...] # optional
|
|
23
23
|
* "tokens_estimate": {"consulted_load": <int>} # optional
|
|
24
|
+
* "cross_source": [{"id": "d1", "type": "text-image", "asked": true}] # optional
|
|
25
|
+
* (road-to-feedback-9.2.0-followups 1.4): per-task ask-rate facet
|
|
26
|
+
* for the cross-source-consistency rule. Structural only — id +
|
|
27
|
+
* a closed type enum + a bool, no free-form fields.
|
|
24
28
|
* }
|
|
25
29
|
*/
|
|
26
30
|
import * as fs from 'node:fs';
|
|
@@ -55,6 +59,18 @@ export const ALLOWED_OUTCOMES = [
|
|
|
55
59
|
] as const;
|
|
56
60
|
export const MAX_OUTCOMES_PER_EVENT = ALLOWED_OUTCOMES.length;
|
|
57
61
|
|
|
62
|
+
// cross_source facet (road-to-feedback-9.2.0-followups 1.4) — the
|
|
63
|
+
// cross-source-consistency rule's discrepancy taxonomy (a)-(d) from
|
|
64
|
+
// src/rules/cross-source-consistency.md.
|
|
65
|
+
export const ALLOWED_CROSS_SOURCE_TYPES = [
|
|
66
|
+
'text-image',
|
|
67
|
+
'silent-needed',
|
|
68
|
+
'spec-code',
|
|
69
|
+
'intra-ticket',
|
|
70
|
+
] as const;
|
|
71
|
+
export const MAX_CROSS_SOURCE_PER_EVENT = 32;
|
|
72
|
+
const _CROSS_SOURCE_KEYS = ['asked', 'id', 'type'] as const;
|
|
73
|
+
|
|
58
74
|
// Phase 5 redaction validator — keep id fields from leaking paths,
|
|
59
75
|
// free-text, or filenames.
|
|
60
76
|
const _FORBIDDEN_ID_CHARS = ['/', '\\', '\n', '\r', '\t'] as const;
|
|
@@ -125,6 +141,13 @@ export function check_id_redaction(label: string, value: unknown): void {
|
|
|
125
141
|
}
|
|
126
142
|
}
|
|
127
143
|
|
|
144
|
+
/** One surfaced cross-source discrepancy — structural only, no free text. */
|
|
145
|
+
export interface CrossSourceEntry {
|
|
146
|
+
id: string;
|
|
147
|
+
type: string;
|
|
148
|
+
asked: boolean;
|
|
149
|
+
}
|
|
150
|
+
|
|
128
151
|
export interface EngagementEventInit {
|
|
129
152
|
ts: string;
|
|
130
153
|
task_id: string;
|
|
@@ -134,6 +157,7 @@ export interface EngagementEventInit {
|
|
|
134
157
|
loaded?: Record<string, string[]> | null;
|
|
135
158
|
outcomes?: string[] | null;
|
|
136
159
|
tokens_estimate?: Record<string, number> | null;
|
|
160
|
+
cross_source?: CrossSourceEntry[] | null;
|
|
137
161
|
schema_version?: number;
|
|
138
162
|
}
|
|
139
163
|
|
|
@@ -146,6 +170,7 @@ export class EngagementEvent {
|
|
|
146
170
|
loaded: Record<string, string[]> | null;
|
|
147
171
|
outcomes: string[] | null;
|
|
148
172
|
tokens_estimate: Record<string, number> | null;
|
|
173
|
+
cross_source: CrossSourceEntry[] | null;
|
|
149
174
|
schema_version: number;
|
|
150
175
|
|
|
151
176
|
constructor(init: EngagementEventInit) {
|
|
@@ -157,6 +182,7 @@ export class EngagementEvent {
|
|
|
157
182
|
this.loaded = init.loaded ?? null;
|
|
158
183
|
this.outcomes = init.outcomes ?? null;
|
|
159
184
|
this.tokens_estimate = init.tokens_estimate ?? null;
|
|
185
|
+
this.cross_source = init.cross_source ?? null;
|
|
160
186
|
this.schema_version = init.schema_version ?? SCHEMA_VERSION;
|
|
161
187
|
}
|
|
162
188
|
|
|
@@ -195,6 +221,9 @@ export class EngagementEvent {
|
|
|
195
221
|
if (this.outcomes !== null) {
|
|
196
222
|
_validate_outcomes(this.outcomes);
|
|
197
223
|
}
|
|
224
|
+
if (this.cross_source !== null) {
|
|
225
|
+
_validate_cross_source(this.cross_source);
|
|
226
|
+
}
|
|
198
227
|
if (this.tokens_estimate !== null) {
|
|
199
228
|
if (!_isPlainObject(this.tokens_estimate)) {
|
|
200
229
|
throw new EngagementSchemaError(
|
|
@@ -236,6 +265,13 @@ export class EngagementEvent {
|
|
|
236
265
|
if (this.outcomes && this.outcomes.length > 0) {
|
|
237
266
|
out['outcomes'] = [...this.outcomes];
|
|
238
267
|
}
|
|
268
|
+
if (this.cross_source && this.cross_source.length > 0) {
|
|
269
|
+
out['cross_source'] = this.cross_source.map((e) => ({
|
|
270
|
+
id: e.id,
|
|
271
|
+
type: e.type,
|
|
272
|
+
asked: e.asked,
|
|
273
|
+
}));
|
|
274
|
+
}
|
|
239
275
|
if (this.tokens_estimate && Object.keys(this.tokens_estimate).length > 0) {
|
|
240
276
|
out['tokens_estimate'] = { ...this.tokens_estimate };
|
|
241
277
|
}
|
|
@@ -317,6 +353,46 @@ function _validate_outcomes(payload: unknown): void {
|
|
|
317
353
|
}
|
|
318
354
|
}
|
|
319
355
|
|
|
356
|
+
function _validate_cross_source(payload: unknown): void {
|
|
357
|
+
if (!Array.isArray(payload)) {
|
|
358
|
+
throw new EngagementSchemaError('cross_source must be a list of dict or None');
|
|
359
|
+
}
|
|
360
|
+
if (payload.length > MAX_CROSS_SOURCE_PER_EVENT) {
|
|
361
|
+
throw new EngagementSchemaError(
|
|
362
|
+
`cross_source exceeds ${MAX_CROSS_SOURCE_PER_EVENT} entries`,
|
|
363
|
+
);
|
|
364
|
+
}
|
|
365
|
+
for (const entry of payload) {
|
|
366
|
+
if (!_isPlainObject(entry)) {
|
|
367
|
+
throw new EngagementSchemaError('cross_source entries must be dict[str, ...]');
|
|
368
|
+
}
|
|
369
|
+
const keys = Object.keys(entry);
|
|
370
|
+
const extra = keys.filter((k) => !(_CROSS_SOURCE_KEYS as readonly string[]).includes(k));
|
|
371
|
+
if (extra.length > 0) {
|
|
372
|
+
throw new EngagementSchemaError(
|
|
373
|
+
`cross_source entry has unexpected key(s): ${extra.sort().join(', ')}; `
|
|
374
|
+
+ `allowed keys: ${_CROSS_SOURCE_KEYS.join(', ')}`,
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
for (const required of _CROSS_SOURCE_KEYS) {
|
|
378
|
+
if (!(required in entry)) {
|
|
379
|
+
throw new EngagementSchemaError(`cross_source entry missing required key '${required}'`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
check_id_redaction('cross_source.id', entry['id']);
|
|
383
|
+
const type_val = entry['type'];
|
|
384
|
+
if (typeof type_val !== 'string' || !(ALLOWED_CROSS_SOURCE_TYPES as readonly string[]).includes(type_val)) {
|
|
385
|
+
throw new EngagementSchemaError(
|
|
386
|
+
`cross_source.type must be one of ${_reprTuple(ALLOWED_CROSS_SOURCE_TYPES)}, `
|
|
387
|
+
+ `got ${_reprScalar(type_val)}`,
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
if (typeof entry['asked'] !== 'boolean') {
|
|
391
|
+
throw new EngagementSchemaError('cross_source.asked must be a bool');
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
320
396
|
export function parse_event(line: string): EngagementEvent {
|
|
321
397
|
if (typeof line !== 'string' || !line.trim()) {
|
|
322
398
|
throw new EngagementSchemaError('line must be a non-empty JSONL record');
|
|
@@ -342,6 +418,7 @@ export function parse_event(line: string): EngagementEvent {
|
|
|
342
418
|
: _orEmptyDict(r['loaded']),
|
|
343
419
|
outcomes: (r['outcomes'] as string[] | null | undefined) ?? null,
|
|
344
420
|
tokens_estimate: (r['tokens_estimate'] as Record<string, number> | null | undefined) ?? null,
|
|
421
|
+
cross_source: (r['cross_source'] as CrossSourceEntry[] | null | undefined) ?? null,
|
|
345
422
|
schema_version: r['schema_version'] === undefined
|
|
346
423
|
? SCHEMA_VERSION
|
|
347
424
|
: (r['schema_version'] as number),
|
|
@@ -21,6 +21,7 @@ import * as path from 'node:path';
|
|
|
21
21
|
import { record_event } from './telemetry/boundary.js';
|
|
22
22
|
import {
|
|
23
23
|
ALLOWED_OUTCOMES,
|
|
24
|
+
type CrossSourceEntry,
|
|
24
25
|
EngagementEvent,
|
|
25
26
|
EngagementSchemaError,
|
|
26
27
|
now_utc_iso,
|
|
@@ -58,6 +59,30 @@ function _reprStr(s: string): string {
|
|
|
58
59
|
return `'${s}'`;
|
|
59
60
|
}
|
|
60
61
|
|
|
62
|
+
/** Turn `["d1:text-image:ask", ...]` into cross_source entries. Unknown
|
|
63
|
+
* `type` values are left to schema validation (consistent with how
|
|
64
|
+
* `_parse_kv_list` leaves unknown artefact kinds to the schema); only
|
|
65
|
+
* the CLI-only `id:type:ask|warn` shape is checked here. */
|
|
66
|
+
function _parse_cross_source_list(values: string[]): CrossSourceEntry[] {
|
|
67
|
+
const out: CrossSourceEntry[] = [];
|
|
68
|
+
for (const raw of values) {
|
|
69
|
+
const parts = raw.split(':');
|
|
70
|
+
if (parts.length !== 3 || !parts[0] || !parts[1] || !parts[2]) {
|
|
71
|
+
throw new SystemExitError(
|
|
72
|
+
`❌ --cross-source must be 'id:type:ask|warn', got ${_reprStr(raw)}`,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
const [id, type, verdict] = parts as [string, string, string];
|
|
76
|
+
if (verdict !== 'ask' && verdict !== 'warn') {
|
|
77
|
+
throw new SystemExitError(
|
|
78
|
+
`❌ --cross-source verdict must be 'ask' or 'warn', got ${_reprStr(verdict)}`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
out.push({ id, type, asked: verdict === 'ask' });
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
|
|
61
86
|
interface RecordArgs {
|
|
62
87
|
task_id: string;
|
|
63
88
|
boundary: string;
|
|
@@ -65,6 +90,7 @@ interface RecordArgs {
|
|
|
65
90
|
applied: string[] | null;
|
|
66
91
|
loaded: string[] | null;
|
|
67
92
|
outcome: string[] | null;
|
|
93
|
+
cross_source: string[] | null;
|
|
68
94
|
ts: string;
|
|
69
95
|
payload_file: string | null;
|
|
70
96
|
stdin: boolean;
|
|
@@ -81,6 +107,9 @@ function _build_event_from_args(args: RecordArgs): EngagementEvent {
|
|
|
81
107
|
applied: _parse_kv_list(args.applied ?? []),
|
|
82
108
|
loaded: args.loaded && args.loaded.length > 0 ? _parse_kv_list(args.loaded) : null,
|
|
83
109
|
outcomes: args.outcome && args.outcome.length > 0 ? [...args.outcome] : null,
|
|
110
|
+
cross_source: args.cross_source && args.cross_source.length > 0
|
|
111
|
+
? _parse_cross_source_list(args.cross_source)
|
|
112
|
+
: null,
|
|
84
113
|
});
|
|
85
114
|
}
|
|
86
115
|
|
|
@@ -106,6 +135,7 @@ function _build_event_from_payload(raw: string): EngagementEvent {
|
|
|
106
135
|
loaded: d['loaded'] === undefined || d['loaded'] === null ? null : _orEmpty(d['loaded']),
|
|
107
136
|
outcomes: (d['outcomes'] as string[] | null | undefined) ?? null,
|
|
108
137
|
tokens_estimate: (d['tokens_estimate'] as Record<string, number> | null | undefined) ?? null,
|
|
138
|
+
cross_source: (d['cross_source'] as CrossSourceEntry[] | null | undefined) ?? null,
|
|
109
139
|
});
|
|
110
140
|
}
|
|
111
141
|
|
|
@@ -126,6 +156,7 @@ function _parseArgs(argv: string[]): RecordArgs {
|
|
|
126
156
|
applied: null,
|
|
127
157
|
loaded: null,
|
|
128
158
|
outcome: null,
|
|
159
|
+
cross_source: null,
|
|
129
160
|
ts: '',
|
|
130
161
|
payload_file: null,
|
|
131
162
|
stdin: false,
|
|
@@ -170,7 +201,8 @@ function _parseArgs(argv: string[]): RecordArgs {
|
|
|
170
201
|
);
|
|
171
202
|
}
|
|
172
203
|
(a.outcome ??= []).push(v);
|
|
173
|
-
} else if (tok === '--
|
|
204
|
+
} else if (tok === '--cross-source') (a.cross_source ??= []).push(next());
|
|
205
|
+
else if (tok === '--ts') a.ts = next();
|
|
174
206
|
else if (tok === '--payload-file') a.payload_file = next();
|
|
175
207
|
else if (tok === '--stdin') a.stdin = true;
|
|
176
208
|
else if (tok === '--settings') a.settings = next();
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { existsSync } from 'node:fs';
|
|
10
10
|
import { BASH_ENTRY, BASH_SHIM, CONSUMER_ROOT, PACKAGE_ROOT } from '../paths.js';
|
|
11
11
|
import { logger } from '../log/logger.js';
|
|
12
|
+
import { detectRtk } from '../../install/rtkDetection.js';
|
|
12
13
|
function checkNode() {
|
|
13
14
|
const required = 20;
|
|
14
15
|
const version = process.versions.node;
|
|
@@ -45,12 +46,31 @@ function checkBashShim() {
|
|
|
45
46
|
detail: ok ? BASH_SHIM : `${BASH_SHIM} (not found)`,
|
|
46
47
|
};
|
|
47
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* rtk is an OPTIONAL third-party tool — its absence never fails the doctor
|
|
51
|
+
* (ok stays true for every state); the row is an informational readout of
|
|
52
|
+
* the two-stage identity probe (docs/contracts/rtk-detection.md).
|
|
53
|
+
*/
|
|
54
|
+
function checkRtk() {
|
|
55
|
+
const d = detectRtk();
|
|
56
|
+
if (!d.present)
|
|
57
|
+
return { name: 'rtk', ok: true, detail: 'not installed (optional; see `agent-config rtk:detect`)' };
|
|
58
|
+
switch (d.identity) {
|
|
59
|
+
case 'token-killer':
|
|
60
|
+
return { name: 'rtk', ok: true, detail: `Rust Token Killer${d.version !== undefined ? ` v${d.version}` : ''} (${d.binPath ?? 'on PATH'})` };
|
|
61
|
+
case 'unknown-rtk':
|
|
62
|
+
return { name: 'rtk', ok: true, detail: 'DIFFERENT TOOL on PATH (name collision, not Rust Token Killer) — see `agent-config rtk:detect`' };
|
|
63
|
+
default:
|
|
64
|
+
return { name: 'rtk', ok: true, detail: 'present but unverified — run `rtk gain` manually' };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
48
67
|
export function runDoctorShell() {
|
|
49
68
|
const checks = [
|
|
50
69
|
checkNode(),
|
|
51
70
|
checkPackageRoot(),
|
|
52
71
|
checkBashEntry(),
|
|
53
72
|
checkBashShim(),
|
|
73
|
+
checkRtk(),
|
|
54
74
|
];
|
|
55
75
|
logger.info(`consumer_root: ${CONSUMER_ROOT}`);
|
|
56
76
|
logger.info(`package_root: ${PACKAGE_ROOT}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctorShell.js","sourceRoot":"","sources":["../../../src/cli/commands/doctorShell.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctorShell.js","sourceRoot":"","sources":["../../../src/cli/commands/doctorShell.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAQ1D,SAAS,SAAS;IACd,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,KAAK,IAAI,QAAQ;QACrB,MAAM,EAAE,KAAK,IAAI,QAAQ;YACrB,CAAC,CAAC,IAAI,OAAO,SAAS,QAAQ,OAAO;YACrC,CAAC,CAAC,IAAI,OAAO,eAAe,QAAQ,OAAO;KAClD,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB;IACrB,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,YAAY,eAAe,CAAC,CAAC;IACtD,OAAO;QACH,IAAI,EAAE,cAAc;QACpB,EAAE;QACF,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,yBAAyB;KACvE,CAAC;AACN,CAAC;AAED,SAAS,cAAc;IACnB,MAAM,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO;QACH,IAAI,EAAE,YAAY;QAClB,EAAE;QACF,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,cAAc;KACxD,CAAC;AACN,CAAC;AAED,SAAS,aAAa;IAClB,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,EAAE;QACF,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,cAAc;KACtD,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ;IACb,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,yDAAyD,EAAE,CAAC;IACpH,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjB,KAAK,cAAc;YACf,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,IAAI,SAAS,GAAG,EAAE,CAAC;QAChJ,KAAK,aAAa;YACd,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,gGAAgG,EAAE,CAAC;QAC/I;YACI,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,kDAAkD,EAAE,CAAC;IACrG,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,MAAM,MAAM,GAAY;QACpB,SAAS,EAAE;QACX,gBAAgB,EAAE;QAClB,cAAc,EAAE;QAChB,aAAa,EAAE;QACf,QAAQ,EAAE;KACb,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,MAAM,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,kBAAkB,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `rtk:detect` — native TS implementation.
|
|
3
|
+
*
|
|
4
|
+
* Stable rtk (Rust Token Killer) detection readout: the same two-stage
|
|
5
|
+
* probe (PATH presence + `rtk gain` output-signature identity) the wizard
|
|
6
|
+
* uses, exposed to the CLI so other tools (agent-switch's Tooling section,
|
|
7
|
+
* scripts, doctors) can consume one primary implementation instead of
|
|
8
|
+
* re-probing with their own drift-prone logic.
|
|
9
|
+
*
|
|
10
|
+
* Contract: docs/contracts/rtk-detection.md (versioned — bump `contract`
|
|
11
|
+
* on any breaking shape change).
|
|
12
|
+
*/
|
|
13
|
+
import { detectRtk, rtkInstallCommands, RTK_UPSTREAM_REPO } from '../../install/rtkDetection.js';
|
|
14
|
+
import { logger } from '../log/logger.js';
|
|
15
|
+
export const RTK_DETECT_CONTRACT_VERSION = 1;
|
|
16
|
+
export function runRtkDetect(opts) {
|
|
17
|
+
const detection = detectRtk();
|
|
18
|
+
const installed = detection.present && detection.identity === 'token-killer';
|
|
19
|
+
if (opts.json === true) {
|
|
20
|
+
const payload = {
|
|
21
|
+
contract: RTK_DETECT_CONTRACT_VERSION,
|
|
22
|
+
installed,
|
|
23
|
+
present: detection.present,
|
|
24
|
+
identity: detection.identity ?? null,
|
|
25
|
+
version: detection.version ?? null,
|
|
26
|
+
binPath: detection.binPath ?? null,
|
|
27
|
+
platform: process.platform,
|
|
28
|
+
repo: RTK_UPSTREAM_REPO,
|
|
29
|
+
installCommands: detection.present ? null : rtkInstallCommands(process.platform),
|
|
30
|
+
};
|
|
31
|
+
process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
if (!detection.present) {
|
|
35
|
+
const commands = rtkInstallCommands(process.platform);
|
|
36
|
+
logger.info('rtk: not installed');
|
|
37
|
+
logger.info(` install (${commands.recommendedLabel}): ${commands.recommended}`);
|
|
38
|
+
if (commands.manual !== undefined) {
|
|
39
|
+
logger.info(` manual (${commands.manualLabel ?? 'manual'}): ${commands.manual}`);
|
|
40
|
+
}
|
|
41
|
+
if (commands.note !== undefined)
|
|
42
|
+
logger.info(` note: ${commands.note}`);
|
|
43
|
+
logger.info(` upstream: ${RTK_UPSTREAM_REPO} (third-party, Apache-2.0)`);
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
switch (detection.identity) {
|
|
47
|
+
case 'token-killer':
|
|
48
|
+
logger.info(`rtk: installed — Rust Token Killer${detection.version !== undefined ? ` v${detection.version}` : ''} (${detection.binPath ?? 'on PATH'})`);
|
|
49
|
+
return 0;
|
|
50
|
+
case 'unknown-rtk':
|
|
51
|
+
logger.info(`rtk: DIFFERENT TOOL — a binary named rtk is on PATH (${detection.binPath ?? ''}) but it is not Rust Token Killer (name collision with Rust Type Kit). See ${RTK_UPSTREAM_REPO}/blob/master/INSTALL.md`);
|
|
52
|
+
return 0;
|
|
53
|
+
default:
|
|
54
|
+
logger.info(`rtk: present but UNVERIFIED — the identity check failed; verify manually with \`rtk gain\` (Rust Token Killer renders a token-savings dashboard).`);
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=rtkDetect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtkDetect.js","sourceRoot":"","sources":["../../../src/cli/commands/rtkDetect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,UAAU,YAAY,CAAC,IAAwB;IACjD,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,QAAQ,KAAK,cAAc,CAAC;IAE7E,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG;YACZ,QAAQ,EAAE,2BAA2B;YACrC,SAAS;YACT,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,IAAI;YACpC,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,IAAI;YAClC,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,IAAI;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,iBAAiB;YACvB,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;SACnF,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACb,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,gBAAgB,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,WAAW,IAAI,QAAQ,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,eAAe,iBAAiB,4BAA4B,CAAC,CAAC;QAC1E,OAAO,CAAC,CAAC;IACb,CAAC;IACD,QAAQ,SAAS,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,cAAc;YACf,MAAM,CAAC,IAAI,CAAC,qCAAqC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,OAAO,IAAI,SAAS,GAAG,CAAC,CAAC;YACxJ,OAAO,CAAC,CAAC;QACb,KAAK,aAAa;YACd,MAAM,CAAC,IAAI,CAAC,wDAAwD,SAAS,CAAC,OAAO,IAAI,EAAE,8EAA8E,iBAAiB,yBAAyB,CAAC,CAAC;YACrN,OAAO,CAAC,CAAC;QACb;YACI,MAAM,CAAC,IAAI,CAAC,mJAAmJ,CAAC,CAAC;YACjK,OAAO,CAAC,CAAC;IACjB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-time GUI notice on the first interactive CLI invocation
|
|
3
|
+
* (road-to-feedback-9.8.0-followups § Phase 0, install-time side-effect
|
|
4
|
+
* honesty).
|
|
5
|
+
*
|
|
6
|
+
* The package deliberately has NO install-time side effect (no postinstall,
|
|
7
|
+
* no GUI auto-launch — removal owned by road-to-credible-install Phase 0).
|
|
8
|
+
* The discoverability that a postinstall banner would have provided moves
|
|
9
|
+
* here instead: the FIRST interactive invocation prints one stderr line
|
|
10
|
+
* pointing at the browser GUI and naming the suppress variable, then never
|
|
11
|
+
* again (marker file under the user-global root).
|
|
12
|
+
*
|
|
13
|
+
* Silent by construction for every machine surface: requires a stderr TTY,
|
|
14
|
+
* no `CI`, no `AGENT_CONFIG_NO_UI` — hooks, MCP serving, pipes, and CI runs
|
|
15
|
+
* never see it. Failures (unwritable root, races) degrade to silence; the
|
|
16
|
+
* notice is informational, never load-bearing.
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
19
|
+
import { join } from 'node:path';
|
|
20
|
+
import { event4u_root } from '../scripts/_lib/user_global_paths.js';
|
|
21
|
+
const MARKER_BASENAME = 'first-run-notice-shown';
|
|
22
|
+
export const FIRST_RUN_NOTICE = 'agent-config has a browser GUI — run `agent-config setup` to open it. ' +
|
|
23
|
+
'(Set AGENT_CONFIG_NO_UI=1 to suppress GUI launches; this notice prints once.)\n';
|
|
24
|
+
/** Commands that already ARE the GUI — mark as seen without printing. */
|
|
25
|
+
const GUI_COMMANDS = new Set([
|
|
26
|
+
'setup', 'install', 'init', 'config', 'settings', 'ui:serve',
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Print the one-time GUI notice when appropriate. Returns true when the
|
|
30
|
+
* notice was printed this call (test seam); marker is written on both the
|
|
31
|
+
* printed and the GUI-command path so the notice fires at most once ever.
|
|
32
|
+
*/
|
|
33
|
+
export function maybePrintFirstRunNotice(head, io = {}) {
|
|
34
|
+
const env = io.env ?? process.env;
|
|
35
|
+
const ci = (env['CI'] ?? '').trim();
|
|
36
|
+
if (ci && ci !== '0')
|
|
37
|
+
return false;
|
|
38
|
+
const noUi = (env['AGENT_CONFIG_NO_UI'] ?? '').trim();
|
|
39
|
+
if (noUi && noUi !== '0')
|
|
40
|
+
return false;
|
|
41
|
+
const tty = io.isStderrTty ?? process.stderr.isTTY === true;
|
|
42
|
+
if (!tty)
|
|
43
|
+
return false;
|
|
44
|
+
let root;
|
|
45
|
+
try {
|
|
46
|
+
root = io.root ?? event4u_root(env);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const marker = join(root, MARKER_BASENAME);
|
|
52
|
+
try {
|
|
53
|
+
if (existsSync(marker))
|
|
54
|
+
return false;
|
|
55
|
+
mkdirSync(root, { recursive: true });
|
|
56
|
+
writeFileSync(marker, `${new Date().toISOString()}\n`, { flag: 'wx' });
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Race (another invocation won `wx`) or unwritable root → stay silent.
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (head !== undefined && GUI_COMMANDS.has(head)) {
|
|
63
|
+
// The user is already opening the GUI — notice would be noise.
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const write = io.write ?? ((text) => process.stderr.write(text));
|
|
67
|
+
write(FIRST_RUN_NOTICE);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=firstRunNotice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firstRunNotice.js","sourceRoot":"","sources":["../../src/cli/firstRunNotice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GACzB,wEAAwE;IACxE,iFAAiF,CAAC;AAEtF,yEAAyE;AACzE,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC;IAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;CAC/D,CAAC,CAAC;AASH;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACpC,IAAwB,EACxB,KAAuB,EAAE;IAEzB,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;IAC5D,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACD,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC3C,IAAI,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACL,uEAAuE;QACvE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,+DAA+D;QAC/D,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AAChB,CAAC"}
|