@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
@@ -50,7 +50,7 @@ import { spawnSync } from 'node:child_process';
50
50
  import * as fs from 'node:fs';
51
51
  import * as path from 'node:path';
52
52
  import process from 'node:process';
53
- import { pathToFileURL } from 'node:url';
53
+ import { fileURLToPath, pathToFileURL } from 'node:url';
54
54
  import YAML, { parseDocument } from 'yaml';
55
55
 
56
56
  type Severity = 'error' | 'warning' | 'info';
@@ -836,8 +836,30 @@ function _emit(findings: Finding[], fmt: string): number {
836
836
  return errors.length > 0 ? 1 : 0;
837
837
  }
838
838
 
839
+ function _isCliEntry(): boolean {
840
+ if (process.argv[1] === undefined) {
841
+ return false;
842
+ }
843
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
844
+ if (import.meta.url === argvUrl) {
845
+ return true;
846
+ }
847
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
848
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
849
+ // import.meta.url is the resolved real path while argv[1] keeps the
850
+ // symlink path. Compare realpaths so the entry guard still fires
851
+ // (without this the CLI silently no-ops when run through a symlink).
852
+ try {
853
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
854
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
855
+ return here === argv;
856
+ } catch {
857
+ return false;
858
+ }
859
+ }
860
+
839
861
  const _isMain =
840
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href;
862
+ _isCliEntry();
841
863
  if (_isMain) {
842
864
  process.exit(main());
843
865
  }
@@ -332,10 +332,29 @@ function _set_intake_root_for_test(root: string): void {
332
332
  INTAKE_ROOT = root;
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());
340
359
  }
341
360
 
@@ -217,10 +217,29 @@ function main(): number {
217
217
  return 2;
218
218
  }
219
219
 
220
- const _isCliEntry =
221
- process.argv[1] !== undefined &&
222
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
223
- if (_isCliEntry || process.argv[1] === _HERE) {
220
+ function _isCliEntry(): boolean {
221
+ if (process.argv[1] === undefined) {
222
+ return false;
223
+ }
224
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
225
+ if (import.meta.url === argvUrl) {
226
+ return true;
227
+ }
228
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
229
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
230
+ // import.meta.url is the resolved real path while argv[1] keeps the
231
+ // symlink path. Compare realpaths so the entry guard still fires
232
+ // (without this the CLI silently no-ops when run through a symlink).
233
+ try {
234
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
235
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
236
+ return here === argv;
237
+ } catch {
238
+ return false;
239
+ }
240
+ }
241
+
242
+ if (_isCliEntry() || process.argv[1] === _HERE) {
224
243
  process.exit(main());
225
244
  }
226
245
 
@@ -270,10 +270,29 @@ function _isFile(p: string): boolean {
270
270
  }
271
271
  }
272
272
 
273
- const _isCliEntry =
274
- process.argv[1] !== undefined &&
275
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
276
- if (_isCliEntry || process.argv[1] === _HERE) {
273
+ function _isCliEntry(): boolean {
274
+ if (process.argv[1] === undefined) {
275
+ return false;
276
+ }
277
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
278
+ if (import.meta.url === argvUrl) {
279
+ return true;
280
+ }
281
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
282
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
283
+ // import.meta.url is the resolved real path while argv[1] keeps the
284
+ // symlink path. Compare realpaths so the entry guard still fires
285
+ // (without this the CLI silently no-ops when run through a symlink).
286
+ try {
287
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
288
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
289
+ return here === argv;
290
+ } catch {
291
+ return false;
292
+ }
293
+ }
294
+
295
+ if (_isCliEntry() || process.argv[1] === _HERE) {
277
296
  try {
278
297
  process.exit(main());
279
298
  } catch (exc) {
@@ -329,10 +329,29 @@ function main(argv: readonly string[]): number {
329
329
  return hits.length > 0 ? 1 : 0;
330
330
  }
331
331
 
332
- const _isCliEntry =
333
- process.argv[1] !== undefined &&
334
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
335
- if (_isCliEntry) {
332
+ function _isCliEntry(): boolean {
333
+ if (process.argv[1] === undefined) {
334
+ return false;
335
+ }
336
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
337
+ if (import.meta.url === argvUrl) {
338
+ return true;
339
+ }
340
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
341
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
342
+ // import.meta.url is the resolved real path while argv[1] keeps the
343
+ // symlink path. Compare realpaths so the entry guard still fires
344
+ // (without this the CLI silently no-ops when run through a symlink).
345
+ try {
346
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
347
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
348
+ return here === argv;
349
+ } catch {
350
+ return false;
351
+ }
352
+ }
353
+
354
+ if (_isCliEntry()) {
336
355
  try {
337
356
  process.exit(main(process.argv.slice(2)));
338
357
  } 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 _HERE = fileURLToPath(import.meta.url);
@@ -59,10 +60,29 @@ function main(): number {
59
60
  return 1;
60
61
  }
61
62
 
62
- const _isCliEntry =
63
- process.argv[1] !== undefined &&
64
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
65
- if (_isCliEntry || process.argv[1] === _HERE) {
63
+ function _isCliEntry(): boolean {
64
+ if (process.argv[1] === undefined) {
65
+ return false;
66
+ }
67
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
68
+ if (import.meta.url === argvUrl) {
69
+ return true;
70
+ }
71
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
72
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
73
+ // import.meta.url is the resolved real path while argv[1] keeps the
74
+ // symlink path. Compare realpaths so the entry guard still fires
75
+ // (without this the CLI silently no-ops when run through a symlink).
76
+ try {
77
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
78
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
79
+ return here === argv;
80
+ } catch {
81
+ return false;
82
+ }
83
+ }
84
+
85
+ if (_isCliEntry() || process.argv[1] === _HERE) {
66
86
  process.exit(main());
67
87
  }
68
88
 
@@ -178,10 +178,29 @@ function main(): number {
178
178
  }
179
179
 
180
180
  const _HERE = fileURLToPath(import.meta.url);
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
  process.exit(main());
186
205
  }
187
206
 
@@ -284,10 +284,29 @@ function main(): number {
284
284
  return violations.length ? 1 : 0;
285
285
  }
286
286
 
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
  process.exit(main());
292
311
  }
293
312
 
@@ -155,10 +155,29 @@ export function main(argv?: readonly string[]): number {
155
155
  return 0;
156
156
  }
157
157
 
158
- const _isCliEntry =
159
- process.argv[1] !== undefined &&
160
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
161
- if (_isCliEntry || process.argv[1] === _HERE) {
158
+ function _isCliEntry(): boolean {
159
+ if (process.argv[1] === undefined) {
160
+ return false;
161
+ }
162
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
163
+ if (import.meta.url === argvUrl) {
164
+ return true;
165
+ }
166
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
167
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
168
+ // import.meta.url is the resolved real path while argv[1] keeps the
169
+ // symlink path. Compare realpaths so the entry guard still fires
170
+ // (without this the CLI silently no-ops when run through a symlink).
171
+ try {
172
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
173
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
174
+ return here === argv;
175
+ } catch {
176
+ return false;
177
+ }
178
+ }
179
+
180
+ if (_isCliEntry() || process.argv[1] === _HERE) {
162
181
  process.exit(main());
163
182
  }
164
183
 
@@ -178,10 +178,29 @@ function _setEq(a: ReadonlySet<string>, b: ReadonlySet<string>): boolean {
178
178
  return true;
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
  process.exit(main());
186
205
  }
187
206
 
@@ -20,7 +20,7 @@ import { execFileSync } from 'node:child_process';
20
20
  import * as fs from 'node:fs';
21
21
  import * as path from 'node:path';
22
22
  import process from 'node:process';
23
- import { pathToFileURL } from 'node:url';
23
+ import { fileURLToPath, pathToFileURL } from 'node:url';
24
24
 
25
25
  type Severity = 'error' | 'warning';
26
26
 
@@ -836,9 +836,30 @@ function main(): number {
836
836
  }
837
837
 
838
838
  // Run the CLI only when executed directly, not when imported by tests.
839
+ function _isCliEntry(): boolean {
840
+ if (process.argv[1] === undefined) {
841
+ return false;
842
+ }
843
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
844
+ if (import.meta.url === argvUrl) {
845
+ return true;
846
+ }
847
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
848
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
849
+ // import.meta.url is the resolved real path while argv[1] keeps the
850
+ // symlink path. Compare realpaths so the entry guard still fires
851
+ // (without this the CLI silently no-ops when run through a symlink).
852
+ try {
853
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
854
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
855
+ return here === argv;
856
+ } catch {
857
+ return false;
858
+ }
859
+ }
860
+
839
861
  const isCliEntry =
840
- process.argv[1] !== undefined &&
841
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
862
+ _isCliEntry();
842
863
  if (isCliEntry) {
843
864
  process.exit(main());
844
865
  }
Binary file
@@ -184,10 +184,29 @@ function main(): number {
184
184
  return 1;
185
185
  }
186
186
 
187
- const _isCliEntry =
188
- process.argv[1] !== undefined &&
189
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
190
- if (_isCliEntry || process.argv[1] === _HERE) {
187
+ function _isCliEntry(): boolean {
188
+ if (process.argv[1] === undefined) {
189
+ return false;
190
+ }
191
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
192
+ if (import.meta.url === argvUrl) {
193
+ return true;
194
+ }
195
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
196
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
197
+ // import.meta.url is the resolved real path while argv[1] keeps the
198
+ // symlink path. Compare realpaths so the entry guard still fires
199
+ // (without this the CLI silently no-ops when run through a symlink).
200
+ try {
201
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
202
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
203
+ return here === argv;
204
+ } catch {
205
+ return false;
206
+ }
207
+ }
208
+
209
+ if (_isCliEntry() || process.argv[1] === _HERE) {
191
210
  process.exit(main());
192
211
  }
193
212
 
@@ -330,10 +330,29 @@ function main(): number {
330
330
  return 0;
331
331
  }
332
332
 
333
- const _isCliEntry =
334
- process.argv[1] !== undefined &&
335
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
336
- if (_isCliEntry || process.argv[1] === _HERE) {
333
+ function _isCliEntry(): boolean {
334
+ if (process.argv[1] === undefined) {
335
+ return false;
336
+ }
337
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
338
+ if (import.meta.url === argvUrl) {
339
+ return true;
340
+ }
341
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
342
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
343
+ // import.meta.url is the resolved real path while argv[1] keeps the
344
+ // symlink path. Compare realpaths so the entry guard still fires
345
+ // (without this the CLI silently no-ops when run through a symlink).
346
+ try {
347
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
348
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
349
+ return here === argv;
350
+ } catch {
351
+ return false;
352
+ }
353
+ }
354
+
355
+ if (_isCliEntry() || process.argv[1] === _HERE) {
337
356
  try {
338
357
  process.exit(main());
339
358
  } catch (e) {
@@ -279,9 +279,30 @@ function main(argv: string[]): number {
279
279
  return code;
280
280
  }
281
281
 
282
+ function _isCliEntry(): boolean {
283
+ if (process.argv[1] === undefined) {
284
+ return false;
285
+ }
286
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
287
+ if (import.meta.url === argvUrl) {
288
+ return true;
289
+ }
290
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
291
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
292
+ // import.meta.url is the resolved real path while argv[1] keeps the
293
+ // symlink path. Compare realpaths so the entry guard still fires
294
+ // (without this the CLI silently no-ops when run through a symlink).
295
+ try {
296
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
297
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
298
+ return here === argv;
299
+ } catch {
300
+ return false;
301
+ }
302
+ }
303
+
282
304
  const _IS_MAIN =
283
- process.argv[1] !== undefined &&
284
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
305
+ _isCliEntry();
285
306
 
286
307
  if (_IS_MAIN) {
287
308
  process.exit(main(process.argv.slice(2)));
@@ -924,10 +924,29 @@ function main(): number {
924
924
  }
925
925
 
926
926
  const _HERE = fileURLToPath(import.meta.url);
927
- const _isCliEntry =
928
- process.argv[1] !== undefined &&
929
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
930
- if (_isCliEntry || process.argv[1] === _HERE) {
927
+ function _isCliEntry(): boolean {
928
+ if (process.argv[1] === undefined) {
929
+ return false;
930
+ }
931
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
932
+ if (import.meta.url === argvUrl) {
933
+ return true;
934
+ }
935
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
936
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
937
+ // import.meta.url is the resolved real path while argv[1] keeps the
938
+ // symlink path. Compare realpaths so the entry guard still fires
939
+ // (without this the CLI silently no-ops when run through a symlink).
940
+ try {
941
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
942
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
943
+ return here === argv;
944
+ } catch {
945
+ return false;
946
+ }
947
+ }
948
+
949
+ if (_isCliEntry() || process.argv[1] === _HERE) {
931
950
  process.exit(main());
932
951
  }
933
952
 
@@ -84,10 +84,29 @@ function main(): number {
84
84
  return 0;
85
85
  }
86
86
 
87
- const _isCliEntry =
88
- process.argv[1] !== undefined &&
89
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
90
- if (_isCliEntry || process.argv[1] === _HERE) {
87
+ function _isCliEntry(): boolean {
88
+ if (process.argv[1] === undefined) {
89
+ return false;
90
+ }
91
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
92
+ if (import.meta.url === argvUrl) {
93
+ return true;
94
+ }
95
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
96
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
97
+ // import.meta.url is the resolved real path while argv[1] keeps the
98
+ // symlink path. Compare realpaths so the entry guard still fires
99
+ // (without this the CLI silently no-ops when run through a symlink).
100
+ try {
101
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
102
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
103
+ return here === argv;
104
+ } catch {
105
+ return false;
106
+ }
107
+ }
108
+
109
+ if (_isCliEntry() || process.argv[1] === _HERE) {
91
110
  process.exit(main());
92
111
  }
93
112
 
@@ -216,10 +216,29 @@ function main(argv?: readonly string[]): number {
216
216
  return check(files);
217
217
  }
218
218
 
219
- const _isCliEntry =
220
- process.argv[1] !== undefined &&
221
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
222
- if (_isCliEntry || process.argv[1] === _HERE) {
219
+ function _isCliEntry(): boolean {
220
+ if (process.argv[1] === undefined) {
221
+ return false;
222
+ }
223
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
224
+ if (import.meta.url === argvUrl) {
225
+ return true;
226
+ }
227
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
228
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
229
+ // import.meta.url is the resolved real path while argv[1] keeps the
230
+ // symlink path. Compare realpaths so the entry guard still fires
231
+ // (without this the CLI silently no-ops when run through a symlink).
232
+ try {
233
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
234
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
235
+ return here === argv;
236
+ } catch {
237
+ return false;
238
+ }
239
+ }
240
+
241
+ if (_isCliEntry() || process.argv[1] === _HERE) {
223
242
  process.exit(main());
224
243
  }
225
244
 
@@ -211,10 +211,29 @@ function _pyRepr(s: string): string {
211
211
  return out + quote;
212
212
  }
213
213
 
214
- const _isCliEntry =
215
- process.argv[1] !== undefined &&
216
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
217
- if (_isCliEntry || process.argv[1] === _HERE) {
214
+ function _isCliEntry(): boolean {
215
+ if (process.argv[1] === undefined) {
216
+ return false;
217
+ }
218
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
219
+ if (import.meta.url === argvUrl) {
220
+ return true;
221
+ }
222
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
223
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
224
+ // import.meta.url is the resolved real path while argv[1] keeps the
225
+ // symlink path. Compare realpaths so the entry guard still fires
226
+ // (without this the CLI silently no-ops when run through a symlink).
227
+ try {
228
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
229
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
230
+ return here === argv;
231
+ } catch {
232
+ return false;
233
+ }
234
+ }
235
+
236
+ if (_isCliEntry() || process.argv[1] === _HERE) {
218
237
  process.exit(main(process.argv.slice(2)));
219
238
  }
220
239