@event4u/agent-config 8.1.0 → 8.3.0

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