@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
package/scripts/cost_summary.py
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"""Emit `cost-summary/v1` JSON per `docs/contracts/cost-summary-schema.md`.
|
|
3
3
|
|
|
4
4
|
Reads `agents/cost-tracking/sessions.jsonl` (or `--input`), aggregates by
|
|
5
|
-
session, conversation, and model. Honors the
|
|
6
|
-
contract (delta = 0 while suspended; see `
|
|
5
|
+
session, conversation, and model. Honors the telegraph suspended-multiplier
|
|
6
|
+
contract (delta = 0 while suspended; see `telegraph-telemetry.md`).
|
|
7
7
|
"""
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
import argparse, json, sys
|
|
@@ -36,12 +36,12 @@ def _load(path: Path) -> list[dict]:
|
|
|
36
36
|
def _delta(row: dict) -> int:
|
|
37
37
|
if not MULTIPLIER_ACTIVE:
|
|
38
38
|
return 0
|
|
39
|
-
return int(row.get("
|
|
39
|
+
return int(row.get("telegraph_delta_tokens") or 0)
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def _zero_kv() -> dict:
|
|
43
43
|
return {"sessions": 0, "total_cost_usd": 0.0, "input_tokens": 0,
|
|
44
|
-
"output_tokens": 0, "
|
|
44
|
+
"output_tokens": 0, "telegraph_delta_tokens": 0}
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
def _zero_model() -> dict:
|
|
@@ -66,14 +66,14 @@ def aggregate(rows: list[dict]) -> dict:
|
|
|
66
66
|
bucket["total_cost_usd"] += cost
|
|
67
67
|
bucket["input_tokens"] += itok
|
|
68
68
|
bucket["output_tokens"] += otok
|
|
69
|
-
bucket["
|
|
69
|
+
bucket["telegraph_delta_tokens"] += delta
|
|
70
70
|
m = by_model[model]
|
|
71
71
|
m["sessions"] += 1
|
|
72
72
|
m["total_cost_usd"] += cost
|
|
73
73
|
m["input_tokens"] += itok
|
|
74
74
|
m["output_tokens"] += otok
|
|
75
|
-
totals["
|
|
76
|
-
totals["
|
|
75
|
+
totals["telegraph_multiplier_version"] = MULTIPLIER_VERSION
|
|
76
|
+
totals["telegraph_multiplier_active"] = MULTIPLIER_ACTIVE
|
|
77
77
|
return {
|
|
78
78
|
"schema_version": SCHEMA,
|
|
79
79
|
"generated_at": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
set -euo pipefail
|
|
11
11
|
|
|
12
12
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
13
|
-
SKILL="$REPO_ROOT/.agent-src.
|
|
13
|
+
SKILL="$REPO_ROOT/.agent-src.uncondensed/skills/token-optimizer/SKILL.md"
|
|
14
14
|
|
|
15
15
|
if [[ ! -f "$SKILL" ]]; then
|
|
16
16
|
echo "ERROR: $SKILL not found" >&2
|
|
@@ -9,7 +9,7 @@ import sys
|
|
|
9
9
|
from collections import Counter
|
|
10
10
|
|
|
11
11
|
ROOT = pathlib.Path(__file__).resolve().parents[1]
|
|
12
|
-
SRC = ROOT / ".agent-src.
|
|
12
|
+
SRC = ROOT / ".agent-src.uncondensed"
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def _frontmatter(path: pathlib.Path) -> dict[str, str]:
|
|
@@ -56,10 +56,10 @@ def main() -> int:
|
|
|
56
56
|
out.append("## Counts by category\n")
|
|
57
57
|
out.append("| Category | Path | Count |")
|
|
58
58
|
out.append("|---|---|---|")
|
|
59
|
-
out.append(f"| Skills | `.agent-src.
|
|
60
|
-
out.append(f"| Rules | `.agent-src.
|
|
61
|
-
out.append(f"| Commands | `.agent-src.
|
|
62
|
-
out.append(f"| Templates | `.agent-src.
|
|
59
|
+
out.append(f"| Skills | `.agent-src.uncondensed/skills/*/SKILL.md` | {len(skills)} |")
|
|
60
|
+
out.append(f"| Rules | `.agent-src.uncondensed/rules/**/*.md` | {len(rules)} |")
|
|
61
|
+
out.append(f"| Commands | `.agent-src.uncondensed/commands/**/*.md` | {len(commands)} |")
|
|
62
|
+
out.append(f"| Templates | `.agent-src.uncondensed/templates/**/*` | {len(templates)} |")
|
|
63
63
|
out.append("")
|
|
64
64
|
|
|
65
65
|
out.append("## Distinct `domain:` values (skills)\n")
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""Generate `agents/index.md` (internal) and `docs/catalog.md` (public).
|
|
3
3
|
|
|
4
|
-
Scans `.agent-src.
|
|
4
|
+
Scans `.agent-src.uncondensed/{skills,rules,commands}/` plus `docs/guidelines/`
|
|
5
5
|
and renders two artefact tables — one for maintainers, one for consumers.
|
|
6
6
|
|
|
7
7
|
Both files are sync-checked in CI via `--check`; drift = build break.
|
|
@@ -22,10 +22,10 @@ ROOT = Path(__file__).resolve().parent.parent
|
|
|
22
22
|
sys.path.insert(0, str(ROOT / "scripts"))
|
|
23
23
|
from _lib.agent_src import artefact_roots # noqa: E402
|
|
24
24
|
|
|
25
|
-
# Legacy single-root anchor — kept as fallback for pure-
|
|
25
|
+
# Legacy single-root anchor — kept as fallback for pure-condensed
|
|
26
26
|
# consumer projections. Multi-root discovery uses artefact_roots() so
|
|
27
27
|
# generate_index works across packages/* per ADR-017.
|
|
28
|
-
SRC = ROOT / ".agent-src.
|
|
28
|
+
SRC = ROOT / ".agent-src.uncondensed"
|
|
29
29
|
GUIDELINES = ROOT / "docs" / "guidelines"
|
|
30
30
|
INDEX_PATH = ROOT / "agents" / "index.md"
|
|
31
31
|
CATALOG_PATH = ROOT / "docs" / "catalog.md"
|
|
@@ -161,9 +161,9 @@ def _collect_guidelines() -> list[Entry]:
|
|
|
161
161
|
|
|
162
162
|
|
|
163
163
|
# Path rewriter for the public catalog: link to the shipped surface
|
|
164
|
-
# (`.agent-src/`) instead of the source-of-truth (`.agent-src.
|
|
164
|
+
# (`.agent-src/`) instead of the source-of-truth (`.agent-src.uncondensed/`),
|
|
165
165
|
# which is excluded from `package.json#files` and `composer.json` archives.
|
|
166
|
-
# Post-ADR-017 the source-of-truth lives at packages/*/.agent-src.
|
|
166
|
+
# Post-ADR-017 the source-of-truth lives at packages/*/.agent-src.uncondensed/,
|
|
167
167
|
# so we strip whichever prefix matches and pin to the flat .agent-src/ output.
|
|
168
168
|
def _to_shipped_path(path: str) -> str:
|
|
169
169
|
from _lib.agent_src import strip_source_prefix
|
|
@@ -195,7 +195,7 @@ def _render_index(skills, rules, commands, guidelines) -> str:
|
|
|
195
195
|
"# Agent-Config Internal Index",
|
|
196
196
|
"",
|
|
197
197
|
f"Maintainer-facing index of all **{total} artefacts** in this package.",
|
|
198
|
-
"Auto-generated from `.agent-src.
|
|
198
|
+
"Auto-generated from `.agent-src.uncondensed/` and `docs/guidelines/`.",
|
|
199
199
|
"",
|
|
200
200
|
"> **Regenerate:** `python3 scripts/generate_index.py`",
|
|
201
201
|
"> **Drift check:** `python3 scripts/generate_index.py --check` (runs in `task ci`)",
|
|
@@ -6,7 +6,7 @@ Produces:
|
|
|
6
6
|
* docs/contracts/file-ownership-matrix.json (machine, internal-locked)
|
|
7
7
|
* agents/settings/contexts/structural/file-ownership-matrix.md (human-readable)
|
|
8
8
|
|
|
9
|
-
Walks `.agent-src.
|
|
9
|
+
Walks `.agent-src.uncondensed/{rules,skills,commands,contexts,personas}/`,
|
|
10
10
|
parses frontmatter for `load_context:` / `load_context_eager:`, scans
|
|
11
11
|
markdown bodies for inline links to `.md` files inside the scanned roots,
|
|
12
12
|
and emits READ_ONLY edges plus depth-2 transitive closure of load_context
|
|
@@ -39,10 +39,10 @@ sys.path.insert(0, str(ROOT / "scripts"))
|
|
|
39
39
|
from _lib.agent_src import artefact_roots, resolve_logical, strip_source_prefix # noqa: E402
|
|
40
40
|
|
|
41
41
|
# Canonical anchor used in the committed matrix. Paths are always
|
|
42
|
-
# emitted as ".agent-src.
|
|
42
|
+
# emitted as ".agent-src.uncondensed/<sub>/<...>" regardless of which
|
|
43
43
|
# physical root (legacy or packages/*) contains the file, so the matrix
|
|
44
44
|
# stays stable across the monorepo migration.
|
|
45
|
-
CANONICAL_SRC_PREFIX = ".agent-src.
|
|
45
|
+
CANONICAL_SRC_PREFIX = ".agent-src.uncondensed"
|
|
46
46
|
|
|
47
47
|
SCAN_DIRS = ("rules", "skills", "commands", "contexts", "personas")
|
|
48
48
|
|
|
@@ -76,7 +76,7 @@ def _rel(p: Path) -> str:
|
|
|
76
76
|
|
|
77
77
|
def _kind_for(rel: str) -> str:
|
|
78
78
|
parts = rel.split("/")
|
|
79
|
-
if len(parts) >= 3 and parts[0] == ".agent-src.
|
|
79
|
+
if len(parts) >= 3 and parts[0] == ".agent-src.uncondensed":
|
|
80
80
|
return parts[1].rstrip("s") if parts[1] != "personas" else "persona"
|
|
81
81
|
return "unknown"
|
|
82
82
|
|
|
@@ -98,7 +98,7 @@ def _parse_frontmatter(p: Path) -> dict:
|
|
|
98
98
|
def _collect_files(root: Path | None = None) -> list[tuple[Path, str]]:
|
|
99
99
|
"""Walk every artefact root and yield ``(physical_path, canonical_rel)``.
|
|
100
100
|
|
|
101
|
-
``canonical_rel`` is always anchored at ``.agent-src.
|
|
101
|
+
``canonical_rel`` is always anchored at ``.agent-src.uncondensed/`` so
|
|
102
102
|
the matrix is byte-identical pre- and post-monorepo-move. Duplicates
|
|
103
103
|
across roots resolve to the first hit (legacy first, then packages
|
|
104
104
|
alphabetically) — matches the priority in ``artefact_roots()``.
|
|
@@ -212,17 +212,17 @@ def build_matrix(root: Path | None = None) -> tuple[dict[str, FileEntry], list[E
|
|
|
212
212
|
def _resolve_link(source_rel: str, source_phys: Path, href: str) -> str | None:
|
|
213
213
|
"""Resolve a markdown link href to a canonical scanned-root path, or None.
|
|
214
214
|
|
|
215
|
-
``source_rel`` is the canonical (``.agent-src.
|
|
215
|
+
``source_rel`` is the canonical (``.agent-src.uncondensed/...``)
|
|
216
216
|
identity of the source file. Relative hrefs are resolved against
|
|
217
217
|
the source's *logical* directory, then looked up across every
|
|
218
218
|
artefact root via :func:`resolve_logical`. This keeps the matrix
|
|
219
219
|
stable when source and target live in different physical packages.
|
|
220
220
|
|
|
221
221
|
Repo-rooted hrefs (``agents/...``, ``packages/...``, or those
|
|
222
|
-
starting with ``.agent-src.
|
|
222
|
+
starting with ``.agent-src.uncondensed/``) are resolved against
|
|
223
223
|
the repo root and normalised through :func:`strip_source_prefix`.
|
|
224
224
|
"""
|
|
225
|
-
if href.startswith(".agent-src.
|
|
225
|
+
if href.startswith(".agent-src.uncondensed/") or href.startswith("agents/") \
|
|
226
226
|
or href.startswith("packages/"):
|
|
227
227
|
cand = (ROOT / href).resolve()
|
|
228
228
|
if not cand.exists():
|
|
@@ -267,7 +267,7 @@ def _to_json(files: dict[str, FileEntry], edges: list[Edge]) -> dict:
|
|
|
267
267
|
return {
|
|
268
268
|
"version": 1,
|
|
269
269
|
"generated_by": "scripts/generate_ownership_matrix.py",
|
|
270
|
-
"source_of_truth": ".agent-src.
|
|
270
|
+
"source_of_truth": ".agent-src.uncondensed/",
|
|
271
271
|
"files": {
|
|
272
272
|
rel: {
|
|
273
273
|
"kind": e.kind,
|
|
@@ -342,7 +342,7 @@ def main(argv: Iterable[str] | None = None) -> int:
|
|
|
342
342
|
args = ap.parse_args(list(argv) if argv is not None else None)
|
|
343
343
|
|
|
344
344
|
if not artefact_roots():
|
|
345
|
-
print("❌ no artefact roots found (legacy or packages/*/.agent-src.
|
|
345
|
+
print("❌ no artefact roots found (legacy or packages/*/.agent-src.uncondensed/)",
|
|
346
346
|
file=sys.stderr)
|
|
347
347
|
return 3
|
|
348
348
|
|
|
@@ -70,7 +70,7 @@ def _package_version() -> str:
|
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
def _collect_artefacts(pkg_dir: Path) -> list[dict[str, Any]]:
|
|
73
|
-
src_root = pkg_dir / ".agent-src.
|
|
73
|
+
src_root = pkg_dir / ".agent-src.uncondensed"
|
|
74
74
|
if not src_root.is_dir():
|
|
75
75
|
return []
|
|
76
76
|
items: list[dict[str, Any]] = []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Ghostwriter fixture allowlist
|
|
2
2
|
#
|
|
3
3
|
# One file stem per line (without the .md extension).
|
|
4
|
-
# Every file under .agent-src.
|
|
4
|
+
# Every file under .agent-src.uncondensed/ghostwriter/ whose stem is
|
|
5
5
|
# NOT on this list will fail `task lint-ghostwriter-source`.
|
|
6
6
|
#
|
|
7
7
|
# Adding a new fixture requires:
|
package/scripts/install
CHANGED
|
@@ -274,8 +274,8 @@ fi
|
|
|
274
274
|
# AGENT_CONFIG_ALLOW_SELF_INSTALL=1.
|
|
275
275
|
if ! $GLOBAL && [[ "${AGENT_CONFIG_ALLOW_SELF_INSTALL:-0}" != "1" ]]; then
|
|
276
276
|
self_marker=""
|
|
277
|
-
if [[ -d "$TARGET_DIR/.agent-src.
|
|
278
|
-
self_marker=".agent-src.
|
|
277
|
+
if [[ -d "$TARGET_DIR/.agent-src.uncondensed" ]]; then
|
|
278
|
+
self_marker=".agent-src.uncondensed/"
|
|
279
279
|
elif [[ -f "$TARGET_DIR/package.json" ]] && \
|
|
280
280
|
grep -qE '"name"[[:space:]]*:[[:space:]]*"@event4u/agent-config"' "$TARGET_DIR/package.json" 2>/dev/null; then
|
|
281
281
|
self_marker='package.json::name === "@event4u/agent-config"'
|
|
@@ -285,7 +285,7 @@ if ! $GLOBAL && [[ "${AGENT_CONFIG_ALLOW_SELF_INSTALL:-0}" != "1" ]]; then
|
|
|
285
285
|
echo " Target: $TARGET_DIR" >&2
|
|
286
286
|
echo " Detected: $self_marker" >&2
|
|
287
287
|
echo " Run \`task sync\` to regenerate .agent-src/ + .augment/ from" >&2
|
|
288
|
-
echo " .agent-src.
|
|
288
|
+
echo " .agent-src.uncondensed/ instead. To force this anyway, set" >&2
|
|
289
289
|
echo " AGENT_CONFIG_ALLOW_SELF_INSTALL=1." >&2
|
|
290
290
|
exit 2
|
|
291
291
|
fi
|
package/scripts/install-hooks.sh
CHANGED
|
@@ -12,7 +12,7 @@ mkdir -p "$HOOKS_DIR"
|
|
|
12
12
|
|
|
13
13
|
cat > "$HOOKS_DIR/pre-push" << 'EOF'
|
|
14
14
|
#!/usr/bin/env bash
|
|
15
|
-
# Pre-push hook: verify .agent-src/ is in sync with .agent-src.
|
|
15
|
+
# Pre-push hook: verify .agent-src/ is in sync with .agent-src.uncondensed/
|
|
16
16
|
# and that the canonical command count matches README + getting-started docs.
|
|
17
17
|
#
|
|
18
18
|
# The command-count gate exists because three consecutive PRs landed
|
|
@@ -23,8 +23,8 @@ cat > "$HOOKS_DIR/pre-push" << 'EOF'
|
|
|
23
23
|
fail=0
|
|
24
24
|
|
|
25
25
|
echo "🔍 Checking .agent-src/ sync..."
|
|
26
|
-
if ! python3 scripts/
|
|
27
|
-
echo "❌ .agent-src/ is out of sync. Run 'task sync' and
|
|
26
|
+
if ! python3 scripts/condense.py --check; then
|
|
27
|
+
echo "❌ .agent-src/ is out of sync. Run 'task sync' and condense changed .md files, then commit."
|
|
28
28
|
fail=1
|
|
29
29
|
fi
|
|
30
30
|
|
|
@@ -134,8 +134,8 @@ write_chat_history_hook "post-rewrite" "git:post-rewrite"
|
|
|
134
134
|
|
|
135
135
|
# Auto-sync agent-tool projections after pull / branch-switch ---------------
|
|
136
136
|
#
|
|
137
|
-
# When `.agent-src.
|
|
138
|
-
#
|
|
137
|
+
# When `.agent-src.uncondensed/`, `.agent-src/`, `scripts/condense.py`,
|
|
138
|
+
# `agents/.agent-tools.yml`, or `Taskfile.yml` change between the previous and
|
|
139
139
|
# new HEAD, the developer's working tree has stale `.claude/`,
|
|
140
140
|
# `.augment/`, etc. projections until they remember to run `task sync`.
|
|
141
141
|
# These hooks bridge that gap: fast idempotent re-projection.
|
|
@@ -169,7 +169,7 @@ fi
|
|
|
169
169
|
|
|
170
170
|
if [ -n "\$prev" ] && [ -n "\$new" ] && [ "\$prev" != "\$new" ]; then
|
|
171
171
|
if git diff --name-only "\$prev" "\$new" 2>/dev/null | \\
|
|
172
|
-
grep -qE '^(\\.agent-src(\\.
|
|
172
|
+
grep -qE '^(\\.agent-src(\\.uncondensed)?/|scripts/condense\\.py|\\.agent-tools\\.yml|Taskfile\\.yml)'; then
|
|
173
173
|
if command -v task >/dev/null 2>&1; then
|
|
174
174
|
task sync >/dev/null 2>&1 || true
|
|
175
175
|
task generate-tools >/dev/null 2>&1 || true
|
package/scripts/install.py
CHANGED
|
@@ -2921,12 +2921,12 @@ def _detect_legacy_for_migration(project_root: Path) -> list[str]:
|
|
|
2921
2921
|
|
|
2922
2922
|
- ``AGENT_CONFIG_DEV_MODE=1`` is set (maintainer dogfood loop),
|
|
2923
2923
|
- the project root IS the agent-config source repo
|
|
2924
|
-
(``.agent-src.
|
|
2924
|
+
(``.agent-src.uncondensed/`` present),
|
|
2925
2925
|
- the bridge marker already exists (project is already global-only).
|
|
2926
2926
|
"""
|
|
2927
2927
|
if os.environ.get("AGENT_CONFIG_DEV_MODE") == "1":
|
|
2928
2928
|
return []
|
|
2929
|
-
if (project_root / ".agent-src.
|
|
2929
|
+
if (project_root / ".agent-src.uncondensed").is_dir():
|
|
2930
2930
|
return []
|
|
2931
2931
|
if (project_root / CONSUMER_BRIDGE_MARKER_RELPATH).is_file():
|
|
2932
2932
|
return []
|
|
@@ -3031,7 +3031,7 @@ def _write_consumer_bridge_marker(
|
|
|
3031
3031
|
- ``AGENT_CONFIG_DEV_MODE=1`` (maintainer dev installs never lay the
|
|
3032
3032
|
bridge into the source repo).
|
|
3033
3033
|
- The project root is the agent-config source repo itself
|
|
3034
|
-
(``.agent-src.
|
|
3034
|
+
(``.agent-src.uncondensed/`` present) — same rationale.
|
|
3035
3035
|
|
|
3036
3036
|
Atomic write: ``tempfile`` in the same dir + ``os.replace``. Same
|
|
3037
3037
|
pattern the lockfile uses (see ``scripts/_lib/installed_lock.py``).
|
|
@@ -3042,7 +3042,7 @@ def _write_consumer_bridge_marker(
|
|
|
3042
3042
|
env_map = env if env is not None else os.environ
|
|
3043
3043
|
if env_map.get("AGENT_CONFIG_DEV_MODE") == "1":
|
|
3044
3044
|
return None
|
|
3045
|
-
if (project_root / ".agent-src.
|
|
3045
|
+
if (project_root / ".agent-src.uncondensed").is_dir():
|
|
3046
3046
|
return None
|
|
3047
3047
|
|
|
3048
3048
|
paths_mod = _load_user_global_paths_module()
|
|
@@ -3112,7 +3112,7 @@ def _write_per_tool_project_anchors(
|
|
|
3112
3112
|
|
|
3113
3113
|
- Skipped under ``AGENT_CONFIG_DEV_MODE=1``.
|
|
3114
3114
|
- Skipped inside the agent-config source repo
|
|
3115
|
-
(``.agent-src.
|
|
3115
|
+
(``.agent-src.uncondensed/`` present).
|
|
3116
3116
|
- Skipped when the tool is not in ``tools``.
|
|
3117
3117
|
|
|
3118
3118
|
Atomic write per file (temp file + ``os.replace``); ``0o644``
|
|
@@ -3124,7 +3124,7 @@ def _write_per_tool_project_anchors(
|
|
|
3124
3124
|
env_map = env if env is not None else os.environ
|
|
3125
3125
|
if env_map.get("AGENT_CONFIG_DEV_MODE") == "1":
|
|
3126
3126
|
return []
|
|
3127
|
-
if (project_root / ".agent-src.
|
|
3127
|
+
if (project_root / ".agent-src.uncondensed").is_dir():
|
|
3128
3128
|
return []
|
|
3129
3129
|
|
|
3130
3130
|
paths_mod = _load_user_global_paths_module()
|
|
@@ -3548,12 +3548,12 @@ def install_global(
|
|
|
3548
3548
|
# (ADR-008 Phase 3.2). Outside a project (e.g. plain `~/`) there is no
|
|
3549
3549
|
# manifest to write and the global lockfile alone is the source of truth.
|
|
3550
3550
|
# Skipped inside the agent-config source repo (detected by
|
|
3551
|
-
# `.agent-src.
|
|
3551
|
+
# `.agent-src.uncondensed/`) — maintainers dogfood with their own
|
|
3552
3552
|
# `.agent-settings.yml` and the manifest would be untracked noise.
|
|
3553
3553
|
if (
|
|
3554
3554
|
project_root is not None
|
|
3555
3555
|
and (project_root / SETTINGS_FILE).exists()
|
|
3556
|
-
and not (project_root / ".agent-src.
|
|
3556
|
+
and not (project_root / ".agent-src.uncondensed").is_dir()
|
|
3557
3557
|
):
|
|
3558
3558
|
# Collect deployed/marker paths per tool so the manifest records
|
|
3559
3559
|
# the v2 ``files[]`` inventory (P1.4).
|
|
@@ -3571,7 +3571,7 @@ def install_global(
|
|
|
3571
3571
|
# ``agents/.event4u-bridge.yml`` lets per-tool adapters locate
|
|
3572
3572
|
# the global root from inside the repo. Skipped in maintainer
|
|
3573
3573
|
# dev mode and in the source repo (see contract § Writer
|
|
3574
|
-
# contract; the surrounding ``.agent-src.
|
|
3574
|
+
# contract; the surrounding ``.agent-src.uncondensed`` guard
|
|
3575
3575
|
# already covers the source-repo case, the dev-mode skip is
|
|
3576
3576
|
# enforced inside the writer).
|
|
3577
3577
|
marker_path = _write_consumer_bridge_marker(project_root, installed_version)
|
|
@@ -3794,7 +3794,7 @@ def parse_options(argv: list[str]) -> argparse.Namespace:
|
|
|
3794
3794
|
dest="apply_payload",
|
|
3795
3795
|
default=None,
|
|
3796
3796
|
help=(
|
|
3797
|
-
"path to a WizardApplyPayload JSON file (schemas/"
|
|
3797
|
+
"path to a WizardApplyPayload JSON file (internal/schemas/"
|
|
3798
3798
|
"wizard-apply-payload.schema.json). When supplied, install.py "
|
|
3799
3799
|
"reads the payload, validates schema_version, translates "
|
|
3800
3800
|
"tools/packs/settings into CLI equivalents, and dispatches "
|
|
@@ -4072,7 +4072,7 @@ _INTERACTIVE_STACKS: tuple[tuple[str, str], ...] = (
|
|
|
4072
4072
|
)
|
|
4073
4073
|
|
|
4074
4074
|
_INTERACTIVE_VERBOSITIES: tuple[tuple[str, str], ...] = (
|
|
4075
|
-
("quiet", "
|
|
4075
|
+
("quiet", "Telegraph / minimal output"),
|
|
4076
4076
|
("normal", "Default verbosity"),
|
|
4077
4077
|
("verbose", "Full intent announcements + play-by-play"),
|
|
4078
4078
|
)
|
|
@@ -4579,6 +4579,65 @@ def main(argv: list[str]) -> int:
|
|
|
4579
4579
|
_set_conflict_policy(None)
|
|
4580
4580
|
|
|
4581
4581
|
|
|
4582
|
+
def _propose_modules_config(project_root: Path, is_first_run: bool) -> None:
|
|
4583
|
+
"""Surface module-root candidates as numbered options on first install.
|
|
4584
|
+
|
|
4585
|
+
Phase B Step 2 of road-to-configurable-modules. Hooks into the
|
|
4586
|
+
project-install path: when the install is first-run, the terminal
|
|
4587
|
+
is a TTY, ``.agent-project-settings.yml`` exists without a populated
|
|
4588
|
+
``modules:`` block, and the detection helper finds at least one
|
|
4589
|
+
candidate, the installer prints the proposed block and asks the
|
|
4590
|
+
user to paste it into the team file. No automatic write — the
|
|
4591
|
+
layered-settings contract treats ``.agent-project-settings.yml``
|
|
4592
|
+
as user-curated.
|
|
4593
|
+
|
|
4594
|
+
Gates (any miss → silent no-op):
|
|
4595
|
+
|
|
4596
|
+
* ``is_first_run`` must be True — re-runs never re-prompt.
|
|
4597
|
+
* stdin + stdout must be TTYs — non-interactive installs (CI,
|
|
4598
|
+
wizard apply-payload, ``--quiet``) skip silently.
|
|
4599
|
+
* ``QUIET`` must be False.
|
|
4600
|
+
* The detection helper must surface at least one candidate.
|
|
4601
|
+
"""
|
|
4602
|
+
if not is_first_run or QUIET or not sys.stdin.isatty() or not sys.stdout.isatty():
|
|
4603
|
+
return
|
|
4604
|
+
try:
|
|
4605
|
+
from scripts._lib.module_detection import detect_module_roots
|
|
4606
|
+
except ImportError:
|
|
4607
|
+
return
|
|
4608
|
+
try:
|
|
4609
|
+
candidates = detect_module_roots(project_root)
|
|
4610
|
+
except OSError:
|
|
4611
|
+
return
|
|
4612
|
+
if not candidates:
|
|
4613
|
+
return
|
|
4614
|
+
print()
|
|
4615
|
+
info("Module-root candidates detected — propose `modules:` block")
|
|
4616
|
+
info(
|
|
4617
|
+
"Paste into .agent-project-settings.yml to enable module-aware "
|
|
4618
|
+
"skills (or skip; the block stays opt-in)."
|
|
4619
|
+
)
|
|
4620
|
+
print()
|
|
4621
|
+
print(" modules:")
|
|
4622
|
+
print(" enabled: true")
|
|
4623
|
+
print(
|
|
4624
|
+
" root_paths: [" + ", ".join(c.path for c in candidates) + "]"
|
|
4625
|
+
)
|
|
4626
|
+
primary_ns = next(
|
|
4627
|
+
(c.namespace_template_guess for c in candidates if c.namespace_template_guess),
|
|
4628
|
+
"",
|
|
4629
|
+
)
|
|
4630
|
+
if primary_ns:
|
|
4631
|
+
print(f" namespace_template: '{primary_ns}'")
|
|
4632
|
+
print(" agent_folder: agents")
|
|
4633
|
+
print(" skip_dirs: [.module-template, .example]")
|
|
4634
|
+
print()
|
|
4635
|
+
info(
|
|
4636
|
+
"Re-run anytime via `python3 scripts/propose_modules_config.py` "
|
|
4637
|
+
"(installed under <package>/scripts/)."
|
|
4638
|
+
)
|
|
4639
|
+
|
|
4640
|
+
|
|
4582
4641
|
def _main_project_install(
|
|
4583
4642
|
opts: argparse.Namespace,
|
|
4584
4643
|
project_root: Path,
|
|
@@ -4728,6 +4787,12 @@ def _main_project_install(
|
|
|
4728
4787
|
print(" Re-run complete. Walkthrough: https://github.com/event4u-app/agent-config/blob/main/docs/getting-started.md")
|
|
4729
4788
|
print()
|
|
4730
4789
|
|
|
4790
|
+
# Module-root proposal (road-to-configurable-modules Phase B Step 2).
|
|
4791
|
+
# First-run TTY installs surface detected `modules:` candidates so
|
|
4792
|
+
# the user can paste an opt-in block into .agent-project-settings.yml.
|
|
4793
|
+
# Silent no-op on re-runs, CI, --quiet, and wizard apply-payload runs.
|
|
4794
|
+
_propose_modules_config(project_root, is_first_run)
|
|
4795
|
+
|
|
4731
4796
|
# Wizard auto-launch (Phase 6 follow-up). Runs after the success
|
|
4732
4797
|
# banner so the user sees install completion even if the wizard
|
|
4733
4798
|
# boot times out. Gate was already evaluated at the top of main()
|