@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
|
@@ -179,9 +179,30 @@ export function main(argv: string[]): number {
|
|
|
179
179
|
return 0;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
+
function _isCliEntry(): boolean {
|
|
183
|
+
if (process.argv[1] === undefined) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
187
|
+
if (import.meta.url === argvUrl) {
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
191
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
192
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
193
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
194
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
195
|
+
try {
|
|
196
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
197
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
198
|
+
return here === argv;
|
|
199
|
+
} catch {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
182
204
|
const _IS_MAIN =
|
|
183
|
-
|
|
184
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
205
|
+
_isCliEntry();
|
|
185
206
|
if (_IS_MAIN) {
|
|
186
207
|
process.exit(main(process.argv.slice(2)));
|
|
187
208
|
}
|
|
@@ -388,7 +388,29 @@ export function main(argv: string[] | null = null): number {
|
|
|
388
388
|
return 0;
|
|
389
389
|
}
|
|
390
390
|
|
|
391
|
-
|
|
391
|
+
function _isCliEntry(): boolean {
|
|
392
|
+
if (process.argv[1] === undefined) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
396
|
+
if (import.meta.url === argvUrl) {
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
400
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
401
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
402
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
403
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
404
|
+
try {
|
|
405
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
406
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
407
|
+
return here === argv;
|
|
408
|
+
} catch {
|
|
409
|
+
return false;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
const _isMain = _isCliEntry();
|
|
392
414
|
if (_isMain) {
|
|
393
415
|
process.exitCode = main();
|
|
394
416
|
}
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
import fs from "node:fs";
|
|
38
38
|
import path from "node:path";
|
|
39
|
-
import { pathToFileURL } from "node:url";
|
|
39
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
40
40
|
|
|
41
41
|
const PLUGIN_ID = "agent-config@event4u-agent-config";
|
|
42
42
|
const ACTION_NEEDED_FILE = ".augment/.first-run-action-needed.md";
|
|
@@ -238,9 +238,30 @@ export function main(argv?: string[]): number {
|
|
|
238
238
|
return run(consumer_root);
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
+
function _isCliEntry(): boolean {
|
|
242
|
+
if (process.argv[1] === undefined) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
246
|
+
if (import.meta.url === argvUrl) {
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
250
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
251
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
252
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
253
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
254
|
+
try {
|
|
255
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
256
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
257
|
+
return here === argv;
|
|
258
|
+
} catch {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
241
263
|
const isCliEntry =
|
|
242
|
-
|
|
243
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
264
|
+
_isCliEntry();
|
|
244
265
|
if (isCliEntry) {
|
|
245
266
|
process.exit(main(process.argv.slice(2)));
|
|
246
267
|
}
|
|
@@ -289,9 +289,28 @@ function _mostCommon(counter: Map<string, number>): Array<[string, number]> {
|
|
|
289
289
|
.map(([e]) => e);
|
|
290
290
|
}
|
|
291
291
|
|
|
292
|
-
|
|
293
|
-
process.argv[1]
|
|
294
|
-
|
|
295
|
-
|
|
292
|
+
function _isCliEntry(): boolean {
|
|
293
|
+
if (process.argv[1] === undefined) {
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
296
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
297
|
+
if (import.meta.url === argvUrl) {
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
301
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
302
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
303
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
304
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
305
|
+
try {
|
|
306
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
307
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
308
|
+
return here === argv;
|
|
309
|
+
} catch {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
296
315
|
process.exitCode = main();
|
|
297
316
|
}
|
|
@@ -319,7 +319,7 @@ export function build(): string {
|
|
|
319
319
|
const lines: string[] = [];
|
|
320
320
|
lines.push('# CAPABILITIES.yaml — what agent-config already covers');
|
|
321
321
|
lines.push('#');
|
|
322
|
-
lines.push('# GENERATED by src/scripts/generate_capabilities_index.
|
|
322
|
+
lines.push('# GENERATED by src/scripts/generate_capabilities_index.ts — do NOT hand-edit.');
|
|
323
323
|
lines.push('# Drift-checked in CI (`--check`). Regenerate after adding/removing a');
|
|
324
324
|
lines.push('# skill, command, or capability pack.');
|
|
325
325
|
lines.push('#');
|
|
@@ -488,9 +488,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
488
488
|
return 0;
|
|
489
489
|
}
|
|
490
490
|
|
|
491
|
-
|
|
492
|
-
process.argv[1]
|
|
493
|
-
|
|
494
|
-
|
|
491
|
+
function _isCliEntry(): boolean {
|
|
492
|
+
if (process.argv[1] === undefined) {
|
|
493
|
+
return false;
|
|
494
|
+
}
|
|
495
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
496
|
+
if (import.meta.url === argvUrl) {
|
|
497
|
+
return true;
|
|
498
|
+
}
|
|
499
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
500
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
501
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
502
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
503
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
504
|
+
try {
|
|
505
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
506
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
507
|
+
return here === argv;
|
|
508
|
+
} catch {
|
|
509
|
+
return false;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
495
514
|
process.exitCode = main();
|
|
496
515
|
}
|
|
@@ -430,9 +430,28 @@ function _pyListRepr(items: string[]): string {
|
|
|
430
430
|
return '[' + items.map((s) => `'${s.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`).join(', ') + ']';
|
|
431
431
|
}
|
|
432
432
|
|
|
433
|
-
|
|
434
|
-
process.argv[1]
|
|
435
|
-
|
|
436
|
-
|
|
433
|
+
function _isCliEntry(): boolean {
|
|
434
|
+
if (process.argv[1] === undefined) {
|
|
435
|
+
return false;
|
|
436
|
+
}
|
|
437
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
438
|
+
if (import.meta.url === argvUrl) {
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
442
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
443
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
444
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
445
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
446
|
+
try {
|
|
447
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
448
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
449
|
+
return here === argv;
|
|
450
|
+
} catch {
|
|
451
|
+
return false;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
437
456
|
process.exitCode = main();
|
|
438
457
|
}
|
|
@@ -172,7 +172,29 @@ export function main(): number {
|
|
|
172
172
|
return 0;
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
function _isCliEntry(): boolean {
|
|
176
|
+
if (process.argv[1] === undefined) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
180
|
+
if (import.meta.url === argvUrl) {
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
184
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
185
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
186
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
187
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
188
|
+
try {
|
|
189
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
190
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
191
|
+
return here === argv;
|
|
192
|
+
} catch {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const _isMain = _isCliEntry();
|
|
176
198
|
if (_isMain) {
|
|
177
199
|
process.exitCode = main();
|
|
178
200
|
}
|
|
@@ -308,9 +308,28 @@ function _cmpStr(a: string, b: string): number {
|
|
|
308
308
|
return 0;
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
|
|
312
|
-
process.argv[1]
|
|
313
|
-
|
|
314
|
-
|
|
311
|
+
function _isCliEntry(): boolean {
|
|
312
|
+
if (process.argv[1] === undefined) {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
316
|
+
if (import.meta.url === argvUrl) {
|
|
317
|
+
return true;
|
|
318
|
+
}
|
|
319
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
320
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
321
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
322
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
323
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
324
|
+
try {
|
|
325
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
326
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
327
|
+
return here === argv;
|
|
328
|
+
} catch {
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
315
334
|
process.exit(main());
|
|
316
335
|
}
|
|
@@ -294,9 +294,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
294
294
|
return 0;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
|
|
298
|
-
process.argv[1]
|
|
299
|
-
|
|
300
|
-
|
|
297
|
+
function _isCliEntry(): boolean {
|
|
298
|
+
if (process.argv[1] === undefined) {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
302
|
+
if (import.meta.url === argvUrl) {
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
306
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
307
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
308
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
309
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
310
|
+
try {
|
|
311
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
312
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
313
|
+
return here === argv;
|
|
314
|
+
} catch {
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
301
320
|
process.exitCode = main();
|
|
302
321
|
}
|
|
@@ -492,9 +492,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
492
492
|
return 0;
|
|
493
493
|
}
|
|
494
494
|
|
|
495
|
-
|
|
496
|
-
process.argv[1]
|
|
497
|
-
|
|
498
|
-
|
|
495
|
+
function _isCliEntry(): boolean {
|
|
496
|
+
if (process.argv[1] === undefined) {
|
|
497
|
+
return false;
|
|
498
|
+
}
|
|
499
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
500
|
+
if (import.meta.url === argvUrl) {
|
|
501
|
+
return true;
|
|
502
|
+
}
|
|
503
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
504
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
505
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
506
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
507
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
508
|
+
try {
|
|
509
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
510
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
511
|
+
return here === argv;
|
|
512
|
+
} catch {
|
|
513
|
+
return false;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
499
518
|
process.exit(main());
|
|
500
519
|
}
|
|
@@ -638,7 +638,29 @@ export function main(argv: string[] | null = null): number {
|
|
|
638
638
|
return 0;
|
|
639
639
|
}
|
|
640
640
|
|
|
641
|
-
|
|
641
|
+
function _isCliEntry(): boolean {
|
|
642
|
+
if (process.argv[1] === undefined) {
|
|
643
|
+
return false;
|
|
644
|
+
}
|
|
645
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
646
|
+
if (import.meta.url === argvUrl) {
|
|
647
|
+
return true;
|
|
648
|
+
}
|
|
649
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
650
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
651
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
652
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
653
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
654
|
+
try {
|
|
655
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
656
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
657
|
+
return here === argv;
|
|
658
|
+
} catch {
|
|
659
|
+
return false;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
const _isMain = _isCliEntry();
|
|
642
664
|
if (_isMain) {
|
|
643
665
|
// Set exitCode rather than process.exit() so any large stdout/stderr write
|
|
644
666
|
// fully drains to the pipe before the process exits.
|
|
@@ -42,7 +42,7 @@ const SRC_PACKS = path.join(ROOT, 'src', 'packs');
|
|
|
42
42
|
const PACKS_VOCAB = path.join(ROOT, 'src', 'config', 'discovery', 'packs.yml');
|
|
43
43
|
const PACKAGE_JSON = path.join(ROOT, 'package.json');
|
|
44
44
|
const GENERATED_HEADER =
|
|
45
|
-
'# Generated by scripts/generate_pack_manifests.
|
|
45
|
+
'# Generated by scripts/generate_pack_manifests.ts — DO NOT EDIT BY HAND\n';
|
|
46
46
|
|
|
47
47
|
type Json = unknown;
|
|
48
48
|
type Dict = Record<string, unknown>;
|
|
@@ -1017,9 +1017,28 @@ function _cmpStr(a: string, b: string): number {
|
|
|
1017
1017
|
return 0;
|
|
1018
1018
|
}
|
|
1019
1019
|
|
|
1020
|
-
|
|
1021
|
-
process.argv[1]
|
|
1022
|
-
|
|
1023
|
-
|
|
1020
|
+
function _isCliEntry(): boolean {
|
|
1021
|
+
if (process.argv[1] === undefined) {
|
|
1022
|
+
return false;
|
|
1023
|
+
}
|
|
1024
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
1025
|
+
if (import.meta.url === argvUrl) {
|
|
1026
|
+
return true;
|
|
1027
|
+
}
|
|
1028
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
1029
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
1030
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
1031
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
1032
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
1033
|
+
try {
|
|
1034
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
1035
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
1036
|
+
return here === argv;
|
|
1037
|
+
} catch {
|
|
1038
|
+
return false;
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
1024
1043
|
process.exit(main());
|
|
1025
1044
|
}
|
|
@@ -257,9 +257,28 @@ export function main(argv: string[] | null = null): number {
|
|
|
257
257
|
return 0;
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
|
|
261
|
-
process.argv[1]
|
|
262
|
-
|
|
263
|
-
|
|
260
|
+
function _isCliEntry(): boolean {
|
|
261
|
+
if (process.argv[1] === undefined) {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
265
|
+
if (import.meta.url === argvUrl) {
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
269
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
270
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
271
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
272
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
273
|
+
try {
|
|
274
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
275
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
276
|
+
return here === argv;
|
|
277
|
+
} catch {
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
264
283
|
process.exitCode = main();
|
|
265
284
|
}
|
|
@@ -390,10 +390,29 @@ export function main(argv?: string[]): number {
|
|
|
390
390
|
return 0; // EXIT_ALLOW
|
|
391
391
|
}
|
|
392
392
|
|
|
393
|
-
|
|
394
|
-
process.argv[1]
|
|
395
|
-
|
|
396
|
-
|
|
393
|
+
function _isCliEntry(): boolean {
|
|
394
|
+
if (process.argv[1] === undefined) {
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
398
|
+
if (import.meta.url === argvUrl) {
|
|
399
|
+
return true;
|
|
400
|
+
}
|
|
401
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
402
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
403
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
404
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
405
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
406
|
+
try {
|
|
407
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
408
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
409
|
+
return here === argv;
|
|
410
|
+
} catch {
|
|
411
|
+
return false;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
if (_isCliEntry() || process.argv[1] === _HERE) {
|
|
397
416
|
process.exitCode = main();
|
|
398
417
|
}
|
|
399
418
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import fs from "node:fs";
|
|
23
23
|
import path from "node:path";
|
|
24
|
-
import { pathToFileURL } from "node:url";
|
|
24
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
25
25
|
import { type DesignContext } from "../design_slop_rules.js";
|
|
26
26
|
import { loadDesignContext, scanFile } from "../lint_design_slop.js";
|
|
27
27
|
|
|
@@ -175,7 +175,28 @@ export function main(): number {
|
|
|
175
175
|
return EXIT_WARN;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
+
function _isCliEntry(): boolean {
|
|
179
|
+
if (process.argv[1] === undefined) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
183
|
+
if (import.meta.url === argvUrl) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
187
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
188
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
189
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
190
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
191
|
+
try {
|
|
192
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
193
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
194
|
+
return here === argv;
|
|
195
|
+
} catch {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
178
200
|
const isCliEntry =
|
|
179
|
-
|
|
180
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
201
|
+
_isCliEntry();
|
|
181
202
|
if (isCliEntry) process.exit(main());
|
|
@@ -423,25 +423,37 @@ interface RunResult {
|
|
|
423
423
|
/**
|
|
424
424
|
* Resolve how to run a `.ts` concern: prefer the `tsx` binary from a
|
|
425
425
|
* `node_modules/.bin` directory found by walking up from the script's
|
|
426
|
-
* directory
|
|
427
|
-
*
|
|
426
|
+
* directory, then from THIS module's own package tree (the package ships
|
|
427
|
+
* tsx as a runtime dependency); only then fall back to `npx tsx`. Mirrors
|
|
428
|
+
* `run.ts::resolveTsxInvocation` so concern scripts run as TypeScript with
|
|
429
|
+
* no python3 dependency. `npx tsx` is last-resort only: it runs against the
|
|
430
|
+
* consumer's npm config and fails hard on e.g. devEngines pins (the 8.1.0
|
|
431
|
+
* EBADDEVENGINES regression).
|
|
428
432
|
*/
|
|
429
433
|
function _resolve_tsx_invocation(
|
|
430
434
|
scriptPath: string,
|
|
431
435
|
scriptArgs: string[],
|
|
432
436
|
): { command: string; args: string[] } {
|
|
433
437
|
const binName = process.platform === "win32" ? "tsx.cmd" : "tsx";
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
438
|
+
const walkUp = (start: string): string | null => {
|
|
439
|
+
let dir = start;
|
|
440
|
+
for (;;) {
|
|
441
|
+
const candidate = path.join(dir, "node_modules", ".bin", binName);
|
|
442
|
+
if (_isFile(candidate)) {
|
|
443
|
+
return candidate;
|
|
444
|
+
}
|
|
445
|
+
const parent = path.dirname(dir);
|
|
446
|
+
if (parent === dir) {
|
|
447
|
+
return null;
|
|
448
|
+
}
|
|
449
|
+
dir = parent;
|
|
443
450
|
}
|
|
444
|
-
|
|
451
|
+
};
|
|
452
|
+
const tsx =
|
|
453
|
+
walkUp(path.dirname(scriptPath)) ??
|
|
454
|
+
walkUp(path.dirname(fileURLToPath(import.meta.url)));
|
|
455
|
+
if (tsx !== null) {
|
|
456
|
+
return { command: tsx, args: [scriptPath, ...scriptArgs] };
|
|
445
457
|
}
|
|
446
458
|
return { command: "npx", args: ["tsx", scriptPath, ...scriptArgs] };
|
|
447
459
|
}
|
|
@@ -861,9 +873,30 @@ function _readStdin(): string {
|
|
|
861
873
|
}
|
|
862
874
|
}
|
|
863
875
|
|
|
876
|
+
function _isCliEntry(): boolean {
|
|
877
|
+
if (process.argv[1] === undefined) {
|
|
878
|
+
return false;
|
|
879
|
+
}
|
|
880
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
881
|
+
if (import.meta.url === argvUrl) {
|
|
882
|
+
return true;
|
|
883
|
+
}
|
|
884
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
885
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
886
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
887
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
888
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
889
|
+
try {
|
|
890
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
891
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
892
|
+
return here === argv;
|
|
893
|
+
} catch {
|
|
894
|
+
return false;
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
|
|
864
898
|
const isCliEntry =
|
|
865
|
-
|
|
866
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
899
|
+
_isCliEntry();
|
|
867
900
|
if (isCliEntry) {
|
|
868
901
|
process.exit(main(process.argv.slice(2)));
|
|
869
902
|
}
|
|
@@ -356,9 +356,30 @@ function _py_json_dumps(value: unknown, indent: number): string {
|
|
|
356
356
|
return render(value, 0);
|
|
357
357
|
}
|
|
358
358
|
|
|
359
|
+
function _isCliEntry(): boolean {
|
|
360
|
+
if (process.argv[1] === undefined) {
|
|
361
|
+
return false;
|
|
362
|
+
}
|
|
363
|
+
const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
|
|
364
|
+
if (import.meta.url === argvUrl) {
|
|
365
|
+
return true;
|
|
366
|
+
}
|
|
367
|
+
// A symlinked invocation (e.g. via an installed `.augment/` projection,
|
|
368
|
+
// or macOS /var → /private/var temp dirs) makes the raw URLs differ:
|
|
369
|
+
// import.meta.url is the resolved real path while argv[1] keeps the
|
|
370
|
+
// symlink path. Compare realpaths so the entry guard still fires
|
|
371
|
+
// (without this the CLI silently no-ops when run through a symlink).
|
|
372
|
+
try {
|
|
373
|
+
const here = fs.realpathSync(fileURLToPath(import.meta.url));
|
|
374
|
+
const argv = fs.realpathSync(path.resolve(process.argv[1]));
|
|
375
|
+
return here === argv;
|
|
376
|
+
} catch {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
359
381
|
const isCliEntry =
|
|
360
|
-
|
|
361
|
-
import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
|
|
382
|
+
_isCliEntry();
|
|
362
383
|
if (isCliEntry) {
|
|
363
384
|
process.exit(main(process.argv.slice(2)));
|
|
364
385
|
}
|