@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
@@ -602,9 +602,30 @@ async function main(): Promise<number> {
602
602
  return 0;
603
603
  }
604
604
 
605
+ function _isCliEntry(): boolean {
606
+ if (process.argv[1] === undefined) {
607
+ return false;
608
+ }
609
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
610
+ if (import.meta.url === argvUrl) {
611
+ return true;
612
+ }
613
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
614
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
615
+ // import.meta.url is the resolved real path while argv[1] keeps the
616
+ // symlink path. Compare realpaths so the entry guard still fires
617
+ // (without this the CLI silently no-ops when run through a symlink).
618
+ try {
619
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
620
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
621
+ return here === argv;
622
+ } catch {
623
+ return false;
624
+ }
625
+ }
626
+
605
627
  const _isMain =
606
- process.argv[1] !== undefined &&
607
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
628
+ _isCliEntry();
608
629
 
609
630
  if (_isMain) {
610
631
  // process.exitCode (not process.exit) so stdout drains fully before exit.
@@ -338,9 +338,28 @@ export function main(argv: string[] | null = null): number {
338
338
  }
339
339
  }
340
340
 
341
- const _isCliEntry =
342
- process.argv[1] !== undefined &&
343
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
344
- if (_isCliEntry || process.argv[1] === _HERE) {
341
+ function _isCliEntry(): boolean {
342
+ if (process.argv[1] === undefined) {
343
+ return false;
344
+ }
345
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
346
+ if (import.meta.url === argvUrl) {
347
+ return true;
348
+ }
349
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
350
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
351
+ // import.meta.url is the resolved real path while argv[1] keeps the
352
+ // symlink path. Compare realpaths so the entry guard still fires
353
+ // (without this the CLI silently no-ops when run through a symlink).
354
+ try {
355
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
356
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
357
+ return here === argv;
358
+ } catch {
359
+ return false;
360
+ }
361
+ }
362
+
363
+ if (_isCliEntry() || process.argv[1] === _HERE) {
345
364
  process.exitCode = main();
346
365
  }
@@ -354,9 +354,28 @@ export function main(argv?: string[]): number {
354
354
  // Entry point — `process.exitCode`, never `process.exit`, so large stdout
355
355
  // drains before the process ends.
356
356
  const _HERE = fileURLToPath(import.meta.url);
357
- const _isCliEntry =
358
- process.argv[1] !== undefined &&
359
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
360
- if (_isCliEntry || process.argv[1] === _HERE) {
357
+ function _isCliEntry(): boolean {
358
+ if (process.argv[1] === undefined) {
359
+ return false;
360
+ }
361
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
362
+ if (import.meta.url === argvUrl) {
363
+ return true;
364
+ }
365
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
366
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
367
+ // import.meta.url is the resolved real path while argv[1] keeps the
368
+ // symlink path. Compare realpaths so the entry guard still fires
369
+ // (without this the CLI silently no-ops when run through a symlink).
370
+ try {
371
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
372
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
373
+ return here === argv;
374
+ } catch {
375
+ return false;
376
+ }
377
+ }
378
+
379
+ if (_isCliEntry() || process.argv[1] === _HERE) {
361
380
  process.exitCode = main();
362
381
  }
@@ -361,10 +361,29 @@ export async function main(argv?: string[]): Promise<number> {
361
361
  // Entry point — `process.exitCode`, never `process.exit`, so large stdout
362
362
  // drains before the process ends.
363
363
  const _HERE = fileURLToPath(import.meta.url);
364
- const _isCliEntry =
365
- process.argv[1] !== undefined &&
366
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
367
- if (_isCliEntry || process.argv[1] === _HERE) {
364
+ function _isCliEntry(): boolean {
365
+ if (process.argv[1] === undefined) {
366
+ return false;
367
+ }
368
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
369
+ if (import.meta.url === argvUrl) {
370
+ return true;
371
+ }
372
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
373
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
374
+ // import.meta.url is the resolved real path while argv[1] keeps the
375
+ // symlink path. Compare realpaths so the entry guard still fires
376
+ // (without this the CLI silently no-ops when run through a symlink).
377
+ try {
378
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
379
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
380
+ return here === argv;
381
+ } catch {
382
+ return false;
383
+ }
384
+ }
385
+
386
+ if (_isCliEntry() || process.argv[1] === _HERE) {
368
387
  void main().then((rc) => {
369
388
  process.exitCode = rc;
370
389
  });
@@ -412,10 +412,29 @@ export async function main(argv?: string[]): Promise<number> {
412
412
  // Entry point — `process.exitCode`, never `process.exit`, so large stdout
413
413
  // drains before the process ends.
414
414
  const _HERE = fileURLToPath(import.meta.url);
415
- const _isCliEntry =
416
- process.argv[1] !== undefined &&
417
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
418
- if (_isCliEntry || process.argv[1] === _HERE) {
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() || process.argv[1] === _HERE) {
419
438
  void main().then((rc) => {
420
439
  process.exitCode = rc;
421
440
  });
@@ -480,7 +480,29 @@ export function main(argv: string[] | null = null): number {
480
480
  return 0;
481
481
  }
482
482
 
483
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
483
+ function _isCliEntry(): boolean {
484
+ if (process.argv[1] === undefined) {
485
+ return false;
486
+ }
487
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
488
+ if (import.meta.url === argvUrl) {
489
+ return true;
490
+ }
491
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
492
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
493
+ // import.meta.url is the resolved real path while argv[1] keeps the
494
+ // symlink path. Compare realpaths so the entry guard still fires
495
+ // (without this the CLI silently no-ops when run through a symlink).
496
+ try {
497
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
498
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
499
+ return here === argv;
500
+ } catch {
501
+ return false;
502
+ }
503
+ }
504
+
505
+ const _isMain = _isCliEntry();
484
506
  if (_isMain) {
485
507
  try {
486
508
  // Set exitCode (not process.exit) so the large --json stdout drains.
@@ -613,6 +613,28 @@ function _stableSortBy<T>(
613
613
  return indexed.map((e) => e.item);
614
614
  }
615
615
 
616
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
616
+ function _isCliEntry(): boolean {
617
+ if (process.argv[1] === undefined) {
618
+ return false;
619
+ }
620
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
621
+ if (import.meta.url === argvUrl) {
622
+ return true;
623
+ }
624
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
625
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
626
+ // import.meta.url is the resolved real path while argv[1] keeps the
627
+ // symlink path. Compare realpaths so the entry guard still fires
628
+ // (without this the CLI silently no-ops when run through a symlink).
629
+ try {
630
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
631
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
632
+ return here === argv;
633
+ } catch {
634
+ return false;
635
+ }
636
+ }
637
+
638
+ if (_isCliEntry()) {
617
639
  process.exitCode = main();
618
640
  }
@@ -345,7 +345,29 @@ export function main(): number {
345
345
  return 0;
346
346
  }
347
347
 
348
- const _isMain = import.meta.url === pathToFileURL(path.resolve(process.argv[1] ?? '')).href;
348
+ function _isCliEntry(): boolean {
349
+ if (process.argv[1] === undefined) {
350
+ return false;
351
+ }
352
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
353
+ if (import.meta.url === argvUrl) {
354
+ return true;
355
+ }
356
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
357
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
358
+ // import.meta.url is the resolved real path while argv[1] keeps the
359
+ // symlink path. Compare realpaths so the entry guard still fires
360
+ // (without this the CLI silently no-ops when run through a symlink).
361
+ try {
362
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
363
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
364
+ return here === argv;
365
+ } catch {
366
+ return false;
367
+ }
368
+ }
369
+
370
+ const _isMain = _isCliEntry();
349
371
  if (_isMain) {
350
372
  // Set exitCode rather than process.exit() so the large JSON stdout write
351
373
  // (the full record, indent=2) fully drains to the pipe before exit.
@@ -286,7 +286,29 @@ function _pyStrCmp(a: string, b: string): number {
286
286
  return ca.length - cb.length;
287
287
  }
288
288
 
289
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
289
+ function _isCliEntry(): boolean {
290
+ if (process.argv[1] === undefined) {
291
+ return false;
292
+ }
293
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
294
+ if (import.meta.url === argvUrl) {
295
+ return true;
296
+ }
297
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
298
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
299
+ // import.meta.url is the resolved real path while argv[1] keeps the
300
+ // symlink path. Compare realpaths so the entry guard still fires
301
+ // (without this the CLI silently no-ops when run through a symlink).
302
+ try {
303
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
304
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
305
+ return here === argv;
306
+ } catch {
307
+ return false;
308
+ }
309
+ }
310
+
311
+ if (_isCliEntry()) {
290
312
  try {
291
313
  process.exitCode = main();
292
314
  } catch (e) {
@@ -669,7 +669,29 @@ function _stableSort<T>(items: T[], cmp: (a: T, b: T) => number): T[] {
669
669
  return indexed.map((e) => e.item);
670
670
  }
671
671
 
672
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
672
+ function _isCliEntry(): boolean {
673
+ if (process.argv[1] === undefined) {
674
+ return false;
675
+ }
676
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
677
+ if (import.meta.url === argvUrl) {
678
+ return true;
679
+ }
680
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
681
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
682
+ // import.meta.url is the resolved real path while argv[1] keeps the
683
+ // symlink path. Compare realpaths so the entry guard still fires
684
+ // (without this the CLI silently no-ops when run through a symlink).
685
+ try {
686
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
687
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
688
+ return here === argv;
689
+ } catch {
690
+ return false;
691
+ }
692
+ }
693
+
694
+ if (_isCliEntry()) {
673
695
  try {
674
696
  process.exitCode = main();
675
697
  } catch (e) {
@@ -412,7 +412,29 @@ function _pyStrCmp(a: string, b: string): number {
412
412
  return ca.length - cb.length;
413
413
  }
414
414
 
415
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
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()) {
416
438
  try {
417
439
  process.exitCode = main();
418
440
  } catch (e) {
@@ -619,9 +619,28 @@ function _dumpString(s: string): string {
619
619
  return out + '"';
620
620
  }
621
621
 
622
- const _isCliEntry =
623
- process.argv[1] !== undefined &&
624
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
625
- if (_isCliEntry || process.argv[1] === _HERE) {
622
+ function _isCliEntry(): boolean {
623
+ if (process.argv[1] === undefined) {
624
+ return false;
625
+ }
626
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
627
+ if (import.meta.url === argvUrl) {
628
+ return true;
629
+ }
630
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
631
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
632
+ // import.meta.url is the resolved real path while argv[1] keeps the
633
+ // symlink path. Compare realpaths so the entry guard still fires
634
+ // (without this the CLI silently no-ops when run through a symlink).
635
+ try {
636
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
637
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
638
+ return here === argv;
639
+ } catch {
640
+ return false;
641
+ }
642
+ }
643
+
644
+ if (_isCliEntry() || process.argv[1] === _HERE) {
626
645
  process.exit(main());
627
646
  }
@@ -429,7 +429,29 @@ function _pyStrCmp(a: string, b: string): number {
429
429
  return ca.length - cb.length;
430
430
  }
431
431
 
432
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
432
+ function _isCliEntry(): boolean {
433
+ if (process.argv[1] === undefined) {
434
+ return false;
435
+ }
436
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
437
+ if (import.meta.url === argvUrl) {
438
+ return true;
439
+ }
440
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
441
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
442
+ // import.meta.url is the resolved real path while argv[1] keeps the
443
+ // symlink path. Compare realpaths so the entry guard still fires
444
+ // (without this the CLI silently no-ops when run through a symlink).
445
+ try {
446
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
447
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
448
+ return here === argv;
449
+ } catch {
450
+ return false;
451
+ }
452
+ }
453
+
454
+ if (_isCliEntry()) {
433
455
  try {
434
456
  process.exitCode = main();
435
457
  } catch (e) {
@@ -26,7 +26,7 @@
26
26
  import { createHash } from 'node:crypto';
27
27
  import * as fs from 'node:fs';
28
28
  import process from 'node:process';
29
- import { pathToFileURL } from 'node:url';
29
+ import { fileURLToPath, pathToFileURL } from 'node:url';
30
30
  import * as path from 'node:path';
31
31
  import YAML, { parseDocument } from 'yaml';
32
32
 
@@ -324,8 +324,30 @@ function _parseArgs(argv: string[]): ParsedArgs {
324
324
  return args;
325
325
  }
326
326
 
327
+ function _isCliEntry(): boolean {
328
+ if (process.argv[1] === undefined) {
329
+ return false;
330
+ }
331
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
332
+ if (import.meta.url === argvUrl) {
333
+ return true;
334
+ }
335
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
336
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
337
+ // import.meta.url is the resolved real path while argv[1] keeps the
338
+ // symlink path. Compare realpaths so the entry guard still fires
339
+ // (without this the CLI silently no-ops when run through a symlink).
340
+ try {
341
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
342
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
343
+ return here === argv;
344
+ } catch {
345
+ return false;
346
+ }
347
+ }
348
+
327
349
  const _isMain =
328
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
350
+ _isCliEntry();
329
351
  if (_isMain) {
330
352
  process.exit(main());
331
353
  }
@@ -31,7 +31,7 @@
31
31
  import * as fs from 'node:fs';
32
32
  import * as path from 'node:path';
33
33
  import process from 'node:process';
34
- import { pathToFileURL } from 'node:url';
34
+ import { fileURLToPath, pathToFileURL } from 'node:url';
35
35
  import YAML, { parseDocument } from 'yaml';
36
36
 
37
37
 
@@ -1271,8 +1271,30 @@ function _escapeNonAscii(s: string): string {
1271
1271
  return out;
1272
1272
  }
1273
1273
 
1274
+ function _isCliEntry(): boolean {
1275
+ if (process.argv[1] === undefined) {
1276
+ return false;
1277
+ }
1278
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
1279
+ if (import.meta.url === argvUrl) {
1280
+ return true;
1281
+ }
1282
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
1283
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
1284
+ // import.meta.url is the resolved real path while argv[1] keeps the
1285
+ // symlink path. Compare realpaths so the entry guard still fires
1286
+ // (without this the CLI silently no-ops when run through a symlink).
1287
+ try {
1288
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
1289
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
1290
+ return here === argv;
1291
+ } catch {
1292
+ return false;
1293
+ }
1294
+ }
1295
+
1274
1296
  const _isMain =
1275
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
1297
+ _isCliEntry();
1276
1298
  if (_isMain) {
1277
1299
  process.exit(main());
1278
1300
  }
@@ -29,7 +29,7 @@
29
29
  import * as fs from 'node:fs';
30
30
  import * as path from 'node:path';
31
31
  import process from 'node:process';
32
- import { pathToFileURL } from 'node:url';
32
+ import { fileURLToPath, pathToFileURL } from 'node:url';
33
33
  import YAML, { parseDocument } from 'yaml';
34
34
 
35
35
  import * as memory_status from './memory_status.js';
@@ -838,8 +838,30 @@ export function main(): number {
838
838
  return 0;
839
839
  }
840
840
 
841
+ function _isCliEntry(): boolean {
842
+ if (process.argv[1] === undefined) {
843
+ return false;
844
+ }
845
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
846
+ if (import.meta.url === argvUrl) {
847
+ return true;
848
+ }
849
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
850
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
851
+ // import.meta.url is the resolved real path while argv[1] keeps the
852
+ // symlink path. Compare realpaths so the entry guard still fires
853
+ // (without this the CLI silently no-ops when run through a symlink).
854
+ try {
855
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
856
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
857
+ return here === argv;
858
+ } catch {
859
+ return false;
860
+ }
861
+ }
862
+
841
863
  const _isMain =
842
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
864
+ _isCliEntry();
843
865
  if (_isMain) {
844
866
  process.exit(main());
845
867
  }
@@ -31,7 +31,7 @@ import * as crypto from 'node:crypto';
31
31
  import * as fs from 'node:fs';
32
32
  import * as path from 'node:path';
33
33
  import process from 'node:process';
34
- import { pathToFileURL } from 'node:url';
34
+ import { fileURLToPath, pathToFileURL } from 'node:url';
35
35
 
36
36
  // Mutable so tests can repoint at a tmp tree (monkeypatch parity).
37
37
  export let INTAKE_ROOT = path.join('agents', 'memory', 'intake');
@@ -410,8 +410,30 @@ export function main(): number {
410
410
  return 0;
411
411
  }
412
412
 
413
+ function _isCliEntry(): boolean {
414
+ if (process.argv[1] === undefined) {
415
+ return false;
416
+ }
417
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
418
+ if (import.meta.url === argvUrl) {
419
+ return true;
420
+ }
421
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
422
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
423
+ // import.meta.url is the resolved real path while argv[1] keeps the
424
+ // symlink path. Compare realpaths so the entry guard still fires
425
+ // (without this the CLI silently no-ops when run through a symlink).
426
+ try {
427
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
428
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
429
+ return here === argv;
430
+ } catch {
431
+ return false;
432
+ }
433
+ }
434
+
413
435
  const _isMain =
414
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
436
+ _isCliEntry();
415
437
  if (_isMain) {
416
438
  process.exit(main());
417
439
  }
@@ -20,7 +20,9 @@
20
20
  */
21
21
 
22
22
  import process from 'node:process';
23
- import { pathToFileURL } from 'node:url';
23
+ import * as fs from 'node:fs';
24
+ import * as path from 'node:path';
25
+ import { fileURLToPath, pathToFileURL } from 'node:url';
24
26
 
25
27
  // Retrieval contract version served by the file-backed backend.
26
28
  // Source of truth: internal/schemas/retrieval-v1.schema.json.
@@ -174,8 +176,30 @@ export function main(): number {
174
176
  return 0;
175
177
  }
176
178
 
179
+ function _isCliEntry(): boolean {
180
+ if (process.argv[1] === undefined) {
181
+ return false;
182
+ }
183
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
184
+ if (import.meta.url === argvUrl) {
185
+ return true;
186
+ }
187
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
188
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
189
+ // import.meta.url is the resolved real path while argv[1] keeps the
190
+ // symlink path. Compare realpaths so the entry guard still fires
191
+ // (without this the CLI silently no-ops when run through a symlink).
192
+ try {
193
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
194
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
195
+ return here === argv;
196
+ } catch {
197
+ return false;
198
+ }
199
+ }
200
+
177
201
  const _isMain =
178
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href;
202
+ _isCliEntry();
179
203
  if (_isMain) {
180
204
  try {
181
205
  process.exitCode = main();
@@ -333,9 +333,28 @@ export function main(): number {
333
333
  return 0;
334
334
  }
335
335
 
336
- const _isCliEntry =
337
- process.argv[1] !== undefined &&
338
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
339
- if (_isCliEntry) {
336
+ function _isCliEntry(): boolean {
337
+ if (process.argv[1] === undefined) {
338
+ return false;
339
+ }
340
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
341
+ if (import.meta.url === argvUrl) {
342
+ return true;
343
+ }
344
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
345
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
346
+ // import.meta.url is the resolved real path while argv[1] keeps the
347
+ // symlink path. Compare realpaths so the entry guard still fires
348
+ // (without this the CLI silently no-ops when run through a symlink).
349
+ try {
350
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
351
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
352
+ return here === argv;
353
+ } catch {
354
+ return false;
355
+ }
356
+ }
357
+
358
+ if (_isCliEntry()) {
340
359
  process.exit(main());
341
360
  }