@event4u/agent-config 3.3.0 → 4.1.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/.agent-src/README.md +2 -2
- package/.agent-src/commands/agent-handoff.md +31 -2
- package/.agent-src/commands/agent-status.md +5 -5
- package/.agent-src/commands/agents/audit.md +8 -8
- package/.agent-src/commands/agents/init.md +25 -1
- package/.agent-src/commands/agents/optimize.md +3 -3
- package/.agent-src/commands/agents/user.md +1 -1
- package/.agent-src/commands/agents.md +1 -1
- package/.agent-src/commands/analyze-reference-repo.md +1 -1
- package/.agent-src/commands/check-current-md.md +8 -8
- package/.agent-src/commands/{compress.md → condense.md} +55 -55
- package/.agent-src/commands/context/create.md +7 -4
- package/.agent-src/commands/context/refactor.md +3 -1
- package/.agent-src/commands/feature/dev.md +1 -1
- package/.agent-src/commands/feature/explore.md +1 -1
- package/.agent-src/commands/feature/plan.md +10 -8
- package/.agent-src/commands/feature/refactor.md +3 -1
- package/.agent-src/commands/feature/roadmap.md +7 -4
- package/.agent-src/commands/fix/portability.md +3 -3
- package/.agent-src/commands/fix/refs.md +4 -4
- package/.agent-src/commands/ghostwriter.md +2 -2
- package/.agent-src/commands/memory/learn-low-impact.md +3 -3
- package/.agent-src/commands/module/explore.md +34 -8
- package/.agent-src/commands/optimize/agents-dir.md +9 -7
- package/.agent-src/commands/optimize/augmentignore.md +2 -2
- package/.agent-src/commands/optimize/skills.md +9 -9
- package/.agent-src/commands/post-as.md +1 -1
- package/.agent-src/commands/project-analyze.md +2 -2
- package/.agent-src/commands/project-health.md +3 -2
- package/.agent-src/commands/research/deep.md +1 -1
- package/.agent-src/commands/research/report.md +1 -1
- package/.agent-src/commands/research.md +1 -1
- package/.agent-src/commands/roadmap/ai-council.md +1 -1
- package/.agent-src/commands/roadmap/create.md +9 -4
- package/.agent-src/commands/rule-compliance-audit.md +1 -1
- package/.agent-src/commands/upstream-contribute.md +14 -14
- package/.agent-src/commands/video/from-script.md +1 -1
- package/.agent-src/commands/video/scene.md +1 -1
- package/.agent-src/commands/video/stitch.md +1 -1
- package/.agent-src/commands/video/storyboard.md +1 -1
- package/.agent-src/commands/video.md +1 -1
- package/.agent-src/contexts/augment-infrastructure.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +15 -0
- package/.agent-src/contexts/authority/kernel-rule-edits.md +3 -3
- package/.agent-src/contexts/authority/scope-mechanics.md +1 -1
- package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +28 -28
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +4 -4
- package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
- package/.agent-src/contexts/contracts/artifact-engagement-flow.md +6 -6
- package/.agent-src/contexts/contracts/command-suggestion-flow.md +3 -3
- package/.agent-src/contexts/contracts/emergency-triage-block.md +4 -4
- package/.agent-src/contexts/contracts/frugality-charter.md +3 -3
- package/.agent-src/contexts/documentation-hierarchy.md +14 -7
- package/.agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/.agent-src/contexts/execution/cheap-question-mechanics.md +39 -2
- package/.agent-src/contexts/execution/roadmap-process-loop.md +28 -5
- package/.agent-src/contexts/override-system.md +5 -5
- package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
- package/.agent-src/personas/advisors/first-principles.md +1 -1
- package/.agent-src/personas/hollywood-director.md +1 -1
- package/.agent-src/rules/architecture.md +5 -1
- package/.agent-src/rules/augment-edit-discipline.md +5 -5
- package/.agent-src/rules/augment-source-of-truth.md +15 -15
- package/.agent-src/rules/commit-conventions.md +1 -1
- package/.agent-src/rules/commit-policy.md +10 -0
- package/.agent-src/rules/domain-adoption-policy.md +3 -3
- package/.agent-src/rules/fast-path-marker-visibility.md +3 -3
- package/.agent-src/rules/finance-safety-floor.md +1 -1
- package/.agent-src/rules/framework-neutrality-in-generic-skills.md +8 -8
- package/.agent-src/rules/git-history-discipline.md +1 -1
- package/.agent-src/rules/improve-before-implement.md +2 -2
- package/.agent-src/rules/language-and-tone.md +2 -2
- package/.agent-src/rules/media-governance-routing.md +5 -5
- package/.agent-src/rules/no-attribution-footers.md +1 -0
- package/.agent-src/rules/no-cheap-questions.md +3 -0
- package/.agent-src/rules/no-decorative-emojis-in-git-surfaces.md +111 -0
- package/.agent-src/rules/no-pr-progress-comments.md +118 -0
- package/.agent-src/rules/no-roadmap-references.md +3 -3
- package/.agent-src/rules/non-destructive-by-default.md +1 -1
- package/.agent-src/rules/persona-governance.md +3 -3
- package/.agent-src/rules/preservation-guard.md +15 -15
- package/.agent-src/rules/roadmap-ci-steps-policy.md +7 -3
- package/.agent-src/rules/rule-type-governance.md +1 -1
- package/.agent-src/rules/skill-quality.md +1 -1
- package/.agent-src/rules/{caveman-speak.md → telegraph-speak.md} +15 -15
- package/.agent-src/rules/token-optimizer-maintenance.md +6 -6
- package/.agent-src/skills/agent-docs-writing/SKILL.md +17 -11
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +9 -9
- package/.agent-src/skills/check-refs/SKILL.md +2 -2
- package/.agent-src/skills/code-refactoring/SKILL.md +2 -2
- package/.agent-src/skills/command-writing/SKILL.md +19 -19
- package/.agent-src/skills/comp-banding/SKILL.md +1 -1
- package/.agent-src/skills/condense-memory/SKILL.md +131 -0
- package/.agent-src/skills/context-authoring/SKILL.md +2 -2
- package/.agent-src/skills/context-document/SKILL.md +5 -3
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +3 -3
- package/.agent-src/skills/description-assist/SKILL.md +2 -2
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/guideline-writing/SKILL.md +5 -5
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
- package/.agent-src/skills/lint-skills/SKILL.md +3 -3
- package/.agent-src/skills/md-language-check/SKILL.md +2 -2
- package/.agent-src/skills/module-detect-on-the-fly/SKILL.md +138 -0
- package/.agent-src/skills/module-management/SKILL.md +166 -94
- package/.agent-src/skills/override-management/SKILL.md +1 -1
- package/.agent-src/skills/persona-writing/SKILL.md +5 -5
- package/.agent-src/skills/positioning-strategy/SKILL.md +1 -1
- package/.agent-src/skills/project-docs/SKILL.md +6 -4
- package/.agent-src/skills/readme-reviewer/SKILL.md +2 -2
- package/.agent-src/skills/roadmap-management/SKILL.md +13 -1
- package/.agent-src/skills/roadmap-writing/SKILL.md +4 -2
- package/.agent-src/skills/rule-refactor/SKILL.md +5 -5
- package/.agent-src/skills/rule-writing/SKILL.md +18 -18
- package/.agent-src/skills/script-writing/SKILL.md +1 -1
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +6 -6
- package/.agent-src/skills/skill-management/SKILL.md +21 -21
- package/.agent-src/skills/skill-reviewer/SKILL.md +2 -2
- package/.agent-src/skills/skill-writing/SKILL.md +8 -8
- package/.agent-src/skills/skill-writing/evals/triggers.json +1 -1
- package/.agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -1
- package/.agent-src/skills/upstream-contribute/SKILL.md +17 -17
- package/.agent-src/templates/AGENTS.md +1 -0
- package/.agent-src/templates/agent-settings.md +24 -13
- package/.agent-src/templates/agents/agent-project-settings.example.yml +61 -2
- package/.agent-src/templates/command.md +5 -5
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/copilot-instructions.md +8 -8
- package/.agent-src/templates/features.md +1 -1
- package/.agent-src/templates/hooks/pre-commit-frontmatter +2 -2
- package/.agent-src/templates/hooks/pre-commit-roadmap-progress +3 -3
- package/.agent-src/templates/persona.md +2 -2
- package/.agent-src/templates/roadmaps.md +1 -1
- package/.agent-src/templates/rule.md +13 -13
- package/.agent-src/templates/scripts/memory_lookup.py +1 -1
- package/.agent-src/templates/scripts/memory_status.py +2 -2
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +195 -1
- package/.agent-src/templates/scripts/work_engine/orchestration.py +1 -1
- package/.agent-src/templates/skill-archive-note.md +5 -5
- package/.agent-src/templates/skill.md +1 -1
- package/.claude-plugin/marketplace.json +4 -4
- package/AGENTS.md +16 -17
- package/CHANGELOG.md +181 -3
- package/CONTRIBUTING.md +31 -12
- package/README.md +18 -10
- package/config/agent-settings.template.yml +22 -2
- package/config/discovery/unassigned-artefacts.yml +24 -24
- package/config/profiles/full.ini +1 -1
- package/dist/cli/agent-config.js +52 -3
- package/dist/cli/agent-config.js.map +1 -1
- package/dist/cli/commands/uiServe.js +9 -0
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/registry.js +2 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +649 -606
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +439 -437
- package/dist/discovery/trust-report.md +5 -5
- package/dist/discovery/workspaces.json +450 -448
- package/dist/install/apply.js +238 -0
- package/dist/install/apply.js.map +1 -0
- package/dist/install/atomic.js +92 -0
- package/dist/install/atomic.js.map +1 -0
- package/dist/install/bridges/augment.js +20 -0
- package/dist/install/bridges/augment.js.map +1 -0
- package/dist/install/bridges/claude.js +44 -0
- package/dist/install/bridges/claude.js.map +1 -0
- package/dist/install/bridges/cline.js +69 -0
- package/dist/install/bridges/cline.js.map +1 -0
- package/dist/install/bridges/copilot.js +28 -0
- package/dist/install/bridges/copilot.js.map +1 -0
- package/dist/install/bridges/cursor.js +34 -0
- package/dist/install/bridges/cursor.js.map +1 -0
- package/dist/install/bridges/gemini.js +39 -0
- package/dist/install/bridges/gemini.js.map +1 -0
- package/dist/install/bridges/index.js +88 -0
- package/dist/install/bridges/index.js.map +1 -0
- package/dist/install/bridges/marker-content.js +153 -0
- package/dist/install/bridges/marker-content.js.map +1 -0
- package/dist/install/bridges/markers.js +42 -0
- package/dist/install/bridges/markers.js.map +1 -0
- package/dist/install/bridges/types.js +31 -0
- package/dist/install/bridges/types.js.map +1 -0
- package/dist/install/bridges/vscode.js +26 -0
- package/dist/install/bridges/vscode.js.map +1 -0
- package/dist/install/bridges/windsurf.js +35 -0
- package/dist/install/bridges/windsurf.js.map +1 -0
- package/dist/install/conflict.js +196 -0
- package/dist/install/conflict.js.map +1 -0
- package/dist/install/detect.js +218 -0
- package/dist/install/detect.js.map +1 -0
- package/dist/install/paths.js +82 -0
- package/dist/install/paths.js.map +1 -0
- package/dist/install/plan.js +157 -0
- package/dist/install/plan.js.map +1 -0
- package/dist/install/txlog.js +140 -0
- package/dist/install/txlog.js.map +1 -0
- package/dist/install/types.js +19 -0
- package/dist/install/types.js.map +1 -0
- package/dist/install/wizard-plan.js +184 -0
- package/dist/install/wizard-plan.js.map +1 -0
- package/dist/mcp/registry-manifest.json +4 -4
- package/dist/router.json +67 -19
- package/dist/server/app.js +6 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/install.js +547 -0
- package/dist/server/routes/install.js.map +1 -0
- package/dist/server/routes/wizard.js +301 -6
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/routes/workspace.js +396 -0
- package/dist/server/routes/workspace.js.map +1 -0
- package/dist/server/schemas/settings.js +4 -3
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-BXZILUxe.css +1 -0
- package/dist/ui/assets/index-DLEuEW1V.js +35 -0
- package/dist/ui/assets/index-DLEuEW1V.js.map +1 -0
- package/dist/ui/index.html +2 -2
- package/docs/MIGRATION.md +1 -1
- package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
- package/docs/adrs/router/0001-three-tier-routing.md +4 -4
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +1 -1
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +4 -4
- package/docs/adrs/{caveman → telegraph}/0001-default-off-until-bench.md +9 -9
- package/docs/adrs/telegraph/README.md +9 -0
- package/docs/architecture/augment-projection.md +4 -4
- package/docs/architecture/claude-bundle.md +1 -1
- package/docs/architecture/current-onboard-baseline.md +3 -3
- package/docs/architecture/multi-tool-projection.md +10 -10
- package/docs/architecture/source-projection.md +27 -27
- package/docs/architecture.md +19 -15
- package/docs/archive/CHANGELOG-pre-2.11.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-2.15.0.md +3 -3
- package/docs/archive/CHANGELOG-pre-2.16.0.md +1 -1
- package/docs/archive/CHANGELOG-pre-2.2.0.md +70 -70
- package/docs/archive/CHANGELOG-pre-2.20.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-2.25.0.md +15 -15
- package/docs/archive/CHANGELOG-pre-3.0.0.md +4 -4
- package/docs/archive/CHANGELOG-pre-3.1.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-3.2.0.md +3 -3
- package/docs/benchmark.md +65 -0
- package/docs/benchmarks.md +16 -16
- package/docs/catalog.md +17 -15
- package/docs/contracts/CHANGELOG-conventions.md +1 -1
- package/docs/contracts/STABILITY.md +2 -2
- package/docs/contracts/adoption-signal-floor.md +110 -0
- package/docs/contracts/adr-chat-history-split.md +4 -4
- package/docs/contracts/adr-command-suggestion.md +4 -4
- package/docs/contracts/adr-gtm-context-spine.md +1 -1
- package/docs/contracts/adr-implement-ticket-runtime.md +4 -4
- package/docs/contracts/adr-install-user-type-axis.md +1 -1
- package/docs/contracts/adr-layout.md +2 -2
- package/docs/contracts/adr-product-ui-track.md +10 -10
- package/docs/contracts/adr-user-types-axis.md +3 -3
- package/docs/contracts/adr-wing4-context-spine.md +1 -1
- package/docs/contracts/agent-memory-contract.md +3 -3
- package/docs/contracts/agents-md-tech-stack.md +2 -2
- package/docs/contracts/ai-council-config.md +2 -2
- package/docs/contracts/at-rest-encryption.md +4 -0
- package/docs/contracts/audit-log-v1.md +1 -1
- package/docs/contracts/benchmark-ab-contract.md +101 -0
- package/docs/contracts/benchmark-corpus-spec.md +1 -1
- package/docs/contracts/branch-protection-policy.md +98 -0
- package/docs/contracts/ci-cost-budget.md +106 -0
- package/docs/contracts/ci-green-floor.md +141 -0
- package/docs/contracts/command-clusters.md +6 -6
- package/docs/contracts/command-surface-tiers.md +2 -2
- package/docs/contracts/command-taxonomy.md +2 -2
- package/docs/contracts/{compression-default-kill-criterion.md → condensation-default-kill-criterion.md} +29 -29
- package/docs/contracts/config-presets.md +1 -1
- package/docs/contracts/context-paths.md +3 -3
- package/docs/contracts/context-spine.md +1 -1
- package/docs/contracts/cost-summary-schema.md +12 -12
- package/docs/contracts/cross-wing-handoff.md +4 -4
- package/docs/contracts/daily-workspace.md +4 -0
- package/docs/contracts/decision-trace-v1.md +2 -2
- package/docs/contracts/discovery-manifest.md +4 -4
- package/docs/contracts/explain-modes.md +4 -0
- package/docs/contracts/file-ownership-matrix.json +3493 -3318
- package/docs/contracts/file-ownership-matrix.md +3 -3
- package/docs/contracts/frontmatter-contract.md +4 -4
- package/docs/contracts/ghostwriter-schema.md +3 -3
- package/docs/contracts/gui-wizard.md +1 -1
- package/docs/contracts/harness-expectations.md +123 -0
- package/docs/contracts/host-agent-protocol.md +4 -0
- package/docs/contracts/implement-ticket-flow.md +9 -9
- package/docs/contracts/install-scopes.md +77 -0
- package/docs/contracts/iron-law-overrides.txt +1 -1
- package/docs/contracts/kernel-membership.md +26 -26
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
- package/docs/contracts/linter-structural-model.md +2 -2
- package/docs/contracts/load-context-budget-model.md +4 -4
- package/docs/contracts/load-context-schema.md +13 -13
- package/docs/contracts/local-analytics.md +4 -0
- package/docs/contracts/local-knowledge-ingestion.md +1 -1
- package/docs/contracts/mcp-cloud-scope.md +2 -2
- package/docs/contracts/mcp-phase-1-scope.md +3 -3
- package/docs/contracts/measurement-baseline.md +5 -5
- package/docs/contracts/mental-models.md +30 -30
- package/docs/contracts/multi-tool-projection-fidelity.md +4 -4
- package/docs/contracts/namespace.md +4 -4
- package/docs/contracts/orchestration-dsl-v1.md +7 -7
- package/docs/contracts/package-self-orientation.md +12 -12
- package/docs/contracts/persona-schema.md +6 -6
- package/docs/contracts/pilot/language-and-tone.md +1 -1
- package/docs/contracts/plain-language-surface.md +117 -0
- package/docs/contracts/profile-system.md +3 -3
- package/docs/contracts/release-pr-gating.md +103 -0
- package/docs/contracts/role-experience.md +3 -3
- package/docs/contracts/rule-classification.md +13 -13
- package/docs/contracts/rule-interactions.md +4 -4
- package/docs/contracts/rule-interactions.yml +30 -30
- package/docs/contracts/rule-priority-hierarchy.md +13 -13
- package/docs/contracts/rule-router.md +2 -2
- package/docs/contracts/safety-model.md +1 -1
- package/docs/contracts/skill-distribution-channels.md +61 -0
- package/docs/contracts/skill-domains.md +2 -2
- package/docs/contracts/smoke-contracts.md +5 -5
- package/docs/contracts/telegraph-telemetry.md +83 -0
- package/docs/contracts/trust-and-safety.md +5 -5
- package/docs/contracts/ui-stack-extension.md +7 -7
- package/docs/contracts/ui-track-flow.md +9 -9
- package/docs/contracts/user-type-schema.md +4 -4
- package/docs/contracts/workflow-packs.md +4 -4
- package/docs/contracts/workspace-documents.md +4 -0
- package/docs/customization.md +28 -8
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +6 -6
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +11 -11
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +2 -2
- package/docs/decisions/ADR-004-rule-governance-pruning.md +4 -4
- package/docs/decisions/ADR-005-subagent-worktrees.md +7 -7
- package/docs/decisions/ADR-011-domain-pack-readiness.md +6 -6
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +3 -3
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +3 -3
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +10 -10
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +6 -6
- package/docs/decisions/ADR-019-router-json-dist-location.md +2 -2
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +2 -2
- package/docs/decisions/ADR-021-deployment-shape.md +1 -1
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +1 -1
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +2 -2
- package/docs/decisions/ADR-028-root-layout.md +7 -7
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +2 -2
- package/docs/decisions/ADR-rule-kernel-and-router.md +5 -5
- package/docs/deploy/team-deployment-posture.md +20 -0
- package/docs/development.md +17 -17
- package/docs/distribution/registries.md +32 -0
- package/docs/distribution/registry-submissions.md +85 -0
- package/docs/distribution/telemetry-schema.md +1 -1
- package/docs/getting-started-by-role.md +45 -3
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
- package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
- package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
- package/docs/guidelines/agent-infra/direct-answers-demos.md +1 -1
- package/docs/guidelines/agent-infra/first-principles.md +2 -2
- package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
- package/docs/guidelines/agent-infra/layered-settings.md +56 -2
- package/docs/guidelines/agent-infra/mental-models.md +3 -3
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +2 -2
- package/docs/guidelines/agent-infra/rule-type-governance.md +1 -1
- package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +2 -2
- package/docs/guidelines/agent-infra/six-hats.md +3 -3
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
- package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
- package/docs/guidelines/agent-infra/verify-before-complete-demos.md +1 -1
- package/docs/guidelines/augment-portability-patterns.md +4 -4
- package/docs/guidelines/cross-role-handoff.md +2 -2
- package/docs/guidelines/php/php-coding-patterns.md +1 -1
- package/docs/guidelines/prompt-templates.md +6 -6
- package/docs/maintainers/dev-mode.md +1 -1
- package/docs/mcp.md +1 -1
- package/docs/parity/bench.json +3 -3
- package/docs/parity/ruflo.md +2 -2
- package/docs/profiles.md +11 -11
- package/docs/quality.md +11 -11
- package/docs/safety.md +3 -3
- package/docs/setup/mcp-client-config.md +1 -1
- package/docs/setup/mcp-r2-bootstrap.md +1 -1
- package/docs/setup/mcp-server-docker.md +3 -3
- package/docs/setup/per-ide/windsurf.md +1 -1
- package/docs/skills-catalog.md +8 -7
- package/docs/troubleshooting.md +1 -1
- package/docs/walkthroughs/daily-workspace-a11y.md +87 -0
- package/llms.txt +7 -6
- package/package.json +1 -1
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_archive/README.md +2 -2
- package/scripts/_archive/_backfill_skill_domains.py +3 -3
- package/scripts/_archive/_bootstrap_tier_frontmatter.py +3 -3
- package/scripts/_archive/_p43_bodies.py +10 -10
- package/scripts/_archive/{_p43_compress.py → _p43_condense.py} +5 -5
- package/scripts/_archive/_p4_migrate.py +7 -7
- package/scripts/_archive/_phase2_shim_helper.py +1 -1
- package/scripts/_archive/_pilot_council_question.py +5 -5
- package/scripts/_cli/explain_last/inputs.py +1 -1
- package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
- package/scripts/_lib/agent_settings.py +195 -1
- package/scripts/_lib/agent_src.py +19 -19
- package/scripts/_lib/bench_ab_cache.py +162 -0
- package/scripts/_lib/bench_ab_scoring.py +209 -0
- package/scripts/_lib/{bench_caveman.py → bench_telegraph.py} +21 -21
- package/scripts/_lib/{bench_caveman_report.py → bench_telegraph_report.py} +21 -21
- package/scripts/_lib/claude_desktop_bundler.py +5 -5
- package/scripts/_lib/module_detection.py +223 -0
- package/scripts/_lib/scope_guard.sh +162 -0
- package/scripts/_phase4_bucket.py +3 -3
- package/scripts/_pilot_measure.py +4 -4
- package/scripts/_tmp_scan_framework_leakage.py +1 -1
- package/scripts/adoption_report.py +195 -0
- package/scripts/adoption_snapshot.py +219 -0
- package/scripts/adoption_status.py +166 -0
- package/scripts/ai-video/lib/parse-blueprint.sh +1 -1
- package/scripts/ai_council/advisors.py +5 -5
- package/scripts/ai_council/compile_corpus.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +3 -3
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +2 -2
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +3 -3
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +6 -6
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +6 -6
- package/scripts/annotate_discovery.py +13 -13
- package/scripts/apply_modules_config.py +290 -0
- package/scripts/audit_adr_coverage.py +2 -2
- package/scripts/audit_auto_rules.py +2 -2
- package/scripts/audit_cloud_compatibility.py +3 -3
- package/scripts/audit_command_surface.py +9 -9
- package/scripts/audit_likelihood.py +2 -2
- package/scripts/audit_user_type_axis.py +2 -2
- package/scripts/bench_ab_cache_dispatch.py +68 -0
- package/scripts/bench_ab_clone.py +170 -0
- package/scripts/bench_ab_diff.py +227 -0
- package/scripts/bench_ab_integrity.py +143 -0
- package/scripts/bench_ab_run.py +235 -0
- package/scripts/bench_ab_task_runner.py +369 -0
- package/scripts/bench_ab_tracka_run.py +202 -0
- package/scripts/{bench_compress_memory.py → bench_condense_memory.py} +16 -16
- package/scripts/bench_run.py +33 -33
- package/scripts/bench_runner.py +2 -2
- package/scripts/bootstrap.sh +99 -0
- package/scripts/build_cloud_bundle.py +6 -6
- package/scripts/build_discovery_manifest.py +7 -7
- package/scripts/build_linear_digest.py +3 -3
- package/scripts/build_rule_trigger_matrix.py +8 -8
- package/scripts/chat_history.py +5 -5
- package/scripts/check_always_budget.py +11 -5
- package/scripts/check_augment_description_cap.py +3 -3
- package/scripts/check_cluster_patterns.py +2 -2
- package/scripts/check_command_count_messaging.py +3 -3
- package/scripts/{check_compression.py → check_condensation.py} +34 -34
- package/scripts/{check_compressed_paths.py → check_condensed_paths.py} +8 -8
- package/scripts/check_context_paths.py +7 -7
- package/scripts/check_council_layout.py +2 -2
- package/scripts/check_council_references.py +9 -9
- package/scripts/check_iron_law_prominence.py +2 -2
- package/scripts/check_kernel_rule_bundle.py +2 -2
- package/scripts/check_module_management_neutral.py +149 -0
- package/scripts/check_no_roadmap_refs.py +9 -9
- package/scripts/check_portability.py +3 -3
- package/scripts/check_public_catalog_links.py +4 -4
- package/scripts/check_references.py +7 -6
- package/scripts/check_release_pr_shape.py +112 -0
- package/scripts/check_reply_consistency.py +3 -3
- package/scripts/check_safety_floor_untouched.py +1 -1
- package/scripts/check_template_pin_drift.py +5 -5
- package/scripts/check_token_optimizer_freshness.py +3 -3
- package/scripts/ci_status.py +301 -0
- package/scripts/ci_time_ratio.py +1 -1
- package/scripts/cleanup_other_scope.sh +146 -0
- package/scripts/compile_router.py +10 -10
- package/scripts/{compress.py → condense.py} +64 -64
- package/scripts/condense.sh +18 -0
- package/scripts/{compress_memory.py → condense_memory.py} +33 -33
- package/scripts/config/presets.py +2 -2
- package/scripts/config/profiles.py +1 -1
- package/scripts/cost_by_conversation.py +3 -3
- package/scripts/cost_summary.py +7 -7
- package/scripts/count_token_optimizer_usage.sh +1 -1
- package/scripts/gen_discovery_baseline.py +5 -5
- package/scripts/generate_index.py +6 -6
- package/scripts/generate_ownership_matrix.py +10 -10
- package/scripts/generate_pack_manifests.py +1 -1
- package/scripts/ghostwriter_fixture_allowlist.txt +1 -1
- package/scripts/install +3 -3
- package/scripts/install-hooks.sh +6 -6
- package/scripts/install.py +76 -11
- package/scripts/install.sh +187 -1
- package/scripts/inventory_frontmatter.py +2 -2
- package/scripts/iron_law_sha.py +3 -3
- package/scripts/lint_agents_layout.py +14 -7
- package/scripts/lint_agents_md.py +4 -4
- package/scripts/lint_archived_skills.py +3 -3
- package/scripts/lint_artefact_frontmatter.py +2 -2
- package/scripts/lint_bench_ab.py +172 -0
- package/scripts/lint_bench_corpus.py +1 -1
- package/scripts/lint_command_tiers.py +5 -5
- package/scripts/lint_context_spine_usage.py +1 -1
- package/scripts/lint_framework_leakage.py +7 -7
- package/scripts/lint_framework_leakage_allowlist.json +144 -84
- package/scripts/lint_ghostwriter_source.py +3 -3
- package/scripts/lint_handoffs.py +1 -1
- package/scripts/lint_load_context.py +11 -11
- package/scripts/lint_media_policy_linkage.py +5 -5
- package/scripts/lint_namespace.py +1 -1
- package/scripts/lint_no_new_atomic_commands.py +2 -2
- package/scripts/lint_orchestration_dsl.py +1 -1
- package/scripts/lint_pack_boundaries.py +2 -2
- package/scripts/lint_persona_governance.py +4 -4
- package/scripts/lint_role_experiences.py +237 -0
- package/scripts/lint_rule_interactions.py +2 -2
- package/scripts/lint_rule_tiers.py +1 -1
- package/scripts/lint_trust_coherence.py +2 -2
- package/scripts/mcp_registry_submit.sh +187 -0
- package/scripts/mcp_server/tools.py +1 -1
- package/scripts/measure_frugality_savings.py +10 -10
- package/scripts/measure_patterns.py +1 -1
- package/scripts/measure_projection_bytes.py +5 -5
- package/scripts/measure_rule_budget.py +3 -3
- package/scripts/measure_skill_reduction.py +1 -1
- package/scripts/memory_lookup.py +1 -1
- package/scripts/memory_status.py +2 -2
- package/scripts/migrate_command_suggestions.py +3 -3
- package/scripts/mine_session.py +1 -1
- package/scripts/move_artefact.py +3 -3
- package/scripts/new_skill.py +2 -2
- package/scripts/pack_mcp_content.py +9 -9
- package/scripts/plan_physical_move.py +6 -6
- package/scripts/print_required_checks.py +196 -0
- package/scripts/probe_skill_registration.py +413 -0
- package/scripts/propose_modules_config.py +145 -0
- package/scripts/prototype_lint_contradictions.py +1 -1
- package/scripts/recruit_preflight.sh +152 -0
- package/scripts/refine_ticket_detect.py +3 -3
- package/scripts/release.py +20 -0
- package/scripts/render_benchmark_md.py +308 -0
- package/scripts/roadmap_progress_hook.py +1 -1
- package/scripts/run_skill_evals.py +2 -2
- package/scripts/runtime_registry.py +4 -4
- package/scripts/schemas/command.schema.json +4 -4
- package/scripts/schemas/rule.schema.json +5 -5
- package/scripts/schemas/skill.schema.json +3 -3
- package/scripts/schemas/user-type.schema.json +1 -1
- package/scripts/score_skill_selection.py +1 -1
- package/scripts/skill_collision_clusters.py +2 -2
- package/scripts/skill_linter.py +81 -81
- package/scripts/skill_overlap.py +5 -5
- package/scripts/skill_tools/audit_persona_coverage.py +2 -2
- package/scripts/skill_tools/audit_user_type_coverage.py +2 -2
- package/scripts/skill_tools/run_block_d_eval.py +1 -1
- package/scripts/skill_tools/score_skill_relevance.py +1 -1
- package/scripts/skill_tools/suggest_skill_for_task.py +1 -1
- package/scripts/skill_trigger_eval.py +3 -3
- package/scripts/smoke/kernel.sh +7 -1
- package/scripts/smoke/router.sh +5 -5
- package/scripts/smoke/skills.sh +1 -1
- package/scripts/smoke_quickstart.py +1 -1
- package/scripts/snapshot_agent_outputs.py +3 -3
- package/scripts/spotcheck_thin_root.py +1 -1
- package/scripts/{caveman_stats.py → telegraph_stats.py} +18 -18
- package/scripts/update_counts.py +1 -1
- package/scripts/validate_decision_engine.py +1 -1
- package/scripts/validate_frontmatter.py +1 -1
- package/scripts/validate_safe_paths.py +3 -3
- package/scripts/{validate_caveman_carveouts.py → validate_telegraph_carveouts.py} +7 -7
- package/scripts/verify_roadmap_closure.py +6 -6
- package/templates/consumer-settings/ONBOARDING.md +41 -0
- package/.agent-src/commands/install-via-agent.md +0 -129
- package/.agent-src/skills/compress-memory/SKILL.md +0 -131
- package/dist/ui/assets/index-D-DY1ywI.js +0 -35
- package/dist/ui/assets/index-D-DY1ywI.js.map +0 -1
- package/dist/ui/assets/index-Dqfhmg-d.css +0 -1
- package/docs/adrs/caveman/README.md +0 -9
- package/docs/contracts/caveman-telemetry.md +0 -83
- package/scripts/compress.sh +0 -18
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge registry — Phase A6 entrypoint.
|
|
3
|
+
*
|
|
4
|
+
* Maps stable tool IDs to pure builder functions. Callers pass a
|
|
5
|
+
* {@link BridgeContext} plus a list of enabled tool IDs and receive a
|
|
6
|
+
* flat list of {@link BridgeOutput}s ready for the apply layer.
|
|
7
|
+
*
|
|
8
|
+
* Order of `generateProjectBridges` output is **stable** — it follows
|
|
9
|
+
* the registration order below, which mirrors the Python install order
|
|
10
|
+
* (`scripts/install.py:_deploy_tool_content` dispatch table). Snapshot
|
|
11
|
+
* tests rely on this ordering.
|
|
12
|
+
*
|
|
13
|
+
* To add a tool:
|
|
14
|
+
* 1. Implement a `buildXxxBridge: BridgeBuilder` in `bridges/xxx.ts`.
|
|
15
|
+
* 2. Register it under its stable tool ID in {@link BRIDGE_REGISTRY}.
|
|
16
|
+
* 3. Add a snapshot fixture under `tests/install/bridges/__snapshots__/`.
|
|
17
|
+
*/
|
|
18
|
+
import { buildAugmentBridge } from './augment.js';
|
|
19
|
+
import { buildClaudeBridge } from './claude.js';
|
|
20
|
+
import { buildClineBridge } from './cline.js';
|
|
21
|
+
import { buildCopilotBridge } from './copilot.js';
|
|
22
|
+
import { buildCursorBridge } from './cursor.js';
|
|
23
|
+
import { buildGeminiBridge } from './gemini.js';
|
|
24
|
+
import { buildAiderBridge, buildClaudeDesktopBridge, buildCodexBridge, buildContinueBridge, buildJetbrainsBridge, buildKilocodeBridge, buildKiroBridge, buildRoocodeBridge, buildZedBridge, } from './markers.js';
|
|
25
|
+
import { buildVscodeBridge } from './vscode.js';
|
|
26
|
+
import { buildWindsurfBridge } from './windsurf.js';
|
|
27
|
+
/**
|
|
28
|
+
* Stable tool ID → builder map. Order matches Python install dispatch.
|
|
29
|
+
*
|
|
30
|
+
* Using a tuple list (not a plain object) keeps iteration order
|
|
31
|
+
* deterministic across runtimes and survives accidental key reordering
|
|
32
|
+
* by tooling.
|
|
33
|
+
*/
|
|
34
|
+
export const BRIDGE_REGISTRY = [
|
|
35
|
+
// Substrate / plugin enablement.
|
|
36
|
+
['vscode', buildVscodeBridge],
|
|
37
|
+
['augment', buildAugmentBridge],
|
|
38
|
+
// Hook dispatchers (JSON).
|
|
39
|
+
['claude', buildClaudeBridge],
|
|
40
|
+
['cursor', buildCursorBridge],
|
|
41
|
+
['windsurf', buildWindsurfBridge],
|
|
42
|
+
['gemini', buildGeminiBridge],
|
|
43
|
+
// Multi-script.
|
|
44
|
+
['cline', buildClineBridge],
|
|
45
|
+
// Plugin registration.
|
|
46
|
+
['copilot', buildCopilotBridge],
|
|
47
|
+
// Informational markers.
|
|
48
|
+
['roocode', buildRoocodeBridge],
|
|
49
|
+
['claude-desktop', buildClaudeDesktopBridge],
|
|
50
|
+
['aider', buildAiderBridge],
|
|
51
|
+
['codex', buildCodexBridge],
|
|
52
|
+
['continue', buildContinueBridge],
|
|
53
|
+
['kilocode', buildKilocodeBridge],
|
|
54
|
+
['zed', buildZedBridge],
|
|
55
|
+
['jetbrains', buildJetbrainsBridge],
|
|
56
|
+
['kiro', buildKiroBridge],
|
|
57
|
+
];
|
|
58
|
+
/** Set of every registered tool ID (cached for fast membership tests). */
|
|
59
|
+
export const KNOWN_TOOL_IDS = new Set(BRIDGE_REGISTRY.map(([id]) => id));
|
|
60
|
+
/**
|
|
61
|
+
* Generate the full list of bridge outputs for a project.
|
|
62
|
+
*
|
|
63
|
+
* @param ctx Project root + package type.
|
|
64
|
+
* @param enabledIds Tool IDs to include. Unknown IDs are silently
|
|
65
|
+
* ignored — the detect/plan layer is the gatekeeper
|
|
66
|
+
* for enable/disable decisions, not the registry.
|
|
67
|
+
* @returns Flat list of outputs in registry order. Cline (and
|
|
68
|
+
* any future multi-output builder) contributes
|
|
69
|
+
* multiple entries; all others contribute one.
|
|
70
|
+
*/
|
|
71
|
+
export function generateProjectBridges(ctx, enabledIds) {
|
|
72
|
+
const enabled = enabledIds instanceof Set ? enabledIds : new Set(enabledIds);
|
|
73
|
+
const out = [];
|
|
74
|
+
for (const [toolId, builder] of BRIDGE_REGISTRY) {
|
|
75
|
+
if (!enabled.has(toolId))
|
|
76
|
+
continue;
|
|
77
|
+
const result = builder(ctx);
|
|
78
|
+
if (Array.isArray(result)) {
|
|
79
|
+
out.push(...result);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
out.push(result);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
export { dispatchCommand, } from './types.js';
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/install/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACH,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,cAAc,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoD;IAC5E,iCAAiC;IACjC,CAAC,QAAQ,EAAU,iBAAiB,CAAC;IACrC,CAAC,SAAS,EAAS,kBAAkB,CAAC;IACtC,2BAA2B;IAC3B,CAAC,QAAQ,EAAU,iBAAiB,CAAC;IACrC,CAAC,QAAQ,EAAU,iBAAiB,CAAC;IACrC,CAAC,UAAU,EAAQ,mBAAmB,CAAC;IACvC,CAAC,QAAQ,EAAU,iBAAiB,CAAC;IACrC,gBAAgB;IAChB,CAAC,OAAO,EAAW,gBAAgB,CAAC;IACpC,uBAAuB;IACvB,CAAC,SAAS,EAAS,kBAAkB,CAAC;IACtC,yBAAyB;IACzB,CAAC,SAAS,EAAS,kBAAkB,CAAC;IACtC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IAC5C,CAAC,OAAO,EAAW,gBAAgB,CAAC;IACpC,CAAC,OAAO,EAAW,gBAAgB,CAAC;IACpC,CAAC,UAAU,EAAQ,mBAAmB,CAAC;IACvC,CAAC,UAAU,EAAQ,mBAAmB,CAAC;IACvC,CAAC,KAAK,EAAa,cAAc,CAAC;IAClC,CAAC,WAAW,EAAO,oBAAoB,CAAC;IACxC,CAAC,MAAM,EAAY,eAAe,CAAC;CACtC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CACtD,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CACpC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAClC,GAAkB,EAClB,UAAuD;IAEvD,MAAM,OAAO,GAAG,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CAAC,MAAsB,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAEH,eAAe,GAIlB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marker content — verbatim payload for every marker-style bridge.
|
|
3
|
+
*
|
|
4
|
+
* Mirror of the `*_MARKER` string constants in
|
|
5
|
+
* `scripts/install.py` (lines 1561–1896). Kept in a separate module so
|
|
6
|
+
* snapshot tests can pin copy without dragging the builder closures in.
|
|
7
|
+
*/
|
|
8
|
+
export const ROOCODE_MARKER = `# Agent Config bridge
|
|
9
|
+
|
|
10
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
11
|
+
|
|
12
|
+
Roo Code reads \`.roo/rules/*.md\` as system-level instructions. The
|
|
13
|
+
canonical rule and skill source lives under \`.augment/\` (Augment
|
|
14
|
+
portability mirror — see \`AGENTS.md\` for orientation).
|
|
15
|
+
|
|
16
|
+
## How to use
|
|
17
|
+
|
|
18
|
+
- These rules load automatically on every Roo Code session — no
|
|
19
|
+
manual action required.
|
|
20
|
+
- Switch Roo Code modes (Architect / Code / Ask / Debug / Custom)
|
|
21
|
+
via the mode switcher to invoke different cognition profiles;
|
|
22
|
+
every mode still sees these rules.
|
|
23
|
+
- Slash commands and skills live under \`.augment/commands/\` and
|
|
24
|
+
\`.augment/skills/\`. Roo Code does not register them natively —
|
|
25
|
+
invoke them by name in chat (e.g. *"run the create-pr command"*).
|
|
26
|
+
|
|
27
|
+
See \`docs/setup/per-ide/roocode.md\` for the full activation guide.
|
|
28
|
+
|
|
29
|
+
Run \`./agent-config --help\` for available commands.
|
|
30
|
+
`;
|
|
31
|
+
export const CLAUDE_DESKTOP_MARKER = `# Agent Config bridge — Claude Desktop
|
|
32
|
+
|
|
33
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
34
|
+
|
|
35
|
+
Claude Desktop is a **global-scope** tool — it reads config from
|
|
36
|
+
\`~/Library/Application Support/Claude/\` (macOS) and does not
|
|
37
|
+
auto-discover project files. This marker is informational only.
|
|
38
|
+
|
|
39
|
+
To wire Claude Desktop to this project's rules, run:
|
|
40
|
+
\`npx @event4u/agent-config init --ai claude-desktop --global\`
|
|
41
|
+
|
|
42
|
+
Canonical rule and skill source: \`.augment/\` (see \`AGENTS.md\`).
|
|
43
|
+
`;
|
|
44
|
+
export const AIDER_MARKER = `# Agent Config bridge — Aider
|
|
45
|
+
|
|
46
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
47
|
+
|
|
48
|
+
Aider does not auto-discover this file. To activate it, add the
|
|
49
|
+
following to \`.aider.conf.yml\` (create if missing):
|
|
50
|
+
|
|
51
|
+
\`\`\`yaml
|
|
52
|
+
read:
|
|
53
|
+
- .aider/agent-config.md
|
|
54
|
+
\`\`\`
|
|
55
|
+
|
|
56
|
+
Or pass \`--read .aider/agent-config.md\` on the command line.
|
|
57
|
+
|
|
58
|
+
Canonical rule and skill source: \`.augment/\` (see \`AGENTS.md\`).
|
|
59
|
+
`;
|
|
60
|
+
export const CODEX_MARKER = `# Agent Config bridge — Codex CLI
|
|
61
|
+
|
|
62
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
63
|
+
|
|
64
|
+
Codex CLI auto-discovers \`AGENTS.md\` at the project root — that file
|
|
65
|
+
is the canonical entry point. This marker is informational and tells
|
|
66
|
+
developers where the rules and skills live.
|
|
67
|
+
|
|
68
|
+
Canonical rule and skill source: \`.augment/\` (see project \`AGENTS.md\`).
|
|
69
|
+
`;
|
|
70
|
+
export const CONTINUE_MARKER = `# Agent Config bridge — Continue.dev
|
|
71
|
+
|
|
72
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
73
|
+
|
|
74
|
+
Continue.dev auto-discovers \`.continue/rules/*.md\` as system-level
|
|
75
|
+
rules per session. The canonical rule and skill source lives under
|
|
76
|
+
\`.augment/\` (Augment portability mirror — see \`AGENTS.md\` for
|
|
77
|
+
orientation).
|
|
78
|
+
`;
|
|
79
|
+
export const KILOCODE_MARKER = `# Agent Config bridge — Kilo Code
|
|
80
|
+
|
|
81
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
82
|
+
|
|
83
|
+
Kilo Code auto-discovers \`.kilocode/rules/*.md\` as system-level rules
|
|
84
|
+
per session. The canonical rule and skill source lives under
|
|
85
|
+
\`.augment/\` (Augment portability mirror — see \`AGENTS.md\` for
|
|
86
|
+
orientation).
|
|
87
|
+
|
|
88
|
+
## How to use
|
|
89
|
+
|
|
90
|
+
- These rules load automatically on every Kilo Code session — no
|
|
91
|
+
manual action required.
|
|
92
|
+
- Switch Kilo Code modes (Architect / Code / Ask / Debug /
|
|
93
|
+
Orchestrator) via the mode switcher to invoke different
|
|
94
|
+
cognition profiles; every mode still sees these rules.
|
|
95
|
+
- Slash commands and skills live under \`.augment/commands/\` and
|
|
96
|
+
\`.augment/skills/\`. Kilo Code does not register them natively —
|
|
97
|
+
invoke them by name in chat (e.g. *"run the create-pr command"*).
|
|
98
|
+
|
|
99
|
+
See \`docs/setup/per-ide/kilocode.md\` for the full activation guide.
|
|
100
|
+
`;
|
|
101
|
+
export const ZED_MARKER = `# Agent Config bridge — Zed
|
|
102
|
+
|
|
103
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
104
|
+
|
|
105
|
+
Zed reads \`.rules\` at the project root as system-level instructions —
|
|
106
|
+
that file is the canonical entry point. This marker is informational
|
|
107
|
+
and tells developers where the rules and skills live.
|
|
108
|
+
|
|
109
|
+
To activate agent-config under Zed, point Zed's \`.rules\` at the
|
|
110
|
+
canonical source (or symlink it):
|
|
111
|
+
|
|
112
|
+
\`\`\`
|
|
113
|
+
# Append to .rules at project root
|
|
114
|
+
@.augment/AGENTS.md
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
Canonical rule and skill source: \`.augment/\` (see \`AGENTS.md\`).
|
|
118
|
+
`;
|
|
119
|
+
export const JETBRAINS_MARKER = `# Agent Config bridge — JetBrains AI Assistant
|
|
120
|
+
|
|
121
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
122
|
+
|
|
123
|
+
JetBrains AI Assistant reads custom prompts and guidelines from
|
|
124
|
+
project-level config (\`.idea/\`) and user-scope settings. This marker
|
|
125
|
+
is informational — to wire agent-config into JetBrains AI, point the
|
|
126
|
+
assistant's custom-prompts path at \`.augment/\` or copy the relevant
|
|
127
|
+
rules into your JetBrains profile.
|
|
128
|
+
|
|
129
|
+
Canonical rule and skill source: \`.augment/\` (see \`AGENTS.md\`).
|
|
130
|
+
`;
|
|
131
|
+
export const KIRO_MARKER = `# Agent Config bridge — Kiro
|
|
132
|
+
|
|
133
|
+
This file marks the project as an \`event4u/agent-config\` consumer.
|
|
134
|
+
|
|
135
|
+
Kiro auto-discovers \`.kiro/steering/*.md\` as steering documents per
|
|
136
|
+
session. The canonical rule and skill source lives under \`.augment/\`
|
|
137
|
+
(Augment portability mirror — see \`AGENTS.md\` for orientation).
|
|
138
|
+
|
|
139
|
+
## How to use
|
|
140
|
+
|
|
141
|
+
- Steering documents load automatically on every Kiro session — no
|
|
142
|
+
manual action required.
|
|
143
|
+
- For structured, plan-first work, use Kiro's **Spec** workflow
|
|
144
|
+
(the agent produces a spec → tasks → implementation under your
|
|
145
|
+
review). For free-form work, use **Vibe**. Both honor these
|
|
146
|
+
steering documents.
|
|
147
|
+
- Slash commands and skills live under \`.augment/commands/\` and
|
|
148
|
+
\`.augment/skills/\`. Kiro does not register them natively —
|
|
149
|
+
invoke them by name in chat (e.g. *"run the create-pr command"*).
|
|
150
|
+
|
|
151
|
+
See \`docs/setup/per-ide/kiro.md\` for the full activation guide.
|
|
152
|
+
`;
|
|
153
|
+
//# sourceMappingURL=marker-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marker-content.js","sourceRoot":"","sources":["../../../src/install/bridges/marker-content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB7B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;CAYpC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;CAe3B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;CAS3B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;CAQ9B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB9B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;CAiBzB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAW/B,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB1B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marker bridges — informational `.md` files for AI tools without a
|
|
3
|
+
* programmatic hook surface (or with one we deliberately do not touch).
|
|
4
|
+
*
|
|
5
|
+
* Each builder drops a single UTF-8 marker pointing developers at the
|
|
6
|
+
* canonical rule source under `.augment/`. Markers are static — no
|
|
7
|
+
* dispatcher wiring, no JSON merge. Content lives next to the builder
|
|
8
|
+
* so snapshot tests pin both shape and copy verbatim.
|
|
9
|
+
*
|
|
10
|
+
* Mirrors `scripts/install.py:ensure_{roocode,claude_desktop,aider,
|
|
11
|
+
* codex,continue,kilocode,zed,jetbrains,kiro}_bridge` (lines 1555–1913).
|
|
12
|
+
*/
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { AIDER_MARKER, CLAUDE_DESKTOP_MARKER, CODEX_MARKER, CONTINUE_MARKER, JETBRAINS_MARKER, KILOCODE_MARKER, KIRO_MARKER, ROOCODE_MARKER, ZED_MARKER, } from './marker-content.js';
|
|
15
|
+
function marker(toolId, relPath, content) {
|
|
16
|
+
return (ctx) => ({
|
|
17
|
+
kind: 'marker',
|
|
18
|
+
toolId,
|
|
19
|
+
target: join(ctx.projectRoot, ...relPath),
|
|
20
|
+
content,
|
|
21
|
+
label: relPath.join('/'),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/** `.roo/rules/agent-config.md` — Roo Code marker. */
|
|
25
|
+
export const buildRoocodeBridge = marker('roocode', ['.roo', 'rules', 'agent-config.md'], ROOCODE_MARKER);
|
|
26
|
+
/** `.claude-desktop/agent-config.md` — Claude Desktop informational marker. */
|
|
27
|
+
export const buildClaudeDesktopBridge = marker('claude-desktop', ['.claude-desktop', 'agent-config.md'], CLAUDE_DESKTOP_MARKER);
|
|
28
|
+
/** `.aider/agent-config.md` — Aider marker (no `.aider.conf.yml` mutation). */
|
|
29
|
+
export const buildAiderBridge = marker('aider', ['.aider', 'agent-config.md'], AIDER_MARKER);
|
|
30
|
+
/** `.codex/agent-config.md` — OpenAI Codex CLI marker (AGENTS.md is canonical). */
|
|
31
|
+
export const buildCodexBridge = marker('codex', ['.codex', 'agent-config.md'], CODEX_MARKER);
|
|
32
|
+
/** `.continue/rules/agent-config.md` — Continue.dev marker. */
|
|
33
|
+
export const buildContinueBridge = marker('continue', ['.continue', 'rules', 'agent-config.md'], CONTINUE_MARKER);
|
|
34
|
+
/** `.kilocode/rules/agent-config.md` — Kilo Code marker. */
|
|
35
|
+
export const buildKilocodeBridge = marker('kilocode', ['.kilocode', 'rules', 'agent-config.md'], KILOCODE_MARKER);
|
|
36
|
+
/** `.zed/agent-config.md` — Zed informational marker. */
|
|
37
|
+
export const buildZedBridge = marker('zed', ['.zed', 'agent-config.md'], ZED_MARKER);
|
|
38
|
+
/** `.jetbrains/agent-config.md` — JetBrains AI informational marker. */
|
|
39
|
+
export const buildJetbrainsBridge = marker('jetbrains', ['.jetbrains', 'agent-config.md'], JETBRAINS_MARKER);
|
|
40
|
+
/** `.kiro/steering/agent-config.md` — Kiro marker. */
|
|
41
|
+
export const buildKiroBridge = marker('kiro', ['.kiro', 'steering', 'agent-config.md'], KIRO_MARKER);
|
|
42
|
+
//# sourceMappingURL=markers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markers.js","sourceRoot":"","sources":["../../../src/install/bridges/markers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EACH,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,UAAU,GACb,MAAM,qBAAqB,CAAC;AAE7B,SAAS,MAAM,CACX,MAAc,EACd,OAA8B,EAC9B,OAAe;IAEf,OAAO,CAAC,GAAG,EAAsB,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC;QACzC,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;KAC3B,CAAC,CAAC;AACP,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CACpC,SAAS,EACT,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,EACpC,cAAc,CACjB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAC1C,gBAAgB,EAChB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EACtC,qBAAqB,CACxB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAClC,OAAO,EACP,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAC7B,YAAY,CACf,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAClC,OAAO,EACP,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAC7B,YAAY,CACf,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CACrC,UAAU,EACV,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,EACzC,eAAe,CAClB,CAAC;AAEF,4DAA4D;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CACrC,UAAU,EACV,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,EACzC,eAAe,CAClB,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAChC,KAAK,EACL,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC3B,UAAU,CACb,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CACtC,WAAW,EACX,CAAC,YAAY,EAAE,iBAAiB,CAAC,EACjC,gBAAgB,CACnB,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CACjC,MAAM,EACN,CAAC,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,EACxC,WAAW,CACd,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge builder contract — Phase A6.
|
|
3
|
+
*
|
|
4
|
+
* Each AI tool (Claude Code, Cursor, Cline, Windsurf, Copilot, …) gets
|
|
5
|
+
* one builder function that takes a {@link BridgeContext} and returns a
|
|
6
|
+
* {@link BridgeOutput}. Output is **declarative** — the apply layer
|
|
7
|
+
* decides between byte-merge (`mergeJsonContent`) and overwrite based
|
|
8
|
+
* on the {@link BridgeOutput.kind} discriminator.
|
|
9
|
+
*
|
|
10
|
+
* Pure functions:
|
|
11
|
+
* - No filesystem reads inside builders.
|
|
12
|
+
* - No string interpolation against env-vars or `Date.now()` — the
|
|
13
|
+
* snapshot tests rely on deterministic output.
|
|
14
|
+
* - Path resolution uses `bridges/paths.ts` helpers, not `path.join`
|
|
15
|
+
* scattered across bridges.
|
|
16
|
+
*
|
|
17
|
+
* Mirrors `scripts/install.py:749-1913` (the `# --- Bridge generators ---`
|
|
18
|
+
* block). Side effects from the Python `merge_json_file` / `write_file`
|
|
19
|
+
* calls move into the apply layer (Phase A4 + A5).
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Shape of the `./agent-config dispatch:hook` invocation embedded in
|
|
23
|
+
* every hook-dispatcher bridge.
|
|
24
|
+
*
|
|
25
|
+
* Single source of truth so the snapshot tests can assert the command
|
|
26
|
+
* string contract without re-implementing the formatter per bridge.
|
|
27
|
+
*/
|
|
28
|
+
export function dispatchCommand(platform, acEvent, native) {
|
|
29
|
+
return `./agent-config dispatch:hook --platform ${platform} --event ${acEvent} --native-event ${native}`;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/install/bridges/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA+EH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAgB,EAAE,MAAc;IAC9E,OAAO,2CAA2C,QAAQ,YAAY,OAAO,mBAAmB,MAAM,EAAE,CAAC;AAC7G,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VSCode bridge — `.vscode/settings.json` plugin location wiring.
|
|
3
|
+
*
|
|
4
|
+
* Substrate bridge — declares the chat plugin location based on the
|
|
5
|
+
* detected package type. NPM consumers resolve through node_modules;
|
|
6
|
+
* other ecosystems use the bundled `./plugin/agent-config` directory.
|
|
7
|
+
*
|
|
8
|
+
* Mirror of `scripts/install.py:ensure_vscode_bridge` (lines 876–885).
|
|
9
|
+
*/
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
const PLUGIN_PATHS = {
|
|
12
|
+
npm: './node_modules/@event4u/agent-config/plugin/agent-config',
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_PLUGIN_PATH = './plugin/agent-config';
|
|
15
|
+
/** Builder for the VSCode project-scope bridge. */
|
|
16
|
+
export const buildVscodeBridge = (ctx) => {
|
|
17
|
+
const pluginPath = PLUGIN_PATHS[ctx.packageType] ?? DEFAULT_PLUGIN_PATH;
|
|
18
|
+
return {
|
|
19
|
+
kind: 'json',
|
|
20
|
+
toolId: 'vscode',
|
|
21
|
+
target: join(ctx.projectRoot, '.vscode', 'settings.json'),
|
|
22
|
+
payload: { 'chat.pluginLocations': { [pluginPath]: true } },
|
|
23
|
+
label: '.vscode/settings.json',
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=vscode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../src/install/bridges/vscode.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,YAAY,GAAqC;IACnD,GAAG,EAAE,0DAA0D;CAClE,CAAC;AAEF,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAEpD,mDAAmD;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAkB,CAAC,GAAG,EAAoB,EAAE;IACtE,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,mBAAmB,CAAC;IACxE,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC;QACzD,OAAO,EAAE,EAAE,sBAAsB,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;QAC3D,KAAK,EAAE,uBAAuB;KACjC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windsurf bridge — `.windsurf/hooks.json` project-scope hooks.
|
|
3
|
+
*
|
|
4
|
+
* Cascade fires project hooks with the workspace as cwd, so no
|
|
5
|
+
* trampoline is needed. `show_output: false` keeps post hooks silent
|
|
6
|
+
* (per Windsurf docs); concerns stream their own output via
|
|
7
|
+
* `agents/runtime/state/.dispatcher/`.
|
|
8
|
+
*
|
|
9
|
+
* Mirror of `scripts/install.py:ensure_windsurf_bridge` (lines 1331–1356).
|
|
10
|
+
*/
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { dispatchCommand, } from './types.js';
|
|
13
|
+
export const WINDSURF_BINDINGS = [
|
|
14
|
+
['session_start', 'post_setup_worktree'],
|
|
15
|
+
['user_prompt_submit', 'pre_user_prompt'],
|
|
16
|
+
['stop', 'post_cascade_response'],
|
|
17
|
+
];
|
|
18
|
+
/** Builder for the Windsurf project-scope bridge. */
|
|
19
|
+
export const buildWindsurfBridge = (ctx) => {
|
|
20
|
+
const hooks = {};
|
|
21
|
+
for (const [acEvent, native] of WINDSURF_BINDINGS) {
|
|
22
|
+
(hooks[native] ??= []).push({
|
|
23
|
+
command: dispatchCommand('windsurf', acEvent, native),
|
|
24
|
+
show_output: false,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
kind: 'json',
|
|
29
|
+
toolId: 'windsurf',
|
|
30
|
+
target: join(ctx.projectRoot, '.windsurf', 'hooks.json'),
|
|
31
|
+
payload: { hooks },
|
|
32
|
+
label: '.windsurf/hooks.json',
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=windsurf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../../src/install/bridges/windsurf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAGH,eAAe,GAElB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,iBAAiB,GAA8C;IACxE,CAAC,eAAe,EAAO,qBAAqB,CAAC;IAC7C,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;IACzC,CAAC,MAAM,EAAgB,uBAAuB,CAAC;CAClD,CAAC;AAEF,qDAAqD;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAkB,CAAC,GAAG,EAAoB,EAAE;IACxE,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAChD,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;YACxB,OAAO,EAAE,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC;YACrD,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;IACP,CAAC;IACD,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC;QACxD,OAAO,EAAE,EAAE,KAAK,EAAE;QAClB,KAAK,EAAE,sBAAsB;KAChC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conflict resolution — Phase A5 (simplified, three modes).
|
|
3
|
+
*
|
|
4
|
+
* Three decisions only, replacing the legacy `prompt → write / skip /
|
|
5
|
+
* abort` triple from `scripts/install.py:_resolve_file_conflict`:
|
|
6
|
+
*
|
|
7
|
+
* - `write` — target either does not exist OR policy authorises overwrite.
|
|
8
|
+
* - `skip` — target exists, known path, not forced: leave it alone.
|
|
9
|
+
* - `surface` — foreign collision: defer to the wizard's conflict screen
|
|
10
|
+
* (Phase B3). Headless callers translate `surface` to `skip`
|
|
11
|
+
* unless `policy.force` is true.
|
|
12
|
+
*
|
|
13
|
+
* JSON-aware deep-merge stays: callers that detect a `.json` target with
|
|
14
|
+
* matching `knownPointers` route through {@link mergeJsonContent} instead
|
|
15
|
+
* of byte-equality.
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync } from 'node:fs';
|
|
18
|
+
import { sha256File } from './plan.js';
|
|
19
|
+
/**
|
|
20
|
+
* Decide what to do with a single planned target.
|
|
21
|
+
*
|
|
22
|
+
* Decision matrix (mirrors the Python legacy with the 3-option prompt
|
|
23
|
+
* collapsed into `surface`):
|
|
24
|
+
*
|
|
25
|
+
* | Exists? | Idempotent? | Known? | Force? | → Outcome |
|
|
26
|
+
* |---------|-------------|--------|--------|------------|
|
|
27
|
+
* | no | — | — | — | `write` |
|
|
28
|
+
* | yes | yes | — | — | `skip` |
|
|
29
|
+
* | yes | no | yes | no | `skip` |
|
|
30
|
+
* | yes | no | yes | yes | `write` |
|
|
31
|
+
* | yes | no | no | yes | `write` |
|
|
32
|
+
* | yes | no | no | no | `surface` |
|
|
33
|
+
*
|
|
34
|
+
* Headless callers (B1 CLI) collapse `surface` to `skip` automatically
|
|
35
|
+
* because there is no UI to defer to; the apply layer records the entry
|
|
36
|
+
* under {@link ApplyResult.conflicts} so the wizard can pick it up next.
|
|
37
|
+
*/
|
|
38
|
+
export function resolveFileConflict(inputs) {
|
|
39
|
+
const { targetPath, idempotent, exists, policy } = inputs;
|
|
40
|
+
if (!exists)
|
|
41
|
+
return 'write';
|
|
42
|
+
if (idempotent)
|
|
43
|
+
return 'skip';
|
|
44
|
+
const isKnown = policy.knownPaths.has(targetPath);
|
|
45
|
+
if (isKnown) {
|
|
46
|
+
return policy.force ? 'write' : 'skip';
|
|
47
|
+
}
|
|
48
|
+
if (policy.force)
|
|
49
|
+
return 'write';
|
|
50
|
+
return 'surface';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Recursive object merge — overlay wins, nested dicts merged, arrays replaced.
|
|
54
|
+
*
|
|
55
|
+
* Mirrors `scripts/install.py:deep_merge`. Arrays do **not** concatenate;
|
|
56
|
+
* Claude / Cursor / Cline hook configs rely on whole-array replacement to
|
|
57
|
+
* stay idempotent across re-runs.
|
|
58
|
+
*
|
|
59
|
+
* Returns a fresh object — both inputs remain untouched.
|
|
60
|
+
*/
|
|
61
|
+
export function deepMerge(base, overlay) {
|
|
62
|
+
const out = { ...base };
|
|
63
|
+
for (const [key, value] of Object.entries(overlay)) {
|
|
64
|
+
const prev = out[key];
|
|
65
|
+
if (isPlainObject(prev) && isPlainObject(value)) {
|
|
66
|
+
out[key] = deepMerge(prev, value);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
out[key] = cloneValue(value);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Merge `overlay` into `existing` and return the canonical 4-space JSON.
|
|
76
|
+
*
|
|
77
|
+
* Format matches `write_json_file` in the Python installer (4-space indent,
|
|
78
|
+
* trailing newline, no ASCII-escape) so the apply layer can compare bytes
|
|
79
|
+
* to detect idempotent merges and skip the write.
|
|
80
|
+
*/
|
|
81
|
+
export function mergeJsonContent(existing, overlay) {
|
|
82
|
+
const merged = deepMerge(existing, overlay);
|
|
83
|
+
return `${JSON.stringify(merged, null, 4)}\n`;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parse JSON bytes leniently — invalid / non-object payloads collapse to `{}`.
|
|
87
|
+
*
|
|
88
|
+
* Matches `read_json_file` in the legacy script: corrupt JSON is treated
|
|
89
|
+
* as an empty doc rather than a hard failure, so the merge step always
|
|
90
|
+
* produces a well-formed output even when an upstream tool wrote a
|
|
91
|
+
* truncated config.
|
|
92
|
+
*/
|
|
93
|
+
export function parseJsonLenient(content) {
|
|
94
|
+
try {
|
|
95
|
+
const parsed = JSON.parse(content);
|
|
96
|
+
if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
97
|
+
return parsed;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
/* fall through — treat as empty */
|
|
102
|
+
}
|
|
103
|
+
return {};
|
|
104
|
+
}
|
|
105
|
+
/** Heuristic for routing a {@link FileEntry} through JSON merge. */
|
|
106
|
+
export function isJsonTarget(entry) {
|
|
107
|
+
return entry.kind === 'deployed' && entry.path.endsWith('.json');
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Threshold at which the wizard switches the conflict screen from
|
|
111
|
+
* single-pick to batch-resolution mode (council Finding #19).
|
|
112
|
+
*
|
|
113
|
+
* Below the threshold the user picks a resolution per row; at or above
|
|
114
|
+
* it the screen renders a summary table + global CTAs to dodge the
|
|
115
|
+
* 50-click stale-tree problem.
|
|
116
|
+
*/
|
|
117
|
+
export const CONFLICT_BATCH_THRESHOLD = 5;
|
|
118
|
+
/**
|
|
119
|
+
* Walk an {@link InstallPlan} and return one {@link ConflictEntry} per
|
|
120
|
+
* planned target the policy would `surface` to the UI.
|
|
121
|
+
*
|
|
122
|
+
* Pure-ish — reads from the filesystem only to compute idempotency
|
|
123
|
+
* (`existsSync` + `sha256File`). Skips bridges (`sha256 === null`) since
|
|
124
|
+
* bridge writers own a separate idempotency model. Skips entries whose
|
|
125
|
+
* `path` is in `policy.knownPaths`, and skips entries that are
|
|
126
|
+
* byte-equal to the planned content. Returns an empty array when
|
|
127
|
+
* `policy.force` is true — overwrite mode silences the screen.
|
|
128
|
+
*/
|
|
129
|
+
export function computeConflicts(plan) {
|
|
130
|
+
if (plan.policy.force)
|
|
131
|
+
return [];
|
|
132
|
+
const out = [];
|
|
133
|
+
for (const entries of Object.values(plan.filesByTool)) {
|
|
134
|
+
for (const entry of entries) {
|
|
135
|
+
if (entry.kind === 'bridge')
|
|
136
|
+
continue;
|
|
137
|
+
if (entry.sha256 === null)
|
|
138
|
+
continue;
|
|
139
|
+
if (!existsSync(entry.path))
|
|
140
|
+
continue;
|
|
141
|
+
if (plan.policy.knownPaths.has(entry.path))
|
|
142
|
+
continue;
|
|
143
|
+
const onDisk = sha256File(entry.path);
|
|
144
|
+
if (onDisk === entry.sha256)
|
|
145
|
+
continue;
|
|
146
|
+
out.push({
|
|
147
|
+
path: entry.path,
|
|
148
|
+
kind: entry.kind,
|
|
149
|
+
plannedSha256: entry.sha256,
|
|
150
|
+
existingSha256: onDisk,
|
|
151
|
+
mergeable: isJsonTarget(entry),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return out;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Expand a batch choice into a per-path {@link ConflictResolution} map.
|
|
159
|
+
*
|
|
160
|
+
* The wizard sends either `resolutions` directly (single-pick mode) or
|
|
161
|
+
* a `batchChoice` (≥ 5 conflicts) that the server fans out across every
|
|
162
|
+
* surfaced entry. `merge-json` maps non-JSON entries to `skip` since
|
|
163
|
+
* deep-merge is JSON-only — the council picked skip over overwrite so a
|
|
164
|
+
* single non-JSON file in a batch never silently overwrites.
|
|
165
|
+
*/
|
|
166
|
+
export function expandBatchChoice(conflicts, choice) {
|
|
167
|
+
const out = {};
|
|
168
|
+
for (const c of conflicts) {
|
|
169
|
+
if (choice === 'skip-all') {
|
|
170
|
+
out[c.path] = 'skip';
|
|
171
|
+
}
|
|
172
|
+
else if (choice === 'overwrite-all') {
|
|
173
|
+
out[c.path] = 'overwrite';
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
out[c.path] = c.mergeable ? 'merge' : 'skip';
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return out;
|
|
180
|
+
}
|
|
181
|
+
function isPlainObject(v) {
|
|
182
|
+
return v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
183
|
+
}
|
|
184
|
+
function cloneValue(v) {
|
|
185
|
+
if (Array.isArray(v)) {
|
|
186
|
+
return v.map(cloneValue);
|
|
187
|
+
}
|
|
188
|
+
if (isPlainObject(v)) {
|
|
189
|
+
const out = {};
|
|
190
|
+
for (const [k, val] of Object.entries(v))
|
|
191
|
+
out[k] = cloneValue(val);
|
|
192
|
+
return out;
|
|
193
|
+
}
|
|
194
|
+
return v;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=conflict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict.js","sourceRoot":"","sources":["../../src/install/conflict.ts"],"names":[],"mappings":"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"}
|