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