@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
@@ -205,10 +205,29 @@ function main(argv: readonly string[]): number {
205
205
  return 1;
206
206
  }
207
207
 
208
- const _isCliEntry =
209
- process.argv[1] !== undefined &&
210
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
211
- if (_isCliEntry || process.argv[1] === _HERE) {
208
+ function _isCliEntry(): boolean {
209
+ if (process.argv[1] === undefined) {
210
+ return false;
211
+ }
212
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
213
+ if (import.meta.url === argvUrl) {
214
+ return true;
215
+ }
216
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
217
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
218
+ // import.meta.url is the resolved real path while argv[1] keeps the
219
+ // symlink path. Compare realpaths so the entry guard still fires
220
+ // (without this the CLI silently no-ops when run through a symlink).
221
+ try {
222
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
223
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
224
+ return here === argv;
225
+ } catch {
226
+ return false;
227
+ }
228
+ }
229
+
230
+ if (_isCliEntry() || process.argv[1] === _HERE) {
212
231
  process.exit(main(process.argv.slice(2)));
213
232
  }
214
233
 
@@ -74,6 +74,28 @@ export function main(argv: string[] = process.argv.slice(2)): number {
74
74
  return 0;
75
75
  }
76
76
 
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
+
77
99
  const _isCli =
78
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
100
+ _isCliEntry();
79
101
  if (_isCli) process.exit(main());
@@ -29,7 +29,7 @@
29
29
  import fs from 'node:fs';
30
30
  import path from 'node:path';
31
31
  import process from 'node:process';
32
- import { pathToFileURL } from 'node:url';
32
+ import { fileURLToPath, pathToFileURL } from 'node:url';
33
33
 
34
34
  type Severity = 'error' | 'warning' | 'info';
35
35
 
@@ -877,9 +877,30 @@ function main(): number {
877
877
  return errors.length > 0 ? 1 : 0;
878
878
  }
879
879
 
880
+ function _isCliEntry(): boolean {
881
+ if (process.argv[1] === undefined) {
882
+ return false;
883
+ }
884
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
885
+ if (import.meta.url === argvUrl) {
886
+ return true;
887
+ }
888
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
889
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
890
+ // import.meta.url is the resolved real path while argv[1] keeps the
891
+ // symlink path. Compare realpaths so the entry guard still fires
892
+ // (without this the CLI silently no-ops when run through a symlink).
893
+ try {
894
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
895
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
896
+ return here === argv;
897
+ } catch {
898
+ return false;
899
+ }
900
+ }
901
+
880
902
  const isMain =
881
- process.argv[1] !== undefined &&
882
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
903
+ _isCliEntry();
883
904
 
884
905
  if (isMain) {
885
906
  process.exit(main());
@@ -393,9 +393,30 @@ function main(): number {
393
393
  }
394
394
 
395
395
  // Run the CLI only when executed directly, not when imported by tests.
396
+ function _isCliEntry(): boolean {
397
+ if (process.argv[1] === undefined) {
398
+ return false;
399
+ }
400
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
401
+ if (import.meta.url === argvUrl) {
402
+ return true;
403
+ }
404
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
405
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
406
+ // import.meta.url is the resolved real path while argv[1] keeps the
407
+ // symlink path. Compare realpaths so the entry guard still fires
408
+ // (without this the CLI silently no-ops when run through a symlink).
409
+ try {
410
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
411
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
412
+ return here === argv;
413
+ } catch {
414
+ return false;
415
+ }
416
+ }
417
+
396
418
  const isCliEntry =
397
- process.argv[1] !== undefined &&
398
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
419
+ _isCliEntry();
399
420
  if (isCliEntry) {
400
421
  process.exit(main());
401
422
  }
@@ -368,10 +368,29 @@ function main(): number {
368
368
  return violations.length ? 1 : 0;
369
369
  }
370
370
 
371
- const _isCliEntry =
372
- process.argv[1] !== undefined &&
373
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
374
- if (_isCliEntry || process.argv[1] === _HERE) {
371
+ function _isCliEntry(): boolean {
372
+ if (process.argv[1] === undefined) {
373
+ return false;
374
+ }
375
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
376
+ if (import.meta.url === argvUrl) {
377
+ return true;
378
+ }
379
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
380
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
381
+ // import.meta.url is the resolved real path while argv[1] keeps the
382
+ // symlink path. Compare realpaths so the entry guard still fires
383
+ // (without this the CLI silently no-ops when run through a symlink).
384
+ try {
385
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
386
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
387
+ return here === argv;
388
+ } catch {
389
+ return false;
390
+ }
391
+ }
392
+
393
+ if (_isCliEntry() || process.argv[1] === _HERE) {
375
394
  process.exit(main());
376
395
  }
377
396
 
@@ -242,10 +242,29 @@ function main(): number {
242
242
  }
243
243
 
244
244
  const _HERE = fileURLToPath(import.meta.url);
245
- const _isCliEntry =
246
- process.argv[1] !== undefined &&
247
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
248
- if (_isCliEntry || process.argv[1] === _HERE) {
245
+ function _isCliEntry(): boolean {
246
+ if (process.argv[1] === undefined) {
247
+ return false;
248
+ }
249
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
250
+ if (import.meta.url === argvUrl) {
251
+ return true;
252
+ }
253
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
254
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
255
+ // import.meta.url is the resolved real path while argv[1] keeps the
256
+ // symlink path. Compare realpaths so the entry guard still fires
257
+ // (without this the CLI silently no-ops when run through a symlink).
258
+ try {
259
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
260
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
261
+ return here === argv;
262
+ } catch {
263
+ return false;
264
+ }
265
+ }
266
+
267
+ if (_isCliEntry() || process.argv[1] === _HERE) {
249
268
  process.exit(main());
250
269
  }
251
270
 
@@ -162,10 +162,29 @@ function main(argv: readonly string[]): number {
162
162
  return 0;
163
163
  }
164
164
 
165
- const _isCliEntry =
166
- process.argv[1] !== undefined &&
167
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
168
- if (_isCliEntry || process.argv[1] === _HERE) {
165
+ function _isCliEntry(): boolean {
166
+ if (process.argv[1] === undefined) {
167
+ return false;
168
+ }
169
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
170
+ if (import.meta.url === argvUrl) {
171
+ return true;
172
+ }
173
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
174
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
175
+ // import.meta.url is the resolved real path while argv[1] keeps the
176
+ // symlink path. Compare realpaths so the entry guard still fires
177
+ // (without this the CLI silently no-ops when run through a symlink).
178
+ try {
179
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
180
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
181
+ return here === argv;
182
+ } catch {
183
+ return false;
184
+ }
185
+ }
186
+
187
+ if (_isCliEntry() || process.argv[1] === _HERE) {
169
188
  process.exit(main(process.argv.slice(2)));
170
189
  }
171
190
 
@@ -321,10 +321,29 @@ function main(): number {
321
321
  }
322
322
 
323
323
  const _HERE = fileURLToPath(import.meta.url);
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
 
@@ -16,6 +16,7 @@
16
16
  */
17
17
  import { spawnSync } from 'node:child_process';
18
18
  import * as path from 'node:path';
19
+ import * as fs from 'node:fs';
19
20
  import { fileURLToPath, pathToFileURL } from 'node:url';
20
21
 
21
22
  const _HERE = fileURLToPath(import.meta.url);
@@ -106,10 +107,29 @@ function main(): number {
106
107
  return 0;
107
108
  }
108
109
 
109
- const _isCliEntry =
110
- process.argv[1] !== undefined &&
111
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
112
- if (_isCliEntry || process.argv[1] === _HERE) {
110
+ function _isCliEntry(): boolean {
111
+ if (process.argv[1] === undefined) {
112
+ return false;
113
+ }
114
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
115
+ if (import.meta.url === argvUrl) {
116
+ return true;
117
+ }
118
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
119
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
120
+ // import.meta.url is the resolved real path while argv[1] keeps the
121
+ // symlink path. Compare realpaths so the entry guard still fires
122
+ // (without this the CLI silently no-ops when run through a symlink).
123
+ try {
124
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
125
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
126
+ return here === argv;
127
+ } catch {
128
+ return false;
129
+ }
130
+ }
131
+
132
+ if (_isCliEntry() || process.argv[1] === _HERE) {
113
133
  try {
114
134
  process.exit(main());
115
135
  } catch (exc) {
@@ -213,10 +213,29 @@ function main(): number {
213
213
  return 0;
214
214
  }
215
215
 
216
- const _isCliEntry =
217
- process.argv[1] !== undefined &&
218
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
219
- if (_isCliEntry || process.argv[1] === _HERE) {
216
+ function _isCliEntry(): boolean {
217
+ if (process.argv[1] === undefined) {
218
+ return false;
219
+ }
220
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
221
+ if (import.meta.url === argvUrl) {
222
+ return true;
223
+ }
224
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
225
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
226
+ // import.meta.url is the resolved real path while argv[1] keeps the
227
+ // symlink path. Compare realpaths so the entry guard still fires
228
+ // (without this the CLI silently no-ops when run through a symlink).
229
+ try {
230
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
231
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
232
+ return here === argv;
233
+ } catch {
234
+ return false;
235
+ }
236
+ }
237
+
238
+ if (_isCliEntry() || process.argv[1] === _HERE) {
220
239
  process.exit(main());
221
240
  }
222
241
 
@@ -99,10 +99,29 @@ function main(argv?: readonly string[]): number {
99
99
  return errors.length > 0 ? 1 : 0;
100
100
  }
101
101
 
102
- const _isCliEntry =
103
- process.argv[1] !== undefined &&
104
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
105
- if (_isCliEntry || process.argv[1] === _HERE) {
102
+ function _isCliEntry(): boolean {
103
+ if (process.argv[1] === undefined) {
104
+ return false;
105
+ }
106
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
107
+ if (import.meta.url === argvUrl) {
108
+ return true;
109
+ }
110
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
111
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
112
+ // import.meta.url is the resolved real path while argv[1] keeps the
113
+ // symlink path. Compare realpaths so the entry guard still fires
114
+ // (without this the CLI silently no-ops when run through a symlink).
115
+ try {
116
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
117
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
118
+ return here === argv;
119
+ } catch {
120
+ return false;
121
+ }
122
+ }
123
+
124
+ if (_isCliEntry() || process.argv[1] === _HERE) {
106
125
  process.exit(main());
107
126
  }
108
127
 
@@ -132,10 +132,29 @@ function main(argv?: readonly string[]): number {
132
132
  return 0;
133
133
  }
134
134
 
135
- const _isCliEntry =
136
- process.argv[1] !== undefined &&
137
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
138
- if (_isCliEntry || process.argv[1] === _HERE) {
135
+ function _isCliEntry(): boolean {
136
+ if (process.argv[1] === undefined) {
137
+ return false;
138
+ }
139
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
140
+ if (import.meta.url === argvUrl) {
141
+ return true;
142
+ }
143
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
144
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
145
+ // import.meta.url is the resolved real path while argv[1] keeps the
146
+ // symlink path. Compare realpaths so the entry guard still fires
147
+ // (without this the CLI silently no-ops when run through a symlink).
148
+ try {
149
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
150
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
151
+ return here === argv;
152
+ } catch {
153
+ return false;
154
+ }
155
+ }
156
+
157
+ if (_isCliEntry() || process.argv[1] === _HERE) {
139
158
  process.exit(main());
140
159
  }
141
160
 
@@ -117,10 +117,29 @@ function main(argv?: readonly string[]): number {
117
117
  return 0;
118
118
  }
119
119
 
120
- const _isCliEntry =
121
- process.argv[1] !== undefined &&
122
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
123
- if (_isCliEntry || process.argv[1] === _HERE) {
120
+ function _isCliEntry(): boolean {
121
+ if (process.argv[1] === undefined) {
122
+ return false;
123
+ }
124
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
125
+ if (import.meta.url === argvUrl) {
126
+ return true;
127
+ }
128
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
129
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
130
+ // import.meta.url is the resolved real path while argv[1] keeps the
131
+ // symlink path. Compare realpaths so the entry guard still fires
132
+ // (without this the CLI silently no-ops when run through a symlink).
133
+ try {
134
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
135
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
136
+ return here === argv;
137
+ } catch {
138
+ return false;
139
+ }
140
+ }
141
+
142
+ if (_isCliEntry() || process.argv[1] === _HERE) {
124
143
  process.exit(main());
125
144
  }
126
145
 
@@ -284,10 +284,29 @@ export function main(argv?: readonly string[]): number {
284
284
  }
285
285
 
286
286
  const _HERE = fileURLToPath(import.meta.url);
287
- const _isCliEntry =
288
- process.argv[1] !== undefined &&
289
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
290
- if (_isCliEntry || process.argv[1] === _HERE) {
287
+ function _isCliEntry(): boolean {
288
+ if (process.argv[1] === undefined) {
289
+ return false;
290
+ }
291
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
292
+ if (import.meta.url === argvUrl) {
293
+ return true;
294
+ }
295
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
296
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
297
+ // import.meta.url is the resolved real path while argv[1] keeps the
298
+ // symlink path. Compare realpaths so the entry guard still fires
299
+ // (without this the CLI silently no-ops when run through a symlink).
300
+ try {
301
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
302
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
303
+ return here === argv;
304
+ } catch {
305
+ return false;
306
+ }
307
+ }
308
+
309
+ if (_isCliEntry() || process.argv[1] === _HERE) {
291
310
  try {
292
311
  process.exit(main());
293
312
  } catch (exc) {
@@ -232,10 +232,29 @@ export function main(argv?: readonly string[]): number {
232
232
  }
233
233
 
234
234
  const _HERE = fileURLToPath(import.meta.url);
235
- const _isCliEntry =
236
- process.argv[1] !== undefined &&
237
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
238
- if (_isCliEntry || process.argv[1] === _HERE) {
235
+ function _isCliEntry(): boolean {
236
+ if (process.argv[1] === undefined) {
237
+ return false;
238
+ }
239
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
240
+ if (import.meta.url === argvUrl) {
241
+ return true;
242
+ }
243
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
244
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
245
+ // import.meta.url is the resolved real path while argv[1] keeps the
246
+ // symlink path. Compare realpaths so the entry guard still fires
247
+ // (without this the CLI silently no-ops when run through a symlink).
248
+ try {
249
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
250
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
251
+ return here === argv;
252
+ } catch {
253
+ return false;
254
+ }
255
+ }
256
+
257
+ if (_isCliEntry() || process.argv[1] === _HERE) {
239
258
  process.exit(main());
240
259
  }
241
260
 
@@ -750,8 +750,30 @@ function _printHelp(): void {
750
750
  process.stdout.write(`${DESCRIPTION}\n`);
751
751
  }
752
752
 
753
+ function _isCliEntry(): boolean {
754
+ if (process.argv[1] === undefined) {
755
+ return false;
756
+ }
757
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
758
+ if (import.meta.url === argvUrl) {
759
+ return true;
760
+ }
761
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
762
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
763
+ // import.meta.url is the resolved real path while argv[1] keeps the
764
+ // symlink path. Compare realpaths so the entry guard still fires
765
+ // (without this the CLI silently no-ops when run through a symlink).
766
+ try {
767
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
768
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
769
+ return here === argv;
770
+ } catch {
771
+ return false;
772
+ }
773
+ }
774
+
753
775
  const _isMain =
754
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href;
776
+ _isCliEntry();
755
777
  if (_isMain) {
756
778
  process.exit(main());
757
779
  }
@@ -277,10 +277,29 @@ export function main(argv?: readonly string[]): number {
277
277
  }
278
278
 
279
279
  const _HERE = fileURLToPath(import.meta.url);
280
- const _isCliEntry =
281
- process.argv[1] !== undefined &&
282
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
283
- if (_isCliEntry || process.argv[1] === _HERE) {
280
+ function _isCliEntry(): boolean {
281
+ if (process.argv[1] === undefined) {
282
+ return false;
283
+ }
284
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
285
+ if (import.meta.url === argvUrl) {
286
+ return true;
287
+ }
288
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
289
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
290
+ // import.meta.url is the resolved real path while argv[1] keeps the
291
+ // symlink path. Compare realpaths so the entry guard still fires
292
+ // (without this the CLI silently no-ops when run through a symlink).
293
+ try {
294
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
295
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
296
+ return here === argv;
297
+ } catch {
298
+ return false;
299
+ }
300
+ }
301
+
302
+ if (_isCliEntry() || process.argv[1] === _HERE) {
284
303
  try {
285
304
  process.exit(main());
286
305
  } catch (exc) {
@@ -18,6 +18,7 @@
18
18
  */
19
19
  import { spawnSync } from 'node:child_process';
20
20
  import * as path from 'node:path';
21
+ import * as fs from 'node:fs';
21
22
  import { fileURLToPath, pathToFileURL } from 'node:url';
22
23
 
23
24
  const _FILE = fileURLToPath(import.meta.url);
@@ -86,6 +87,28 @@ export function main(argv: string[] = process.argv.slice(2)): number {
86
87
  return 1;
87
88
  }
88
89
 
90
+ function _isCliEntry(): boolean {
91
+ if (process.argv[1] === undefined) {
92
+ return false;
93
+ }
94
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
95
+ if (import.meta.url === argvUrl) {
96
+ return true;
97
+ }
98
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
99
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
100
+ // import.meta.url is the resolved real path while argv[1] keeps the
101
+ // symlink path. Compare realpaths so the entry guard still fires
102
+ // (without this the CLI silently no-ops when run through a symlink).
103
+ try {
104
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
105
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
106
+ return here === argv;
107
+ } catch {
108
+ return false;
109
+ }
110
+ }
111
+
89
112
  const _isCli =
90
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
113
+ _isCliEntry();
91
114
  if (_isCli) process.exit(main());