@event4u/agent-config 8.4.1 → 8.6.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 +92 -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} +38 -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/auto-dispatch-classification.md +30 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +15 -1
- package/dist/agent-src/contexts/execution/subagent-steering.md +54 -1
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/model-recommendations.md +19 -0
- package/dist/agent-src/contexts/skills-and-commands.md +2 -2
- package/dist/agent-src/contexts/subagent-configuration.md +8 -0
- 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 +27 -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/ADR-116-memory-tripwire-activation-path.md +125 -0
- package/docs/decisions/INDEX.md +3 -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 +12 -2
- package/package.json +3 -1
- package/src/agent-src/README.md +1 -1
- package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
- package/src/config/agent-settings.template.yml +1 -1
- package/src/install/selectedTools.ts +38 -10
- 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/auto_dispatch.ts +63 -0
- 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/subagent_routing.ts +24 -0
- package/src/scripts/_lib/subagent_steering.ts +213 -3
- 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/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,12 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Generate the role-experience catalog (road-to-competitive-borrow P1.0).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* (ADR-200).
|
|
5
|
+
* Ported from the retired Python `src/scripts/generate_role_experiences_catalog.py`
|
|
6
|
+
* (ADR-200). The CLI contract is pinned — the `--check` /
|
|
7
7
|
* `--quiet` flags, exit codes (0 / 1 / 2), stdout/stderr split, and the
|
|
8
8
|
* byte-identical generated `docs/role-experiences.md` (heading prose, the
|
|
9
9
|
* `| Role | Tagline | Status |` table, the `sorted(glob)` ordering over the
|
|
10
|
-
* and the trailing newline). No behaviour changes —
|
|
10
|
+
* and the trailing newline). No behaviour changes — historical quirks preserved
|
|
11
11
|
* (regex frontmatter parse, sequential `.strip('"').strip("'")`, the
|
|
12
12
|
* pathlib-component-wise glob sort) are replicated.
|
|
13
13
|
*
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* PreToolUse guard: block git --no-verify and hook-bypass patterns.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/hooks/block_no_verify.py` (ADR-200,
|
|
6
6
|
* Python→TypeScript migration). The CLI/stdin contract is mirrored EXACTLY —
|
|
7
7
|
* `--command` / `--platform` argparse flags, the JSON-envelope-on-stdin shape,
|
|
8
8
|
* shlex tokenisation (POSIX, no comments), the subcommand split on shell
|
|
9
9
|
* separators, the fail-closed-on-parse-error-for-git behaviour, byte-identical
|
|
10
10
|
* stderr block message, and exit codes (0 allow · 1 block; 2 = argparse error).
|
|
11
|
-
* snake_case kept.
|
|
11
|
+
* snake_case kept. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
12
12
|
*
|
|
13
13
|
* Intercepts the agent's Bash tool calls BEFORE git runs so that
|
|
14
14
|
* `git --no-verify` / `git -n` / `git -c core.hooksPath=` cannot silently
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Universal hook dispatcher — single entry point for every platform.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/hooks/dispatch_hook.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 6 / hooks core). Mirrors the Python CLI
|
|
7
7
|
* contract exactly: same manifest default, event vocabulary, envelope
|
|
8
8
|
* shape, concern invocation, exit-code reduction, feedback-dir writes,
|
|
@@ -135,7 +135,7 @@ export function _parse_concern_stdout(stdout_text: string): JsonObject {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
/**
|
|
138
|
-
* Minimal manifest loader — the Python
|
|
138
|
+
* Minimal manifest loader — the retired Python implementation prefers PyYAML and falls
|
|
139
139
|
* back to `_fallback_yaml` only when PyYAML is absent. The TS runtime
|
|
140
140
|
* always ships the `yaml` package, so this mirrors the PyYAML-present
|
|
141
141
|
* path (`yaml.safe_load(text) or {}`); version 1.1 matches PyYAML.safe_load.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Append-only log of dispatch-time issues — Phase 1 of `road-to-hooks-actually-fire-in-consumers`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/hooks/dispatch_issues.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 6 / hooks core). Public API mirrors the
|
|
6
6
|
* Python module exactly (snake_case kept deliberately — fidelity over
|
|
7
7
|
* TS idiom).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Concern envelope helpers — read the dispatcher's stdin contract.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/hooks/envelope.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 6 / hooks core). Public API mirrors the
|
|
6
6
|
* Python module exactly (snake_case kept deliberately — fidelity over
|
|
7
7
|
* TS idiom).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Fixture-driven hook replay — read-only dispatch through the runtime.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/hooks/replay_hook.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 6 / hooks core). Mirrors the Python CLI
|
|
7
7
|
* contract exactly: same payload resolution, replay env flag, dispatcher
|
|
8
8
|
* argument forwarding, `--json` summary shape, stdout/stderr split, and
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Concurrency-safe state writes for hook concerns.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Ported from the retired Python `src/scripts/hooks/state_io.py` (ADR-200 —
|
|
5
5
|
* Python→TS migration, Phase 6 / hooks core). Public API mirrors the
|
|
6
6
|
* Python module exactly (snake_case kept deliberately — fidelity over
|
|
7
7
|
* TS idiom).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Hook doctor — read-only diagnostic over the hook runtime.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/hooks_doctor.py` (ADR-200 — Python→TS
|
|
6
6
|
* migration, Phase 6 / hooks). Public API mirrors the Python module
|
|
7
7
|
* exactly (snake_case kept deliberately — fidelity over TS idiom).
|
|
8
8
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Print the runtime hook matrix per `docs/contracts/hook-architecture-v1.md`.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/hooks_status.py` (ADR-200 — Python→TS
|
|
6
6
|
* migration, Phase 6 / hooks). Public API mirrors the Python module
|
|
7
7
|
* exactly (snake_case kept deliberately — fidelity over TS idiom). Ported
|
|
8
8
|
* here as a dependency of `hooks_doctor.ts`, which wraps `collect`,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* PostToolUse prompt-injection scanner — warn-in-context
|
|
4
4
|
* (road-to-security-pillar.md P3.2).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* Ported from the retired Python `src/scripts/injection_scan_hook.py` (ADR-200 —
|
|
7
7
|
* Python→TS migration). Public API mirrors the Python module exactly
|
|
8
8
|
* (snake_case kept deliberately — fidelity over TS idiom). Match the
|
|
9
9
|
* Python `re` semantics, the `.agent-settings.yml` mini-parser, the
|
package/src/scripts/install.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Agent Config — Project Bridge Installer (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/install.py` (ADR-200).
|
|
6
|
+
* The CLI contract pins the historical contract exactly — same flags, same
|
|
7
7
|
* exit codes, same stdout/stderr split, byte-identical emitted output,
|
|
8
8
|
* same filesystem effects, same subprocess argv/cwd/env. No behaviour
|
|
9
9
|
* changes — latent quirks are replicated and flagged inline, not fixed.
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
* import-resolution detail with no observable effect.
|
|
52
52
|
* - `scripts._cli.cmd_migrate` now has a `.ts` twin, so `_run_migrate_to_global`
|
|
53
53
|
* calls `cmd_migrate.main([], { cwd })` directly in-process — exactly as the
|
|
54
|
-
* Python
|
|
54
|
+
* retired Python implementation ran it via `sys.stdout`. The migrator's `out`/`err` sinks
|
|
55
55
|
* default to `process.stdout`/`process.stderr`, preserving the prior
|
|
56
56
|
* `stdio:['ignore','inherit','pipe']` observable contract (stdout text + exit
|
|
57
57
|
* code). Inline reason at the call site.
|
|
@@ -80,6 +80,9 @@ import * as user_global_paths from './_lib/user_global_paths.js';
|
|
|
80
80
|
import * as claude_desktop_bundler from './_lib/claude_desktop_bundler.js';
|
|
81
81
|
import * as claude_settings_hooks from './_lib/claude_settings_hooks.js';
|
|
82
82
|
import { find_project_root_with_anchor, load_agent_settings } from './_lib/agent_settings.js';
|
|
83
|
+
import { flattenSurface, computeSurfaceDelta, type SettingsSurface } from '../shared/settingsSurface.js';
|
|
84
|
+
import { settingsSchema } from '../server/schemas/settings.js';
|
|
85
|
+
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
83
86
|
import { detect_module_roots } from './_lib/module_detection.js';
|
|
84
87
|
import {
|
|
85
88
|
TIER_TO_CLAUDE_MODEL,
|
|
@@ -2832,6 +2835,66 @@ function _deploy_claude_desktop(
|
|
|
2832
2835
|
return [bundle_count, 0, 'deployed', [bundles_dir, ...marker_paths]];
|
|
2833
2836
|
}
|
|
2834
2837
|
|
|
2838
|
+
/**
|
|
2839
|
+
* Claude Code flat-command mitigation (council 2026-07-08,
|
|
2840
|
+
* cc-user-command-discovery). Claude Code ≤ 2.1.204 does not register FLAT
|
|
2841
|
+
* user-scope command files (`~/.claude/commands/<name>.md`) — probed and
|
|
2842
|
+
* confirmed: nested commands (`/cluster:sub`) and user-scope skills DO
|
|
2843
|
+
* register. Until upstream fixes discovery, tier-0/1 VISIBLE flat commands
|
|
2844
|
+
* are re-projected as skill wrappers (`~/.claude/skills/<name>/SKILL.md`)
|
|
2845
|
+
* and their flat command file is dropped from the claude-code anchor —
|
|
2846
|
+
* single source, so no duplicate `/name` appears once upstream fixes flat
|
|
2847
|
+
* discovery (revert = one package release, no per-machine gating).
|
|
2848
|
+
* Tier-2/internal flat commands stay command files. A command whose name
|
|
2849
|
+
* collides with a real skill is skipped (the skill already owns `/name`).
|
|
2850
|
+
*/
|
|
2851
|
+
const _CLAUDE_FLAT_WRAPPER_EXTRA = new Set(['commit']); // essential; absent from the manifest
|
|
2852
|
+
export function _apply_claude_flat_command_wrappers(
|
|
2853
|
+
anchor: string,
|
|
2854
|
+
package_root: string,
|
|
2855
|
+
current_files: Set<string>,
|
|
2856
|
+
): { wrapped: string[]; collisions: string[] } {
|
|
2857
|
+
const wrapped: string[] = [];
|
|
2858
|
+
const collisions: string[] = [];
|
|
2859
|
+
// Tier-0/1 visible command slugs from the locked discovery manifest.
|
|
2860
|
+
const eligible = new Set<string>(_CLAUDE_FLAT_WRAPPER_EXTRA);
|
|
2861
|
+
try {
|
|
2862
|
+
const manifest = JSON.parse(
|
|
2863
|
+
fs.readFileSync(path.join(package_root, 'dist', 'discovery', 'discovery-manifest.json'), 'utf8'),
|
|
2864
|
+
) as { artefacts?: Array<{ category?: string; slug?: string; tier?: number; visibility?: string }> };
|
|
2865
|
+
for (const a of manifest.artefacts ?? []) {
|
|
2866
|
+
if (a.category !== 'command' || typeof a.slug !== 'string') continue;
|
|
2867
|
+
if ((a.tier ?? 2) <= 1 && a.visibility !== 'internal') eligible.add(a.slug);
|
|
2868
|
+
}
|
|
2869
|
+
} catch {
|
|
2870
|
+
// No manifest → wrap only the hardcoded essentials.
|
|
2871
|
+
}
|
|
2872
|
+
for (const slug of [...eligible].sort()) {
|
|
2873
|
+
const flat_rel = `commands/${slug}.md`;
|
|
2874
|
+
const flat_abs = path.join(anchor, 'commands', `${slug}.md`);
|
|
2875
|
+
if (!fs.existsSync(flat_abs)) continue;
|
|
2876
|
+
const skill_dir = path.join(anchor, 'skills', slug);
|
|
2877
|
+
if (fs.existsSync(skill_dir)) {
|
|
2878
|
+
// A real skill owns /<slug> — never overwrite it.
|
|
2879
|
+
collisions.push(slug);
|
|
2880
|
+
continue;
|
|
2881
|
+
}
|
|
2882
|
+
let body = fs.readFileSync(flat_abs, 'utf8');
|
|
2883
|
+
// SKILL.md requires a `name:` — inject it into the existing
|
|
2884
|
+
// frontmatter when absent (command frontmatter carries description).
|
|
2885
|
+
if (body.startsWith('---\n') && !/^name:/m.test(body.split('\n---')[0] ?? '')) {
|
|
2886
|
+
body = body.replace('---\n', `---\nname: ${slug}\n`);
|
|
2887
|
+
}
|
|
2888
|
+
fs.mkdirSync(skill_dir, { recursive: true });
|
|
2889
|
+
fs.writeFileSync(path.join(skill_dir, 'SKILL.md'), body, 'utf8');
|
|
2890
|
+
fs.rmSync(flat_abs, { force: true });
|
|
2891
|
+
current_files.delete(flat_rel);
|
|
2892
|
+
current_files.add(`skills/${slug}/SKILL.md`);
|
|
2893
|
+
wrapped.push(slug);
|
|
2894
|
+
}
|
|
2895
|
+
return { wrapped, collisions };
|
|
2896
|
+
}
|
|
2897
|
+
|
|
2835
2898
|
function _deploy_global_content(
|
|
2836
2899
|
tools: Set<string>,
|
|
2837
2900
|
force: boolean,
|
|
@@ -2874,6 +2937,20 @@ function _deploy_global_content(
|
|
|
2874
2937
|
global_deploy_inventory.expected_deploy_files(src, dest_sub ? dest_sub : ''),
|
|
2875
2938
|
);
|
|
2876
2939
|
}
|
|
2940
|
+
// Flat-command → skill-wrapper re-projection for Claude Code
|
|
2941
|
+
// (discovery regression mitigation; see the helper's doc block).
|
|
2942
|
+
// Runs before the postcheck + inventory record so `current_files`
|
|
2943
|
+
// reflects the transformed tree and reaping stays consistent.
|
|
2944
|
+
if (tool_id === 'claude-code') {
|
|
2945
|
+
const res = _apply_claude_flat_command_wrappers(anchor, package_root, current_files);
|
|
2946
|
+
if (res.wrapped.length > 0 && !state.QUIET) {
|
|
2947
|
+
info(
|
|
2948
|
+
` claude-code: ${res.wrapped.length} visible flat command(s) projected as ` +
|
|
2949
|
+
'skill wrappers (Claude Code flat-command discovery workaround)',
|
|
2950
|
+
);
|
|
2951
|
+
}
|
|
2952
|
+
}
|
|
2953
|
+
|
|
2877
2954
|
const missing_targets = _verify_deploy_targets(anchor, plan);
|
|
2878
2955
|
if (missing_targets.length > 0) {
|
|
2879
2956
|
if (!state.QUIET) {
|
|
@@ -3275,6 +3352,20 @@ function install_global(
|
|
|
3275
3352
|
}
|
|
3276
3353
|
}
|
|
3277
3354
|
|
|
3355
|
+
// Settings-surface snapshot + upgrade delta (road-to-settings-change-
|
|
3356
|
+
// review; council 2026-07-08, 2/2 converged on snapshot-at-install).
|
|
3357
|
+
// Every global install persists the flattened settings surface; when a
|
|
3358
|
+
// PREVIOUS snapshot from a different version exists, the semantic delta
|
|
3359
|
+
// (added / default_changed / enum_added / enum_removed / type_changed)
|
|
3360
|
+
// is written to state/settings-delta.json — the pending-review flag the
|
|
3361
|
+
// GUI banner, the review page, and doctor consume. Never fatal: a
|
|
3362
|
+
// snapshot failure must not sink the install.
|
|
3363
|
+
try {
|
|
3364
|
+
_write_settings_surface_snapshot(installed_version);
|
|
3365
|
+
} catch (e) {
|
|
3366
|
+
if (!state.QUIET) warn(`settings-surface snapshot failed — ${String(e)}`);
|
|
3367
|
+
}
|
|
3368
|
+
|
|
3278
3369
|
if (!state.QUIET) {
|
|
3279
3370
|
process.stdout.write('\n');
|
|
3280
3371
|
success(`Global install completed (v${installed_version}).`);
|
|
@@ -3283,6 +3374,55 @@ function install_global(
|
|
|
3283
3374
|
return 0;
|
|
3284
3375
|
}
|
|
3285
3376
|
|
|
3377
|
+
const SETTINGS_SURFACE_REL = path.join('state', 'settings-surface.json');
|
|
3378
|
+
const SETTINGS_DELTA_REL = path.join('state', 'settings-delta.json');
|
|
3379
|
+
|
|
3380
|
+
function _current_settings_surface(version: string): SettingsSurface {
|
|
3381
|
+
const jsonSchema = zodToJsonSchema(settingsSchema, {
|
|
3382
|
+
name: 'AgentSettings',
|
|
3383
|
+
$refStrategy: 'none',
|
|
3384
|
+
target: 'jsonSchema7',
|
|
3385
|
+
}) as Parameters<typeof flattenSurface>[0];
|
|
3386
|
+
return flattenSurface(jsonSchema, version);
|
|
3387
|
+
}
|
|
3388
|
+
|
|
3389
|
+
function _write_settings_surface_snapshot(installed_version: string): void {
|
|
3390
|
+
const root = user_global_paths.event4u_root();
|
|
3391
|
+
const surface_path = path.join(root, SETTINGS_SURFACE_REL);
|
|
3392
|
+
const delta_path = path.join(root, SETTINGS_DELTA_REL);
|
|
3393
|
+
const next = _current_settings_surface(installed_version);
|
|
3394
|
+
|
|
3395
|
+
let previous: SettingsSurface | null = null;
|
|
3396
|
+
try {
|
|
3397
|
+
const parsed = JSON.parse(fs.readFileSync(surface_path, 'utf8')) as SettingsSurface;
|
|
3398
|
+
if (parsed !== null && typeof parsed === 'object' && parsed.entries !== undefined) previous = parsed;
|
|
3399
|
+
} catch {
|
|
3400
|
+
// First run after this feature ships — seed-only (council Q1:
|
|
3401
|
+
// no template fallback; the transition cost is paid once).
|
|
3402
|
+
}
|
|
3403
|
+
|
|
3404
|
+
if (previous !== null && previous.version !== next.version) {
|
|
3405
|
+
const delta = computeSurfaceDelta(previous, next);
|
|
3406
|
+
if (delta.changes.length > 0) {
|
|
3407
|
+
fs.mkdirSync(path.dirname(delta_path), { recursive: true, mode: 0o700 });
|
|
3408
|
+
fs.writeFileSync(delta_path, `${JSON.stringify(delta, null, 2)}\n`, { mode: 0o600 });
|
|
3409
|
+
if (!state.QUIET) {
|
|
3410
|
+
const counts: Record<string, number> = {};
|
|
3411
|
+
for (const c of delta.changes) counts[c.kind] = (counts[c.kind] ?? 0) + 1;
|
|
3412
|
+
const parts = Object.entries(counts).map(([k, v]) => `${v} ${k.replace('_', ' ')}`);
|
|
3413
|
+
info(
|
|
3414
|
+
`Settings surface changed ${delta.oldVersion} → ${delta.newVersion}: ` +
|
|
3415
|
+
`${parts.join(', ')}. Review with \`agent-config config\` ` +
|
|
3416
|
+
'(Settings → banner) — nothing was changed automatically.',
|
|
3417
|
+
);
|
|
3418
|
+
}
|
|
3419
|
+
}
|
|
3420
|
+
}
|
|
3421
|
+
|
|
3422
|
+
fs.mkdirSync(path.dirname(surface_path), { recursive: true, mode: 0o700 });
|
|
3423
|
+
fs.writeFileSync(surface_path, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3286
3426
|
function arrayStrEqual(a: string[], b: string[]): boolean {
|
|
3287
3427
|
return a.length === b.length && a.every((v, i) => v === b[i]);
|
|
3288
3428
|
}
|
|
@@ -4531,6 +4671,8 @@ export {
|
|
|
4531
4671
|
_wizard_should_launch,
|
|
4532
4672
|
_dry_run_summary,
|
|
4533
4673
|
_apply_payload_preview,
|
|
4674
|
+
_write_settings_surface_snapshot,
|
|
4675
|
+
_current_settings_surface,
|
|
4534
4676
|
jsonDumpsIndent,
|
|
4535
4677
|
jsonDumpsCompact,
|
|
4536
4678
|
_canonical_settings_target,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Abstraction-budget inventory — read-only discovery pass.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/inventory_abstraction_budget.py`
|
|
6
6
|
* (ADR-200 — Python→TS migration, Phase 8 / Wave 8c). Mirrors the
|
|
7
7
|
* Python CLI contract EXACTLY — the `--quiet` flag, exit code (always
|
|
8
8
|
* 0), the stdout/stderr split routed through the `script_output` twin,
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* quoting).
|
|
12
12
|
*
|
|
13
13
|
* Imports the `_lib/agent_src` + `_lib/script_output` twins (the SAME
|
|
14
|
-
* surfaces the Python
|
|
14
|
+
* surfaces the retired Python implementation imports). Reference counts are grep-backed
|
|
15
15
|
* (ripgrep with python-walk fallback) — `rg` is invoked as a subprocess
|
|
16
|
-
* exactly like the Python
|
|
16
|
+
* exactly like the retired Python implementation, so the counts agree.
|
|
17
17
|
*
|
|
18
18
|
* Read-only. Touches no abstraction file. No behaviour changes — latent
|
|
19
19
|
* Python quirks replicated.
|
|
@@ -127,7 +127,7 @@ function newStats(): Stats {
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
function _log(level: 'info' | 'success' | 'warn' | 'error', msg: string): void {
|
|
130
|
-
// script_output twin is always present here (unlike the Python
|
|
130
|
+
// script_output twin is always present here (unlike the retired Python implementation's
|
|
131
131
|
// graceful-degradation guard, which exists only for the rare run outside the
|
|
132
132
|
// repo). Mirror the Python branch: when script_output is None it would print
|
|
133
133
|
// only on error to stderr — but in this twin the module is always imported.
|
|
@@ -466,7 +466,7 @@ export function inventory_packs(stats: Stats): void {
|
|
|
466
466
|
// FileNotFoundError when the directory does not exist (it is NOT guarded
|
|
467
467
|
// by an is_dir() check, unlike the other inventory passes). Replicate that
|
|
468
468
|
// latent crash faithfully: on the current src/-based layout (no packages/
|
|
469
|
-
// dir) the Python
|
|
469
|
+
// dir) the retired Python implementation aborts with a FileNotFoundError traceback and
|
|
470
470
|
// exit 1. See the divergence note in the wave report — this is a real
|
|
471
471
|
// latent Python bug being mirrored, not a TS choice.
|
|
472
472
|
for (const child of _iterdirSortedStrict(packs_dir)) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Inventory frontmatter keys across all agent artefacts.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/inventory_frontmatter.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8c). Mirrors the CLI contract
|
|
7
7
|
* EXACTLY: no flags, exit code 0, byte-identical Markdown stdout. No
|
|
8
8
|
* behaviour changes — latent bugs (line-based frontmatter parse, the
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Meta-layer / concept-surface inventory — read-only discovery pass.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/inventory_meta_layers.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration, Phase 8 / Wave 8c). Mirrors the CLI contract EXACTLY:
|
|
7
7
|
* flag (`--quiet`), exit code 0, byte-identical stdout, and the byte-identical
|
|
8
8
|
* written `meta-layer-inventory.md` (`\n`-joined) + `meta-layer-inventory.csv`
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* SHA-256 of every triple-fence block in a rule file (Iron Law preservation).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `iron_law_sha.py` (Phase 8 / Wave 8e). Mirrors the
|
|
6
6
|
* Python CLI contract byte-for-byte: flags, exit codes, stdout layout.
|
|
7
7
|
*
|
|
8
8
|
* Usage:
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Command surface for the file-first global knowledge-card store (ADR-100).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/knowledge_global_cli.py` (ADR-200). The CLI
|
|
6
|
+
* contract pins the historical contract exactly — same subcommands, flags,
|
|
7
7
|
* exit codes, stdout/stderr split, byte-identical messages, table layout,
|
|
8
8
|
* provenance write, and kill-switch no-op behavior. No behaviour changes.
|
|
9
9
|
*
|
|
@@ -392,7 +392,7 @@ function cmd_validate(args: { check_urls: boolean }): number {
|
|
|
392
392
|
return 0;
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
-
//
|
|
395
|
+
// the retired Python implementation spawns `python3 check_knowledge_cards.py --global
|
|
396
396
|
// --strict`. The TS twin spawns the sibling `check_knowledge_cards.ts`
|
|
397
397
|
// via the same tsx runtime (process spawn, not an import).
|
|
398
398
|
const tsxBin = path.join(
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* `agent-config linked-projects:list` — list opted-in IDE-attached siblings.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `linked_projects_list.py` (Phase 8 / Wave 8e).
|
|
6
6
|
*
|
|
7
7
|
* Phase 4 of `road-to-leaner-core-and-discovery`; closes the ADR-032 follow-up
|
|
8
8
|
* "expose the detector as a CLI subcommand for consumer reach". Pure wrapper over
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* P1.6 — umbrella runner for the agent-security self-audit linters.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_agent_security.py` (ADR-200 —
|
|
6
6
|
* Python→TS migration). Mirrors the CLI contract EXACTLY: the `--sarif PATH`
|
|
7
7
|
* / `--quiet` flags, the per-linter glyph lines, the aggregated summary, the
|
|
8
8
|
* byte-identical SARIF report (`json.dumps(indent=2)` parity), and the exit
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
* (road-to-security-pillar.md P1).
|
|
16
16
|
*
|
|
17
17
|
* The four child linters now have TypeScript twins, so this runner spawns each
|
|
18
|
-
* `<child>.ts --json` via the repo-local `tsx` binary (the Python
|
|
18
|
+
* `<child>.ts --json` via the repo-local `tsx` binary (the retired Python implementations
|
|
19
19
|
* were deleted in the ADR-200 migration). Each child is a separate process so
|
|
20
|
-
* its JSON findings are aggregated here exactly as the Python
|
|
20
|
+
* its JSON findings are aggregated here exactly as the retired Python implementation
|
|
21
21
|
* aggregated `subprocess.run` output.
|
|
22
22
|
*
|
|
23
23
|
* Usage:
|
|
@@ -51,7 +51,7 @@ const LINTERS: ReadonlyArray<[string, string]> = [
|
|
|
51
51
|
|
|
52
52
|
function _run(script: string): [number, Finding[]] {
|
|
53
53
|
// Spawn the child linter's `.ts` twin via the repo-local tsx binary
|
|
54
|
-
// (capture_output=True, text=True equivalent). Mirrors the Python
|
|
54
|
+
// (capture_output=True, text=True equivalent). Mirrors the retired Python implementation's
|
|
55
55
|
// `subprocess.run([sys.executable, HERE/<child>.py, "--json"])`, now that the
|
|
56
56
|
// children are TypeScript and the `.py` originals are deleted.
|
|
57
57
|
const proc = spawnSync(tsxBin, [path.join(_HERE, script), "--json"], {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
// Agent-Skills name-compliance linter (2026-06 Zed fix).
|
|
3
3
|
//
|
|
4
|
-
// TypeScript
|
|
4
|
+
// TypeScript port of the retired Python src/scripts/lint_agent_skill_names.py — same two
|
|
5
5
|
// blocking checks (command name == path-derived slug; skill name == dir),
|
|
6
6
|
// same Agent-Skills name pattern, same stdout/stderr split, same exit codes
|
|
7
7
|
// (0 clean / 1 violations / 3 internal error), same `--quiet` flag.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* CI guard for the `agents/` top-level layout.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_agents_layout.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
|
|
7
7
|
* / `--strict` flags (parsed by membership test, like the Python which
|
|
8
8
|
* scans `sys.argv[1:]`), exit codes (0 clean / warnings, 1 unknown
|
|
9
9
|
* flat-file violation), stdout/stderr split (everything goes to stdout),
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Thin-Root contract linter for AGENTS.md files (Phase 7).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_agents_md.py` (ADR-200, Phase 4 /
|
|
6
|
+
* Wave 4b). The CLI contract is pinned — `--quiet` detected by
|
|
7
7
|
* argv membership (no argparse), exit codes (0 / 1), stdout-only output,
|
|
8
8
|
* byte-identical messages, same target order. No behaviour changes —
|
|
9
|
-
*
|
|
9
|
+
* historical quirks preserved (consumers pin the exact behaviour).
|
|
10
10
|
*
|
|
11
11
|
* Enforces caps + pointer-ratio + pointer-anatomy + emergency-triage
|
|
12
12
|
* contract from `.agent-src.uncondensed/skills/agents-md-thin-root/SKILL.md`.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint archive notes under agents/evidence/archived-skills/.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_archived_skills.py` (ADR-200, Phase 4
|
|
6
|
+
* / Wave 4b). The CLI contract is pinned — `--quiet` flag, exit
|
|
7
7
|
* codes (0 contract holds, 1 violations), stdout/stderr split,
|
|
8
8
|
* byte-identical finding messages, same scan trees and order, same
|
|
9
9
|
* frontmatter parser, same `artefact_roots()` skill-root discovery.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint Phase-4 discovery frontmatter on every artefact.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_artefact_frontmatter.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--quiet`
|
|
7
7
|
* flag, exit codes (0 clean, 1 violation), stdout/stderr split,
|
|
8
8
|
* byte-identical finding messages (including Python-shaped list repr),
|
|
9
9
|
* same scan trees and order, same `validate_frontmatter.parse_frontmatter`
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Validate the A/B bench corpora + `docs/benchmark.md` shape.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_bench_ab.py` (ADR-200, Phase 4 /
|
|
6
|
+
* Wave 4b). The CLI contract is pinned — `--quiet` flag, exit
|
|
7
7
|
* codes (0 success, 1 first violation), stdout/stderr split, byte-identical
|
|
8
8
|
* finding messages (including the `lint_bench_ab: <relpath>: <msg>` prefix
|
|
9
9
|
* and the Python `repr()`-shaped value formatting), same check order, same
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint benchmark corpora under tests/eval/corpus-*.yaml.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_bench_corpus.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the Python CLI contract exactly: same scan scope + glob
|
|
7
7
|
* ordering, finding messages (including Python-repr rendering of bad values),
|
|
8
8
|
* stdout/stderr split, and exit codes.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Command → flow coverage lint (the Flows primary view).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_command_flow_coverage.py` (ADR-200,
|
|
6
6
|
* Phase 4 / Wave 4b). Mirrors the CLI contract EXACTLY — the `--quiet`
|
|
7
7
|
* argparse flag, exit codes (0 clean, 1 violations, 3 internal error),
|
|
8
8
|
* byte-identical stdout/stderr lines, the same violation ordering
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Routing-metadata + routing-eval linter for visible commands.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_command_routing.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the Python CLI contract exactly: same `--quiet` flag,
|
|
7
7
|
* scan scope (src/domains/**\/command.md, legacy packages fallback), file
|
|
8
8
|
* ordering, frontmatter parsing, finding messages, stdout/stderr split, and
|
|
9
9
|
* exit codes (0 clean, 1 violations, 3 internal error). No behaviour changes —
|
|
10
|
-
*
|
|
10
|
+
* historical quirks preserved (consumers pin the exact behaviour).
|
|
11
11
|
*
|
|
12
12
|
* Every VISIBLE command (tier 0/1) must carry:
|
|
13
13
|
* - `intent` — non-empty one-line existence justification
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Lint slash-command frontmatter for the `tier:` key.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_command_tiers.py` (ADR-200, Phase 4 /
|
|
6
6
|
* Wave 4b). Mirrors the Python CLI contract exactly: same scan scope, file
|
|
7
7
|
* ordering, finding messages, stdout/stderr split, and exit codes
|
|
8
8
|
* (return-code bitwise-OR accumulation across the domain + per-root +
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Controlled-verb linter for visible commands.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_command_verbs.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--baseline`
|
|
7
7
|
* / `--all` / `--quiet` flags, exit codes (0 clean, 1 violations, 3
|
|
8
8
|
* internal error), stdout/stderr split, byte-identical finding messages,
|
|
9
9
|
* same scan scope (forward-only git diff + working-tree status, or every
|
|
10
10
|
* visible command under `--all`), and the same sorted iteration order.
|
|
11
|
-
* snake_case kept.
|
|
11
|
+
* snake_case kept. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
|
|
12
12
|
*
|
|
13
13
|
* A VISIBLE command (tier 0/1) must have a leading token drawn from the
|
|
14
14
|
* approved verb allowlist in `src/config/discovery/command-verbs.yml`.
|
|
@@ -312,7 +312,7 @@ function parse_args(argv: readonly string[]): ParsedArgs {
|
|
|
312
312
|
|
|
313
313
|
function _argparse_error(message: string): never {
|
|
314
314
|
// Mirror Python argparse: usage line + program error, both on stderr,
|
|
315
|
-
// exit code 2. The prog name is the basename of the Python
|
|
315
|
+
// exit code 2. The prog name is the basename of the retired Python implementation.
|
|
316
316
|
process.stderr.write(
|
|
317
317
|
'usage: lint_command_verbs.py [-h] [--baseline BASELINE] [--all] [--quiet]\n',
|
|
318
318
|
);
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Commit-subject linter.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Phase 4 / Wave 4b). The CLI contract is
|
|
5
|
+
* Ported from the retired Python `src/scripts/lint_commit_subjects.py` (ADR-200,
|
|
6
|
+
* Phase 4 / Wave 4b). The CLI contract is pinned — `--base`
|
|
7
7
|
* / `--head` / `--quiet` flags, exit codes (0 clean / advisory, 1
|
|
8
8
|
* violations), stdout/stderr split, byte-identical finding messages
|
|
9
9
|
* (the issue strings are grepped by tests), and the same git invocation
|