@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
@@ -386,9 +386,28 @@ export function main(argv: string[]): number {
386
386
  return 0;
387
387
  }
388
388
 
389
- const _isCliEntry =
390
- process.argv[1] !== undefined &&
391
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
392
- if (_isCliEntry || process.argv[1] === _HERE) {
389
+ function _isCliEntry(): boolean {
390
+ if (process.argv[1] === undefined) {
391
+ return false;
392
+ }
393
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
394
+ if (import.meta.url === argvUrl) {
395
+ return true;
396
+ }
397
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
398
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
399
+ // import.meta.url is the resolved real path while argv[1] keeps the
400
+ // symlink path. Compare realpaths so the entry guard still fires
401
+ // (without this the CLI silently no-ops when run through a symlink).
402
+ try {
403
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
404
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
405
+ return here === argv;
406
+ } catch {
407
+ return false;
408
+ }
409
+ }
410
+
411
+ if (_isCliEntry() || process.argv[1] === _HERE) {
393
412
  process.exitCode = main(process.argv.slice(2));
394
413
  }
@@ -557,7 +557,29 @@ function _pyStrCmp(a: string, b: string): number {
557
557
  return ca.length - cb.length;
558
558
  }
559
559
 
560
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
560
+ function _isCliEntry(): boolean {
561
+ if (process.argv[1] === undefined) {
562
+ return false;
563
+ }
564
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
565
+ if (import.meta.url === argvUrl) {
566
+ return true;
567
+ }
568
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
569
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
570
+ // import.meta.url is the resolved real path while argv[1] keeps the
571
+ // symlink path. Compare realpaths so the entry guard still fires
572
+ // (without this the CLI silently no-ops when run through a symlink).
573
+ try {
574
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
575
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
576
+ return here === argv;
577
+ } catch {
578
+ return false;
579
+ }
580
+ }
581
+
582
+ if (_isCliEntry()) {
561
583
  try {
562
584
  process.exitCode = main();
563
585
  } catch (e) {
@@ -27,7 +27,7 @@
27
27
 
28
28
  import * as fs from 'node:fs';
29
29
  import * as path from 'node:path';
30
- import { pathToFileURL } from 'node:url';
30
+ import { fileURLToPath, pathToFileURL } from 'node:url';
31
31
 
32
32
  import * as sl from './_lib/security_lint.js';
33
33
  import { _scan as _scanHiddenUnicode } from './lint_hidden_unicode.js';
@@ -412,10 +412,29 @@ export function main(argv: readonly string[] | null = null): number {
412
412
  return 0;
413
413
  }
414
414
 
415
- const _isCliEntry =
416
- process.argv[1] !== undefined &&
417
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
418
- if (_isCliEntry) {
415
+ function _isCliEntry(): boolean {
416
+ if (process.argv[1] === undefined) {
417
+ return false;
418
+ }
419
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
420
+ if (import.meta.url === argvUrl) {
421
+ return true;
422
+ }
423
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
424
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
425
+ // import.meta.url is the resolved real path while argv[1] keeps the
426
+ // symlink path. Compare realpaths so the entry guard still fires
427
+ // (without this the CLI silently no-ops when run through a symlink).
428
+ try {
429
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
430
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
431
+ return here === argv;
432
+ } catch {
433
+ return false;
434
+ }
435
+ }
436
+
437
+ if (_isCliEntry()) {
419
438
  process.exitCode = main();
420
439
  }
421
440
 
@@ -440,9 +440,28 @@ function _dumpString(s: string): string {
440
440
  return out + '"';
441
441
  }
442
442
 
443
- const _isCliEntry =
444
- process.argv[1] !== undefined &&
445
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
446
- if (_isCliEntry || process.argv[1] === _HERE) {
443
+ function _isCliEntry(): boolean {
444
+ if (process.argv[1] === undefined) {
445
+ return false;
446
+ }
447
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
448
+ if (import.meta.url === argvUrl) {
449
+ return true;
450
+ }
451
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
452
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
453
+ // import.meta.url is the resolved real path while argv[1] keeps the
454
+ // symlink path. Compare realpaths so the entry guard still fires
455
+ // (without this the CLI silently no-ops when run through a symlink).
456
+ try {
457
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
458
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
459
+ return here === argv;
460
+ } catch {
461
+ return false;
462
+ }
463
+ }
464
+
465
+ if (_isCliEntry() || process.argv[1] === _HERE) {
447
466
  process.exitCode = main();
448
467
  }
@@ -682,9 +682,28 @@ function _dumpString(s: string): string {
682
682
  return out + '"';
683
683
  }
684
684
 
685
- const _isCliEntry =
686
- process.argv[1] !== undefined &&
687
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
688
- if (_isCliEntry || process.argv[1] === _HERE) {
685
+ function _isCliEntry(): boolean {
686
+ if (process.argv[1] === undefined) {
687
+ return false;
688
+ }
689
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
690
+ if (import.meta.url === argvUrl) {
691
+ return true;
692
+ }
693
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
694
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
695
+ // import.meta.url is the resolved real path while argv[1] keeps the
696
+ // symlink path. Compare realpaths so the entry guard still fires
697
+ // (without this the CLI silently no-ops when run through a symlink).
698
+ try {
699
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
700
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
701
+ return here === argv;
702
+ } catch {
703
+ return false;
704
+ }
705
+ }
706
+
707
+ if (_isCliEntry() || process.argv[1] === _HERE) {
689
708
  process.exitCode = main();
690
709
  }
@@ -4284,9 +4284,30 @@ function jsonIndent2(payload: unknown): string {
4284
4284
  }
4285
4285
 
4286
4286
  // CLI entry — only when executed directly, not when imported by tests.
4287
+ function _isCliEntry(): boolean {
4288
+ if (process.argv[1] === undefined) {
4289
+ return false;
4290
+ }
4291
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
4292
+ if (import.meta.url === argvUrl) {
4293
+ return true;
4294
+ }
4295
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
4296
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
4297
+ // import.meta.url is the resolved real path while argv[1] keeps the
4298
+ // symlink path. Compare realpaths so the entry guard still fires
4299
+ // (without this the CLI silently no-ops when run through a symlink).
4300
+ try {
4301
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
4302
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
4303
+ return here === argv;
4304
+ } catch {
4305
+ return false;
4306
+ }
4307
+ }
4308
+
4287
4309
  const isCliEntry =
4288
- process.argv[1] !== undefined &&
4289
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
4310
+ _isCliEntry();
4290
4311
  if (isCliEntry) {
4291
4312
  // Set exitCode rather than calling process.exit() so a large stdout write
4292
4313
  // to a pipe is fully flushed before the process terminates — process.exit()
@@ -540,9 +540,28 @@ export function main(argv: string[] | null = null): number {
540
540
  return 0;
541
541
  }
542
542
 
543
- const _isCliEntry =
544
- process.argv[1] !== undefined &&
545
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
546
- if (_isCliEntry) {
543
+ function _isCliEntry(): boolean {
544
+ if (process.argv[1] === undefined) {
545
+ return false;
546
+ }
547
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
548
+ if (import.meta.url === argvUrl) {
549
+ return true;
550
+ }
551
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
552
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
553
+ // import.meta.url is the resolved real path while argv[1] keeps the
554
+ // symlink path. Compare realpaths so the entry guard still fires
555
+ // (without this the CLI silently no-ops when run through a symlink).
556
+ try {
557
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
558
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
559
+ return here === argv;
560
+ } catch {
561
+ return false;
562
+ }
563
+ }
564
+
565
+ if (_isCliEntry()) {
547
566
  process.exit(main());
548
567
  }
@@ -421,7 +421,29 @@ export function main(argv: string[] | null = null): number {
421
421
  return 0;
422
422
  }
423
423
 
424
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
424
+ function _isCliEntry(): boolean {
425
+ if (process.argv[1] === undefined) {
426
+ return false;
427
+ }
428
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
429
+ if (import.meta.url === argvUrl) {
430
+ return true;
431
+ }
432
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
433
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
434
+ // import.meta.url is the resolved real path while argv[1] keeps the
435
+ // symlink path. Compare realpaths so the entry guard still fires
436
+ // (without this the CLI silently no-ops when run through a symlink).
437
+ try {
438
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
439
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
440
+ return here === argv;
441
+ } catch {
442
+ return false;
443
+ }
444
+ }
445
+
446
+ const _isMain = _isCliEntry();
425
447
  if (_isMain) {
426
448
  process.exitCode = main();
427
449
  }
@@ -501,7 +501,29 @@ export function main(argv: string[] | null = null): number {
501
501
  return 0;
502
502
  }
503
503
 
504
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
504
+ function _isCliEntry(): boolean {
505
+ if (process.argv[1] === undefined) {
506
+ return false;
507
+ }
508
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
509
+ if (import.meta.url === argvUrl) {
510
+ return true;
511
+ }
512
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
513
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
514
+ // import.meta.url is the resolved real path while argv[1] keeps the
515
+ // symlink path. Compare realpaths so the entry guard still fires
516
+ // (without this the CLI silently no-ops when run through a symlink).
517
+ try {
518
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
519
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
520
+ return here === argv;
521
+ } catch {
522
+ return false;
523
+ }
524
+ }
525
+
526
+ const _isMain = _isCliEntry();
505
527
  if (_isMain) {
506
528
  process.exitCode = main();
507
529
  }
@@ -367,7 +367,29 @@ export function main(argv: string[] | null = null): number {
367
367
  return report.pilot_passed ? 0 : 1;
368
368
  }
369
369
 
370
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
370
+ function _isCliEntry(): boolean {
371
+ if (process.argv[1] === undefined) {
372
+ return false;
373
+ }
374
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
375
+ if (import.meta.url === argvUrl) {
376
+ return true;
377
+ }
378
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
379
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
380
+ // import.meta.url is the resolved real path while argv[1] keeps the
381
+ // symlink path. Compare realpaths so the entry guard still fires
382
+ // (without this the CLI silently no-ops when run through a symlink).
383
+ try {
384
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
385
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
386
+ return here === argv;
387
+ } catch {
388
+ return false;
389
+ }
390
+ }
391
+
392
+ const _isMain = _isCliEntry();
371
393
  if (_isMain) {
372
394
  process.exitCode = main();
373
395
  }
@@ -469,7 +469,29 @@ export function main(argv: string[] | null = null): number {
469
469
  return 0;
470
470
  }
471
471
 
472
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
472
+ function _isCliEntry(): boolean {
473
+ if (process.argv[1] === undefined) {
474
+ return false;
475
+ }
476
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
477
+ if (import.meta.url === argvUrl) {
478
+ return true;
479
+ }
480
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
481
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
482
+ // import.meta.url is the resolved real path while argv[1] keeps the
483
+ // symlink path. Compare realpaths so the entry guard still fires
484
+ // (without this the CLI silently no-ops when run through a symlink).
485
+ try {
486
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
487
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
488
+ return here === argv;
489
+ } catch {
490
+ return false;
491
+ }
492
+ }
493
+
494
+ const _isMain = _isCliEntry();
473
495
  if (_isMain) {
474
496
  process.exitCode = main();
475
497
  }
@@ -25,6 +25,7 @@
25
25
  * No behaviour changes — latent Python quirks replicated.
26
26
  */
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
  import { audit, type PersonaRow } from './audit_persona_coverage.js';
@@ -282,7 +283,29 @@ export function main(argv: string[] | null = null): number {
282
283
  return 0;
283
284
  }
284
285
 
285
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
286
+ function _isCliEntry(): boolean {
287
+ if (process.argv[1] === undefined) {
288
+ return false;
289
+ }
290
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
291
+ if (import.meta.url === argvUrl) {
292
+ return true;
293
+ }
294
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
295
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
296
+ // import.meta.url is the resolved real path while argv[1] keeps the
297
+ // symlink path. Compare realpaths so the entry guard still fires
298
+ // (without this the CLI silently no-ops when run through a symlink).
299
+ try {
300
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
301
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
302
+ return here === argv;
303
+ } catch {
304
+ return false;
305
+ }
306
+ }
307
+
308
+ const _isMain = _isCliEntry();
286
309
  if (_isMain) {
287
310
  process.exitCode = main();
288
311
  }
@@ -457,9 +457,28 @@ export function main(argv: string[] | null = null): number {
457
457
  return 0;
458
458
  }
459
459
 
460
- const _isCliEntry =
461
- process.argv[1] !== undefined &&
462
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
463
- if (_isCliEntry || process.argv[1] === _HERE) {
460
+ function _isCliEntry(): boolean {
461
+ if (process.argv[1] === undefined) {
462
+ return false;
463
+ }
464
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
465
+ if (import.meta.url === argvUrl) {
466
+ return true;
467
+ }
468
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
469
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
470
+ // import.meta.url is the resolved real path while argv[1] keeps the
471
+ // symlink path. Compare realpaths so the entry guard still fires
472
+ // (without this the CLI silently no-ops when run through a symlink).
473
+ try {
474
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
475
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
476
+ return here === argv;
477
+ } catch {
478
+ return false;
479
+ }
480
+ }
481
+
482
+ if (_isCliEntry() || process.argv[1] === _HERE) {
464
483
  process.exit(main());
465
484
  }
@@ -186,9 +186,28 @@ export function main(): number {
186
186
  return 0;
187
187
  }
188
188
 
189
- const _isCliEntry =
190
- process.argv[1] !== undefined &&
191
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
192
- if (_isCliEntry || process.argv[1] === _HERE) {
189
+ function _isCliEntry(): boolean {
190
+ if (process.argv[1] === undefined) {
191
+ return false;
192
+ }
193
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
194
+ if (import.meta.url === argvUrl) {
195
+ return true;
196
+ }
197
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
198
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
199
+ // import.meta.url is the resolved real path while argv[1] keeps the
200
+ // symlink path. Compare realpaths so the entry guard still fires
201
+ // (without this the CLI silently no-ops when run through a symlink).
202
+ try {
203
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
204
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
205
+ return here === argv;
206
+ } catch {
207
+ return false;
208
+ }
209
+ }
210
+
211
+ if (_isCliEntry() || process.argv[1] === _HERE) {
193
212
  process.exitCode = main();
194
213
  }
@@ -216,9 +216,28 @@ export function main(): number {
216
216
  return 0;
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.exitCode = main();
224
243
  }
@@ -367,9 +367,28 @@ function _pyListRepr(items: string[]): string {
367
367
  return '[' + items.map((s) => `'${s}'`).join(', ') + ']';
368
368
  }
369
369
 
370
- const _isCliEntry =
371
- process.argv[1] !== undefined &&
372
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
373
- if (_isCliEntry || process.argv[1] === _HERE) {
370
+ function _isCliEntry(): boolean {
371
+ if (process.argv[1] === undefined) {
372
+ return false;
373
+ }
374
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
375
+ if (import.meta.url === argvUrl) {
376
+ return true;
377
+ }
378
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
379
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
380
+ // import.meta.url is the resolved real path while argv[1] keeps the
381
+ // symlink path. Compare realpaths so the entry guard still fires
382
+ // (without this the CLI silently no-ops when run through a symlink).
383
+ try {
384
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
385
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
386
+ return here === argv;
387
+ } catch {
388
+ return false;
389
+ }
390
+ }
391
+
392
+ if (_isCliEntry() || process.argv[1] === _HERE) {
374
393
  process.exit(main());
375
394
  }
@@ -239,9 +239,28 @@ export function main(): number {
239
239
  return 0;
240
240
  }
241
241
 
242
- const _isCliEntry =
243
- process.argv[1] !== undefined &&
244
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
245
- if (_isCliEntry || process.argv[1] === _HERE) {
242
+ function _isCliEntry(): boolean {
243
+ if (process.argv[1] === undefined) {
244
+ return false;
245
+ }
246
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
247
+ if (import.meta.url === argvUrl) {
248
+ return true;
249
+ }
250
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
251
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
252
+ // import.meta.url is the resolved real path while argv[1] keeps the
253
+ // symlink path. Compare realpaths so the entry guard still fires
254
+ // (without this the CLI silently no-ops when run through a symlink).
255
+ try {
256
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
257
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
258
+ return here === argv;
259
+ } catch {
260
+ return false;
261
+ }
262
+ }
263
+
264
+ if (_isCliEntry() || process.argv[1] === _HERE) {
246
265
  process.exitCode = main();
247
266
  }
@@ -755,9 +755,28 @@ export function main(argv: readonly string[] = process.argv.slice(2)): number {
755
755
  return 0;
756
756
  }
757
757
 
758
- const _isCliEntry =
759
- process.argv[1] !== undefined &&
760
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
761
- if (_isCliEntry || process.argv[1] === _HERE) {
758
+ function _isCliEntry(): boolean {
759
+ if (process.argv[1] === undefined) {
760
+ return false;
761
+ }
762
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
763
+ if (import.meta.url === argvUrl) {
764
+ return true;
765
+ }
766
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
767
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
768
+ // import.meta.url is the resolved real path while argv[1] keeps the
769
+ // symlink path. Compare realpaths so the entry guard still fires
770
+ // (without this the CLI silently no-ops when run through a symlink).
771
+ try {
772
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
773
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
774
+ return here === argv;
775
+ } catch {
776
+ return false;
777
+ }
778
+ }
779
+
780
+ if (_isCliEntry() || process.argv[1] === _HERE) {
762
781
  process.exit(main());
763
782
  }
@@ -533,10 +533,29 @@ export function unified_diff(
533
533
  return out;
534
534
  }
535
535
 
536
- const _isCliEntry =
537
- process.argv[1] !== undefined &&
538
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
539
- if (_isCliEntry || process.argv[1] === _HERE) {
536
+ function _isCliEntry(): boolean {
537
+ if (process.argv[1] === undefined) {
538
+ return false;
539
+ }
540
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
541
+ if (import.meta.url === argvUrl) {
542
+ return true;
543
+ }
544
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
545
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
546
+ // import.meta.url is the resolved real path while argv[1] keeps the
547
+ // symlink path. Compare realpaths so the entry guard still fires
548
+ // (without this the CLI silently no-ops when run through a symlink).
549
+ try {
550
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
551
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
552
+ return here === argv;
553
+ } catch {
554
+ return false;
555
+ }
556
+ }
557
+
558
+ if (_isCliEntry() || process.argv[1] === _HERE) {
540
559
  main(process.argv.slice(2)).then(
541
560
  (code) => process.exit(code),
542
561
  (exc: unknown) => {