@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
@@ -1001,10 +1001,29 @@ function _setDifference(a: Set<string>, b: Set<string>): string[] {
1001
1001
  return out;
1002
1002
  }
1003
1003
 
1004
- const _isCliEntry =
1005
- process.argv[1] !== undefined &&
1006
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
1007
- if (_isCliEntry || process.argv[1] === _HERE) {
1004
+ function _isCliEntry(): boolean {
1005
+ if (process.argv[1] === undefined) {
1006
+ return false;
1007
+ }
1008
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
1009
+ if (import.meta.url === argvUrl) {
1010
+ return true;
1011
+ }
1012
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
1013
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
1014
+ // import.meta.url is the resolved real path while argv[1] keeps the
1015
+ // symlink path. Compare realpaths so the entry guard still fires
1016
+ // (without this the CLI silently no-ops when run through a symlink).
1017
+ try {
1018
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
1019
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
1020
+ return here === argv;
1021
+ } catch {
1022
+ return false;
1023
+ }
1024
+ }
1025
+
1026
+ if (_isCliEntry() || process.argv[1] === _HERE) {
1008
1027
  process.exitCode = lint();
1009
1028
  }
1010
1029
 
@@ -193,10 +193,29 @@ function main(): number {
193
193
  return 0;
194
194
  }
195
195
 
196
- const _isCliEntry =
197
- process.argv[1] !== undefined &&
198
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
199
- if (_isCliEntry || process.argv[1] === _HERE) {
196
+ function _isCliEntry(): boolean {
197
+ if (process.argv[1] === undefined) {
198
+ return false;
199
+ }
200
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
201
+ if (import.meta.url === argvUrl) {
202
+ return true;
203
+ }
204
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
205
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
206
+ // import.meta.url is the resolved real path while argv[1] keeps the
207
+ // symlink path. Compare realpaths so the entry guard still fires
208
+ // (without this the CLI silently no-ops when run through a symlink).
209
+ try {
210
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
211
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
212
+ return here === argv;
213
+ } catch {
214
+ return false;
215
+ }
216
+ }
217
+
218
+ if (_isCliEntry() || process.argv[1] === _HERE) {
200
219
  process.exit(main());
201
220
  }
202
221
 
@@ -352,10 +352,29 @@ function main(argv: readonly string[] = []): number {
352
352
  return 0;
353
353
  }
354
354
 
355
- const _isCliEntry =
356
- process.argv[1] !== undefined &&
357
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
358
- if (_isCliEntry || process.argv[1] === _HERE) {
355
+ function _isCliEntry(): boolean {
356
+ if (process.argv[1] === undefined) {
357
+ return false;
358
+ }
359
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
360
+ if (import.meta.url === argvUrl) {
361
+ return true;
362
+ }
363
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
364
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
365
+ // import.meta.url is the resolved real path while argv[1] keeps the
366
+ // symlink path. Compare realpaths so the entry guard still fires
367
+ // (without this the CLI silently no-ops when run through a symlink).
368
+ try {
369
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
370
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
371
+ return here === argv;
372
+ } catch {
373
+ return false;
374
+ }
375
+ }
376
+
377
+ if (_isCliEntry() || process.argv[1] === _HERE) {
359
378
  try {
360
379
  process.exit(main(process.argv.slice(2)));
361
380
  } catch (e) {
@@ -290,10 +290,29 @@ function main(argv?: readonly string[]): number {
290
290
  return lint(args);
291
291
  }
292
292
 
293
- const _isCliEntry =
294
- process.argv[1] !== undefined &&
295
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
296
- if (_isCliEntry || process.argv[1] === _HERE) {
293
+ function _isCliEntry(): boolean {
294
+ if (process.argv[1] === undefined) {
295
+ return false;
296
+ }
297
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
298
+ if (import.meta.url === argvUrl) {
299
+ return true;
300
+ }
301
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
302
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
303
+ // import.meta.url is the resolved real path while argv[1] keeps the
304
+ // symlink path. Compare realpaths so the entry guard still fires
305
+ // (without this the CLI silently no-ops when run through a symlink).
306
+ try {
307
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
308
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
309
+ return here === argv;
310
+ } catch {
311
+ return false;
312
+ }
313
+ }
314
+
315
+ if (_isCliEntry() || process.argv[1] === _HERE) {
297
316
  process.exit(main());
298
317
  }
299
318
 
@@ -610,10 +610,29 @@ export function main(argv?: string[]): number {
610
610
  return 0;
611
611
  }
612
612
 
613
- const _isCliEntry =
614
- process.argv[1] !== undefined &&
615
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
616
- if (_isCliEntry || process.argv[1] === _HERE) {
613
+ function _isCliEntry(): boolean {
614
+ if (process.argv[1] === undefined) {
615
+ return false;
616
+ }
617
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
618
+ if (import.meta.url === argvUrl) {
619
+ return true;
620
+ }
621
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
622
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
623
+ // import.meta.url is the resolved real path while argv[1] keeps the
624
+ // symlink path. Compare realpaths so the entry guard still fires
625
+ // (without this the CLI silently no-ops when run through a symlink).
626
+ try {
627
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
628
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
629
+ return here === argv;
630
+ } catch {
631
+ return false;
632
+ }
633
+ }
634
+
635
+ if (_isCliEntry() || process.argv[1] === _HERE) {
617
636
  process.exitCode = main();
618
637
  }
619
638
 
@@ -229,10 +229,29 @@ function main(argv: readonly string[]): number {
229
229
  return 0;
230
230
  }
231
231
 
232
- const _isCliEntry =
233
- process.argv[1] !== undefined &&
234
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
235
- if (_isCliEntry || process.argv[1] === _HERE) {
232
+ function _isCliEntry(): boolean {
233
+ if (process.argv[1] === undefined) {
234
+ return false;
235
+ }
236
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
237
+ if (import.meta.url === argvUrl) {
238
+ return true;
239
+ }
240
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
241
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
242
+ // import.meta.url is the resolved real path while argv[1] keeps the
243
+ // symlink path. Compare realpaths so the entry guard still fires
244
+ // (without this the CLI silently no-ops when run through a symlink).
245
+ try {
246
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
247
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
248
+ return here === argv;
249
+ } catch {
250
+ return false;
251
+ }
252
+ }
253
+
254
+ if (_isCliEntry() || process.argv[1] === _HERE) {
236
255
  process.exitCode = main(process.argv.slice(2));
237
256
  }
238
257
 
@@ -0,0 +1,105 @@
1
+ // Compiled safety envelope for MCP shell-exec tools.
2
+ //
3
+ // Lives OUTSIDE src/scripts/mcp_server/ on purpose: the A0 contract bans
4
+ // direct child_process imports in mcp_server modules; approved exec-tier
5
+ // tools lazy-import this module instead (same transitive pattern as the
6
+ // roadmap_archive handler's git effects — accepted by the 2026-07-07
7
+ // council verdict, agents/decisions/mcp-write-exec-cut-2026-07-07.md).
8
+ //
9
+ // The envelope is compiled policy, not configuration (council Decision 2):
10
+ // - argv array, never a shell string — caller-supplied values cannot be
11
+ // interpolated into a command line;
12
+ // - hard timeout — the child is killed, never awaited indefinitely;
13
+ // - output cap per stream — a runaway process cannot flood the MCP
14
+ // response;
15
+ // - long-running policy is synchronous truncation (roadmap Phase 5
16
+ // Step 4): no job queue, no polling — a call that exceeds the timeout
17
+ // returns timed_out: true with whatever output was captured.
18
+ //
19
+ // Network isolation is NOT promised here: a spawned test runner executes
20
+ // arbitrary project test code, which may itself use the network. The
21
+ // envelope constrains the spawn surface (no shell, bounded time, bounded
22
+ // output), not the semantics of the tool under test — stated explicitly
23
+ // in the A0 amendment.
24
+
25
+ import { execFile } from 'node:child_process';
26
+
27
+ export interface EnvelopeSpec {
28
+ /** argv[0] is the executable; the rest are literal arguments. No shell. */
29
+ readonly argv: readonly string[];
30
+ /** Working directory for the child (the consumer root). */
31
+ readonly cwd: string;
32
+ /** Hard kill deadline in milliseconds. */
33
+ readonly timeout_ms: number;
34
+ /** Per-stream output cap in bytes; excess is truncated, flagged. */
35
+ readonly max_output_bytes: number;
36
+ }
37
+
38
+ export interface EnvelopeResult {
39
+ exit_code: number | null;
40
+ timed_out: boolean;
41
+ stdout: string;
42
+ stdout_truncated: boolean;
43
+ stderr: string;
44
+ stderr_truncated: boolean;
45
+ duration_ms: number;
46
+ argv: string[];
47
+ }
48
+
49
+ function _truncate(text: string, cap: number): [string, boolean] {
50
+ const buf = Buffer.from(text, 'utf8');
51
+ if (buf.byteLength <= cap) {
52
+ return [text, false];
53
+ }
54
+ return [buf.subarray(0, cap).toString('utf8'), true];
55
+ }
56
+
57
+ /**
58
+ * Run `spec.argv` under the compiled envelope and resolve with a
59
+ * structured result. Never rejects for child failure — a non-zero exit,
60
+ * timeout, or spawn error all surface inside the result object so the
61
+ * MCP handler can return them as data.
62
+ */
63
+ export function run_enveloped(spec: EnvelopeSpec): Promise<EnvelopeResult> {
64
+ const started = Date.now();
65
+ const [cmd, ...args] = spec.argv;
66
+ if (cmd === undefined) {
67
+ throw new Error('envelope argv must not be empty');
68
+ }
69
+ return new Promise((resolve) => {
70
+ execFile(
71
+ cmd,
72
+ args,
73
+ {
74
+ cwd: spec.cwd,
75
+ timeout: spec.timeout_ms,
76
+ killSignal: 'SIGKILL',
77
+ windowsHide: true,
78
+ // Cap the in-memory buffer a little above the reported cap so
79
+ // truncation is ours (flagged), not execFile's (thrown).
80
+ maxBuffer: spec.max_output_bytes + 64 * 1024,
81
+ encoding: 'utf8',
82
+ },
83
+ (error, stdout, stderr) => {
84
+ const timedOut = Boolean(error && 'killed' in error && error.killed === true);
85
+ let exitCode: number | null = 0;
86
+ if (error) {
87
+ const code = (error as NodeJS.ErrnoException & { code?: unknown }).code;
88
+ exitCode = typeof code === 'number' ? code : null;
89
+ }
90
+ const [out, outTrunc] = _truncate(String(stdout ?? ''), spec.max_output_bytes);
91
+ const [err, errTrunc] = _truncate(String(stderr ?? ''), spec.max_output_bytes);
92
+ resolve({
93
+ exit_code: timedOut ? null : exitCode,
94
+ timed_out: timedOut,
95
+ stdout: out,
96
+ stdout_truncated: outTrunc,
97
+ stderr: err,
98
+ stderr_truncated: errTrunc,
99
+ duration_ms: Date.now() - started,
100
+ argv: [...spec.argv],
101
+ });
102
+ },
103
+ );
104
+ });
105
+ }
@@ -602,9 +602,30 @@ async function main(): Promise<number> {
602
602
  return 0;
603
603
  }
604
604
 
605
+ function _isCliEntry(): boolean {
606
+ if (process.argv[1] === undefined) {
607
+ return false;
608
+ }
609
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
610
+ if (import.meta.url === argvUrl) {
611
+ return true;
612
+ }
613
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
614
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
615
+ // import.meta.url is the resolved real path while argv[1] keeps the
616
+ // symlink path. Compare realpaths so the entry guard still fires
617
+ // (without this the CLI silently no-ops when run through a symlink).
618
+ try {
619
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
620
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
621
+ return here === argv;
622
+ } catch {
623
+ return false;
624
+ }
625
+ }
626
+
605
627
  const _isMain =
606
- process.argv[1] !== undefined &&
607
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
628
+ _isCliEntry();
608
629
 
609
630
  if (_isMain) {
610
631
  // process.exitCode (not process.exit) so stdout drains fully before exit.
@@ -132,9 +132,16 @@ cd "$WORKDIR"
132
132
  gh repo clone "$FORK_REPO" registry-fork
133
133
  cd registry-fork
134
134
 
135
- # Add upstream + sync default branch.
135
+ # Add upstream + sync default branch. `gh repo clone` of a fork already
136
+ # wires an `upstream` remote pointing at the parent — make the add
137
+ # idempotent (set-url) instead of dying on "remote upstream already
138
+ # exists" (the exact failure observed on the 2026-07-07 live run).
136
139
  DEFAULT_BRANCH=$(gh repo view "$REGISTRY" --json defaultBranchRef --jq .defaultBranchRef.name)
137
- git remote add upstream "https://github.com/$REGISTRY.git"
140
+ if git remote get-url upstream >/dev/null 2>&1; then
141
+ git remote set-url upstream "https://github.com/$REGISTRY.git"
142
+ else
143
+ git remote add upstream "https://github.com/$REGISTRY.git"
144
+ fi
138
145
  git fetch upstream "$DEFAULT_BRANCH"
139
146
  git checkout -b "$BRANCH" "upstream/$DEFAULT_BRANCH"
140
147
 
@@ -155,10 +162,14 @@ _step "Pushing branch $BRANCH to fork"
155
162
  git push -u origin "$BRANCH"
156
163
 
157
164
  _step "Opening PR against $REGISTRY"
165
+ # gh pr create expects --head as OWNER:branch (not OWNER/REPO:branch) —
166
+ # the repo form fails with "Head sha can't be blank" (observed on the
167
+ # 2026-07-07 live run).
168
+ FORK_OWNER="${FORK_REPO%%/*}"
158
169
  PR_URL=$(gh pr create \
159
170
  --repo "$REGISTRY" \
160
171
  --base "$DEFAULT_BRANCH" \
161
- --head "$FORK_REPO:$BRANCH" \
172
+ --head "$FORK_OWNER:$BRANCH" \
162
173
  --title "Add event4u/agent-config — universal AI agent OS" \
163
174
  --body "$(cat <<'EOF'
164
175
  Adds [`event4u/agent-config`](https://github.com/event4u-app/agent-config) to the registry.
@@ -338,9 +338,28 @@ export function main(argv: string[] | null = null): number {
338
338
  }
339
339
  }
340
340
 
341
- const _isCliEntry =
342
- process.argv[1] !== undefined &&
343
- import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href;
344
- if (_isCliEntry || process.argv[1] === _HERE) {
341
+ function _isCliEntry(): boolean {
342
+ if (process.argv[1] === undefined) {
343
+ return false;
344
+ }
345
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
346
+ if (import.meta.url === argvUrl) {
347
+ return true;
348
+ }
349
+ // A symlinked invocation (e.g. via an installed `.augment/` projection,
350
+ // or macOS /var → /private/var temp dirs) makes the raw URLs differ:
351
+ // import.meta.url is the resolved real path while argv[1] keeps the
352
+ // symlink path. Compare realpaths so the entry guard still fires
353
+ // (without this the CLI silently no-ops when run through a symlink).
354
+ try {
355
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
356
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
357
+ return here === argv;
358
+ } catch {
359
+ return false;
360
+ }
361
+ }
362
+
363
+ if (_isCliEntry() || process.argv[1] === _HERE) {
345
364
  process.exitCode = main();
346
365
  }
@@ -1,11 +1,9 @@
1
- // Entrypoint — TS twin of `scripts/mcp_server/__main__.py`
2
- // (`python -m scripts.mcp_server`).
3
- //
4
- // Required by Claude Desktop / Zed / Continue stdio-server config on the
5
- // Python side; the .py stays the runtime entry until a later phase (glama
6
- // still launches `python -m scripts.mcp_server`). This twin coexists and
7
- // forwards to `server.main()`; keep this file flat so crash stack traces
8
- // point at server.ts, not the bootstrap.
1
+ // Entrypoint for the MCP stdio server (`node node_modules/.bin/tsx
2
+ // src/scripts/mcp_server/__main__.ts`). glama launches this file directly
3
+ // via `internal/glama/run`; Claude Desktop / Zed / Continue stdio-server
4
+ // configs point at the same entry through `agent-config mcp:run`. Keep
5
+ // this file flat so crash stack traces point at server.ts, not the
6
+ // bootstrap.
9
7
  //
10
8
  // `node __main__.js` (or importing this module as the package main) runs
11
9
  // the server, mirroring the Python `if __name__ == "__main__": main()`
@@ -75,7 +75,7 @@
75
75
  "name": "memory_signal",
76
76
  "description": "Record an engineering-memory signal — a short, anchored observation such as a recurring bug pattern or an ownership note — to the monthly intake log `agents/memory/intake/signals-YYYY-MM.jsonl`. Use to capture a learning tied to a specific file so future `memory_lookup` calls surface it. Appends to the filesystem and is rate-limited per `(type, path)` within a rolling window. Returns the recorded signal.",
77
77
  "side_effect": "fs-write",
78
- "implemented_on": [],
78
+ "implemented_on": ["stdio"],
79
79
  "input_schema": {
80
80
  "type": "object",
81
81
  "properties": {
@@ -198,9 +198,9 @@
198
198
  },
199
199
  {
200
200
  "name": "run_tests",
201
- "description": "Run the consumer project's test suite via its auto-detected runner (Pest / PHPUnit, Jest / Vitest, pytest, …). Use to verify a change before claiming it works. Shell-bound. Returns the exit code, the runner name, and a structured tail of the output. Pass `filter` or `path` to narrow the run.",
201
+ "description": "Run the consumer project's vitest test suite under a compiled safety envelope: fixed argv (no shell interpolation), 120s timeout, 64KB output cap per stream. Shell-exec pilot per the 2026-07-07 council cut — vitest projects only; other runners (Pest / PHPUnit, pytest, Jest) return an error until a future council round approves them. Pass `filter` (vitest --testNamePattern) or `path` (in-tree file or directory) to narrow the run. Returns runner, passed, exit_code, timed_out, truncated stdout/stderr, and duration_ms.",
202
202
  "side_effect": "shell",
203
- "implemented_on": [],
203
+ "implemented_on": ["stdio"],
204
204
  "input_schema": {
205
205
  "type": "object",
206
206
  "properties": {
@@ -270,6 +270,81 @@
270
270
  "required": ["uri"],
271
271
  "additionalProperties": false
272
272
  }
273
+ },
274
+ {
275
+ "name": "roadmap_progress",
276
+ "description": "Regenerate `agents/roadmaps-progress.md` from the current checkbox state of every active roadmap. Use after landing roadmap work to keep the dashboard in sync without a shell round-trip. Writes the dashboard file inside the project tree. Set `dry_run: true` to compute counts without writing.",
277
+ "side_effect": "fs-write",
278
+ "implemented_on": ["stdio"],
279
+ "input_schema": {
280
+ "type": "object",
281
+ "properties": {
282
+ "dry_run": {"type": "boolean", "default": false, "description": "When true, return the computed dashboard without writing the file."}
283
+ },
284
+ "additionalProperties": false
285
+ }
286
+ },
287
+ {
288
+ "name": "roadmap_archive",
289
+ "description": "Archive every roadmap that has reached `count_open == 0` and was touched on the current branch — `git mv` to `agents/roadmaps/archive/`, migrate inbound references, and regenerate the dashboard. Use as the PR-gate sweep before opening a pull request. Mutates the git index (moves tracked files) but never commits or pushes.",
290
+ "side_effect": "fs-write",
291
+ "implemented_on": ["stdio"],
292
+ "input_schema": {"type": "object", "properties": {}, "additionalProperties": false}
293
+ },
294
+ {
295
+ "name": "capabilities_index",
296
+ "description": "Regenerate `CAPABILITIES.yaml`, the package's coverage index of skills, rules, commands, and guidelines. Use after adding or removing an artifact to keep the index current. Pass `check: true` to run in read-only CI mode (fails instead of writing on drift).",
297
+ "side_effect": "fs-write",
298
+ "implemented_on": ["stdio"],
299
+ "input_schema": {
300
+ "type": "object",
301
+ "properties": {
302
+ "check": {"type": "boolean", "default": false, "description": "When true, run in read-only drift-check mode instead of writing the index."}
303
+ },
304
+ "additionalProperties": false
305
+ }
306
+ },
307
+ {
308
+ "name": "doctor_report",
309
+ "description": "Run the consumer-project doctor diagnostic and return a structured health report (install drift, hook wiring, settings schema, discovery manifest freshness). Use to triage a misbehaving install. Read-only.",
310
+ "side_effect": "ro",
311
+ "implemented_on": ["stdio"],
312
+ "input_schema": {"type": "object", "properties": {}, "additionalProperties": false}
313
+ },
314
+ {
315
+ "name": "conformance_check",
316
+ "description": "Run the consumer conformance contract (`doctor --ci` plus installed-and-firing checks) and return pass/fail per check. Use to verify a consumer project's install is fully wired before relying on it. Read-only.",
317
+ "side_effect": "ro",
318
+ "implemented_on": ["stdio"],
319
+ "input_schema": {"type": "object", "properties": {}, "additionalProperties": false}
320
+ },
321
+ {
322
+ "name": "telemetry_report",
323
+ "description": "Return the artefact-engagement telemetry report — essential / useful / retirement-candidate skills and rules ranked by recorded consult+apply signals over a rolling window. Use to see which artifacts are actually load-bearing. Read-only. No-op (empty report) when telemetry recording is disabled.",
324
+ "side_effect": "ro",
325
+ "implemented_on": ["stdio"],
326
+ "input_schema": {
327
+ "type": "object",
328
+ "properties": {
329
+ "window_days": {"type": "integer", "minimum": 1, "default": 30, "description": "Reporting window in days. Defaults to 30."}
330
+ },
331
+ "additionalProperties": false
332
+ }
333
+ },
334
+ {
335
+ "name": "council_estimate",
336
+ "description": "Estimate the token cost of an AI-council debate over a given input (roadmap, diff, prompt, or file set) without spending — no network call, no billing. Use before deciding whether to authorize a real council run. Read-only.",
337
+ "side_effect": "ro",
338
+ "implemented_on": ["stdio"],
339
+ "input_schema": {
340
+ "type": "object",
341
+ "properties": {
342
+ "input_path": {"type": "string", "description": "Path to the roadmap, diff, or file to estimate council cost for."},
343
+ "depth": {"type": "string", "enum": ["shallow", "deep"], "description": "Council depth tier to estimate for. Defaults to the configured default depth."}
344
+ },
345
+ "required": ["input_path"],
346
+ "additionalProperties": false
347
+ }
273
348
  }
274
349
  ]
275
350
  }