@event4u/agent-config 8.4.1 → 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 +67 -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 +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/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/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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* runner and quality tools does this stack actually use, and what is the
|
|
12
12
|
* exact command to invoke them?* It is the engine behind 6.1.0 Step 6 — the
|
|
13
13
|
* toolchain resolver that lets one set of commands (`/tests execute`,
|
|
14
|
-
* `/tests create`, `/quality
|
|
14
|
+
* `/tests create`, `/fix quality`, `/review changes`, `/work`) adapt to
|
|
15
15
|
* phpunit / pest / vitest / jest / playwright / pytest / go / cargo instead
|
|
16
16
|
* of exploding into per-stack command variants.
|
|
17
17
|
*
|
|
@@ -460,7 +460,7 @@ quality:
|
|
|
460
460
|
# tokens. The user runs quality tools manually; remote CI is
|
|
461
461
|
# the authoritative gate. The agent runs a quality tool ONLY
|
|
462
462
|
# when one of three triggers fires:
|
|
463
|
-
# 1. the user explicitly asks this turn (e.g. /quality
|
|
463
|
+
# 1. the user explicitly asks this turn (e.g. /fix quality),
|
|
464
464
|
# 2. CI / the remote pipeline reports a concrete failure —
|
|
465
465
|
# then run exactly that failing check to reproduce + fix,
|
|
466
466
|
# 3. the new-gate carve-out below.
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Persisted record of the AI tools the user actually
|
|
3
|
-
* at `~/.event4u/agent-config/wizard-tools.json`.
|
|
4
|
-
* *selection* — distinct from `installed.lock`
|
|
5
|
-
* deployed to, which for an `--tools=all`
|
|
6
|
-
* machine tool *detection*.
|
|
2
|
+
* Persisted record of the AI tools AND capability packs the user actually
|
|
3
|
+
* selected in the wizard, at `~/.event4u/agent-config/wizard-tools.json`.
|
|
4
|
+
* This is the user's prior *selection* — distinct from `installed.lock`
|
|
5
|
+
* (every tool agent-config was deployed to, which for an `--tools=all`
|
|
6
|
+
* install is the full set) and from machine tool *detection*.
|
|
7
7
|
*
|
|
8
8
|
* Written by the apply route on a real (non-dry-run) wizard-v2 apply, and
|
|
9
|
-
* read by `detect-tools`
|
|
10
|
-
*
|
|
11
|
-
* pre-selecting every installed tool.
|
|
9
|
+
* read by `detect-tools` / the manifest endpoint so a repeat run pre-selects
|
|
10
|
+
* exactly the prior selection. Empty / missing → first run → Step 1 falls
|
|
11
|
+
* back to pre-selecting every installed tool.
|
|
12
|
+
*
|
|
13
|
+
* `packs` was added by road-to-setup-experience (council 2026-07-08,
|
|
14
|
+
* lockfile-extension over settings-YAML surgery): the `packs:` list in
|
|
15
|
+
* `.agent-settings.yml` is only rendered into FRESH settings files, so on
|
|
16
|
+
* machines with an existing file the selection was never persisted anywhere
|
|
17
|
+
* — the wizard forgot installed packs between runs.
|
|
12
18
|
*
|
|
13
19
|
* `AGENT_CONFIG_WIZARD_TOOLS` overrides the path (tests only).
|
|
14
20
|
*/
|
|
@@ -23,17 +29,39 @@ function selectedToolsPath(): string {
|
|
|
23
29
|
return resolve(homedir(), '.event4u', 'agent-config', 'wizard-tools.json');
|
|
24
30
|
}
|
|
25
31
|
|
|
26
|
-
export function writeSelectedTools(tools: string[]): void {
|
|
32
|
+
export function writeSelectedTools(tools: string[], packs?: string[]): void {
|
|
27
33
|
try {
|
|
28
34
|
const path = selectedToolsPath();
|
|
29
35
|
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
30
|
-
|
|
36
|
+
// Preserve a previously recorded packs list when the caller does not
|
|
37
|
+
// pass one (older call sites) — never silently drop the selection.
|
|
38
|
+
const record: { tools: string[]; packs?: string[] } = { tools };
|
|
39
|
+
const packsToWrite = packs ?? readSelectedPacks();
|
|
40
|
+
if (packsToWrite.length > 0 || packs !== undefined) record.packs = packsToWrite;
|
|
41
|
+
writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
31
42
|
} catch {
|
|
32
43
|
// Best-effort: a failed write just means the next run falls back to
|
|
33
44
|
// pre-selecting installed tools.
|
|
34
45
|
}
|
|
35
46
|
}
|
|
36
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Return the recorded pack selection, or `[]` when absent / unreadable.
|
|
50
|
+
* Optionally intersect with the known-pack set so a stale id never surfaces.
|
|
51
|
+
*/
|
|
52
|
+
export function readSelectedPacks(knownIds?: ReadonlySet<string>): string[] {
|
|
53
|
+
try {
|
|
54
|
+
const raw = readFileSync(selectedToolsPath(), 'utf8');
|
|
55
|
+
const parsed = JSON.parse(raw) as { packs?: unknown };
|
|
56
|
+
const packs = Array.isArray(parsed.packs)
|
|
57
|
+
? parsed.packs.filter((p): p is string => typeof p === 'string')
|
|
58
|
+
: [];
|
|
59
|
+
return knownIds === undefined ? packs : packs.filter((p) => knownIds.has(p));
|
|
60
|
+
} catch {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
37
65
|
/**
|
|
38
66
|
* Return the recorded selection, or `[]` when absent / unreadable. Optionally
|
|
39
67
|
* intersect with the known-tool set so a stale id never surfaces.
|
|
@@ -250,6 +250,37 @@ export interface MainOptions {
|
|
|
250
250
|
err?: OutSink;
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Live-session notice for reaped Claude Code plugin caches — or null when no
|
|
255
|
+
* reap touched `~/.claude/plugins/`.
|
|
256
|
+
*
|
|
257
|
+
* Removing an installed plugin's cache does NOT reach into Claude Code
|
|
258
|
+
* sessions that are already running: they registered the plugin's hooks at
|
|
259
|
+
* session start and keep firing them, so every subsequent event logs
|
|
260
|
+
* `Failed to run: Plugin directory does not exist: …/plugins/cache/… — run
|
|
261
|
+
* /plugin to reinstall` until the session restarts. Claude Code's own
|
|
262
|
+
* `/plugin to reinstall` hint would recreate exactly the duplicate surface
|
|
263
|
+
* converge just removed — the correct remedy is a restart, so converge says
|
|
264
|
+
* so explicitly (road-to-truth-and-reference-hygiene follow-up, 2026-07-08).
|
|
265
|
+
*/
|
|
266
|
+
export function live_session_notice(executed_reaps: readonly string[]): string | null {
|
|
267
|
+
const hit = executed_reaps.some((r) => r.startsWith('~/.claude/plugins/'));
|
|
268
|
+
if (!hit) {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
return (
|
|
272
|
+
'⚠️ Live-session note: Claude Code sessions that were ALREADY RUNNING still\n' +
|
|
273
|
+
' hold the removed plugin\'s hook registrations. Until you restart them,\n' +
|
|
274
|
+
' every event logs a non-blocking\n' +
|
|
275
|
+
' "Failed to run: Plugin directory does not exist: …/plugins/cache/…"\n' +
|
|
276
|
+
' error. This is cosmetic for new sessions but means the affected LIVE\n' +
|
|
277
|
+
' session\'s plugin-sourced hooks no longer run — restart Claude Code\n' +
|
|
278
|
+
' sessions to clear it. Do NOT follow the error\'s "/plugin to reinstall"\n' +
|
|
279
|
+
' hint: reinstalling recreates the duplicate surface converge just removed\n' +
|
|
280
|
+
' (the ~/.claude/ file projection already carries content AND hooks).'
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
|
|
253
284
|
export function main(argv: string[] | null = null, opts: MainOptions = {}): number {
|
|
254
285
|
let args: Args;
|
|
255
286
|
try {
|
|
@@ -329,6 +360,7 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
|
|
|
329
360
|
// Perform the cleanup — matrix-declared actions ONLY.
|
|
330
361
|
let failures = 0;
|
|
331
362
|
const report: string[] = [];
|
|
363
|
+
const executed_reaps: string[] = [];
|
|
332
364
|
for (const f of findings) {
|
|
333
365
|
if (f.command) {
|
|
334
366
|
_print(out, `→ ${f.command}`);
|
|
@@ -351,6 +383,7 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
|
|
|
351
383
|
try {
|
|
352
384
|
fs.rmSync(abs, { recursive: true, force: true });
|
|
353
385
|
report.push(`${f.tool}: reaped package-tagged orphan \`${reap}\``);
|
|
386
|
+
executed_reaps.push(reap);
|
|
354
387
|
_print(out, `→ reaped ${reap}`);
|
|
355
388
|
} catch (e) {
|
|
356
389
|
failures += 1;
|
|
@@ -367,6 +400,11 @@ export function main(argv: string[] | null = null, opts: MainOptions = {}): numb
|
|
|
367
400
|
if (report.length === 0) {
|
|
368
401
|
_print(out, ' (no actions completed)');
|
|
369
402
|
}
|
|
403
|
+
const notice = live_session_notice(executed_reaps);
|
|
404
|
+
if (notice !== null) {
|
|
405
|
+
_print(out);
|
|
406
|
+
_print(out, notice);
|
|
407
|
+
}
|
|
370
408
|
_print(
|
|
371
409
|
out,
|
|
372
410
|
'Rollback hint: a removed Claude Code plugin can be reinstalled with\n' +
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* `agent-config doctor` — install + manifest health report (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_doctor.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* report lines (✅/❌/⚠️/⏭️ glyphs, ordering, fix hints), same filesystem
|
|
9
9
|
* semantics. No behaviour changes — latent quirks are replicated, not fixed.
|
|
@@ -731,6 +731,7 @@ const CHECK_IDS = [
|
|
|
731
731
|
'scope',
|
|
732
732
|
'global-binary',
|
|
733
733
|
'claude-plugin',
|
|
734
|
+
'claude-command-wrappers',
|
|
734
735
|
'surface-state',
|
|
735
736
|
'hook-wiring',
|
|
736
737
|
'stale-orphans',
|
|
@@ -745,6 +746,7 @@ const CHECK_IDS = [
|
|
|
745
746
|
'council-cli',
|
|
746
747
|
'unsupported-combos',
|
|
747
748
|
'wizard-state',
|
|
749
|
+
'settings-review-pending',
|
|
748
750
|
] as const;
|
|
749
751
|
|
|
750
752
|
/** Checks that need only the project root and run regardless of a lockfile. */
|
|
@@ -752,6 +754,7 @@ const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
|
|
|
752
754
|
'scope',
|
|
753
755
|
'global-binary',
|
|
754
756
|
'claude-plugin',
|
|
757
|
+
'claude-command-wrappers',
|
|
755
758
|
'surface-state',
|
|
756
759
|
'hook-wiring',
|
|
757
760
|
'stale-orphans',
|
|
@@ -762,6 +765,7 @@ const GLOBAL_CHECK_IDS: ReadonlySet<string> = new Set([
|
|
|
762
765
|
'tier-usage-readiness',
|
|
763
766
|
'council-cli',
|
|
764
767
|
'wizard-state',
|
|
768
|
+
'settings-review-pending',
|
|
765
769
|
]);
|
|
766
770
|
|
|
767
771
|
/** Checks that genuinely cannot run without the project manifest. */
|
|
@@ -1077,6 +1081,69 @@ function _check_claude_plugin(): Dict {
|
|
|
1077
1081
|
};
|
|
1078
1082
|
}
|
|
1079
1083
|
|
|
1084
|
+
/**
|
|
1085
|
+
* Claude Code flat-command discovery mitigation (council 2026-07-08,
|
|
1086
|
+
* cc-user-command-discovery): Claude Code ≤ 2.1.204 does not register FLAT
|
|
1087
|
+
* user-scope command files (`~/.claude/commands/<name>.md`) — nested
|
|
1088
|
+
* commands and user-scope skills do. The installer therefore projects
|
|
1089
|
+
* tier-0/1 visible flat commands as skill wrappers. This check flags the
|
|
1090
|
+
* silent-failure state: a projection deployed by an OLDER release that
|
|
1091
|
+
* still carries visible flat commands without wrappers (users see
|
|
1092
|
+
* "Unknown command" for /commit etc. with zero error anywhere).
|
|
1093
|
+
* Probe = `commit` (the canonical always-shipped visible flat command);
|
|
1094
|
+
* static file checks only — never a live model call.
|
|
1095
|
+
*/
|
|
1096
|
+
function _check_claude_command_wrappers(): Dict {
|
|
1097
|
+
const claude = shutilWhich('claude');
|
|
1098
|
+
if (claude === null) {
|
|
1099
|
+
return {
|
|
1100
|
+
id: 'claude-command-wrappers',
|
|
1101
|
+
status: 'skipped',
|
|
1102
|
+
message: 'Claude Code CLI not on PATH — wrapper check not applicable',
|
|
1103
|
+
remedy: '',
|
|
1104
|
+
};
|
|
1105
|
+
}
|
|
1106
|
+
const anchor = path.join(os.homedir(), '.claude');
|
|
1107
|
+
const commands_dir = path.join(anchor, 'commands');
|
|
1108
|
+
if (!isDir(commands_dir)) {
|
|
1109
|
+
return {
|
|
1110
|
+
id: 'claude-command-wrappers',
|
|
1111
|
+
status: 'skipped',
|
|
1112
|
+
message: 'no ~/.claude/commands projection — nothing to check',
|
|
1113
|
+
remedy: '',
|
|
1114
|
+
};
|
|
1115
|
+
}
|
|
1116
|
+
const flat_probe = fs.existsSync(path.join(commands_dir, 'commit.md'));
|
|
1117
|
+
const wrapper_probe = fs.existsSync(path.join(anchor, 'skills', 'commit', 'SKILL.md'));
|
|
1118
|
+
if (wrapper_probe) {
|
|
1119
|
+
return {
|
|
1120
|
+
id: 'claude-command-wrappers',
|
|
1121
|
+
status: 'ok',
|
|
1122
|
+
message:
|
|
1123
|
+
'flat-command skill wrappers present (Claude Code flat-command ' +
|
|
1124
|
+
'discovery workaround active)',
|
|
1125
|
+
remedy: '',
|
|
1126
|
+
};
|
|
1127
|
+
}
|
|
1128
|
+
if (flat_probe) {
|
|
1129
|
+
return {
|
|
1130
|
+
id: 'claude-command-wrappers',
|
|
1131
|
+
status: 'warn',
|
|
1132
|
+
message:
|
|
1133
|
+
'visible flat commands deployed WITHOUT skill wrappers — Claude Code ' +
|
|
1134
|
+
'\u2264 2.1.204 does not register flat user-scope command files, so ' +
|
|
1135
|
+
'/commit and other visible commands appear as "Unknown command"',
|
|
1136
|
+
remedy: 'agent-config refresh --global (re-deploys with the wrapper projection)',
|
|
1137
|
+
};
|
|
1138
|
+
}
|
|
1139
|
+
return {
|
|
1140
|
+
id: 'claude-command-wrappers',
|
|
1141
|
+
status: 'skipped',
|
|
1142
|
+
message: 'no visible flat commands in the projection — nothing to wrap',
|
|
1143
|
+
remedy: '',
|
|
1144
|
+
};
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1080
1147
|
/**
|
|
1081
1148
|
* Matrix-driven duplicate-surface check (road-to-install-path-convergence
|
|
1082
1149
|
* Phase 2): reads src/config/surface-matrix.yml and flags every tool whose
|
|
@@ -1167,6 +1234,7 @@ function pathExistsAny(p: string): boolean {
|
|
|
1167
1234
|
}
|
|
1168
1235
|
}
|
|
1169
1236
|
|
|
1237
|
+
|
|
1170
1238
|
/**
|
|
1171
1239
|
* Managed hook wiring (single-surface model): the deterministic hook matrix
|
|
1172
1240
|
* must be registered in ~/.claude/settings.json AND the dispatch target
|
|
@@ -1900,6 +1968,43 @@ function _check_wizard_state(): Dict {
|
|
|
1900
1968
|
};
|
|
1901
1969
|
}
|
|
1902
1970
|
|
|
1971
|
+
/**
|
|
1972
|
+
* Pending settings-surface review (road-to-settings-change-review): the
|
|
1973
|
+
* installer writes `state/settings-delta.json` when an upgrade changed
|
|
1974
|
+
* defaults / enum vocabularies / added settings. The flag persists until
|
|
1975
|
+
* the user resolves the review form (`agent-config config` → Settings →
|
|
1976
|
+
* banner) — this check keeps it visible in every doctor run.
|
|
1977
|
+
*/
|
|
1978
|
+
function _check_settings_review_pending(): Dict {
|
|
1979
|
+
const delta_pth = path.join(user_global_paths.event4u_root(), 'state', 'settings-delta.json');
|
|
1980
|
+
if (!pathExists(delta_pth)) {
|
|
1981
|
+
return {
|
|
1982
|
+
id: 'settings-review-pending',
|
|
1983
|
+
status: 'ok',
|
|
1984
|
+
message: 'no pending settings-surface changes',
|
|
1985
|
+
remedy: '',
|
|
1986
|
+
};
|
|
1987
|
+
}
|
|
1988
|
+
let summary = '';
|
|
1989
|
+
try {
|
|
1990
|
+
const data = JSON.parse(readText0(delta_pth)) as {
|
|
1991
|
+
oldVersion?: string;
|
|
1992
|
+
newVersion?: string;
|
|
1993
|
+
changes?: unknown[];
|
|
1994
|
+
};
|
|
1995
|
+
const n = Array.isArray(data.changes) ? data.changes.length : 0;
|
|
1996
|
+
summary = `${n} change${n === 1 ? '' : 's'} (${data.oldVersion ?? '?'} → ${data.newVersion ?? '?'})`;
|
|
1997
|
+
} catch {
|
|
1998
|
+
summary = 'unreadable delta file';
|
|
1999
|
+
}
|
|
2000
|
+
return {
|
|
2001
|
+
id: 'settings-review-pending',
|
|
2002
|
+
status: 'warn',
|
|
2003
|
+
message: `settings surface changed on upgrade — ${summary} awaiting review`,
|
|
2004
|
+
remedy: 'agent-config config (Settings → “Review changes” banner)',
|
|
2005
|
+
};
|
|
2006
|
+
}
|
|
2007
|
+
|
|
1903
2008
|
interface JsonDecodeError {
|
|
1904
2009
|
msg: string;
|
|
1905
2010
|
lineno: number;
|
|
@@ -2008,6 +2113,7 @@ function _run_checks(
|
|
|
2008
2113
|
scope: () => _check_scope(project_root),
|
|
2009
2114
|
'global-binary': () => _check_global_binary(project_root),
|
|
2010
2115
|
'claude-plugin': _check_claude_plugin,
|
|
2116
|
+
'claude-command-wrappers': _check_claude_command_wrappers,
|
|
2011
2117
|
'surface-state': _check_surface_state,
|
|
2012
2118
|
'hook-wiring': _check_hook_wiring,
|
|
2013
2119
|
'stale-orphans': _check_stale_orphans,
|
|
@@ -2028,6 +2134,7 @@ function _run_checks(
|
|
|
2028
2134
|
'council-cli': () => _check_council_cli(project_root),
|
|
2029
2135
|
'unsupported-combos': () => _check_unsupported_combos(manifest),
|
|
2030
2136
|
'wizard-state': _check_wizard_state,
|
|
2137
|
+
'settings-review-pending': _check_settings_review_pending,
|
|
2031
2138
|
};
|
|
2032
2139
|
const out: Dict[] = [];
|
|
2033
2140
|
for (const cid of CHECK_IDS) {
|
|
@@ -2082,6 +2189,7 @@ function _run_checks_no_manifest(
|
|
|
2082
2189
|
scope: () => _check_scope(project_root),
|
|
2083
2190
|
'global-binary': () => _check_global_binary(project_root),
|
|
2084
2191
|
'claude-plugin': _check_claude_plugin,
|
|
2192
|
+
'claude-command-wrappers': _check_claude_command_wrappers,
|
|
2085
2193
|
'surface-state': _check_surface_state,
|
|
2086
2194
|
'hook-wiring': _check_hook_wiring,
|
|
2087
2195
|
'stale-orphans': _check_stale_orphans,
|
|
@@ -2096,6 +2204,7 @@ function _run_checks_no_manifest(
|
|
|
2096
2204
|
'council-cli': () => _check_council_cli(project_root),
|
|
2097
2205
|
'unsupported-combos': () => _skipped_manifest_check('unsupported-combos'),
|
|
2098
2206
|
'wizard-state': _check_wizard_state,
|
|
2207
|
+
'settings-review-pending': _check_settings_review_pending,
|
|
2099
2208
|
};
|
|
2100
2209
|
const out: Dict[] = [];
|
|
2101
2210
|
for (const cid of CHECK_IDS) {
|
|
@@ -2572,6 +2681,7 @@ export {
|
|
|
2572
2681
|
_check_lockfile_freshness,
|
|
2573
2682
|
_check_global_binary,
|
|
2574
2683
|
_check_claude_plugin,
|
|
2684
|
+
_check_claude_command_wrappers,
|
|
2575
2685
|
_check_bridge_drift,
|
|
2576
2686
|
_check_mcp_mode,
|
|
2577
2687
|
_check_offline_readiness,
|
|
@@ -2582,6 +2692,7 @@ export {
|
|
|
2582
2692
|
_check_council_cli,
|
|
2583
2693
|
_check_unsupported_combos,
|
|
2584
2694
|
_check_wizard_state,
|
|
2695
|
+
_check_settings_review_pending,
|
|
2585
2696
|
_run_checks,
|
|
2586
2697
|
_skipped_manifest_check,
|
|
2587
2698
|
_check_bridge_drift_no_manifest,
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* `agent-config explain` — print the decision chain behind an outcome
|
|
4
4
|
* (TypeScript twin).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* migration). The CLI contract
|
|
6
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_explain.py` (ADR-200, py2ts
|
|
7
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
8
8
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
9
9
|
* output. No behaviour changes — latent quirks are replicated, not fixed.
|
|
10
10
|
*
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* `agent-config export` — eject a tool's canonical content into the project
|
|
3
3
|
* (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_export.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* output, same filesystem effects. No behaviour changes; latent quirks are
|
|
9
9
|
* replicated and flagged inline, not fixed.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* and never calls `process.exit()`. argparse usage errors throw
|
|
20
20
|
* `ArgparseExit(2)`; `-h`/`--help` throws `ArgparseExit(0)`.
|
|
21
21
|
* - The 9 marker constants and templates resolve to the same byte content as
|
|
22
|
-
* the Python
|
|
22
|
+
* the retired Python implementations: marker constants are re-exported from the
|
|
23
23
|
* `install.ts` twin (single source of truth); templates are read from
|
|
24
24
|
* `dist/agent-src/templates` via `_from_template` exactly as Python does.
|
|
25
25
|
* - `hashlib.sha256(content.encode("utf-8")).hexdigest()` →
|
|
@@ -43,7 +43,19 @@ export interface FleetRepo {
|
|
|
43
43
|
readonly tools?: string;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Parsed fleet config.
|
|
48
|
+
*
|
|
49
|
+
* INPUT-SCHEMA STABILITY: **stable, v1** (marked 2026-07-08,
|
|
50
|
+
* road-to-truth-and-reference-hygiene P3 — the output report was versioned
|
|
51
|
+
* from day one via {@link FleetReport.schema_version}; the input contract
|
|
52
|
+
* deserves the same explicitness). The accepted `fleet.yaml` shape is
|
|
53
|
+
* `repos: [<path-string> | {path, tools?}]` + optional `max_concurrency`;
|
|
54
|
+
* unknown keys are IGNORED (tolerant reader — forward-compatible by
|
|
55
|
+
* construction). Additive optional keys bump nothing; a breaking key
|
|
56
|
+
* rename/removal or semantics change requires an explicit `schema_version`
|
|
57
|
+
* field in the input and a reader that accepts the versionless v1 form.
|
|
58
|
+
*/
|
|
47
59
|
export interface FleetSpec {
|
|
48
60
|
readonly repos: readonly FleetRepo[];
|
|
49
61
|
readonly maxConcurrency: number;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* `agent-config migrate` — one-shot, opinionated migration off every legacy
|
|
3
3
|
* install / state shape (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_migrate.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* output, same filesystem effects. No behaviour changes — latent quirks are
|
|
9
9
|
* replicated and flagged inline, not fixed.
|
|
@@ -82,7 +82,7 @@ import { resolve_project_root } from '../_lib/agent_settings.js';
|
|
|
82
82
|
// specifier into the uncompiled template tree (`.ts` only) and crash the whole
|
|
83
83
|
// CLI at module load — breaking every command (e.g. `agent-config init`).
|
|
84
84
|
// `_load_state_migrator` spawns it via tsx instead (the install orchestrator
|
|
85
|
-
// pattern), keeping the migrator lazy like the Python
|
|
85
|
+
// pattern), keeping the migrator lazy like the retired Python implementation.
|
|
86
86
|
|
|
87
87
|
const PACKAGE_NAME_NPM = '@event4u/agent-config';
|
|
88
88
|
const PACKAGE_NAME_COMPOSER = 'event4u/agent-config';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `agent-config prune` — remove orphaned project bridge markers (TypeScript twin).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* migration). The CLI contract
|
|
4
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_prune.py` (ADR-200, py2ts
|
|
5
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
6
6
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
7
7
|
* output, same filesystem effects. No behaviour changes — latent quirks are
|
|
8
8
|
* replicated and flagged inline, not fixed.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* `agent-config refresh` — idempotent re-install, no version change
|
|
4
4
|
* (TypeScript twin).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* migration). The CLI contract
|
|
6
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_refresh.py` (ADR-200, py2ts
|
|
7
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
8
8
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
9
9
|
* output, same filesystem effects, same subprocess argv/cwd/env. No behaviour
|
|
10
10
|
* changes — latent quirks are replicated and flagged inline, not fixed.
|
|
@@ -145,7 +145,7 @@ const CONSUMER_BRIDGE_MARKER_RELPATH = path.join('agents', '.event4u-bridge.yml'
|
|
|
145
145
|
* agent-config package source tree. Shared by the bridge-marker writer guard
|
|
146
146
|
* and the `_is_source_repo` monorepo probe so the literal lives in one place
|
|
147
147
|
* (the only other textual mention is the `_is_source_repo` docstring, matching
|
|
148
|
-
* the Python
|
|
148
|
+
* the retired Python implementation's two occurrences for the ADR-051 path-count parity).
|
|
149
149
|
*/
|
|
150
150
|
const SRC_MARKER_DIR = '.agent-src.uncondensed';
|
|
151
151
|
|
|
@@ -215,7 +215,7 @@ function atomicWrite0644(target: string, body: string, prefix: string): void {
|
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
/**
|
|
218
|
-
*
|
|
218
|
+
* Mirrors `install._write_consumer_bridge_marker` (module-private). Returns the
|
|
219
219
|
* written path, or `null` when skipped (dev mode / source repo).
|
|
220
220
|
*/
|
|
221
221
|
function _write_consumer_bridge_marker(
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* `agent-config settings:check` — validate `.agent-settings.yml` against the
|
|
3
3
|
* supported YAML subset (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_settings_check.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* output. Read-only — no filesystem mutation, no network. No behaviour
|
|
9
9
|
* changes; latent quirks are replicated and flagged inline, not fixed.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* `agent-config settings:migrate` — lift project-local settings into the
|
|
3
3
|
* global store (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* py2ts migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_settings_migrate.py` (ADR-200,
|
|
6
|
+
* py2ts migration). The CLI contract pins the historical contract exactly —
|
|
7
7
|
* same flags, same exit codes, same stdout/stderr split, byte-identical
|
|
8
8
|
* emitted output, same filesystem effects. No behaviour changes; latent quirks
|
|
9
9
|
* are replicated and flagged inline, not fixed.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* `agent-config sync` — replay the installed-tools manifest (ADR-008)
|
|
3
3
|
* (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_sync.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* output, same installer invocation. No behaviour changes; latent quirks are
|
|
9
9
|
* replicated and flagged inline, not fixed.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `agent-config uninstall` — remove bridge markers (Phase 4.1) (TypeScript twin).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* migration). The CLI contract
|
|
4
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_uninstall.py` (ADR-200, py2ts
|
|
5
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
6
6
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
7
7
|
* output, same filesystem effects. No behaviour changes — latent quirks are
|
|
8
8
|
* replicated and flagged inline, not fixed.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* `agent-config update` — explicit, opt-in update of the version pin
|
|
3
3
|
* (TypeScript twin).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* migration). The CLI contract
|
|
5
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_update.py` (ADR-200, py2ts
|
|
6
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
7
7
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
8
8
|
* output, same filesystem effects, same subprocess argv/cwd/env. No behaviour
|
|
9
9
|
* changes — latent quirks are replicated and flagged inline, not fixed.
|
|
@@ -140,23 +140,23 @@ function _splitlinesKeepends(text: string): string[] {
|
|
|
140
140
|
// Replicated module-private helpers (see header parity note)
|
|
141
141
|
// ---------------------------------------------------------------------------
|
|
142
142
|
|
|
143
|
-
/**
|
|
143
|
+
/** Mirrors `agent_settings._canonical_settings_path` (file-local private). */
|
|
144
144
|
function _canonical_settings_path(project_root: string): string {
|
|
145
145
|
return path.join(project_root, ...LOCAL_PROJECT_SUBDIR, DEFAULT_PROJECT_FILE);
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
/**
|
|
148
|
+
/** Mirrors `agent_settings._local_settings_path` (file-local private). */
|
|
149
149
|
function _local_settings_path(project_root: string): string {
|
|
150
150
|
return path.join(project_root, ...LOCAL_PROJECT_SUBDIR, LOCAL_PROJECT_FILE);
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
/**
|
|
153
|
+
/** Mirrors `agent_settings._resolve` — absolute, normalised path. */
|
|
154
154
|
function _resolve(p: string): string {
|
|
155
155
|
return path.resolve(p);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
/**
|
|
159
|
-
*
|
|
159
|
+
* Mirrors `agent_settings._resolve_cascade_paths` (file-local private).
|
|
160
160
|
*
|
|
161
161
|
* Returns the ordered cascade of in-project settings files (shallow → deep).
|
|
162
162
|
*/
|
|
@@ -199,7 +199,7 @@ function _resolve_cascade_paths(cwd: string | null, project_path: string | null)
|
|
|
199
199
|
return out;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
/**
|
|
202
|
+
/** Mirrors `update_check._read_state` (module-private). */
|
|
203
203
|
function _read_state(state_path: string): Record<string, unknown> {
|
|
204
204
|
try {
|
|
205
205
|
const raw = fs.readFileSync(state_path, 'utf-8');
|
|
@@ -213,7 +213,7 @@ function _read_state(state_path: string): Record<string, unknown> {
|
|
|
213
213
|
return {};
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
/**
|
|
216
|
+
/** Mirrors `update_check._write_state` (module-private). */
|
|
217
217
|
function _write_state(state_path: string, payload: Record<string, unknown>): void {
|
|
218
218
|
const parent = path.dirname(state_path);
|
|
219
219
|
fs.mkdirSync(parent, { recursive: true });
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* `agent-config upgrade` — fetch + install the latest global binary + refresh
|
|
4
4
|
* (TypeScript twin).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* migration). The CLI contract
|
|
6
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_upgrade.py` (ADR-200, py2ts
|
|
7
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
8
8
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
9
9
|
* output, same filesystem effects, same subprocess argv/cwd/env. No behaviour
|
|
10
10
|
* changes — latent quirks are replicated and flagged inline, not fixed.
|
|
@@ -644,7 +644,8 @@ export async function main(argv: string[] | null = null, options: MainOptions =
|
|
|
644
644
|
_print(
|
|
645
645
|
out,
|
|
646
646
|
'✅ agent-config upgraded' +
|
|
647
|
-
(doctor_rc === 0 ? ' — doctor green.' : ' — review the doctor findings above.')
|
|
647
|
+
(doctor_rc === 0 ? ' — doctor green.' : ' — review the doctor findings above.') +
|
|
648
|
+
' Tune settings any time with `agent-config config`.',
|
|
648
649
|
);
|
|
649
650
|
return 0;
|
|
650
651
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* `agent-config validate` — drift detection for the installed-tools manifest
|
|
4
4
|
* (TypeScript twin).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* migration). The CLI contract
|
|
6
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_validate.py` (ADR-200, py2ts
|
|
7
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
8
8
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
9
9
|
* output, same filesystem semantics. No behaviour changes — latent quirks are
|
|
10
10
|
* replicated, not fixed.
|
|
@@ -77,7 +77,7 @@ class ArgparseExit extends Error {
|
|
|
77
77
|
/**
|
|
78
78
|
* `pathlib.Path(p)` string form — collapse repeated separators and strip a
|
|
79
79
|
* trailing separator (Python `str(Path("~/.cursor/"))` → `~/.cursor`), keeping
|
|
80
|
-
* a lone root `/`. Mirrors how the Python
|
|
80
|
+
* a lone root `/`. Mirrors how the retired Python implementation wraps every marker/anchor in
|
|
81
81
|
* `Path(...)` before `str()`-ing it into a message.
|
|
82
82
|
*/
|
|
83
83
|
function pyPathStr(p: string): string {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `agent-config versions` — list available package versions (TypeScript twin).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* migration). The CLI contract
|
|
4
|
+
* Ported from the retired Python `src/scripts/_cli/cmd_versions.py` (ADR-200, py2ts
|
|
5
|
+
* migration). The CLI contract pins the historical contract exactly — same
|
|
6
6
|
* flags, same exit codes, same stdout/stderr split, byte-identical emitted
|
|
7
7
|
* output, same subprocess invocation. Read-only (queries npm; never mutates).
|
|
8
8
|
* No behaviour changes; latent quirks are replicated and flagged inline.
|