@event4u/agent-config 8.4.0 → 8.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +73 -0
- package/README.md +17 -5
- package/dist/agent-src/README.md +1 -1
- package/dist/agent-src/commands/{analyze-reference-repo.md → analyze/reference-repo.md} +3 -1
- package/dist/agent-src/commands/analyze.md +9 -6
- package/dist/agent-src/commands/{bug-fix.md → bug/fix.md} +3 -1
- package/dist/agent-src/commands/{bug-investigate.md → bug/investigate.md} +4 -2
- package/dist/agent-src/commands/bug.md +59 -0
- package/dist/agent-src/commands/{set-cost-profile.md → cost/profile.md} +9 -6
- package/dist/agent-src/commands/{cost-report.md → cost/report.md} +18 -17
- package/dist/agent-src/commands/cost.md +57 -0
- package/dist/agent-src/commands/evals/{review-changes.json → review.json} +12 -8
- package/dist/agent-src/commands/{quality-fix.md → fix/quality.md} +5 -2
- package/dist/agent-src/commands/fix.md +7 -4
- package/dist/agent-src/commands/optimize/project.md +250 -0
- package/dist/agent-src/commands/{optimize-prompt.md → optimize/prompt.md} +3 -2
- package/dist/agent-src/commands/optimize.md +17 -12
- package/dist/agent-src/commands/{package-reset.md → package/reset.md} +2 -0
- package/dist/agent-src/commands/{package-test.md → package/test.md} +3 -1
- package/dist/agent-src/commands/package.md +56 -0
- package/dist/agent-src/commands/{project-analyze.md → project/analyze.md} +10 -8
- package/dist/agent-src/commands/{project-health.md → project/health.md} +2 -0
- package/dist/agent-src/commands/project.md +60 -0
- package/dist/agent-src/commands/{review-changes.md → review/changes.md} +26 -24
- package/dist/agent-src/commands/{review-routing.md → review/routing.md} +21 -17
- package/dist/agent-src/commands/review.md +61 -0
- package/dist/agent-src/commands/security-audit-config.md +24 -23
- package/dist/agent-src/commands/{sync-agent-settings.md → sync/agent-settings.md} +11 -7
- package/dist/agent-src/commands/{sync-gitignore → sync/gitignore}/fix.md +36 -27
- package/dist/agent-src/commands/{sync-gitignore.md → sync/gitignore.md} +22 -21
- package/dist/agent-src/commands/sync.md +58 -0
- package/dist/agent-src/commands/{e2e-heal.md → tests/e2e-heal.md} +5 -2
- package/dist/agent-src/commands/{e2e-plan.md → tests/e2e-plan.md} +5 -2
- package/dist/agent-src/commands/tests.md +11 -5
- package/dist/agent-src/contexts/augment-infrastructure.md +3 -3
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/skills-and-commands.md +2 -2
- package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
- package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/templates/agent-settings.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
- package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
- package/dist/cli/commands/config.js +44 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/uiServe.js +1 -0
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/help.js +38 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/initRouting.js +16 -1
- package/dist/cli/initRouting.js.map +1 -1
- package/dist/cli/main.js +43 -37
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +45 -44
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +419 -210
- 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 +31 -25
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +30 -24
- package/dist/install/install.mjs +6064 -159
- package/dist/install/selectedTools.js +39 -10
- package/dist/install/selectedTools.js.map +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/server/app.js +15 -3
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/ping.js +16 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +42 -6
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/settingsChanges.js +55 -0
- package/dist/server/routes/settingsChanges.js.map +1 -0
- package/dist/server/routes/userMd.js +7 -2
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +76 -14
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/writeRoot.js +17 -0
- package/dist/server/writeRoot.js.map +1 -1
- package/dist/shared/settingsSurface.js +120 -0
- package/dist/shared/settingsSurface.js.map +1 -0
- package/dist/ui/assets/index-BPFMZWUs.css +1 -0
- package/dist/ui/assets/index-BiEZiZ31.js +40 -0
- package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
- package/dist/ui/index.html +15 -2
- package/docs/CLAIMS.md +20 -15
- package/docs/architecture.md +1 -1
- package/docs/catalog.md +37 -31
- package/docs/command-flows.md +22 -16
- package/docs/contracts/command-clusters.md +39 -9
- package/docs/contracts/file-ownership-matrix.json +21 -0
- package/docs/contracts/frontmatter-contract.md +1 -1
- package/docs/contracts/gui-wizard.md +16 -4
- package/docs/contracts/iron-law-overrides.txt +1 -0
- package/docs/contracts/rule-classification.md +2 -2
- package/docs/contracts/settings-api.md +58 -2
- package/docs/contracts/surface-matrix.md +5 -0
- package/docs/cookbook.md +7 -7
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
- package/docs/decisions/INDEX.md +2 -0
- package/docs/featured-commands.md +1 -1
- package/docs/featured-skills.md +4 -4
- package/docs/flows.md +2 -2
- package/docs/getting-started-by-role.md +1 -1
- package/docs/getting-started-laravel.md +1 -1
- package/docs/getting-started.md +6 -3
- package/docs/governance-advantage.md +1 -1
- package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
- package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
- package/docs/proof.md +11 -2
- package/package.json +6 -1
- package/src/agent-src/README.md +64 -0
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +497 -0
- package/src/agent-src/scripts/scan-seeder-violations.php +145 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +1087 -0
- package/src/agent-src/templates/AGENTS.md +34 -0
- package/src/agent-src/templates/scripts/README.md +195 -0
- package/src/agent-src/templates/scripts/check_memory.ts +662 -0
- package/src/agent-src/templates/scripts/check_memory_proposal.ts +370 -0
- package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +84 -0
- package/src/agent-src/templates/scripts/implement_ticket/__main__.ts +27 -0
- package/src/agent-src/templates/scripts/memory_hash.ts +355 -0
- package/src/agent-src/templates/scripts/memory_lookup.ts +1089 -0
- package/src/agent-src/templates/scripts/memory_report.ts +868 -0
- package/src/agent-src/templates/scripts/memory_signal.ts +444 -0
- package/src/agent-src/templates/scripts/memory_status.ts +215 -0
- package/src/agent-src/templates/scripts/ownership-map.example.yml +87 -0
- package/src/agent-src/templates/scripts/pr-risk-config.example.yml +76 -0
- package/src/agent-src/templates/scripts/pr_review_routing.ts +544 -0
- package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/boundary.ts +164 -0
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +479 -0
- package/src/agent-src/templates/scripts/telemetry/report_renderer.ts +394 -0
- package/src/agent-src/templates/scripts/telemetry/settings.ts +210 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +276 -0
- package/src/agent-src/templates/scripts/telemetry_report.ts +211 -0
- package/src/agent-src/templates/scripts/telemetry_status.ts +333 -0
- package/src/agent-src/templates/scripts/tier_usage_report.ts +619 -0
- package/src/agent-src/templates/scripts/work_engine/__main__.ts +14 -0
- package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +1261 -0
- package/src/agent-src/templates/scripts/work_engine/_lib/user_global_paths.ts +329 -0
- package/src/agent-src/templates/scripts/work_engine/cli.ts +206 -0
- package/src/agent-src/templates/scripts/work_engine/cli_args.ts +249 -0
- package/src/agent-src/templates/scripts/work_engine/delivery_state.ts +225 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/analyze.ts +125 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +189 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +94 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/memory.ts +193 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/plan.ts +267 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/refine.ts +518 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/report.ts +379 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +268 -0
- package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +258 -0
- package/src/agent-src/templates/scripts/work_engine/directives/index.ts +32 -0
- package/src/agent-src/templates/scripts/work_engine/directives/mixed/contract.ts +243 -0
- package/src/agent-src/templates/scripts/work_engine/directives/mixed/index.ts +108 -0
- package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +259 -0
- package/src/agent-src/templates/scripts/work_engine/directives/mixed/ui.ts +216 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/_passthrough.ts +40 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +241 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +216 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +506 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +325 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/index.ts +102 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +462 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +474 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +352 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.ts +33 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.ts +213 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/index.ts +111 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.ts +126 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/report.ts +112 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/test.ts +164 -0
- package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +515 -0
- package/src/agent-src/templates/scripts/work_engine/emitters.ts +119 -0
- package/src/agent-src/templates/scripts/work_engine/errors.ts +24 -0
- package/src/agent-src/templates/scripts/work_engine/hook_bootstrap.ts +104 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +189 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.ts +41 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.ts +89 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.ts +193 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +304 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.ts +110 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.ts +118 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/index.ts +17 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +161 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.ts +45 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/trace.ts +134 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/context.ts +94 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/events.ts +58 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/exceptions.ts +85 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/index.ts +27 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/registry.ts +66 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/runner.ts +90 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +260 -0
- package/src/agent-src/templates/scripts/work_engine/input_builders.ts +260 -0
- package/src/agent-src/templates/scripts/work_engine/intent/classify.ts +466 -0
- package/src/agent-src/templates/scripts/work_engine/migration/v0_to_v1.ts +531 -0
- package/src/agent-src/templates/scripts/work_engine/orchestration.ts +366 -0
- package/src/agent-src/templates/scripts/work_engine/persona_policy.ts +97 -0
- package/src/agent-src/templates/scripts/work_engine/resolvers/diff.ts +135 -0
- package/src/agent-src/templates/scripts/work_engine/resolvers/file.ts +175 -0
- package/src/agent-src/templates/scripts/work_engine/resolvers/prompt.ts +115 -0
- package/src/agent-src/templates/scripts/work_engine/scoring/confidence.ts +415 -0
- package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +466 -0
- package/src/agent-src/templates/scripts/work_engine/scoring/decision_trace.ts +298 -0
- package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +444 -0
- package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +252 -0
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +745 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +1151 -0
- package/src/agent-src/templates/scripts/work_engine/state_io.ts +413 -0
- package/src/config/agent-settings.template.yml +1 -1
- package/src/install/atomic.ts +111 -0
- package/src/install/conflict.ts +226 -0
- package/src/install/detect.ts +280 -0
- package/src/install/paths.ts +90 -0
- package/src/install/plan.ts +205 -0
- package/src/install/preflight.ts +210 -0
- package/src/install/selectedTools.ts +80 -0
- package/src/install/toolDetection.ts +120 -0
- package/src/install/txlog.ts +161 -0
- package/src/install/types.ts +175 -0
- package/src/install/wizard-plan.ts +216 -0
- package/src/scripts/_cli/cmd_converge.ts +38 -0
- package/src/scripts/_cli/cmd_doctor.ts +113 -2
- package/src/scripts/_cli/cmd_explain.ts +2 -2
- package/src/scripts/_cli/cmd_export.ts +3 -3
- package/src/scripts/_cli/cmd_fleet.ts +13 -1
- package/src/scripts/_cli/cmd_migrate.ts +3 -3
- package/src/scripts/_cli/cmd_prune.ts +2 -2
- package/src/scripts/_cli/cmd_refresh.ts +4 -4
- package/src/scripts/_cli/cmd_settings_check.ts +2 -2
- package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
- package/src/scripts/_cli/cmd_sync.ts +2 -2
- package/src/scripts/_cli/cmd_uninstall.ts +2 -2
- package/src/scripts/_cli/cmd_update.ts +8 -8
- package/src/scripts/_cli/cmd_upgrade.ts +4 -3
- package/src/scripts/_cli/cmd_validate.ts +3 -3
- package/src/scripts/_cli/cmd_versions.ts +2 -2
- package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
- package/src/scripts/_cli/explain_last/council.ts +2 -2
- package/src/scripts/_cli/explain_last/halt.ts +2 -2
- package/src/scripts/_cli/explain_last/index.ts +2 -2
- package/src/scripts/_cli/explain_last/inputs.ts +4 -4
- package/src/scripts/_cli/explain_last/memory.ts +2 -2
- package/src/scripts/_cli/explain_last/provider.ts +2 -2
- package/src/scripts/_cli/explain_last/render.ts +2 -2
- package/src/scripts/_cli/explain_last/route.ts +2 -2
- package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
- package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
- package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
- package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
- package/src/scripts/_dispatch.bash +20 -1
- package/src/scripts/_lib/agent_settings.ts +1 -1
- package/src/scripts/_lib/agent_src.ts +7 -7
- package/src/scripts/_lib/agents_overlay.ts +1 -1
- package/src/scripts/_lib/bench_ab_cache.ts +1 -1
- package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
- package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
- package/src/scripts/_lib/bench_cost.ts +1 -1
- package/src/scripts/_lib/bench_quality.ts +3 -3
- package/src/scripts/_lib/bench_report.ts +4 -4
- package/src/scripts/_lib/bench_telegraph.ts +1 -1
- package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
- package/src/scripts/_lib/changelog_eras.ts +1 -1
- package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
- package/src/scripts/_lib/cli_wrapper.ts +1 -1
- package/src/scripts/_lib/fs_atomic.ts +1 -1
- package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
- package/src/scripts/_lib/install_layout.ts +1 -1
- package/src/scripts/_lib/install_regenerator.ts +1 -1
- package/src/scripts/_lib/installed_lock.ts +1 -1
- package/src/scripts/_lib/installed_tools.ts +1 -1
- package/src/scripts/_lib/json_pointers.ts +1 -1
- package/src/scripts/_lib/knowledge_global.ts +1 -1
- package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/link_crypto.ts +4 -4
- package/src/scripts/_lib/linked_projects.ts +4 -4
- package/src/scripts/_lib/model_tier.ts +1 -1
- package/src/scripts/_lib/module_detection.ts +2 -2
- package/src/scripts/_lib/pin_resolver.ts +1 -1
- package/src/scripts/_lib/script_output.ts +1 -1
- package/src/scripts/_lib/security_lint.ts +1 -1
- package/src/scripts/_lib/surface_tiers.ts +1 -1
- package/src/scripts/_lib/text_similarity.ts +1 -1
- package/src/scripts/_lib/update_check.ts +2 -2
- package/src/scripts/_lib/user_global_paths.ts +1 -1
- package/src/scripts/_lib/value_ladder.ts +1 -1
- package/src/scripts/_lib/value_report.ts +1 -1
- package/src/scripts/_lib/zip_min.ts +2 -2
- package/src/scripts/adoption_report.ts +3 -3
- package/src/scripts/adoption_snapshot.ts +3 -3
- package/src/scripts/adoption_status.ts +2 -2
- package/src/scripts/adr/regenerate_index.ts +3 -3
- package/src/scripts/ai_council/_default_prices.ts +2 -3
- package/src/scripts/ai_council/advisors.ts +1 -1
- package/src/scripts/ai_council/airgap.ts +1 -1
- package/src/scripts/ai_council/budget_guard.ts +1 -1
- package/src/scripts/ai_council/bundler.ts +1 -1
- package/src/scripts/ai_council/cli_hints.ts +1 -1
- package/src/scripts/ai_council/clients.ts +5 -5
- package/src/scripts/ai_council/compile_corpus.ts +1 -1
- package/src/scripts/ai_council/confidence_gate.ts +1 -1
- package/src/scripts/ai_council/config.ts +1 -1
- package/src/scripts/ai_council/consensus.ts +1 -1
- package/src/scripts/ai_council/events_log.ts +1 -1
- package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
- package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
- package/src/scripts/ai_council/low_impact_intake.ts +1 -1
- package/src/scripts/ai_council/modes.ts +1 -1
- package/src/scripts/ai_council/orchestrator.ts +3 -3
- package/src/scripts/ai_council/pricing.ts +2 -2
- package/src/scripts/ai_council/probation_gate.ts +2 -2
- package/src/scripts/ai_council/project_context.ts +1 -1
- package/src/scripts/ai_council/prompts.ts +1 -1
- package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
- package/src/scripts/ai_council/session.ts +1 -1
- package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
- package/src/scripts/ai_council/solo_dispatch.ts +1 -1
- package/src/scripts/analysis_freshness.ts +2 -2
- package/src/scripts/annotate_discovery.ts +2 -2
- package/src/scripts/apply_modules_config.ts +2 -2
- package/src/scripts/audit_adr_coverage.ts +3 -3
- package/src/scripts/audit_auto_rules.ts +2 -2
- package/src/scripts/audit_cloud_compatibility.ts +3 -3
- package/src/scripts/audit_command_surface.ts +2 -2
- package/src/scripts/audit_initial_context.ts +7 -6
- package/src/scripts/audit_likelihood.ts +5 -5
- package/src/scripts/audit_mcp_tools.ts +3 -3
- package/src/scripts/audit_overlap.ts +2 -2
- package/src/scripts/audit_skill_descriptions.ts +2 -2
- package/src/scripts/audit_skill_overlap.ts +5 -5
- package/src/scripts/audit_user_type_axis.ts +4 -4
- package/src/scripts/backfill_model_tier.ts +1 -1
- package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
- package/src/scripts/bench_ab_clone.ts +2 -2
- package/src/scripts/bench_ab_diff.ts +3 -3
- package/src/scripts/bench_ab_integrity.ts +2 -2
- package/src/scripts/bench_ab_run.ts +4 -4
- package/src/scripts/bench_ab_task_runner.ts +1 -1
- package/src/scripts/bench_ab_tracka_run.ts +2 -2
- package/src/scripts/bench_ab_v2_run.ts +1 -1
- package/src/scripts/bench_ab_v2_stats.ts +2 -2
- package/src/scripts/bench_baseline_ready.ts +1 -1
- package/src/scripts/bench_condense_memory.ts +4 -4
- package/src/scripts/bench_drift_check.ts +3 -3
- package/src/scripts/bench_per_tool.ts +1 -1
- package/src/scripts/bench_rtk_savings.ts +4 -4
- package/src/scripts/bench_run.ts +4 -4
- package/src/scripts/bench_runner.ts +1 -1
- package/src/scripts/build_cloud_bundle.ts +3 -3
- package/src/scripts/build_discovery_manifest.ts +13 -15
- package/src/scripts/build_linear_digest.ts +2 -2
- package/src/scripts/build_mcp_registry_manifest.ts +3 -3
- package/src/scripts/build_proof.ts +6 -0
- package/src/scripts/build_rule_trigger_matrix.ts +2 -2
- package/src/scripts/capture_showcase_session.ts +3 -3
- package/src/scripts/chat_history.ts +1 -1
- package/src/scripts/check_always_budget.ts +1 -1
- package/src/scripts/check_artefact_checksums.ts +4 -4
- package/src/scripts/check_artefact_count_messaging.ts +197 -0
- package/src/scripts/check_augment_description_cap.ts +3 -3
- package/src/scripts/check_augmentignore.ts +1 -1
- package/src/scripts/check_beta_review_markers.ts +3 -3
- package/src/scripts/check_bite_sized_granularity.ts +1 -1
- package/src/scripts/check_cluster_patterns.ts +47 -3
- package/src/scripts/check_command_count_messaging.ts +2 -2
- package/src/scripts/check_condensation.ts +2 -2
- package/src/scripts/check_condensed_paths.ts +6 -6
- package/src/scripts/check_context_paths.ts +1 -1
- package/src/scripts/check_council_config_location.ts +3 -3
- package/src/scripts/check_council_layout.ts +2 -2
- package/src/scripts/check_council_references.ts +2 -2
- package/src/scripts/check_discovery_determinism.ts +3 -3
- package/src/scripts/check_gate_paths.ts +4 -4
- package/src/scripts/check_iron_law_prominence.ts +2 -2
- package/src/scripts/check_kernel_rule_bundle.ts +3 -3
- package/src/scripts/check_knowledge_cards.ts +4 -4
- package/src/scripts/check_knowledge_pages.ts +1 -1
- package/src/scripts/check_md_language.ts +3 -3
- package/src/scripts/check_memory.ts +3 -3
- package/src/scripts/check_memory_proposal.ts +2 -2
- package/src/scripts/check_module_management_neutral.ts +1 -1
- package/src/scripts/check_no_conflict_markers.ts +1 -1
- package/src/scripts/check_no_external_sources.ts +1 -1
- package/src/scripts/check_no_local_settings_committed.ts +2 -2
- package/src/scripts/check_no_new_legacy_path.ts +3 -3
- package/src/scripts/check_no_roadmap_refs.ts +3 -3
- package/src/scripts/check_one_off_location.ts +3 -3
- package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
- package/src/scripts/check_portability.ts +3 -3
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_public_catalog_links.ts +1 -1
- package/src/scripts/check_public_links.ts +2 -2
- package/src/scripts/check_references.ts +3 -3
- package/src/scripts/check_release_includes_discovery.ts +2 -2
- package/src/scripts/check_release_pr_shape.ts +2 -2
- package/src/scripts/check_release_published.ts +1 -1
- package/src/scripts/check_release_trunk_sync.ts +3 -3
- package/src/scripts/check_reply_consistency.ts +1 -1
- package/src/scripts/check_roadmap_trackable.ts +2 -2
- package/src/scripts/check_role_doc_links.ts +2 -2
- package/src/scripts/check_safety_floor_untouched.ts +3 -3
- package/src/scripts/check_skill_requires.ts +2 -2
- package/src/scripts/check_structural_breaking.ts +2 -2
- package/src/scripts/check_surface_tiers.ts +2 -2
- package/src/scripts/check_template_pin_drift.ts +1 -1
- package/src/scripts/check_test_coverage_diff.ts +2 -2
- package/src/scripts/check_token_optimizer_freshness.ts +3 -3
- package/src/scripts/check_trigger_evals.ts +2 -2
- package/src/scripts/check_update_banner.ts +1 -1
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/ci_summary.ts +3 -3
- package/src/scripts/ci_time_ratio.ts +1 -1
- package/src/scripts/command_suggester/cooldown.ts +1 -1
- package/src/scripts/command_suggester/index.ts +1 -1
- package/src/scripts/command_suggester/loader.ts +1 -1
- package/src/scripts/command_suggester/match.ts +1 -1
- package/src/scripts/command_suggester/rank.ts +1 -1
- package/src/scripts/command_suggester/render.ts +1 -1
- package/src/scripts/command_suggester/sanitize.ts +1 -1
- package/src/scripts/command_suggester/settings.ts +1 -1
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +4 -4
- package/src/scripts/condense.ts +3 -3
- package/src/scripts/condense_memory.ts +1 -1
- package/src/scripts/config/index.ts +1 -1
- package/src/scripts/config/packs.ts +1 -1
- package/src/scripts/config/presets.ts +1 -1
- package/src/scripts/config/profile_explain.ts +1 -1
- package/src/scripts/config/profiles.ts +1 -1
- package/src/scripts/config/session_profiles.ts +1 -1
- package/src/scripts/context_hygiene_hook.ts +2 -2
- package/src/scripts/cost_by_conversation.ts +1 -1
- package/src/scripts/cost_summary.ts +2 -2
- package/src/scripts/council_cli.ts +1 -1
- package/src/scripts/council_prune.ts +1 -1
- package/src/scripts/cross_repo_retrieve.ts +2 -2
- package/src/scripts/discovery_stats.ts +3 -3
- package/src/scripts/evidence_report.ts +4 -4
- package/src/scripts/extract_audit_patterns.ts +2 -2
- package/src/scripts/first_run_gate_hook.ts +1 -1
- package/src/scripts/gen_discovery_baseline.ts +2 -2
- package/src/scripts/generate_capabilities_index.ts +2 -2
- package/src/scripts/generate_capability_matrix.ts +2 -2
- package/src/scripts/generate_catalog.ts +2 -2
- package/src/scripts/generate_command_flows.ts +2 -2
- package/src/scripts/generate_cookbook.ts +1 -1
- package/src/scripts/generate_index.ts +3 -3
- package/src/scripts/generate_ownership_matrix.ts +2 -2
- package/src/scripts/generate_pack_manifests.ts +2 -2
- package/src/scripts/generate_role_experiences_catalog.ts +3 -3
- package/src/scripts/hooks/block_no_verify.ts +2 -2
- package/src/scripts/hooks/dispatch_hook.ts +2 -2
- package/src/scripts/hooks/dispatch_issues.ts +1 -1
- package/src/scripts/hooks/envelope.ts +1 -1
- package/src/scripts/hooks/replay_hook.ts +1 -1
- package/src/scripts/hooks/state_io.ts +1 -1
- package/src/scripts/hooks_doctor.ts +1 -1
- package/src/scripts/hooks_status.ts +1 -1
- package/src/scripts/injection_scan_hook.ts +1 -1
- package/src/scripts/install.ts +145 -3
- package/src/scripts/inventory_abstraction_budget.ts +5 -5
- package/src/scripts/inventory_frontmatter.ts +1 -1
- package/src/scripts/inventory_meta_layers.ts +1 -1
- package/src/scripts/iron_law_sha.ts +1 -1
- package/src/scripts/knowledge_global_cli.ts +3 -3
- package/src/scripts/linked_projects_list.ts +1 -1
- package/src/scripts/lint_agent_security.ts +4 -4
- package/src/scripts/lint_agent_skill_names.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +2 -2
- package/src/scripts/lint_agents_md.ts +3 -3
- package/src/scripts/lint_archived_skills.ts +2 -2
- package/src/scripts/lint_artefact_frontmatter.ts +2 -2
- package/src/scripts/lint_bench_ab.ts +2 -2
- package/src/scripts/lint_bench_corpus.ts +1 -1
- package/src/scripts/lint_command_flow_coverage.ts +1 -1
- package/src/scripts/lint_command_routing.ts +2 -2
- package/src/scripts/lint_command_tiers.ts +1 -1
- package/src/scripts/lint_command_verbs.ts +4 -4
- package/src/scripts/lint_commit_subjects.ts +2 -2
- package/src/scripts/lint_context_spine_usage.ts +3 -3
- package/src/scripts/lint_discovery_manifest.ts +4 -4
- package/src/scripts/lint_discovery_vocabulary.ts +2 -2
- package/src/scripts/lint_empty_roadmaps.ts +3 -3
- package/src/scripts/lint_eval_freshness.ts +2 -2
- package/src/scripts/lint_examples.ts +2 -2
- package/src/scripts/lint_explain_trace.ts +2 -2
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_flows.ts +5 -5
- package/src/scripts/lint_framework_leakage.ts +1 -1
- package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
- package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
- package/src/scripts/lint_ghostwriter_source.ts +3 -3
- package/src/scripts/lint_global_paths.ts +1 -1
- package/src/scripts/lint_handoffs.ts +1 -1
- package/src/scripts/lint_hidden_unicode.ts +1 -1
- package/src/scripts/lint_hook_concern_budget.ts +2 -2
- package/src/scripts/lint_hook_manifest.ts +2 -2
- package/src/scripts/lint_instruction_smuggling.ts +1 -1
- package/src/scripts/lint_load_context.ts +2 -2
- package/src/scripts/lint_marketplace.ts +1 -1
- package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
- package/src/scripts/lint_mcp_config_security.ts +1 -1
- package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
- package/src/scripts/lint_media_policy_linkage.ts +3 -3
- package/src/scripts/lint_missions.ts +3 -3
- package/src/scripts/lint_model_tier_coverage.ts +3 -3
- package/src/scripts/lint_namespace.ts +2 -2
- package/src/scripts/lint_namespace_collisions.ts +2 -2
- package/src/scripts/lint_new_skill_gate.ts +3 -3
- package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
- package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
- package/src/scripts/lint_one_off_age.ts +2 -2
- package/src/scripts/lint_orchestration_dsl.ts +3 -3
- package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
- package/src/scripts/lint_pack_boundaries.ts +2 -2
- package/src/scripts/lint_pack_dependencies.ts +2 -2
- package/src/scripts/lint_pack_first_win.ts +2 -2
- package/src/scripts/lint_persona_governance.ts +3 -3
- package/src/scripts/lint_positioning.ts +1 -1
- package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
- package/src/scripts/lint_readme_jargon.ts +2 -2
- package/src/scripts/lint_readme_size.ts +2 -2
- package/src/scripts/lint_regression.ts +3 -3
- package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
- package/src/scripts/lint_roadmap_complexity.ts +1 -1
- package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
- package/src/scripts/lint_role_experiences.ts +2 -2
- package/src/scripts/lint_rule_interactions.ts +1 -1
- package/src/scripts/lint_rule_tiers.ts +1 -1
- package/src/scripts/lint_showcase_sessions.ts +2 -2
- package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
- package/src/scripts/lint_skill_originality.ts +1 -1
- package/src/scripts/lint_skill_tools.ts +3 -3
- package/src/scripts/lint_ticket_buildable.ts +2 -2
- package/src/scripts/lint_topics_yaml.ts +3 -3
- package/src/scripts/lint_trust_coherence.ts +3 -3
- package/src/scripts/lint_value_dashboard.ts +3 -3
- package/src/scripts/lint_workflow_security.ts +3 -3
- package/src/scripts/lint_workspace_boundary.ts +2 -2
- package/src/scripts/mcp_parity_smoke.ts +1 -1
- package/src/scripts/mcp_render.ts +1 -1
- package/src/scripts/mcp_server/catalog.ts +1 -1
- package/src/scripts/mcp_server/index.ts +1 -1
- package/src/scripts/mcp_server/metadata.ts +1 -1
- package/src/scripts/mcp_server/prompts.ts +1 -1
- package/src/scripts/mcp_server/resources.ts +1 -1
- package/src/scripts/mcp_server/server.ts +1 -1
- package/src/scripts/mcp_server/telemetry.ts +1 -1
- package/src/scripts/mcp_server/tools.ts +1 -1
- package/src/scripts/mcp_telemetry_health.ts +1 -1
- package/src/scripts/mcp_telemetry_query.ts +3 -3
- package/src/scripts/mcp_telemetry_store.ts +3 -3
- package/src/scripts/measure_augment_budget.ts +2 -2
- package/src/scripts/measure_density.ts +2 -2
- package/src/scripts/measure_frugality_savings.ts +3 -3
- package/src/scripts/measure_markitdown_lift.ts +1 -1
- package/src/scripts/measure_patterns.ts +1 -1
- package/src/scripts/measure_projection_bytes.ts +1 -1
- package/src/scripts/measure_rule_budget.ts +1 -1
- package/src/scripts/measure_skill_reduction.ts +1 -1
- package/src/scripts/memory_hash.ts +1 -1
- package/src/scripts/memory_lookup.ts +6 -6
- package/src/scripts/memory_report.ts +1 -1
- package/src/scripts/memory_signal.ts +1 -1
- package/src/scripts/memory_status.ts +2 -2
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
- package/src/scripts/mine_session.ts +3 -3
- package/src/scripts/minimal_safe_diff_hook.ts +2 -2
- package/src/scripts/move_artefact.ts +3 -3
- package/src/scripts/new_skill.ts +3 -3
- package/src/scripts/onboarding_gate_hook.ts +2 -2
- package/src/scripts/pack_mcp_content.ts +1 -1
- package/src/scripts/parity/replay.ts +3 -2
- package/src/scripts/pattern_share.ts +2 -2
- package/src/scripts/plan_physical_move.ts +3 -3
- package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
- package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
- package/src/scripts/prediction-pool/score_ev.ts +2 -2
- package/src/scripts/prepack-check.mjs +108 -5
- package/src/scripts/print_required_checks.ts +2 -2
- package/src/scripts/probe_projection_fidelity.ts +2 -2
- package/src/scripts/probe_skill_registration.ts +2 -2
- package/src/scripts/profile_staleness_hook.ts +2 -2
- package/src/scripts/profile_use.ts +2 -2
- package/src/scripts/project_thin_rules.ts +3 -3
- package/src/scripts/propose_modules_config.ts +2 -2
- package/src/scripts/prototype_lint_contradictions.ts +2 -2
- package/src/scripts/prove_pack_extractable.ts +1 -1
- package/src/scripts/readme_linter.ts +4 -4
- package/src/scripts/redact_hook_capture.ts +2 -2
- package/src/scripts/refine_ticket_detect.ts +1 -1
- package/src/scripts/release.ts +30 -19
- package/src/scripts/render_benchmark_md.ts +2 -2
- package/src/scripts/render_value_md.ts +2 -2
- package/src/scripts/roadmap_progress_hook.ts +1 -1
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/run_skill_evals.ts +2 -2
- package/src/scripts/runtime_dispatcher.ts +1 -1
- package/src/scripts/runtime_handler.ts +1 -1
- package/src/scripts/runtime_registry.ts +3 -3
- package/src/scripts/score_skill_selection.ts +1 -1
- package/src/scripts/security_audit_config.ts +2 -2
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_discovery.ts +1 -1
- package/src/scripts/skill_linter.ts +8 -7
- package/src/scripts/skill_overlap.ts +2 -2
- package/src/scripts/skill_preview.ts +1 -1
- package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
- package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
- package/src/scripts/skill_tools/index.ts +1 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
- package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
- package/src/scripts/skill_trigger_eval.ts +2 -2
- package/src/scripts/skill_usage_collect.ts +2 -2
- package/src/scripts/skill_usage_report.ts +2 -2
- package/src/scripts/smoke_path_resolution.ts +2 -2
- package/src/scripts/smoke_quickstart.ts +4 -4
- package/src/scripts/snapshot_agent_outputs.ts +2 -2
- package/src/scripts/spotcheck_thin_root.ts +2 -2
- package/src/scripts/surface-tiers.yml +1 -0
- package/src/scripts/sync_agent_settings.ts +2 -2
- package/src/scripts/sync_github_metadata.ts +4 -4
- package/src/scripts/sync_gitignore.ts +3 -3
- package/src/scripts/sync_yaml_rt.ts +2 -2
- package/src/scripts/telegraph_stats.ts +1 -1
- package/src/scripts/tool_registry.ts +2 -2
- package/src/scripts/tools/adapter_errors.ts +1 -1
- package/src/scripts/tools/base_adapter.ts +1 -1
- package/src/scripts/tools/github_adapter.ts +1 -1
- package/src/scripts/tools/jira_adapter.ts +1 -1
- package/src/scripts/trigger_coverage.ts +2 -2
- package/src/scripts/update_counts.ts +68 -6
- package/src/scripts/update_prices.ts +3 -3
- package/src/scripts/validate_agent_settings.ts +3 -3
- package/src/scripts/validate_decision_engine.ts +2 -2
- package/src/scripts/validate_discovery_manifest.ts +3 -3
- package/src/scripts/validate_frontmatter.ts +5 -5
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/scripts/validate_safe_paths.ts +2 -2
- package/src/scripts/validate_telegraph_carveouts.ts +3 -3
- package/src/scripts/verify_before_complete_hook.ts +2 -2
- package/src/scripts/verify_physical_move.ts +2 -2
- package/src/scripts/wrapper_freshness_hook.ts +3 -3
- package/src/server/schemas/settings.ts +426 -0
- package/src/shared/settingsSurface.ts +184 -0
- package/src/shared/userMd/formAdapter.ts +86 -0
- package/src/shared/userMd/schema.ts +59 -0
- package/src/shared/userMd/utils.ts +91 -0
- package/dist/agent-src/commands/optimize-project.md +0 -243
- package/dist/ui/assets/index-BbWWuFrF.css +0 -1
- package/dist/ui/assets/index-UjcTG_9O.js +0 -40
- package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Validate-on-load linter for the first-class flow layer (`src/flows/*.yaml`).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_flows.py` (ADR-200, Phase 4 / Wave 4b
|
|
6
6
|
* — PORT). Mirrors the CLI contract EXACTLY — the `--quiet` flag (argparse,
|
|
7
7
|
* so `-h`/`--help` exit 0 with a usage line), the same two-check-per-file
|
|
8
8
|
* shape-vs-resolution split, byte-identical violation messages, the same
|
|
9
9
|
* stdout/stderr split (success on stdout, violations on stderr), exit codes
|
|
10
10
|
* (0 clean · 1 violations · 3 internal error), scan scope (`src/flows/*.yaml`
|
|
11
11
|
* minus `surface-map.yaml`), and ordering (sorted glob). snake_case kept.
|
|
12
|
-
*
|
|
12
|
+
* Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
13
13
|
*
|
|
14
14
|
* road-to-6.1.0 Step 8b (ADR-055). Two checks per flow file:
|
|
15
15
|
*
|
|
16
16
|
* 1. Shape — validates against `src/scripts/schemas/flow.schema.json`
|
|
17
|
-
* (Draft-07).
|
|
17
|
+
* (Draft-07). the retired Python implementation uses the `jsonschema` library; this
|
|
18
18
|
* twin hand-rolls a Draft-07 validator covering exactly the keyword set
|
|
19
19
|
* this schema uses (type, required, additionalProperties:false,
|
|
20
20
|
* properties, $ref, pattern, minLength, minItems, items) and reproduces
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* Plus the layer-level invariants: closed-set id == filename stem, and
|
|
29
29
|
* completeness (every closed-set flow has exactly one file).
|
|
30
30
|
*
|
|
31
|
-
*
|
|
31
|
+
* the retired Python implementation imports `jsonschema` and exits 3 with
|
|
32
32
|
* `lint_flows: jsonschema not installed` when it is absent. The TS twin has
|
|
33
33
|
* no such dependency, so that exit-3 path never fires — the schema check is
|
|
34
34
|
* always available, matching the installed-library case.
|
|
@@ -466,7 +466,7 @@ function _isFile(p: string): boolean {
|
|
|
466
466
|
|
|
467
467
|
function _rel(p: string): string {
|
|
468
468
|
// Path.relative_to(ROOT) raises ValueError when p is outside ROOT; the
|
|
469
|
-
//
|
|
469
|
+
// historical behaviour returns str(path) — keep the absolute path then.
|
|
470
470
|
const r = path.relative(ROOT, p);
|
|
471
471
|
if (r === '' || r.startsWith('..') || path.isAbsolute(r)) {
|
|
472
472
|
return p;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
// Lint generic skills/rules/commands for framework/language leakage.
|
|
3
3
|
//
|
|
4
|
-
// TypeScript
|
|
4
|
+
// TypeScript port of the retired Python src/scripts/lint_framework_leakage.py. Exits 1 on hit
|
|
5
5
|
// (CI-blocking). Enforces the framework-neutrality rule. Replicates the
|
|
6
6
|
// carve-out filename exemption, inventory exemption, framework-frontmatter
|
|
7
7
|
// exemption, the auto cross-stack ±10-line window heuristic, the allowlist
|
|
@@ -581,7 +581,7 @@
|
|
|
581
581
|
{
|
|
582
582
|
"file": "src/skills/code-review/SKILL.md",
|
|
583
583
|
"lines": [
|
|
584
|
-
|
|
584
|
+
222
|
|
585
585
|
],
|
|
586
586
|
"reason": "Cross-stack formatter enumeration (ECS, Prettier, Ruff, gofmt) — multi-ecosystem documentation"
|
|
587
587
|
},
|
|
@@ -618,9 +618,17 @@
|
|
|
618
618
|
{
|
|
619
619
|
"file": "src/skills/verify-completion-evidence/SKILL.md",
|
|
620
620
|
"lines": [
|
|
621
|
-
|
|
621
|
+
191
|
|
622
622
|
],
|
|
623
623
|
"reason": "Carve-out pointer to the quality-tools skill (the sanctioned one-line handoff shape from framework-neutrality-in-generic-skills)"
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"file": "src/skills/api-endpoint/SKILL.md",
|
|
627
|
+
"lines": [
|
|
628
|
+
52,
|
|
629
|
+
69
|
|
630
|
+
],
|
|
631
|
+
"reason": "Cross-stack validation primitive enumeration and pointer to laravel-api-endpoint carve-out"
|
|
624
632
|
}
|
|
625
633
|
]
|
|
626
634
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Fail when an artefact carries a frontmatter field equal to its schema default.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_frontmatter_boilerplate.py` (ADR-200,
|
|
6
6
|
* Phase 4 / Wave 4b). Mirrors the Python CLI contract exactly: `--quiet`,
|
|
7
7
|
* scan scope + ordering (skills / rules / commands / personas via
|
|
8
8
|
* `artefact_roots()`), finding messages, stdout/stderr split, exit codes
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* The frontmatter loader (`validate_frontmatter.apply_schema_defaults`) injects
|
|
12
12
|
* the default at read time, so omitting the field is always behaviour-preserving.
|
|
13
13
|
*
|
|
14
|
-
* NOTE (divergence candidate — DC-1): the Python
|
|
14
|
+
* NOTE (divergence candidate — DC-1): the retired Python implementation imports
|
|
15
15
|
* `_CATEGORIES`, `_iter`, `_plan_drops` from `migrate_frontmatter_defaults.py`,
|
|
16
16
|
* which has no `.ts` twin yet (out of this batch's scope). To keep TS-only
|
|
17
17
|
* dispatcher resolution working, those three helpers (and `_same`) are inlined
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint ghostwriter profile sources.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_ghostwriter_source.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
|
|
7
7
|
* detected by argv membership, exit codes (0 / 1), stdout/stderr split,
|
|
8
8
|
* byte-identical messages, same scan scope (`*.md` sorted in each tier),
|
|
9
9
|
* same package- then consumer-side ordering. No behaviour changes —
|
|
10
|
-
*
|
|
10
|
+
* historical quirks preserved (consumers pin the exact behaviour).
|
|
11
11
|
*
|
|
12
12
|
* Two storage tiers (docs/contracts/ghostwriter-schema.md):
|
|
13
13
|
* * src/agent-src/ghostwriter/ — package source, fictional fixtures only.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Permissions-audit entry-gate for the global install tree.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_global_paths.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the Python CLI contract exactly: same policy source,
|
|
7
7
|
* finding messages, finding order, stdout/stderr split, and exit codes.
|
|
8
8
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint cross-wing handoffs declared in senior-tier skills' `## Related Skills`.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_handoffs.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the CLI contract EXACTLY — the `--quiet` flag is a
|
|
7
7
|
* bare `sys.argv` membership check (NOT argparse, so there is no real
|
|
8
8
|
* `-h`/`--help`; `main(argv)` treats `argv[0]` as a skills-dir override,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// P1.1 — hidden-Unicode / smuggling-codepoint linter (road-to-security-pillar.md).
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// Ported from the retired Python `src/scripts/lint_hidden_unicode.py` (ADR-200 —
|
|
4
4
|
// Python→TS migration). Behaviour mirrors the Python module byte-for-byte.
|
|
5
5
|
//
|
|
6
6
|
// Detects the invisible-character class used by the "rules-file backdoor"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint the hook concern budget against `src/scripts/hook_manifest.yaml`.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_hook_concern_budget.py` (ADR-200,
|
|
6
6
|
* Phase 4 / Wave 4b). Mirrors the CLI contract EXACTLY — `--manifest` /
|
|
7
7
|
* `--settings` / `--strict` argparse flags, exit codes (0 clean or warn-only,
|
|
8
8
|
* 1 schema load failed, 2 hard-fail with violations), byte-identical
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* `.agent-settings.yml` `hooks.concern_budget.*` line walker, and the same
|
|
11
11
|
* defaults. No behaviour changes.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* the retired Python implementation imports `hooks.dispatch_hook._load_yaml` (which is
|
|
14
14
|
* `yaml.safe_load(text) or {}` when PyYAML is present). That hook module is
|
|
15
15
|
* not yet ported, so this twin inlines the equivalent `yaml`-package load
|
|
16
16
|
* (version 1.1 → PyYAML safe_load parity). When the dispatch_hook twin
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint `src/scripts/hook_manifest.yaml`.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_hook_manifest.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the Python CLI contract exactly: same manifest default,
|
|
7
7
|
* finding messages, finding order, stdout/stderr split, and exit codes.
|
|
8
8
|
*
|
|
@@ -97,7 +97,7 @@ function _isDir(p: string): boolean {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
/**
|
|
100
|
-
* Load the manifest.
|
|
100
|
+
* Load the manifest. the retired Python implementation reuses dispatch_hook._load_yaml
|
|
101
101
|
* which prefers PyYAML (with a narrow fallback parser when PyYAML is absent).
|
|
102
102
|
* The TS runtime always has the `yaml` package, so this mirrors the
|
|
103
103
|
* PyYAML-present path (`yaml.safe_load(text) or {}`).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// P1.2 — instruction-smuggling / suppression-phrase linter (road-to-security-pillar.md).
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// Ported from the retired Python `src/scripts/lint_instruction_smuggling.py` (ADR-200 —
|
|
4
4
|
// Python→TS migration). Behaviour mirrors the Python module byte-for-byte.
|
|
5
5
|
//
|
|
6
6
|
// Detects instructions smuggled into rule/skill/command bodies (and MCP tool
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint the `load_context:` / `load_context_eager:` frontmatter schema.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_load_context.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
|
|
7
7
|
* flag (positional `--quiet` detection in argv, like the Python
|
|
8
8
|
* `"--quiet" in sys.argv`), exit codes (0 clean / warnings-only, 1 errors),
|
|
9
9
|
* byte-identical error + warning + success messages, same scan dirs,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint .claude-plugin/marketplace.json for the event4u/agent-config package.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_marketplace.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the Python CLI contract exactly: same cwd-relative scan
|
|
7
7
|
* roots, finding messages, stdout output, and exit codes.
|
|
8
8
|
*
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Lint that every command in `hooks/hooks.json` resolves to a real
|
|
4
4
|
* dispatcher subcommand in `scripts/_dispatch.bash`.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* (ADR-200, Phase 4 / Wave 4b). The CLI contract is
|
|
6
|
+
* Ported from the retired Python `src/scripts/lint_marketplace_install_completeness.py`
|
|
7
|
+
* (ADR-200, Phase 4 / Wave 4b). The CLI contract is pinned —
|
|
8
8
|
* `--hooks-json` / `--dispatch-bash` flags, exit codes (0 clean, 1 unknown
|
|
9
9
|
* subcommand, 2 schema/file error), stdout/stderr split, byte-identical
|
|
10
10
|
* finding messages, same command-extraction regexes and scan order.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// P1.3 — MCP-config security linter (road-to-security-pillar.md). OWASP ASI04.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// Ported from the retired Python `src/scripts/lint_mcp_config_security.py` (ADR-200 —
|
|
4
4
|
// Python→TS migration). Behaviour mirrors the Python module byte-for-byte.
|
|
5
5
|
//
|
|
6
6
|
// Scans shipped MCP configuration — named config files (`*.mcp.json`,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint `dist/mcp/registry-manifest.json` against its JSON Schema.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_mcp_registry_manifest.py` (ADR-200,
|
|
6
6
|
* Phase 4 / Wave 4b). Mirrors the CLI contract EXACTLY — `--quiet` flag
|
|
7
7
|
* (argparse, so a real `-h`/`--help` prints usage + exits 0), the
|
|
8
8
|
* `❌ <msg>` failures on stderr, the `✅ mcp registry manifest OK
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint structural reachability of media governance policies.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b).
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_media_policy_linkage.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
|
|
7
7
|
* flag read from argv at module load, scan roots + policy ordering (policies
|
|
8
8
|
* sorted; scan files via rglob), finding messages, output channel (all on
|
|
9
9
|
* stdout except the final orphan summary on stderr), exit codes. No
|
|
10
|
-
* behaviour changes —
|
|
10
|
+
* behaviour changes — historical quirks preserved (consumers pin the exact behaviour). (note: `POLICY_DIR` /
|
|
11
11
|
* `SCAN_ROOTS` point at `agents/policies/media`, matching the .py).
|
|
12
12
|
*
|
|
13
13
|
* Every policy file under `agents/policies/media/` (except README) must be
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* WARN-ONLY mission manifest and catalog linter.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_missions.py` (ADR-200, Python→TypeScript
|
|
6
|
+
* migration). The CLI contract is pinned — argparse flags
|
|
7
7
|
* (`--strict` / `--quiet` / `--check-precondition MISSION REPO`, `-h`/`--help`
|
|
8
8
|
* exit 0, unknown arg → exit 2), the scan order (`sorted(MISSIONS_ROOT.iterdir())`
|
|
9
9
|
* minus dot-dirs), byte-identical finding lines, the missing-schema short-circuit
|
|
10
10
|
* (exit 2 strict / 0 otherwise), the stdout/stderr split, and exit codes
|
|
11
11
|
* (0 warn-only / 1 strict+ERROR). snake_case kept.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* the retired Python implementation uses the `jsonschema` Draft7Validator; this twin
|
|
14
14
|
* hand-rolls a Draft-07 validator covering exactly the keyword set the two
|
|
15
15
|
* mission schemas use (type, required, additionalProperties [false | schema],
|
|
16
16
|
* properties, $ref [#/definitions], pattern, enum, minLength, maxLength,
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Fail when a skill or command lacks a `model_tier` value.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b).
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_model_tier_coverage.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
|
|
7
7
|
* flag, target enumeration + ordering (skills via artefact_roots, then
|
|
8
8
|
* commands via iter_commands), finding messages, stdout/stderr split,
|
|
9
|
-
* exit codes.
|
|
9
|
+
* exit codes. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
10
10
|
*
|
|
11
11
|
* Phase 5 coverage gate of `road-to-model-capability-tiers.md` (ADR-035):
|
|
12
12
|
* every skill and command MUST declare an explicit `model_tier`
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Namespace linter. Enforces `<stem>-<intent>` kebab-case + reserved
|
|
4
4
|
* names list across skills / rules / commands / personas.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* Wave 4b). The CLI contract is
|
|
6
|
+
* Ported from the retired Python `src/scripts/lint_namespace.py` (ADR-200, Phase 4 /
|
|
7
|
+
* Wave 4b). The CLI contract is pinned — `--name` / `--quiet`
|
|
8
8
|
* flags, exit codes (0 clean, 1 issues / single-name fail), stdout/stderr
|
|
9
9
|
* split (findings + BASELINE-on-failure to stderr; success BASELINE to
|
|
10
10
|
* stdout), byte-identical finding messages, same `sorted(root.glob(glob))`
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Single-namespace collision lint (road-to-6.0.0-D Phase 0 Step 4).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_namespace_collisions.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — exit codes
|
|
7
7
|
* (0 no collisions, 1 collision, 3 internal error), stdout/stderr split,
|
|
8
8
|
* byte-identical finding messages, same `iter_all_sources()` scan order,
|
|
9
9
|
* same normalization, same frontmatter `name:` extraction.
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Forward gate for NEW skills (6.0.0-C Phase 4 Step 8b).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_new_skill_gate.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b — PORT). Mirrors the CLI contract EXACTLY — the `--baseline` (default
|
|
7
7
|
* `main`) and `--quiet` argparse flags, the git diff/status forward-only skill
|
|
8
8
|
* detection, byte-identical violation messages, stdout-only output (no
|
|
9
9
|
* stderr split except the git-failure exit-3 path), and exit codes
|
|
10
10
|
* (0 clean · 1 violations · 3 internal/git error). snake_case kept. No
|
|
11
|
-
* behaviour changes —
|
|
11
|
+
* behaviour changes — historical quirks preserved (consumers pin the exact behaviour).
|
|
12
12
|
*
|
|
13
13
|
* A newly added skill must clear two gates before it joins the surface:
|
|
14
14
|
*
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* FORWARD-ONLY: only SKILL.md files added since `--baseline` are gated.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
22
|
+
* the retired Python implementation imports `_parse`, `_cosine`, `collect`, `Skill` from
|
|
23
23
|
* `audit_skill_overlap`. That module has no TS twin in this batch, so the four
|
|
24
24
|
* needed symbols are ported privately below (faithful 1:1 of the originals);
|
|
25
25
|
* when `audit_skill_overlap` is ported in its own phase these can be
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Atomic-command linter for the command-collapse policy.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* (ADR-200, Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_no_new_atomic_commands.py`
|
|
6
|
+
* (ADR-200, Phase 4 / Wave 4b). The CLI contract is pinned —
|
|
7
7
|
* `--baseline` / `--all` flags, exit codes (0 clean, 1 violations,
|
|
8
8
|
* 3 internal error), stdout/stderr split, byte-identical messages, the
|
|
9
9
|
* same git invocations (`git diff --name-only --diff-filter=A
|
|
@@ -24,7 +24,10 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
|
24
24
|
const _HERE = fileURLToPath(import.meta.url);
|
|
25
25
|
// src/scripts/lint_no_new_atomic_commands.ts → parent.parent.parent is repo root.
|
|
26
26
|
const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
|
|
27
|
-
|
|
27
|
+
// Repointed 2026-07-08 (ADR-115): the legacy uncondensed commands dir no
|
|
28
|
+
// longer exists — command sources live at src/domains/**/command.md.
|
|
29
|
+
// Only files named `command.md` are commands; pack READMEs etc. are skipped.
|
|
30
|
+
const COMMANDS_DIR = 'src/domains';
|
|
28
31
|
const CLUSTER_CONTRACT = 'docs/contracts/command-clusters.md';
|
|
29
32
|
|
|
30
33
|
interface Violation {
|
|
@@ -135,7 +138,7 @@ function added_command_files(baseline: string): string[] {
|
|
|
135
138
|
}
|
|
136
139
|
const files: string[] = [];
|
|
137
140
|
for (const p of (diff.stdout ?? '').split('\n')) {
|
|
138
|
-
if (p
|
|
141
|
+
if (p !== '' && path.basename(p) === 'command.md') {
|
|
139
142
|
files.push(p);
|
|
140
143
|
}
|
|
141
144
|
}
|
|
@@ -157,7 +160,7 @@ function added_command_files(baseline: string): string[] {
|
|
|
157
160
|
const rawPath = line.slice(3).trim();
|
|
158
161
|
const parts = rawPath.split(' -> ');
|
|
159
162
|
const p = parts[parts.length - 1]!;
|
|
160
|
-
if (
|
|
163
|
+
if (path.basename(p) === 'command.md') {
|
|
161
164
|
if (!files.includes(p)) {
|
|
162
165
|
files.push(p);
|
|
163
166
|
}
|
|
@@ -181,7 +184,7 @@ function _rglobMdSorted(dir: string): string[] {
|
|
|
181
184
|
const full = path.join(current, entry.name);
|
|
182
185
|
if (entry.isDirectory()) {
|
|
183
186
|
walk(full);
|
|
184
|
-
} else if (entry.isFile() && entry.name
|
|
187
|
+
} else if (entry.isFile() && entry.name === 'command.md') {
|
|
185
188
|
out.push(full);
|
|
186
189
|
}
|
|
187
190
|
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Python-twin rationale guard (road-to-truth-and-reference-hygiene Phase 2).
|
|
4
|
+
*
|
|
5
|
+
* The py2ts migration (ADR-200) is closed and its Python originals are
|
|
6
|
+
* deleted; the parity scaffolding comments ("TypeScript twin of …", "latent
|
|
7
|
+
* Python quirks replicated", "byte-identical to the Python original") were
|
|
8
|
+
* swept on 2026-07-08 and re-attributed to their live consumers (tests,
|
|
9
|
+
* checksum gates, pinned CLI contracts). This lint keeps the residue from
|
|
10
|
+
* creeping back: a NEW comment that rationalises behaviour by fidelity to
|
|
11
|
+
* the deleted Python twin fails CI.
|
|
12
|
+
*
|
|
13
|
+
* Scope: comment lines in `src/scripts/**\/*.ts`. Historical provenance
|
|
14
|
+
* mentions ("ported from the retired Python `x.py` (ADR-200)") are fine —
|
|
15
|
+
* they state history, not a live contract; only the twin-rationale shapes
|
|
16
|
+
* below are banned.
|
|
17
|
+
*
|
|
18
|
+
* Exit codes: 0 clean · 1 findings.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import * as fs from 'node:fs';
|
|
22
|
+
import * as path from 'node:path';
|
|
23
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
24
|
+
|
|
25
|
+
const _HERE = fileURLToPath(import.meta.url);
|
|
26
|
+
export const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
|
|
27
|
+
const SCOPE = path.join(ROOT, 'src', 'scripts');
|
|
28
|
+
|
|
29
|
+
/** Banned rationale shapes (case-insensitive). */
|
|
30
|
+
export const BANNED: ReadonlyArray<[string, RegExp]> = [
|
|
31
|
+
['twin-of', /\btwin of\b/i],
|
|
32
|
+
['latent-quirks', /latent (?:python )?(?:quirks|bugs) replicated/i],
|
|
33
|
+
['byte-identical-python', /byte-identical to the python/i],
|
|
34
|
+
['python-original', /\bthe python original\b/i],
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const COMMENT = /^\s*(\/\/|\*|\/\*)/;
|
|
38
|
+
|
|
39
|
+
function* walk(dir: string): Generator<string> {
|
|
40
|
+
for (const e of fs.readdirSync(dir, { withFileTypes: true }).sort((a, b) =>
|
|
41
|
+
a.name < b.name ? -1 : 1,
|
|
42
|
+
)) {
|
|
43
|
+
const full = path.join(dir, e.name);
|
|
44
|
+
if (e.isDirectory()) yield* walk(full);
|
|
45
|
+
else if (e.name.endsWith('.ts')) yield full;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function scan_file(rel: string, text: string): string[] {
|
|
50
|
+
const findings: string[] = [];
|
|
51
|
+
const lines = text.split('\n');
|
|
52
|
+
for (let i = 0; i < lines.length; i++) {
|
|
53
|
+
const line = lines[i]!;
|
|
54
|
+
if (!COMMENT.test(line)) continue;
|
|
55
|
+
for (const [name, pat] of BANNED) {
|
|
56
|
+
if (pat.test(line)) {
|
|
57
|
+
findings.push(`${rel}:${i + 1}: ${name} — ${line.trim().slice(0, 100)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return findings;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function main(argv: readonly string[] = process.argv.slice(2)): number {
|
|
65
|
+
const QUIET = argv.includes('--quiet');
|
|
66
|
+
const findings: string[] = [];
|
|
67
|
+
for (const f of walk(SCOPE)) {
|
|
68
|
+
if (path.resolve(f) === path.resolve(_HERE)) continue; // this guard documents the shapes
|
|
69
|
+
const rel = path.relative(ROOT, f).split(path.sep).join('/');
|
|
70
|
+
findings.push(...scan_file(rel, fs.readFileSync(f, 'utf-8')));
|
|
71
|
+
}
|
|
72
|
+
if (findings.length === 0) {
|
|
73
|
+
if (!QUIET) process.stdout.write('✅ No Python-twin rationale in src/scripts comments.\n');
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
process.stdout.write(`❌ Python-twin rationale reintroduced — ${findings.length} finding(s):\n`);
|
|
77
|
+
for (const f of findings) process.stdout.write(` ${f}\n`);
|
|
78
|
+
process.stdout.write(
|
|
79
|
+
'\nFix: state the LIVE contract instead (which test/gate/consumer pins the\n' +
|
|
80
|
+
'behaviour) — never fidelity to the deleted Python original. See\n' +
|
|
81
|
+
'road-to-truth-and-reference-hygiene Phase 2.\n',
|
|
82
|
+
);
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function _isCliEntry(): boolean {
|
|
87
|
+
if (process.argv[1] === undefined) return false;
|
|
88
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
89
|
+
if (import.meta.url === argvUrl) return true;
|
|
90
|
+
try {
|
|
91
|
+
return (
|
|
92
|
+
fs.realpathSync(fileURLToPath(import.meta.url)) ===
|
|
93
|
+
fs.realpathSync(path.resolve(process.argv[1]))
|
|
94
|
+
);
|
|
95
|
+
} catch {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
101
|
+
process.exit(main(process.argv.slice(2)));
|
|
102
|
+
}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* One-off-script age linter.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_one_off_age.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the CLI contract EXACTLY — `--format {text,json}` /
|
|
7
7
|
* `--root` argparse flags, exit codes (0 clean incl. warnings, 1 hard
|
|
8
8
|
* fail, 3 internal error), stdout/stderr split, byte-identical finding
|
|
9
9
|
* messages, the same scan tree (`<root>/scripts/_one_off`) and ordering
|
|
10
|
-
* (sorted iterdir).
|
|
10
|
+
* (sorted iterdir). Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
11
11
|
* (e.g. `scan` walks `scripts/_one_off`, NOT the module-level
|
|
12
12
|
* `ONE_OFF_DIR = src/scripts/_one_off`, which is unused).
|
|
13
13
|
*
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint `.agent-config/orchestrations/*.yaml` pipeline files.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_orchestration_dsl.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--dir` /
|
|
7
7
|
* `--file` flags, exit codes (0 clean, 1 hard failure, 2 file/schema-load
|
|
8
8
|
* error), stdout/stderr split (all findings on stderr), byte-identical
|
|
9
9
|
* finding messages, same scan order, same `resolve_logical` ref resolution,
|
|
@@ -51,7 +51,7 @@ const SUBAGENT_MODES = new Set([
|
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Reuse the dispatcher's loader so the linter sees what the runtime sees.
|
|
54
|
-
*
|
|
54
|
+
* the retired Python implementation calls `hooks.dispatch_hook._load_yaml`, which prefers
|
|
55
55
|
* PyYAML (present in this environment) and falls back to a flat mini-parser
|
|
56
56
|
* only when PyYAML is unavailable. Orchestration files use full nested YAML,
|
|
57
57
|
* so the PyYAML path is the live one — `yaml` (npm) reproduces it.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
// Auto-detection contract linter for command orchestrators (6.1.0 Step 1).
|
|
3
3
|
//
|
|
4
|
-
// TypeScript
|
|
4
|
+
// TypeScript port of the retired Python src/scripts/lint_orchestrator_auto_detect.py. Every
|
|
5
5
|
// command source under src/domains/**/command.md that opts into auto-detection
|
|
6
6
|
// (front-matter `auto_detect: true`) MUST honor the non-interactive contract:
|
|
7
7
|
// a body link to the contract doc + the `## Non-interactive & auto-detection`
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Enforce cross-pack reference boundaries.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_pack_boundaries.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the Python CLI contract exactly: `--format text|json`,
|
|
7
7
|
* `--quiet`, same scan scope (packages/*\/.agent-src.uncondensed/), file
|
|
8
8
|
* ordering, link regex, resolution semantics, finding messages, stdout/stderr
|
|
9
9
|
* split, and exit codes (0 clean / skipped, 1 violations). No behaviour
|
|
10
|
-
* changes —
|
|
10
|
+
* changes — historical quirks preserved (consumers pin the exact behaviour).
|
|
11
11
|
*
|
|
12
12
|
* Walks every markdown link in every artefact under
|
|
13
13
|
* `packages/*\/.agent-src.uncondensed/` and verifies the link target's pack is
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Pack dependency + pack-graph lints.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_pack_dependencies.py` (ADR-200,
|
|
6
6
|
* Phase 4 / Wave 4b). Mirrors the Python CLI contract exactly: same checks,
|
|
7
7
|
* finding messages, stdout/stderr split, and exit codes.
|
|
8
8
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Exit codes: 0 = clean · 1 = drift and/or a cycle · 3 = internal error.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* the retired Python implementation imports generate_pack_manifests (`gpm`) for the manifest
|
|
19
19
|
* derivation. `gpm` has no TS twin yet (out of this batch's scope), so the
|
|
20
20
|
* needed gpm internals are ported as private helpers below, mirroring the
|
|
21
21
|
* Python source 1:1. They are prefixed `_gpm_` to mark their provenance.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Pack first-win linter.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_pack_first_win.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `main()`
|
|
7
7
|
* IGNORES argv entirely (any flag, including the `--quiet` the Taskfile
|
|
8
8
|
* passes, is silently accepted), exit codes (0 clean, 1 violations),
|
|
9
9
|
* stdout/stderr split, byte-identical finding messages.
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint persona governance — per-domain cap (hard) + citation floor (warn).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b).
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_persona_governance.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
|
|
7
7
|
* flag read from argv at module load, persona enumeration + sorted ordering,
|
|
8
8
|
* finding messages, output channel (emit → stdout; overflow summary on
|
|
9
|
-
* stderr), exit codes.
|
|
9
|
+
* stderr), exit codes. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
10
10
|
*
|
|
11
11
|
* Enforces the mechanical checks in
|
|
12
12
|
* `.agent-src.uncondensed/rules/persona-governance.md`:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Positioning consistency lint for event4u/agent-config.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_positioning.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the CLI contract EXACTLY — the `--quiet` argparse flag,
|
|
7
7
|
* exit codes (0 clean, 1 drift, 2 missing PyYAML — inert here since `yaml`
|
|
8
8
|
* is always present), byte-identical stdout (success line) and stderr
|