@event4u/agent-config 8.1.0 → 8.2.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 +50 -297
- 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 +67 -28
- package/dist/mcp/registry-manifest.json +2 -2
- 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/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/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/proof.md +1 -1
- package/docs/setup/per-ide/claude-code.md +10 -4
- package/package.json +3 -2
- 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 +96 -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 +23 -4
- package/src/scripts/_cli/cmd_update.ts +23 -4
- package/src/scripts/_cli/cmd_upgrade.ts +238 -9
- 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/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 +23 -2
- 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.ts +72 -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_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_parity_smoke.ts +23 -2
- package/src/scripts/mcp_render.ts +23 -4
- 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 +23 -4
- 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
|
@@ -356,9 +356,30 @@ function _py_json_dumps(value: unknown, indent: number): string {
|
|
|
356
356
|
return render(value, 0);
|
|
357
357
|
}
|
|
358
358
|
|
|
359
|
+
function _isCliEntry(): boolean {
|
|
360
|
+
if (process.argv[1] === undefined) {
|
|
361
|
+
return false;
|
|
362
|
+
}
|
|
363
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
364
|
+
if (import.meta.url === argvUrl) {
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
368
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
369
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
370
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
371
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
372
|
+
try {
|
|
373
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
374
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
375
|
+
return here === argv;
|
|
376
|
+
} catch {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
359
381
|
const isCliEntry =
|
|
360
|
-
|
|
361
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
382
|
+
_isCliEntry();
|
|
362
383
|
if (isCliEntry) {
|
|
363
384
|
process.exit(main(process.argv.slice(2)));
|
|
364
385
|
}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import fs from "node:fs";
|
|
29
29
|
import path from "node:path";
|
|
30
|
-
import { pathToFileURL } from "node:url";
|
|
30
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
31
31
|
|
|
32
32
|
import {
|
|
33
33
|
shlexSplit,
|
|
@@ -220,9 +220,28 @@ export function main(): number {
|
|
|
220
220
|
return EXIT_WARN;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
223
|
+
function _isCliEntry(): boolean {
|
|
224
|
+
if (process.argv[1] === undefined) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
228
|
+
if (import.meta.url === argvUrl) {
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
231
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
232
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
233
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
234
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
235
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
236
|
+
try {
|
|
237
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
238
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
239
|
+
return here === argv;
|
|
240
|
+
} catch {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (_isCliEntry()) {
|
|
227
246
|
process.exit(main());
|
|
228
247
|
}
|
|
@@ -410,9 +410,30 @@ export function main(argv?: string[]): number {
|
|
|
410
410
|
return _final_exit_code(payload, args.strict);
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
+
function _isCliEntry(): boolean {
|
|
414
|
+
if (process.argv[1] === undefined) {
|
|
415
|
+
return false;
|
|
416
|
+
}
|
|
417
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
418
|
+
if (import.meta.url === argvUrl) {
|
|
419
|
+
return true;
|
|
420
|
+
}
|
|
421
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
422
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
423
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
424
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
425
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
426
|
+
try {
|
|
427
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
428
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
429
|
+
return here === argv;
|
|
430
|
+
} catch {
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
413
435
|
const isCliEntry =
|
|
414
|
-
|
|
415
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
436
|
+
_isCliEntry();
|
|
416
437
|
if (isCliEntry) {
|
|
417
438
|
process.exit(main(process.argv.slice(2)));
|
|
418
439
|
}
|
|
@@ -284,9 +284,30 @@ export function main(argv?: string[]): number {
|
|
|
284
284
|
return _final_exit_code(matrix, args.strict);
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
+
function _isCliEntry(): boolean {
|
|
288
|
+
if (process.argv[1] === undefined) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
292
|
+
if (import.meta.url === argvUrl) {
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
296
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
297
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
298
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
299
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
300
|
+
try {
|
|
301
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
302
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
303
|
+
return here === argv;
|
|
304
|
+
} catch {
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
287
309
|
const isCliEntry =
|
|
288
|
-
|
|
289
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
310
|
+
_isCliEntry();
|
|
290
311
|
if (isCliEntry) {
|
|
291
312
|
process.exit(main(process.argv.slice(2)));
|
|
292
313
|
}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import fs from "node:fs";
|
|
30
30
|
import path from "node:path";
|
|
31
|
-
import { pathToFileURL } from "node:url";
|
|
31
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
32
32
|
|
|
33
33
|
const SETTINGS_FILE = ".agent-settings.yml";
|
|
34
34
|
const EXIT_ALLOW = 0;
|
|
@@ -277,9 +277,28 @@ function _readStdin(): string {
|
|
|
277
277
|
return fs.readFileSync(0, "utf-8");
|
|
278
278
|
}
|
|
279
279
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
function _isCliEntry(): boolean {
|
|
281
|
+
if (process.argv[1] === undefined) {
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
285
|
+
if (import.meta.url === argvUrl) {
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
289
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
290
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
291
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
292
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
293
|
+
try {
|
|
294
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
295
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
296
|
+
return here === argv;
|
|
297
|
+
} catch {
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (_isCliEntry()) {
|
|
284
303
|
process.exit(main());
|
|
285
304
|
}
|
package/src/scripts/install.ts
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
* - `signal.SIGTERM`/`SIGKILL` + `os.kill(pid, 0)` liveness → `process.kill`.
|
|
63
63
|
*/
|
|
64
64
|
|
|
65
|
-
import { spawnSync } from 'node:child_process';
|
|
65
|
+
import { spawn, spawnSync, type ChildProcess } from 'node:child_process';
|
|
66
66
|
import * as crypto from 'node:crypto';
|
|
67
67
|
import * as fs from 'node:fs';
|
|
68
68
|
import * as os from 'node:os';
|
|
@@ -3247,7 +3247,7 @@ function install_global(
|
|
|
3247
3247
|
|
|
3248
3248
|
if (!state.QUIET) {
|
|
3249
3249
|
process.stdout.write('\n');
|
|
3250
|
-
success(
|
|
3250
|
+
success(`Global install completed (v${installed_version}).`);
|
|
3251
3251
|
process.stdout.write('\n');
|
|
3252
3252
|
}
|
|
3253
3253
|
return 0;
|
|
@@ -3843,76 +3843,104 @@ function _wizard_spawn(project_root: string, pass_project_root: boolean = true):
|
|
|
3843
3843
|
}
|
|
3844
3844
|
const env = { ...process.env };
|
|
3845
3845
|
|
|
3846
|
-
// The
|
|
3847
|
-
//
|
|
3848
|
-
//
|
|
3849
|
-
//
|
|
3850
|
-
//
|
|
3851
|
-
//
|
|
3846
|
+
// The wizard child is a long-running local server — it must NOT keep the
|
|
3847
|
+
// installer process in the foreground (a blocking wait here forced users
|
|
3848
|
+
// to Ctrl-C out of `agent-config global` / `upgrade`, which then reported
|
|
3849
|
+
// the step as failed). Spawn it detached, poll for the WIZARD_READY line,
|
|
3850
|
+
// print the banner + open the browser, and return while the server keeps
|
|
3851
|
+
// running in the background.
|
|
3852
3852
|
return _wizard_run_sync(cmd, env, cli);
|
|
3853
3853
|
}
|
|
3854
3854
|
|
|
3855
3855
|
/**
|
|
3856
|
-
*
|
|
3857
|
-
*
|
|
3858
|
-
*
|
|
3859
|
-
* the
|
|
3860
|
-
*
|
|
3861
|
-
*
|
|
3862
|
-
*
|
|
3863
|
-
*
|
|
3864
|
-
*
|
|
3865
|
-
* twin runs the child to completion under the same total budget and surfaces
|
|
3866
|
-
* the same banner/fallback text. This path is network/subprocess-bound and is
|
|
3867
|
-
* NOT exercised by the deterministic golden tests (guarded behind the TTY +
|
|
3868
|
-
* dist-present gates).
|
|
3856
|
+
* Detached wizard launch mirroring `_wizard_spawn` + `_wizard_await_ready`.
|
|
3857
|
+
* The child (a local server that keeps running until the wizard finishes) is
|
|
3858
|
+
* spawned detached with its output redirected to a temp log; a bounded poll
|
|
3859
|
+
* scans the log for the WIZARD_READY line, then prints the banner and opens
|
|
3860
|
+
* the browser. The installer returns immediately after — it never blocks on
|
|
3861
|
+
* the server's lifetime. A child that exits or stays silent past the budget
|
|
3862
|
+
* falls through to the fallback message. This path is network/subprocess-
|
|
3863
|
+
* bound and is NOT exercised by the deterministic golden tests (guarded
|
|
3864
|
+
* behind the TTY + dist-present gates).
|
|
3869
3865
|
*/
|
|
3870
3866
|
function _wizard_run_sync(cmd: string[], env: NodeJS.ProcessEnv, cli: string): number {
|
|
3871
3867
|
const total = _WIZARD_TIMEOUTS.reduce((a, b) => a + b, 0);
|
|
3872
|
-
|
|
3868
|
+
const log_path = path.join(
|
|
3869
|
+
os.tmpdir(),
|
|
3870
|
+
`agent-config-wizard-${process.pid}-${Date.now()}.log`,
|
|
3871
|
+
);
|
|
3872
|
+
let child: ChildProcess;
|
|
3873
|
+
let log_fd: number | null = null;
|
|
3873
3874
|
try {
|
|
3874
|
-
|
|
3875
|
+
log_fd = fs.openSync(log_path, 'w');
|
|
3876
|
+
child = spawn(cmd[0] as string, cmd.slice(1), {
|
|
3875
3877
|
env,
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
maxBuffer: 64 * 1024 * 1024,
|
|
3878
|
+
detached: true,
|
|
3879
|
+
stdio: ['ignore', log_fd, log_fd],
|
|
3879
3880
|
});
|
|
3881
|
+
// ENOENT & friends surface as an async 'error' event on a detached
|
|
3882
|
+
// spawn — swallow it here; the readiness poll below reports the
|
|
3883
|
+
// failure via the fallback message instead of crashing the installer.
|
|
3884
|
+
child.on('error', () => {});
|
|
3885
|
+
child.unref();
|
|
3880
3886
|
} catch (exc) {
|
|
3881
3887
|
process.stdout.write(
|
|
3882
3888
|
`(Wizard failed to start: ${String(exc)}; run 'node ${cli} install --no-open' manually.)\n`,
|
|
3883
3889
|
);
|
|
3884
3890
|
return 0;
|
|
3891
|
+
} finally {
|
|
3892
|
+
if (log_fd !== null) {
|
|
3893
|
+
try {
|
|
3894
|
+
fs.closeSync(log_fd);
|
|
3895
|
+
} catch {
|
|
3896
|
+
/* already closed */
|
|
3897
|
+
}
|
|
3898
|
+
}
|
|
3885
3899
|
}
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3900
|
+
|
|
3901
|
+
const read_log = (): string => {
|
|
3902
|
+
try {
|
|
3903
|
+
return readText(log_path);
|
|
3904
|
+
} catch {
|
|
3905
|
+
return '';
|
|
3906
|
+
}
|
|
3907
|
+
};
|
|
3908
|
+
const deadline = Date.now() + total * 1000;
|
|
3893
3909
|
let matched_url: string | null = null;
|
|
3894
|
-
for (
|
|
3895
|
-
const
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3910
|
+
for (;;) {
|
|
3911
|
+
for (const line of read_log().split('\n')) {
|
|
3912
|
+
const m = _WIZARD_READY_RE.exec(line + '\n');
|
|
3913
|
+
if (m) {
|
|
3914
|
+
matched_url = m[1] as string;
|
|
3915
|
+
break;
|
|
3916
|
+
}
|
|
3899
3917
|
}
|
|
3918
|
+
if (matched_url !== null) break;
|
|
3919
|
+
const pid = child.pid;
|
|
3920
|
+
if (pid === undefined || !pidAlive(pid)) break; // child died before ready
|
|
3921
|
+
if (Date.now() >= deadline) break;
|
|
3922
|
+
sleepMs(200);
|
|
3900
3923
|
}
|
|
3901
3924
|
if (matched_url === null) {
|
|
3902
|
-
const
|
|
3903
|
-
|
|
3925
|
+
const logLines = read_log()
|
|
3926
|
+
.split('\n')
|
|
3927
|
+
.filter((l) => l !== '');
|
|
3928
|
+
const tail = logLines.length ? logLines.slice(-20).join('\n ') : '(no output captured)';
|
|
3904
3929
|
process.stdout.write(
|
|
3905
|
-
`(Wizard server
|
|
3930
|
+
`(Wizard server did not report ready within ${Math.trunc(total)}s; ` +
|
|
3906
3931
|
`run 'node ${cli} install --no-open' manually.)\n` +
|
|
3907
|
-
` Last
|
|
3932
|
+
` Last output:\n ${tail}\n`,
|
|
3908
3933
|
);
|
|
3909
3934
|
return 0;
|
|
3910
3935
|
}
|
|
3911
3936
|
process.stdout.write('\n');
|
|
3912
3937
|
process.stdout.write(`Setup wizard ready: ${matched_url}\n`);
|
|
3913
3938
|
_openBrowser(matched_url);
|
|
3914
|
-
process.stdout.write(
|
|
3915
|
-
|
|
3939
|
+
process.stdout.write(
|
|
3940
|
+
'(Wizard server keeps running in the background — finish the wizard in the ' +
|
|
3941
|
+
'browser tab; the next install run stops any stale server.)\n',
|
|
3942
|
+
);
|
|
3943
|
+
return 0;
|
|
3916
3944
|
}
|
|
3917
3945
|
|
|
3918
3946
|
/** `webbrowser.open` — best-effort platform open; never fatal. */
|
|
@@ -1098,7 +1098,29 @@ export function main(argv: string[] | null = null): number {
|
|
|
1098
1098
|
return 0;
|
|
1099
1099
|
}
|
|
1100
1100
|
|
|
1101
|
-
|
|
1101
|
+
function _isCliEntry(): boolean {
|
|
1102
|
+
if (process.argv[1] === undefined) {
|
|
1103
|
+
return false;
|
|
1104
|
+
}
|
|
1105
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
1106
|
+
if (import.meta.url === argvUrl) {
|
|
1107
|
+
return true;
|
|
1108
|
+
}
|
|
1109
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
1110
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
1111
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
1112
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
1113
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
1114
|
+
try {
|
|
1115
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
1116
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
1117
|
+
return here === argv;
|
|
1118
|
+
} catch {
|
|
1119
|
+
return false;
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
const _isMain = _isCliEntry();
|
|
1102
1124
|
if (_isMain) {
|
|
1103
1125
|
process.exitCode = main();
|
|
1104
1126
|
}
|
|
@@ -315,6 +315,28 @@ function _isPySpace(ch: string): boolean {
|
|
|
315
315
|
return /\s/u.test(ch);
|
|
316
316
|
}
|
|
317
317
|
|
|
318
|
-
|
|
318
|
+
function _isCliEntry(): boolean {
|
|
319
|
+
if (process.argv[1] === undefined) {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
323
|
+
if (import.meta.url === argvUrl) {
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
327
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
328
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
329
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
330
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
331
|
+
try {
|
|
332
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
333
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
334
|
+
return here === argv;
|
|
335
|
+
} catch {
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (_isCliEntry()) {
|
|
319
341
|
process.exitCode = main();
|
|
320
342
|
}
|
|
@@ -514,7 +514,29 @@ function _stableSort<T>(items: T[], cmp: (a: T, b: T) => number): T[] {
|
|
|
514
514
|
return indexed.map((e) => e.item);
|
|
515
515
|
}
|
|
516
516
|
|
|
517
|
-
|
|
517
|
+
function _isCliEntry(): boolean {
|
|
518
|
+
if (process.argv[1] === undefined) {
|
|
519
|
+
return false;
|
|
520
|
+
}
|
|
521
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
522
|
+
if (import.meta.url === argvUrl) {
|
|
523
|
+
return true;
|
|
524
|
+
}
|
|
525
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
526
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
527
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
528
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
529
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
530
|
+
try {
|
|
531
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
532
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
533
|
+
return here === argv;
|
|
534
|
+
} catch {
|
|
535
|
+
return false;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
if (_isCliEntry()) {
|
|
518
540
|
try {
|
|
519
541
|
process.exitCode = main();
|
|
520
542
|
} catch (e) {
|
|
@@ -214,10 +214,29 @@ function _ljust(s: string, width: number): string {
|
|
|
214
214
|
return pad > 0 ? s + ' '.repeat(pad) : s;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
|
|
218
|
-
process.argv[1]
|
|
219
|
-
|
|
220
|
-
|
|
217
|
+
function _isCliEntry(): boolean {
|
|
218
|
+
if (process.argv[1] === undefined) {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
222
|
+
if (import.meta.url === argvUrl) {
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
226
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
227
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
228
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
229
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
230
|
+
try {
|
|
231
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
232
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
233
|
+
return here === argv;
|
|
234
|
+
} catch {
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
221
240
|
try {
|
|
222
241
|
process.exitCode = main();
|
|
223
242
|
} catch (err) {
|
package/src/scripts/janitor.ts
CHANGED
|
@@ -248,10 +248,29 @@ function main(argv?: readonly string[]): number {
|
|
|
248
248
|
return 0;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
|
|
252
|
-
process.argv[1]
|
|
253
|
-
|
|
254
|
-
|
|
251
|
+
function _isCliEntry(): boolean {
|
|
252
|
+
if (process.argv[1] === undefined) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
256
|
+
if (import.meta.url === argvUrl) {
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
260
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
261
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
262
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
263
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
264
|
+
try {
|
|
265
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
266
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
267
|
+
return here === argv;
|
|
268
|
+
} catch {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
255
274
|
process.exit(main());
|
|
256
275
|
}
|
|
257
276
|
|
|
@@ -36,7 +36,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
36
36
|
import * as fs from 'node:fs';
|
|
37
37
|
import * as path from 'node:path';
|
|
38
38
|
import process from 'node:process';
|
|
39
|
-
import { pathToFileURL } from 'node:url';
|
|
39
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
40
40
|
|
|
41
41
|
import type { SettingsDict, SettingsValue } from './_lib/agent_settings.js';
|
|
42
42
|
import { write_atomic } from './_lib/fs_atomic.js';
|
|
@@ -1097,8 +1097,30 @@ function _repoRoot(): string {
|
|
|
1097
1097
|
return path.resolve(path.dirname(_thisFile()), '..', '..');
|
|
1098
1098
|
}
|
|
1099
1099
|
|
|
1100
|
+
function _isCliEntry(): boolean {
|
|
1101
|
+
if (process.argv[1] === undefined) {
|
|
1102
|
+
return false;
|
|
1103
|
+
}
|
|
1104
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
1105
|
+
if (import.meta.url === argvUrl) {
|
|
1106
|
+
return true;
|
|
1107
|
+
}
|
|
1108
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
1109
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
1110
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
1111
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
1112
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
1113
|
+
try {
|
|
1114
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
1115
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
1116
|
+
return here === argv;
|
|
1117
|
+
} catch {
|
|
1118
|
+
return false;
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1100
1122
|
const _isMain =
|
|
1101
|
-
|
|
1123
|
+
_isCliEntry();
|
|
1102
1124
|
if (_isMain) {
|
|
1103
1125
|
// Mirror `raise SystemExit(main())`.
|
|
1104
1126
|
process.exit(main());
|
|
@@ -302,9 +302,28 @@ function _dumpString(s: string): string {
|
|
|
302
302
|
return out + '"';
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
-
|
|
306
|
-
process.argv[1]
|
|
307
|
-
|
|
308
|
-
|
|
305
|
+
function _isCliEntry(): boolean {
|
|
306
|
+
if (process.argv[1] === undefined) {
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
310
|
+
if (import.meta.url === argvUrl) {
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
314
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
315
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
316
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
317
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
318
|
+
try {
|
|
319
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
320
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
321
|
+
return here === argv;
|
|
322
|
+
} catch {
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
309
328
|
process.exitCode = main();
|
|
310
329
|
}
|
|
@@ -217,9 +217,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
217
217
|
return 0;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
220
|
+
function _isCliEntry(): boolean {
|
|
221
|
+
if (process.argv[1] === undefined) {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
225
|
+
if (import.meta.url === argvUrl) {
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
229
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
230
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
231
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
232
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
233
|
+
try {
|
|
234
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
235
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
236
|
+
return here === argv;
|
|
237
|
+
} catch {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
if (_isCliEntry()) {
|
|
224
243
|
process.exit(main());
|
|
225
244
|
}
|
|
@@ -233,9 +233,28 @@ export function main(argv?: readonly string[]): number {
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
const _HERE = fileURLToPath(import.meta.url);
|
|
236
|
-
|
|
237
|
-
process.argv[1]
|
|
238
|
-
|
|
239
|
-
|
|
236
|
+
function _isCliEntry(): boolean {
|
|
237
|
+
if (process.argv[1] === undefined) {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
241
|
+
if (import.meta.url === argvUrl) {
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
245
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
246
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
247
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
248
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
249
|
+
try {
|
|
250
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
251
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
252
|
+
return here === argv;
|
|
253
|
+
} catch {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
240
259
|
process.exit(main());
|
|
241
260
|
}
|