@event4u/agent-config 8.0.0 → 8.2.0

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