@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
@@ -137,10 +137,29 @@ function main(): number {
137
137
  return 1;
138
138
  }
139
139
 
140
- const _isCliEntry =
141
- process.argv[1] !== undefined &&
142
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
143
- if (_isCliEntry || process.argv[1] === _HERE) {
140
+ function _isCliEntry(): boolean {
141
+ if (process.argv[1] === undefined) {
142
+ return false;
143
+ }
144
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
145
+ if (import.meta.url === argvUrl) {
146
+ return true;
147
+ }
148
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
149
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
150
+ // import.meta.url is the resolved real path while argv[1] keeps the
151
+ // symlink path. Compare realpaths so the entry guard still fires
152
+ // (without this the CLI silently no-ops when run through a symlink).
153
+ try {
154
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
155
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
156
+ return here === argv;
157
+ } catch {
158
+ return false;
159
+ }
160
+ }
161
+
162
+ if (_isCliEntry() || process.argv[1] === _HERE) {
144
163
  process.exitCode = main();
145
164
  }
146
165
 
@@ -325,10 +325,29 @@ function main(argv?: readonly string[]): number {
325
325
  return 0;
326
326
  }
327
327
 
328
- const _isCliEntry =
329
- process.argv[1] !== undefined &&
330
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
331
- if (_isCliEntry || process.argv[1] === _HERE) {
328
+ function _isCliEntry(): boolean {
329
+ if (process.argv[1] === undefined) {
330
+ return false;
331
+ }
332
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
333
+ if (import.meta.url === argvUrl) {
334
+ return true;
335
+ }
336
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
337
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
338
+ // import.meta.url is the resolved real path while argv[1] keeps the
339
+ // symlink path. Compare realpaths so the entry guard still fires
340
+ // (without this the CLI silently no-ops when run through a symlink).
341
+ try {
342
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
343
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
344
+ return here === argv;
345
+ } catch {
346
+ return false;
347
+ }
348
+ }
349
+
350
+ if (_isCliEntry() || process.argv[1] === _HERE) {
332
351
  process.exitCode = main();
333
352
  }
334
353
 
@@ -173,10 +173,29 @@ export function main(): number {
173
173
  return 0;
174
174
  }
175
175
 
176
- const _isCliEntry =
177
- process.argv[1] !== undefined &&
178
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
179
- if (_isCliEntry || process.argv[1] === _HERE) {
176
+ function _isCliEntry(): boolean {
177
+ if (process.argv[1] === undefined) {
178
+ return false;
179
+ }
180
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
181
+ if (import.meta.url === argvUrl) {
182
+ return true;
183
+ }
184
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
185
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
186
+ // import.meta.url is the resolved real path while argv[1] keeps the
187
+ // symlink path. Compare realpaths so the entry guard still fires
188
+ // (without this the CLI silently no-ops when run through a symlink).
189
+ try {
190
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
191
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
192
+ return here === argv;
193
+ } catch {
194
+ return false;
195
+ }
196
+ }
197
+
198
+ if (_isCliEntry() || process.argv[1] === _HERE) {
180
199
  process.exit(main());
181
200
  }
182
201
 
@@ -364,10 +364,29 @@ function main(argv?: readonly string[]): number {
364
364
  return 0;
365
365
  }
366
366
 
367
- const _isCliEntry =
368
- process.argv[1] !== undefined &&
369
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
370
- if (_isCliEntry || process.argv[1] === _HERE) {
367
+ function _isCliEntry(): boolean {
368
+ if (process.argv[1] === undefined) {
369
+ return false;
370
+ }
371
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
372
+ if (import.meta.url === argvUrl) {
373
+ return true;
374
+ }
375
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
376
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
377
+ // import.meta.url is the resolved real path while argv[1] keeps the
378
+ // symlink path. Compare realpaths so the entry guard still fires
379
+ // (without this the CLI silently no-ops when run through a symlink).
380
+ try {
381
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
382
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
383
+ return here === argv;
384
+ } catch {
385
+ return false;
386
+ }
387
+ }
388
+
389
+ if (_isCliEntry() || process.argv[1] === _HERE) {
371
390
  try {
372
391
  process.exit(main());
373
392
  } catch (e) {
Binary file
@@ -691,10 +691,29 @@ function _usageError(arg: string): string {
691
691
  );
692
692
  }
693
693
 
694
- const _isCliEntry =
695
- process.argv[1] !== undefined &&
696
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
697
- if (_isCliEntry || process.argv[1] === _HERE) {
694
+ function _isCliEntry(): boolean {
695
+ if (process.argv[1] === undefined) {
696
+ return false;
697
+ }
698
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
699
+ if (import.meta.url === argvUrl) {
700
+ return true;
701
+ }
702
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
703
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
704
+ // import.meta.url is the resolved real path while argv[1] keeps the
705
+ // symlink path. Compare realpaths so the entry guard still fires
706
+ // (without this the CLI silently no-ops when run through a symlink).
707
+ try {
708
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
709
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
710
+ return here === argv;
711
+ } catch {
712
+ return false;
713
+ }
714
+ }
715
+
716
+ if (_isCliEntry() || process.argv[1] === _HERE) {
698
717
  process.exit(main());
699
718
  }
700
719
 
@@ -489,9 +489,28 @@ export function main(argv?: readonly string[]): number {
489
489
  }
490
490
 
491
491
  const _HERE = fileURLToPath(import.meta.url);
492
- const _isCliEntry =
493
- process.argv[1] !== undefined &&
494
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
495
- if (_isCliEntry || process.argv[1] === _HERE) {
492
+ function _isCliEntry(): boolean {
493
+ if (process.argv[1] === undefined) {
494
+ return false;
495
+ }
496
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
497
+ if (import.meta.url === argvUrl) {
498
+ return true;
499
+ }
500
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
501
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
502
+ // import.meta.url is the resolved real path while argv[1] keeps the
503
+ // symlink path. Compare realpaths so the entry guard still fires
504
+ // (without this the CLI silently no-ops when run through a symlink).
505
+ try {
506
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
507
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
508
+ return here === argv;
509
+ } catch {
510
+ return false;
511
+ }
512
+ }
513
+
514
+ if (_isCliEntry() || process.argv[1] === _HERE) {
496
515
  process.exit(main());
497
516
  }
@@ -337,10 +337,29 @@ function _parse_args(argv: readonly string[]): boolean {
337
337
  return quiet;
338
338
  }
339
339
 
340
- const _isCliEntry =
341
- process.argv[1] !== undefined &&
342
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
343
- if (_isCliEntry || process.argv[1] === _HERE) {
340
+ function _isCliEntry(): boolean {
341
+ if (process.argv[1] === undefined) {
342
+ return false;
343
+ }
344
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
345
+ if (import.meta.url === argvUrl) {
346
+ return true;
347
+ }
348
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
349
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
350
+ // import.meta.url is the resolved real path while argv[1] keeps the
351
+ // symlink path. Compare realpaths so the entry guard still fires
352
+ // (without this the CLI silently no-ops when run through a symlink).
353
+ try {
354
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
355
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
356
+ return here === argv;
357
+ } catch {
358
+ return false;
359
+ }
360
+ }
361
+
362
+ if (_isCliEntry() || process.argv[1] === _HERE) {
344
363
  process.exit(main(process.argv.slice(2)));
345
364
  }
346
365
 
@@ -364,10 +364,29 @@ function _pyListRepr(items: readonly string[]): string {
364
364
  return `[${items.map((i) => _pyRepr(i)).join(', ')}]`;
365
365
  }
366
366
 
367
- const _isCliEntry =
368
- process.argv[1] !== undefined &&
369
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
370
- if (_isCliEntry || process.argv[1] === _HERE) {
367
+ function _isCliEntry(): boolean {
368
+ if (process.argv[1] === undefined) {
369
+ return false;
370
+ }
371
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
372
+ if (import.meta.url === argvUrl) {
373
+ return true;
374
+ }
375
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
376
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
377
+ // import.meta.url is the resolved real path while argv[1] keeps the
378
+ // symlink path. Compare realpaths so the entry guard still fires
379
+ // (without this the CLI silently no-ops when run through a symlink).
380
+ try {
381
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
382
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
383
+ return here === argv;
384
+ } catch {
385
+ return false;
386
+ }
387
+ }
388
+
389
+ if (_isCliEntry() || process.argv[1] === _HERE) {
371
390
  process.exit(main());
372
391
  }
373
392
 
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Guard against `internal/glama/README.md` drifting from the committed
4
+ * `internal/glama/build` / `internal/glama/run` scripts it documents.
5
+ *
6
+ * Extracts the single canonical command line each script actually runs
7
+ * (the last non-comment, non-`set -euo pipefail` line — `exec ` stripped)
8
+ * and asserts that literal string appears verbatim somewhere in the README.
9
+ * Catches the exact failure mode fixed in road-to-mcp-full-power.md Phase 1:
10
+ * the README described a Python/uv build long after the scripts moved to
11
+ * Node/tsx.
12
+ *
13
+ * Exit codes: 0 no drift, 1 one or more scripts' canonical command is not
14
+ * documented verbatim in the README.
15
+ */
16
+
17
+ import * as fs from 'node:fs';
18
+ import * as path from 'node:path';
19
+ import { fileURLToPath } from 'node:url';
20
+
21
+ const _HERE = fileURLToPath(import.meta.url);
22
+ const REPO = path.resolve(path.dirname(_HERE), '..', '..');
23
+ const GLAMA_DIR = path.join(REPO, 'internal', 'glama');
24
+
25
+ interface ScriptSpec {
26
+ file: string;
27
+ /** Strip this exact prefix from the extracted command line before comparing. */
28
+ stripPrefix?: string;
29
+ }
30
+
31
+ const SCRIPTS: readonly ScriptSpec[] = [
32
+ { file: 'build' },
33
+ { file: 'run', stripPrefix: 'exec ' },
34
+ ];
35
+
36
+ function _canonicalCommand(scriptPath: string, stripPrefix?: string): string {
37
+ const lines = fs.readFileSync(scriptPath, 'utf8').split('\n');
38
+ const candidates = lines
39
+ .map((l) => l.trim())
40
+ .filter((l) => l.length > 0 && !l.startsWith('#') && l !== 'set -euo pipefail');
41
+ const last = candidates[candidates.length - 1] ?? '';
42
+ return stripPrefix && last.startsWith(stripPrefix) ? last.slice(stripPrefix.length) : last;
43
+ }
44
+
45
+ function main(): number {
46
+ const readmePath = path.join(GLAMA_DIR, 'README.md');
47
+ const readme = fs.readFileSync(readmePath, 'utf8');
48
+
49
+ let failed = false;
50
+ for (const spec of SCRIPTS) {
51
+ const scriptPath = path.join(GLAMA_DIR, spec.file);
52
+ const cmd = _canonicalCommand(scriptPath, spec.stripPrefix);
53
+ if (!cmd) {
54
+ console.error(`❌ internal/glama/${spec.file}: could not extract a canonical command line`);
55
+ failed = true;
56
+ continue;
57
+ }
58
+ if (!readme.includes(cmd)) {
59
+ console.error(
60
+ `❌ drift: internal/glama/${spec.file} runs \`${cmd}\` — not found verbatim in internal/glama/README.md`,
61
+ );
62
+ failed = true;
63
+ }
64
+ }
65
+
66
+ if (failed) {
67
+ console.error('\nUpdate internal/glama/README.md to match the committed build/run scripts.');
68
+ return 1;
69
+ }
70
+
71
+ process.stdout.write('✅ internal/glama/README.md matches build/run scripts — no drift.\n');
72
+ return 0;
73
+ }
74
+
75
+ process.exit(main());
@@ -412,9 +412,30 @@ export function main(argv: string[]): number {
412
412
  return lint(policy, quiet);
413
413
  }
414
414
 
415
+ function _isCliEntry(): boolean {
416
+ if (process.argv[1] === undefined) {
417
+ return false;
418
+ }
419
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
420
+ if (import.meta.url === argvUrl) {
421
+ return true;
422
+ }
423
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
424
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
425
+ // import.meta.url is the resolved real path while argv[1] keeps the
426
+ // symlink path. Compare realpaths so the entry guard still fires
427
+ // (without this the CLI silently no-ops when run through a symlink).
428
+ try {
429
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
430
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
431
+ return here === argv;
432
+ } catch {
433
+ return false;
434
+ }
435
+ }
436
+
415
437
  const isCliEntry =
416
- process.argv[1] !== undefined &&
417
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
438
+ _isCliEntry();
418
439
  if (isCliEntry) {
419
440
  process.exit(main(process.argv.slice(2)));
420
441
  }
@@ -343,10 +343,29 @@ export function main(argv?: readonly string[]): number {
343
343
  return 1;
344
344
  }
345
345
 
346
- const _isCliEntry =
347
- process.argv[1] !== undefined &&
348
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
349
- if (_isCliEntry || process.argv[1] === _HERE) {
346
+ function _isCliEntry(): boolean {
347
+ if (process.argv[1] === undefined) {
348
+ return false;
349
+ }
350
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
351
+ if (import.meta.url === argvUrl) {
352
+ return true;
353
+ }
354
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
355
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
356
+ // import.meta.url is the resolved real path while argv[1] keeps the
357
+ // symlink path. Compare realpaths so the entry guard still fires
358
+ // (without this the CLI silently no-ops when run through a symlink).
359
+ try {
360
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
361
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
362
+ return here === argv;
363
+ } catch {
364
+ return false;
365
+ }
366
+ }
367
+
368
+ if (_isCliEntry() || process.argv[1] === _HERE) {
350
369
  process.exit(main());
351
370
  }
352
371
 
@@ -30,7 +30,7 @@
30
30
 
31
31
  import * as fs from 'node:fs';
32
32
  import * as path from 'node:path';
33
- import { pathToFileURL } from 'node:url';
33
+ import { fileURLToPath, pathToFileURL } from 'node:url';
34
34
 
35
35
  import * as sl from './_lib/security_lint.js';
36
36
 
@@ -342,9 +342,28 @@ export function main(argv: readonly string[] | null = null): number {
342
342
  return sl.report(findings, { check_label: 'hidden-unicode' });
343
343
  }
344
344
 
345
- const _isCliEntry =
346
- process.argv[1] !== undefined &&
347
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
348
- if (_isCliEntry) {
345
+ function _isCliEntry(): boolean {
346
+ if (process.argv[1] === undefined) {
347
+ return false;
348
+ }
349
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
350
+ if (import.meta.url === argvUrl) {
351
+ return true;
352
+ }
353
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
354
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
355
+ // import.meta.url is the resolved real path while argv[1] keeps the
356
+ // symlink path. Compare realpaths so the entry guard still fires
357
+ // (without this the CLI silently no-ops when run through a symlink).
358
+ try {
359
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
360
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
361
+ return here === argv;
362
+ } catch {
363
+ return false;
364
+ }
365
+ }
366
+
367
+ if (_isCliEntry()) {
349
368
  process.exitCode = main();
350
369
  }
@@ -300,10 +300,29 @@ export function main(argv?: readonly string[]): number {
300
300
  return lint(args.manifest, args.settings, { strict: args.strict });
301
301
  }
302
302
 
303
- const _isCliEntry =
304
- process.argv[1] !== undefined &&
305
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
306
- if (_isCliEntry || process.argv[1] === _HERE) {
303
+ function _isCliEntry(): boolean {
304
+ if (process.argv[1] === undefined) {
305
+ return false;
306
+ }
307
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
308
+ if (import.meta.url === argvUrl) {
309
+ return true;
310
+ }
311
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
312
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
313
+ // import.meta.url is the resolved real path while argv[1] keeps the
314
+ // symlink path. Compare realpaths so the entry guard still fires
315
+ // (without this the CLI silently no-ops when run through a symlink).
316
+ try {
317
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
318
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
319
+ return here === argv;
320
+ } catch {
321
+ return false;
322
+ }
323
+ }
324
+
325
+ if (_isCliEntry() || process.argv[1] === _HERE) {
307
326
  process.exit(main());
308
327
  }
309
328
 
@@ -346,9 +346,30 @@ export function main(argv: string[]): number {
346
346
  return lint(manifest, strict);
347
347
  }
348
348
 
349
+ function _isCliEntry(): boolean {
350
+ if (process.argv[1] === undefined) {
351
+ return false;
352
+ }
353
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
354
+ if (import.meta.url === argvUrl) {
355
+ return true;
356
+ }
357
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
358
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
359
+ // import.meta.url is the resolved real path while argv[1] keeps the
360
+ // symlink path. Compare realpaths so the entry guard still fires
361
+ // (without this the CLI silently no-ops when run through a symlink).
362
+ try {
363
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
364
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
365
+ return here === argv;
366
+ } catch {
367
+ return false;
368
+ }
369
+ }
370
+
349
371
  const isCliEntry =
350
- process.argv[1] !== undefined &&
351
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
372
+ _isCliEntry();
352
373
  if (isCliEntry) {
353
374
  process.exit(main(process.argv.slice(2)));
354
375
  }
@@ -24,7 +24,8 @@
24
24
  // Usage: ./scripts-run src/scripts/lint_instruction_smuggling [--json]
25
25
 
26
26
  import * as path from 'node:path';
27
- import { pathToFileURL } from 'node:url';
27
+ import * as fs from 'node:fs';
28
+ import { fileURLToPath, pathToFileURL } from 'node:url';
28
29
 
29
30
  import * as sl from './_lib/security_lint.js';
30
31
 
@@ -165,9 +166,28 @@ export function main(argv: readonly string[] | null = null): number {
165
166
  return sl.report(findings, { check_label: 'instruction-smuggling' });
166
167
  }
167
168
 
168
- const _isCliEntry =
169
- process.argv[1] !== undefined &&
170
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
171
- if (_isCliEntry) {
169
+ function _isCliEntry(): boolean {
170
+ if (process.argv[1] === undefined) {
171
+ return false;
172
+ }
173
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
174
+ if (import.meta.url === argvUrl) {
175
+ return true;
176
+ }
177
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
178
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
179
+ // import.meta.url is the resolved real path while argv[1] keeps the
180
+ // symlink path. Compare realpaths so the entry guard still fires
181
+ // (without this the CLI silently no-ops when run through a symlink).
182
+ try {
183
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
184
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
185
+ return here === argv;
186
+ } catch {
187
+ return false;
188
+ }
189
+ }
190
+
191
+ if (_isCliEntry()) {
172
192
  process.exitCode = main();
173
193
  }
@@ -259,6 +259,28 @@ export function main(): number {
259
259
  return 1;
260
260
  }
261
261
 
262
- if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
262
+ function _isCliEntry(): boolean {
263
+ if (process.argv[1] === undefined) {
264
+ return false;
265
+ }
266
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
267
+ if (import.meta.url === argvUrl) {
268
+ return true;
269
+ }
270
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
271
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
272
+ // import.meta.url is the resolved real path while argv[1] keeps the
273
+ // symlink path. Compare realpaths so the entry guard still fires
274
+ // (without this the CLI silently no-ops when run through a symlink).
275
+ try {
276
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
277
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
278
+ return here === argv;
279
+ } catch {
280
+ return false;
281
+ }
282
+ }
283
+
284
+ if (_isCliEntry()) {
263
285
  process.exit(main());
264
286
  }
@@ -346,10 +346,29 @@ function _pyReprValue(v: unknown): string {
346
346
  return String(v);
347
347
  }
348
348
 
349
- const _isCliEntry =
350
- process.argv[1] !== undefined &&
351
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
352
- if (_isCliEntry || process.argv[1] === _HERE) {
349
+ function _isCliEntry(): boolean {
350
+ if (process.argv[1] === undefined) {
351
+ return false;
352
+ }
353
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
354
+ if (import.meta.url === argvUrl) {
355
+ return true;
356
+ }
357
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
358
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
359
+ // import.meta.url is the resolved real path while argv[1] keeps the
360
+ // symlink path. Compare realpaths so the entry guard still fires
361
+ // (without this the CLI silently no-ops when run through a symlink).
362
+ try {
363
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
364
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
365
+ return here === argv;
366
+ } catch {
367
+ return false;
368
+ }
369
+ }
370
+
371
+ if (_isCliEntry() || process.argv[1] === _HERE) {
353
372
  process.exit(main());
354
373
  }
355
374