@event4u/agent-config 8.1.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +3 -3
- package/CHANGELOG.md +83 -292
- package/MIGRATION.md +18 -0
- package/README.md +86 -3
- package/dist/agent-src/commands/agents/init.md +3 -3
- package/dist/agent-src/commands/chat-history/import.md +5 -5
- package/dist/agent-src/commands/chat-history.md +1 -1
- package/dist/agent-src/commands/condense.md +1 -1
- package/dist/agent-src/commands/context/create.md +1 -1
- package/dist/agent-src/commands/council/analysis.md +2 -2
- package/dist/agent-src/commands/council/default.md +3 -3
- package/dist/agent-src/commands/council/design.md +2 -2
- package/dist/agent-src/commands/council/optimize.md +1 -1
- package/dist/agent-src/commands/council/pr.md +2 -2
- package/dist/agent-src/commands/council.md +1 -1
- package/dist/agent-src/commands/feature/plan.md +1 -1
- package/dist/agent-src/commands/ghostwriter/list.md +1 -1
- package/dist/agent-src/commands/ghostwriter/write.md +1 -1
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/implement-ticket.md +2 -2
- package/dist/agent-src/commands/judge/on-diff.md +1 -1
- package/dist/agent-src/commands/judge/steps.md +3 -1
- package/dist/agent-src/commands/memory/add.md +2 -2
- package/dist/agent-src/commands/memory/learn-low-impact.md +1 -1
- package/dist/agent-src/commands/memory/load.md +1 -1
- package/dist/agent-src/commands/memory/mine-session.md +1 -1
- package/dist/agent-src/commands/memory/promote.md +1 -1
- package/dist/agent-src/commands/memory/propose.md +1 -1
- package/dist/agent-src/commands/mission/upgrade.md +1 -1
- package/dist/agent-src/commands/module/explore.md +3 -3
- package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +1 -1
- package/dist/agent-src/commands/optimize-project.md +1 -1
- package/dist/agent-src/commands/orchestrate.md +2 -2
- package/dist/agent-src/commands/project-analyze.md +1 -1
- package/dist/agent-src/commands/project-health.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +2 -2
- package/dist/agent-src/commands/roadmap/process-full.md +3 -1
- package/dist/agent-src/commands/roadmap/process-phase.md +4 -2
- package/dist/agent-src/commands/roadmap/process-step.md +3 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/sync-agent-settings.md +7 -7
- package/dist/agent-src/commands/sync-gitignore/fix.md +3 -3
- package/dist/agent-src/commands/sync-gitignore.md +4 -4
- package/dist/agent-src/commands/work.md +3 -3
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +1 -1
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -7
- package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +9 -4
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +10 -9
- package/dist/agent-src/contexts/execution/verification-mechanics.md +13 -1
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/presets/README.md +1 -1
- package/dist/agent-src/profiles/README.md +1 -1
- package/dist/agent-src/rules/architecture.md +2 -2
- package/dist/agent-src/rules/context-hygiene.md +2 -2
- package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
- package/dist/agent-src/rules/media-governance-routing.md +1 -1
- package/dist/agent-src/rules/no-roadmap-references.md +3 -3
- package/dist/agent-src/rules/preservation-guard.md +2 -2
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
- package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
- package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
- package/dist/agent-src/rules/source-confidentiality.md +1 -1
- package/dist/agent-src/rules/telegraph-speak.md +1 -1
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/ui-audit-gate.md +1 -1
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
- package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
- package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
- package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
- package/dist/agent-src/skills/api-design/SKILL.md +1 -1
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
- package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
- package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
- package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
- package/dist/agent-src/skills/code-review/SKILL.md +3 -4
- package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
- package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
- package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
- package/dist/agent-src/skills/database/SKILL.md +2 -1
- package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
- package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
- package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
- package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
- package/dist/agent-src/skills/flux/SKILL.md +10 -9
- package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
- package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
- package/dist/agent-src/skills/livewire/SKILL.md +10 -9
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
- package/dist/agent-src/skills/module-management/SKILL.md +2 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
- package/dist/agent-src/skills/premortem/SKILL.md +1 -1
- package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
- package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
- package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
- package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
- package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
- package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
- package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
- package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
- package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
- package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
- package/dist/agent-src/templates/agent-settings.md +34 -25
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
- package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +4 -4
- package/dist/agent-src/templates/copilot-instructions.md +1 -1
- package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
- package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
- package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
- package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
- package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
- package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
- package/dist/agent-src/templates/roadmaps.md +9 -4
- package/dist/agent-src/templates/rule.md +3 -3
- package/dist/agent-src/templates/scripts/README.md +6 -6
- package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
- package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
- package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
- package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
- package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
- package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
- package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
- package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
- package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
- package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
- package/dist/agent-src/templates/skill.md +2 -2
- package/dist/cli/python/knowledge_ingest.js +24 -3
- package/dist/cli/python/knowledge_ingest.js.map +1 -1
- package/dist/cli/python/workspace_analytics.js +23 -3
- package/dist/cli/python/workspace_analytics.js.map +1 -1
- package/dist/cli/python/workspace_crypto.js +23 -3
- package/dist/cli/python/workspace_crypto.js.map +1 -1
- package/dist/cli/python/workspace_documents.js +23 -3
- package/dist/cli/python/workspace_documents.js.map +1 -1
- package/dist/cli/python/workspace_drive.js +24 -3
- package/dist/cli/python/workspace_drive.js.map +1 -1
- package/dist/cli/python/workspace_drive_health.js +23 -3
- package/dist/cli/python/workspace_drive_health.js.map +1 -1
- package/dist/cli/python/workspace_explain.js +23 -3
- package/dist/cli/python/workspace_explain.js.map +1 -1
- package/dist/cli/python/workspace_hosts.js +23 -3
- package/dist/cli/python/workspace_hosts.js.map +1 -1
- package/dist/cli/python/workspace_inbox.js +23 -3
- package/dist/cli/python/workspace_inbox.js.map +1 -1
- package/dist/cli/python/workspace_render.js +23 -3
- package/dist/cli/python/workspace_render.js.map +1 -1
- package/dist/cli/python/workspace_roles.js +23 -3
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/cli/python/workspace_sessions.js +23 -3
- package/dist/cli/python/workspace_sessions.js.map +1 -1
- package/dist/cli/python/workspace_skills.js +23 -3
- package/dist/cli/python/workspace_skills.js.map +1 -1
- package/dist/cli/registry.js +2 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +118 -118
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +2 -2
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +3 -3
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +3 -3
- package/dist/install/install.mjs +647 -408
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/server/routes/settings.js +4 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/schemas/settings.js +1 -1
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/CLAIMS.md +2 -2
- package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
- package/docs/benchmark.md +40 -0
- package/docs/contracts/CHANGELOG-conventions.md +8 -5
- package/docs/contracts/branch-protection-policy.md +14 -5
- package/docs/contracts/mcp-phase-1-scope.md +75 -0
- package/docs/contracts/mcp-tool-inventory.md +22 -15
- package/docs/contracts/release-pr-gating.md +22 -11
- package/docs/contracts/skill-bundled-assets.md +2 -2
- package/docs/customization.md +1 -1
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
- package/docs/decisions/ADR-111-canonical-glama-listing.md +97 -0
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +92 -0
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +201 -0
- package/docs/decisions/INDEX.md +3 -0
- package/docs/distribution/registry-submissions.md +1 -1
- package/docs/getting-started.md +8 -6
- package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
- package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
- package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
- package/docs/guidelines/agent-infra/layered-settings.md +4 -4
- package/docs/guidelines/agent-infra/memory-access.md +19 -18
- package/docs/guidelines/agent-infra/naming.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
- package/docs/guidelines/agent-infra/role-contracts.md +1 -1
- package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
- package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
- package/docs/guidelines/augment-portability-patterns.md +1 -1
- package/docs/installation.md +13 -14
- package/docs/mcp-server.md +32 -20
- package/docs/proof.md +1 -1
- package/docs/setup/mcp-cloud-endpoints.md +9 -2
- package/docs/setup/per-ide/claude-code.md +10 -4
- package/package.json +4 -3
- package/src/config/agent-settings.template.yml +31 -17
- package/src/config/host-capabilities.yml +25 -16
- package/src/config/profiles/balanced.ini +5 -3
- package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
- package/src/scripts/_cli/cmd_conformance.ts +23 -4
- package/src/scripts/_cli/cmd_doctor.ts +196 -8
- package/src/scripts/_cli/cmd_explain.ts +23 -4
- package/src/scripts/_cli/cmd_export.ts +23 -4
- package/src/scripts/_cli/cmd_fleet.ts +23 -4
- package/src/scripts/_cli/cmd_migrate.ts +23 -4
- package/src/scripts/_cli/cmd_preflight.ts +24 -4
- package/src/scripts/_cli/cmd_prune.ts +23 -4
- package/src/scripts/_cli/cmd_refresh.ts +23 -4
- package/src/scripts/_cli/cmd_settings_check.ts +23 -4
- package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
- package/src/scripts/_cli/cmd_sync.ts +23 -4
- package/src/scripts/_cli/cmd_uninstall.ts +45 -4
- package/src/scripts/_cli/cmd_update.ts +23 -4
- package/src/scripts/_cli/cmd_upgrade.ts +307 -17
- package/src/scripts/_cli/cmd_validate.ts +23 -4
- package/src/scripts/_cli/cmd_versions.ts +23 -4
- package/src/scripts/_dispatch.bash +62 -19
- package/src/scripts/_lib/claude_plugin.ts +83 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +251 -0
- package/src/scripts/_lib/knowledge_global.ts +24 -2
- package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
- package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
- package/src/scripts/_lib/link_crypto.ts +24 -5
- package/src/scripts/_lib/pin_resolver.ts +24 -3
- package/src/scripts/adoption_report.ts +23 -4
- package/src/scripts/adoption_snapshot.ts +23 -1
- package/src/scripts/adoption_status.ts +23 -4
- package/src/scripts/adr/regenerate_index.ts +24 -3
- package/src/scripts/ai_council/airgap.ts +25 -2
- package/src/scripts/ai_council/compile_corpus.ts +24 -2
- package/src/scripts/ai_council/pricing.ts +11 -1
- package/src/scripts/analysis_freshness.ts +23 -4
- package/src/scripts/annotate_discovery.ts +23 -1
- package/src/scripts/apply_modules_config.ts +23 -4
- package/src/scripts/audit_adr_coverage.ts +23 -4
- package/src/scripts/audit_auto_rules.ts +23 -1
- package/src/scripts/audit_cloud_compatibility.ts +23 -4
- package/src/scripts/audit_command_surface.ts +23 -4
- package/src/scripts/audit_initial_context.ts +23 -3
- package/src/scripts/audit_likelihood.ts +23 -1
- package/src/scripts/audit_mcp_tools.ts +23 -3
- package/src/scripts/audit_overlap.ts +23 -1
- package/src/scripts/audit_skill_descriptions.ts +24 -2
- package/src/scripts/audit_skill_overlap.ts +23 -1
- package/src/scripts/audit_user_type_axis.ts +23 -4
- package/src/scripts/backfill_model_tier.ts +23 -4
- package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
- package/src/scripts/bench_ab_clone.ts +23 -1
- package/src/scripts/bench_ab_diff.ts +23 -1
- package/src/scripts/bench_ab_integrity.ts +23 -1
- package/src/scripts/bench_ab_run.ts +23 -2
- package/src/scripts/bench_ab_task_runner.ts +23 -1
- package/src/scripts/bench_ab_tracka_run.ts +23 -2
- package/src/scripts/bench_ab_v2_run.ts +23 -1
- package/src/scripts/bench_ab_v2_stats.ts +23 -1
- package/src/scripts/bench_baseline_ready.ts +23 -1
- package/src/scripts/bench_condense_memory.ts +23 -1
- package/src/scripts/bench_drift_check.ts +23 -2
- package/src/scripts/bench_matrix.ts +23 -4
- package/src/scripts/bench_per_tool.ts +23 -1
- package/src/scripts/bench_quality_run.ts +23 -2
- package/src/scripts/bench_rtk_savings.ts +23 -1
- package/src/scripts/bench_rule_load_latency.ts +23 -2
- package/src/scripts/bench_run.ts +23 -2
- package/src/scripts/bench_runner.ts +23 -1
- package/src/scripts/build_cloud_bundle.ts +23 -3
- package/src/scripts/build_discovery_manifest.ts +23 -4
- package/src/scripts/build_linear_digest.ts +23 -3
- package/src/scripts/build_mcp_registry_manifest.ts +23 -4
- package/src/scripts/build_rule_trigger_matrix.ts +23 -4
- package/src/scripts/capture_showcase_session.ts +23 -1
- package/src/scripts/chat_history.ts +24 -3
- package/src/scripts/check_always_budget.ts +23 -2
- package/src/scripts/check_artefact_checksums.ts +23 -4
- package/src/scripts/check_augment_description_cap.ts +23 -4
- package/src/scripts/check_augmentignore.ts +23 -4
- package/src/scripts/check_beta_review_markers.ts +23 -4
- package/src/scripts/check_cluster_patterns.ts +23 -4
- package/src/scripts/check_command_count_messaging.ts +23 -4
- package/src/scripts/check_comparison.ts +23 -1
- package/src/scripts/check_condensation.ts +24 -3
- package/src/scripts/check_condensed_paths.ts +23 -2
- package/src/scripts/check_context_paths.ts +23 -4
- package/src/scripts/check_council_config_location.ts +23 -4
- package/src/scripts/check_council_layout.ts +23 -4
- package/src/scripts/check_council_references.ts +23 -4
- package/src/scripts/check_discovery_determinism.ts +24 -4
- package/src/scripts/check_gate_paths.ts +23 -4
- package/src/scripts/check_generated_artefact_headers.ts +23 -4
- package/src/scripts/check_generator_output_coverage.ts +23 -4
- package/src/scripts/check_gitignore_freshness.ts +23 -4
- package/src/scripts/check_iron_law_prominence.ts +23 -4
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_kernel_rule_bundle.ts +23 -4
- package/src/scripts/check_knowledge_cards.ts +23 -1
- package/src/scripts/check_md_language.ts +23 -4
- package/src/scripts/check_media_deps.ts +24 -1
- package/src/scripts/check_memory.ts +24 -2
- package/src/scripts/check_memory_proposal.ts +23 -4
- package/src/scripts/check_module_management_neutral.ts +23 -4
- package/src/scripts/check_no_conflict_markers.ts +23 -4
- package/src/scripts/check_no_external_sources.ts +23 -4
- package/src/scripts/check_no_local_settings_committed.ts +24 -4
- package/src/scripts/check_no_new_legacy_path.ts +23 -4
- package/src/scripts/check_no_roadmap_refs.ts +23 -4
- package/src/scripts/check_one_off_location.ts +23 -4
- package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
- package/src/scripts/check_portability.ts +24 -3
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_public_catalog_links.ts +23 -4
- package/src/scripts/check_public_links.ts +23 -4
- package/src/scripts/check_quality_regression.ts +23 -2
- package/src/scripts/check_references.ts +23 -4
- package/src/scripts/check_release_includes_discovery.ts +23 -4
- package/src/scripts/check_release_pr_shape.ts +23 -4
- package/src/scripts/check_release_published.ts +23 -4
- package/src/scripts/check_release_trunk_sync.ts +23 -4
- package/src/scripts/check_reply_consistency.ts +23 -4
- package/src/scripts/check_roadmap_trackable.ts +23 -4
- package/src/scripts/check_role_doc_links.ts +23 -4
- package/src/scripts/check_safety_floor_untouched.ts +24 -4
- package/src/scripts/check_site_links.ts +23 -1
- package/src/scripts/check_skill_gaps.ts +23 -1
- package/src/scripts/check_skill_requires.ts +23 -4
- package/src/scripts/check_structural_breaking.ts +24 -4
- package/src/scripts/check_surface_tiers.ts +23 -4
- package/src/scripts/check_template_pin_drift.ts +23 -4
- package/src/scripts/check_test_coverage_diff.ts +23 -4
- package/src/scripts/check_token_optimizer_freshness.ts +23 -4
- package/src/scripts/check_token_quality_golden.ts +23 -2
- package/src/scripts/check_token_regression.ts +23 -2
- package/src/scripts/check_tracked_but_ignored.ts +24 -4
- package/src/scripts/check_trigger_evals.ts +23 -4
- package/src/scripts/check_trunk_drift.ts +24 -1
- package/src/scripts/check_update_banner.ts +23 -4
- package/src/scripts/ci_summary.ts +23 -4
- package/src/scripts/ci_time_ratio.ts +23 -4
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/compile_router.ts +23 -4
- package/src/scripts/condense.ts +30 -31
- package/src/scripts/condense_memory.ts +24 -2
- package/src/scripts/config/packs.ts +24 -4
- package/src/scripts/config/session_profiles.ts +23 -4
- package/src/scripts/context_hygiene_hook.ts +24 -3
- package/src/scripts/cost_by_conversation.ts +23 -4
- package/src/scripts/cost_summary.ts +23 -4
- package/src/scripts/council_cli.ts +35 -7
- package/src/scripts/council_prune.ts +25 -2
- package/src/scripts/cross_repo_retrieve.ts +23 -4
- package/src/scripts/discovery_stats.ts +23 -4
- package/src/scripts/evidence_report.ts +23 -1
- package/src/scripts/export_replay_corpus.ts +23 -2
- package/src/scripts/extract_audit_patterns.ts +23 -1
- package/src/scripts/first_run_gate_hook.ts +24 -3
- package/src/scripts/gen_discovery_baseline.ts +23 -4
- package/src/scripts/generate_capabilities_index.ts +24 -5
- package/src/scripts/generate_capability_matrix.ts +23 -4
- package/src/scripts/generate_catalog.ts +23 -1
- package/src/scripts/generate_command_flows.ts +23 -4
- package/src/scripts/generate_cookbook.ts +23 -4
- package/src/scripts/generate_index.ts +23 -4
- package/src/scripts/generate_ownership_matrix.ts +23 -1
- package/src/scripts/generate_pack_manifests.ts +24 -5
- package/src/scripts/generate_role_experiences_catalog.ts +23 -4
- package/src/scripts/hooks/block_no_verify.ts +23 -4
- package/src/scripts/hooks/design_slop_hook.ts +24 -3
- package/src/scripts/hooks/dispatch_hook.ts +47 -14
- package/src/scripts/hooks/replay_hook.ts +23 -2
- package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
- package/src/scripts/hooks_doctor.ts +23 -2
- package/src/scripts/hooks_status.ts +23 -2
- package/src/scripts/injection_scan_hook.ts +24 -5
- package/src/scripts/install +23 -4
- package/src/scripts/install.ts +102 -44
- package/src/scripts/inventory_abstraction_budget.ts +23 -1
- package/src/scripts/inventory_frontmatter.ts +23 -1
- package/src/scripts/inventory_meta_layers.ts +23 -1
- package/src/scripts/iron_law_sha.ts +23 -4
- package/src/scripts/janitor.ts +23 -4
- package/src/scripts/knowledge_global_cli.ts +24 -2
- package/src/scripts/linked_projects_list.ts +23 -4
- package/src/scripts/lint_agent_security.ts +23 -4
- package/src/scripts/lint_agent_skill_names.ts +23 -4
- package/src/scripts/lint_agents_layout.ts +23 -4
- package/src/scripts/lint_agents_md.ts +23 -4
- package/src/scripts/lint_archived_skills.ts +23 -4
- package/src/scripts/lint_artefact_frontmatter.ts +23 -4
- package/src/scripts/lint_bench_ab.ts +23 -4
- package/src/scripts/lint_bench_corpus.ts +23 -2
- package/src/scripts/lint_command_flow_coverage.ts +23 -4
- package/src/scripts/lint_command_routing.ts +23 -4
- package/src/scripts/lint_command_tiers.ts +23 -2
- package/src/scripts/lint_command_verbs.ts +23 -4
- package/src/scripts/lint_commit_subjects.ts +24 -4
- package/src/scripts/lint_confusables.ts +25 -5
- package/src/scripts/lint_context_spine_usage.ts +23 -4
- package/src/scripts/lint_discovery_manifest.ts +23 -4
- package/src/scripts/lint_discovery_vocabulary.ts +23 -4
- package/src/scripts/lint_empty_roadmaps.ts +23 -4
- package/src/scripts/lint_eval_freshness.ts +23 -4
- package/src/scripts/lint_examples.ts +23 -4
- package/src/scripts/lint_explain_trace.ts +23 -4
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_flows.ts +23 -4
- package/src/scripts/lint_framework_leakage.ts +23 -4
- package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
- package/src/scripts/lint_ghostwriter_source.ts +23 -4
- package/src/scripts/lint_glama_drift.ts +75 -0
- package/src/scripts/lint_global_paths.ts +23 -2
- package/src/scripts/lint_handoffs.ts +23 -4
- package/src/scripts/lint_hidden_unicode.ts +24 -5
- package/src/scripts/lint_hook_concern_budget.ts +23 -4
- package/src/scripts/lint_hook_manifest.ts +23 -2
- package/src/scripts/lint_instruction_smuggling.ts +25 -5
- package/src/scripts/lint_legal_pack.ts +23 -1
- package/src/scripts/lint_load_context.ts +23 -4
- package/src/scripts/lint_marketplace.ts +24 -3
- package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
- package/src/scripts/lint_mcp_config_security.ts +25 -5
- package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
- package/src/scripts/lint_media_policy_linkage.ts +23 -4
- package/src/scripts/lint_missions.ts +23 -4
- package/src/scripts/lint_model_tier_coverage.ts +23 -4
- package/src/scripts/lint_namespace.ts +23 -4
- package/src/scripts/lint_namespace_collisions.ts +23 -4
- package/src/scripts/lint_new_skill_gate.ts +23 -4
- package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
- package/src/scripts/lint_one_off_age.ts +23 -4
- package/src/scripts/lint_orchestration_dsl.ts +23 -4
- package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
- package/src/scripts/lint_pack_boundaries.ts +23 -4
- package/src/scripts/lint_pack_dependencies.ts +23 -2
- package/src/scripts/lint_pack_first_win.ts +23 -4
- package/src/scripts/lint_pack_risk_class.ts +23 -1
- package/src/scripts/lint_persona_governance.ts +23 -4
- package/src/scripts/lint_positioning.ts +23 -4
- package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
- package/src/scripts/lint_readme_jargon.ts +23 -4
- package/src/scripts/lint_readme_size.ts +23 -4
- package/src/scripts/lint_regression.ts +23 -4
- package/src/scripts/lint_roadmap_blockers.ts +23 -4
- package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
- package/src/scripts/lint_roadmap_complexity.ts +23 -4
- package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
- package/src/scripts/lint_role_experiences.ts +23 -4
- package/src/scripts/lint_rule_interactions.ts +23 -4
- package/src/scripts/lint_rule_tiers.ts +24 -3
- package/src/scripts/lint_showcase_sessions.ts +23 -4
- package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
- package/src/scripts/lint_skill_originality.ts +23 -4
- package/src/scripts/lint_skill_tools.ts +23 -4
- package/src/scripts/lint_subagent_determinism.ts +23 -4
- package/src/scripts/lint_ticket_buildable.ts +23 -4
- package/src/scripts/lint_topics_yaml.ts +23 -4
- package/src/scripts/lint_trust_coherence.ts +23 -4
- package/src/scripts/lint_value_dashboard.ts +23 -4
- package/src/scripts/lint_workflow_security.ts +23 -4
- package/src/scripts/lint_workspace_boundary.ts +23 -4
- package/src/scripts/mcp_exec/safety_envelope.ts +105 -0
- package/src/scripts/mcp_parity_smoke.ts +23 -2
- package/src/scripts/mcp_registry_submit.sh +14 -3
- package/src/scripts/mcp_render.ts +23 -4
- package/src/scripts/mcp_server/__main__.ts +6 -8
- package/src/scripts/mcp_server/consumer_tool_catalog.json +78 -3
- package/src/scripts/mcp_server/tools.ts +731 -0
- package/src/scripts/mcp_telemetry_health.ts +23 -4
- package/src/scripts/mcp_telemetry_query.ts +23 -4
- package/src/scripts/mcp_telemetry_store.ts +23 -4
- package/src/scripts/measure_augment_budget.ts +23 -1
- package/src/scripts/measure_density.ts +23 -1
- package/src/scripts/measure_frugality_savings.ts +23 -1
- package/src/scripts/measure_markitdown_lift.ts +23 -1
- package/src/scripts/measure_patterns.ts +23 -1
- package/src/scripts/measure_projection_bytes.ts +23 -1
- package/src/scripts/measure_rule_budget.ts +23 -4
- package/src/scripts/measure_skill_reduction.ts +23 -1
- package/src/scripts/memory_hash.ts +24 -2
- package/src/scripts/memory_lookup.ts +24 -2
- package/src/scripts/memory_report.ts +24 -2
- package/src/scripts/memory_signal.ts +24 -2
- package/src/scripts/memory_status.ts +26 -2
- package/src/scripts/migrate_command_suggestions.ts +23 -4
- package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
- package/src/scripts/migration_status.ts +25 -4
- package/src/scripts/mine_missing_guardrails.ts +23 -1
- package/src/scripts/mine_session.ts +23 -1
- package/src/scripts/minimal_safe_diff_hook.ts +24 -3
- package/src/scripts/new_skill.ts +23 -3
- package/src/scripts/onboarding_gate_hook.ts +24 -3
- package/src/scripts/parity/coverage_diff.ts +25 -3
- package/src/scripts/parity/phase_gate.ts +25 -4
- package/src/scripts/parity/replay.ts +25 -3
- package/src/scripts/pattern_share.ts +23 -4
- package/src/scripts/plan_physical_move.ts +23 -4
- package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
- package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
- package/src/scripts/prediction-pool/score_ev.ts +24 -3
- package/src/scripts/print_required_checks.ts +24 -4
- package/src/scripts/probe_host_compliance.ts +23 -2
- package/src/scripts/probe_projection_fidelity.ts +23 -1
- package/src/scripts/probe_skill_registration.ts +24 -2
- package/src/scripts/profile_staleness_hook.ts +24 -3
- package/src/scripts/profile_use.ts +23 -4
- package/src/scripts/project_thin_rules.ts +23 -3
- package/src/scripts/propose_modules_config.ts +23 -4
- package/src/scripts/prototype_lint_contradictions.ts +23 -1
- package/src/scripts/prove_pack_extractable.ts +23 -4
- package/src/scripts/readme_linter.ts +23 -3
- package/src/scripts/redact_hook_capture.ts +23 -4
- package/src/scripts/refine_ticket_detect.ts +23 -4
- package/src/scripts/release.ts +226 -43
- package/src/scripts/render_benchmark_composite.ts +23 -4
- package/src/scripts/render_benchmark_md.ts +23 -4
- package/src/scripts/roadmap_progress_hook.ts +46 -16
- package/src/scripts/run_skill_evals.ts +23 -4
- package/src/scripts/runtime_dispatcher.ts +23 -4
- package/src/scripts/runtime_registry.ts +23 -4
- package/src/scripts/score_skill_selection.ts +23 -1
- package/src/scripts/security_audit_config.ts +24 -5
- package/src/scripts/skill_collision_clusters.ts +23 -4
- package/src/scripts/skill_discovery.ts +23 -4
- package/src/scripts/skill_linter.ts +23 -2
- package/src/scripts/skill_preview.ts +23 -4
- package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
- package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
- package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
- package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
- package/src/scripts/skill_usage_collect.ts +23 -4
- package/src/scripts/smoke_path_resolution.ts +23 -4
- package/src/scripts/smoke_quickstart.ts +23 -4
- package/src/scripts/snapshot_agent_outputs.ts +23 -4
- package/src/scripts/spotcheck_thin_root.ts +23 -4
- package/src/scripts/sync_agent_settings.ts +23 -4
- package/src/scripts/sync_github_metadata.ts +23 -4
- package/src/scripts/sync_gitignore.ts +23 -4
- package/src/scripts/telegraph_stats.ts +23 -4
- package/src/scripts/tool_registry.ts +24 -4
- package/src/scripts/trigger_coverage.ts +23 -4
- package/src/scripts/update_counts.ts +23 -4
- package/src/scripts/update_prices.ts +23 -1
- package/src/scripts/validate_agent_settings.ts +23 -4
- package/src/scripts/validate_decision_engine.ts +23 -4
- package/src/scripts/validate_discovery_manifest.ts +23 -4
- package/src/scripts/validate_frontmatter.ts +23 -2
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/scripts/validate_safe_paths.ts +24 -4
- package/src/scripts/validate_telegraph_carveouts.ts +23 -4
- package/src/scripts/verify_before_complete_hook.ts +24 -3
- package/src/scripts/verify_physical_move.ts +23 -4
- package/src/scripts/wrapper_freshness_hook.ts +107 -8
- package/tests/fixtures/hooks/README.md +92 -0
- package/tests/fixtures/hooks/agent_error.json +7 -0
- package/tests/fixtures/hooks/post_tool_use.json +13 -0
- package/tests/fixtures/hooks/pre_compact.json +7 -0
- package/tests/fixtures/hooks/pre_tool_use.json +9 -0
- package/tests/fixtures/hooks/session_end.json +6 -0
- package/tests/fixtures/hooks/session_start.json +6 -0
- package/tests/fixtures/hooks/stop.json +6 -0
- package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
|
@@ -137,10 +137,29 @@ function main(): number {
|
|
|
137
137
|
return 1;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
process.argv[1]
|
|
142
|
-
|
|
143
|
-
|
|
140
|
+
function _isCliEntry(): boolean {
|
|
141
|
+
if (process.argv[1] === undefined) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
145
|
+
if (import.meta.url === argvUrl) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
149
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
150
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
151
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
152
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
153
|
+
try {
|
|
154
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
155
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
156
|
+
return here === argv;
|
|
157
|
+
} catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
144
163
|
process.exitCode = main();
|
|
145
164
|
}
|
|
146
165
|
|
|
@@ -325,10 +325,29 @@ function main(argv?: readonly string[]): number {
|
|
|
325
325
|
return 0;
|
|
326
326
|
}
|
|
327
327
|
|
|
328
|
-
|
|
329
|
-
process.argv[1]
|
|
330
|
-
|
|
331
|
-
|
|
328
|
+
function _isCliEntry(): boolean {
|
|
329
|
+
if (process.argv[1] === undefined) {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
333
|
+
if (import.meta.url === argvUrl) {
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
337
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
338
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
339
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
340
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
341
|
+
try {
|
|
342
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
343
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
344
|
+
return here === argv;
|
|
345
|
+
} catch {
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
332
351
|
process.exitCode = main();
|
|
333
352
|
}
|
|
334
353
|
|
|
@@ -173,10 +173,29 @@ export function main(): number {
|
|
|
173
173
|
return 0;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
process.argv[1]
|
|
178
|
-
|
|
179
|
-
|
|
176
|
+
function _isCliEntry(): boolean {
|
|
177
|
+
if (process.argv[1] === undefined) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
181
|
+
if (import.meta.url === argvUrl) {
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
185
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
186
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
187
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
188
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
189
|
+
try {
|
|
190
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
191
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
192
|
+
return here === argv;
|
|
193
|
+
} catch {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
180
199
|
process.exit(main());
|
|
181
200
|
}
|
|
182
201
|
|
|
@@ -364,10 +364,29 @@ function main(argv?: readonly string[]): number {
|
|
|
364
364
|
return 0;
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
-
|
|
368
|
-
process.argv[1]
|
|
369
|
-
|
|
370
|
-
|
|
367
|
+
function _isCliEntry(): boolean {
|
|
368
|
+
if (process.argv[1] === undefined) {
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
372
|
+
if (import.meta.url === argvUrl) {
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
376
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
377
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
378
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
379
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
380
|
+
try {
|
|
381
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
382
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
383
|
+
return here === argv;
|
|
384
|
+
} catch {
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
371
390
|
try {
|
|
372
391
|
process.exit(main());
|
|
373
392
|
} catch (e) {
|
|
Binary file
|
|
@@ -691,10 +691,29 @@ function _usageError(arg: string): string {
|
|
|
691
691
|
);
|
|
692
692
|
}
|
|
693
693
|
|
|
694
|
-
|
|
695
|
-
process.argv[1]
|
|
696
|
-
|
|
697
|
-
|
|
694
|
+
function _isCliEntry(): boolean {
|
|
695
|
+
if (process.argv[1] === undefined) {
|
|
696
|
+
return false;
|
|
697
|
+
}
|
|
698
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
699
|
+
if (import.meta.url === argvUrl) {
|
|
700
|
+
return true;
|
|
701
|
+
}
|
|
702
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
703
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
704
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
705
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
706
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
707
|
+
try {
|
|
708
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
709
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
710
|
+
return here === argv;
|
|
711
|
+
} catch {
|
|
712
|
+
return false;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
698
717
|
process.exit(main());
|
|
699
718
|
}
|
|
700
719
|
|
|
@@ -489,9 +489,28 @@ export function main(argv?: readonly string[]): number {
|
|
|
489
489
|
}
|
|
490
490
|
|
|
491
491
|
const _HERE = fileURLToPath(import.meta.url);
|
|
492
|
-
|
|
493
|
-
process.argv[1]
|
|
494
|
-
|
|
495
|
-
|
|
492
|
+
function _isCliEntry(): boolean {
|
|
493
|
+
if (process.argv[1] === undefined) {
|
|
494
|
+
return false;
|
|
495
|
+
}
|
|
496
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
497
|
+
if (import.meta.url === argvUrl) {
|
|
498
|
+
return true;
|
|
499
|
+
}
|
|
500
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
501
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
502
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
503
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
504
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
505
|
+
try {
|
|
506
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
507
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
508
|
+
return here === argv;
|
|
509
|
+
} catch {
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
496
515
|
process.exit(main());
|
|
497
516
|
}
|
|
@@ -337,10 +337,29 @@ function _parse_args(argv: readonly string[]): boolean {
|
|
|
337
337
|
return quiet;
|
|
338
338
|
}
|
|
339
339
|
|
|
340
|
-
|
|
341
|
-
process.argv[1]
|
|
342
|
-
|
|
343
|
-
|
|
340
|
+
function _isCliEntry(): boolean {
|
|
341
|
+
if (process.argv[1] === undefined) {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
345
|
+
if (import.meta.url === argvUrl) {
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
349
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
350
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
351
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
352
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
353
|
+
try {
|
|
354
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
355
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
356
|
+
return here === argv;
|
|
357
|
+
} catch {
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
344
363
|
process.exit(main(process.argv.slice(2)));
|
|
345
364
|
}
|
|
346
365
|
|
|
@@ -364,10 +364,29 @@ function _pyListRepr(items: readonly string[]): string {
|
|
|
364
364
|
return `[${items.map((i) => _pyRepr(i)).join(', ')}]`;
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
-
|
|
368
|
-
process.argv[1]
|
|
369
|
-
|
|
370
|
-
|
|
367
|
+
function _isCliEntry(): boolean {
|
|
368
|
+
if (process.argv[1] === undefined) {
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
372
|
+
if (import.meta.url === argvUrl) {
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
376
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
377
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
378
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
379
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
380
|
+
try {
|
|
381
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
382
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
383
|
+
return here === argv;
|
|
384
|
+
} catch {
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
371
390
|
process.exit(main());
|
|
372
391
|
}
|
|
373
392
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Guard against `internal/glama/README.md` drifting from the committed
|
|
4
|
+
* `internal/glama/build` / `internal/glama/run` scripts it documents.
|
|
5
|
+
*
|
|
6
|
+
* Extracts the single canonical command line each script actually runs
|
|
7
|
+
* (the last non-comment, non-`set -euo pipefail` line — `exec ` stripped)
|
|
8
|
+
* and asserts that literal string appears verbatim somewhere in the README.
|
|
9
|
+
* Catches the exact failure mode fixed in road-to-mcp-full-power.md Phase 1:
|
|
10
|
+
* the README described a Python/uv build long after the scripts moved to
|
|
11
|
+
* Node/tsx.
|
|
12
|
+
*
|
|
13
|
+
* Exit codes: 0 no drift, 1 one or more scripts' canonical command is not
|
|
14
|
+
* documented verbatim in the README.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import * as fs from 'node:fs';
|
|
18
|
+
import * as path from 'node:path';
|
|
19
|
+
import { fileURLToPath } from 'node:url';
|
|
20
|
+
|
|
21
|
+
const _HERE = fileURLToPath(import.meta.url);
|
|
22
|
+
const REPO = path.resolve(path.dirname(_HERE), '..', '..');
|
|
23
|
+
const GLAMA_DIR = path.join(REPO, 'internal', 'glama');
|
|
24
|
+
|
|
25
|
+
interface ScriptSpec {
|
|
26
|
+
file: string;
|
|
27
|
+
/** Strip this exact prefix from the extracted command line before comparing. */
|
|
28
|
+
stripPrefix?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const SCRIPTS: readonly ScriptSpec[] = [
|
|
32
|
+
{ file: 'build' },
|
|
33
|
+
{ file: 'run', stripPrefix: 'exec ' },
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
function _canonicalCommand(scriptPath: string, stripPrefix?: string): string {
|
|
37
|
+
const lines = fs.readFileSync(scriptPath, 'utf8').split('\n');
|
|
38
|
+
const candidates = lines
|
|
39
|
+
.map((l) => l.trim())
|
|
40
|
+
.filter((l) => l.length > 0 && !l.startsWith('#') && l !== 'set -euo pipefail');
|
|
41
|
+
const last = candidates[candidates.length - 1] ?? '';
|
|
42
|
+
return stripPrefix && last.startsWith(stripPrefix) ? last.slice(stripPrefix.length) : last;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function main(): number {
|
|
46
|
+
const readmePath = path.join(GLAMA_DIR, 'README.md');
|
|
47
|
+
const readme = fs.readFileSync(readmePath, 'utf8');
|
|
48
|
+
|
|
49
|
+
let failed = false;
|
|
50
|
+
for (const spec of SCRIPTS) {
|
|
51
|
+
const scriptPath = path.join(GLAMA_DIR, spec.file);
|
|
52
|
+
const cmd = _canonicalCommand(scriptPath, spec.stripPrefix);
|
|
53
|
+
if (!cmd) {
|
|
54
|
+
console.error(`❌ internal/glama/${spec.file}: could not extract a canonical command line`);
|
|
55
|
+
failed = true;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (!readme.includes(cmd)) {
|
|
59
|
+
console.error(
|
|
60
|
+
`❌ drift: internal/glama/${spec.file} runs \`${cmd}\` — not found verbatim in internal/glama/README.md`,
|
|
61
|
+
);
|
|
62
|
+
failed = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (failed) {
|
|
67
|
+
console.error('\nUpdate internal/glama/README.md to match the committed build/run scripts.');
|
|
68
|
+
return 1;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
process.stdout.write('✅ internal/glama/README.md matches build/run scripts — no drift.\n');
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
process.exit(main());
|
|
@@ -412,9 +412,30 @@ export function main(argv: string[]): number {
|
|
|
412
412
|
return lint(policy, quiet);
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
+
function _isCliEntry(): boolean {
|
|
416
|
+
if (process.argv[1] === undefined) {
|
|
417
|
+
return false;
|
|
418
|
+
}
|
|
419
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
420
|
+
if (import.meta.url === argvUrl) {
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
424
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
425
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
426
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
427
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
428
|
+
try {
|
|
429
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
430
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
431
|
+
return here === argv;
|
|
432
|
+
} catch {
|
|
433
|
+
return false;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
415
437
|
const isCliEntry =
|
|
416
|
-
|
|
417
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
438
|
+
_isCliEntry();
|
|
418
439
|
if (isCliEntry) {
|
|
419
440
|
process.exit(main(process.argv.slice(2)));
|
|
420
441
|
}
|
|
@@ -343,10 +343,29 @@ export function main(argv?: readonly string[]): number {
|
|
|
343
343
|
return 1;
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
-
|
|
347
|
-
process.argv[1]
|
|
348
|
-
|
|
349
|
-
|
|
346
|
+
function _isCliEntry(): boolean {
|
|
347
|
+
if (process.argv[1] === undefined) {
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
350
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
351
|
+
if (import.meta.url === argvUrl) {
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
355
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
356
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
357
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
358
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
359
|
+
try {
|
|
360
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
361
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
362
|
+
return here === argv;
|
|
363
|
+
} catch {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
350
369
|
process.exit(main());
|
|
351
370
|
}
|
|
352
371
|
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
import * as fs from 'node:fs';
|
|
32
32
|
import * as path from 'node:path';
|
|
33
|
-
import { pathToFileURL } from 'node:url';
|
|
33
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
34
34
|
|
|
35
35
|
import * as sl from './_lib/security_lint.js';
|
|
36
36
|
|
|
@@ -342,9 +342,28 @@ export function main(argv: readonly string[] | null = null): number {
|
|
|
342
342
|
return sl.report(findings, { check_label: 'hidden-unicode' });
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
|
|
346
|
-
process.argv[1]
|
|
347
|
-
|
|
348
|
-
|
|
345
|
+
function _isCliEntry(): boolean {
|
|
346
|
+
if (process.argv[1] === undefined) {
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
350
|
+
if (import.meta.url === argvUrl) {
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
354
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
355
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
356
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
357
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
358
|
+
try {
|
|
359
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
360
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
361
|
+
return here === argv;
|
|
362
|
+
} catch {
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (_isCliEntry()) {
|
|
349
368
|
process.exitCode = main();
|
|
350
369
|
}
|
|
@@ -300,10 +300,29 @@ export function main(argv?: readonly string[]): number {
|
|
|
300
300
|
return lint(args.manifest, args.settings, { strict: args.strict });
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
-
|
|
304
|
-
process.argv[1]
|
|
305
|
-
|
|
306
|
-
|
|
303
|
+
function _isCliEntry(): boolean {
|
|
304
|
+
if (process.argv[1] === undefined) {
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
308
|
+
if (import.meta.url === argvUrl) {
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
312
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
313
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
314
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
315
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
316
|
+
try {
|
|
317
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
318
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
319
|
+
return here === argv;
|
|
320
|
+
} catch {
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
307
326
|
process.exit(main());
|
|
308
327
|
}
|
|
309
328
|
|
|
@@ -346,9 +346,30 @@ export function main(argv: string[]): number {
|
|
|
346
346
|
return lint(manifest, strict);
|
|
347
347
|
}
|
|
348
348
|
|
|
349
|
+
function _isCliEntry(): boolean {
|
|
350
|
+
if (process.argv[1] === undefined) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
354
|
+
if (import.meta.url === argvUrl) {
|
|
355
|
+
return true;
|
|
356
|
+
}
|
|
357
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
358
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
359
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
360
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
361
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
362
|
+
try {
|
|
363
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
364
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
365
|
+
return here === argv;
|
|
366
|
+
} catch {
|
|
367
|
+
return false;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
349
371
|
const isCliEntry =
|
|
350
|
-
|
|
351
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
372
|
+
_isCliEntry();
|
|
352
373
|
if (isCliEntry) {
|
|
353
374
|
process.exit(main(process.argv.slice(2)));
|
|
354
375
|
}
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
// Usage: ./scripts-run src/scripts/lint_instruction_smuggling [--json]
|
|
25
25
|
|
|
26
26
|
import * as path from 'node:path';
|
|
27
|
-
import
|
|
27
|
+
import * as fs from 'node:fs';
|
|
28
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
28
29
|
|
|
29
30
|
import * as sl from './_lib/security_lint.js';
|
|
30
31
|
|
|
@@ -165,9 +166,28 @@ export function main(argv: readonly string[] | null = null): number {
|
|
|
165
166
|
return sl.report(findings, { check_label: 'instruction-smuggling' });
|
|
166
167
|
}
|
|
167
168
|
|
|
168
|
-
|
|
169
|
-
process.argv[1]
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
function _isCliEntry(): boolean {
|
|
170
|
+
if (process.argv[1] === undefined) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
174
|
+
if (import.meta.url === argvUrl) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
178
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
179
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
180
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
181
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
182
|
+
try {
|
|
183
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
184
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
185
|
+
return here === argv;
|
|
186
|
+
} catch {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (_isCliEntry()) {
|
|
172
192
|
process.exitCode = main();
|
|
173
193
|
}
|
|
@@ -259,6 +259,28 @@ export function main(): number {
|
|
|
259
259
|
return 1;
|
|
260
260
|
}
|
|
261
261
|
|
|
262
|
-
|
|
262
|
+
function _isCliEntry(): boolean {
|
|
263
|
+
if (process.argv[1] === undefined) {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
267
|
+
if (import.meta.url === argvUrl) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
271
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
272
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
273
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
274
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
275
|
+
try {
|
|
276
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
277
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
278
|
+
return here === argv;
|
|
279
|
+
} catch {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
if (_isCliEntry()) {
|
|
263
285
|
process.exit(main());
|
|
264
286
|
}
|
|
@@ -346,10 +346,29 @@ function _pyReprValue(v: unknown): string {
|
|
|
346
346
|
return String(v);
|
|
347
347
|
}
|
|
348
348
|
|
|
349
|
-
|
|
350
|
-
process.argv[1]
|
|
351
|
-
|
|
352
|
-
|
|
349
|
+
function _isCliEntry(): boolean {
|
|
350
|
+
if (process.argv[1] === undefined) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
354
|
+
if (import.meta.url === argvUrl) {
|
|
355
|
+
return true;
|
|
356
|
+
}
|
|
357
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
358
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
359
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
360
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
361
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
362
|
+
try {
|
|
363
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
364
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
365
|
+
return here === argv;
|
|
366
|
+
} catch {
|
|
367
|
+
return false;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
353
372
|
process.exit(main());
|
|
354
373
|
}
|
|
355
374
|
|