@event4u/agent-config 8.1.0 → 8.3.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 +3 -3
- package/CHANGELOG.md +83 -292
- package/MIGRATION.md +18 -0
- package/README.md +86 -3
- package/dist/agent-src/commands/agents/init.md +3 -3
- package/dist/agent-src/commands/chat-history/import.md +5 -5
- package/dist/agent-src/commands/chat-history.md +1 -1
- package/dist/agent-src/commands/condense.md +1 -1
- package/dist/agent-src/commands/context/create.md +1 -1
- package/dist/agent-src/commands/council/analysis.md +2 -2
- package/dist/agent-src/commands/council/default.md +3 -3
- package/dist/agent-src/commands/council/design.md +2 -2
- package/dist/agent-src/commands/council/optimize.md +1 -1
- package/dist/agent-src/commands/council/pr.md +2 -2
- package/dist/agent-src/commands/council.md +1 -1
- package/dist/agent-src/commands/feature/plan.md +1 -1
- package/dist/agent-src/commands/ghostwriter/list.md +1 -1
- package/dist/agent-src/commands/ghostwriter/write.md +1 -1
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/implement-ticket.md +2 -2
- package/dist/agent-src/commands/judge/on-diff.md +1 -1
- package/dist/agent-src/commands/judge/steps.md +3 -1
- package/dist/agent-src/commands/memory/add.md +2 -2
- package/dist/agent-src/commands/memory/learn-low-impact.md +1 -1
- package/dist/agent-src/commands/memory/load.md +1 -1
- package/dist/agent-src/commands/memory/mine-session.md +1 -1
- package/dist/agent-src/commands/memory/promote.md +1 -1
- package/dist/agent-src/commands/memory/propose.md +1 -1
- package/dist/agent-src/commands/mission/upgrade.md +1 -1
- package/dist/agent-src/commands/module/explore.md +3 -3
- package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +1 -1
- package/dist/agent-src/commands/optimize-project.md +1 -1
- package/dist/agent-src/commands/orchestrate.md +2 -2
- package/dist/agent-src/commands/project-analyze.md +1 -1
- package/dist/agent-src/commands/project-health.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +2 -2
- package/dist/agent-src/commands/roadmap/process-full.md +3 -1
- package/dist/agent-src/commands/roadmap/process-phase.md +4 -2
- package/dist/agent-src/commands/roadmap/process-step.md +3 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/sync-agent-settings.md +7 -7
- package/dist/agent-src/commands/sync-gitignore/fix.md +3 -3
- package/dist/agent-src/commands/sync-gitignore.md +4 -4
- package/dist/agent-src/commands/work.md +3 -3
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +1 -1
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -7
- package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +9 -4
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +10 -9
- package/dist/agent-src/contexts/execution/verification-mechanics.md +13 -1
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/presets/README.md +1 -1
- package/dist/agent-src/profiles/README.md +1 -1
- package/dist/agent-src/rules/architecture.md +2 -2
- package/dist/agent-src/rules/context-hygiene.md +2 -2
- package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
- package/dist/agent-src/rules/media-governance-routing.md +1 -1
- package/dist/agent-src/rules/no-roadmap-references.md +3 -3
- package/dist/agent-src/rules/preservation-guard.md +2 -2
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
- package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
- package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
- package/dist/agent-src/rules/source-confidentiality.md +1 -1
- package/dist/agent-src/rules/telegraph-speak.md +1 -1
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/ui-audit-gate.md +1 -1
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
- package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
- package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
- package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
- package/dist/agent-src/skills/api-design/SKILL.md +1 -1
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
- package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
- package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
- package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
- package/dist/agent-src/skills/code-review/SKILL.md +3 -4
- package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
- package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
- package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
- package/dist/agent-src/skills/database/SKILL.md +2 -1
- package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
- package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
- package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
- package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
- package/dist/agent-src/skills/flux/SKILL.md +10 -9
- package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
- package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
- package/dist/agent-src/skills/livewire/SKILL.md +10 -9
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
- package/dist/agent-src/skills/module-management/SKILL.md +2 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
- package/dist/agent-src/skills/premortem/SKILL.md +1 -1
- package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
- package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
- package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
- package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
- package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
- package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
- package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
- package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
- package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
- package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
- package/dist/agent-src/templates/agent-settings.md +34 -25
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
- package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +4 -4
- package/dist/agent-src/templates/copilot-instructions.md +1 -1
- package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
- package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
- package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
- package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
- package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
- package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
- package/dist/agent-src/templates/roadmaps.md +9 -4
- package/dist/agent-src/templates/rule.md +3 -3
- package/dist/agent-src/templates/scripts/README.md +6 -6
- package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
- package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
- package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
- package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
- package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
- package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
- package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
- package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
- package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
- package/dist/agent-src/templates/skill.md +2 -2
- package/dist/cli/python/knowledge_ingest.js +24 -3
- package/dist/cli/python/knowledge_ingest.js.map +1 -1
- package/dist/cli/python/workspace_analytics.js +23 -3
- package/dist/cli/python/workspace_analytics.js.map +1 -1
- package/dist/cli/python/workspace_crypto.js +23 -3
- package/dist/cli/python/workspace_crypto.js.map +1 -1
- package/dist/cli/python/workspace_documents.js +23 -3
- package/dist/cli/python/workspace_documents.js.map +1 -1
- package/dist/cli/python/workspace_drive.js +24 -3
- package/dist/cli/python/workspace_drive.js.map +1 -1
- package/dist/cli/python/workspace_drive_health.js +23 -3
- package/dist/cli/python/workspace_drive_health.js.map +1 -1
- package/dist/cli/python/workspace_explain.js +23 -3
- package/dist/cli/python/workspace_explain.js.map +1 -1
- package/dist/cli/python/workspace_hosts.js +23 -3
- package/dist/cli/python/workspace_hosts.js.map +1 -1
- package/dist/cli/python/workspace_inbox.js +23 -3
- package/dist/cli/python/workspace_inbox.js.map +1 -1
- package/dist/cli/python/workspace_render.js +23 -3
- package/dist/cli/python/workspace_render.js.map +1 -1
- package/dist/cli/python/workspace_roles.js +23 -3
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/cli/python/workspace_sessions.js +23 -3
- package/dist/cli/python/workspace_sessions.js.map +1 -1
- package/dist/cli/python/workspace_skills.js +23 -3
- package/dist/cli/python/workspace_skills.js.map +1 -1
- package/dist/cli/registry.js +2 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +118 -118
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +2 -2
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +3 -3
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +3 -3
- package/dist/install/install.mjs +647 -408
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/server/routes/settings.js +4 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/schemas/settings.js +1 -1
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/CLAIMS.md +2 -2
- package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
- package/docs/benchmark.md +40 -0
- package/docs/contracts/CHANGELOG-conventions.md +8 -5
- package/docs/contracts/branch-protection-policy.md +14 -5
- package/docs/contracts/mcp-phase-1-scope.md +75 -0
- package/docs/contracts/mcp-tool-inventory.md +22 -15
- package/docs/contracts/release-pr-gating.md +22 -11
- package/docs/contracts/skill-bundled-assets.md +2 -2
- package/docs/customization.md +1 -1
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
- package/docs/decisions/ADR-111-canonical-glama-listing.md +97 -0
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +92 -0
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +201 -0
- package/docs/decisions/INDEX.md +3 -0
- package/docs/distribution/registry-submissions.md +1 -1
- package/docs/getting-started.md +8 -6
- package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
- package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
- package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
- package/docs/guidelines/agent-infra/layered-settings.md +4 -4
- package/docs/guidelines/agent-infra/memory-access.md +19 -18
- package/docs/guidelines/agent-infra/naming.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
- package/docs/guidelines/agent-infra/role-contracts.md +1 -1
- package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
- package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
- package/docs/guidelines/augment-portability-patterns.md +1 -1
- package/docs/installation.md +13 -14
- package/docs/mcp-server.md +32 -20
- package/docs/proof.md +1 -1
- package/docs/setup/mcp-cloud-endpoints.md +9 -2
- package/docs/setup/per-ide/claude-code.md +10 -4
- package/package.json +4 -3
- package/src/config/agent-settings.template.yml +31 -17
- package/src/config/host-capabilities.yml +25 -16
- package/src/config/profiles/balanced.ini +5 -3
- package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
- package/src/scripts/_cli/cmd_conformance.ts +23 -4
- package/src/scripts/_cli/cmd_doctor.ts +196 -8
- package/src/scripts/_cli/cmd_explain.ts +23 -4
- package/src/scripts/_cli/cmd_export.ts +23 -4
- package/src/scripts/_cli/cmd_fleet.ts +23 -4
- package/src/scripts/_cli/cmd_migrate.ts +23 -4
- package/src/scripts/_cli/cmd_preflight.ts +24 -4
- package/src/scripts/_cli/cmd_prune.ts +23 -4
- package/src/scripts/_cli/cmd_refresh.ts +23 -4
- package/src/scripts/_cli/cmd_settings_check.ts +23 -4
- package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
- package/src/scripts/_cli/cmd_sync.ts +23 -4
- package/src/scripts/_cli/cmd_uninstall.ts +45 -4
- package/src/scripts/_cli/cmd_update.ts +23 -4
- package/src/scripts/_cli/cmd_upgrade.ts +307 -17
- package/src/scripts/_cli/cmd_validate.ts +23 -4
- package/src/scripts/_cli/cmd_versions.ts +23 -4
- package/src/scripts/_dispatch.bash +62 -19
- package/src/scripts/_lib/claude_plugin.ts +83 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +251 -0
- package/src/scripts/_lib/knowledge_global.ts +24 -2
- package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
- package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
- package/src/scripts/_lib/link_crypto.ts +24 -5
- package/src/scripts/_lib/pin_resolver.ts +24 -3
- package/src/scripts/adoption_report.ts +23 -4
- package/src/scripts/adoption_snapshot.ts +23 -1
- package/src/scripts/adoption_status.ts +23 -4
- package/src/scripts/adr/regenerate_index.ts +24 -3
- package/src/scripts/ai_council/airgap.ts +25 -2
- package/src/scripts/ai_council/compile_corpus.ts +24 -2
- package/src/scripts/ai_council/pricing.ts +11 -1
- package/src/scripts/analysis_freshness.ts +23 -4
- package/src/scripts/annotate_discovery.ts +23 -1
- package/src/scripts/apply_modules_config.ts +23 -4
- package/src/scripts/audit_adr_coverage.ts +23 -4
- package/src/scripts/audit_auto_rules.ts +23 -1
- package/src/scripts/audit_cloud_compatibility.ts +23 -4
- package/src/scripts/audit_command_surface.ts +23 -4
- package/src/scripts/audit_initial_context.ts +23 -3
- package/src/scripts/audit_likelihood.ts +23 -1
- package/src/scripts/audit_mcp_tools.ts +23 -3
- package/src/scripts/audit_overlap.ts +23 -1
- package/src/scripts/audit_skill_descriptions.ts +24 -2
- package/src/scripts/audit_skill_overlap.ts +23 -1
- package/src/scripts/audit_user_type_axis.ts +23 -4
- package/src/scripts/backfill_model_tier.ts +23 -4
- package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
- package/src/scripts/bench_ab_clone.ts +23 -1
- package/src/scripts/bench_ab_diff.ts +23 -1
- package/src/scripts/bench_ab_integrity.ts +23 -1
- package/src/scripts/bench_ab_run.ts +23 -2
- package/src/scripts/bench_ab_task_runner.ts +23 -1
- package/src/scripts/bench_ab_tracka_run.ts +23 -2
- package/src/scripts/bench_ab_v2_run.ts +23 -1
- package/src/scripts/bench_ab_v2_stats.ts +23 -1
- package/src/scripts/bench_baseline_ready.ts +23 -1
- package/src/scripts/bench_condense_memory.ts +23 -1
- package/src/scripts/bench_drift_check.ts +23 -2
- package/src/scripts/bench_matrix.ts +23 -4
- package/src/scripts/bench_per_tool.ts +23 -1
- package/src/scripts/bench_quality_run.ts +23 -2
- package/src/scripts/bench_rtk_savings.ts +23 -1
- package/src/scripts/bench_rule_load_latency.ts +23 -2
- package/src/scripts/bench_run.ts +23 -2
- package/src/scripts/bench_runner.ts +23 -1
- package/src/scripts/build_cloud_bundle.ts +23 -3
- package/src/scripts/build_discovery_manifest.ts +23 -4
- package/src/scripts/build_linear_digest.ts +23 -3
- package/src/scripts/build_mcp_registry_manifest.ts +23 -4
- package/src/scripts/build_rule_trigger_matrix.ts +23 -4
- package/src/scripts/capture_showcase_session.ts +23 -1
- package/src/scripts/chat_history.ts +24 -3
- package/src/scripts/check_always_budget.ts +23 -2
- package/src/scripts/check_artefact_checksums.ts +23 -4
- package/src/scripts/check_augment_description_cap.ts +23 -4
- package/src/scripts/check_augmentignore.ts +23 -4
- package/src/scripts/check_beta_review_markers.ts +23 -4
- package/src/scripts/check_cluster_patterns.ts +23 -4
- package/src/scripts/check_command_count_messaging.ts +23 -4
- package/src/scripts/check_comparison.ts +23 -1
- package/src/scripts/check_condensation.ts +24 -3
- package/src/scripts/check_condensed_paths.ts +23 -2
- package/src/scripts/check_context_paths.ts +23 -4
- package/src/scripts/check_council_config_location.ts +23 -4
- package/src/scripts/check_council_layout.ts +23 -4
- package/src/scripts/check_council_references.ts +23 -4
- package/src/scripts/check_discovery_determinism.ts +24 -4
- package/src/scripts/check_gate_paths.ts +23 -4
- package/src/scripts/check_generated_artefact_headers.ts +23 -4
- package/src/scripts/check_generator_output_coverage.ts +23 -4
- package/src/scripts/check_gitignore_freshness.ts +23 -4
- package/src/scripts/check_iron_law_prominence.ts +23 -4
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_kernel_rule_bundle.ts +23 -4
- package/src/scripts/check_knowledge_cards.ts +23 -1
- package/src/scripts/check_md_language.ts +23 -4
- package/src/scripts/check_media_deps.ts +24 -1
- package/src/scripts/check_memory.ts +24 -2
- package/src/scripts/check_memory_proposal.ts +23 -4
- package/src/scripts/check_module_management_neutral.ts +23 -4
- package/src/scripts/check_no_conflict_markers.ts +23 -4
- package/src/scripts/check_no_external_sources.ts +23 -4
- package/src/scripts/check_no_local_settings_committed.ts +24 -4
- package/src/scripts/check_no_new_legacy_path.ts +23 -4
- package/src/scripts/check_no_roadmap_refs.ts +23 -4
- package/src/scripts/check_one_off_location.ts +23 -4
- package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
- package/src/scripts/check_portability.ts +24 -3
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_public_catalog_links.ts +23 -4
- package/src/scripts/check_public_links.ts +23 -4
- package/src/scripts/check_quality_regression.ts +23 -2
- package/src/scripts/check_references.ts +23 -4
- package/src/scripts/check_release_includes_discovery.ts +23 -4
- package/src/scripts/check_release_pr_shape.ts +23 -4
- package/src/scripts/check_release_published.ts +23 -4
- package/src/scripts/check_release_trunk_sync.ts +23 -4
- package/src/scripts/check_reply_consistency.ts +23 -4
- package/src/scripts/check_roadmap_trackable.ts +23 -4
- package/src/scripts/check_role_doc_links.ts +23 -4
- package/src/scripts/check_safety_floor_untouched.ts +24 -4
- package/src/scripts/check_site_links.ts +23 -1
- package/src/scripts/check_skill_gaps.ts +23 -1
- package/src/scripts/check_skill_requires.ts +23 -4
- package/src/scripts/check_structural_breaking.ts +24 -4
- package/src/scripts/check_surface_tiers.ts +23 -4
- package/src/scripts/check_template_pin_drift.ts +23 -4
- package/src/scripts/check_test_coverage_diff.ts +23 -4
- package/src/scripts/check_token_optimizer_freshness.ts +23 -4
- package/src/scripts/check_token_quality_golden.ts +23 -2
- package/src/scripts/check_token_regression.ts +23 -2
- package/src/scripts/check_tracked_but_ignored.ts +24 -4
- package/src/scripts/check_trigger_evals.ts +23 -4
- package/src/scripts/check_trunk_drift.ts +24 -1
- package/src/scripts/check_update_banner.ts +23 -4
- package/src/scripts/ci_summary.ts +23 -4
- package/src/scripts/ci_time_ratio.ts +23 -4
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/compile_router.ts +23 -4
- package/src/scripts/condense.ts +30 -31
- package/src/scripts/condense_memory.ts +24 -2
- package/src/scripts/config/packs.ts +24 -4
- package/src/scripts/config/session_profiles.ts +23 -4
- package/src/scripts/context_hygiene_hook.ts +24 -3
- package/src/scripts/cost_by_conversation.ts +23 -4
- package/src/scripts/cost_summary.ts +23 -4
- package/src/scripts/council_cli.ts +35 -7
- package/src/scripts/council_prune.ts +25 -2
- package/src/scripts/cross_repo_retrieve.ts +23 -4
- package/src/scripts/discovery_stats.ts +23 -4
- package/src/scripts/evidence_report.ts +23 -1
- package/src/scripts/export_replay_corpus.ts +23 -2
- package/src/scripts/extract_audit_patterns.ts +23 -1
- package/src/scripts/first_run_gate_hook.ts +24 -3
- package/src/scripts/gen_discovery_baseline.ts +23 -4
- package/src/scripts/generate_capabilities_index.ts +24 -5
- package/src/scripts/generate_capability_matrix.ts +23 -4
- package/src/scripts/generate_catalog.ts +23 -1
- package/src/scripts/generate_command_flows.ts +23 -4
- package/src/scripts/generate_cookbook.ts +23 -4
- package/src/scripts/generate_index.ts +23 -4
- package/src/scripts/generate_ownership_matrix.ts +23 -1
- package/src/scripts/generate_pack_manifests.ts +24 -5
- package/src/scripts/generate_role_experiences_catalog.ts +23 -4
- package/src/scripts/hooks/block_no_verify.ts +23 -4
- package/src/scripts/hooks/design_slop_hook.ts +24 -3
- package/src/scripts/hooks/dispatch_hook.ts +47 -14
- package/src/scripts/hooks/replay_hook.ts +23 -2
- package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
- package/src/scripts/hooks_doctor.ts +23 -2
- package/src/scripts/hooks_status.ts +23 -2
- package/src/scripts/injection_scan_hook.ts +24 -5
- package/src/scripts/install +23 -4
- package/src/scripts/install.ts +102 -44
- package/src/scripts/inventory_abstraction_budget.ts +23 -1
- package/src/scripts/inventory_frontmatter.ts +23 -1
- package/src/scripts/inventory_meta_layers.ts +23 -1
- package/src/scripts/iron_law_sha.ts +23 -4
- package/src/scripts/janitor.ts +23 -4
- package/src/scripts/knowledge_global_cli.ts +24 -2
- package/src/scripts/linked_projects_list.ts +23 -4
- package/src/scripts/lint_agent_security.ts +23 -4
- package/src/scripts/lint_agent_skill_names.ts +23 -4
- package/src/scripts/lint_agents_layout.ts +23 -4
- package/src/scripts/lint_agents_md.ts +23 -4
- package/src/scripts/lint_archived_skills.ts +23 -4
- package/src/scripts/lint_artefact_frontmatter.ts +23 -4
- package/src/scripts/lint_bench_ab.ts +23 -4
- package/src/scripts/lint_bench_corpus.ts +23 -2
- package/src/scripts/lint_command_flow_coverage.ts +23 -4
- package/src/scripts/lint_command_routing.ts +23 -4
- package/src/scripts/lint_command_tiers.ts +23 -2
- package/src/scripts/lint_command_verbs.ts +23 -4
- package/src/scripts/lint_commit_subjects.ts +24 -4
- package/src/scripts/lint_confusables.ts +25 -5
- package/src/scripts/lint_context_spine_usage.ts +23 -4
- package/src/scripts/lint_discovery_manifest.ts +23 -4
- package/src/scripts/lint_discovery_vocabulary.ts +23 -4
- package/src/scripts/lint_empty_roadmaps.ts +23 -4
- package/src/scripts/lint_eval_freshness.ts +23 -4
- package/src/scripts/lint_examples.ts +23 -4
- package/src/scripts/lint_explain_trace.ts +23 -4
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_flows.ts +23 -4
- package/src/scripts/lint_framework_leakage.ts +23 -4
- package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
- package/src/scripts/lint_ghostwriter_source.ts +23 -4
- package/src/scripts/lint_glama_drift.ts +75 -0
- package/src/scripts/lint_global_paths.ts +23 -2
- package/src/scripts/lint_handoffs.ts +23 -4
- package/src/scripts/lint_hidden_unicode.ts +24 -5
- package/src/scripts/lint_hook_concern_budget.ts +23 -4
- package/src/scripts/lint_hook_manifest.ts +23 -2
- package/src/scripts/lint_instruction_smuggling.ts +25 -5
- package/src/scripts/lint_legal_pack.ts +23 -1
- package/src/scripts/lint_load_context.ts +23 -4
- package/src/scripts/lint_marketplace.ts +24 -3
- package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
- package/src/scripts/lint_mcp_config_security.ts +25 -5
- package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
- package/src/scripts/lint_media_policy_linkage.ts +23 -4
- package/src/scripts/lint_missions.ts +23 -4
- package/src/scripts/lint_model_tier_coverage.ts +23 -4
- package/src/scripts/lint_namespace.ts +23 -4
- package/src/scripts/lint_namespace_collisions.ts +23 -4
- package/src/scripts/lint_new_skill_gate.ts +23 -4
- package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
- package/src/scripts/lint_one_off_age.ts +23 -4
- package/src/scripts/lint_orchestration_dsl.ts +23 -4
- package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
- package/src/scripts/lint_pack_boundaries.ts +23 -4
- package/src/scripts/lint_pack_dependencies.ts +23 -2
- package/src/scripts/lint_pack_first_win.ts +23 -4
- package/src/scripts/lint_pack_risk_class.ts +23 -1
- package/src/scripts/lint_persona_governance.ts +23 -4
- package/src/scripts/lint_positioning.ts +23 -4
- package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
- package/src/scripts/lint_readme_jargon.ts +23 -4
- package/src/scripts/lint_readme_size.ts +23 -4
- package/src/scripts/lint_regression.ts +23 -4
- package/src/scripts/lint_roadmap_blockers.ts +23 -4
- package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
- package/src/scripts/lint_roadmap_complexity.ts +23 -4
- package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
- package/src/scripts/lint_role_experiences.ts +23 -4
- package/src/scripts/lint_rule_interactions.ts +23 -4
- package/src/scripts/lint_rule_tiers.ts +24 -3
- package/src/scripts/lint_showcase_sessions.ts +23 -4
- package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
- package/src/scripts/lint_skill_originality.ts +23 -4
- package/src/scripts/lint_skill_tools.ts +23 -4
- package/src/scripts/lint_subagent_determinism.ts +23 -4
- package/src/scripts/lint_ticket_buildable.ts +23 -4
- package/src/scripts/lint_topics_yaml.ts +23 -4
- package/src/scripts/lint_trust_coherence.ts +23 -4
- package/src/scripts/lint_value_dashboard.ts +23 -4
- package/src/scripts/lint_workflow_security.ts +23 -4
- package/src/scripts/lint_workspace_boundary.ts +23 -4
- package/src/scripts/mcp_exec/safety_envelope.ts +105 -0
- package/src/scripts/mcp_parity_smoke.ts +23 -2
- package/src/scripts/mcp_registry_submit.sh +14 -3
- package/src/scripts/mcp_render.ts +23 -4
- package/src/scripts/mcp_server/__main__.ts +6 -8
- package/src/scripts/mcp_server/consumer_tool_catalog.json +78 -3
- package/src/scripts/mcp_server/tools.ts +731 -0
- package/src/scripts/mcp_telemetry_health.ts +23 -4
- package/src/scripts/mcp_telemetry_query.ts +23 -4
- package/src/scripts/mcp_telemetry_store.ts +23 -4
- package/src/scripts/measure_augment_budget.ts +23 -1
- package/src/scripts/measure_density.ts +23 -1
- package/src/scripts/measure_frugality_savings.ts +23 -1
- package/src/scripts/measure_markitdown_lift.ts +23 -1
- package/src/scripts/measure_patterns.ts +23 -1
- package/src/scripts/measure_projection_bytes.ts +23 -1
- package/src/scripts/measure_rule_budget.ts +23 -4
- package/src/scripts/measure_skill_reduction.ts +23 -1
- package/src/scripts/memory_hash.ts +24 -2
- package/src/scripts/memory_lookup.ts +24 -2
- package/src/scripts/memory_report.ts +24 -2
- package/src/scripts/memory_signal.ts +24 -2
- package/src/scripts/memory_status.ts +26 -2
- package/src/scripts/migrate_command_suggestions.ts +23 -4
- package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
- package/src/scripts/migration_status.ts +25 -4
- package/src/scripts/mine_missing_guardrails.ts +23 -1
- package/src/scripts/mine_session.ts +23 -1
- package/src/scripts/minimal_safe_diff_hook.ts +24 -3
- package/src/scripts/new_skill.ts +23 -3
- package/src/scripts/onboarding_gate_hook.ts +24 -3
- package/src/scripts/parity/coverage_diff.ts +25 -3
- package/src/scripts/parity/phase_gate.ts +25 -4
- package/src/scripts/parity/replay.ts +25 -3
- package/src/scripts/pattern_share.ts +23 -4
- package/src/scripts/plan_physical_move.ts +23 -4
- package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
- package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
- package/src/scripts/prediction-pool/score_ev.ts +24 -3
- package/src/scripts/print_required_checks.ts +24 -4
- package/src/scripts/probe_host_compliance.ts +23 -2
- package/src/scripts/probe_projection_fidelity.ts +23 -1
- package/src/scripts/probe_skill_registration.ts +24 -2
- package/src/scripts/profile_staleness_hook.ts +24 -3
- package/src/scripts/profile_use.ts +23 -4
- package/src/scripts/project_thin_rules.ts +23 -3
- package/src/scripts/propose_modules_config.ts +23 -4
- package/src/scripts/prototype_lint_contradictions.ts +23 -1
- package/src/scripts/prove_pack_extractable.ts +23 -4
- package/src/scripts/readme_linter.ts +23 -3
- package/src/scripts/redact_hook_capture.ts +23 -4
- package/src/scripts/refine_ticket_detect.ts +23 -4
- package/src/scripts/release.ts +226 -43
- package/src/scripts/render_benchmark_composite.ts +23 -4
- package/src/scripts/render_benchmark_md.ts +23 -4
- package/src/scripts/roadmap_progress_hook.ts +46 -16
- package/src/scripts/run_skill_evals.ts +23 -4
- package/src/scripts/runtime_dispatcher.ts +23 -4
- package/src/scripts/runtime_registry.ts +23 -4
- package/src/scripts/score_skill_selection.ts +23 -1
- package/src/scripts/security_audit_config.ts +24 -5
- package/src/scripts/skill_collision_clusters.ts +23 -4
- package/src/scripts/skill_discovery.ts +23 -4
- package/src/scripts/skill_linter.ts +23 -2
- package/src/scripts/skill_preview.ts +23 -4
- package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
- package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
- package/src/scripts/skill_usage_collect.ts +23 -4
- package/src/scripts/smoke_path_resolution.ts +23 -4
- package/src/scripts/smoke_quickstart.ts +23 -4
- package/src/scripts/snapshot_agent_outputs.ts +23 -4
- package/src/scripts/spotcheck_thin_root.ts +23 -4
- package/src/scripts/sync_agent_settings.ts +23 -4
- package/src/scripts/sync_github_metadata.ts +23 -4
- package/src/scripts/sync_gitignore.ts +23 -4
- package/src/scripts/telegraph_stats.ts +23 -4
- package/src/scripts/tool_registry.ts +24 -4
- package/src/scripts/trigger_coverage.ts +23 -4
- package/src/scripts/update_counts.ts +23 -4
- package/src/scripts/update_prices.ts +23 -1
- package/src/scripts/validate_agent_settings.ts +23 -4
- package/src/scripts/validate_decision_engine.ts +23 -4
- package/src/scripts/validate_discovery_manifest.ts +23 -4
- package/src/scripts/validate_frontmatter.ts +23 -2
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/scripts/validate_safe_paths.ts +24 -4
- package/src/scripts/validate_telegraph_carveouts.ts +23 -4
- package/src/scripts/verify_before_complete_hook.ts +24 -3
- package/src/scripts/verify_physical_move.ts +23 -4
- package/src/scripts/wrapper_freshness_hook.ts +107 -8
- package/tests/fixtures/hooks/README.md +92 -0
- package/tests/fixtures/hooks/agent_error.json +7 -0
- package/tests/fixtures/hooks/post_tool_use.json +13 -0
- package/tests/fixtures/hooks/pre_compact.json +7 -0
- package/tests/fixtures/hooks/pre_tool_use.json +9 -0
- package/tests/fixtures/hooks/session_end.json +6 -0
- package/tests/fixtures/hooks/session_start.json +6 -0
- package/tests/fixtures/hooks/stop.json +6 -0
- package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
*/
|
|
56
56
|
|
|
57
57
|
import * as fs from 'node:fs';
|
|
58
|
+
import * as os from 'node:os';
|
|
58
59
|
import * as path from 'node:path';
|
|
59
60
|
import process from 'node:process';
|
|
60
61
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
@@ -62,6 +63,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
|
62
63
|
import * as fs_atomic from '../_lib/fs_atomic.js';
|
|
63
64
|
import * as installed_lock from '../_lib/installed_lock.js';
|
|
64
65
|
import * as installed_tools from '../_lib/installed_tools.js';
|
|
66
|
+
import { remove_managed_hooks } from '../_lib/claude_settings_hooks.js';
|
|
65
67
|
import { resolve_project_root } from '../_lib/agent_settings.js';
|
|
66
68
|
import { subtract_pointers } from '../_lib/json_pointers.js';
|
|
67
69
|
import { PROJECT_BRIDGE_MARKERS, USER_SCOPE_PATHS } from '../install.js';
|
|
@@ -771,6 +773,26 @@ function _uninstall_global(opts: Options): number {
|
|
|
771
773
|
removed_names.push(tool);
|
|
772
774
|
}
|
|
773
775
|
}
|
|
776
|
+
// Managed Claude hooks live in ~/.claude/settings.json (single-surface
|
|
777
|
+
// model) — remove exactly our entries, never user-owned ones.
|
|
778
|
+
if (tools.includes('claude-code')) {
|
|
779
|
+
const settings_path = path.join(os.homedir(), '.claude', 'settings.json');
|
|
780
|
+
if (opts.dry_run) {
|
|
781
|
+
_print(_stdout, ` · claude-code: would remove managed hooks from ${settings_path}`);
|
|
782
|
+
} else {
|
|
783
|
+
try {
|
|
784
|
+
const res = remove_managed_hooks(settings_path);
|
|
785
|
+
if (res.changed) {
|
|
786
|
+
_print(
|
|
787
|
+
_stdout,
|
|
788
|
+
` · claude-code: removed managed hooks (${res.events.join(', ')})`,
|
|
789
|
+
);
|
|
790
|
+
}
|
|
791
|
+
} catch (e) {
|
|
792
|
+
_print(_stderr, `⚠️ claude-code: managed-hook removal skipped — ${String(e)}`);
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
}
|
|
774
796
|
if (lock !== null && !opts.dry_run) {
|
|
775
797
|
const remaining = (lock.tools ?? []).filter((t) => !tools.includes(t));
|
|
776
798
|
const version = String((lock as unknown as AnyDict)['agent_config_version'] ?? '');
|
|
@@ -817,10 +839,29 @@ export function main(argv: string[] | null = null): number {
|
|
|
817
839
|
|
|
818
840
|
// CLI entry guard — set process.exitCode; never call process.exit().
|
|
819
841
|
const _HERE = fileURLToPath(import.meta.url);
|
|
820
|
-
|
|
821
|
-
process.argv[1]
|
|
822
|
-
|
|
823
|
-
|
|
842
|
+
function _isCliEntry(): boolean {
|
|
843
|
+
if (process.argv[1] === undefined) {
|
|
844
|
+
return false;
|
|
845
|
+
}
|
|
846
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
847
|
+
if (import.meta.url === argvUrl) {
|
|
848
|
+
return true;
|
|
849
|
+
}
|
|
850
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
851
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
852
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
853
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
854
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
855
|
+
try {
|
|
856
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
857
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
858
|
+
return here === argv;
|
|
859
|
+
} catch {
|
|
860
|
+
return false;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
824
865
|
try {
|
|
825
866
|
process.exitCode = main(process.argv.slice(2));
|
|
826
867
|
} catch (exc) {
|
|
@@ -567,10 +567,29 @@ function _detect_installed_version(): string {
|
|
|
567
567
|
}
|
|
568
568
|
|
|
569
569
|
// CLI entry guard — set process.exitCode; never call process.exit().
|
|
570
|
-
|
|
571
|
-
process.argv[1]
|
|
572
|
-
|
|
573
|
-
|
|
570
|
+
function _isCliEntry(): boolean {
|
|
571
|
+
if (process.argv[1] === undefined) {
|
|
572
|
+
return false;
|
|
573
|
+
}
|
|
574
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
575
|
+
if (import.meta.url === argvUrl) {
|
|
576
|
+
return true;
|
|
577
|
+
}
|
|
578
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
579
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
580
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
581
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
582
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
583
|
+
try {
|
|
584
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
585
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
586
|
+
return here === argv;
|
|
587
|
+
} catch {
|
|
588
|
+
return false;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
574
593
|
main(process.argv.slice(2))
|
|
575
594
|
.then((code) => {
|
|
576
595
|
process.exitCode = code;
|
|
@@ -20,9 +20,27 @@
|
|
|
20
20
|
*
|
|
21
21
|
* 1. `npm install -g @event4u/agent-config@latest` — refresh the global binary
|
|
22
22
|
* on PATH (the binary the Claude plugin hook resolves).
|
|
23
|
-
* 2. `agent-config global` (→ `install
|
|
24
|
-
* (`~/.event4u/agent-config/`) + regenerate plugin hooks.
|
|
25
|
-
*
|
|
23
|
+
* 2. `agent-config global --no-ui` (→ `install --global`) — refresh the global
|
|
24
|
+
* root (`~/.event4u/agent-config/`) + regenerate plugin hooks. `--no-ui`
|
|
25
|
+
* suppresses the setup-wizard auto-launch: the wizard is an onboarding
|
|
26
|
+
* surface, not an upgrade step, and a foreground wizard server would block
|
|
27
|
+
* the remaining upgrade steps until Ctrl-C (which then failed the run).
|
|
28
|
+
* 2b. When the Claude Code plugin (`agent-config@event4u-agent-config`) is
|
|
29
|
+
* installed, refresh it: `claude plugin marketplace update` +
|
|
30
|
+
* `claude plugin update` — otherwise the plugin snapshot stays pinned to
|
|
31
|
+
* its install-time git SHA and its command surface silently rots while
|
|
32
|
+
* the file projection moves ahead. Non-fatal: a refresh failure warns and
|
|
33
|
+
* names the manual commands. The plugin is OPTIONAL — the file projection
|
|
34
|
+
* is a full install on its own; no plugin → no step, no nag.
|
|
35
|
+
* 3. `agent-config settings:sync --path <file>` for every EXISTING settings
|
|
36
|
+
* file (global `~/.event4u/agent-config/settings/.agent-settings.yml`,
|
|
37
|
+
* then the project settings when run inside a consumer project) — additive
|
|
38
|
+
* merge that inserts keys the new release added to the template while
|
|
39
|
+
* preserving user lines verbatim. Runs as a subprocess of the freshly
|
|
40
|
+
* installed binary so the NEW template is the merge source. Non-fatal:
|
|
41
|
+
* a sync failure warns and names the manual command, never fails the
|
|
42
|
+
* upgrade. Never creates a settings file that did not exist.
|
|
43
|
+
* 4. If run from inside a consumer project that already has a `./agent-config`
|
|
26
44
|
* wrapper, re-stamp that wrapper from the canonical template.
|
|
27
45
|
*
|
|
28
46
|
* Flags:
|
|
@@ -71,6 +89,9 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
|
71
89
|
import * as installed_lock from '../_lib/installed_lock.js';
|
|
72
90
|
import * as update_check from '../_lib/update_check.js';
|
|
73
91
|
import * as cli_wrapper from '../_lib/cli_wrapper.js';
|
|
92
|
+
import * as claude_plugin from '../_lib/claude_plugin.js';
|
|
93
|
+
import { event4u_root } from '../_lib/user_global_paths.js';
|
|
94
|
+
import { project_settings_path } from '../_lib/agent_settings.js';
|
|
74
95
|
import { _is_source_repo } from './cmd_refresh.js';
|
|
75
96
|
|
|
76
97
|
const PACKAGE_NAME = '@event4u/agent-config';
|
|
@@ -219,6 +240,170 @@ function _maybe_refresh_project_wrapper(project_root: string, out: OutSink, _err
|
|
|
219
240
|
}
|
|
220
241
|
}
|
|
221
242
|
|
|
243
|
+
/**
|
|
244
|
+
* Refresh the consumer's installed `.git/hooks/pre-commit` gate after a
|
|
245
|
+
* global upgrade — but only when the hook is OURS (identified by the
|
|
246
|
+
* `pre-commit-roadmap-progress` marker) and only when run from inside a
|
|
247
|
+
* project that has it. Without this, a hook installed under an older
|
|
248
|
+
* release keeps running the old template forever (`hooks:install` without
|
|
249
|
+
* `--force` short-circuits on the marker) — the py2ts-era hooks silently
|
|
250
|
+
* no-op'd for exactly this reason. Non-fatal: a failure warns and names
|
|
251
|
+
* the manual command.
|
|
252
|
+
*/
|
|
253
|
+
function _maybe_refresh_git_hook(
|
|
254
|
+
project_root: string,
|
|
255
|
+
runner: (cmd: string[]) => number,
|
|
256
|
+
out: OutSink,
|
|
257
|
+
err: OutSink,
|
|
258
|
+
): void {
|
|
259
|
+
const hook = path.join(project_root, '.git', 'hooks', 'pre-commit');
|
|
260
|
+
let text: string;
|
|
261
|
+
try {
|
|
262
|
+
text = fs.readFileSync(hook, 'utf-8');
|
|
263
|
+
} catch {
|
|
264
|
+
return; // no hook installed (or worktree indirection) — nothing to refresh
|
|
265
|
+
}
|
|
266
|
+
if (!text.includes('pre-commit-roadmap-progress')) {
|
|
267
|
+
return; // not our hook — never overwrite a foreign pre-commit
|
|
268
|
+
}
|
|
269
|
+
const cmd = [_agent_config_bin(), 'hooks:install', '--force'];
|
|
270
|
+
_print(out, '→ ' + cmd.join(' '));
|
|
271
|
+
let rc: number;
|
|
272
|
+
try {
|
|
273
|
+
rc = runner(cmd);
|
|
274
|
+
} catch (exc) {
|
|
275
|
+
rc = 127;
|
|
276
|
+
_print(err, `cannot run ${cmd[0]}: ${osErrorStr(exc)}`);
|
|
277
|
+
}
|
|
278
|
+
if (rc !== 0) {
|
|
279
|
+
_print(
|
|
280
|
+
err,
|
|
281
|
+
`⚠️ agent-config upgrade: pre-commit hook refresh failed (exit ${rc}) — ` +
|
|
282
|
+
'run `agent-config hooks:install --force` manually.',
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Existing settings files the post-upgrade sync should bring up to the new
|
|
289
|
+
* template (additive merge — user lines preserved verbatim, only missing
|
|
290
|
+
* template keys inserted; see `sync_agent_settings.ts`).
|
|
291
|
+
*
|
|
292
|
+
* Targets, in order:
|
|
293
|
+
* 1. Global settings — `~/.event4u/agent-config/settings/.agent-settings.yml`
|
|
294
|
+
* (the canonical wizard-written file; `EVENT4U_CONFIG_HOME` honored).
|
|
295
|
+
* 2. Project settings — the project's read-path settings file when the
|
|
296
|
+
* upgrade runs inside a consumer project that already has one.
|
|
297
|
+
*
|
|
298
|
+
* Only files that ALREADY EXIST are returned — the sync never creates a
|
|
299
|
+
* settings file as an upgrade side effect (fresh installs get theirs from
|
|
300
|
+
* the wizard / installer).
|
|
301
|
+
*/
|
|
302
|
+
function _settings_sync_targets(project_root: string): string[] {
|
|
303
|
+
const targets: string[] = [];
|
|
304
|
+
const global_settings = path.join(event4u_root(), 'settings', '.agent-settings.yml');
|
|
305
|
+
if (_isFile(global_settings)) {
|
|
306
|
+
targets.push(global_settings);
|
|
307
|
+
}
|
|
308
|
+
const project_settings = project_settings_path(project_root);
|
|
309
|
+
if (project_settings !== global_settings && _isFile(project_settings)) {
|
|
310
|
+
targets.push(project_settings);
|
|
311
|
+
}
|
|
312
|
+
return targets;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Run the additive settings sync for every existing target — as a SUBPROCESS
|
|
317
|
+
* of the freshly installed binary, never in-process: after `npm install -g`
|
|
318
|
+
* the running module is still the OLD version, so an in-process merge would
|
|
319
|
+
* use the OLD template and miss exactly the new keys the upgrade shipped.
|
|
320
|
+
*
|
|
321
|
+
* Non-fatal by design: the upgrade itself already succeeded; a sync failure
|
|
322
|
+
* surfaces a warning + the manual command instead of failing the run.
|
|
323
|
+
*/
|
|
324
|
+
function _sync_settings_files(
|
|
325
|
+
targets: readonly string[],
|
|
326
|
+
runner: (cmd: string[]) => number,
|
|
327
|
+
out: OutSink,
|
|
328
|
+
err: OutSink,
|
|
329
|
+
): void {
|
|
330
|
+
for (const target of targets) {
|
|
331
|
+
const cmd = [_agent_config_bin(), 'settings:sync', '--path', target];
|
|
332
|
+
_print(out, '→ ' + cmd.join(' '));
|
|
333
|
+
let rc: number;
|
|
334
|
+
try {
|
|
335
|
+
rc = runner(cmd);
|
|
336
|
+
} catch (exc) {
|
|
337
|
+
rc = 127;
|
|
338
|
+
_print(err, `cannot run ${cmd[0]}: ${osErrorStr(exc)}`);
|
|
339
|
+
}
|
|
340
|
+
if (rc !== 0) {
|
|
341
|
+
_print(
|
|
342
|
+
err,
|
|
343
|
+
`⚠️ agent-config upgrade: settings sync failed (exit ${rc}) for ` +
|
|
344
|
+
`${target} — run \`agent-config settings:sync --path ${target}\` manually.`,
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Refresh steps for the OPTIONAL Claude Code plugin. Non-empty only when the
|
|
352
|
+
* `claude` CLI is on PATH AND the plugin is recorded as installed — the file
|
|
353
|
+
* projection is a complete install on its own, so a missing plugin is not a
|
|
354
|
+
* gap to nag about. When present, the plugin must be refreshed alongside the
|
|
355
|
+
* global install: Claude Code pins it to the install-time git SHA, so without
|
|
356
|
+
* this step its command surface silently lags every upgrade.
|
|
357
|
+
*/
|
|
358
|
+
function _claude_plugin_refresh_steps(): string[][] {
|
|
359
|
+
const claude = shutilWhich('claude');
|
|
360
|
+
if (claude === null) return [];
|
|
361
|
+
if (!claude_plugin.claude_plugin_installed()) return [];
|
|
362
|
+
return [
|
|
363
|
+
[claude, 'plugin', 'marketplace', 'update', claude_plugin.CLAUDE_MARKETPLACE_NAME],
|
|
364
|
+
[
|
|
365
|
+
claude,
|
|
366
|
+
'plugin',
|
|
367
|
+
'update',
|
|
368
|
+
`${claude_plugin.CLAUDE_PLUGIN_ID}@${claude_plugin.CLAUDE_MARKETPLACE_NAME}`,
|
|
369
|
+
],
|
|
370
|
+
];
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Run the plugin-refresh steps. Non-fatal by design (same contract as the
|
|
375
|
+
* settings sync): the upgrade itself already succeeded; a failure surfaces a
|
|
376
|
+
* warning + the manual command instead of failing the run.
|
|
377
|
+
*/
|
|
378
|
+
function _refresh_claude_plugin(
|
|
379
|
+
steps: readonly string[][],
|
|
380
|
+
runner: (cmd: string[]) => number,
|
|
381
|
+
out: OutSink,
|
|
382
|
+
err: OutSink,
|
|
383
|
+
): void {
|
|
384
|
+
for (const cmd of steps) {
|
|
385
|
+
_print(out, '→ ' + cmd.join(' '));
|
|
386
|
+
let rc: number;
|
|
387
|
+
try {
|
|
388
|
+
rc = runner(cmd);
|
|
389
|
+
} catch (exc) {
|
|
390
|
+
rc = 127;
|
|
391
|
+
_print(err, `cannot run ${cmd[0]}: ${osErrorStr(exc)}`);
|
|
392
|
+
}
|
|
393
|
+
if (rc !== 0) {
|
|
394
|
+
_print(
|
|
395
|
+
err,
|
|
396
|
+
`⚠️ agent-config upgrade: Claude Code plugin refresh failed (exit ${rc}) — ` +
|
|
397
|
+
`run \`${cmd.join(' ')}\` manually.`,
|
|
398
|
+
);
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
if (steps.length > 0) {
|
|
403
|
+
_print(out, 'ℹ️ Claude Code plugin refreshed — restart Claude Code to load it.');
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
222
407
|
interface Args {
|
|
223
408
|
check: boolean;
|
|
224
409
|
dry_run: boolean;
|
|
@@ -319,37 +504,123 @@ export async function main(argv: string[] | null = null, options: MainOptions =
|
|
|
319
504
|
}
|
|
320
505
|
|
|
321
506
|
const target = `${PACKAGE_NAME}@latest`;
|
|
322
|
-
const
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
];
|
|
507
|
+
const npm_cmd: string[] = ['npm', 'install', '-g', target];
|
|
508
|
+
// --no-ui: the setup wizard is an onboarding surface, not an upgrade
|
|
509
|
+
// step — its foreground server used to block the upgrade until Ctrl-C.
|
|
510
|
+
const global_cmd: string[] = [_agent_config_bin(), 'global', '--no-ui'];
|
|
511
|
+
const steps: string[][] = [npm_cmd, global_cmd];
|
|
512
|
+
|
|
513
|
+
const project_root = options.project_root ?? process.cwd();
|
|
514
|
+
const sync_targets = _settings_sync_targets(project_root);
|
|
515
|
+
const plugin_steps = _claude_plugin_refresh_steps();
|
|
326
516
|
|
|
327
517
|
if (args.dry_run) {
|
|
328
518
|
_print(out, 'agent-config upgrade — dry run, would execute:');
|
|
329
519
|
for (const cmd of steps) {
|
|
330
520
|
_print(out, ' ' + cmd.join(' '));
|
|
331
521
|
}
|
|
522
|
+
for (const cmd of plugin_steps) {
|
|
523
|
+
_print(out, ' ' + cmd.join(' '));
|
|
524
|
+
}
|
|
525
|
+
for (const target of sync_targets) {
|
|
526
|
+
_print(out, ' ' + [_agent_config_bin(), 'settings:sync', '--path', target].join(' '));
|
|
527
|
+
}
|
|
332
528
|
return 0;
|
|
333
529
|
}
|
|
334
530
|
|
|
335
|
-
|
|
531
|
+
// Step 1 — the new package version. Nothing after makes sense without
|
|
532
|
+
// it, so this is the only hard-abort step.
|
|
533
|
+
_print(out, '→ ' + npm_cmd.join(' '));
|
|
534
|
+
const npm_rc = runner(npm_cmd);
|
|
535
|
+
if (npm_rc !== 0) {
|
|
536
|
+
_print(
|
|
537
|
+
err,
|
|
538
|
+
`❌ agent-config upgrade: step failed (exit ${npm_rc}): ` + `${npm_cmd.join(' ')}`,
|
|
539
|
+
);
|
|
540
|
+
return 1;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
// Steps 2..N — independent. A failing step no longer skips the rest:
|
|
544
|
+
// the 8.2.0 failure class (aborted `global` step silently skipping the
|
|
545
|
+
// plugin refresh + settings sync) is closed by running every remaining
|
|
546
|
+
// step and reporting per-step outcomes in the summary. A failed
|
|
547
|
+
// essential step (global deploy) still exits 1 — after the others ran.
|
|
548
|
+
const failed_essential: string[] = [];
|
|
549
|
+
for (const cmd of steps.slice(1)) {
|
|
336
550
|
_print(out, '→ ' + cmd.join(' '));
|
|
337
551
|
const rc = runner(cmd);
|
|
338
552
|
if (rc !== 0) {
|
|
553
|
+
failed_essential.push(cmd.join(' '));
|
|
339
554
|
_print(
|
|
340
555
|
err,
|
|
341
|
-
`❌ agent-config upgrade: step failed (exit ${rc}):
|
|
556
|
+
`❌ agent-config upgrade: step failed (exit ${rc}): ${cmd.join(' ')} — ` +
|
|
557
|
+
'continuing with the remaining steps.',
|
|
342
558
|
);
|
|
343
|
-
return 1;
|
|
344
559
|
}
|
|
345
560
|
}
|
|
346
561
|
|
|
347
|
-
|
|
562
|
+
// Refresh the OPTIONAL Claude Code plugin so its command surface tracks
|
|
563
|
+
// the upgrade — gated on the plugin actually being installed (empty step
|
|
564
|
+
// list otherwise). Deprecation window of the single-surface model: once
|
|
565
|
+
// the plugin is retired this block disappears with it.
|
|
566
|
+
_refresh_claude_plugin(plugin_steps, runner, out, err);
|
|
567
|
+
|
|
568
|
+
// Migration prompt (single-surface model): hooks were wired into
|
|
569
|
+
// ~/.claude/settings.json by the `global` step above, so an installed
|
|
570
|
+
// plugin is now a duplicate surface. Surface the one-line removal —
|
|
571
|
+
// NEVER uninstall autonomously (the plugin is a user-owned surface).
|
|
572
|
+
if (plugin_steps.length > 0) {
|
|
573
|
+
_print(
|
|
574
|
+
out,
|
|
575
|
+
'ℹ️ Claude Code marketplace plugin detected — deprecated surface. Hooks now ' +
|
|
576
|
+
'live in ~/.claude/settings.json (wired by the global step above), so the ' +
|
|
577
|
+
'plugin only duplicates skills/commands. Remove it with:\n' +
|
|
578
|
+
' claude plugin uninstall ' +
|
|
579
|
+
`${claude_plugin.CLAUDE_PLUGIN_ID}@${claude_plugin.CLAUDE_MARKETPLACE_NAME}`,
|
|
580
|
+
);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
// Bring existing settings files up to the NEW template (additive; the
|
|
584
|
+
// subprocess resolves the freshly installed binary + template).
|
|
585
|
+
_sync_settings_files(sync_targets, runner, out, err);
|
|
586
|
+
|
|
587
|
+
_maybe_refresh_project_wrapper(project_root, out, err);
|
|
588
|
+
|
|
589
|
+
// Re-stamp OUR installed .git/hooks/pre-commit from the new template
|
|
590
|
+
// (marker-guarded; foreign hooks are never touched).
|
|
591
|
+
_maybe_refresh_git_hook(project_root, runner, out, err);
|
|
592
|
+
|
|
593
|
+
// Doctor runs LAST, every time, non-fatal: its duplicate-surface and
|
|
594
|
+
// hook-wiring findings ARE the upgrade summary's health section — a
|
|
595
|
+
// mixed state (stale plugin, missing hooks) is named in the same run
|
|
596
|
+
// instead of waiting for the user to think of running doctor.
|
|
597
|
+
const doctor_cmd = [_agent_config_bin(), 'doctor'];
|
|
598
|
+
_print(out, '→ ' + doctor_cmd.join(' '));
|
|
599
|
+
const doctor_rc = runner(doctor_cmd);
|
|
600
|
+
if (doctor_rc !== 0) {
|
|
601
|
+
_print(
|
|
602
|
+
err,
|
|
603
|
+
`⚠️ agent-config doctor reported findings (exit ${doctor_rc}) — ` +
|
|
604
|
+
'see the check output above for per-item fixes.',
|
|
605
|
+
);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
if (failed_essential.length > 0) {
|
|
609
|
+
_print(
|
|
610
|
+
err,
|
|
611
|
+
`❌ agent-config upgrade finished with ${failed_essential.length} failed ` +
|
|
612
|
+
`step(s):\n` +
|
|
613
|
+
failed_essential.map((c) => ` · ${c}`).join('\n') +
|
|
614
|
+
'\n Re-run `agent-config upgrade`, or run the failed step directly. ' +
|
|
615
|
+
'`agent-config doctor` names anything left in a mixed state.',
|
|
616
|
+
);
|
|
617
|
+
return 1;
|
|
618
|
+
}
|
|
348
619
|
|
|
349
620
|
_print(
|
|
350
621
|
out,
|
|
351
|
-
'✅ agent-config upgraded
|
|
352
|
-
'
|
|
622
|
+
'✅ agent-config upgraded' +
|
|
623
|
+
(doctor_rc === 0 ? ' — doctor green.' : ' — review the doctor findings above.'),
|
|
353
624
|
);
|
|
354
625
|
return 0;
|
|
355
626
|
}
|
|
@@ -361,10 +632,29 @@ function installed_lock_is_newer(latest: string, installed: string): boolean {
|
|
|
361
632
|
|
|
362
633
|
// --- CLI entry ---
|
|
363
634
|
|
|
364
|
-
|
|
365
|
-
process.argv[1]
|
|
366
|
-
|
|
367
|
-
|
|
635
|
+
function _isCliEntry(): boolean {
|
|
636
|
+
if (process.argv[1] === undefined) {
|
|
637
|
+
return false;
|
|
638
|
+
}
|
|
639
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
640
|
+
if (import.meta.url === argvUrl) {
|
|
641
|
+
return true;
|
|
642
|
+
}
|
|
643
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
644
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
645
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
646
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
647
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
648
|
+
try {
|
|
649
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
650
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
651
|
+
return here === argv;
|
|
652
|
+
} catch {
|
|
653
|
+
return false;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
368
658
|
main(process.argv.slice(2))
|
|
369
659
|
.then((code) => {
|
|
370
660
|
process.exitCode = code;
|
|
@@ -367,10 +367,29 @@ export function main(argv: string[]): number {
|
|
|
367
367
|
|
|
368
368
|
// --- CLI entry ---
|
|
369
369
|
|
|
370
|
-
|
|
371
|
-
process.argv[1]
|
|
372
|
-
|
|
373
|
-
|
|
370
|
+
function _isCliEntry(): boolean {
|
|
371
|
+
if (process.argv[1] === undefined) {
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
375
|
+
if (import.meta.url === argvUrl) {
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
379
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
380
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
381
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
382
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
383
|
+
try {
|
|
384
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
385
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
386
|
+
return here === argv;
|
|
387
|
+
} catch {
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
374
393
|
try {
|
|
375
394
|
process.exitCode = main(process.argv.slice(2));
|
|
376
395
|
} catch (e) {
|
|
@@ -476,10 +476,29 @@ export function main(argv: string[] | null = null, options: MainOptions = {}): n
|
|
|
476
476
|
// Python: `if __name__ == "__main__": raise SystemExit(main())` (no argv slice;
|
|
477
477
|
// argparse reads sys.argv[1:] inside `_parse` default).
|
|
478
478
|
const _HERE = fileURLToPath(import.meta.url);
|
|
479
|
-
|
|
480
|
-
process.argv[1]
|
|
481
|
-
|
|
482
|
-
|
|
479
|
+
function _isCliEntry(): boolean {
|
|
480
|
+
if (process.argv[1] === undefined) {
|
|
481
|
+
return false;
|
|
482
|
+
}
|
|
483
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
484
|
+
if (import.meta.url === argvUrl) {
|
|
485
|
+
return true;
|
|
486
|
+
}
|
|
487
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
488
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
489
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
490
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
491
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
492
|
+
try {
|
|
493
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
494
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
495
|
+
return here === argv;
|
|
496
|
+
} catch {
|
|
497
|
+
return false;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
483
502
|
try {
|
|
484
503
|
process.exitCode = main();
|
|
485
504
|
} catch (exc) {
|