@event4u/agent-config 8.1.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 (591) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +50 -297
  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/context-hygiene.md +2 -2
  58. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -1
  59. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  60. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +1 -1
  61. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +3 -3
  62. package/dist/agent-src/rules/media-governance-routing.md +1 -1
  63. package/dist/agent-src/rules/no-roadmap-references.md +3 -3
  64. package/dist/agent-src/rules/preservation-guard.md +2 -2
  65. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +6 -5
  66. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -3
  67. package/dist/agent-src/rules/security-sensitive-stop.md +7 -9
  68. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  69. package/dist/agent-src/rules/telegraph-speak.md +1 -1
  70. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  71. package/dist/agent-src/rules/ui-audit-gate.md +1 -1
  72. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +22 -4
  73. package/dist/agent-src/scripts/update_roadmap_progress.ts +29 -1
  74. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -2
  75. package/dist/agent-src/skills/adr-create/SKILL.md +8 -6
  76. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  77. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  78. package/dist/agent-src/skills/ai-council/SKILL.md +15 -15
  79. package/dist/agent-src/skills/api-design/SKILL.md +1 -1
  80. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -1
  81. package/dist/agent-src/skills/authz-review/SKILL.md +1 -1
  82. package/dist/agent-src/skills/blade-ui/SKILL.md +11 -10
  83. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +9 -8
  84. package/dist/agent-src/skills/code-review/SKILL.md +3 -4
  85. package/dist/agent-src/skills/command-routing/SKILL.md +3 -3
  86. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  87. package/dist/agent-src/skills/condense-memory/SKILL.md +2 -2
  88. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  89. package/dist/agent-src/skills/context-document/SKILL.md +1 -1
  90. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +1 -1
  91. package/dist/agent-src/skills/corpus-grounding/SKILL.md +16 -11
  92. package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +24 -3
  93. package/dist/agent-src/skills/dashboard-design/SKILL.md +2 -1
  94. package/dist/agent-src/skills/database/SKILL.md +2 -1
  95. package/dist/agent-src/skills/description-assist/SKILL.md +6 -6
  96. package/dist/agent-src/skills/design-intelligence/SKILL.md +6 -5
  97. package/dist/agent-src/skills/design-tokens/SKILL.md +5 -5
  98. package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +24 -3
  99. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +3 -3
  100. package/dist/agent-src/skills/fe-design/SKILL.md +7 -7
  101. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +11 -4
  102. package/dist/agent-src/skills/flux/SKILL.md +10 -9
  103. package/dist/agent-src/skills/git-workflow/SKILL.md +4 -5
  104. package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
  105. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +2 -2
  106. package/dist/agent-src/skills/livewire/SKILL.md +10 -9
  107. package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
  108. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +5 -5
  109. package/dist/agent-src/skills/module-management/SKILL.md +2 -2
  110. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +11 -11
  111. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +6 -6
  112. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +1 -1
  113. package/dist/agent-src/skills/premortem/SKILL.md +1 -1
  114. package/dist/agent-src/skills/project-docs/SKILL.md +1 -1
  115. package/dist/agent-src/skills/quality-tools/SKILL.md +26 -2
  116. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +8 -7
  117. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +31 -10
  118. package/dist/agent-src/skills/refine-prompt/SKILL.md +14 -14
  119. package/dist/agent-src/skills/refine-ticket/SKILL.md +24 -25
  120. package/dist/agent-src/skills/refine-ticket/detection-map.yml +1 -1
  121. package/dist/agent-src/skills/review-routing/SKILL.md +6 -7
  122. package/dist/agent-src/skills/roadmap-management/SKILL.md +11 -6
  123. package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
  124. package/dist/agent-src/skills/rule-writing/SKILL.md +5 -5
  125. package/dist/agent-src/skills/script-writing/SKILL.md +28 -41
  126. package/dist/agent-src/skills/skill-writing/SKILL.md +3 -3
  127. package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
  128. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -1
  129. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  130. package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -7
  131. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -2
  132. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +25 -4
  133. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  134. package/dist/agent-src/skills/typography-system/SKILL.md +1 -1
  135. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +5 -7
  136. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +13 -1
  137. package/dist/agent-src/templates/agent-settings.md +34 -25
  138. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  139. package/dist/agent-src/templates/agents/memory/incident-learnings.example.yml +1 -1
  140. package/dist/agent-src/templates/agents/proposal.example.md +4 -4
  141. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  142. package/dist/agent-src/templates/github-workflows/memory-hygiene.yml +10 -10
  143. package/dist/agent-src/templates/github-workflows/pr-risk-review.yml +19 -8
  144. package/dist/agent-src/templates/github-workflows/proposal-drift.yml +11 -8
  145. package/dist/agent-src/templates/github-workflows/roadmap-progress-check.yml +10 -12
  146. package/dist/agent-src/templates/hooks/pre-commit-frontmatter +21 -11
  147. package/dist/agent-src/templates/hooks/pre-commit-roadmap-progress +43 -29
  148. package/dist/agent-src/templates/roadmaps.md +9 -4
  149. package/dist/agent-src/templates/rule.md +3 -3
  150. package/dist/agent-src/templates/scripts/README.md +6 -6
  151. package/dist/agent-src/templates/scripts/check_memory.ts +24 -2
  152. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +23 -4
  153. package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +1 -1
  154. package/dist/agent-src/templates/scripts/memory_hash.ts +24 -2
  155. package/dist/agent-src/templates/scripts/memory_lookup.ts +24 -2
  156. package/dist/agent-src/templates/scripts/memory_report.ts +24 -2
  157. package/dist/agent-src/templates/scripts/memory_signal.ts +24 -2
  158. package/dist/agent-src/templates/scripts/memory_status.ts +26 -2
  159. package/dist/agent-src/templates/scripts/ownership-map.example.yml +1 -1
  160. package/dist/agent-src/templates/scripts/pr-risk-config.example.yml +1 -1
  161. package/dist/agent-src/templates/scripts/pr_review_routing.ts +24 -3
  162. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  163. package/dist/agent-src/templates/scripts/telemetry_record.ts +24 -3
  164. package/dist/agent-src/templates/scripts/telemetry_report.ts +25 -3
  165. package/dist/agent-src/templates/scripts/telemetry_status.ts +24 -3
  166. package/dist/agent-src/templates/scripts/tier_usage_report.ts +24 -2
  167. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +44 -10
  168. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +26 -13
  169. package/dist/agent-src/templates/skill.md +2 -2
  170. package/dist/cli/python/knowledge_ingest.js +24 -3
  171. package/dist/cli/python/knowledge_ingest.js.map +1 -1
  172. package/dist/cli/python/workspace_analytics.js +23 -3
  173. package/dist/cli/python/workspace_analytics.js.map +1 -1
  174. package/dist/cli/python/workspace_crypto.js +23 -3
  175. package/dist/cli/python/workspace_crypto.js.map +1 -1
  176. package/dist/cli/python/workspace_documents.js +23 -3
  177. package/dist/cli/python/workspace_documents.js.map +1 -1
  178. package/dist/cli/python/workspace_drive.js +24 -3
  179. package/dist/cli/python/workspace_drive.js.map +1 -1
  180. package/dist/cli/python/workspace_drive_health.js +23 -3
  181. package/dist/cli/python/workspace_drive_health.js.map +1 -1
  182. package/dist/cli/python/workspace_explain.js +23 -3
  183. package/dist/cli/python/workspace_explain.js.map +1 -1
  184. package/dist/cli/python/workspace_hosts.js +23 -3
  185. package/dist/cli/python/workspace_hosts.js.map +1 -1
  186. package/dist/cli/python/workspace_inbox.js +23 -3
  187. package/dist/cli/python/workspace_inbox.js.map +1 -1
  188. package/dist/cli/python/workspace_render.js +23 -3
  189. package/dist/cli/python/workspace_render.js.map +1 -1
  190. package/dist/cli/python/workspace_roles.js +23 -3
  191. package/dist/cli/python/workspace_roles.js.map +1 -1
  192. package/dist/cli/python/workspace_sessions.js +23 -3
  193. package/dist/cli/python/workspace_sessions.js.map +1 -1
  194. package/dist/cli/python/workspace_skills.js +23 -3
  195. package/dist/cli/python/workspace_skills.js.map +1 -1
  196. package/dist/cli/registry.js +2 -0
  197. package/dist/cli/registry.js.map +1 -1
  198. package/dist/discovery/deprecation-report.md +1 -1
  199. package/dist/discovery/discovery-manifest.json +118 -118
  200. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  201. package/dist/discovery/discovery-manifest.summary.md +2 -2
  202. package/dist/discovery/orphan-report.md +1 -1
  203. package/dist/discovery/packs.json +3 -3
  204. package/dist/discovery/trust-report.md +1 -1
  205. package/dist/discovery/workspaces.json +3 -3
  206. package/dist/install/install.mjs +67 -28
  207. package/dist/mcp/registry-manifest.json +2 -2
  208. package/dist/server/routes/settings.js +4 -4
  209. package/dist/server/routes/settings.js.map +1 -1
  210. package/dist/server/schemas/settings.js +1 -1
  211. package/dist/server/schemas/settings.js.map +1 -1
  212. package/docs/CLAIMS.md +2 -2
  213. package/docs/archive/CHANGELOG-pre-8.1.0.md +316 -0
  214. package/docs/benchmark.md +40 -0
  215. package/docs/contracts/skill-bundled-assets.md +2 -2
  216. package/docs/customization.md +1 -1
  217. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +9 -4
  218. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +2 -2
  219. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +4 -4
  220. package/docs/guidelines/agent-infra/installed-tools-manifest.md +3 -3
  221. package/docs/guidelines/agent-infra/language-and-tone-examples.md +2 -2
  222. package/docs/guidelines/agent-infra/layered-settings.md +4 -4
  223. package/docs/guidelines/agent-infra/memory-access.md +19 -18
  224. package/docs/guidelines/agent-infra/naming.md +1 -1
  225. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +5 -5
  226. package/docs/guidelines/agent-infra/role-contracts.md +1 -1
  227. package/docs/guidelines/agent-infra/security-lint-containment.md +2 -2
  228. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +1 -1
  229. package/docs/guidelines/agent-infra/size-and-scope.md +1 -1
  230. package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
  231. package/docs/guidelines/augment-portability-patterns.md +1 -1
  232. package/docs/proof.md +1 -1
  233. package/docs/setup/per-ide/claude-code.md +10 -4
  234. package/package.json +3 -2
  235. package/src/config/agent-settings.template.yml +31 -17
  236. package/src/config/host-capabilities.yml +25 -16
  237. package/src/config/profiles/balanced.ini +5 -3
  238. package/src/scripts/_cli/cmd_analyze_session.ts +23 -4
  239. package/src/scripts/_cli/cmd_conformance.ts +23 -4
  240. package/src/scripts/_cli/cmd_doctor.ts +96 -8
  241. package/src/scripts/_cli/cmd_explain.ts +23 -4
  242. package/src/scripts/_cli/cmd_export.ts +23 -4
  243. package/src/scripts/_cli/cmd_fleet.ts +23 -4
  244. package/src/scripts/_cli/cmd_migrate.ts +23 -4
  245. package/src/scripts/_cli/cmd_preflight.ts +24 -4
  246. package/src/scripts/_cli/cmd_prune.ts +23 -4
  247. package/src/scripts/_cli/cmd_refresh.ts +23 -4
  248. package/src/scripts/_cli/cmd_settings_check.ts +23 -4
  249. package/src/scripts/_cli/cmd_settings_migrate.ts +23 -4
  250. package/src/scripts/_cli/cmd_sync.ts +23 -4
  251. package/src/scripts/_cli/cmd_uninstall.ts +23 -4
  252. package/src/scripts/_cli/cmd_update.ts +23 -4
  253. package/src/scripts/_cli/cmd_upgrade.ts +238 -9
  254. package/src/scripts/_cli/cmd_validate.ts +23 -4
  255. package/src/scripts/_cli/cmd_versions.ts +23 -4
  256. package/src/scripts/_dispatch.bash +62 -19
  257. package/src/scripts/_lib/claude_plugin.ts +83 -0
  258. package/src/scripts/_lib/knowledge_global.ts +24 -2
  259. package/src/scripts/_lib/knowledge_global_promote.ts +24 -2
  260. package/src/scripts/_lib/knowledge_global_redaction.ts +24 -2
  261. package/src/scripts/_lib/link_crypto.ts +24 -5
  262. package/src/scripts/_lib/pin_resolver.ts +24 -3
  263. package/src/scripts/adoption_report.ts +23 -4
  264. package/src/scripts/adoption_snapshot.ts +23 -1
  265. package/src/scripts/adoption_status.ts +23 -4
  266. package/src/scripts/adr/regenerate_index.ts +24 -3
  267. package/src/scripts/ai_council/airgap.ts +25 -2
  268. package/src/scripts/ai_council/compile_corpus.ts +24 -2
  269. package/src/scripts/ai_council/pricing.ts +11 -1
  270. package/src/scripts/analysis_freshness.ts +23 -4
  271. package/src/scripts/annotate_discovery.ts +23 -1
  272. package/src/scripts/apply_modules_config.ts +23 -4
  273. package/src/scripts/audit_adr_coverage.ts +23 -4
  274. package/src/scripts/audit_auto_rules.ts +23 -1
  275. package/src/scripts/audit_cloud_compatibility.ts +23 -4
  276. package/src/scripts/audit_command_surface.ts +23 -4
  277. package/src/scripts/audit_initial_context.ts +23 -3
  278. package/src/scripts/audit_likelihood.ts +23 -1
  279. package/src/scripts/audit_mcp_tools.ts +23 -3
  280. package/src/scripts/audit_overlap.ts +23 -1
  281. package/src/scripts/audit_skill_descriptions.ts +24 -2
  282. package/src/scripts/audit_skill_overlap.ts +23 -1
  283. package/src/scripts/audit_user_type_axis.ts +23 -4
  284. package/src/scripts/backfill_model_tier.ts +23 -4
  285. package/src/scripts/bench_ab_cache_dispatch.ts +23 -1
  286. package/src/scripts/bench_ab_clone.ts +23 -1
  287. package/src/scripts/bench_ab_diff.ts +23 -1
  288. package/src/scripts/bench_ab_integrity.ts +23 -1
  289. package/src/scripts/bench_ab_run.ts +23 -2
  290. package/src/scripts/bench_ab_task_runner.ts +23 -1
  291. package/src/scripts/bench_ab_tracka_run.ts +23 -2
  292. package/src/scripts/bench_ab_v2_run.ts +23 -1
  293. package/src/scripts/bench_ab_v2_stats.ts +23 -1
  294. package/src/scripts/bench_baseline_ready.ts +23 -1
  295. package/src/scripts/bench_condense_memory.ts +23 -1
  296. package/src/scripts/bench_drift_check.ts +23 -2
  297. package/src/scripts/bench_matrix.ts +23 -4
  298. package/src/scripts/bench_per_tool.ts +23 -1
  299. package/src/scripts/bench_quality_run.ts +23 -2
  300. package/src/scripts/bench_rtk_savings.ts +23 -1
  301. package/src/scripts/bench_rule_load_latency.ts +23 -2
  302. package/src/scripts/bench_run.ts +23 -2
  303. package/src/scripts/bench_runner.ts +23 -1
  304. package/src/scripts/build_cloud_bundle.ts +23 -3
  305. package/src/scripts/build_discovery_manifest.ts +23 -4
  306. package/src/scripts/build_linear_digest.ts +23 -3
  307. package/src/scripts/build_mcp_registry_manifest.ts +23 -4
  308. package/src/scripts/build_rule_trigger_matrix.ts +23 -4
  309. package/src/scripts/capture_showcase_session.ts +23 -1
  310. package/src/scripts/chat_history.ts +24 -3
  311. package/src/scripts/check_always_budget.ts +23 -2
  312. package/src/scripts/check_artefact_checksums.ts +23 -4
  313. package/src/scripts/check_augment_description_cap.ts +23 -4
  314. package/src/scripts/check_augmentignore.ts +23 -4
  315. package/src/scripts/check_beta_review_markers.ts +23 -4
  316. package/src/scripts/check_cluster_patterns.ts +23 -4
  317. package/src/scripts/check_command_count_messaging.ts +23 -4
  318. package/src/scripts/check_comparison.ts +23 -1
  319. package/src/scripts/check_condensation.ts +24 -3
  320. package/src/scripts/check_condensed_paths.ts +23 -2
  321. package/src/scripts/check_context_paths.ts +23 -4
  322. package/src/scripts/check_council_config_location.ts +23 -4
  323. package/src/scripts/check_council_layout.ts +23 -4
  324. package/src/scripts/check_council_references.ts +23 -4
  325. package/src/scripts/check_discovery_determinism.ts +24 -4
  326. package/src/scripts/check_gate_paths.ts +23 -4
  327. package/src/scripts/check_generated_artefact_headers.ts +23 -4
  328. package/src/scripts/check_generator_output_coverage.ts +23 -4
  329. package/src/scripts/check_gitignore_freshness.ts +23 -4
  330. package/src/scripts/check_iron_law_prominence.ts +23 -4
  331. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  332. package/src/scripts/check_kernel_rule_bundle.ts +23 -4
  333. package/src/scripts/check_knowledge_cards.ts +23 -1
  334. package/src/scripts/check_md_language.ts +23 -4
  335. package/src/scripts/check_media_deps.ts +24 -1
  336. package/src/scripts/check_memory.ts +24 -2
  337. package/src/scripts/check_memory_proposal.ts +23 -4
  338. package/src/scripts/check_module_management_neutral.ts +23 -4
  339. package/src/scripts/check_no_conflict_markers.ts +23 -4
  340. package/src/scripts/check_no_external_sources.ts +23 -4
  341. package/src/scripts/check_no_local_settings_committed.ts +24 -4
  342. package/src/scripts/check_no_new_legacy_path.ts +23 -4
  343. package/src/scripts/check_no_roadmap_refs.ts +23 -4
  344. package/src/scripts/check_one_off_location.ts +23 -4
  345. package/src/scripts/check_overlay_cascade_subdirs.ts +23 -4
  346. package/src/scripts/check_portability.ts +24 -3
  347. package/src/scripts/check_proposal.ts +0 -0
  348. package/src/scripts/check_public_catalog_links.ts +23 -4
  349. package/src/scripts/check_public_links.ts +23 -4
  350. package/src/scripts/check_quality_regression.ts +23 -2
  351. package/src/scripts/check_references.ts +23 -4
  352. package/src/scripts/check_release_includes_discovery.ts +23 -4
  353. package/src/scripts/check_release_pr_shape.ts +23 -4
  354. package/src/scripts/check_release_published.ts +23 -4
  355. package/src/scripts/check_release_trunk_sync.ts +23 -4
  356. package/src/scripts/check_reply_consistency.ts +23 -4
  357. package/src/scripts/check_roadmap_trackable.ts +23 -4
  358. package/src/scripts/check_role_doc_links.ts +23 -4
  359. package/src/scripts/check_safety_floor_untouched.ts +24 -4
  360. package/src/scripts/check_site_links.ts +23 -1
  361. package/src/scripts/check_skill_gaps.ts +23 -1
  362. package/src/scripts/check_skill_requires.ts +23 -4
  363. package/src/scripts/check_structural_breaking.ts +24 -4
  364. package/src/scripts/check_surface_tiers.ts +23 -4
  365. package/src/scripts/check_template_pin_drift.ts +23 -4
  366. package/src/scripts/check_test_coverage_diff.ts +23 -4
  367. package/src/scripts/check_token_optimizer_freshness.ts +23 -4
  368. package/src/scripts/check_token_quality_golden.ts +23 -2
  369. package/src/scripts/check_token_regression.ts +23 -2
  370. package/src/scripts/check_tracked_but_ignored.ts +24 -4
  371. package/src/scripts/check_trigger_evals.ts +23 -4
  372. package/src/scripts/check_trunk_drift.ts +24 -1
  373. package/src/scripts/check_update_banner.ts +23 -4
  374. package/src/scripts/ci_summary.ts +23 -4
  375. package/src/scripts/ci_time_ratio.ts +23 -4
  376. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  377. package/src/scripts/compile_router.ts +23 -4
  378. package/src/scripts/condense.ts +23 -2
  379. package/src/scripts/condense_memory.ts +24 -2
  380. package/src/scripts/config/packs.ts +24 -4
  381. package/src/scripts/config/session_profiles.ts +23 -4
  382. package/src/scripts/context_hygiene_hook.ts +24 -3
  383. package/src/scripts/cost_by_conversation.ts +23 -4
  384. package/src/scripts/cost_summary.ts +23 -4
  385. package/src/scripts/council_cli.ts +35 -7
  386. package/src/scripts/council_prune.ts +25 -2
  387. package/src/scripts/cross_repo_retrieve.ts +23 -4
  388. package/src/scripts/discovery_stats.ts +23 -4
  389. package/src/scripts/evidence_report.ts +23 -1
  390. package/src/scripts/export_replay_corpus.ts +23 -2
  391. package/src/scripts/extract_audit_patterns.ts +23 -1
  392. package/src/scripts/first_run_gate_hook.ts +24 -3
  393. package/src/scripts/gen_discovery_baseline.ts +23 -4
  394. package/src/scripts/generate_capabilities_index.ts +24 -5
  395. package/src/scripts/generate_capability_matrix.ts +23 -4
  396. package/src/scripts/generate_catalog.ts +23 -1
  397. package/src/scripts/generate_command_flows.ts +23 -4
  398. package/src/scripts/generate_cookbook.ts +23 -4
  399. package/src/scripts/generate_index.ts +23 -4
  400. package/src/scripts/generate_ownership_matrix.ts +23 -1
  401. package/src/scripts/generate_pack_manifests.ts +24 -5
  402. package/src/scripts/generate_role_experiences_catalog.ts +23 -4
  403. package/src/scripts/hooks/block_no_verify.ts +23 -4
  404. package/src/scripts/hooks/design_slop_hook.ts +24 -3
  405. package/src/scripts/hooks/dispatch_hook.ts +47 -14
  406. package/src/scripts/hooks/replay_hook.ts +23 -2
  407. package/src/scripts/hooks/rtk_wrap_hook.ts +24 -5
  408. package/src/scripts/hooks_doctor.ts +23 -2
  409. package/src/scripts/hooks_status.ts +23 -2
  410. package/src/scripts/injection_scan_hook.ts +24 -5
  411. package/src/scripts/install.ts +72 -44
  412. package/src/scripts/inventory_abstraction_budget.ts +23 -1
  413. package/src/scripts/inventory_frontmatter.ts +23 -1
  414. package/src/scripts/inventory_meta_layers.ts +23 -1
  415. package/src/scripts/iron_law_sha.ts +23 -4
  416. package/src/scripts/janitor.ts +23 -4
  417. package/src/scripts/knowledge_global_cli.ts +24 -2
  418. package/src/scripts/linked_projects_list.ts +23 -4
  419. package/src/scripts/lint_agent_security.ts +23 -4
  420. package/src/scripts/lint_agent_skill_names.ts +23 -4
  421. package/src/scripts/lint_agents_layout.ts +23 -4
  422. package/src/scripts/lint_agents_md.ts +23 -4
  423. package/src/scripts/lint_archived_skills.ts +23 -4
  424. package/src/scripts/lint_artefact_frontmatter.ts +23 -4
  425. package/src/scripts/lint_bench_ab.ts +23 -4
  426. package/src/scripts/lint_bench_corpus.ts +23 -2
  427. package/src/scripts/lint_command_flow_coverage.ts +23 -4
  428. package/src/scripts/lint_command_routing.ts +23 -4
  429. package/src/scripts/lint_command_tiers.ts +23 -2
  430. package/src/scripts/lint_command_verbs.ts +23 -4
  431. package/src/scripts/lint_commit_subjects.ts +24 -4
  432. package/src/scripts/lint_confusables.ts +25 -5
  433. package/src/scripts/lint_context_spine_usage.ts +23 -4
  434. package/src/scripts/lint_discovery_manifest.ts +23 -4
  435. package/src/scripts/lint_discovery_vocabulary.ts +23 -4
  436. package/src/scripts/lint_empty_roadmaps.ts +23 -4
  437. package/src/scripts/lint_eval_freshness.ts +23 -4
  438. package/src/scripts/lint_examples.ts +23 -4
  439. package/src/scripts/lint_explain_trace.ts +23 -4
  440. package/src/scripts/lint_featured_skills.ts +0 -0
  441. package/src/scripts/lint_flows.ts +23 -4
  442. package/src/scripts/lint_framework_leakage.ts +23 -4
  443. package/src/scripts/lint_frontmatter_boilerplate.ts +23 -4
  444. package/src/scripts/lint_ghostwriter_source.ts +23 -4
  445. package/src/scripts/lint_global_paths.ts +23 -2
  446. package/src/scripts/lint_handoffs.ts +23 -4
  447. package/src/scripts/lint_hidden_unicode.ts +24 -5
  448. package/src/scripts/lint_hook_concern_budget.ts +23 -4
  449. package/src/scripts/lint_hook_manifest.ts +23 -2
  450. package/src/scripts/lint_instruction_smuggling.ts +25 -5
  451. package/src/scripts/lint_legal_pack.ts +23 -1
  452. package/src/scripts/lint_load_context.ts +23 -4
  453. package/src/scripts/lint_marketplace.ts +24 -3
  454. package/src/scripts/lint_marketplace_install_completeness.ts +23 -4
  455. package/src/scripts/lint_mcp_config_security.ts +25 -5
  456. package/src/scripts/lint_mcp_registry_manifest.ts +23 -4
  457. package/src/scripts/lint_media_policy_linkage.ts +23 -4
  458. package/src/scripts/lint_missions.ts +23 -4
  459. package/src/scripts/lint_model_tier_coverage.ts +23 -4
  460. package/src/scripts/lint_namespace.ts +23 -4
  461. package/src/scripts/lint_namespace_collisions.ts +23 -4
  462. package/src/scripts/lint_new_skill_gate.ts +23 -4
  463. package/src/scripts/lint_no_new_atomic_commands.ts +23 -4
  464. package/src/scripts/lint_one_off_age.ts +23 -4
  465. package/src/scripts/lint_orchestration_dsl.ts +23 -4
  466. package/src/scripts/lint_orchestrator_auto_detect.ts +23 -4
  467. package/src/scripts/lint_pack_boundaries.ts +23 -4
  468. package/src/scripts/lint_pack_dependencies.ts +23 -2
  469. package/src/scripts/lint_pack_first_win.ts +23 -4
  470. package/src/scripts/lint_pack_risk_class.ts +23 -1
  471. package/src/scripts/lint_persona_governance.ts +23 -4
  472. package/src/scripts/lint_positioning.ts +23 -4
  473. package/src/scripts/lint_profile_overlay_set_only.ts +23 -4
  474. package/src/scripts/lint_readme_jargon.ts +23 -4
  475. package/src/scripts/lint_readme_size.ts +23 -4
  476. package/src/scripts/lint_regression.ts +23 -4
  477. package/src/scripts/lint_roadmap_blockers.ts +23 -4
  478. package/src/scripts/lint_roadmap_ci_steps.ts +23 -4
  479. package/src/scripts/lint_roadmap_complexity.ts +23 -4
  480. package/src/scripts/lint_roadmap_later_disposition.ts +23 -4
  481. package/src/scripts/lint_role_experiences.ts +23 -4
  482. package/src/scripts/lint_rule_interactions.ts +23 -4
  483. package/src/scripts/lint_rule_tiers.ts +24 -3
  484. package/src/scripts/lint_showcase_sessions.ts +23 -4
  485. package/src/scripts/lint_skill_frontmatter_safety.ts +25 -5
  486. package/src/scripts/lint_skill_originality.ts +23 -4
  487. package/src/scripts/lint_skill_tools.ts +23 -4
  488. package/src/scripts/lint_subagent_determinism.ts +23 -4
  489. package/src/scripts/lint_ticket_buildable.ts +23 -4
  490. package/src/scripts/lint_topics_yaml.ts +23 -4
  491. package/src/scripts/lint_trust_coherence.ts +23 -4
  492. package/src/scripts/lint_value_dashboard.ts +23 -4
  493. package/src/scripts/lint_workflow_security.ts +23 -4
  494. package/src/scripts/lint_workspace_boundary.ts +23 -4
  495. package/src/scripts/mcp_parity_smoke.ts +23 -2
  496. package/src/scripts/mcp_render.ts +23 -4
  497. package/src/scripts/mcp_telemetry_health.ts +23 -4
  498. package/src/scripts/mcp_telemetry_query.ts +23 -4
  499. package/src/scripts/mcp_telemetry_store.ts +23 -4
  500. package/src/scripts/measure_augment_budget.ts +23 -1
  501. package/src/scripts/measure_density.ts +23 -1
  502. package/src/scripts/measure_frugality_savings.ts +23 -1
  503. package/src/scripts/measure_markitdown_lift.ts +23 -1
  504. package/src/scripts/measure_patterns.ts +23 -1
  505. package/src/scripts/measure_projection_bytes.ts +23 -1
  506. package/src/scripts/measure_rule_budget.ts +23 -4
  507. package/src/scripts/measure_skill_reduction.ts +23 -1
  508. package/src/scripts/memory_hash.ts +24 -2
  509. package/src/scripts/memory_lookup.ts +24 -2
  510. package/src/scripts/memory_report.ts +24 -2
  511. package/src/scripts/memory_signal.ts +24 -2
  512. package/src/scripts/memory_status.ts +26 -2
  513. package/src/scripts/migrate_command_suggestions.ts +23 -4
  514. package/src/scripts/migrate_frontmatter_defaults.ts +23 -4
  515. package/src/scripts/migration_status.ts +25 -4
  516. package/src/scripts/mine_missing_guardrails.ts +23 -1
  517. package/src/scripts/mine_session.ts +23 -1
  518. package/src/scripts/minimal_safe_diff_hook.ts +24 -3
  519. package/src/scripts/new_skill.ts +23 -3
  520. package/src/scripts/onboarding_gate_hook.ts +24 -3
  521. package/src/scripts/parity/coverage_diff.ts +25 -3
  522. package/src/scripts/parity/phase_gate.ts +25 -4
  523. package/src/scripts/parity/replay.ts +25 -3
  524. package/src/scripts/pattern_share.ts +23 -4
  525. package/src/scripts/plan_physical_move.ts +23 -4
  526. package/src/scripts/prediction-pool/poisson_sim.ts +24 -3
  527. package/src/scripts/prediction-pool/pool_winsim.ts +24 -3
  528. package/src/scripts/prediction-pool/score_ev.ts +24 -3
  529. package/src/scripts/print_required_checks.ts +24 -4
  530. package/src/scripts/probe_host_compliance.ts +23 -2
  531. package/src/scripts/probe_projection_fidelity.ts +23 -1
  532. package/src/scripts/probe_skill_registration.ts +24 -2
  533. package/src/scripts/profile_staleness_hook.ts +24 -3
  534. package/src/scripts/profile_use.ts +23 -4
  535. package/src/scripts/project_thin_rules.ts +23 -3
  536. package/src/scripts/propose_modules_config.ts +23 -4
  537. package/src/scripts/prototype_lint_contradictions.ts +23 -1
  538. package/src/scripts/prove_pack_extractable.ts +23 -4
  539. package/src/scripts/readme_linter.ts +23 -3
  540. package/src/scripts/redact_hook_capture.ts +23 -4
  541. package/src/scripts/refine_ticket_detect.ts +23 -4
  542. package/src/scripts/release.ts +23 -4
  543. package/src/scripts/render_benchmark_composite.ts +23 -4
  544. package/src/scripts/render_benchmark_md.ts +23 -4
  545. package/src/scripts/roadmap_progress_hook.ts +46 -16
  546. package/src/scripts/run_skill_evals.ts +23 -4
  547. package/src/scripts/runtime_dispatcher.ts +23 -4
  548. package/src/scripts/runtime_registry.ts +23 -4
  549. package/src/scripts/score_skill_selection.ts +23 -1
  550. package/src/scripts/security_audit_config.ts +24 -5
  551. package/src/scripts/skill_collision_clusters.ts +23 -4
  552. package/src/scripts/skill_discovery.ts +23 -4
  553. package/src/scripts/skill_linter.ts +23 -2
  554. package/src/scripts/skill_preview.ts +23 -4
  555. package/src/scripts/skill_tools/audit_persona_coverage.ts +23 -1
  556. package/src/scripts/skill_tools/audit_user_type_coverage.ts +23 -1
  557. package/src/scripts/skill_tools/run_block_d_eval.ts +23 -1
  558. package/src/scripts/skill_tools/score_skill_relevance.ts +23 -1
  559. package/src/scripts/skill_tools/suggest_skill_for_task.ts +24 -1
  560. package/src/scripts/skill_usage_collect.ts +23 -4
  561. package/src/scripts/smoke_path_resolution.ts +23 -4
  562. package/src/scripts/smoke_quickstart.ts +23 -4
  563. package/src/scripts/snapshot_agent_outputs.ts +23 -4
  564. package/src/scripts/spotcheck_thin_root.ts +23 -4
  565. package/src/scripts/sync_agent_settings.ts +23 -4
  566. package/src/scripts/sync_github_metadata.ts +23 -4
  567. package/src/scripts/sync_gitignore.ts +23 -4
  568. package/src/scripts/telegraph_stats.ts +23 -4
  569. package/src/scripts/tool_registry.ts +24 -4
  570. package/src/scripts/trigger_coverage.ts +23 -4
  571. package/src/scripts/update_counts.ts +23 -4
  572. package/src/scripts/update_prices.ts +23 -1
  573. package/src/scripts/validate_agent_settings.ts +23 -4
  574. package/src/scripts/validate_decision_engine.ts +23 -4
  575. package/src/scripts/validate_discovery_manifest.ts +23 -4
  576. package/src/scripts/validate_frontmatter.ts +23 -2
  577. package/src/scripts/validate_pack_yaml.ts +0 -0
  578. package/src/scripts/validate_safe_paths.ts +24 -4
  579. package/src/scripts/validate_telegraph_carveouts.ts +23 -4
  580. package/src/scripts/verify_before_complete_hook.ts +24 -3
  581. package/src/scripts/verify_physical_move.ts +23 -4
  582. package/src/scripts/wrapper_freshness_hook.ts +107 -8
  583. package/tests/fixtures/hooks/README.md +92 -0
  584. package/tests/fixtures/hooks/agent_error.json +7 -0
  585. package/tests/fixtures/hooks/post_tool_use.json +13 -0
  586. package/tests/fixtures/hooks/pre_compact.json +7 -0
  587. package/tests/fixtures/hooks/pre_tool_use.json +9 -0
  588. package/tests/fixtures/hooks/session_end.json +6 -0
  589. package/tests/fixtures/hooks/session_start.json +6 -0
  590. package/tests/fixtures/hooks/stop.json +6 -0
  591. package/tests/fixtures/hooks/user_prompt_submit.json +7 -0
@@ -469,6 +469,28 @@ function _splitMax(s: string, sep: string, maxsplit: number): string[] {
469
469
  return parts;
470
470
  }
471
471
 
472
- if (import.meta.url === pathToFileURL(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
+ if (_isCliEntry()) {
473
495
  process.exitCode = main();
474
496
  }
@@ -31,7 +31,7 @@
31
31
  import * as crypto from 'node:crypto';
32
32
  import * as fs from 'node:fs';
33
33
  import * as path from 'node:path';
34
- import { pathToFileURL } from 'node:url';
34
+ import { fileURLToPath, pathToFileURL } from 'node:url';
35
35
 
36
36
  export const TOOL_IDS = ['claude', 'augment', 'cursor', 'cline', 'windsurf', 'copilot'] as const;
37
37
  export const SCOPE_IDS = ['user', 'project'] as const;
@@ -782,6 +782,28 @@ function _pyPathCmp(a: string, b: string): number {
782
782
  return pa.length - pb.length;
783
783
  }
784
784
 
785
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
785
+ function _isCliEntry(): boolean {
786
+ if (process.argv[1] === undefined) {
787
+ return false;
788
+ }
789
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
790
+ if (import.meta.url === argvUrl) {
791
+ return true;
792
+ }
793
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
794
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
795
+ // import.meta.url is the resolved real path while argv[1] keeps the
796
+ // symlink path. Compare realpaths so the entry guard still fires
797
+ // (without this the CLI silently no-ops when run through a symlink).
798
+ try {
799
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
800
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
801
+ return here === argv;
802
+ } catch {
803
+ return false;
804
+ }
805
+ }
806
+
807
+ if (_isCliEntry()) {
786
808
  process.exitCode = main();
787
809
  }
@@ -29,7 +29,7 @@
29
29
 
30
30
  import fs from "node:fs";
31
31
  import path from "node:path";
32
- import { pathToFileURL } from "node:url";
32
+ import { fileURLToPath, pathToFileURL } from "node:url";
33
33
  import { parse as parseYaml } from "yaml";
34
34
 
35
35
  import {
@@ -161,9 +161,30 @@ export function main(argv?: string[]): number {
161
161
  return 0;
162
162
  }
163
163
 
164
+ function _isCliEntry(): boolean {
165
+ if (process.argv[1] === undefined) {
166
+ return false;
167
+ }
168
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
169
+ if (import.meta.url === argvUrl) {
170
+ return true;
171
+ }
172
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
173
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
174
+ // import.meta.url is the resolved real path while argv[1] keeps the
175
+ // symlink path. Compare realpaths so the entry guard still fires
176
+ // (without this the CLI silently no-ops when run through a symlink).
177
+ try {
178
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
179
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
180
+ return here === argv;
181
+ } catch {
182
+ return false;
183
+ }
184
+ }
185
+
164
186
  const isCliEntry =
165
- process.argv[1] !== undefined &&
166
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
187
+ _isCliEntry();
167
188
  if (isCliEntry) {
168
189
  process.exit(main(process.argv.slice(2)));
169
190
  }
@@ -219,9 +219,28 @@ function _mkdirParents(p: string): void {
219
219
  fs.mkdirSync(path.dirname(p), { recursive: true });
220
220
  }
221
221
 
222
- const _isCliEntry =
223
- process.argv[1] !== undefined &&
224
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
225
- if (_isCliEntry || process.argv[1] === _HERE) {
222
+ function _isCliEntry(): boolean {
223
+ if (process.argv[1] === undefined) {
224
+ return false;
225
+ }
226
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
227
+ if (import.meta.url === argvUrl) {
228
+ return true;
229
+ }
230
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
231
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
232
+ // import.meta.url is the resolved real path while argv[1] keeps the
233
+ // symlink path. Compare realpaths so the entry guard still fires
234
+ // (without this the CLI silently no-ops when run through a symlink).
235
+ try {
236
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
237
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
238
+ return here === argv;
239
+ } catch {
240
+ return false;
241
+ }
242
+ }
243
+
244
+ if (_isCliEntry() || process.argv[1] === _HERE) {
226
245
  process.exit(main());
227
246
  }
@@ -484,8 +484,28 @@ export function main(argv: string[] | null = null): number {
484
484
  return 0;
485
485
  }
486
486
 
487
- const _isCliEntry =
488
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
489
- if (_isCliEntry || process.argv[1] === _HERE) {
487
+ function _isCliEntry(): boolean {
488
+ if (process.argv[1] === undefined) {
489
+ return false;
490
+ }
491
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
492
+ if (import.meta.url === argvUrl) {
493
+ return true;
494
+ }
495
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
496
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
497
+ // import.meta.url is the resolved real path while argv[1] keeps the
498
+ // symlink path. Compare realpaths so the entry guard still fires
499
+ // (without this the CLI silently no-ops when run through a symlink).
500
+ try {
501
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
502
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
503
+ return here === argv;
504
+ } catch {
505
+ return false;
506
+ }
507
+ }
508
+
509
+ if (_isCliEntry() || process.argv[1] === _HERE) {
490
510
  process.exit(main());
491
511
  }
@@ -296,10 +296,29 @@ function main(argv?: readonly string[]): number {
296
296
  return 0;
297
297
  }
298
298
 
299
- const _isCliEntry =
300
- process.argv[1] !== undefined &&
301
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
302
- if (_isCliEntry || process.argv[1] === _HERE) {
299
+ function _isCliEntry(): boolean {
300
+ if (process.argv[1] === undefined) {
301
+ return false;
302
+ }
303
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
304
+ if (import.meta.url === argvUrl) {
305
+ return true;
306
+ }
307
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
308
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
309
+ // import.meta.url is the resolved real path while argv[1] keeps the
310
+ // symlink path. Compare realpaths so the entry guard still fires
311
+ // (without this the CLI silently no-ops when run through a symlink).
312
+ try {
313
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
314
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
315
+ return here === argv;
316
+ } catch {
317
+ return false;
318
+ }
319
+ }
320
+
321
+ if (_isCliEntry() || process.argv[1] === _HERE) {
303
322
  process.exitCode = main();
304
323
  }
305
324
 
@@ -406,7 +406,29 @@ function _dumpsWithFloats(obj: Json, level = 0): string {
406
406
  return `{\n${parts.join(',\n')}\n${closePad}}`;
407
407
  }
408
408
 
409
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
409
+ function _isCliEntry(): boolean {
410
+ if (process.argv[1] === undefined) {
411
+ return false;
412
+ }
413
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
414
+ if (import.meta.url === argvUrl) {
415
+ return true;
416
+ }
417
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
418
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
419
+ // import.meta.url is the resolved real path while argv[1] keeps the
420
+ // symlink path. Compare realpaths so the entry guard still fires
421
+ // (without this the CLI silently no-ops when run through a symlink).
422
+ try {
423
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
424
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
425
+ return here === argv;
426
+ } catch {
427
+ return false;
428
+ }
429
+ }
430
+
431
+ const _isMain = _isCliEntry();
410
432
  if (_isMain) {
411
433
  process.exitCode = main();
412
434
  }
@@ -380,9 +380,28 @@ function _sortedReprList(items: string[]): string {
380
380
  return '[' + items.map((s) => `'${s}'`).join(', ') + ']';
381
381
  }
382
382
 
383
- const _isCliEntry =
384
- process.argv[1] !== undefined &&
385
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
386
- if (_isCliEntry || process.argv[1] === _HERE) {
383
+ function _isCliEntry(): boolean {
384
+ if (process.argv[1] === undefined) {
385
+ return false;
386
+ }
387
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
388
+ if (import.meta.url === argvUrl) {
389
+ return true;
390
+ }
391
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
392
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
393
+ // import.meta.url is the resolved real path while argv[1] keeps the
394
+ // symlink path. Compare realpaths so the entry guard still fires
395
+ // (without this the CLI silently no-ops when run through a symlink).
396
+ try {
397
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
398
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
399
+ return here === argv;
400
+ } catch {
401
+ return false;
402
+ }
403
+ }
404
+
405
+ if (_isCliEntry() || process.argv[1] === _HERE) {
387
406
  process.exitCode = main();
388
407
  }
@@ -906,8 +906,28 @@ export function main(argv: string[] | null = null): number {
906
906
  void _isFile;
907
907
 
908
908
  const _HERE = fileURLToPath(import.meta.url);
909
- const _isCliEntry =
910
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
911
- if (_isCliEntry || process.argv[1] === _HERE) {
909
+ function _isCliEntry(): boolean {
910
+ if (process.argv[1] === undefined) {
911
+ return false;
912
+ }
913
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
914
+ if (import.meta.url === argvUrl) {
915
+ return true;
916
+ }
917
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
918
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
919
+ // import.meta.url is the resolved real path while argv[1] keeps the
920
+ // symlink path. Compare realpaths so the entry guard still fires
921
+ // (without this the CLI silently no-ops when run through a symlink).
922
+ try {
923
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
924
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
925
+ return here === argv;
926
+ } catch {
927
+ return false;
928
+ }
929
+ }
930
+
931
+ if (_isCliEntry() || process.argv[1] === _HERE) {
912
932
  process.exitCode = main();
913
933
  }
@@ -317,9 +317,28 @@ export function main(argv: string[] | null = null): number {
317
317
  return 0;
318
318
  }
319
319
 
320
- const _isCliEntry =
321
- process.argv[1] !== undefined &&
322
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
323
- if (_isCliEntry || process.argv[1] === _HERE) {
320
+ function _isCliEntry(): boolean {
321
+ if (process.argv[1] === undefined) {
322
+ return false;
323
+ }
324
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
325
+ if (import.meta.url === argvUrl) {
326
+ return true;
327
+ }
328
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
329
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
330
+ // import.meta.url is the resolved real path while argv[1] keeps the
331
+ // symlink path. Compare realpaths so the entry guard still fires
332
+ // (without this the CLI silently no-ops when run through a symlink).
333
+ try {
334
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
335
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
336
+ return here === argv;
337
+ } catch {
338
+ return false;
339
+ }
340
+ }
341
+
342
+ if (_isCliEntry() || process.argv[1] === _HERE) {
324
343
  process.exitCode = main();
325
344
  }
@@ -695,9 +695,28 @@ function main(): void {
695
695
  }
696
696
  }
697
697
 
698
- const _isCliEntry =
699
- process.argv[1] !== undefined &&
700
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
701
- if (_isCliEntry || process.argv[1] === _HERE) {
698
+ function _isCliEntry(): boolean {
699
+ if (process.argv[1] === undefined) {
700
+ return false;
701
+ }
702
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
703
+ if (import.meta.url === argvUrl) {
704
+ return true;
705
+ }
706
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
707
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
708
+ // import.meta.url is the resolved real path while argv[1] keeps the
709
+ // symlink path. Compare realpaths so the entry guard still fires
710
+ // (without this the CLI silently no-ops when run through a symlink).
711
+ try {
712
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
713
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
714
+ return here === argv;
715
+ } catch {
716
+ return false;
717
+ }
718
+ }
719
+
720
+ if (_isCliEntry() || process.argv[1] === _HERE) {
702
721
  main();
703
722
  }
@@ -1732,10 +1732,29 @@ function main(argv: readonly string[] | null = null): number {
1732
1732
 
1733
1733
  // ─── CLI entry (release.py:1090-1091 `raise SystemExit(main())`) ──────────────
1734
1734
 
1735
- const _isCliEntry =
1736
- process.argv[1] !== undefined &&
1737
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
1738
- if (_isCliEntry || process.argv[1] === _HERE) {
1735
+ function _isCliEntry(): boolean {
1736
+ if (process.argv[1] === undefined) {
1737
+ return false;
1738
+ }
1739
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
1740
+ if (import.meta.url === argvUrl) {
1741
+ return true;
1742
+ }
1743
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
1744
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
1745
+ // import.meta.url is the resolved real path while argv[1] keeps the
1746
+ // symlink path. Compare realpaths so the entry guard still fires
1747
+ // (without this the CLI silently no-ops when run through a symlink).
1748
+ try {
1749
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
1750
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
1751
+ return here === argv;
1752
+ } catch {
1753
+ return false;
1754
+ }
1755
+ }
1756
+
1757
+ if (_isCliEntry() || process.argv[1] === _HERE) {
1739
1758
  try {
1740
1759
  // main() can return an int directly OR throw SystemExitError via die();
1741
1760
  // both flow into process.exitCode. CalledProcessError is intentionally
@@ -370,9 +370,28 @@ export function main(argv: string[] | null = null): number {
370
370
 
371
371
  // --- CLI entry ---
372
372
 
373
- const _isCliEntry =
374
- process.argv[1] !== undefined &&
375
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
376
- if (_isCliEntry || process.argv[1] === _HERE) {
373
+ function _isCliEntry(): boolean {
374
+ if (process.argv[1] === undefined) {
375
+ return false;
376
+ }
377
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
378
+ if (import.meta.url === argvUrl) {
379
+ return true;
380
+ }
381
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
382
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
383
+ // import.meta.url is the resolved real path while argv[1] keeps the
384
+ // symlink path. Compare realpaths so the entry guard still fires
385
+ // (without this the CLI silently no-ops when run through a symlink).
386
+ try {
387
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
388
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
389
+ return here === argv;
390
+ } catch {
391
+ return false;
392
+ }
393
+ }
394
+
395
+ if (_isCliEntry() || process.argv[1] === _HERE) {
377
396
  process.exitCode = main(process.argv.slice(2));
378
397
  }
@@ -656,9 +656,28 @@ export function main(argv: string[] | null = null): number {
656
656
  return render(args.quiet);
657
657
  }
658
658
 
659
- const _isCliEntry =
660
- process.argv[1] !== undefined &&
661
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
662
- if (_isCliEntry || process.argv[1] === _HERE) {
659
+ function _isCliEntry(): boolean {
660
+ if (process.argv[1] === undefined) {
661
+ return false;
662
+ }
663
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
664
+ if (import.meta.url === argvUrl) {
665
+ return true;
666
+ }
667
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
668
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
669
+ // import.meta.url is the resolved real path while argv[1] keeps the
670
+ // symlink path. Compare realpaths so the entry guard still fires
671
+ // (without this the CLI silently no-ops when run through a symlink).
672
+ try {
673
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
674
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
675
+ return here === argv;
676
+ } catch {
677
+ return false;
678
+ }
679
+ }
680
+
681
+ if (_isCliEntry() || process.argv[1] === _HERE) {
663
682
  process.exit(main());
664
683
  }
@@ -289,24 +289,33 @@ function _isFile(p: string): boolean {
289
289
  /**
290
290
  * Resolve how to run the `.ts` regenerator: prefer the `tsx` binary from a
291
291
  * `node_modules/.bin` directory found by walking up from the regenerator's
292
- * directory; fall back to `npx tsx`. Mirrors
293
- * `dispatch_hook.ts::_resolve_tsx_invocation` so the regenerator runs as
294
- * TypeScript with no python3 dependency (the regenerator may live in a
295
- * consumer `.augment/scripts/` with the package's node_modules up the tree).
292
+ * directory, then from THIS module's own package tree; only then fall back
293
+ * to `npx tsx`. Mirrors `dispatch_hook.ts::_resolve_tsx_invocation` so the
294
+ * regenerator runs as TypeScript with no python3 dependency. The package-
295
+ * tree branch matters when the regenerator lives in a consumer
296
+ * `.augment/scripts/` whose tree carries no tsx — `npx tsx` there runs
297
+ * against the consumer's npm config and fails hard on e.g. devEngines pins
298
+ * (the 8.1.0 EBADDEVENGINES regression).
296
299
  */
297
300
  function _resolve_tsx_invocation(scriptPath: string): { command: string; args: string[] } {
298
301
  const binName = process.platform === "win32" ? "tsx.cmd" : "tsx";
299
- let dir = path.dirname(scriptPath);
300
- for (;;) {
301
- const candidate = path.join(dir, "node_modules", ".bin", binName);
302
- if (_isFile(candidate)) {
303
- return { command: candidate, args: [scriptPath] };
304
- }
305
- const parent = path.dirname(dir);
306
- if (parent === dir) {
307
- break;
302
+ const walkUp = (start: string): string | null => {
303
+ let dir = start;
304
+ for (;;) {
305
+ const candidate = path.join(dir, "node_modules", ".bin", binName);
306
+ if (_isFile(candidate)) {
307
+ return candidate;
308
+ }
309
+ const parent = path.dirname(dir);
310
+ if (parent === dir) {
311
+ return null;
312
+ }
313
+ dir = parent;
308
314
  }
309
- dir = parent;
315
+ };
316
+ const tsx = walkUp(path.dirname(scriptPath)) ?? walkUp(path.dirname(fileURLToPath(import.meta.url)));
317
+ if (tsx !== null) {
318
+ return { command: tsx, args: [scriptPath] };
310
319
  }
311
320
  return { command: "npx", args: ["tsx", scriptPath] };
312
321
  }
@@ -460,9 +469,30 @@ export function main(argv?: string[]): number {
460
469
  return run(_readStdin(), { consumer_root: root, verbose: args.verbose });
461
470
  }
462
471
 
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
+
463
494
  const isCliEntry =
464
- process.argv[1] !== undefined &&
465
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
495
+ _isCliEntry();
466
496
  if (isCliEntry) {
467
497
  process.exit(main(process.argv.slice(2)));
468
498
  }
@@ -507,9 +507,28 @@ function _runCli(): number {
507
507
  }
508
508
  }
509
509
 
510
- const _isCliEntry =
511
- process.argv[1] !== undefined &&
512
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
513
- if (_isCliEntry || process.argv[1] === _HERE) {
510
+ function _isCliEntry(): boolean {
511
+ if (process.argv[1] === undefined) {
512
+ return false;
513
+ }
514
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
515
+ if (import.meta.url === argvUrl) {
516
+ return true;
517
+ }
518
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
519
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
520
+ // import.meta.url is the resolved real path while argv[1] keeps the
521
+ // symlink path. Compare realpaths so the entry guard still fires
522
+ // (without this the CLI silently no-ops when run through a symlink).
523
+ try {
524
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
525
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
526
+ return here === argv;
527
+ } catch {
528
+ return false;
529
+ }
530
+ }
531
+
532
+ if (_isCliEntry() || process.argv[1] === _HERE) {
514
533
  process.exit(_runCli());
515
534
  }
@@ -571,10 +571,29 @@ export function main(argv: string[]): number {
571
571
  return result.request.is_ready || result.request.status === 'blocked' ? 0 : 1;
572
572
  }
573
573
 
574
- const _isCliEntry =
575
- process.argv[1] !== undefined &&
576
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
577
- if (_isCliEntry || process.argv[1] === _HERE) {
574
+ function _isCliEntry(): boolean {
575
+ if (process.argv[1] === undefined) {
576
+ return false;
577
+ }
578
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
579
+ if (import.meta.url === argvUrl) {
580
+ return true;
581
+ }
582
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
583
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
584
+ // import.meta.url is the resolved real path while argv[1] keeps the
585
+ // symlink path. Compare realpaths so the entry guard still fires
586
+ // (without this the CLI silently no-ops when run through a symlink).
587
+ try {
588
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
589
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
590
+ return here === argv;
591
+ } catch {
592
+ return false;
593
+ }
594
+ }
595
+
596
+ if (_isCliEntry() || process.argv[1] === _HERE) {
578
597
  try {
579
598
  process.exitCode = main(process.argv.slice(2));
580
599
  } catch (err) {
@@ -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
  }