@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
@@ -9,6 +9,10 @@
9
9
  # under `.augment/templates/scripts/pr-risk-config.example.yml`). Without a
10
10
  # config file the script falls back to sensible cross-stack defaults.
11
11
  #
12
+ # Runtime: Node/tsx (py2ts migration) — the classifiers ship inside the
13
+ # `@event4u/agent-config` package and run through the package's own tsx
14
+ # runner; no Python and no consumer-local script copy required.
15
+ #
12
16
  # This workflow is purely informational — it does NOT block merges. Gate the
13
17
  # PR on a separate required check if you want a hard stop.
14
18
 
@@ -34,21 +38,26 @@ jobs:
34
38
  with:
35
39
  fetch-depth: 0
36
40
 
37
- - name: Set up Python
38
- uses: actions/setup-python@v5
41
+ - name: Set up Node
42
+ uses: actions/setup-node@v4
39
43
  with:
40
- python-version: "3.12"
44
+ node-version: "22"
41
45
 
42
- - name: Install dependencies
43
- run: pip install pyyaml
46
+ - name: Install agent-config
47
+ run: npm install -g @event4u/agent-config
44
48
 
45
49
  - name: Classify risk
46
50
  id: risk
47
51
  env:
48
52
  BASE_SHA: ${{ github.event.pull_request.base.sha }}
49
53
  HEAD_SHA: ${{ github.event.pull_request.head.sha }}
54
+ # Runs the packaged classifier via the package's own tsx runner; a
55
+ # consumer-local `scripts/pr_risk_review.ts` customization wins.
50
56
  run: |
51
- python3 scripts/pr_risk_review.py \
57
+ PKG="$(npm root -g)/@event4u/agent-config"
58
+ SCRIPT="$PKG/dist/agent-src/templates/scripts/pr_risk_review.ts"
59
+ [ -f scripts/pr_risk_review.ts ] && SCRIPT=scripts/pr_risk_review.ts
60
+ node "$PKG/node_modules/tsx/dist/cli.mjs" "$SCRIPT" \
52
61
  --base "$BASE_SHA" \
53
62
  --head "$HEAD_SHA" \
54
63
  --config .github/pr-risk-config.yml \
@@ -100,7 +109,6 @@ jobs:
100
109
 
101
110
  - name: Classify review routing
102
111
  id: routing
103
- if: hashFiles('scripts/pr_review_routing.py') != ''
104
112
  env:
105
113
  BASE_SHA: ${{ github.event.pull_request.base.sha }}
106
114
  HEAD_SHA: ${{ github.event.pull_request.head.sha }}
@@ -109,7 +117,10 @@ jobs:
109
117
  # back to agents/ — matching the reviewer-awareness rule.
110
118
  # Missing data files emit a generic fallback, not an error.
111
119
  run: |
112
- python3 scripts/pr_review_routing.py \
120
+ PKG="$(npm root -g)/@event4u/agent-config"
121
+ SCRIPT="$PKG/dist/agent-src/templates/scripts/pr_review_routing.ts"
122
+ [ -f scripts/pr_review_routing.ts ] && SCRIPT=scripts/pr_review_routing.ts
123
+ node "$PKG/node_modules/tsx/dist/cli.mjs" "$SCRIPT" \
113
124
  --base "$BASE_SHA" \
114
125
  --head "$HEAD_SHA" \
115
126
  --output routing-report.md \
@@ -15,9 +15,12 @@
15
15
  # This workflow is intentionally read-only — it never blocks a PR and
16
16
  # never modifies the repo. It only opens / updates a tracking issue.
17
17
  #
18
+ # Runtime: Node/tsx (py2ts migration) — the report runs through the
19
+ # repo's own tsx runner (`./scripts-run`); no Python required.
20
+ #
18
21
  # Prerequisites:
19
- # - `scripts/memory_report.py` present in the repo (ships with the
20
- # package).
22
+ # - `dist/agent-src/templates/scripts/memory_report.ts` present in the
23
+ # repo (ships with the package).
21
24
  # - Proposals live under `agents/proposals/` with the schema defined
22
25
  # in `dist/agent-src/templates/agents/proposal.example.md`.
23
26
 
@@ -45,13 +48,13 @@ jobs:
45
48
  with:
46
49
  fetch-depth: 0
47
50
 
48
- - name: Set up Python
49
- uses: actions/setup-python@v5
51
+ - name: Set up Node
52
+ uses: actions/setup-node@v4
50
53
  with:
51
- python-version: "3.12"
54
+ node-version: "22"
52
55
 
53
- - name: Install PyYAML
54
- run: pip install pyyaml
56
+ - name: Install dependencies
57
+ run: npm ci
55
58
 
56
59
  - name: Build quarterly report
57
60
  id: report
@@ -63,7 +66,7 @@ jobs:
63
66
  echo "Accepted vs. retired for the last quarter."
64
67
  echo
65
68
  echo '```'
66
- python3 scripts/memory_report.py --quarterly --format text
69
+ ./scripts-run dist/agent-src/templates/scripts/memory_report --format text
67
70
  echo '```'
68
71
  echo
69
72
  echo "Open proposals by stage:"
@@ -9,12 +9,10 @@
9
9
  # A green check here proves the dashboard reflects reality on every PR
10
10
  # that touches roadmaps.
11
11
  #
12
- # Prerequisites:
13
- # - `.augment/scripts/update_roadmap_progress.py` installed by
14
- # `task install` (or `./agent-config install`).
15
- # - At least one file exists under `agents/roadmaps/` — absence
16
- # short-circuits the check with a passing exit (consumer projects
17
- # that haven't adopted roadmaps stay green).
12
+ # Runtime: Node/tsx (py2ts migration) — the check runs through the
13
+ # `@event4u/agent-config` package via npx; no Python, no local install
14
+ # required. Absence of `agents/roadmaps/` short-circuits with a passing
15
+ # exit (consumer projects that haven't adopted roadmaps stay green).
18
16
  #
19
17
  # This workflow is intentionally narrow: it only runs when relevant
20
18
  # files change, so it adds zero overhead to unrelated PRs.
@@ -27,12 +25,12 @@ on:
27
25
  paths:
28
26
  - "agents/roadmaps/**"
29
27
  - "agents/roadmaps-progress.md"
30
- - ".augment/scripts/update_roadmap_progress.py"
28
+ - ".augment/scripts/update_roadmap_progress.ts"
31
29
  pull_request:
32
30
  paths:
33
31
  - "agents/roadmaps/**"
34
32
  - "agents/roadmaps-progress.md"
35
- - ".augment/scripts/update_roadmap_progress.py"
33
+ - ".augment/scripts/update_roadmap_progress.ts"
36
34
  workflow_dispatch: {}
37
35
 
38
36
  permissions:
@@ -45,12 +43,12 @@ jobs:
45
43
  steps:
46
44
  - uses: actions/checkout@v4
47
45
 
48
- - uses: actions/setup-python@v5
46
+ - uses: actions/setup-node@v4
49
47
  with:
50
- python-version: "3.11"
48
+ node-version: "22"
51
49
 
52
50
  - name: Run roadmap progress check
53
- run: python3 .augment/scripts/update_roadmap_progress.py --check
51
+ run: npx --yes @event4u/agent-config roadmap:progress-check
54
52
 
55
53
  - name: Remediation hint on failure
56
54
  if: failure()
@@ -58,6 +56,6 @@ jobs:
58
56
  echo "::error::roadmaps-progress.md is stale."
59
57
  echo "Regenerate locally with one of:"
60
58
  echo " ./agent-config roadmap:progress"
59
+ echo " agent-config roadmap:progress"
61
60
  echo " task roadmap-progress"
62
- echo " python3 .augment/scripts/update_roadmap_progress.py"
63
61
  echo "Then commit and push the updated agents/roadmaps-progress.md."
@@ -16,22 +16,23 @@
16
16
  set -e
17
17
 
18
18
  # Only act on commits that touch the source-of-truth artefact tree
19
- # (or the linter / vocabulary that govern it).
19
+ # (or the linter / vocabulary that govern it). The runtime is Node/tsx
20
+ # (py2ts migration) — the linter runs through the package tsx runner,
21
+ # never python3.
20
22
  staged="$(git diff --cached --name-only --diff-filter=ACMR 2>/dev/null || true)"
21
23
  case "$staged" in
22
- *.agent-src.uncondensed/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.py*)
24
+ *.agent-src.uncondensed/*.md*|*src/agent-src/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.ts*)
23
25
  : ;;
24
26
  *)
25
27
  exit 0 ;;
26
28
  esac
27
29
 
28
- # Resolve the linter — prefer the consumer-shipped path, fall back to
29
- # the source-of-truth copy when run from inside the package itself.
30
+ # Resolve the linter — a source-repo artefact (the frontmatter contract
31
+ # governs the source tree; consumer repos have nothing to lint).
30
32
  script=""
31
33
  for cand in \
32
- ".augment/scripts/lint_artefact_frontmatter.py" \
33
- "dist/agent-src/scripts/lint_artefact_frontmatter.py" \
34
- "scripts/lint_artefact_frontmatter.py"; do
34
+ "src/scripts/lint_artefact_frontmatter.ts" \
35
+ ".augment/scripts/lint_artefact_frontmatter.ts"; do
35
36
  if [ -f "$cand" ]; then
36
37
  script="$cand"
37
38
  break
@@ -39,17 +40,26 @@ for cand in \
39
40
  done
40
41
 
41
42
  if [ -z "$script" ]; then
42
- echo "⚠️ pre-commit-frontmatter: lint_artefact_frontmatter.py not found." >&2
43
- echo " Run \`task install\` (or \`./agent-config install\`) and retry." >&2
43
+ echo "⚠️ pre-commit-frontmatter: lint_artefact_frontmatter.ts not found." >&2
44
44
  echo " Skipping check — letting commit through." >&2
45
45
  exit 0
46
46
  fi
47
47
 
48
- if ! python3 "$script" --quiet >/dev/null 2>&1; then
48
+ run_lint() {
49
+ if [ -x "./scripts-run" ]; then
50
+ ./scripts-run src/scripts/lint_artefact_frontmatter --quiet
51
+ elif [ -x "node_modules/.bin/tsx" ]; then
52
+ node_modules/.bin/tsx "$script" --quiet
53
+ else
54
+ npx tsx "$script" --quiet
55
+ fi
56
+ }
57
+
58
+ if ! run_lint >/dev/null 2>&1; then
49
59
  echo "❌ Artefact frontmatter lint failed (ADR-013 contract violation)." >&2
50
60
  echo "" >&2
51
61
  echo " Re-run for details:" >&2
52
- echo " python3 $script" >&2
62
+ echo " ./scripts-run src/scripts/lint_artefact_frontmatter" >&2
53
63
  echo " task lint-artefact-frontmatter" >&2
54
64
  echo "" >&2
55
65
  echo " Common fixes:" >&2
@@ -5,11 +5,14 @@
5
5
  # Two opt-in checks run on relevant staged paths and short-circuit
6
6
  # otherwise:
7
7
  # 1. agents/roadmaps-progress.md sync (against agents/roadmaps/*.md)
8
- # 2. ADR-013 per-artefact frontmatter contract (.agent-src.uncondensed/*.md)
8
+ # 2. ADR-013 per-artefact frontmatter contract (source repo only)
9
+ #
10
+ # The runtime is Node/tsx (py2ts migration) — both checks run through the
11
+ # `agent-config` CLI / the package tsx runner, never python3.
9
12
  #
10
13
  # To run manually:
11
14
  # ./agent-config roadmap:progress-check
12
- # python3 scripts/lint_artefact_frontmatter.py
15
+ # ./scripts-run src/scripts/lint_artefact_frontmatter
13
16
  #
14
17
  # To uninstall:
15
18
  # rm .git/hooks/pre-commit
@@ -20,11 +23,11 @@ staged="$(git diff --cached --name-only --diff-filter=ACMR 2>/dev/null || true)"
20
23
  roadmap_relevant=false
21
24
  frontmatter_relevant=false
22
25
  case "$staged" in
23
- *agents/roadmaps/*.md*|*agents/roadmaps-progress.md*|*.augment/scripts/update_roadmap_progress.py*)
26
+ *agents/roadmaps/*.md*|*agents/roadmaps-progress.md*|*.augment/scripts/update_roadmap_progress.ts*)
24
27
  roadmap_relevant=true ;;
25
28
  esac
26
29
  case "$staged" in
27
- *.agent-src.uncondensed/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.py*)
30
+ *.agent-src.uncondensed/*.md*|*src/agent-src/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.ts*)
28
31
  frontmatter_relevant=true ;;
29
32
  esac
30
33
 
@@ -32,33 +35,32 @@ if ! $roadmap_relevant && ! $frontmatter_relevant; then
32
35
  exit 0
33
36
  fi
34
37
 
35
- resolve() {
36
- local cand
37
- for cand in "$@"; do
38
- if [ -f "$cand" ]; then
39
- printf '%s\n' "$cand"
40
- return 0
41
- fi
42
- done
38
+ # Resolve the agent-config CLI: project wrapper first (customization wins),
39
+ # then the global binary (ADR-020 global-only consumers).
40
+ agent_config_bin() {
41
+ if [ -x "./agent-config" ]; then
42
+ printf '%s\n' "./agent-config"
43
+ return 0
44
+ fi
45
+ if command -v agent-config >/dev/null 2>&1; then
46
+ printf '%s\n' "agent-config"
47
+ return 0
48
+ fi
43
49
  return 1
44
50
  }
45
51
 
46
52
  # --- Check 1: roadmap progress dashboard sync --------------------------
47
53
  if $roadmap_relevant; then
48
- rp_script="$(resolve \
49
- ".augment/scripts/update_roadmap_progress.py" \
50
- "dist/agent-src/scripts/update_roadmap_progress.py" \
51
- ".agent-src.uncondensed/scripts/update_roadmap_progress.py" || true)"
52
-
53
- if [ -z "$rp_script" ]; then
54
- echo "⚠️ pre-commit: update_roadmap_progress.py not found — skipping roadmap check." >&2
55
- elif ! python3 "$rp_script" --check >/dev/null 2>&1; then
54
+ ac_bin="$(agent_config_bin || true)"
55
+ if [ -z "$ac_bin" ]; then
56
+ echo "⚠️ pre-commit: agent-config CLI not found — skipping roadmap check." >&2
57
+ echo " Install it: npm install -g @event4u/agent-config" >&2
58
+ elif ! "$ac_bin" roadmap:progress-check >/dev/null 2>&1; then
56
59
  echo "❌ agents/roadmaps-progress.md is stale relative to your staged changes." >&2
57
60
  echo "" >&2
58
61
  echo " Regenerate the dashboard with one of:" >&2
59
- echo " ./agent-config roadmap:progress" >&2
62
+ echo " $ac_bin roadmap:progress" >&2
60
63
  echo " task roadmap-progress" >&2
61
- echo " python3 $rp_script" >&2
62
64
  echo "" >&2
63
65
  echo " Then \`git add agents/roadmaps-progress.md\` and retry the commit." >&2
64
66
  echo "" >&2
@@ -69,19 +71,31 @@ if $roadmap_relevant; then
69
71
  fi
70
72
 
71
73
  # --- Check 2: ADR-013 artefact frontmatter contract --------------------
74
+ # Source-repo concern: the linter and the artefact tree only exist in the
75
+ # agent-config source repo; consumer repos skip silently.
72
76
  if $frontmatter_relevant; then
73
- fm_script="$(resolve \
74
- ".augment/scripts/lint_artefact_frontmatter.py" \
75
- "dist/agent-src/scripts/lint_artefact_frontmatter.py" \
76
- "scripts/lint_artefact_frontmatter.py" || true)"
77
+ fm_script=""
78
+ if [ -f "src/scripts/lint_artefact_frontmatter.ts" ]; then
79
+ fm_script="src/scripts/lint_artefact_frontmatter.ts"
80
+ fi
81
+
82
+ run_fm() {
83
+ if [ -x "./scripts-run" ]; then
84
+ ./scripts-run src/scripts/lint_artefact_frontmatter --quiet
85
+ elif [ -x "node_modules/.bin/tsx" ]; then
86
+ node_modules/.bin/tsx "$fm_script" --quiet
87
+ else
88
+ npx tsx "$fm_script" --quiet
89
+ fi
90
+ }
77
91
 
78
92
  if [ -z "$fm_script" ]; then
79
- echo "⚠️ pre-commit: lint_artefact_frontmatter.py not found — skipping frontmatter check." >&2
80
- elif ! python3 "$fm_script" --quiet >/dev/null 2>&1; then
93
+ : # not the source repo — frontmatter contract does not apply
94
+ elif ! run_fm >/dev/null 2>&1; then
81
95
  echo "❌ Artefact frontmatter lint failed (ADR-013 contract violation)." >&2
82
96
  echo "" >&2
83
97
  echo " Re-run for details:" >&2
84
- echo " python3 $fm_script" >&2
98
+ echo " ./scripts-run src/scripts/lint_artefact_frontmatter" >&2
85
99
  echo " task lint-artefact-frontmatter" >&2
86
100
  echo "" >&2
87
101
  echo " Common fixes:" >&2
@@ -158,15 +158,20 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
158
158
 
159
159
  ---
160
160
 
161
- ## Quality Gates (always apply at completion)
161
+ ## Quality Gates (remote CI by default)
162
162
 
163
163
  Every roadmap must pass the project's quality pipeline before it is
164
- considered done. **When** the pipeline runs during
164
+ considered done. **Where** that gate runs depends on
165
+ `quality.local_auto_run`: `false` or missing (default) → agent does NOT
166
+ run the pipeline locally — user runs it manually, remote CI on the PR
167
+ is the authoritative gate; run-end report says *"quality gates
168
+ delegated to remote CI"*, never that the tools passed. When
169
+ `local_auto_run: true`, **when** the local pipeline runs during
165
170
  `/roadmap:process-step|phase|full` is governed by
166
171
  `roadmap.quality_cadence` in `.agent-settings.yml`
167
172
  (`end_of_roadmap` default → once before archival; `per_phase` → after
168
- every phase; `per_step` → after every step). Either way, a final fresh
169
- run is mandatory before "complete" per `verify-before-complete`.
173
+ every phase; `per_step` → after every step), with a final fresh run
174
+ before "complete" per `verify-before-complete`.
170
175
 
171
176
  Common commands:
172
177
 
@@ -22,9 +22,9 @@ consumer's `.augment/`.
22
22
 
23
23
  Use **logical names** rooted at the source — never the
24
24
  `.agent-src.uncondensed/` prefix. The condense-time rewriter
25
- (`scripts/condense.py::_rewrite_paths`) resolves logical names to
25
+ (`scripts/condense.ts::_rewrite_paths`) resolves logical names to
26
26
  deployment-correct relative paths; the schema regex
27
- (`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.py`
27
+ (`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.ts`
28
28
  both reject the legacy prefix.
29
29
 
30
30
  | Write this (logical) | Forbidden (legacy) |
@@ -121,7 +121,7 @@ for full detail; rules are pointers, not playbooks.}
121
121
  | `tier` | yes | `kernel` (Iron Law floor), `tier-1` (default), `tier-2` (full profile only). Legacy values still accepted. |
122
122
  | `description` | yes | One sentence, ≤ 500 chars. Trigger-clarity wins over poetry. |
123
123
  | `source` | yes | `package` (this repo) or `project` (consumer override). |
124
- | `load_context` | no | Lazy context list — logical names only. Budget enforced by `lint_load_context.py`. |
124
+ | `load_context` | no | Lazy context list — logical names only. Budget enforced by `lint_load_context.ts`. |
125
125
  | `load_context_eager` | no | Eager context list — counts against per-rule char budget. |
126
126
  | `triggers` | no | Required on non-kernel rules per `rule-router.md`. |
127
127
  | `routes_to` | no | `skill:`, `guideline:`, `command:`, `contract:` targets. Forbidden on kernel rules. |
@@ -18,8 +18,8 @@ high-risk PRs.
18
18
  | File in package | Copy to | Purpose |
19
19
  |---|---|---|
20
20
  | `templates/github-workflows/pr-risk-review.yml` | `.github/workflows/pr-risk-review.yml` | GitHub Actions workflow |
21
- | `templates/scripts/pr_risk_review.ts` | `scripts/pr_risk_review.py` | Risk classifier (Python 3.10+, PyYAML) |
22
- | `templates/scripts/pr_review_routing.ts` | `scripts/pr_review_routing.py` | Routing classifier |
21
+ | `templates/scripts/pr_risk_review.ts` | `scripts/pr_risk_review.ts` | Risk classifier (TypeScript, run via tsx) |
22
+ | `templates/scripts/pr_review_routing.ts` | `scripts/pr_review_routing.ts` | Routing classifier |
23
23
  | `templates/scripts/pr-risk-config.example.yml` | `.github/pr-risk-config.yml` | Risk patterns (optional) |
24
24
  | `templates/scripts/ownership-map.example.yml` | `.github/ownership-map.yml` | Ownership entries (optional) |
25
25
  | `templates/scripts/historical-bug-patterns.example.yml` | `.github/historical-bug-patterns.yml` | Registered failure modes (optional) |
@@ -37,7 +37,7 @@ cp .augment/templates/scripts/historical-bug-patterns.example.yml .github/histor
37
37
  ```
38
38
 
39
39
  The routing step in the workflow is **conditional** — it only runs if
40
- `scripts/pr_review_routing.py` exists, so risk classification alone works
40
+ `scripts/pr_review_routing.ts` exists, so risk classification alone works
41
41
  without routing being installed.
42
42
 
43
43
  Create the three labels once (or let them be auto-created on first run):
@@ -118,8 +118,8 @@ the full schema.
118
118
 
119
119
  ```bash
120
120
  rm .github/workflows/pr-risk-review.yml
121
- rm scripts/pr_risk_review.py
122
- rm scripts/pr_review_routing.py
121
+ rm scripts/pr_risk_review.ts
122
+ rm scripts/pr_review_routing.ts
123
123
  rm .github/pr-risk-config.yml .github/ownership-map.yml .github/historical-bug-patterns.yml
124
124
  gh label delete risk:low risk:medium risk:high
125
125
  ```
@@ -168,7 +168,7 @@ PRs.
168
168
  | File in package | Copy to | Purpose |
169
169
  |---|---|---|
170
170
  | `templates/github-workflows/memory-hygiene.yml` | `.github/workflows/memory-hygiene.yml` | Weekly staleness workflow |
171
- | `templates/scripts/check_memory.ts` | `scripts/check_memory.py` | YAML schema + staleness validator |
171
+ | `templates/scripts/check_memory.ts` | `scripts/check_memory.ts` | YAML schema + staleness validator |
172
172
 
173
173
  ## Install
174
174
 
@@ -53,7 +53,7 @@ import { spawnSync } from 'node:child_process';
53
53
  import * as fs from 'node:fs';
54
54
  import * as path from 'node:path';
55
55
  import process from 'node:process';
56
- import { pathToFileURL } from 'node:url';
56
+ import { fileURLToPath, pathToFileURL } from 'node:url';
57
57
  import YAML, { parseDocument } from 'yaml';
58
58
 
59
59
  type Severity = 'error' | 'warning' | 'info';
@@ -631,8 +631,30 @@ function _emit(findings: Finding[], fmt: string): number {
631
631
  return errors.length > 0 ? 1 : 0;
632
632
  }
633
633
 
634
+ function _isCliEntry(): boolean {
635
+ if (process.argv[1] === undefined) {
636
+ return false;
637
+ }
638
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
639
+ if (import.meta.url === argvUrl) {
640
+ return true;
641
+ }
642
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
643
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
644
+ // import.meta.url is the resolved real path while argv[1] keeps the
645
+ // symlink path. Compare realpaths so the entry guard still fires
646
+ // (without this the CLI silently no-ops when run through a symlink).
647
+ try {
648
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
649
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
650
+ return here === argv;
651
+ } catch {
652
+ return false;
653
+ }
654
+ }
655
+
634
656
  const _isMain =
635
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href;
657
+ _isCliEntry();
636
658
  if (_isMain) {
637
659
  process.exit(main());
638
660
  }
@@ -332,10 +332,29 @@ function _set_intake_root_for_test(root: string): void {
332
332
  INTAKE_ROOT = root;
333
333
  }
334
334
 
335
- const _isCliEntry =
336
- process.argv[1] !== undefined &&
337
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
338
- if (_isCliEntry || process.argv[1] === _HERE) {
335
+ function _isCliEntry(): boolean {
336
+ if (process.argv[1] === undefined) {
337
+ return false;
338
+ }
339
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
340
+ if (import.meta.url === argvUrl) {
341
+ return true;
342
+ }
343
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
344
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
345
+ // import.meta.url is the resolved real path while argv[1] keeps the
346
+ // symlink path. Compare realpaths so the entry guard still fires
347
+ // (without this the CLI silently no-ops when run through a symlink).
348
+ try {
349
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
350
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
351
+ return here === argv;
352
+ } catch {
353
+ return false;
354
+ }
355
+ }
356
+
357
+ if (_isCliEntry() || process.argv[1] === _HERE) {
339
358
  process.exit(main());
340
359
  }
341
360
 
@@ -1,4 +1,4 @@
1
- # Historical bug patterns — consumed by scripts/pr_review_routing.py
1
+ # Historical bug patterns — consumed by scripts/pr_review_routing.ts
2
2
  #
3
3
  # Copy this file to `.github/historical-bug-patterns.yml` (preferred) or
4
4
  # `agents/historical-bug-patterns.yml` and curate the patterns from your
@@ -28,7 +28,7 @@
28
28
  import { createHash } from 'node:crypto';
29
29
  import * as fs from 'node:fs';
30
30
  import process from 'node:process';
31
- import { pathToFileURL } from 'node:url';
31
+ import { fileURLToPath, pathToFileURL } from 'node:url';
32
32
  import * as path from 'node:path';
33
33
  import YAML, { parseDocument } from 'yaml';
34
34
 
@@ -326,8 +326,30 @@ function _parseArgs(argv: string[]): ParsedArgs {
326
326
  return args;
327
327
  }
328
328
 
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
+
329
351
  const _isMain =
330
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
352
+ _isCliEntry();
331
353
  if (_isMain) {
332
354
  process.exit(main());
333
355
  }
@@ -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
  import YAML, { parseDocument } from 'yaml';
38
38
 
39
39
 
@@ -1060,8 +1060,30 @@ function _escapeNonAscii(s: string): string {
1060
1060
  return out;
1061
1061
  }
1062
1062
 
1063
+ function _isCliEntry(): boolean {
1064
+ if (process.argv[1] === undefined) {
1065
+ return false;
1066
+ }
1067
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
1068
+ if (import.meta.url === argvUrl) {
1069
+ return true;
1070
+ }
1071
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
1072
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
1073
+ // import.meta.url is the resolved real path while argv[1] keeps the
1074
+ // symlink path. Compare realpaths so the entry guard still fires
1075
+ // (without this the CLI silently no-ops when run through a symlink).
1076
+ try {
1077
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
1078
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
1079
+ return here === argv;
1080
+ } catch {
1081
+ return false;
1082
+ }
1083
+ }
1084
+
1063
1085
  const _isMain =
1064
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
1086
+ _isCliEntry();
1065
1087
  if (_isMain) {
1066
1088
  process.exit(main());
1067
1089
  }
@@ -30,7 +30,7 @@
30
30
  import * as fs from 'node:fs';
31
31
  import * as path from 'node:path';
32
32
  import process from 'node:process';
33
- import { pathToFileURL } from 'node:url';
33
+ import { fileURLToPath, pathToFileURL } from 'node:url';
34
34
  import YAML, { parseDocument } from 'yaml';
35
35
 
36
36
  import * as memory_status from './memory_status.js';
@@ -839,8 +839,30 @@ export function main(): number {
839
839
  return 0;
840
840
  }
841
841
 
842
+ function _isCliEntry(): boolean {
843
+ if (process.argv[1] === undefined) {
844
+ return false;
845
+ }
846
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
847
+ if (import.meta.url === argvUrl) {
848
+ return true;
849
+ }
850
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
851
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
852
+ // import.meta.url is the resolved real path while argv[1] keeps the
853
+ // symlink path. Compare realpaths so the entry guard still fires
854
+ // (without this the CLI silently no-ops when run through a symlink).
855
+ try {
856
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
857
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
858
+ return here === argv;
859
+ } catch {
860
+ return false;
861
+ }
862
+ }
863
+
842
864
  const _isMain =
843
- process.argv[1] !== undefined && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
865
+ _isCliEntry();
844
866
  if (_isMain) {
845
867
  process.exit(main());
846
868
  }