@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.
Files changed (615) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +83 -292
  3. package/MIGRATION.md +18 -0
  4. package/README.md +86 -3
  5. package/dist/agent-src/commands/agents/init.md +3 -3
  6. package/dist/agent-src/commands/chat-history/import.md +5 -5
  7. package/dist/agent-src/commands/chat-history.md +1 -1
  8. package/dist/agent-src/commands/condense.md +1 -1
  9. package/dist/agent-src/commands/context/create.md +1 -1
  10. package/dist/agent-src/commands/council/analysis.md +2 -2
  11. package/dist/agent-src/commands/council/default.md +3 -3
  12. package/dist/agent-src/commands/council/design.md +2 -2
  13. package/dist/agent-src/commands/council/optimize.md +1 -1
  14. package/dist/agent-src/commands/council/pr.md +2 -2
  15. package/dist/agent-src/commands/council.md +1 -1
  16. package/dist/agent-src/commands/feature/plan.md +1 -1
  17. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  18. package/dist/agent-src/commands/ghostwriter/write.md +1 -1
  19. package/dist/agent-src/commands/ghostwriter.md +1 -1
  20. package/dist/agent-src/commands/implement-ticket.md +2 -2
  21. package/dist/agent-src/commands/judge/on-diff.md +1 -1
  22. package/dist/agent-src/commands/judge/steps.md +3 -1
  23. package/dist/agent-src/commands/memory/add.md +2 -2
  24. package/dist/agent-src/commands/memory/learn-low-impact.md +1 -1
  25. package/dist/agent-src/commands/memory/load.md +1 -1
  26. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  27. package/dist/agent-src/commands/memory/promote.md +1 -1
  28. package/dist/agent-src/commands/memory/propose.md +1 -1
  29. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  30. package/dist/agent-src/commands/module/explore.md +3 -3
  31. package/dist/agent-src/commands/optimize/agents-dir.md +1 -1
  32. package/dist/agent-src/commands/optimize/skills.md +1 -1
  33. package/dist/agent-src/commands/optimize-project.md +1 -1
  34. package/dist/agent-src/commands/orchestrate.md +2 -2
  35. package/dist/agent-src/commands/project-analyze.md +1 -1
  36. package/dist/agent-src/commands/project-health.md +1 -1
  37. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  38. package/dist/agent-src/commands/roadmap/create.md +2 -2
  39. package/dist/agent-src/commands/roadmap/process-full.md +3 -1
  40. package/dist/agent-src/commands/roadmap/process-phase.md +4 -2
  41. package/dist/agent-src/commands/roadmap/process-step.md +3 -1
  42. package/dist/agent-src/commands/security-audit-config.md +1 -1
  43. package/dist/agent-src/commands/sync-agent-settings.md +7 -7
  44. package/dist/agent-src/commands/sync-gitignore/fix.md +3 -3
  45. package/dist/agent-src/commands/sync-gitignore.md +4 -4
  46. package/dist/agent-src/commands/work.md +3 -3
  47. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  48. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
  49. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +1 -1
  50. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -7
  51. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  52. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +9 -4
  53. package/dist/agent-src/contexts/execution/toolchain-resolver.md +10 -9
  54. package/dist/agent-src/contexts/execution/verification-mechanics.md +13 -1
  55. package/dist/agent-src/packs/README.md +1 -1
  56. package/dist/agent-src/presets/README.md +1 -1
  57. package/dist/agent-src/profiles/README.md +1 -1
  58. package/dist/agent-src/rules/architecture.md +2 -2
  59. package/dist/agent-src/rules/context-hygiene.md +2 -2
  60. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
  61. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  62. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
  63. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
  64. package/dist/agent-src/rules/media-governance-routing.md +1 -1
  65. package/dist/agent-src/rules/no-roadmap-references.md +3 -3
  66. package/dist/agent-src/rules/preservation-guard.md +2 -2
  67. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
  68. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
  69. package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
  70. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  71. package/dist/agent-src/rules/telegraph-speak.md +1 -1
  72. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  73. package/dist/agent-src/rules/ui-audit-gate.md +1 -1
  74. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
  75. package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
  76. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
  77. package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
  78. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  79. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  80. package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
  81. package/dist/agent-src/skills/api-design/SKILL.md +1 -1
  82. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
  83. package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
  84. package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
  85. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
  86. package/dist/agent-src/skills/code-review/SKILL.md +3 -4
  87. package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
  88. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  89. package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
  90. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  91. package/dist/agent-src/skills/context-document/SKILL.md +1 -1
  92. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
  93. package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
  94. package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
  95. package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
  96. package/dist/agent-src/skills/database/SKILL.md +2 -1
  97. package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
  98. package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
  99. package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
  100. package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
  101. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
  102. package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
  103. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
  104. package/dist/agent-src/skills/flux/SKILL.md +10 -9
  105. package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
  106. package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
  107. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
  108. package/dist/agent-src/skills/livewire/SKILL.md +10 -9
  109. package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
  110. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
  111. package/dist/agent-src/skills/module-management/SKILL.md +2 -2
  112. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
  113. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
  114. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
  115. package/dist/agent-src/skills/premortem/SKILL.md +1 -1
  116. package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
  117. package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
  118. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
  119. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
  120. package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
  121. package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
  122. package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
  123. package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
  124. package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
  125. package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
  126. package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
  127. package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
  128. package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
  129. package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
  130. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
  131. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  132. package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
  133. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
  134. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
  135. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  136. package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
  137. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
  138. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
  139. package/dist/agent-src/templates/agent-settings.md +34 -25
  140. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  141. package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
  142. package/dist/agent-src/templates/agents/proposal.example.md +4 -4
  143. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  144. package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
  145. package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
  146. package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
  147. package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
  148. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
  149. package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
  150. package/dist/agent-src/templates/roadmaps.md +9 -4
  151. package/dist/agent-src/templates/rule.md +3 -3
  152. package/dist/agent-src/templates/scripts/README.md +6 -6
  153. package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
  154. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
  155. package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
  156. package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
  157. package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
  158. package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
  159. package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
  160. package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
  161. package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  162. package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
  163. package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
  164. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  165. package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
  166. package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
  167. package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
  168. package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
  169. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
  170. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
  171. package/dist/agent-src/templates/skill.md +2 -2
  172. package/dist/cli/python/knowledge_ingest.js +24 -3
  173. package/dist/cli/python/knowledge_ingest.js.map +1 -1
  174. package/dist/cli/python/workspace_analytics.js +23 -3
  175. package/dist/cli/python/workspace_analytics.js.map +1 -1
  176. package/dist/cli/python/workspace_crypto.js +23 -3
  177. package/dist/cli/python/workspace_crypto.js.map +1 -1
  178. package/dist/cli/python/workspace_documents.js +23 -3
  179. package/dist/cli/python/workspace_documents.js.map +1 -1
  180. package/dist/cli/python/workspace_drive.js +24 -3
  181. package/dist/cli/python/workspace_drive.js.map +1 -1
  182. package/dist/cli/python/workspace_drive_health.js +23 -3
  183. package/dist/cli/python/workspace_drive_health.js.map +1 -1
  184. package/dist/cli/python/workspace_explain.js +23 -3
  185. package/dist/cli/python/workspace_explain.js.map +1 -1
  186. package/dist/cli/python/workspace_hosts.js +23 -3
  187. package/dist/cli/python/workspace_hosts.js.map +1 -1
  188. package/dist/cli/python/workspace_inbox.js +23 -3
  189. package/dist/cli/python/workspace_inbox.js.map +1 -1
  190. package/dist/cli/python/workspace_render.js +23 -3
  191. package/dist/cli/python/workspace_render.js.map +1 -1
  192. package/dist/cli/python/workspace_roles.js +23 -3
  193. package/dist/cli/python/workspace_roles.js.map +1 -1
  194. package/dist/cli/python/workspace_sessions.js +23 -3
  195. package/dist/cli/python/workspace_sessions.js.map +1 -1
  196. package/dist/cli/python/workspace_skills.js +23 -3
  197. package/dist/cli/python/workspace_skills.js.map +1 -1
  198. package/dist/cli/registry.js +2 -0
  199. package/dist/cli/registry.js.map +1 -1
  200. package/dist/discovery/deprecation-report.md +1 -1
  201. package/dist/discovery/discovery-manifest.json +118 -118
  202. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  203. package/dist/discovery/discovery-manifest.summary.md +2 -2
  204. package/dist/discovery/orphan-report.md +1 -1
  205. package/dist/discovery/packs.json +3 -3
  206. package/dist/discovery/trust-report.md +1 -1
  207. package/dist/discovery/workspaces.json +3 -3
  208. package/dist/install/install.mjs +647 -408
  209. package/dist/mcp/registry-manifest.json +3 -3
  210. package/dist/server/routes/settings.js +4 -4
  211. package/dist/server/routes/settings.js.map +1 -1
  212. package/dist/server/schemas/settings.js +1 -1
  213. package/dist/server/schemas/settings.js.map +1 -1
  214. package/docs/CLAIMS.md +2 -2
  215. package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
  216. package/docs/benchmark.md +40 -0
  217. package/docs/contracts/CHANGELOG-conventions.md +8 -5
  218. package/docs/contracts/branch-protection-policy.md +14 -5
  219. package/docs/contracts/mcp-phase-1-scope.md +75 -0
  220. package/docs/contracts/mcp-tool-inventory.md +22 -15
  221. package/docs/contracts/release-pr-gating.md +22 -11
  222. package/docs/contracts/skill-bundled-assets.md +2 -2
  223. package/docs/customization.md +1 -1
  224. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
  225. package/docs/decisions/ADR-111-canonical-glama-listing.md +97 -0
  226. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +92 -0
  227. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +201 -0
  228. package/docs/decisions/INDEX.md +3 -0
  229. package/docs/distribution/registry-submissions.md +1 -1
  230. package/docs/getting-started.md +8 -6
  231. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
  232. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
  233. package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
  234. package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
  235. package/docs/guidelines/agent-infra/layered-settings.md +4 -4
  236. package/docs/guidelines/agent-infra/memory-access.md +19 -18
  237. package/docs/guidelines/agent-infra/naming.md +1 -1
  238. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
  239. package/docs/guidelines/agent-infra/role-contracts.md +1 -1
  240. package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
  241. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
  242. package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
  243. package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
  244. package/docs/guidelines/augment-portability-patterns.md +1 -1
  245. package/docs/installation.md +13 -14
  246. package/docs/mcp-server.md +32 -20
  247. package/docs/proof.md +1 -1
  248. package/docs/setup/mcp-cloud-endpoints.md +9 -2
  249. package/docs/setup/per-ide/claude-code.md +10 -4
  250. package/package.json +4 -3
  251. package/src/config/agent-settings.template.yml +31 -17
  252. package/src/config/host-capabilities.yml +25 -16
  253. package/src/config/profiles/balanced.ini +5 -3
  254. package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
  255. package/src/scripts/_cli/cmd_conformance.ts +23 -4
  256. package/src/scripts/_cli/cmd_doctor.ts +196 -8
  257. package/src/scripts/_cli/cmd_explain.ts +23 -4
  258. package/src/scripts/_cli/cmd_export.ts +23 -4
  259. package/src/scripts/_cli/cmd_fleet.ts +23 -4
  260. package/src/scripts/_cli/cmd_migrate.ts +23 -4
  261. package/src/scripts/_cli/cmd_preflight.ts +24 -4
  262. package/src/scripts/_cli/cmd_prune.ts +23 -4
  263. package/src/scripts/_cli/cmd_refresh.ts +23 -4
  264. package/src/scripts/_cli/cmd_settings_check.ts +23 -4
  265. package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
  266. package/src/scripts/_cli/cmd_sync.ts +23 -4
  267. package/src/scripts/_cli/cmd_uninstall.ts +45 -4
  268. package/src/scripts/_cli/cmd_update.ts +23 -4
  269. package/src/scripts/_cli/cmd_upgrade.ts +307 -17
  270. package/src/scripts/_cli/cmd_validate.ts +23 -4
  271. package/src/scripts/_cli/cmd_versions.ts +23 -4
  272. package/src/scripts/_dispatch.bash +62 -19
  273. package/src/scripts/_lib/claude_plugin.ts +83 -0
  274. package/src/scripts/_lib/claude_settings_hooks.ts +251 -0
  275. package/src/scripts/_lib/knowledge_global.ts +24 -2
  276. package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
  277. package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
  278. package/src/scripts/_lib/link_crypto.ts +24 -5
  279. package/src/scripts/_lib/pin_resolver.ts +24 -3
  280. package/src/scripts/adoption_report.ts +23 -4
  281. package/src/scripts/adoption_snapshot.ts +23 -1
  282. package/src/scripts/adoption_status.ts +23 -4
  283. package/src/scripts/adr/regenerate_index.ts +24 -3
  284. package/src/scripts/ai_council/airgap.ts +25 -2
  285. package/src/scripts/ai_council/compile_corpus.ts +24 -2
  286. package/src/scripts/ai_council/pricing.ts +11 -1
  287. package/src/scripts/analysis_freshness.ts +23 -4
  288. package/src/scripts/annotate_discovery.ts +23 -1
  289. package/src/scripts/apply_modules_config.ts +23 -4
  290. package/src/scripts/audit_adr_coverage.ts +23 -4
  291. package/src/scripts/audit_auto_rules.ts +23 -1
  292. package/src/scripts/audit_cloud_compatibility.ts +23 -4
  293. package/src/scripts/audit_command_surface.ts +23 -4
  294. package/src/scripts/audit_initial_context.ts +23 -3
  295. package/src/scripts/audit_likelihood.ts +23 -1
  296. package/src/scripts/audit_mcp_tools.ts +23 -3
  297. package/src/scripts/audit_overlap.ts +23 -1
  298. package/src/scripts/audit_skill_descriptions.ts +24 -2
  299. package/src/scripts/audit_skill_overlap.ts +23 -1
  300. package/src/scripts/audit_user_type_axis.ts +23 -4
  301. package/src/scripts/backfill_model_tier.ts +23 -4
  302. package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
  303. package/src/scripts/bench_ab_clone.ts +23 -1
  304. package/src/scripts/bench_ab_diff.ts +23 -1
  305. package/src/scripts/bench_ab_integrity.ts +23 -1
  306. package/src/scripts/bench_ab_run.ts +23 -2
  307. package/src/scripts/bench_ab_task_runner.ts +23 -1
  308. package/src/scripts/bench_ab_tracka_run.ts +23 -2
  309. package/src/scripts/bench_ab_v2_run.ts +23 -1
  310. package/src/scripts/bench_ab_v2_stats.ts +23 -1
  311. package/src/scripts/bench_baseline_ready.ts +23 -1
  312. package/src/scripts/bench_condense_memory.ts +23 -1
  313. package/src/scripts/bench_drift_check.ts +23 -2
  314. package/src/scripts/bench_matrix.ts +23 -4
  315. package/src/scripts/bench_per_tool.ts +23 -1
  316. package/src/scripts/bench_quality_run.ts +23 -2
  317. package/src/scripts/bench_rtk_savings.ts +23 -1
  318. package/src/scripts/bench_rule_load_latency.ts +23 -2
  319. package/src/scripts/bench_run.ts +23 -2
  320. package/src/scripts/bench_runner.ts +23 -1
  321. package/src/scripts/build_cloud_bundle.ts +23 -3
  322. package/src/scripts/build_discovery_manifest.ts +23 -4
  323. package/src/scripts/build_linear_digest.ts +23 -3
  324. package/src/scripts/build_mcp_registry_manifest.ts +23 -4
  325. package/src/scripts/build_rule_trigger_matrix.ts +23 -4
  326. package/src/scripts/capture_showcase_session.ts +23 -1
  327. package/src/scripts/chat_history.ts +24 -3
  328. package/src/scripts/check_always_budget.ts +23 -2
  329. package/src/scripts/check_artefact_checksums.ts +23 -4
  330. package/src/scripts/check_augment_description_cap.ts +23 -4
  331. package/src/scripts/check_augmentignore.ts +23 -4
  332. package/src/scripts/check_beta_review_markers.ts +23 -4
  333. package/src/scripts/check_cluster_patterns.ts +23 -4
  334. package/src/scripts/check_command_count_messaging.ts +23 -4
  335. package/src/scripts/check_comparison.ts +23 -1
  336. package/src/scripts/check_condensation.ts +24 -3
  337. package/src/scripts/check_condensed_paths.ts +23 -2
  338. package/src/scripts/check_context_paths.ts +23 -4
  339. package/src/scripts/check_council_config_location.ts +23 -4
  340. package/src/scripts/check_council_layout.ts +23 -4
  341. package/src/scripts/check_council_references.ts +23 -4
  342. package/src/scripts/check_discovery_determinism.ts +24 -4
  343. package/src/scripts/check_gate_paths.ts +23 -4
  344. package/src/scripts/check_generated_artefact_headers.ts +23 -4
  345. package/src/scripts/check_generator_output_coverage.ts +23 -4
  346. package/src/scripts/check_gitignore_freshness.ts +23 -4
  347. package/src/scripts/check_iron_law_prominence.ts +23 -4
  348. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  349. package/src/scripts/check_kernel_rule_bundle.ts +23 -4
  350. package/src/scripts/check_knowledge_cards.ts +23 -1
  351. package/src/scripts/check_md_language.ts +23 -4
  352. package/src/scripts/check_media_deps.ts +24 -1
  353. package/src/scripts/check_memory.ts +24 -2
  354. package/src/scripts/check_memory_proposal.ts +23 -4
  355. package/src/scripts/check_module_management_neutral.ts +23 -4
  356. package/src/scripts/check_no_conflict_markers.ts +23 -4
  357. package/src/scripts/check_no_external_sources.ts +23 -4
  358. package/src/scripts/check_no_local_settings_committed.ts +24 -4
  359. package/src/scripts/check_no_new_legacy_path.ts +23 -4
  360. package/src/scripts/check_no_roadmap_refs.ts +23 -4
  361. package/src/scripts/check_one_off_location.ts +23 -4
  362. package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
  363. package/src/scripts/check_portability.ts +24 -3
  364. package/src/scripts/check_proposal.ts +0 -0
  365. package/src/scripts/check_public_catalog_links.ts +23 -4
  366. package/src/scripts/check_public_links.ts +23 -4
  367. package/src/scripts/check_quality_regression.ts +23 -2
  368. package/src/scripts/check_references.ts +23 -4
  369. package/src/scripts/check_release_includes_discovery.ts +23 -4
  370. package/src/scripts/check_release_pr_shape.ts +23 -4
  371. package/src/scripts/check_release_published.ts +23 -4
  372. package/src/scripts/check_release_trunk_sync.ts +23 -4
  373. package/src/scripts/check_reply_consistency.ts +23 -4
  374. package/src/scripts/check_roadmap_trackable.ts +23 -4
  375. package/src/scripts/check_role_doc_links.ts +23 -4
  376. package/src/scripts/check_safety_floor_untouched.ts +24 -4
  377. package/src/scripts/check_site_links.ts +23 -1
  378. package/src/scripts/check_skill_gaps.ts +23 -1
  379. package/src/scripts/check_skill_requires.ts +23 -4
  380. package/src/scripts/check_structural_breaking.ts +24 -4
  381. package/src/scripts/check_surface_tiers.ts +23 -4
  382. package/src/scripts/check_template_pin_drift.ts +23 -4
  383. package/src/scripts/check_test_coverage_diff.ts +23 -4
  384. package/src/scripts/check_token_optimizer_freshness.ts +23 -4
  385. package/src/scripts/check_token_quality_golden.ts +23 -2
  386. package/src/scripts/check_token_regression.ts +23 -2
  387. package/src/scripts/check_tracked_but_ignored.ts +24 -4
  388. package/src/scripts/check_trigger_evals.ts +23 -4
  389. package/src/scripts/check_trunk_drift.ts +24 -1
  390. package/src/scripts/check_update_banner.ts +23 -4
  391. package/src/scripts/ci_summary.ts +23 -4
  392. package/src/scripts/ci_time_ratio.ts +23 -4
  393. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  394. package/src/scripts/compile_router.ts +23 -4
  395. package/src/scripts/condense.ts +30 -31
  396. package/src/scripts/condense_memory.ts +24 -2
  397. package/src/scripts/config/packs.ts +24 -4
  398. package/src/scripts/config/session_profiles.ts +23 -4
  399. package/src/scripts/context_hygiene_hook.ts +24 -3
  400. package/src/scripts/cost_by_conversation.ts +23 -4
  401. package/src/scripts/cost_summary.ts +23 -4
  402. package/src/scripts/council_cli.ts +35 -7
  403. package/src/scripts/council_prune.ts +25 -2
  404. package/src/scripts/cross_repo_retrieve.ts +23 -4
  405. package/src/scripts/discovery_stats.ts +23 -4
  406. package/src/scripts/evidence_report.ts +23 -1
  407. package/src/scripts/export_replay_corpus.ts +23 -2
  408. package/src/scripts/extract_audit_patterns.ts +23 -1
  409. package/src/scripts/first_run_gate_hook.ts +24 -3
  410. package/src/scripts/gen_discovery_baseline.ts +23 -4
  411. package/src/scripts/generate_capabilities_index.ts +24 -5
  412. package/src/scripts/generate_capability_matrix.ts +23 -4
  413. package/src/scripts/generate_catalog.ts +23 -1
  414. package/src/scripts/generate_command_flows.ts +23 -4
  415. package/src/scripts/generate_cookbook.ts +23 -4
  416. package/src/scripts/generate_index.ts +23 -4
  417. package/src/scripts/generate_ownership_matrix.ts +23 -1
  418. package/src/scripts/generate_pack_manifests.ts +24 -5
  419. package/src/scripts/generate_role_experiences_catalog.ts +23 -4
  420. package/src/scripts/hooks/block_no_verify.ts +23 -4
  421. package/src/scripts/hooks/design_slop_hook.ts +24 -3
  422. package/src/scripts/hooks/dispatch_hook.ts +47 -14
  423. package/src/scripts/hooks/replay_hook.ts +23 -2
  424. package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
  425. package/src/scripts/hooks_doctor.ts +23 -2
  426. package/src/scripts/hooks_status.ts +23 -2
  427. package/src/scripts/injection_scan_hook.ts +24 -5
  428. package/src/scripts/install +23 -4
  429. package/src/scripts/install.ts +102 -44
  430. package/src/scripts/inventory_abstraction_budget.ts +23 -1
  431. package/src/scripts/inventory_frontmatter.ts +23 -1
  432. package/src/scripts/inventory_meta_layers.ts +23 -1
  433. package/src/scripts/iron_law_sha.ts +23 -4
  434. package/src/scripts/janitor.ts +23 -4
  435. package/src/scripts/knowledge_global_cli.ts +24 -2
  436. package/src/scripts/linked_projects_list.ts +23 -4
  437. package/src/scripts/lint_agent_security.ts +23 -4
  438. package/src/scripts/lint_agent_skill_names.ts +23 -4
  439. package/src/scripts/lint_agents_layout.ts +23 -4
  440. package/src/scripts/lint_agents_md.ts +23 -4
  441. package/src/scripts/lint_archived_skills.ts +23 -4
  442. package/src/scripts/lint_artefact_frontmatter.ts +23 -4
  443. package/src/scripts/lint_bench_ab.ts +23 -4
  444. package/src/scripts/lint_bench_corpus.ts +23 -2
  445. package/src/scripts/lint_command_flow_coverage.ts +23 -4
  446. package/src/scripts/lint_command_routing.ts +23 -4
  447. package/src/scripts/lint_command_tiers.ts +23 -2
  448. package/src/scripts/lint_command_verbs.ts +23 -4
  449. package/src/scripts/lint_commit_subjects.ts +24 -4
  450. package/src/scripts/lint_confusables.ts +25 -5
  451. package/src/scripts/lint_context_spine_usage.ts +23 -4
  452. package/src/scripts/lint_discovery_manifest.ts +23 -4
  453. package/src/scripts/lint_discovery_vocabulary.ts +23 -4
  454. package/src/scripts/lint_empty_roadmaps.ts +23 -4
  455. package/src/scripts/lint_eval_freshness.ts +23 -4
  456. package/src/scripts/lint_examples.ts +23 -4
  457. package/src/scripts/lint_explain_trace.ts +23 -4
  458. package/src/scripts/lint_featured_skills.ts +0 -0
  459. package/src/scripts/lint_flows.ts +23 -4
  460. package/src/scripts/lint_framework_leakage.ts +23 -4
  461. package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
  462. package/src/scripts/lint_ghostwriter_source.ts +23 -4
  463. package/src/scripts/lint_glama_drift.ts +75 -0
  464. package/src/scripts/lint_global_paths.ts +23 -2
  465. package/src/scripts/lint_handoffs.ts +23 -4
  466. package/src/scripts/lint_hidden_unicode.ts +24 -5
  467. package/src/scripts/lint_hook_concern_budget.ts +23 -4
  468. package/src/scripts/lint_hook_manifest.ts +23 -2
  469. package/src/scripts/lint_instruction_smuggling.ts +25 -5
  470. package/src/scripts/lint_legal_pack.ts +23 -1
  471. package/src/scripts/lint_load_context.ts +23 -4
  472. package/src/scripts/lint_marketplace.ts +24 -3
  473. package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
  474. package/src/scripts/lint_mcp_config_security.ts +25 -5
  475. package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
  476. package/src/scripts/lint_media_policy_linkage.ts +23 -4
  477. package/src/scripts/lint_missions.ts +23 -4
  478. package/src/scripts/lint_model_tier_coverage.ts +23 -4
  479. package/src/scripts/lint_namespace.ts +23 -4
  480. package/src/scripts/lint_namespace_collisions.ts +23 -4
  481. package/src/scripts/lint_new_skill_gate.ts +23 -4
  482. package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
  483. package/src/scripts/lint_one_off_age.ts +23 -4
  484. package/src/scripts/lint_orchestration_dsl.ts +23 -4
  485. package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
  486. package/src/scripts/lint_pack_boundaries.ts +23 -4
  487. package/src/scripts/lint_pack_dependencies.ts +23 -2
  488. package/src/scripts/lint_pack_first_win.ts +23 -4
  489. package/src/scripts/lint_pack_risk_class.ts +23 -1
  490. package/src/scripts/lint_persona_governance.ts +23 -4
  491. package/src/scripts/lint_positioning.ts +23 -4
  492. package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
  493. package/src/scripts/lint_readme_jargon.ts +23 -4
  494. package/src/scripts/lint_readme_size.ts +23 -4
  495. package/src/scripts/lint_regression.ts +23 -4
  496. package/src/scripts/lint_roadmap_blockers.ts +23 -4
  497. package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
  498. package/src/scripts/lint_roadmap_complexity.ts +23 -4
  499. package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
  500. package/src/scripts/lint_role_experiences.ts +23 -4
  501. package/src/scripts/lint_rule_interactions.ts +23 -4
  502. package/src/scripts/lint_rule_tiers.ts +24 -3
  503. package/src/scripts/lint_showcase_sessions.ts +23 -4
  504. package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
  505. package/src/scripts/lint_skill_originality.ts +23 -4
  506. package/src/scripts/lint_skill_tools.ts +23 -4
  507. package/src/scripts/lint_subagent_determinism.ts +23 -4
  508. package/src/scripts/lint_ticket_buildable.ts +23 -4
  509. package/src/scripts/lint_topics_yaml.ts +23 -4
  510. package/src/scripts/lint_trust_coherence.ts +23 -4
  511. package/src/scripts/lint_value_dashboard.ts +23 -4
  512. package/src/scripts/lint_workflow_security.ts +23 -4
  513. package/src/scripts/lint_workspace_boundary.ts +23 -4
  514. package/src/scripts/mcp_exec/safety_envelope.ts +105 -0
  515. package/src/scripts/mcp_parity_smoke.ts +23 -2
  516. package/src/scripts/mcp_registry_submit.sh +14 -3
  517. package/src/scripts/mcp_render.ts +23 -4
  518. package/src/scripts/mcp_server/__main__.ts +6 -8
  519. package/src/scripts/mcp_server/consumer_tool_catalog.json +78 -3
  520. package/src/scripts/mcp_server/tools.ts +731 -0
  521. package/src/scripts/mcp_telemetry_health.ts +23 -4
  522. package/src/scripts/mcp_telemetry_query.ts +23 -4
  523. package/src/scripts/mcp_telemetry_store.ts +23 -4
  524. package/src/scripts/measure_augment_budget.ts +23 -1
  525. package/src/scripts/measure_density.ts +23 -1
  526. package/src/scripts/measure_frugality_savings.ts +23 -1
  527. package/src/scripts/measure_markitdown_lift.ts +23 -1
  528. package/src/scripts/measure_patterns.ts +23 -1
  529. package/src/scripts/measure_projection_bytes.ts +23 -1
  530. package/src/scripts/measure_rule_budget.ts +23 -4
  531. package/src/scripts/measure_skill_reduction.ts +23 -1
  532. package/src/scripts/memory_hash.ts +24 -2
  533. package/src/scripts/memory_lookup.ts +24 -2
  534. package/src/scripts/memory_report.ts +24 -2
  535. package/src/scripts/memory_signal.ts +24 -2
  536. package/src/scripts/memory_status.ts +26 -2
  537. package/src/scripts/migrate_command_suggestions.ts +23 -4
  538. package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
  539. package/src/scripts/migration_status.ts +25 -4
  540. package/src/scripts/mine_missing_guardrails.ts +23 -1
  541. package/src/scripts/mine_session.ts +23 -1
  542. package/src/scripts/minimal_safe_diff_hook.ts +24 -3
  543. package/src/scripts/new_skill.ts +23 -3
  544. package/src/scripts/onboarding_gate_hook.ts +24 -3
  545. package/src/scripts/parity/coverage_diff.ts +25 -3
  546. package/src/scripts/parity/phase_gate.ts +25 -4
  547. package/src/scripts/parity/replay.ts +25 -3
  548. package/src/scripts/pattern_share.ts +23 -4
  549. package/src/scripts/plan_physical_move.ts +23 -4
  550. package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
  551. package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
  552. package/src/scripts/prediction-pool/score_ev.ts +24 -3
  553. package/src/scripts/print_required_checks.ts +24 -4
  554. package/src/scripts/probe_host_compliance.ts +23 -2
  555. package/src/scripts/probe_projection_fidelity.ts +23 -1
  556. package/src/scripts/probe_skill_registration.ts +24 -2
  557. package/src/scripts/profile_staleness_hook.ts +24 -3
  558. package/src/scripts/profile_use.ts +23 -4
  559. package/src/scripts/project_thin_rules.ts +23 -3
  560. package/src/scripts/propose_modules_config.ts +23 -4
  561. package/src/scripts/prototype_lint_contradictions.ts +23 -1
  562. package/src/scripts/prove_pack_extractable.ts +23 -4
  563. package/src/scripts/readme_linter.ts +23 -3
  564. package/src/scripts/redact_hook_capture.ts +23 -4
  565. package/src/scripts/refine_ticket_detect.ts +23 -4
  566. package/src/scripts/release.ts +226 -43
  567. package/src/scripts/render_benchmark_composite.ts +23 -4
  568. package/src/scripts/render_benchmark_md.ts +23 -4
  569. package/src/scripts/roadmap_progress_hook.ts +46 -16
  570. package/src/scripts/run_skill_evals.ts +23 -4
  571. package/src/scripts/runtime_dispatcher.ts +23 -4
  572. package/src/scripts/runtime_registry.ts +23 -4
  573. package/src/scripts/score_skill_selection.ts +23 -1
  574. package/src/scripts/security_audit_config.ts +24 -5
  575. package/src/scripts/skill_collision_clusters.ts +23 -4
  576. package/src/scripts/skill_discovery.ts +23 -4
  577. package/src/scripts/skill_linter.ts +23 -2
  578. package/src/scripts/skill_preview.ts +23 -4
  579. package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
  580. package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
  581. package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
  582. package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
  583. package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
  584. package/src/scripts/skill_usage_collect.ts +23 -4
  585. package/src/scripts/smoke_path_resolution.ts +23 -4
  586. package/src/scripts/smoke_quickstart.ts +23 -4
  587. package/src/scripts/snapshot_agent_outputs.ts +23 -4
  588. package/src/scripts/spotcheck_thin_root.ts +23 -4
  589. package/src/scripts/sync_agent_settings.ts +23 -4
  590. package/src/scripts/sync_github_metadata.ts +23 -4
  591. package/src/scripts/sync_gitignore.ts +23 -4
  592. package/src/scripts/telegraph_stats.ts +23 -4
  593. package/src/scripts/tool_registry.ts +24 -4
  594. package/src/scripts/trigger_coverage.ts +23 -4
  595. package/src/scripts/update_counts.ts +23 -4
  596. package/src/scripts/update_prices.ts +23 -1
  597. package/src/scripts/validate_agent_settings.ts +23 -4
  598. package/src/scripts/validate_decision_engine.ts +23 -4
  599. package/src/scripts/validate_discovery_manifest.ts +23 -4
  600. package/src/scripts/validate_frontmatter.ts +23 -2
  601. package/src/scripts/validate_pack_yaml.ts +0 -0
  602. package/src/scripts/validate_safe_paths.ts +24 -4
  603. package/src/scripts/validate_telegraph_carveouts.ts +23 -4
  604. package/src/scripts/verify_before_complete_hook.ts +24 -3
  605. package/src/scripts/verify_physical_move.ts +23 -4
  606. package/src/scripts/wrapper_freshness_hook.ts +107 -8
  607. package/tests/fixtures/hooks/README.md +92 -0
  608. package/tests/fixtures/hooks/agent_error.json +7 -0
  609. package/tests/fixtures/hooks/post_tool_use.json +13 -0
  610. package/tests/fixtures/hooks/pre_compact.json +7 -0
  611. package/tests/fixtures/hooks/pre_tool_use.json +9 -0
  612. package/tests/fixtures/hooks/session_end.json +6 -0
  613. package/tests/fixtures/hooks/session_start.json +6 -0
  614. package/tests/fixtures/hooks/stop.json +6 -0
  615. package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
@@ -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
 
26
26
  const ROOT = ".";
27
27
  const MARKETPLACE = path.join(ROOT, ".claude-plugin", "marketplace.json");
@@ -272,9 +272,30 @@ function relPosix(child: string, base: string): string {
272
272
  return path.relative(base, child).split(path.sep).join("/");
273
273
  }
274
274
 
275
+ function _isCliEntry(): boolean {
276
+ if (process.argv[1] === undefined) {
277
+ return false;
278
+ }
279
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
280
+ if (import.meta.url === argvUrl) {
281
+ return true;
282
+ }
283
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
284
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
285
+ // import.meta.url is the resolved real path while argv[1] keeps the
286
+ // symlink path. Compare realpaths so the entry guard still fires
287
+ // (without this the CLI silently no-ops when run through a symlink).
288
+ try {
289
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
290
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
291
+ return here === argv;
292
+ } catch {
293
+ return false;
294
+ }
295
+ }
296
+
275
297
  const isCliEntry =
276
- process.argv[1] !== undefined &&
277
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
298
+ _isCliEntry();
278
299
  if (isCliEntry) {
279
300
  try {
280
301
  process.exit(main());
@@ -288,10 +288,29 @@ function main(argv?: readonly string[]): number {
288
288
  }
289
289
  }
290
290
 
291
- const _isCliEntry =
292
- process.argv[1] !== undefined &&
293
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
294
- if (_isCliEntry || process.argv[1] === _HERE) {
291
+ function _isCliEntry(): boolean {
292
+ if (process.argv[1] === undefined) {
293
+ return false;
294
+ }
295
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
296
+ if (import.meta.url === argvUrl) {
297
+ return true;
298
+ }
299
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
300
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
301
+ // import.meta.url is the resolved real path while argv[1] keeps the
302
+ // symlink path. Compare realpaths so the entry guard still fires
303
+ // (without this the CLI silently no-ops when run through a symlink).
304
+ try {
305
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
306
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
307
+ return here === argv;
308
+ } catch {
309
+ return false;
310
+ }
311
+ }
312
+
313
+ if (_isCliEntry() || process.argv[1] === _HERE) {
295
314
  process.exit(main());
296
315
  }
297
316
 
@@ -20,7 +20,8 @@
20
20
  // Usage: ./scripts-run src/scripts/lint_mcp_config_security [--json]
21
21
 
22
22
  import * as path from 'node:path';
23
- import { pathToFileURL } from 'node:url';
23
+ import * as fs from 'node:fs';
24
+ import { fileURLToPath, pathToFileURL } from 'node:url';
24
25
 
25
26
  import * as sl from './_lib/security_lint.js';
26
27
 
@@ -217,9 +218,28 @@ export function main(argv: readonly string[] | null = null): number {
217
218
  return sl.report(findings, { check_label: 'mcp-config-security' });
218
219
  }
219
220
 
220
- const _isCliEntry =
221
- process.argv[1] !== undefined &&
222
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
223
- if (_isCliEntry) {
221
+ function _isCliEntry(): boolean {
222
+ if (process.argv[1] === undefined) {
223
+ return false;
224
+ }
225
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
226
+ if (import.meta.url === argvUrl) {
227
+ return true;
228
+ }
229
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
230
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
231
+ // import.meta.url is the resolved real path while argv[1] keeps the
232
+ // symlink path. Compare realpaths so the entry guard still fires
233
+ // (without this the CLI silently no-ops when run through a symlink).
234
+ try {
235
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
236
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
237
+ return here === argv;
238
+ } catch {
239
+ return false;
240
+ }
241
+ }
242
+
243
+ if (_isCliEntry()) {
224
244
  process.exitCode = main();
225
245
  }
@@ -332,10 +332,29 @@ function main(argv: readonly string[]): number {
332
332
  return 0;
333
333
  }
334
334
 
335
- const _isCliEntry =
336
- process.argv[1] !== undefined &&
337
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
338
- if (_isCliEntry || process.argv[1] === _HERE) {
335
+ function _isCliEntry(): boolean {
336
+ if (process.argv[1] === undefined) {
337
+ return false;
338
+ }
339
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
340
+ if (import.meta.url === argvUrl) {
341
+ return true;
342
+ }
343
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
344
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
345
+ // import.meta.url is the resolved real path while argv[1] keeps the
346
+ // symlink path. Compare realpaths so the entry guard still fires
347
+ // (without this the CLI silently no-ops when run through a symlink).
348
+ try {
349
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
350
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
351
+ return here === argv;
352
+ } catch {
353
+ return false;
354
+ }
355
+ }
356
+
357
+ if (_isCliEntry() || process.argv[1] === _HERE) {
339
358
  process.exit(main(process.argv.slice(2)));
340
359
  }
341
360
 
@@ -214,10 +214,29 @@ function main(): number {
214
214
  return 0;
215
215
  }
216
216
 
217
- const _isCliEntry =
218
- process.argv[1] !== undefined &&
219
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
220
- if (_isCliEntry || process.argv[1] === _HERE) {
217
+ function _isCliEntry(): boolean {
218
+ if (process.argv[1] === undefined) {
219
+ return false;
220
+ }
221
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
222
+ if (import.meta.url === argvUrl) {
223
+ return true;
224
+ }
225
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
226
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
227
+ // import.meta.url is the resolved real path while argv[1] keeps the
228
+ // symlink path. Compare realpaths so the entry guard still fires
229
+ // (without this the CLI silently no-ops when run through a symlink).
230
+ try {
231
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
232
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
233
+ return here === argv;
234
+ } catch {
235
+ return false;
236
+ }
237
+ }
238
+
239
+ if (_isCliEntry() || process.argv[1] === _HERE) {
221
240
  process.exit(main());
222
241
  }
223
242
 
@@ -747,10 +747,29 @@ function _sortedMissionDirs(): string[] {
747
747
  return out;
748
748
  }
749
749
 
750
- const _isCliEntry =
751
- process.argv[1] !== undefined &&
752
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
753
- if (_isCliEntry || process.argv[1] === _HERE) {
750
+ function _isCliEntry(): boolean {
751
+ if (process.argv[1] === undefined) {
752
+ return false;
753
+ }
754
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
755
+ if (import.meta.url === argvUrl) {
756
+ return true;
757
+ }
758
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
759
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
760
+ // import.meta.url is the resolved real path while argv[1] keeps the
761
+ // symlink path. Compare realpaths so the entry guard still fires
762
+ // (without this the CLI silently no-ops when run through a symlink).
763
+ try {
764
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
765
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
766
+ return here === argv;
767
+ } catch {
768
+ return false;
769
+ }
770
+ }
771
+
772
+ if (_isCliEntry() || process.argv[1] === _HERE) {
754
773
  process.exitCode = main();
755
774
  }
756
775
 
@@ -141,10 +141,29 @@ function parse_args(argv: readonly string[]): boolean {
141
141
  return quiet;
142
142
  }
143
143
 
144
- const _isCliEntry =
145
- process.argv[1] !== undefined &&
146
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
147
- if (_isCliEntry || process.argv[1] === _HERE) {
144
+ function _isCliEntry(): boolean {
145
+ if (process.argv[1] === undefined) {
146
+ return false;
147
+ }
148
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
149
+ if (import.meta.url === argvUrl) {
150
+ return true;
151
+ }
152
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
153
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
154
+ // import.meta.url is the resolved real path while argv[1] keeps the
155
+ // symlink path. Compare realpaths so the entry guard still fires
156
+ // (without this the CLI silently no-ops when run through a symlink).
157
+ try {
158
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
159
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
160
+ return here === argv;
161
+ } catch {
162
+ return false;
163
+ }
164
+ }
165
+
166
+ if (_isCliEntry() || process.argv[1] === _HERE) {
148
167
  process.exit(main(process.argv.slice(2)));
149
168
  }
150
169
 
@@ -271,10 +271,29 @@ function main(argv?: readonly string[]): number {
271
271
  return 0;
272
272
  }
273
273
 
274
- const _isCliEntry =
275
- process.argv[1] !== undefined &&
276
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
277
- if (_isCliEntry || process.argv[1] === _HERE) {
274
+ function _isCliEntry(): boolean {
275
+ if (process.argv[1] === undefined) {
276
+ return false;
277
+ }
278
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
279
+ if (import.meta.url === argvUrl) {
280
+ return true;
281
+ }
282
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
283
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
284
+ // import.meta.url is the resolved real path while argv[1] keeps the
285
+ // symlink path. Compare realpaths so the entry guard still fires
286
+ // (without this the CLI silently no-ops when run through a symlink).
287
+ try {
288
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
289
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
290
+ return here === argv;
291
+ } catch {
292
+ return false;
293
+ }
294
+ }
295
+
296
+ if (_isCliEntry() || process.argv[1] === _HERE) {
278
297
  process.exit(main());
279
298
  }
280
299
 
@@ -178,10 +178,29 @@ function isPlainObject(v: unknown): v is Record<string, unknown> {
178
178
  return typeof v === 'object' && v !== null && !Array.isArray(v);
179
179
  }
180
180
 
181
- const _isCliEntry =
182
- process.argv[1] !== undefined &&
183
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
184
- if (_isCliEntry || process.argv[1] === _HERE) {
181
+ function _isCliEntry(): boolean {
182
+ if (process.argv[1] === undefined) {
183
+ return false;
184
+ }
185
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
186
+ if (import.meta.url === argvUrl) {
187
+ return true;
188
+ }
189
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
190
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
191
+ // import.meta.url is the resolved real path while argv[1] keeps the
192
+ // symlink path. Compare realpaths so the entry guard still fires
193
+ // (without this the CLI silently no-ops when run through a symlink).
194
+ try {
195
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
196
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
197
+ return here === argv;
198
+ } catch {
199
+ return false;
200
+ }
201
+ }
202
+
203
+ if (_isCliEntry() || process.argv[1] === _HERE) {
185
204
  try {
186
205
  process.exit(main());
187
206
  } catch (e) {
@@ -452,10 +452,29 @@ function _parseArgs(args: string[]): ParsedArgs {
452
452
  return { baseline, quiet, exit: null };
453
453
  }
454
454
 
455
- const _isCliEntry =
456
- process.argv[1] !== undefined &&
457
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
458
- if (_isCliEntry || process.argv[1] === _HERE) {
455
+ function _isCliEntry(): boolean {
456
+ if (process.argv[1] === undefined) {
457
+ return false;
458
+ }
459
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
460
+ if (import.meta.url === argvUrl) {
461
+ return true;
462
+ }
463
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
464
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
465
+ // import.meta.url is the resolved real path while argv[1] keeps the
466
+ // symlink path. Compare realpaths so the entry guard still fires
467
+ // (without this the CLI silently no-ops when run through a symlink).
468
+ try {
469
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
470
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
471
+ return here === argv;
472
+ } catch {
473
+ return false;
474
+ }
475
+ }
476
+
477
+ if (_isCliEntry() || process.argv[1] === _HERE) {
459
478
  process.exit(main());
460
479
  }
461
480
 
@@ -321,10 +321,29 @@ function main(argv?: readonly string[]): number {
321
321
  return 0;
322
322
  }
323
323
 
324
- const _isCliEntry =
325
- process.argv[1] !== undefined &&
326
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
327
- if (_isCliEntry || process.argv[1] === _HERE) {
324
+ function _isCliEntry(): boolean {
325
+ if (process.argv[1] === undefined) {
326
+ return false;
327
+ }
328
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
329
+ if (import.meta.url === argvUrl) {
330
+ return true;
331
+ }
332
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
333
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
334
+ // import.meta.url is the resolved real path while argv[1] keeps the
335
+ // symlink path. Compare realpaths so the entry guard still fires
336
+ // (without this the CLI silently no-ops when run through a symlink).
337
+ try {
338
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
339
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
340
+ return here === argv;
341
+ } catch {
342
+ return false;
343
+ }
344
+ }
345
+
346
+ if (_isCliEntry() || process.argv[1] === _HERE) {
328
347
  process.exit(main());
329
348
  }
330
349
 
@@ -338,10 +338,29 @@ export function main(): number {
338
338
  return findings.some((f) => f.severity === 'fail') ? 1 : 0;
339
339
  }
340
340
 
341
- const _isCliEntry =
342
- process.argv[1] !== undefined &&
343
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
344
- if (_isCliEntry || process.argv[1] === _HERE) {
341
+ function _isCliEntry(): boolean {
342
+ if (process.argv[1] === undefined) {
343
+ return false;
344
+ }
345
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
346
+ if (import.meta.url === argvUrl) {
347
+ return true;
348
+ }
349
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
350
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
351
+ // import.meta.url is the resolved real path while argv[1] keeps the
352
+ // symlink path. Compare realpaths so the entry guard still fires
353
+ // (without this the CLI silently no-ops when run through a symlink).
354
+ try {
355
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
356
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
357
+ return here === argv;
358
+ } catch {
359
+ return false;
360
+ }
361
+ }
362
+
363
+ if (_isCliEntry() || process.argv[1] === _HERE) {
345
364
  process.exit(main());
346
365
  }
347
366
 
@@ -358,10 +358,29 @@ function _sortedListRepr(s: Set<string>): string {
358
358
  return '[' + [...s].sort().map((x) => `'${x}'`).join(', ') + ']';
359
359
  }
360
360
 
361
- const _isCliEntry =
362
- process.argv[1] !== undefined &&
363
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
364
- if (_isCliEntry || process.argv[1] === _HERE) {
361
+ function _isCliEntry(): boolean {
362
+ if (process.argv[1] === undefined) {
363
+ return false;
364
+ }
365
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
366
+ if (import.meta.url === argvUrl) {
367
+ return true;
368
+ }
369
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
370
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
371
+ // import.meta.url is the resolved real path while argv[1] keeps the
372
+ // symlink path. Compare realpaths so the entry guard still fires
373
+ // (without this the CLI silently no-ops when run through a symlink).
374
+ try {
375
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
376
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
377
+ return here === argv;
378
+ } catch {
379
+ return false;
380
+ }
381
+ }
382
+
383
+ if (_isCliEntry() || process.argv[1] === _HERE) {
365
384
  process.exit(main());
366
385
  }
367
386
 
@@ -169,9 +169,28 @@ export function main(argv?: readonly string[]): number {
169
169
  }
170
170
 
171
171
  const _HERE = fileURLToPath(import.meta.url);
172
- const _isCliEntry =
173
- process.argv[1] !== undefined &&
174
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
175
- if (_isCliEntry || process.argv[1] === _HERE) {
172
+ function _isCliEntry(): boolean {
173
+ if (process.argv[1] === undefined) {
174
+ return false;
175
+ }
176
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
177
+ if (import.meta.url === argvUrl) {
178
+ return true;
179
+ }
180
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
181
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
182
+ // import.meta.url is the resolved real path while argv[1] keeps the
183
+ // symlink path. Compare realpaths so the entry guard still fires
184
+ // (without this the CLI silently no-ops when run through a symlink).
185
+ try {
186
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
187
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
188
+ return here === argv;
189
+ } catch {
190
+ return false;
191
+ }
192
+ }
193
+
194
+ if (_isCliEntry() || process.argv[1] === _HERE) {
176
195
  process.exit(main());
177
196
  }
@@ -345,10 +345,29 @@ function main(): number {
345
345
  return violations.length > 0 ? 1 : 0;
346
346
  }
347
347
 
348
- const _isCliEntry =
349
- process.argv[1] !== undefined &&
350
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
351
- if (_isCliEntry || process.argv[1] === _HERE) {
348
+ function _isCliEntry(): boolean {
349
+ if (process.argv[1] === undefined) {
350
+ return false;
351
+ }
352
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
353
+ if (import.meta.url === argvUrl) {
354
+ return true;
355
+ }
356
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
357
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
358
+ // import.meta.url is the resolved real path while argv[1] keeps the
359
+ // symlink path. Compare realpaths so the entry guard still fires
360
+ // (without this the CLI silently no-ops when run through a symlink).
361
+ try {
362
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
363
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
364
+ return here === argv;
365
+ } catch {
366
+ return false;
367
+ }
368
+ }
369
+
370
+ if (_isCliEntry() || process.argv[1] === _HERE) {
352
371
  process.exit(main());
353
372
  }
354
373
 
@@ -533,9 +533,30 @@ function pyListRepr(items: string[]): string {
533
533
  return `[${items.map((s) => `'${s}'`).join(", ")}]`;
534
534
  }
535
535
 
536
+ function _isCliEntry(): boolean {
537
+ if (process.argv[1] === undefined) {
538
+ return false;
539
+ }
540
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
541
+ if (import.meta.url === argvUrl) {
542
+ return true;
543
+ }
544
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
545
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
546
+ // import.meta.url is the resolved real path while argv[1] keeps the
547
+ // symlink path. Compare realpaths so the entry guard still fires
548
+ // (without this the CLI silently no-ops when run through a symlink).
549
+ try {
550
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
551
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
552
+ return here === argv;
553
+ } catch {
554
+ return false;
555
+ }
556
+ }
557
+
536
558
  const isCliEntry =
537
- process.argv[1] !== undefined &&
538
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
559
+ _isCliEntry();
539
560
  if (isCliEntry) {
540
561
  process.exit(main());
541
562
  }
@@ -187,10 +187,29 @@ function main(): number {
187
187
  return 0;
188
188
  }
189
189
 
190
- const _isCliEntry =
191
- process.argv[1] !== undefined &&
192
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
193
- if (_isCliEntry || process.argv[1] === _HERE) {
190
+ function _isCliEntry(): boolean {
191
+ if (process.argv[1] === undefined) {
192
+ return false;
193
+ }
194
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
195
+ if (import.meta.url === argvUrl) {
196
+ return true;
197
+ }
198
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
199
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
200
+ // import.meta.url is the resolved real path while argv[1] keeps the
201
+ // symlink path. Compare realpaths so the entry guard still fires
202
+ // (without this the CLI silently no-ops when run through a symlink).
203
+ try {
204
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
205
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
206
+ return here === argv;
207
+ } catch {
208
+ return false;
209
+ }
210
+ }
211
+
212
+ if (_isCliEntry() || process.argv[1] === _HERE) {
194
213
  process.exit(main());
195
214
  }
196
215
 
@@ -74,6 +74,28 @@ export function main(): number {
74
74
  return 1;
75
75
  }
76
76
 
77
- if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href) {
77
+ function _isCliEntry(): boolean {
78
+ if (process.argv[1] === undefined) {
79
+ return false;
80
+ }
81
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
82
+ if (import.meta.url === argvUrl) {
83
+ return true;
84
+ }
85
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
86
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
87
+ // import.meta.url is the resolved real path while argv[1] keeps the
88
+ // symlink path. Compare realpaths so the entry guard still fires
89
+ // (without this the CLI silently no-ops when run through a symlink).
90
+ try {
91
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
92
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
93
+ return here === argv;
94
+ } catch {
95
+ return false;
96
+ }
97
+ }
98
+
99
+ if (_isCliEntry()) {
78
100
  process.exit(main());
79
101
  }