@event4u/agent-config 8.0.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 +53 -568
- 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/commit-policy.md +10 -0
- 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 +119 -119
- 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.0.0.md +301 -0
- 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
|
@@ -531,9 +531,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
531
531
|
return run(!args.dry_run, args.deltas);
|
|
532
532
|
}
|
|
533
533
|
|
|
534
|
-
|
|
535
|
-
process.argv[1]
|
|
536
|
-
|
|
537
|
-
|
|
534
|
+
function _isCliEntry(): boolean {
|
|
535
|
+
if (process.argv[1] === undefined) {
|
|
536
|
+
return false;
|
|
537
|
+
}
|
|
538
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
539
|
+
if (import.meta.url === argvUrl) {
|
|
540
|
+
return true;
|
|
541
|
+
}
|
|
542
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
543
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
544
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
545
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
546
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
547
|
+
try {
|
|
548
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
549
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
550
|
+
return here === argv;
|
|
551
|
+
} catch {
|
|
552
|
+
return false;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
if (_isCliEntry()) {
|
|
538
557
|
process.exit(main());
|
|
539
558
|
}
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import { execFileSync } from 'node:child_process';
|
|
19
|
-
import { mkdirSync, readdirSync, writeFileSync } from 'node:fs';
|
|
19
|
+
import { realpathSync, mkdirSync, readdirSync, writeFileSync } from 'node:fs';
|
|
20
20
|
import { dirname, resolve } from 'node:path';
|
|
21
21
|
import process from 'node:process';
|
|
22
|
-
import { pathToFileURL } from 'node:url';
|
|
22
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
23
23
|
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
// Categories and phase mapping
|
|
@@ -297,9 +297,30 @@ function main(): void {
|
|
|
297
297
|
|
|
298
298
|
// Run the CLI only when executed directly (`npx tsx src/scripts/migration_status.ts`),
|
|
299
299
|
// not when imported (e.g. by src/scripts/parity/phase_gate.ts for `categorize`).
|
|
300
|
+
function _isCliEntry(): boolean {
|
|
301
|
+
if (process.argv[1] === undefined) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
const argvUrl = pathToFileURL(resolve(process.argv[1])).href;
|
|
305
|
+
if (import.meta.url === argvUrl) {
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
309
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
310
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
311
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
312
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
313
|
+
try {
|
|
314
|
+
const here = realpathSync(fileURLToPath(import.meta.url));
|
|
315
|
+
const argv = realpathSync(resolve(process.argv[1]));
|
|
316
|
+
return here === argv;
|
|
317
|
+
} catch {
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
300
322
|
const isCliEntry =
|
|
301
|
-
|
|
302
|
-
import.meta.url === pathToFileURL(resolve(process.argv[1])).href;
|
|
323
|
+
_isCliEntry();
|
|
303
324
|
if (isCliEntry) {
|
|
304
325
|
main();
|
|
305
326
|
}
|
|
@@ -184,6 +184,28 @@ export function main(argv: string[] = process.argv.slice(2)): number {
|
|
|
184
184
|
return 0;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
+
function _isCliEntry(): boolean {
|
|
188
|
+
if (process.argv[1] === undefined) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
192
|
+
if (import.meta.url === argvUrl) {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
196
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
197
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
198
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
199
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
200
|
+
try {
|
|
201
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
202
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
203
|
+
return here === argv;
|
|
204
|
+
} catch {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
187
209
|
const _isCli =
|
|
188
|
-
|
|
210
|
+
_isCliEntry();
|
|
189
211
|
if (_isCli) process.exit(main());
|
|
@@ -639,7 +639,29 @@ function _dateIso(d: Date): string {
|
|
|
639
639
|
return d.toISOString().slice(0, 10);
|
|
640
640
|
}
|
|
641
641
|
|
|
642
|
-
|
|
642
|
+
function _isCliEntry(): boolean {
|
|
643
|
+
if (process.argv[1] === undefined) {
|
|
644
|
+
return false;
|
|
645
|
+
}
|
|
646
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
647
|
+
if (import.meta.url === argvUrl) {
|
|
648
|
+
return true;
|
|
649
|
+
}
|
|
650
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
651
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
652
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
653
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
654
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
655
|
+
try {
|
|
656
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
657
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
658
|
+
return here === argv;
|
|
659
|
+
} catch {
|
|
660
|
+
return false;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
const _isMain = _isCliEntry();
|
|
643
665
|
if (_isMain) {
|
|
644
666
|
process.exitCode = main();
|
|
645
667
|
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
|
|
34
34
|
import fs from "node:fs";
|
|
35
35
|
import path from "node:path";
|
|
36
|
-
import { pathToFileURL } from "node:url";
|
|
36
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
37
37
|
|
|
38
38
|
import { atomic_write_json } from "./hooks/state_io.js";
|
|
39
39
|
|
|
@@ -347,9 +347,30 @@ export function main(argv?: string[]): number {
|
|
|
347
347
|
return run(_readStdin(), { consumer_root: process.cwd(), verbose: args.verbose });
|
|
348
348
|
}
|
|
349
349
|
|
|
350
|
+
function _isCliEntry(): boolean {
|
|
351
|
+
if (process.argv[1] === undefined) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
355
|
+
if (import.meta.url === argvUrl) {
|
|
356
|
+
return true;
|
|
357
|
+
}
|
|
358
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
359
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
360
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
361
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
362
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
363
|
+
try {
|
|
364
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
365
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
366
|
+
return here === argv;
|
|
367
|
+
} catch {
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
350
372
|
const isCliEntry =
|
|
351
|
-
|
|
352
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
373
|
+
_isCliEntry();
|
|
353
374
|
if (isCliEntry) {
|
|
354
375
|
process.exit(main(process.argv.slice(2)));
|
|
355
376
|
}
|
package/src/scripts/new_skill.ts
CHANGED
|
@@ -397,8 +397,28 @@ function _pyListRepr(items: string[]): string {
|
|
|
397
397
|
return '[' + items.map((s) => "'" + s.replace(/\\/g, '\\\\').replace(/'/g, "\\'") + "'").join(', ') + ']';
|
|
398
398
|
}
|
|
399
399
|
|
|
400
|
-
|
|
401
|
-
process.argv[1]
|
|
402
|
-
|
|
400
|
+
function _isCliEntry(): boolean {
|
|
401
|
+
if (process.argv[1] === undefined) {
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
405
|
+
if (import.meta.url === argvUrl) {
|
|
406
|
+
return true;
|
|
407
|
+
}
|
|
408
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
409
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
410
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
411
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
412
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
413
|
+
try {
|
|
414
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
415
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
416
|
+
return here === argv;
|
|
417
|
+
} catch {
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
403
423
|
process.exit(main());
|
|
404
424
|
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
import fs from "node:fs";
|
|
32
32
|
import path from "node:path";
|
|
33
|
-
import { pathToFileURL } from "node:url";
|
|
33
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
34
34
|
|
|
35
35
|
// Re-use the shared atomic-write helper so concerns honour the single
|
|
36
36
|
// `agents/runtime/state/.dispatcher.lock` discipline (hook-architecture-v1.md
|
|
@@ -216,9 +216,30 @@ export function main(argv?: string[]): number {
|
|
|
216
216
|
return run({ consumer_root: process.cwd(), verbose: args.verbose });
|
|
217
217
|
}
|
|
218
218
|
|
|
219
|
+
function _isCliEntry(): boolean {
|
|
220
|
+
if (process.argv[1] === undefined) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
224
|
+
if (import.meta.url === argvUrl) {
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
228
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
229
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
230
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
231
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
232
|
+
try {
|
|
233
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
234
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
235
|
+
return here === argv;
|
|
236
|
+
} catch {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
219
241
|
const isCliEntry =
|
|
220
|
-
|
|
221
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
242
|
+
_isCliEntry();
|
|
222
243
|
if (isCliEntry) {
|
|
223
244
|
process.exit(main(process.argv.slice(2)));
|
|
224
245
|
}
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
* file is an error unless --allow-missing is given (then warn + exit 0).
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
16
|
+
import { realpathSync, existsSync, readFileSync } from "node:fs";
|
|
17
17
|
import path from "node:path";
|
|
18
18
|
import process from "node:process";
|
|
19
19
|
import { parseArgs } from "node:util";
|
|
20
|
-
import { pathToFileURL } from "node:url";
|
|
20
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
21
21
|
|
|
22
22
|
export interface CoverageAggregate {
|
|
23
23
|
linesCovered: number;
|
|
@@ -192,8 +192,30 @@ function main(): void {
|
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
+
function _isCliEntry(): boolean {
|
|
196
|
+
if (process.argv[1] === undefined) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
200
|
+
if (import.meta.url === argvUrl) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
204
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
205
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
206
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
207
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
208
|
+
try {
|
|
209
|
+
const here = realpathSync(fileURLToPath(import.meta.url));
|
|
210
|
+
const argv = realpathSync(path.resolve(process.argv[1]));
|
|
211
|
+
return here === argv;
|
|
212
|
+
} catch {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
195
217
|
const isCliEntry =
|
|
196
|
-
|
|
218
|
+
_isCliEntry();
|
|
197
219
|
if (isCliEntry) {
|
|
198
220
|
main();
|
|
199
221
|
}
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
* Exit 0 only when every check passes. Node builtins only.
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
import { readFileSync } from 'node:fs';
|
|
23
|
+
import { realpathSync, readFileSync } from 'node:fs';
|
|
24
24
|
import { resolve } from 'node:path';
|
|
25
25
|
import process from 'node:process';
|
|
26
|
-
import { pathToFileURL } from 'node:url';
|
|
26
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
27
27
|
|
|
28
28
|
import {
|
|
29
29
|
CATEGORY_ORDER,
|
|
@@ -262,9 +262,30 @@ function main(): void {
|
|
|
262
262
|
process.exit(exitCode);
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
+
function _isCliEntry(): boolean {
|
|
266
|
+
if (process.argv[1] === undefined) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
const argvUrl = pathToFileURL(resolve(process.argv[1])).href;
|
|
270
|
+
if (import.meta.url === argvUrl) {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
274
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
275
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
276
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
277
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
278
|
+
try {
|
|
279
|
+
const here = realpathSync(fileURLToPath(import.meta.url));
|
|
280
|
+
const argv = realpathSync(resolve(process.argv[1]));
|
|
281
|
+
return here === argv;
|
|
282
|
+
} catch {
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
265
287
|
const isCliEntry =
|
|
266
|
-
|
|
267
|
-
import.meta.url === pathToFileURL(resolve(process.argv[1])).href;
|
|
288
|
+
_isCliEntry();
|
|
268
289
|
if (isCliEntry) {
|
|
269
290
|
main();
|
|
270
291
|
}
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
|
|
27
27
|
import { Buffer } from "node:buffer";
|
|
28
28
|
import { spawnSync } from "node:child_process";
|
|
29
|
-
import { cpSync, existsSync, mkdtempSync, readdirSync, readFileSync, rmSync, statSync } from "node:fs";
|
|
29
|
+
import { realpathSync, cpSync, existsSync, mkdtempSync, readdirSync, readFileSync, rmSync, statSync } from "node:fs";
|
|
30
30
|
import { tmpdir } from "node:os";
|
|
31
31
|
import path from "node:path";
|
|
32
32
|
import process from "node:process";
|
|
33
33
|
import { parseArgs } from "node:util";
|
|
34
|
-
import { pathToFileURL } from "node:url";
|
|
34
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
35
35
|
|
|
36
36
|
import { compareOutcomes, type ChannelDiff, type NormalizeMode, type RunOutcome } from "./compare.js";
|
|
37
37
|
|
|
@@ -334,8 +334,30 @@ function main(): void {
|
|
|
334
334
|
process.exit(report.status === "fail" ? 1 : 0);
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
+
function _isCliEntry(): boolean {
|
|
338
|
+
if (process.argv[1] === undefined) {
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
342
|
+
if (import.meta.url === argvUrl) {
|
|
343
|
+
return true;
|
|
344
|
+
}
|
|
345
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
346
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
347
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
348
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
349
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
350
|
+
try {
|
|
351
|
+
const here = realpathSync(fileURLToPath(import.meta.url));
|
|
352
|
+
const argv = realpathSync(path.resolve(process.argv[1]));
|
|
353
|
+
return here === argv;
|
|
354
|
+
} catch {
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
337
359
|
const isCliEntry =
|
|
338
|
-
|
|
360
|
+
_isCliEntry();
|
|
339
361
|
if (isCliEntry) {
|
|
340
362
|
main();
|
|
341
363
|
}
|
|
@@ -355,9 +355,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
355
355
|
return cmd_import(parsed.args);
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
|
|
359
|
-
process.argv[1]
|
|
360
|
-
|
|
361
|
-
|
|
358
|
+
function _isCliEntry(): boolean {
|
|
359
|
+
if (process.argv[1] === undefined) {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
363
|
+
if (import.meta.url === argvUrl) {
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
367
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
368
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
369
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
370
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
371
|
+
try {
|
|
372
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
373
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
374
|
+
return here === argv;
|
|
375
|
+
} catch {
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
362
381
|
process.exitCode = main();
|
|
363
382
|
}
|
|
@@ -597,9 +597,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
597
597
|
return plan.conflicts.length ? 1 : 0;
|
|
598
598
|
}
|
|
599
599
|
|
|
600
|
-
|
|
601
|
-
process.argv[1]
|
|
602
|
-
|
|
603
|
-
|
|
600
|
+
function _isCliEntry(): boolean {
|
|
601
|
+
if (process.argv[1] === undefined) {
|
|
602
|
+
return false;
|
|
603
|
+
}
|
|
604
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
605
|
+
if (import.meta.url === argvUrl) {
|
|
606
|
+
return true;
|
|
607
|
+
}
|
|
608
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
609
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
610
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
611
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
612
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
613
|
+
try {
|
|
614
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
615
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
616
|
+
return here === argv;
|
|
617
|
+
} catch {
|
|
618
|
+
return false;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
604
623
|
process.exit(main());
|
|
605
624
|
}
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
import * as fs from 'node:fs';
|
|
49
49
|
import * as path from 'node:path';
|
|
50
50
|
import process from 'node:process';
|
|
51
|
-
import { pathToFileURL } from 'node:url';
|
|
51
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
52
52
|
|
|
53
53
|
import { PyRandom } from '../_lib/py_random.js';
|
|
54
54
|
|
|
@@ -520,9 +520,30 @@ function isFile(p: string): boolean {
|
|
|
520
520
|
}
|
|
521
521
|
}
|
|
522
522
|
|
|
523
|
+
function _isCliEntry(): boolean {
|
|
524
|
+
if (process.argv[1] === undefined) {
|
|
525
|
+
return false;
|
|
526
|
+
}
|
|
527
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
528
|
+
if (import.meta.url === argvUrl) {
|
|
529
|
+
return true;
|
|
530
|
+
}
|
|
531
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
532
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
533
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
534
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
535
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
536
|
+
try {
|
|
537
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
538
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
539
|
+
return here === argv;
|
|
540
|
+
} catch {
|
|
541
|
+
return false;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
523
545
|
const _invokedDirectly =
|
|
524
|
-
|
|
525
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
546
|
+
_isCliEntry();
|
|
526
547
|
if (_invokedDirectly) {
|
|
527
548
|
try {
|
|
528
549
|
const rc = main();
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
import * as fs from 'node:fs';
|
|
71
71
|
import * as path from 'node:path';
|
|
72
72
|
import process from 'node:process';
|
|
73
|
-
import { pathToFileURL } from 'node:url';
|
|
73
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
74
74
|
|
|
75
75
|
import { PyRandom } from '../_lib/py_random.js';
|
|
76
76
|
import { _score, ev_table, grid, type EvRow } from './score_ev.js';
|
|
@@ -660,9 +660,30 @@ function pyFloatRepr(x: number): string {
|
|
|
660
660
|
return Number.isInteger(x) ? `${x}.0` : String(x);
|
|
661
661
|
}
|
|
662
662
|
|
|
663
|
+
function _isCliEntry(): boolean {
|
|
664
|
+
if (process.argv[1] === undefined) {
|
|
665
|
+
return false;
|
|
666
|
+
}
|
|
667
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
668
|
+
if (import.meta.url === argvUrl) {
|
|
669
|
+
return true;
|
|
670
|
+
}
|
|
671
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
672
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
673
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
674
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
675
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
676
|
+
try {
|
|
677
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
678
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
679
|
+
return here === argv;
|
|
680
|
+
} catch {
|
|
681
|
+
return false;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
|
|
663
685
|
const _invokedDirectly =
|
|
664
|
-
|
|
665
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
686
|
+
_isCliEntry();
|
|
666
687
|
if (_invokedDirectly) {
|
|
667
688
|
try {
|
|
668
689
|
const rc = main();
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
import * as fs from 'node:fs';
|
|
41
41
|
import * as path from 'node:path';
|
|
42
42
|
import process from 'node:process';
|
|
43
|
-
import { pathToFileURL } from 'node:url';
|
|
43
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
44
44
|
|
|
45
45
|
import { pyRound } from '../_lib/value_ladder.js';
|
|
46
46
|
|
|
@@ -529,9 +529,30 @@ export function main(argv: string[] = process.argv.slice(2)): number {
|
|
|
529
529
|
return 0;
|
|
530
530
|
}
|
|
531
531
|
|
|
532
|
+
function _isCliEntry(): boolean {
|
|
533
|
+
if (process.argv[1] === undefined) {
|
|
534
|
+
return false;
|
|
535
|
+
}
|
|
536
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
537
|
+
if (import.meta.url === argvUrl) {
|
|
538
|
+
return true;
|
|
539
|
+
}
|
|
540
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
541
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
542
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
543
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
544
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
545
|
+
try {
|
|
546
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
547
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
548
|
+
return here === argv;
|
|
549
|
+
} catch {
|
|
550
|
+
return false;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
532
554
|
const _invokedDirectly =
|
|
533
|
-
|
|
534
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
555
|
+
_isCliEntry();
|
|
535
556
|
if (_invokedDirectly) {
|
|
536
557
|
try {
|
|
537
558
|
const rc = main();
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
|
|
44
44
|
import { spawnSync } from 'node:child_process';
|
|
45
45
|
import * as path from 'node:path';
|
|
46
|
+
import * as fs from 'node:fs';
|
|
46
47
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
47
48
|
|
|
48
49
|
import { _matches } from './check_release_pr_shape.js';
|
|
@@ -227,10 +228,29 @@ function main(argv?: readonly string[]): number {
|
|
|
227
228
|
return exit_code;
|
|
228
229
|
}
|
|
229
230
|
|
|
230
|
-
|
|
231
|
-
process.argv[1]
|
|
232
|
-
|
|
233
|
-
|
|
231
|
+
function _isCliEntry(): boolean {
|
|
232
|
+
if (process.argv[1] === undefined) {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
236
|
+
if (import.meta.url === argvUrl) {
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
240
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
241
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
242
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
243
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
244
|
+
try {
|
|
245
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
246
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
247
|
+
return here === argv;
|
|
248
|
+
} catch {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
234
254
|
process.exitCode = main();
|
|
235
255
|
}
|
|
236
256
|
|
|
@@ -134,9 +134,30 @@ function main(argv: string[]): number {
|
|
|
134
134
|
return 0;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
function _isCliEntry(): boolean {
|
|
138
|
+
if (process.argv[1] === undefined) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
142
|
+
if (import.meta.url === argvUrl) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
146
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
147
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
148
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
149
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
150
|
+
try {
|
|
151
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
152
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
153
|
+
return here === argv;
|
|
154
|
+
} catch {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
137
159
|
const _IS_MAIN =
|
|
138
|
-
|
|
139
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
160
|
+
_isCliEntry();
|
|
140
161
|
|
|
141
162
|
if (_IS_MAIN) {
|
|
142
163
|
process.exit(main(process.argv.slice(2)));
|