@event4u/agent-config 6.0.0 → 7.0.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 (1758) hide show
  1. package/.claude-plugin/marketplace.json +39 -7
  2. package/AGENTS.md +8 -7
  3. package/CHANGELOG.md +557 -422
  4. package/CONTRIBUTING.md +1 -1
  5. package/README.md +18 -16
  6. package/dist/agent-src/commands/agent-handoff.md +5 -4
  7. package/dist/agent-src/commands/agent-status.md +3 -2
  8. package/dist/agent-src/commands/agents/audit.md +4 -3
  9. package/dist/agent-src/commands/agents/init.md +4 -1
  10. package/dist/agent-src/commands/agents/optimize.md +5 -4
  11. package/dist/agent-src/commands/agents/user/accept.md +1 -0
  12. package/dist/agent-src/commands/agents/user/init.md +1 -0
  13. package/dist/agent-src/commands/agents/user/review.md +1 -0
  14. package/dist/agent-src/commands/agents/user/show.md +1 -0
  15. package/dist/agent-src/commands/agents/user/update.md +1 -0
  16. package/dist/agent-src/commands/agents/user.md +1 -0
  17. package/dist/agent-src/commands/agents.md +1 -0
  18. package/dist/agent-src/commands/analytics/prune.md +3 -2
  19. package/dist/agent-src/commands/analytics/show.md +3 -2
  20. package/dist/agent-src/commands/analytics.md +3 -2
  21. package/dist/agent-src/commands/analyze/decision.md +108 -0
  22. package/dist/agent-src/commands/analyze/incident.md +120 -0
  23. package/dist/agent-src/commands/analyze/near-miss.md +113 -0
  24. package/dist/agent-src/commands/analyze/postmortem.md +130 -0
  25. package/dist/agent-src/commands/analyze/premortem.md +104 -0
  26. package/dist/agent-src/commands/analyze-reference-repo.md +1 -0
  27. package/dist/agent-src/commands/analyze.md +124 -0
  28. package/dist/agent-src/commands/brand/identity.md +27 -0
  29. package/dist/agent-src/commands/brand/review.md +27 -0
  30. package/dist/agent-src/commands/brand/strategy.md +27 -0
  31. package/dist/agent-src/commands/brand/tokens.md +28 -0
  32. package/dist/agent-src/commands/brand/voice.md +27 -0
  33. package/dist/agent-src/commands/brand.md +58 -0
  34. package/dist/agent-src/commands/bug-fix.md +1 -0
  35. package/dist/agent-src/commands/bug-investigate.md +1 -0
  36. package/dist/agent-src/commands/challenge-me/vision.md +3 -2
  37. package/dist/agent-src/commands/challenge-me/with-docs.md +3 -2
  38. package/dist/agent-src/commands/challenge-me.md +3 -2
  39. package/dist/agent-src/commands/chat-history/import.md +9 -9
  40. package/dist/agent-src/commands/chat-history.md +32 -30
  41. package/dist/agent-src/commands/check-current-md.md +4 -3
  42. package/dist/agent-src/commands/commit/in-chunks.md +1 -0
  43. package/dist/agent-src/commands/commit.md +1 -0
  44. package/dist/agent-src/commands/condense.md +3 -2
  45. package/dist/agent-src/commands/context/create.md +1 -0
  46. package/dist/agent-src/commands/context/refactor.md +1 -0
  47. package/dist/agent-src/commands/context.md +1 -0
  48. package/dist/agent-src/commands/cost-report.md +5 -4
  49. package/dist/agent-src/commands/council/analysis.md +3 -2
  50. package/dist/agent-src/commands/council/debate.md +7 -6
  51. package/dist/agent-src/commands/council/default.md +48 -20
  52. package/dist/agent-src/commands/council/design.md +3 -2
  53. package/dist/agent-src/commands/council/optimize.md +3 -2
  54. package/dist/agent-src/commands/council/pr.md +3 -2
  55. package/dist/agent-src/commands/council.md +4 -3
  56. package/dist/agent-src/commands/e2e-heal.md +1 -0
  57. package/dist/agent-src/commands/e2e-plan.md +1 -0
  58. package/dist/agent-src/commands/estimate-ticket.md +1 -0
  59. package/dist/agent-src/commands/feature/dev.md +1 -0
  60. package/dist/agent-src/commands/feature/explore.md +1 -0
  61. package/dist/agent-src/commands/feature/plan.md +6 -6
  62. package/dist/agent-src/commands/feature/refactor.md +1 -0
  63. package/dist/agent-src/commands/feature/roadmap.md +1 -0
  64. package/dist/agent-src/commands/feature.md +1 -0
  65. package/dist/agent-src/commands/fix/ci.md +1 -0
  66. package/dist/agent-src/commands/fix/portability.md +4 -3
  67. package/dist/agent-src/commands/fix/pr-comments.md +147 -15
  68. package/dist/agent-src/commands/fix/refs.md +4 -3
  69. package/dist/agent-src/commands/fix/seeder.md +1 -0
  70. package/dist/agent-src/commands/fix.md +8 -8
  71. package/dist/agent-src/commands/ghostwriter/delete.md +1 -0
  72. package/dist/agent-src/commands/ghostwriter/fetch.md +1 -0
  73. package/dist/agent-src/commands/ghostwriter/list.md +1 -0
  74. package/dist/agent-src/commands/ghostwriter/show.md +1 -0
  75. package/dist/agent-src/commands/ghostwriter/write.md +1 -0
  76. package/dist/agent-src/commands/ghostwriter.md +1 -0
  77. package/dist/agent-src/commands/grill-me.md +3 -2
  78. package/dist/agent-src/commands/image/analyse.md +1 -0
  79. package/dist/agent-src/commands/image/create.md +1 -0
  80. package/dist/agent-src/commands/image/verify.md +1 -0
  81. package/dist/agent-src/commands/image.md +1 -0
  82. package/dist/agent-src/commands/implement-ticket.md +37 -6
  83. package/dist/agent-src/commands/jira-ticket.md +1 -0
  84. package/dist/agent-src/commands/judge/on-diff.md +1 -0
  85. package/dist/agent-src/commands/judge/solo.md +1 -0
  86. package/dist/agent-src/commands/judge/steps.md +1 -0
  87. package/dist/agent-src/commands/judge.md +1 -0
  88. package/dist/agent-src/commands/knowledge/cross-repo.md +2 -1
  89. package/dist/agent-src/commands/knowledge/forget.md +1 -0
  90. package/dist/agent-src/commands/knowledge/ingest.md +1 -0
  91. package/dist/agent-src/commands/knowledge/list.md +1 -0
  92. package/dist/agent-src/commands/knowledge.md +1 -0
  93. package/dist/agent-src/commands/memory/add.md +9 -7
  94. package/dist/agent-src/commands/memory/learn-low-impact.md +3 -2
  95. package/dist/agent-src/commands/memory/load.md +7 -7
  96. package/dist/agent-src/commands/memory/mine-session.md +39 -12
  97. package/dist/agent-src/commands/memory/promote.md +3 -2
  98. package/dist/agent-src/commands/memory/propose.md +7 -6
  99. package/dist/agent-src/commands/memory.md +3 -2
  100. package/dist/agent-src/commands/mission/upgrade.md +182 -0
  101. package/dist/agent-src/commands/mode.md +1 -0
  102. package/dist/agent-src/commands/module/create.md +1 -0
  103. package/dist/agent-src/commands/module/explore.md +1 -0
  104. package/dist/agent-src/commands/module.md +1 -0
  105. package/dist/agent-src/commands/optimize/agents-dir.md +1 -0
  106. package/dist/agent-src/commands/optimize/augmentignore.md +1 -0
  107. package/dist/agent-src/commands/optimize/rtk.md +1 -0
  108. package/dist/agent-src/commands/optimize/skills.md +3 -2
  109. package/dist/agent-src/commands/optimize-prompt.md +1 -0
  110. package/dist/agent-src/commands/optimize.md +1 -0
  111. package/dist/agent-src/commands/orchestrate.md +2 -1
  112. package/dist/agent-src/commands/override/create.md +1 -0
  113. package/dist/agent-src/commands/override/manage.md +1 -0
  114. package/dist/agent-src/commands/override.md +1 -0
  115. package/dist/agent-src/commands/package-reset.md +1 -0
  116. package/dist/agent-src/commands/package-test.md +1 -0
  117. package/dist/agent-src/commands/post-as/ghostwriter.md +1 -0
  118. package/dist/agent-src/commands/post-as/me.md +1 -0
  119. package/dist/agent-src/commands/post-as.md +1 -0
  120. package/dist/agent-src/commands/pr/create/description-only.md +1 -0
  121. package/dist/agent-src/commands/pr/create.md +31 -4
  122. package/dist/agent-src/commands/prediction-pool.md +1 -0
  123. package/dist/agent-src/commands/prepare-for-review.md +1 -0
  124. package/dist/agent-src/commands/profile/activate.md +1 -0
  125. package/dist/agent-src/commands/profile/deactivate.md +1 -0
  126. package/dist/agent-src/commands/profile/show.md +1 -0
  127. package/dist/agent-src/commands/profile.md +1 -0
  128. package/dist/agent-src/commands/project-analyze.md +1 -0
  129. package/dist/agent-src/commands/project-health.md +1 -0
  130. package/dist/agent-src/commands/quality-fix.md +1 -0
  131. package/dist/agent-src/commands/refine-ticket.md +1 -0
  132. package/dist/agent-src/commands/research/deep.md +1 -0
  133. package/dist/agent-src/commands/research/report.md +1 -0
  134. package/dist/agent-src/commands/research.md +1 -0
  135. package/dist/agent-src/commands/review-changes.md +9 -0
  136. package/dist/agent-src/commands/review-routing.md +1 -0
  137. package/dist/agent-src/commands/roadmap/ai-council.md +1 -0
  138. package/dist/agent-src/commands/roadmap/create.md +1 -0
  139. package/dist/agent-src/commands/roadmap/materialize.md +73 -0
  140. package/dist/agent-src/commands/roadmap/process-full.md +1 -0
  141. package/dist/agent-src/commands/roadmap/process-phase.md +1 -0
  142. package/dist/agent-src/commands/roadmap/process-step.md +1 -0
  143. package/dist/agent-src/commands/roadmap.md +1 -0
  144. package/dist/agent-src/commands/rule-compliance-audit.md +1 -0
  145. package/dist/agent-src/commands/security-audit-config.md +84 -0
  146. package/dist/agent-src/commands/set-cost-profile.md +1 -0
  147. package/dist/agent-src/commands/skill/preview.md +2 -1
  148. package/dist/agent-src/commands/skill.md +1 -0
  149. package/dist/agent-src/commands/skills/discover.md +2 -1
  150. package/dist/agent-src/commands/skills.md +1 -0
  151. package/dist/agent-src/commands/sync-agent-settings.md +1 -0
  152. package/dist/agent-src/commands/sync-gitignore/fix.md +1 -0
  153. package/dist/agent-src/commands/sync-gitignore.md +1 -0
  154. package/dist/agent-src/commands/tests/create.md +1 -0
  155. package/dist/agent-src/commands/tests/execute.md +1 -0
  156. package/dist/agent-src/commands/tests.md +1 -0
  157. package/dist/agent-src/commands/threat-model.md +5 -4
  158. package/dist/agent-src/commands/update-form-request-messages.md +1 -0
  159. package/dist/agent-src/commands/upstream-contribute.md +4 -3
  160. package/dist/agent-src/commands/video/from-script.md +3 -2
  161. package/dist/agent-src/commands/video/from-song.md +4 -3
  162. package/dist/agent-src/commands/video/scene.md +2 -1
  163. package/dist/agent-src/commands/video/stitch.md +1 -0
  164. package/dist/agent-src/commands/video/storyboard.md +2 -1
  165. package/dist/agent-src/commands/video.md +4 -3
  166. package/dist/agent-src/commands/work.md +1 -0
  167. package/dist/agent-src/contexts/augment-infrastructure.md +1 -1
  168. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  169. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +2 -2
  170. package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +3 -3
  171. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +6 -6
  172. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
  173. package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +2 -2
  174. package/dist/agent-src/contexts/execution/evidence-discipline.md +153 -0
  175. package/dist/agent-src/contexts/execution/project-intelligence.md +264 -0
  176. package/dist/agent-src/contexts/execution/rdp-gate.md +75 -0
  177. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +2 -1
  178. package/dist/agent-src/contexts/subagent-configuration.md +1 -0
  179. package/dist/agent-src/personas/advisors/contrarian.md +1 -1
  180. package/dist/agent-src/personas/advisors/executor.md +1 -1
  181. package/dist/agent-src/personas/advisors/expansionist.md +1 -1
  182. package/dist/agent-src/personas/advisors/first-principles.md +1 -1
  183. package/dist/agent-src/personas/advisors/outsider.md +1 -1
  184. package/dist/agent-src/personas/ai-video-technical-director.md +1 -1
  185. package/dist/agent-src/personas/brand-strategist.md +74 -0
  186. package/dist/agent-src/personas/design-director.md +74 -0
  187. package/dist/agent-src/rules/autonomous-execution.md +12 -0
  188. package/dist/agent-src/rules/brand-consistency.md +77 -0
  189. package/dist/agent-src/rules/brand-source-of-truth.md +57 -0
  190. package/dist/agent-src/rules/direct-answers.md +2 -0
  191. package/dist/agent-src/rules/domain-safety-disclaimer.md +2 -0
  192. package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
  193. package/dist/agent-src/rules/git-history-discipline.md +48 -1
  194. package/dist/agent-src/rules/icon-consistency.md +53 -0
  195. package/dist/agent-src/rules/image-likeness-and-rights.md +67 -0
  196. package/dist/agent-src/rules/improve-before-implement.md +12 -0
  197. package/dist/agent-src/rules/lethal-trifecta-guard.md +80 -0
  198. package/dist/agent-src/rules/no-pr-progress-comments.md +3 -4
  199. package/dist/agent-src/rules/notes-first-reasoning.md +71 -0
  200. package/dist/agent-src/rules/persona-governance.md +2 -2
  201. package/dist/agent-src/rules/provider-lifecycle-discipline.md +3 -1
  202. package/dist/agent-src/rules/roadmap-progress-sync.md +58 -31
  203. package/dist/agent-src/rules/security-sensitive-stop.md +22 -3
  204. package/dist/agent-src/rules/size-enforcement.md +1 -1
  205. package/dist/agent-src/rules/source-confidentiality.md +97 -0
  206. package/dist/agent-src/rules/source-discovery-gate.md +98 -0
  207. package/dist/agent-src/rules/think-before-action.md +10 -1
  208. package/dist/agent-src/rules/ui-audit-gate.md +2 -0
  209. package/dist/agent-src/rules/untrusted-input-defense.md +76 -0
  210. package/dist/agent-src/rules/user-interaction.md +1 -1
  211. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +392 -0
  212. package/dist/agent-src/scripts/update_roadmap_progress.ts +824 -0
  213. package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
  214. package/dist/agent-src/skills/adversarial-review/SKILL.md +14 -0
  215. package/dist/agent-src/skills/agent-security-review/SKILL.md +113 -0
  216. package/dist/agent-src/skills/agent-security-review/evals/triggers.json +52 -0
  217. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +1 -1
  218. package/dist/agent-src/skills/ai-council/SKILL.md +4 -4
  219. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +9 -13
  220. package/dist/agent-src/skills/async-python-patterns/SKILL.md +1 -1
  221. package/dist/agent-src/skills/blade-ui/SKILL.md +12 -5
  222. package/dist/agent-src/skills/blameless-post-mortem/SKILL.md +199 -0
  223. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +12 -11
  224. package/dist/agent-src/skills/brand/ATTRIBUTION.md +38 -0
  225. package/dist/agent-src/skills/brand/SKILL.md +115 -0
  226. package/dist/agent-src/skills/brand/data/archetypes.csv +13 -0
  227. package/dist/agent-src/skills/brand/data/color-psychology.csv +14 -0
  228. package/dist/agent-src/skills/brand/data/logo-style-fit.csv +13 -0
  229. package/dist/agent-src/skills/brand/data/manifest.json +226 -0
  230. package/dist/agent-src/skills/brand/data/messaging-frameworks.csv +13 -0
  231. package/dist/agent-src/skills/brand/data/naming-patterns.csv +13 -0
  232. package/dist/agent-src/skills/brand/data/typography-principles.csv +13 -0
  233. package/dist/agent-src/skills/brand/data/voice-tone.csv +13 -0
  234. package/dist/agent-src/skills/brand/evals/triggers.json +17 -0
  235. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +89 -0
  236. package/dist/agent-src/skills/brand-asset-generation/evals/triggers.json +17 -0
  237. package/dist/agent-src/skills/brand-audit/SKILL.md +67 -0
  238. package/dist/agent-src/skills/brand-audit/evals/triggers.json +17 -0
  239. package/dist/agent-src/skills/brand-identity/SKILL.md +101 -0
  240. package/dist/agent-src/skills/brand-identity/evals/triggers.json +17 -0
  241. package/dist/agent-src/skills/brand-strategy/SKILL.md +83 -0
  242. package/dist/agent-src/skills/brand-strategy/evals/triggers.json +17 -0
  243. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +102 -0
  244. package/dist/agent-src/skills/brand-to-tokens/evals/triggers.json +17 -0
  245. package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +46 -0
  246. package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +32 -0
  247. package/dist/agent-src/skills/canvas-design/evals/triggers.json +1 -0
  248. package/dist/agent-src/skills/check-refs/SKILL.md +5 -5
  249. package/dist/agent-src/skills/code-review/SKILL.md +6 -15
  250. package/dist/agent-src/skills/command-routing/SKILL.md +1 -1
  251. package/dist/agent-src/skills/command-writing/SKILL.md +2 -2
  252. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +96 -0
  253. package/dist/agent-src/skills/complexity-first-planning/evals/triggers.json +17 -0
  254. package/dist/agent-src/skills/context-authoring/SKILL.md +2 -2
  255. package/dist/agent-src/skills/context-document/SKILL.md +35 -2
  256. package/dist/agent-src/skills/copilot-config/SKILL.md +3 -4
  257. package/dist/agent-src/skills/corpus-grounding/evals/triggers.json +1 -0
  258. package/dist/agent-src/skills/corpus-grounding/scripts/bm25_search.ts +482 -0
  259. package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +803 -0
  260. package/dist/agent-src/skills/corpus-grounding/scripts/ground.ts +541 -0
  261. package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +309 -0
  262. package/dist/agent-src/skills/database/SKILL.md +26 -4
  263. package/dist/agent-src/skills/decision-record/SKILL.md +1 -1
  264. package/dist/agent-src/skills/decision-record/evals/triggers.json +17 -0
  265. package/dist/agent-src/skills/decision-review/SKILL.md +179 -0
  266. package/dist/agent-src/skills/defense-in-depth/SKILL.md +1 -1
  267. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  268. package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
  269. package/dist/agent-src/skills/design-intelligence/data/manifest.json +23 -6
  270. package/dist/agent-src/skills/design-intelligence/evals/triggers.json +1 -0
  271. package/dist/agent-src/skills/design-tokens/evals/triggers.json +1 -0
  272. package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +888 -0
  273. package/dist/agent-src/skills/developer-like-execution/SKILL.md +5 -4
  274. package/dist/agent-src/skills/doc-coauthoring/evals/triggers.json +1 -0
  275. package/dist/agent-src/skills/eloquent/evals/triggers.json +1 -0
  276. package/dist/agent-src/skills/emit-tickets/SKILL.md +198 -0
  277. package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
  278. package/dist/agent-src/skills/estimate-ticket/evals/triggers.json +1 -0
  279. package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
  280. package/dist/agent-src/skills/git-workflow/SKILL.md +33 -0
  281. package/dist/agent-src/skills/guideline-writing/SKILL.md +2 -2
  282. package/dist/agent-src/skills/iconography/SKILL.md +88 -0
  283. package/dist/agent-src/skills/iconography/evals/triggers.json +17 -0
  284. package/dist/agent-src/skills/image-analyser/evals/triggers.json +1 -0
  285. package/dist/agent-src/skills/image-creator/evals/triggers.json +1 -0
  286. package/dist/agent-src/skills/image-editing/SKILL.md +100 -0
  287. package/dist/agent-src/skills/image-editing/evals/triggers.json +17 -0
  288. package/dist/agent-src/skills/image-generation/SKILL.md +95 -0
  289. package/dist/agent-src/skills/image-generation/evals/triggers.json +17 -0
  290. package/dist/agent-src/skills/image-provider-routing/SKILL.md +96 -0
  291. package/dist/agent-src/skills/image-provider-routing/evals/triggers.json +17 -0
  292. package/dist/agent-src/skills/launch-readiness/SKILL.md +21 -0
  293. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +12 -8
  294. package/dist/agent-src/skills/lint-skills/SKILL.md +5 -5
  295. package/dist/agent-src/skills/logo-generation/SKILL.md +98 -0
  296. package/dist/agent-src/skills/logo-generation/evals/triggers.json +17 -0
  297. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  298. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  299. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  300. package/dist/agent-src/skills/memory-consolidation/SKILL.md +63 -17
  301. package/dist/agent-src/skills/motion-choreographer/SKILL.md +1 -1
  302. package/dist/agent-src/skills/php-coder/evals/triggers.json +1 -0
  303. package/dist/agent-src/skills/prediction-pool-optimizer/evals/triggers.json +1 -0
  304. package/dist/agent-src/skills/premortem/SKILL.md +137 -0
  305. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +115 -0
  306. package/dist/agent-src/skills/prompt-engineering-image/evals/triggers.json +17 -0
  307. package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
  308. package/dist/agent-src/skills/prompt-validator/evals/triggers.json +1 -0
  309. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +12 -5
  310. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +388 -0
  311. package/dist/agent-src/skills/readme-writing-package/SKILL.md +1 -1
  312. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +119 -0
  313. package/dist/agent-src/skills/reasoning-orchestrator/evals/triggers.json +17 -0
  314. package/dist/agent-src/skills/receiving-code-review/SKILL.md +6 -6
  315. package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
  316. package/dist/agent-src/skills/refine-ticket/SKILL.md +1 -1
  317. package/dist/agent-src/skills/refine-ticket/evals/triggers.json +1 -0
  318. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  319. package/dist/agent-src/skills/roadmap-management/SKILL.md +16 -3
  320. package/dist/agent-src/skills/roadmap-writing/SKILL.md +76 -0
  321. package/dist/agent-src/skills/root-cause-frameworks/SKILL.md +146 -0
  322. package/dist/agent-src/skills/rule-refactor/SKILL.md +9 -9
  323. package/dist/agent-src/skills/rule-writing/SKILL.md +7 -7
  324. package/dist/agent-src/skills/script-writing/SKILL.md +2 -2
  325. package/dist/agent-src/skills/secrets-management/SKILL.md +1 -1
  326. package/dist/agent-src/skills/security-audit/SKILL.md +5 -0
  327. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +19 -3
  328. package/dist/agent-src/skills/skill-management/SKILL.md +3 -3
  329. package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
  330. package/dist/agent-src/skills/skill-writing/SKILL.md +5 -5
  331. package/dist/agent-src/skills/skill-writing/evals/triggers.json +1 -0
  332. package/dist/agent-src/skills/source-discovery/SKILL.md +182 -0
  333. package/dist/agent-src/skills/standards-from-config/SKILL.md +93 -0
  334. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +10 -3
  335. package/dist/agent-src/skills/systematic-debugging/SKILL.md +7 -0
  336. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.ts +561 -0
  337. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  338. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
  339. package/dist/agent-src/skills/threat-modeling/SKILL.md +1 -0
  340. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  341. package/dist/agent-src/skills/typography-system/SKILL.md +138 -0
  342. package/dist/agent-src/skills/typography-system/evals/triggers.json +17 -0
  343. package/dist/agent-src/skills/upstream-contribute/SKILL.md +3 -3
  344. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +209 -0
  345. package/dist/agent-src/skills/verify-repair-loop/evals/output-schema.yml +20 -0
  346. package/dist/agent-src/skills/verify-repair-loop/evals/triggers.json +17 -0
  347. package/dist/agent-src/templates/agent-settings.md +7 -0
  348. package/dist/agent-src/templates/agents/.gitattributes.fragment +0 -1
  349. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +4 -4
  350. package/dist/agent-src/templates/contexts/knowledge-card.md +69 -0
  351. package/dist/agent-src/templates/contexts/lesson-card.md +73 -0
  352. package/dist/agent-src/templates/roadmaps.md +29 -1
  353. package/dist/agent-src/templates/scripts/README.md +6 -6
  354. package/dist/agent-src/templates/scripts/check_memory.ts +640 -0
  355. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +351 -0
  356. package/dist/agent-src/templates/scripts/implement_ticket/__main__.ts +27 -0
  357. package/dist/agent-src/templates/scripts/memory_hash.ts +333 -0
  358. package/dist/agent-src/templates/scripts/memory_lookup.ts +1067 -0
  359. package/dist/agent-src/templates/scripts/memory_report.ts +846 -0
  360. package/dist/agent-src/templates/scripts/memory_signal.ts +422 -0
  361. package/dist/agent-src/templates/scripts/memory_status.ts +191 -0
  362. package/dist/agent-src/templates/scripts/pr_review_routing.ts +523 -0
  363. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  364. package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  365. package/dist/agent-src/templates/scripts/telemetry/boundary.ts +164 -0
  366. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +479 -0
  367. package/dist/agent-src/templates/scripts/telemetry/report_renderer.ts +394 -0
  368. package/dist/agent-src/templates/scripts/telemetry/settings.ts +210 -0
  369. package/dist/agent-src/templates/scripts/telemetry_record.ts +255 -0
  370. package/dist/agent-src/templates/scripts/telemetry_report.ts +189 -0
  371. package/dist/agent-src/templates/scripts/telemetry_status.ts +312 -0
  372. package/dist/agent-src/templates/scripts/tier_usage_report.ts +597 -0
  373. package/dist/agent-src/templates/scripts/work_engine/__main__.ts +14 -0
  374. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +1118 -0
  375. package/dist/agent-src/templates/scripts/work_engine/_lib/user_global_paths.ts +329 -0
  376. package/dist/agent-src/templates/scripts/work_engine/cli.ts +206 -0
  377. package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +249 -0
  378. package/dist/agent-src/templates/scripts/work_engine/delivery_state.ts +225 -0
  379. package/dist/agent-src/templates/scripts/work_engine/directives/backend/analyze.ts +125 -0
  380. package/dist/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +189 -0
  381. package/dist/agent-src/templates/scripts/work_engine/directives/backend/index.ts +94 -0
  382. package/dist/agent-src/templates/scripts/work_engine/directives/backend/memory.ts +193 -0
  383. package/dist/agent-src/templates/scripts/work_engine/directives/backend/plan.ts +267 -0
  384. package/dist/agent-src/templates/scripts/work_engine/directives/backend/refine.ts +518 -0
  385. package/dist/agent-src/templates/scripts/work_engine/directives/backend/report.ts +379 -0
  386. package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.ts +268 -0
  387. package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +258 -0
  388. package/dist/agent-src/templates/scripts/work_engine/directives/index.ts +32 -0
  389. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/contract.ts +243 -0
  390. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/index.ts +108 -0
  391. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +259 -0
  392. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/ui.ts +216 -0
  393. package/dist/agent-src/templates/scripts/work_engine/directives/ui/_passthrough.ts +40 -0
  394. package/dist/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +241 -0
  395. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +216 -0
  396. package/dist/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +506 -0
  397. package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +325 -0
  398. package/dist/agent-src/templates/scripts/work_engine/directives/ui/index.ts +102 -0
  399. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +462 -0
  400. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +474 -0
  401. package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +352 -0
  402. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.ts +33 -0
  403. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.ts +213 -0
  404. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/index.ts +111 -0
  405. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.ts +126 -0
  406. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/report.ts +112 -0
  407. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/test.ts +164 -0
  408. package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +515 -0
  409. package/dist/agent-src/templates/scripts/work_engine/emitters.ts +119 -0
  410. package/dist/agent-src/templates/scripts/work_engine/errors.ts +24 -0
  411. package/dist/agent-src/templates/scripts/work_engine/hook_bootstrap.ts +104 -0
  412. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +176 -0
  413. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.ts +41 -0
  414. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.ts +89 -0
  415. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.ts +193 -0
  416. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +304 -0
  417. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.ts +110 -0
  418. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.ts +118 -0
  419. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/index.ts +17 -0
  420. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +161 -0
  421. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.ts +45 -0
  422. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/trace.ts +134 -0
  423. package/dist/agent-src/templates/scripts/work_engine/hooks/context.ts +94 -0
  424. package/dist/agent-src/templates/scripts/work_engine/hooks/events.ts +58 -0
  425. package/dist/agent-src/templates/scripts/work_engine/hooks/exceptions.ts +85 -0
  426. package/dist/agent-src/templates/scripts/work_engine/hooks/index.ts +27 -0
  427. package/dist/agent-src/templates/scripts/work_engine/hooks/registry.ts +66 -0
  428. package/dist/agent-src/templates/scripts/work_engine/hooks/runner.ts +90 -0
  429. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +260 -0
  430. package/dist/agent-src/templates/scripts/work_engine/input_builders.ts +260 -0
  431. package/dist/agent-src/templates/scripts/work_engine/intent/classify.ts +466 -0
  432. package/dist/agent-src/templates/scripts/work_engine/migration/v0_to_v1.ts +531 -0
  433. package/dist/agent-src/templates/scripts/work_engine/orchestration.ts +366 -0
  434. package/dist/agent-src/templates/scripts/work_engine/persona_policy.ts +97 -0
  435. package/dist/agent-src/templates/scripts/work_engine/resolvers/diff.ts +135 -0
  436. package/dist/agent-src/templates/scripts/work_engine/resolvers/file.ts +175 -0
  437. package/dist/agent-src/templates/scripts/work_engine/resolvers/prompt.ts +115 -0
  438. package/dist/agent-src/templates/scripts/work_engine/scoring/confidence.ts +415 -0
  439. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +466 -0
  440. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_trace.ts +298 -0
  441. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +444 -0
  442. package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +252 -0
  443. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +745 -0
  444. package/dist/agent-src/templates/scripts/work_engine/state.ts +1151 -0
  445. package/dist/agent-src/templates/scripts/work_engine/state_io.ts +413 -0
  446. package/dist/agent-src/templates/tickets.md +120 -0
  447. package/dist/cli/agent-config.js +31 -300
  448. package/dist/cli/agent-config.js.map +1 -1
  449. package/dist/cli/commands/commands.js +11 -6
  450. package/dist/cli/commands/commands.js.map +1 -1
  451. package/dist/cli/commands/doctorShell.js +4 -22
  452. package/dist/cli/commands/doctorShell.js.map +1 -1
  453. package/dist/cli/commands/packs.js +1 -1
  454. package/dist/cli/commands/packs.js.map +1 -1
  455. package/dist/cli/commands/recordTriggerEval.js +179 -0
  456. package/dist/cli/commands/recordTriggerEval.js.map +1 -0
  457. package/dist/cli/commands/recordTriggerEval.test.js +113 -0
  458. package/dist/cli/commands/recordTriggerEval.test.js.map +1 -0
  459. package/dist/cli/commands/workspaces.js +1 -1
  460. package/dist/cli/commands/workspaces.js.map +1 -1
  461. package/dist/cli/discovery/loadManifest.js.map +1 -1
  462. package/dist/cli/main.js +330 -0
  463. package/dist/cli/main.js.map +1 -0
  464. package/dist/cli/python/knowledge_ingest.js +1048 -0
  465. package/dist/cli/python/knowledge_ingest.js.map +1 -0
  466. package/dist/cli/python/workspace_analytics.js +1085 -0
  467. package/dist/cli/python/workspace_analytics.js.map +1 -0
  468. package/dist/cli/python/workspace_crypto.js +544 -0
  469. package/dist/cli/python/workspace_crypto.js.map +1 -0
  470. package/dist/cli/python/workspace_documents.js +1216 -0
  471. package/dist/cli/python/workspace_documents.js.map +1 -0
  472. package/dist/cli/python/workspace_drive.js +574 -0
  473. package/dist/cli/python/workspace_drive.js.map +1 -0
  474. package/dist/cli/python/workspace_drive_health.js +628 -0
  475. package/dist/cli/python/workspace_drive_health.js.map +1 -0
  476. package/dist/cli/python/workspace_explain.js +765 -0
  477. package/dist/cli/python/workspace_explain.js.map +1 -0
  478. package/dist/cli/python/workspace_hosts.js +349 -0
  479. package/dist/cli/python/workspace_hosts.js.map +1 -0
  480. package/dist/cli/python/workspace_inbox.js +692 -0
  481. package/dist/cli/python/workspace_inbox.js.map +1 -0
  482. package/dist/cli/python/workspace_render.js +816 -0
  483. package/dist/cli/python/workspace_render.js.map +1 -0
  484. package/dist/cli/python/workspace_roles.js +487 -0
  485. package/dist/cli/python/workspace_roles.js.map +1 -0
  486. package/dist/cli/python/workspace_secrets.js +180 -0
  487. package/dist/cli/python/workspace_secrets.js.map +1 -0
  488. package/dist/cli/python/workspace_sessions.js +1079 -0
  489. package/dist/cli/python/workspace_sessions.js.map +1 -0
  490. package/dist/cli/python/workspace_skills.js +417 -0
  491. package/dist/cli/python/workspace_skills.js.map +1 -0
  492. package/dist/cli/registry.js +2 -0
  493. package/dist/cli/registry.js.map +1 -1
  494. package/dist/discovery/deprecation-report.md +1 -1
  495. package/dist/discovery/discovery-manifest.json +1802 -448
  496. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  497. package/dist/discovery/discovery-manifest.summary.md +12 -6
  498. package/dist/discovery/orphan-report.md +1 -1
  499. package/dist/discovery/packs.json +303 -43
  500. package/dist/discovery/trust-report.md +4 -4
  501. package/dist/discovery/workspaces.json +127 -41
  502. package/dist/install/install.mjs +13934 -0
  503. package/dist/mcp/registry-manifest.json +4 -4
  504. package/dist/router.json +1 -1
  505. package/dist/server/routes/wizard.js +54 -24
  506. package/dist/server/routes/wizard.js.map +1 -1
  507. package/dist/server/routes/workspace.js +44 -25
  508. package/dist/server/routes/workspace.js.map +1 -1
  509. package/dist/server/schemas/settings.js +33 -0
  510. package/dist/server/schemas/settings.js.map +1 -1
  511. package/docs/MIGRATION.md +1 -1
  512. package/docs/SKILL_CENSUS.md +344 -0
  513. package/docs/adrs/cost/0001-hard-stop-hook.md +5 -5
  514. package/docs/adrs/memory/0001-consumer-side-snapshot.md +15 -7
  515. package/docs/adrs/memory/README.md +6 -5
  516. package/docs/adrs/router/0001-three-tier-routing.md +2 -2
  517. package/docs/adrs/schema/0001-json-schema-frontmatter.md +2 -2
  518. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +5 -5
  519. package/docs/adrs/telegraph/0001-default-off-until-bench.md +3 -3
  520. package/docs/architecture/augment-projection.md +1 -1
  521. package/docs/architecture/multi-tool-projection.md +3 -3
  522. package/docs/architecture.md +42 -11
  523. package/docs/archive/CHANGELOG-pre-2.2.0.md +30 -30
  524. package/docs/archive/CHANGELOG-pre-2.25.0.md +1 -1
  525. package/docs/archive/CHANGELOG-pre-4.5.0.md +1 -1
  526. package/docs/archive/CHANGELOG-pre-6.0.0.md +473 -0
  527. package/docs/benchmark.md +51 -53
  528. package/docs/benchmarks.md +2 -2
  529. package/docs/capability-matrix.md +32 -0
  530. package/docs/case-studies/frontend-design-positioning.md +86 -0
  531. package/docs/catalog.md +63 -15
  532. package/docs/command-flows.md +90 -92
  533. package/docs/command-naming-audit.md +60 -0
  534. package/docs/contracts/STABILITY.md +32 -0
  535. package/docs/contracts/adr-layout.md +2 -3
  536. package/docs/contracts/adr-level-6-productization.md +1 -1
  537. package/docs/contracts/agents-md-tech-stack.md +1 -1
  538. package/docs/contracts/ai-council-config.md +64 -29
  539. package/docs/contracts/analysis-memory-loop.md +149 -0
  540. package/docs/contracts/benchmark-ab-contract.md +3 -3
  541. package/docs/contracts/branch-protection-policy.md +27 -0
  542. package/docs/contracts/brand-token-consumption.md +69 -0
  543. package/docs/contracts/command-clusters.md +3 -2
  544. package/docs/contracts/command-surface-tiers.md +13 -0
  545. package/docs/contracts/cost-enforcement.md +1 -1
  546. package/docs/contracts/cost-summary-schema.md +1 -1
  547. package/docs/contracts/daily-workspace.md +1 -0
  548. package/docs/contracts/discovery-manifest.schema.json +25 -4
  549. package/docs/contracts/explain-modes.md +1 -1
  550. package/docs/contracts/implement-ticket-flow.md +15 -16
  551. package/docs/contracts/install-layout.md +249 -0
  552. package/docs/contracts/kernel-membership.md +1 -1
  553. package/docs/contracts/linear-ai-rules-inclusion.md +2 -2
  554. package/docs/contracts/linter-structural-model.md +1 -1
  555. package/docs/contracts/mcp-discovery-phase-notice.md +1 -1
  556. package/docs/contracts/mcp-tool-inventory.md +10 -10
  557. package/docs/contracts/measurement-baseline.md +1 -1
  558. package/docs/contracts/memory-visibility-v1.md +1 -5
  559. package/docs/contracts/multi-tool-projection-fidelity.md +1 -1
  560. package/docs/contracts/namespace.md +3 -3
  561. package/docs/contracts/no-runtime-boundary.md +56 -0
  562. package/docs/contracts/package-self-orientation.md +24 -0
  563. package/docs/contracts/persona-schema.md +1 -1
  564. package/docs/contracts/provider-lifecycle.md +3 -3
  565. package/docs/contracts/reasoning-discipline-protocol.md +83 -0
  566. package/docs/contracts/rule-classification.md +3 -3
  567. package/docs/contracts/rule-interactions.md +1 -1
  568. package/docs/contracts/skill-domains.md +1 -1
  569. package/docs/contracts/smoke-contracts.md +2 -2
  570. package/docs/contracts/surface-tiers.md +81 -0
  571. package/docs/contracts/ticket-bundle-format.md +228 -0
  572. package/docs/contracts/universal-skills.md +0 -1
  573. package/docs/contracts/workspace-boundary.md +84 -0
  574. package/docs/cookbook.md +152 -0
  575. package/docs/customization.md +15 -4
  576. package/docs/decisions/ADR-009-event4u-namespace.md +1 -1
  577. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +17 -1
  578. package/docs/decisions/ADR-026-explain-mode-translation.md +1 -1
  579. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +1 -1
  580. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +1 -1
  581. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +1 -1
  582. package/docs/decisions/ADR-061-corpus-grounding-layer.md +48 -1
  583. package/docs/decisions/ADR-088-no-external-runtime-federation.md +26 -27
  584. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +95 -0
  585. package/docs/decisions/ADR-091-split-meta-capability-packs.md +113 -0
  586. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +93 -0
  587. package/docs/decisions/ADR-093-ai-council-config-user-global.md +111 -0
  588. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +94 -0
  589. package/docs/decisions/ADR-095-workspace-boundary-contract.md +108 -0
  590. package/docs/decisions/ADR-096-analysis-workbench.md +110 -0
  591. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +121 -0
  592. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +154 -0
  593. package/docs/decisions/ADR-099-file-first-pattern-library.md +87 -0
  594. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +133 -0
  595. package/docs/decisions/ADR-101-ticket-bundle-emission.md +109 -0
  596. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +72 -0
  597. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +92 -0
  598. package/docs/decisions/ADR-200-python-to-typescript-migration.md +193 -0
  599. package/docs/decisions/INDEX.md +15 -0
  600. package/docs/development.md +5 -7
  601. package/docs/distribution/mcp-submission-checklist.md +3 -3
  602. package/docs/featured-commands.md +1 -1
  603. package/docs/featured-skills.md +1 -1
  604. package/docs/getting-started-by-role.md +2 -0
  605. package/docs/getting-started.md +4 -4
  606. package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
  607. package/docs/guidelines/agent-infra/comparison-matrix.md +1 -1
  608. package/docs/guidelines/agent-infra/corpus-grounding-authoring.md +1 -1
  609. package/docs/guidelines/agent-infra/critical-thinking.md +1 -1
  610. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +1 -5
  611. package/docs/guidelines/agent-infra/failure-signatures.md +35 -0
  612. package/docs/guidelines/agent-infra/first-principles.md +1 -1
  613. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
  614. package/docs/guidelines/agent-infra/inversion-thinking.md +1 -1
  615. package/docs/guidelines/agent-infra/ios-simulator-guide.md +9 -14
  616. package/docs/guidelines/agent-infra/mcp-request-signing.md +19 -22
  617. package/docs/guidelines/agent-infra/memory-access.md +25 -31
  618. package/docs/guidelines/agent-infra/mental-models.md +1 -1
  619. package/docs/guidelines/agent-infra/model-recommendation.md +29 -0
  620. package/docs/guidelines/agent-infra/scqa-framework.md +3 -3
  621. package/docs/guidelines/agent-infra/security-lint-containment.md +81 -0
  622. package/docs/guidelines/agent-infra/six-hats.md +1 -1
  623. package/docs/guidelines/agent-infra/size-and-scope.md +17 -0
  624. package/docs/guidelines/agent-infra/skill-quality-checklist.md +2 -2
  625. package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
  626. package/docs/guidelines/agent-infra/untrusted-input-spotlighting.md +72 -0
  627. package/docs/guides/frontend-design-corpus-refresh.md +83 -0
  628. package/docs/guides/skill-preview.md +1 -1
  629. package/docs/hook-payload-capture.md +4 -4
  630. package/docs/installation.md +1 -1
  631. package/docs/mcp.md +3 -3
  632. package/docs/migration/consumer-template-consumption-model.md +145 -0
  633. package/docs/migration/divergences/README.md +55 -0
  634. package/docs/migration/divergences/_template.md +50 -0
  635. package/docs/migration/divergences/bench-stats-float-precision.md +72 -0
  636. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +61 -0
  637. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +53 -0
  638. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +63 -0
  639. package/docs/migration/divergences/src-scripts-check_memory.md +91 -0
  640. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +65 -0
  641. package/docs/migration/divergences/src-scripts-lint_marketplace.md +57 -0
  642. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +70 -0
  643. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +60 -0
  644. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +58 -0
  645. package/docs/migration/node-floor.md +86 -0
  646. package/docs/migration/yaml-roundtrip-spike.md +163 -0
  647. package/docs/parity/bench-external.json +58 -0
  648. package/docs/parity/external-runtime.md +46 -0
  649. package/docs/personas.md +6 -1
  650. package/docs/quality.md +3 -3
  651. package/docs/role-experiences.md +19 -0
  652. package/docs/safety.md +3 -3
  653. package/docs/setup/per-ide/windsurf.md +1 -1
  654. package/docs/skills-catalog.md +26 -2
  655. package/docs/threat-model.md +28 -0
  656. package/llms.txt +25 -1
  657. package/package.json +10 -15
  658. package/src/config/agent-settings.template.yml +128 -3
  659. package/src/config/discovery/packs.yml +60 -0
  660. package/src/config/discovery/unassigned-artefacts.yml +6 -0
  661. package/src/config/discovery/workspaces.yml +5 -3
  662. package/src/config/gitignore-block.txt +13 -0
  663. package/src/scripts/_cli/cmd_doctor.ts +2306 -0
  664. package/src/scripts/_cli/cmd_explain.ts +748 -0
  665. package/src/scripts/_cli/cmd_export.ts +375 -0
  666. package/src/scripts/_cli/cmd_migrate.ts +951 -0
  667. package/src/scripts/_cli/cmd_prune.ts +610 -0
  668. package/src/scripts/_cli/cmd_refresh.ts +530 -0
  669. package/src/scripts/_cli/cmd_settings_check.ts +407 -0
  670. package/src/scripts/_cli/cmd_settings_migrate.ts +344 -0
  671. package/src/scripts/_cli/cmd_sync.ts +381 -0
  672. package/src/scripts/_cli/cmd_uninstall.ts +833 -0
  673. package/src/scripts/_cli/cmd_update.ts +585 -0
  674. package/src/scripts/_cli/cmd_upgrade.ts +390 -0
  675. package/src/scripts/_cli/cmd_validate.ts +394 -0
  676. package/src/scripts/_cli/cmd_versions.ts +492 -0
  677. package/src/scripts/_cli/explain_last/assumptions.ts +114 -0
  678. package/src/scripts/_cli/explain_last/council.ts +197 -0
  679. package/src/scripts/_cli/explain_last/halt.ts +73 -0
  680. package/src/scripts/_cli/explain_last/index.ts +155 -0
  681. package/src/scripts/_cli/explain_last/inputs.ts +211 -0
  682. package/src/scripts/_cli/explain_last/memory.ts +231 -0
  683. package/src/scripts/_cli/explain_last/provider.ts +82 -0
  684. package/src/scripts/_cli/explain_last/render.ts +54 -0
  685. package/src/scripts/_cli/explain_last/route.ts +70 -0
  686. package/src/scripts/_cli/explain_last/scrubber.ts +138 -0
  687. package/src/scripts/_cli/explain_last/sections/assumptions.ts +51 -0
  688. package/src/scripts/_cli/explain_last/sections/council.ts +56 -0
  689. package/src/scripts/_cli/explain_last/sections/halt.ts +60 -0
  690. package/src/scripts/_cli/explain_last/sections/header.ts +50 -0
  691. package/src/scripts/_cli/explain_last/sections/index.ts +21 -0
  692. package/src/scripts/_cli/explain_last/sections/inputs.ts +63 -0
  693. package/src/scripts/_cli/explain_last/sections/memory.ts +124 -0
  694. package/src/scripts/_cli/explain_last/sections/pack.ts +42 -0
  695. package/src/scripts/_cli/explain_last/sections/provider.ts +51 -0
  696. package/src/scripts/_cli/explain_last/sections/route.ts +48 -0
  697. package/src/scripts/_cli/explain_last/state_loader.ts +119 -0
  698. package/src/scripts/_dispatch.bash +179 -163
  699. package/src/scripts/_lib/agent_settings.ts +1123 -0
  700. package/src/scripts/_lib/agent_src.ts +654 -0
  701. package/src/scripts/_lib/agents_overlay.ts +183 -0
  702. package/src/scripts/_lib/bench_ab_cache.ts +399 -0
  703. package/src/scripts/_lib/bench_ab_scoring.ts +352 -0
  704. package/src/scripts/_lib/bench_ab_scoring_v2.ts +751 -0
  705. package/src/scripts/_lib/bench_cost.ts +396 -0
  706. package/src/scripts/_lib/bench_quality.ts +237 -0
  707. package/src/scripts/_lib/bench_report.ts +255 -0
  708. package/src/scripts/_lib/bench_telegraph.ts +516 -0
  709. package/src/scripts/_lib/bench_telegraph_report.ts +272 -0
  710. package/src/scripts/_lib/changelog_eras.ts +398 -0
  711. package/src/scripts/_lib/claude_desktop_bundler.ts +324 -0
  712. package/src/scripts/_lib/cli_wrapper.ts +89 -0
  713. package/src/scripts/_lib/fs_atomic.ts +172 -0
  714. package/src/scripts/_lib/global_deploy_inventory.ts +639 -0
  715. package/src/scripts/_lib/install_layout.ts +87 -0
  716. package/src/scripts/_lib/install_regenerator.ts +157 -0
  717. package/src/scripts/_lib/installed_lock.ts +451 -0
  718. package/src/scripts/_lib/installed_tools.ts +518 -0
  719. package/src/scripts/_lib/json_pointers.ts +388 -0
  720. package/src/scripts/_lib/knowledge_global.ts +770 -0
  721. package/src/scripts/_lib/knowledge_global_promote.ts +453 -0
  722. package/src/scripts/_lib/knowledge_global_redaction.ts +448 -0
  723. package/src/scripts/_lib/link_crypto.ts +325 -0
  724. package/src/scripts/_lib/linked_projects.ts +613 -0
  725. package/src/scripts/_lib/model_tier.ts +65 -0
  726. package/src/scripts/_lib/module_detection.ts +275 -0
  727. package/src/scripts/_lib/node_sqlite.d.ts +32 -0
  728. package/src/scripts/_lib/pin_resolver.ts +264 -0
  729. package/src/scripts/_lib/py_random.ts +212 -0
  730. package/src/scripts/_lib/script_output.ts +147 -0
  731. package/src/scripts/_lib/security_lint.ts +623 -0
  732. package/src/scripts/_lib/surface_tiers.ts +127 -0
  733. package/src/scripts/_lib/token_count.ts +126 -0
  734. package/src/scripts/_lib/update_check.ts +297 -0
  735. package/src/scripts/_lib/user_global_paths.ts +329 -0
  736. package/src/scripts/_lib/value_ladder.ts +882 -0
  737. package/src/scripts/_lib/value_report.ts +617 -0
  738. package/src/scripts/_lib/zip_min.ts +175 -0
  739. package/src/scripts/adoption_report.ts +357 -0
  740. package/src/scripts/adoption_snapshot.ts +392 -0
  741. package/src/scripts/adoption_status.ts +424 -0
  742. package/src/scripts/adr/regenerate_index.ts +257 -0
  743. package/src/scripts/ai-image/adapters/flux.sh +45 -0
  744. package/src/scripts/ai-image/adapters/gemini-image.sh +45 -0
  745. package/src/scripts/ai-image/adapters/ideogram.sh +45 -0
  746. package/src/scripts/ai-image/adapters/recraft.sh +47 -0
  747. package/src/scripts/ai-video/adapters/comfyui.sh +3 -3
  748. package/src/scripts/ai-video/adapters/fal.sh +3 -3
  749. package/src/scripts/ai-video/adapters/gemini-veo.sh +3 -3
  750. package/src/scripts/ai-video/adapters/higgsfield.sh +3 -3
  751. package/src/scripts/ai-video/adapters/kling.sh +3 -3
  752. package/src/scripts/ai-video/adapters/musetalk.sh +2 -2
  753. package/src/scripts/ai-video/adapters/openai-images.sh +3 -3
  754. package/src/scripts/ai-video/adapters/replicate.sh +3 -3
  755. package/src/scripts/ai-video/adapters/sora.sh +3 -3
  756. package/src/scripts/ai-video/adapters/syncso.sh +3 -3
  757. package/src/scripts/ai-video/audio-adapters/allin1.sh +2 -2
  758. package/src/scripts/ai-video/audio-adapters/whisperx.sh +2 -2
  759. package/src/scripts/ai-video/lib/audio-adapter-contract.md +1 -1
  760. package/src/scripts/ai-video/lib/embed-provenance.sh +2 -2
  761. package/src/scripts/ai-video/lib/ingest-song.sh +2 -2
  762. package/src/scripts/ai-video/lib/parse-blueprint.sh +1 -1
  763. package/src/scripts/ai-video/lib/resume-scan.sh +2 -2
  764. package/src/scripts/ai-video/smoke-trace.sh +16 -7
  765. package/src/scripts/ai-video/stitch.sh +2 -2
  766. package/src/scripts/ai_council/_default_prices.ts +73 -0
  767. package/src/scripts/ai_council/advisors.ts +244 -0
  768. package/src/scripts/ai_council/airgap.ts +249 -0
  769. package/src/scripts/ai_council/budget_guard.ts +492 -0
  770. package/src/scripts/ai_council/bundler.ts +376 -0
  771. package/src/scripts/ai_council/cli_hints.ts +120 -0
  772. package/src/scripts/ai_council/clients.ts +2214 -0
  773. package/src/scripts/ai_council/compile_corpus.ts +681 -0
  774. package/src/scripts/ai_council/confidence_gate.ts +230 -0
  775. package/src/scripts/ai_council/config.ts +1729 -0
  776. package/src/scripts/ai_council/consensus.ts +551 -0
  777. package/src/scripts/ai_council/events_log.ts +327 -0
  778. package/src/scripts/ai_council/learn_low_impact_preview.ts +317 -0
  779. package/src/scripts/ai_council/low_impact.ts +1069 -0
  780. package/src/scripts/ai_council/low_impact_corpus.ts +662 -0
  781. package/src/scripts/ai_council/low_impact_intake.ts +222 -0
  782. package/src/scripts/ai_council/modes.ts +169 -0
  783. package/src/scripts/ai_council/necessity.ts +933 -0
  784. package/src/scripts/ai_council/orchestrator.ts +1689 -0
  785. package/src/scripts/ai_council/pricing.ts +267 -0
  786. package/src/scripts/ai_council/probation_gate.ts +282 -0
  787. package/src/scripts/ai_council/project_context.ts +308 -0
  788. package/src/scripts/ai_council/prompts.ts +600 -0
  789. package/src/scripts/ai_council/redact_low_impact_entry.ts +291 -0
  790. package/src/scripts/ai_council/replay.ts +314 -0
  791. package/src/scripts/ai_council/session.ts +558 -0
  792. package/src/scripts/ai_council/shadow_dispatch.ts +509 -0
  793. package/src/scripts/ai_council/solo_dispatch.ts +281 -0
  794. package/src/scripts/analysis_freshness.ts +343 -0
  795. package/src/scripts/annotate_discovery.ts +288 -0
  796. package/src/scripts/apply_modules_config.ts +537 -0
  797. package/src/scripts/audit_adr_coverage.ts +357 -0
  798. package/src/scripts/audit_auto_rules.ts +415 -0
  799. package/src/scripts/audit_cloud_compatibility.ts +608 -0
  800. package/src/scripts/audit_command_surface.ts +1227 -0
  801. package/src/scripts/audit_initial_context.ts +694 -0
  802. package/src/scripts/audit_likelihood.ts +434 -0
  803. package/src/scripts/audit_mcp_tools.ts +252 -0
  804. package/src/scripts/audit_overlap.ts +421 -0
  805. package/src/scripts/audit_skill_descriptions.ts +402 -0
  806. package/src/scripts/audit_skill_overlap.ts +576 -0
  807. package/src/scripts/audit_user_type_axis.ts +264 -0
  808. package/src/scripts/backfill_model_tier.ts +349 -0
  809. package/src/scripts/bench_ab_cache_dispatch.ts +126 -0
  810. package/src/scripts/bench_ab_clone.ts +610 -0
  811. package/src/scripts/bench_ab_diff.ts +609 -0
  812. package/src/scripts/bench_ab_integrity.ts +261 -0
  813. package/src/scripts/bench_ab_run.ts +417 -0
  814. package/src/scripts/bench_ab_task_runner.ts +1382 -0
  815. package/src/scripts/bench_ab_tracka_run.ts +436 -0
  816. package/src/scripts/bench_ab_v2_run.ts +585 -0
  817. package/src/scripts/bench_ab_v2_stats.ts +1018 -0
  818. package/src/scripts/bench_baseline_ready.ts +326 -0
  819. package/src/scripts/bench_condense_memory.ts +479 -0
  820. package/src/scripts/bench_drift_check.ts +503 -0
  821. package/src/scripts/bench_per_tool.ts +591 -0
  822. package/src/scripts/bench_rtk_savings.ts +710 -0
  823. package/src/scripts/bench_run.ts +509 -0
  824. package/src/scripts/bench_runner.ts +519 -0
  825. package/src/scripts/build_cloud_bundle.ts +692 -0
  826. package/src/scripts/build_discovery_manifest.ts +1371 -0
  827. package/src/scripts/build_linear_digest.ts +368 -0
  828. package/src/scripts/build_mcp_registry_manifest.ts +351 -0
  829. package/src/scripts/build_rule_trigger_matrix.ts +469 -0
  830. package/src/scripts/capture_showcase_session.ts +735 -0
  831. package/src/scripts/chat_history.ts +2301 -0
  832. package/src/scripts/check_always_budget.ts +694 -0
  833. package/src/scripts/check_artefact_checksums.ts +281 -0
  834. package/src/scripts/check_augment_description_cap.ts +133 -0
  835. package/src/scripts/check_augmentignore.ts +108 -0
  836. package/src/scripts/check_beta_review_markers.ts +234 -0
  837. package/src/scripts/check_bite_sized_granularity.ts +116 -0
  838. package/src/scripts/check_cluster_patterns.ts +285 -0
  839. package/src/scripts/check_command_count_messaging.ts +224 -0
  840. package/src/scripts/check_condensation.ts +900 -0
  841. package/src/scripts/check_condensed_paths.ts +414 -0
  842. package/src/scripts/check_context_paths.ts +388 -0
  843. package/src/scripts/check_council_config_location.ts +260 -0
  844. package/src/scripts/check_council_layout.ts +180 -0
  845. package/src/scripts/check_council_references.ts +345 -0
  846. package/src/scripts/check_discovery_determinism.ts +124 -0
  847. package/src/scripts/check_gate_paths.ts +230 -0
  848. package/src/scripts/check_iron_law_prominence.ts +298 -0
  849. package/src/scripts/check_kernel_rule_bundle.ts +242 -0
  850. package/src/scripts/check_knowledge_cards.ts +759 -0
  851. package/src/scripts/check_md_language.ts +291 -0
  852. package/src/scripts/check_memory.ts +845 -0
  853. package/src/scripts/check_memory_proposal.ts +351 -0
  854. package/src/scripts/check_module_management_neutral.ts +238 -0
  855. package/src/scripts/check_no_conflict_markers.ts +298 -0
  856. package/src/scripts/check_no_conflict_markers_allowlist.json +4 -0
  857. package/src/scripts/check_no_external_sources.ts +351 -0
  858. package/src/scripts/check_no_local_settings_committed.ts +69 -0
  859. package/src/scripts/check_no_new_legacy_path.ts +188 -0
  860. package/src/scripts/check_no_roadmap_refs.ts +304 -0
  861. package/src/scripts/check_one_off_location.ts +165 -0
  862. package/src/scripts/check_overlay_cascade_subdirs.ts +188 -0
  863. package/src/scripts/check_portability.ts +860 -0
  864. package/src/scripts/check_proposal.ts +0 -0
  865. package/src/scripts/check_public_catalog_links.ts +204 -0
  866. package/src/scripts/check_public_links.ts +357 -0
  867. package/src/scripts/check_references.ts +963 -0
  868. package/src/scripts/check_release_includes_discovery.ts +94 -0
  869. package/src/scripts/check_release_pr_shape.ts +222 -0
  870. package/src/scripts/check_release_published.ts +235 -0
  871. package/src/scripts/check_release_trunk_sync.ts +203 -0
  872. package/src/scripts/check_reply_consistency.ts +359 -0
  873. package/src/scripts/check_roadmap_trackable.ts +268 -0
  874. package/src/scripts/check_role_doc_links.ts +187 -0
  875. package/src/scripts/check_safety_floor_untouched.ts +160 -0
  876. package/src/scripts/check_skill_requires.ts +205 -0
  877. package/src/scripts/check_structural_breaking.ts +170 -0
  878. package/src/scripts/check_surface_tiers.ts +567 -0
  879. package/src/scripts/check_template_pin_drift.ts +222 -0
  880. package/src/scripts/check_test_coverage_diff.ts +235 -0
  881. package/src/scripts/check_token_optimizer_freshness.ts +183 -0
  882. package/src/scripts/check_trigger_evals.ts +375 -0
  883. package/src/scripts/check_update_banner.ts +143 -0
  884. package/src/scripts/ci_status.ts +0 -0
  885. package/src/scripts/ci_summary.ts +235 -0
  886. package/src/scripts/ci_time_ratio.ts +526 -0
  887. package/src/scripts/command_suggester/cooldown.ts +176 -0
  888. package/src/scripts/command_suggester/index.ts +41 -0
  889. package/src/scripts/command_suggester/loader.ts +205 -0
  890. package/src/scripts/command_suggester/match.ts +294 -0
  891. package/src/scripts/command_suggester/rank.ts +201 -0
  892. package/src/scripts/command_suggester/render.ts +122 -0
  893. package/src/scripts/command_suggester/sanitize.ts +114 -0
  894. package/src/scripts/command_suggester/settings.ts +186 -0
  895. package/src/scripts/command_suggester/types.ts +0 -0
  896. package/src/scripts/compile_router.ts +297 -0
  897. package/src/scripts/condense.sh +7 -1
  898. package/src/scripts/condense.ts +2035 -0
  899. package/src/scripts/condense_memory.ts +334 -0
  900. package/src/scripts/config/index.ts +15 -0
  901. package/src/scripts/config/packs.ts +310 -0
  902. package/src/scripts/config/presets.ts +369 -0
  903. package/src/scripts/config/profile_explain.ts +114 -0
  904. package/src/scripts/config/profiles.ts +277 -0
  905. package/src/scripts/config/session_profiles.ts +1064 -0
  906. package/src/scripts/context_hygiene_hook.ts +272 -0
  907. package/src/scripts/cost_by_conversation.ts +444 -0
  908. package/src/scripts/cost_summary.ts +407 -0
  909. package/src/scripts/council_cli.ts +2827 -0
  910. package/src/scripts/council_prune.ts +153 -0
  911. package/src/scripts/cross_repo_retrieve.ts +694 -0
  912. package/src/scripts/discovery_stats.ts +218 -0
  913. package/src/scripts/evidence_report.ts +580 -0
  914. package/src/scripts/external_sources_denylist.json +92 -0
  915. package/src/scripts/extract_audit_patterns.ts +394 -0
  916. package/src/scripts/first_run_gate_hook.ts +246 -0
  917. package/src/scripts/gen_discovery_baseline.ts +297 -0
  918. package/src/scripts/generate_capabilities_index.ts +496 -0
  919. package/src/scripts/generate_capability_matrix.ts +430 -0
  920. package/src/scripts/generate_catalog.ts +178 -0
  921. package/src/scripts/generate_command_flows.ts +316 -0
  922. package/src/scripts/generate_cookbook.ts +302 -0
  923. package/src/scripts/generate_index.ts +500 -0
  924. package/src/scripts/generate_ownership_matrix.ts +646 -0
  925. package/src/scripts/generate_pack_manifests.ts +1025 -0
  926. package/src/scripts/generate_role_experiences_catalog.ts +265 -0
  927. package/src/scripts/hermetic-install.sh +22 -11
  928. package/src/scripts/hook_manifest.yaml +37 -15
  929. package/src/scripts/hooks/augment-chat-history.sh +3 -10
  930. package/src/scripts/hooks/augment-context-hygiene.sh +3 -10
  931. package/src/scripts/hooks/augment-dispatcher.sh +3 -10
  932. package/src/scripts/hooks/augment-onboarding-gate.sh +3 -10
  933. package/src/scripts/hooks/augment-roadmap-progress.sh +3 -10
  934. package/src/scripts/hooks/block_no_verify.ts +413 -0
  935. package/src/scripts/hooks/cline-dispatcher.sh +3 -10
  936. package/src/scripts/hooks/cowork-dispatcher.sh +3 -14
  937. package/src/scripts/hooks/cursor-dispatcher.sh +3 -10
  938. package/src/scripts/hooks/dispatch_hook.ts +851 -0
  939. package/src/scripts/hooks/dispatch_issues.ts +226 -0
  940. package/src/scripts/hooks/envelope.ts +140 -0
  941. package/src/scripts/hooks/gemini-dispatcher.sh +3 -8
  942. package/src/scripts/hooks/replay_hook.ts +364 -0
  943. package/src/scripts/hooks/state_io.ts +293 -0
  944. package/src/scripts/hooks/windsurf-dispatcher.sh +3 -9
  945. package/src/scripts/hooks_doctor.ts +418 -0
  946. package/src/scripts/hooks_status.ts +292 -0
  947. package/src/scripts/injection_scan_hook.ts +285 -0
  948. package/src/scripts/install +36 -22
  949. package/src/scripts/install-hooks.sh +29 -12
  950. package/src/scripts/install.sh +38 -14
  951. package/src/scripts/install.ts +4515 -0
  952. package/src/scripts/inventory_abstraction_budget.ts +1104 -0
  953. package/src/scripts/inventory_frontmatter.ts +320 -0
  954. package/src/scripts/inventory_meta_layers.ts +516 -0
  955. package/src/scripts/iron_law_sha.ts +233 -0
  956. package/src/scripts/knowledge_global_cli.ts +1105 -0
  957. package/src/scripts/linked_projects_list.ts +310 -0
  958. package/src/scripts/lint_agent_security.ts +224 -0
  959. package/src/scripts/lint_agent_skill_names.ts +241 -0
  960. package/src/scripts/lint_agents_layout.ts +205 -0
  961. package/src/scripts/lint_agents_md.ts +294 -0
  962. package/src/scripts/lint_archived_skills.ts +309 -0
  963. package/src/scripts/lint_artefact_frontmatter.ts +359 -0
  964. package/src/scripts/lint_bench_ab.ts +319 -0
  965. package/src/scripts/lint_bench_corpus.ts +421 -0
  966. package/src/scripts/lint_command_flow_coverage.ts +231 -0
  967. package/src/scripts/lint_command_routing.ts +377 -0
  968. package/src/scripts/lint_command_tiers.ts +345 -0
  969. package/src/scripts/lint_command_verbs.ts +379 -0
  970. package/src/scripts/lint_commit_subjects.ts +243 -0
  971. package/src/scripts/lint_context_spine_usage.ts +198 -0
  972. package/src/scripts/lint_discovery_manifest.ts +540 -0
  973. package/src/scripts/lint_discovery_vocabulary.ts +393 -0
  974. package/src/scripts/lint_empty_roadmaps.ts +147 -0
  975. package/src/scripts/lint_eval_freshness.ts +335 -0
  976. package/src/scripts/lint_examples.ts +183 -0
  977. package/src/scripts/lint_explain_trace.ts +381 -0
  978. package/src/scripts/lint_featured_skills.ts +0 -0
  979. package/src/scripts/lint_flows.ts +701 -0
  980. package/src/scripts/lint_framework_leakage.ts +497 -0
  981. package/src/scripts/lint_framework_leakage_allowlist.json +8 -1
  982. package/src/scripts/lint_frontmatter_boilerplate.ts +356 -0
  983. package/src/scripts/lint_ghostwriter_source.ts +389 -0
  984. package/src/scripts/lint_global_paths.ts +420 -0
  985. package/src/scripts/lint_handoffs.ts +362 -0
  986. package/src/scripts/lint_hidden_unicode.ts +350 -0
  987. package/src/scripts/lint_hook_concern_budget.ts +319 -0
  988. package/src/scripts/lint_hook_manifest.ts +354 -0
  989. package/src/scripts/lint_instruction_smuggling.ts +173 -0
  990. package/src/scripts/lint_load_context.ts +371 -0
  991. package/src/scripts/lint_marketplace.ts +286 -0
  992. package/src/scripts/lint_marketplace_install_completeness.ts +309 -0
  993. package/src/scripts/lint_mcp_config_security.ts +225 -0
  994. package/src/scripts/lint_mcp_registry_manifest.ts +350 -0
  995. package/src/scripts/lint_media_policy_linkage.ts +224 -0
  996. package/src/scripts/lint_missions.ts +774 -0
  997. package/src/scripts/lint_model_tier_coverage.ts +151 -0
  998. package/src/scripts/lint_namespace.ts +295 -0
  999. package/src/scripts/lint_namespace_collisions.ts +203 -0
  1000. package/src/scripts/lint_new_skill_gate.ts +462 -0
  1001. package/src/scripts/lint_no_new_atomic_commands.ts +342 -0
  1002. package/src/scripts/lint_one_off_age.ts +348 -0
  1003. package/src/scripts/lint_orchestration_dsl.ts +377 -0
  1004. package/src/scripts/lint_orchestrator_auto_detect.ts +177 -0
  1005. package/src/scripts/lint_pack_boundaries.ts +366 -0
  1006. package/src/scripts/lint_pack_dependencies.ts +541 -0
  1007. package/src/scripts/lint_pack_first_win.ts +202 -0
  1008. package/src/scripts/lint_persona_governance.ts +292 -0
  1009. package/src/scripts/lint_positioning.ts +257 -0
  1010. package/src/scripts/lint_profile_overlay_set_only.ts +324 -0
  1011. package/src/scripts/lint_readme_jargon.ts +189 -0
  1012. package/src/scripts/lint_readme_size.ts +73 -0
  1013. package/src/scripts/lint_regression.ts +497 -0
  1014. package/src/scripts/lint_roadmap_ci_steps.ts +252 -0
  1015. package/src/scripts/lint_roadmap_complexity.ts +295 -0
  1016. package/src/scripts/lint_roadmap_later_disposition.ts +357 -0
  1017. package/src/scripts/lint_role_experiences.ts +410 -0
  1018. package/src/scripts/lint_rule_interactions.ts +281 -0
  1019. package/src/scripts/lint_rule_tiers.ts +169 -0
  1020. package/src/scripts/lint_showcase_sessions.ts +254 -0
  1021. package/src/scripts/lint_skill_frontmatter_safety.ts +279 -0
  1022. package/src/scripts/lint_skill_originality.ts +586 -0
  1023. package/src/scripts/lint_skill_originality_allowlist.json +20 -0
  1024. package/src/scripts/lint_skill_tools.ts +320 -0
  1025. package/src/scripts/lint_ticket_buildable.ts +1027 -0
  1026. package/src/scripts/lint_topics_yaml.ts +203 -0
  1027. package/src/scripts/lint_trust_coherence.ts +377 -0
  1028. package/src/scripts/lint_value_dashboard.ts +314 -0
  1029. package/src/scripts/lint_workflow_security.ts +637 -0
  1030. package/src/scripts/lint_workflow_security_allowlist.json +20 -0
  1031. package/src/scripts/lint_workspace_boundary.ts +248 -0
  1032. package/src/scripts/mcp_parity_smoke.ts +638 -0
  1033. package/src/scripts/mcp_render.ts +346 -0
  1034. package/src/scripts/mcp_server/__main__.ts +28 -0
  1035. package/src/scripts/mcp_server/catalog.ts +154 -0
  1036. package/src/scripts/mcp_server/consumer_tool_catalog.json +2 -3
  1037. package/src/scripts/mcp_server/index.ts +24 -0
  1038. package/src/scripts/mcp_server/metadata.ts +83 -0
  1039. package/src/scripts/mcp_server/prompts.ts +711 -0
  1040. package/src/scripts/mcp_server/resources.ts +343 -0
  1041. package/src/scripts/mcp_server/server.ts +439 -0
  1042. package/src/scripts/mcp_server/telemetry.ts +154 -0
  1043. package/src/scripts/mcp_server/tools.ts +1031 -0
  1044. package/src/scripts/mcp_setup.sh +25 -52
  1045. package/src/scripts/mcp_telemetry_health.ts +362 -0
  1046. package/src/scripts/mcp_telemetry_query.ts +371 -0
  1047. package/src/scripts/mcp_telemetry_store.ts +422 -0
  1048. package/src/scripts/measure_augment_budget.ts +453 -0
  1049. package/src/scripts/measure_density.ts +618 -0
  1050. package/src/scripts/measure_frugality_savings.ts +353 -0
  1051. package/src/scripts/measure_markitdown_lift.ts +299 -0
  1052. package/src/scripts/measure_patterns.ts +682 -0
  1053. package/src/scripts/measure_projection_bytes.ts +425 -0
  1054. package/src/scripts/measure_rule_budget.ts +627 -0
  1055. package/src/scripts/measure_skill_reduction.ts +442 -0
  1056. package/src/scripts/media/lib/adapter-common.sh +247 -0
  1057. package/src/scripts/media/lib/adapter-contract.md +329 -0
  1058. package/src/scripts/media/lib/fixtures/comfyui/result.json +1 -0
  1059. package/src/scripts/media/lib/fixtures/fal/result.json +1 -0
  1060. package/src/scripts/media/lib/fixtures/flux/asset-0001.png +0 -0
  1061. package/src/scripts/media/lib/fixtures/flux/result.json +1 -0
  1062. package/src/scripts/media/lib/fixtures/gemini-image/asset-0001.png +0 -0
  1063. package/src/scripts/media/lib/fixtures/gemini-image/result.json +1 -0
  1064. package/src/scripts/media/lib/fixtures/gemini-veo/result.json +1 -0
  1065. package/src/scripts/media/lib/fixtures/higgsfield/result.json +1 -0
  1066. package/src/scripts/media/lib/fixtures/ideogram/asset-0001.png +0 -0
  1067. package/src/scripts/media/lib/fixtures/ideogram/result.json +1 -0
  1068. package/src/scripts/media/lib/fixtures/kling/result.json +1 -0
  1069. package/src/scripts/media/lib/fixtures/musetalk/result.json +1 -0
  1070. package/src/scripts/media/lib/fixtures/openai-images/result.json +1 -0
  1071. package/src/scripts/media/lib/fixtures/recraft/asset-0001.svg +1 -0
  1072. package/src/scripts/media/lib/fixtures/recraft/result.json +1 -0
  1073. package/src/scripts/media/lib/fixtures/replicate/result.json +1 -0
  1074. package/src/scripts/media/lib/fixtures/sora/result.json +1 -0
  1075. package/src/scripts/media/lib/fixtures/syncso/result.json +1 -0
  1076. package/src/scripts/media/lib/load-config.sh +180 -0
  1077. package/src/scripts/media/lib/redact.sh +85 -0
  1078. package/src/scripts/memory_hash.ts +331 -0
  1079. package/src/scripts/memory_lookup.ts +1278 -0
  1080. package/src/scripts/memory_report.ts +845 -0
  1081. package/src/scripts/memory_signal.ts +417 -0
  1082. package/src/scripts/memory_status.ts +189 -0
  1083. package/src/scripts/migrate_command_suggestions.ts +341 -0
  1084. package/src/scripts/migrate_frontmatter_defaults.ts +539 -0
  1085. package/src/scripts/migration_status.ts +301 -0
  1086. package/src/scripts/mine_session.ts +645 -0
  1087. package/src/scripts/minimal_safe_diff_hook.ts +355 -0
  1088. package/src/scripts/move_artefact.ts +869 -0
  1089. package/src/scripts/new_skill.ts +404 -0
  1090. package/src/scripts/onboarding_gate_hook.ts +224 -0
  1091. package/src/scripts/pack_dependency_allowlist.json +2 -2
  1092. package/src/scripts/pack_mcp_content.ts +552 -0
  1093. package/src/scripts/parity/README.md +140 -0
  1094. package/src/scripts/parity/compare.ts +189 -0
  1095. package/src/scripts/parity/coverage_diff.ts +199 -0
  1096. package/src/scripts/parity/phase-manifest.json +93 -0
  1097. package/src/scripts/parity/phase_gate.ts +270 -0
  1098. package/src/scripts/parity/replay.ts +320 -0
  1099. package/src/scripts/pattern_share.ts +363 -0
  1100. package/src/scripts/plan_physical_move.ts +605 -0
  1101. package/src/scripts/prediction-pool/poisson_sim.ts +537 -0
  1102. package/src/scripts/prediction-pool/pool_winsim.ts +677 -0
  1103. package/src/scripts/prediction-pool/score_ev.ts +546 -0
  1104. package/src/scripts/print_required_checks.ts +249 -0
  1105. package/src/scripts/probe_projection_fidelity.ts +468 -0
  1106. package/src/scripts/probe_skill_registration.ts +787 -0
  1107. package/src/scripts/profile_staleness_hook.ts +169 -0
  1108. package/src/scripts/profile_use.ts +227 -0
  1109. package/src/scripts/project_thin_rules.ts +387 -0
  1110. package/src/scripts/propose_modules_config.ts +311 -0
  1111. package/src/scripts/prototype_lint_contradictions.ts +414 -0
  1112. package/src/scripts/prove_pack_extractable.ts +388 -0
  1113. package/src/scripts/readme_linter.ts +913 -0
  1114. package/src/scripts/redact_hook_capture.ts +325 -0
  1115. package/src/scripts/refine_ticket_detect.ts +703 -0
  1116. package/src/scripts/release.ts +1697 -0
  1117. package/src/scripts/render_benchmark_md.ts +664 -0
  1118. package/src/scripts/render_value_md.ts +506 -0
  1119. package/src/scripts/repro/repro_marketplace_install_gap.sh +1 -1
  1120. package/src/scripts/roadmap_progress_hook.ts +410 -0
  1121. package/src/scripts/router_telemetry.ts +972 -0
  1122. package/src/scripts/run.ts +98 -0
  1123. package/src/scripts/run_skill_evals.ts +477 -0
  1124. package/src/scripts/runtime_dispatcher.ts +586 -0
  1125. package/src/scripts/runtime_handler.ts +231 -0
  1126. package/src/scripts/runtime_registry.ts +394 -0
  1127. package/src/scripts/schemas/command.schema.json +7 -1
  1128. package/src/scripts/schemas/mission-catalog.schema.json +112 -0
  1129. package/src/scripts/schemas/mission.schema.json +87 -0
  1130. package/src/scripts/schemas/pack.schema.json +6 -0
  1131. package/src/scripts/schemas/rule.schema.json +1 -0
  1132. package/src/scripts/schemas/skill.schema.json +1 -0
  1133. package/src/scripts/schemas/ticket-manifest.schema.json +35 -0
  1134. package/src/scripts/schemas/ticket.schema.json +60 -0
  1135. package/src/scripts/score_skill_selection.ts +570 -0
  1136. package/src/scripts/security_audit_config.ts +423 -0
  1137. package/src/scripts/skill_collision_clusters.ts +448 -0
  1138. package/src/scripts/skill_discovery.ts +690 -0
  1139. package/src/scripts/skill_linter.ts +4276 -0
  1140. package/src/scripts/skill_overlap.ts +414 -0
  1141. package/src/scripts/skill_preview.ts +548 -0
  1142. package/src/scripts/skill_tools/audit_persona_coverage.ts +427 -0
  1143. package/src/scripts/skill_tools/audit_user_type_coverage.ts +507 -0
  1144. package/src/scripts/skill_tools/index.ts +28 -0
  1145. package/src/scripts/skill_tools/run_block_d_eval.ts +373 -0
  1146. package/src/scripts/skill_tools/score_skill_relevance.ts +475 -0
  1147. package/src/scripts/skill_tools/suggest_skill_for_task.ts +288 -0
  1148. package/src/scripts/skill_trigger_eval.ts +1046 -0
  1149. package/src/scripts/skill_usage_collect.ts +465 -0
  1150. package/src/scripts/skill_usage_report.ts +364 -0
  1151. package/src/scripts/smoke/kernel.sh +4 -5
  1152. package/src/scripts/smoke/router.sh +76 -76
  1153. package/src/scripts/smoke/schema.sh +2 -2
  1154. package/src/scripts/smoke/skills.sh +73 -52
  1155. package/src/scripts/smoke_path_resolution.ts +194 -0
  1156. package/src/scripts/smoke_quickstart.ts +224 -0
  1157. package/src/scripts/snapshot_agent_outputs.ts +375 -0
  1158. package/src/scripts/spotcheck_thin_root.ts +247 -0
  1159. package/src/scripts/surface-tiers.yml +68 -0
  1160. package/src/scripts/sync_agent_settings.ts +763 -0
  1161. package/src/scripts/sync_github_metadata.ts +550 -0
  1162. package/src/scripts/sync_gitignore.ts +630 -0
  1163. package/src/scripts/sync_yaml_rt.ts +910 -0
  1164. package/src/scripts/telegraph_stats.ts +447 -0
  1165. package/src/scripts/tool_registry.ts +330 -0
  1166. package/src/scripts/tools/adapter_errors.ts +93 -0
  1167. package/src/scripts/tools/base_adapter.ts +147 -0
  1168. package/src/scripts/tools/github_adapter.ts +229 -0
  1169. package/src/scripts/tools/jira_adapter.ts +196 -0
  1170. package/src/scripts/trigger_coverage.ts +251 -0
  1171. package/src/scripts/update_counts.ts +284 -0
  1172. package/src/scripts/update_prices.ts +219 -0
  1173. package/src/scripts/validate_agent_settings.ts +265 -0
  1174. package/src/scripts/validate_decision_engine.ts +366 -0
  1175. package/src/scripts/validate_discovery_manifest.ts +160 -0
  1176. package/src/scripts/validate_frontmatter.ts +1030 -0
  1177. package/src/scripts/validate_pack_yaml.ts +0 -0
  1178. package/src/scripts/validate_safe_paths.ts +164 -0
  1179. package/src/scripts/validate_telegraph_carveouts.ts +485 -0
  1180. package/src/scripts/verify_before_complete_hook.ts +306 -0
  1181. package/src/scripts/verify_physical_move.ts +411 -0
  1182. package/src/scripts/wrapper_freshness_hook.ts +179 -0
  1183. package/dist/agent-src/commands/chat-history/learn.md +0 -184
  1184. package/dist/agent-src/commands/chat-history/show.md +0 -113
  1185. package/dist/agent-src/commands/fix/pr-bot-comments.md +0 -157
  1186. package/dist/agent-src/commands/fix/pr-developer-comments.md +0 -163
  1187. package/dist/agent-src/scripts/update_roadmap_progress.py +0 -537
  1188. package/dist/agent-src/skills/corpus-grounding/scripts/bm25_search.py +0 -212
  1189. package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.py +0 -438
  1190. package/dist/agent-src/skills/corpus-grounding/scripts/ground.py +0 -166
  1191. package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.py +0 -160
  1192. package/dist/agent-src/skills/design-tokens/scripts/tokens.py +0 -296
  1193. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.py +0 -299
  1194. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.py +0 -463
  1195. package/dist/agent-src/templates/agents/memory/architecture-decisions.example.yml +0 -95
  1196. package/dist/agent-src/templates/scripts/check_memory.py +0 -283
  1197. package/dist/agent-src/templates/scripts/check_memory_proposal.py +0 -180
  1198. package/dist/agent-src/templates/scripts/implement_ticket/__init__.py +0 -94
  1199. package/dist/agent-src/templates/scripts/implement_ticket/__main__.py +0 -15
  1200. package/dist/agent-src/templates/scripts/memory_hash.py +0 -75
  1201. package/dist/agent-src/templates/scripts/memory_lookup.py +0 -577
  1202. package/dist/agent-src/templates/scripts/memory_report.py +0 -184
  1203. package/dist/agent-src/templates/scripts/memory_signal.py +0 -167
  1204. package/dist/agent-src/templates/scripts/memory_status.py +0 -257
  1205. package/dist/agent-src/templates/scripts/pr_review_routing.py +0 -340
  1206. package/dist/agent-src/templates/scripts/pr_risk_review.py +0 -211
  1207. package/dist/agent-src/templates/scripts/telemetry/__init__.py +0 -42
  1208. package/dist/agent-src/templates/scripts/telemetry/aggregator.py +0 -169
  1209. package/dist/agent-src/templates/scripts/telemetry/boundary.py +0 -171
  1210. package/dist/agent-src/templates/scripts/telemetry/engagement.py +0 -297
  1211. package/dist/agent-src/templates/scripts/telemetry/report_renderer.py +0 -197
  1212. package/dist/agent-src/templates/scripts/telemetry/settings.py +0 -177
  1213. package/dist/agent-src/templates/scripts/telemetry_record.py +0 -179
  1214. package/dist/agent-src/templates/scripts/telemetry_report.py +0 -161
  1215. package/dist/agent-src/templates/scripts/telemetry_status.py +0 -142
  1216. package/dist/agent-src/templates/scripts/tier_usage_report.py +0 -183
  1217. package/dist/agent-src/templates/scripts/work_engine/__init__.py +0 -58
  1218. package/dist/agent-src/templates/scripts/work_engine/__main__.py +0 -9
  1219. package/dist/agent-src/templates/scripts/work_engine/_lib/__init__.py +0 -7
  1220. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.py +0 -840
  1221. package/dist/agent-src/templates/scripts/work_engine/_lib/user_global_paths.py +0 -249
  1222. package/dist/agent-src/templates/scripts/work_engine/cli.py +0 -195
  1223. package/dist/agent-src/templates/scripts/work_engine/cli_args.py +0 -116
  1224. package/dist/agent-src/templates/scripts/work_engine/delivery_state.py +0 -137
  1225. package/dist/agent-src/templates/scripts/work_engine/directives/__init__.py +0 -33
  1226. package/dist/agent-src/templates/scripts/work_engine/directives/backend/__init__.py +0 -98
  1227. package/dist/agent-src/templates/scripts/work_engine/directives/backend/analyze.py +0 -98
  1228. package/dist/agent-src/templates/scripts/work_engine/directives/backend/implement.py +0 -145
  1229. package/dist/agent-src/templates/scripts/work_engine/directives/backend/memory.py +0 -136
  1230. package/dist/agent-src/templates/scripts/work_engine/directives/backend/plan.py +0 -175
  1231. package/dist/agent-src/templates/scripts/work_engine/directives/backend/refine.py +0 -396
  1232. package/dist/agent-src/templates/scripts/work_engine/directives/backend/report.py +0 -227
  1233. package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.py +0 -180
  1234. package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.py +0 -170
  1235. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/__init__.py +0 -116
  1236. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/contract.py +0 -254
  1237. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/stitch.py +0 -229
  1238. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/ui.py +0 -231
  1239. package/dist/agent-src/templates/scripts/work_engine/directives/ui/__init__.py +0 -113
  1240. package/dist/agent-src/templates/scripts/work_engine/directives/ui/_passthrough.py +0 -44
  1241. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.py +0 -241
  1242. package/dist/agent-src/templates/scripts/work_engine/directives/ui/audit.py +0 -414
  1243. package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.py +0 -335
  1244. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.py +0 -513
  1245. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.py +0 -471
  1246. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/__init__.py +0 -119
  1247. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.py +0 -37
  1248. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.py +0 -165
  1249. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.py +0 -66
  1250. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/report.py +0 -62
  1251. package/dist/agent-src/templates/scripts/work_engine/directives/ui_trivial/test.py +0 -115
  1252. package/dist/agent-src/templates/scripts/work_engine/dispatcher.py +0 -331
  1253. package/dist/agent-src/templates/scripts/work_engine/emitters.py +0 -68
  1254. package/dist/agent-src/templates/scripts/work_engine/errors.py +0 -19
  1255. package/dist/agent-src/templates/scripts/work_engine/hook_bootstrap.py +0 -91
  1256. package/dist/agent-src/templates/scripts/work_engine/hooks/__init__.py +0 -54
  1257. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +0 -35
  1258. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +0 -59
  1259. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +0 -43
  1260. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +0 -41
  1261. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.py +0 -162
  1262. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +0 -163
  1263. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.py +0 -53
  1264. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.py +0 -50
  1265. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +0 -141
  1266. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.py +0 -52
  1267. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/trace.py +0 -84
  1268. package/dist/agent-src/templates/scripts/work_engine/hooks/context.py +0 -66
  1269. package/dist/agent-src/templates/scripts/work_engine/hooks/events.py +0 -44
  1270. package/dist/agent-src/templates/scripts/work_engine/hooks/exceptions.py +0 -79
  1271. package/dist/agent-src/templates/scripts/work_engine/hooks/registry.py +0 -60
  1272. package/dist/agent-src/templates/scripts/work_engine/hooks/runner.py +0 -73
  1273. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.py +0 -196
  1274. package/dist/agent-src/templates/scripts/work_engine/input_builders.py +0 -163
  1275. package/dist/agent-src/templates/scripts/work_engine/intent/__init__.py +0 -47
  1276. package/dist/agent-src/templates/scripts/work_engine/intent/classify.py +0 -280
  1277. package/dist/agent-src/templates/scripts/work_engine/migration/__init__.py +0 -8
  1278. package/dist/agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +0 -231
  1279. package/dist/agent-src/templates/scripts/work_engine/orchestration.py +0 -193
  1280. package/dist/agent-src/templates/scripts/work_engine/persona_policy.py +0 -85
  1281. package/dist/agent-src/templates/scripts/work_engine/resolvers/__init__.py +0 -22
  1282. package/dist/agent-src/templates/scripts/work_engine/resolvers/diff.py +0 -106
  1283. package/dist/agent-src/templates/scripts/work_engine/resolvers/file.py +0 -113
  1284. package/dist/agent-src/templates/scripts/work_engine/resolvers/prompt.py +0 -90
  1285. package/dist/agent-src/templates/scripts/work_engine/scoring/__init__.py +0 -14
  1286. package/dist/agent-src/templates/scripts/work_engine/scoring/confidence.py +0 -300
  1287. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.py +0 -351
  1288. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_trace.py +0 -141
  1289. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +0 -284
  1290. package/dist/agent-src/templates/scripts/work_engine/stack/__init__.py +0 -31
  1291. package/dist/agent-src/templates/scripts/work_engine/stack/detect.py +0 -187
  1292. package/dist/agent-src/templates/scripts/work_engine/stack/runner.py +0 -481
  1293. package/dist/agent-src/templates/scripts/work_engine/state.py +0 -694
  1294. package/dist/agent-src/templates/scripts/work_engine/state_io.py +0 -202
  1295. package/dist/cli/python/resolvePython.js +0 -38
  1296. package/dist/cli/python/resolvePython.js.map +0 -1
  1297. package/docs/case-studies/frontend-design-vs-ui-ux-pro-max.md +0 -86
  1298. package/docs/contracts/agent-memory-contract.md +0 -159
  1299. package/docs/parity/bench-ruflo.json +0 -58
  1300. package/docs/parity/ruflo.md +0 -46
  1301. package/src/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  1302. package/src/scripts/_archive/_backfill_skill_domains.py +0 -140
  1303. package/src/scripts/_archive/_bootstrap_tier_frontmatter.py +0 -151
  1304. package/src/scripts/_archive/_p43_bodies.py +0 -235
  1305. package/src/scripts/_archive/_p43_condense.py +0 -118
  1306. package/src/scripts/_archive/_p4_migrate.py +0 -199
  1307. package/src/scripts/_archive/_phase2_shim_helper.py +0 -109
  1308. package/src/scripts/_archive/_pilot_council_question.py +0 -57
  1309. package/src/scripts/_cli/__init__.py +0 -0
  1310. package/src/scripts/_cli/cmd_doctor.py +0 -1583
  1311. package/src/scripts/_cli/cmd_explain.py +0 -355
  1312. package/src/scripts/_cli/cmd_export.py +0 -157
  1313. package/src/scripts/_cli/cmd_migrate.py +0 -524
  1314. package/src/scripts/_cli/cmd_prune.py +0 -322
  1315. package/src/scripts/_cli/cmd_refresh.py +0 -179
  1316. package/src/scripts/_cli/cmd_settings_check.py +0 -171
  1317. package/src/scripts/_cli/cmd_settings_migrate.py +0 -147
  1318. package/src/scripts/_cli/cmd_sync.py +0 -166
  1319. package/src/scripts/_cli/cmd_uninstall.py +0 -476
  1320. package/src/scripts/_cli/cmd_update.py +0 -279
  1321. package/src/scripts/_cli/cmd_upgrade.py +0 -172
  1322. package/src/scripts/_cli/cmd_validate.py +0 -177
  1323. package/src/scripts/_cli/cmd_versions.py +0 -160
  1324. package/src/scripts/_cli/explain_last/__init__.py +0 -122
  1325. package/src/scripts/_cli/explain_last/assumptions.py +0 -59
  1326. package/src/scripts/_cli/explain_last/council.py +0 -105
  1327. package/src/scripts/_cli/explain_last/halt.py +0 -44
  1328. package/src/scripts/_cli/explain_last/inputs.py +0 -128
  1329. package/src/scripts/_cli/explain_last/memory.py +0 -94
  1330. package/src/scripts/_cli/explain_last/provider.py +0 -52
  1331. package/src/scripts/_cli/explain_last/render.py +0 -52
  1332. package/src/scripts/_cli/explain_last/route.py +0 -59
  1333. package/src/scripts/_cli/explain_last/scrubber.py +0 -105
  1334. package/src/scripts/_cli/explain_last/sections/__init__.py +0 -35
  1335. package/src/scripts/_cli/explain_last/sections/assumptions.py +0 -21
  1336. package/src/scripts/_cli/explain_last/sections/council.py +0 -27
  1337. package/src/scripts/_cli/explain_last/sections/halt.py +0 -31
  1338. package/src/scripts/_cli/explain_last/sections/header.py +0 -24
  1339. package/src/scripts/_cli/explain_last/sections/inputs.py +0 -27
  1340. package/src/scripts/_cli/explain_last/sections/memory.py +0 -21
  1341. package/src/scripts/_cli/explain_last/sections/pack.py +0 -16
  1342. package/src/scripts/_cli/explain_last/sections/provider.py +0 -26
  1343. package/src/scripts/_cli/explain_last/sections/route.py +0 -22
  1344. package/src/scripts/_cli/explain_last/state_loader.py +0 -76
  1345. package/src/scripts/_emit_domain_table.py +0 -35
  1346. package/src/scripts/_lib/__init__.py +0 -5
  1347. package/src/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  1348. package/src/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  1349. package/src/scripts/_lib/agent_settings.py +0 -840
  1350. package/src/scripts/_lib/agent_src.py +0 -491
  1351. package/src/scripts/_lib/agents_overlay.py +0 -120
  1352. package/src/scripts/_lib/bench_ab_cache.py +0 -162
  1353. package/src/scripts/_lib/bench_ab_scoring.py +0 -209
  1354. package/src/scripts/_lib/bench_cost.py +0 -138
  1355. package/src/scripts/_lib/bench_quality.py +0 -118
  1356. package/src/scripts/_lib/bench_report.py +0 -149
  1357. package/src/scripts/_lib/bench_telegraph.py +0 -273
  1358. package/src/scripts/_lib/bench_telegraph_report.py +0 -151
  1359. package/src/scripts/_lib/changelog_eras.py +0 -330
  1360. package/src/scripts/_lib/claude_desktop_bundler.py +0 -238
  1361. package/src/scripts/_lib/cli_wrapper.py +0 -64
  1362. package/src/scripts/_lib/fs_atomic.py +0 -116
  1363. package/src/scripts/_lib/global_deploy_inventory.py +0 -282
  1364. package/src/scripts/_lib/install_regenerator.py +0 -134
  1365. package/src/scripts/_lib/installed_lock.py +0 -256
  1366. package/src/scripts/_lib/installed_tools.py +0 -381
  1367. package/src/scripts/_lib/json_pointers.py +0 -260
  1368. package/src/scripts/_lib/linked_projects.py +0 -238
  1369. package/src/scripts/_lib/model_tier.py +0 -52
  1370. package/src/scripts/_lib/module_detection.py +0 -223
  1371. package/src/scripts/_lib/pin_resolver.py +0 -152
  1372. package/src/scripts/_lib/script_output.py +0 -144
  1373. package/src/scripts/_lib/token_count.py +0 -95
  1374. package/src/scripts/_lib/update_check.py +0 -207
  1375. package/src/scripts/_lib/user_global_paths.py +0 -249
  1376. package/src/scripts/_lib/value_ladder.py +0 -696
  1377. package/src/scripts/_lib/value_report.py +0 -455
  1378. package/src/scripts/_phase4_bucket.py +0 -210
  1379. package/src/scripts/_pilot_measure.py +0 -53
  1380. package/src/scripts/_tmp_scan_framework_leakage.py +0 -119
  1381. package/src/scripts/adoption_report.py +0 -195
  1382. package/src/scripts/adoption_snapshot.py +0 -219
  1383. package/src/scripts/adoption_status.py +0 -166
  1384. package/src/scripts/adr/regenerate_index.py +0 -79
  1385. package/src/scripts/ai-video/lib/adapter-common.sh +0 -231
  1386. package/src/scripts/ai-video/lib/adapter-contract.md +0 -329
  1387. package/src/scripts/ai-video/lib/fixtures/comfyui/result.json +0 -1
  1388. package/src/scripts/ai-video/lib/fixtures/fal/result.json +0 -1
  1389. package/src/scripts/ai-video/lib/fixtures/gemini-veo/result.json +0 -1
  1390. package/src/scripts/ai-video/lib/fixtures/higgsfield/result.json +0 -1
  1391. package/src/scripts/ai-video/lib/fixtures/kling/result.json +0 -1
  1392. package/src/scripts/ai-video/lib/fixtures/musetalk/result.json +0 -1
  1393. package/src/scripts/ai-video/lib/fixtures/openai-images/result.json +0 -1
  1394. package/src/scripts/ai-video/lib/fixtures/replicate/result.json +0 -1
  1395. package/src/scripts/ai-video/lib/fixtures/sora/result.json +0 -1
  1396. package/src/scripts/ai-video/lib/fixtures/syncso/result.json +0 -1
  1397. package/src/scripts/ai-video/lib/load-config.sh +0 -180
  1398. package/src/scripts/ai-video/lib/redact.sh +0 -85
  1399. package/src/scripts/ai_council/__init__.py +0 -40
  1400. package/src/scripts/ai_council/_default_prices.py +0 -50
  1401. package/src/scripts/ai_council/advisors.py +0 -148
  1402. package/src/scripts/ai_council/airgap.py +0 -165
  1403. package/src/scripts/ai_council/budget_guard.py +0 -202
  1404. package/src/scripts/ai_council/bundler.py +0 -263
  1405. package/src/scripts/ai_council/cli_hints.py +0 -123
  1406. package/src/scripts/ai_council/clients.py +0 -1385
  1407. package/src/scripts/ai_council/compile_corpus.py +0 -179
  1408. package/src/scripts/ai_council/confidence_gate.py +0 -156
  1409. package/src/scripts/ai_council/config.py +0 -1364
  1410. package/src/scripts/ai_council/consensus.py +0 -329
  1411. package/src/scripts/ai_council/events_log.py +0 -141
  1412. package/src/scripts/ai_council/learn_low_impact_preview.py +0 -252
  1413. package/src/scripts/ai_council/low_impact.py +0 -714
  1414. package/src/scripts/ai_council/low_impact_corpus.py +0 -466
  1415. package/src/scripts/ai_council/low_impact_intake.py +0 -163
  1416. package/src/scripts/ai_council/modes.py +0 -131
  1417. package/src/scripts/ai_council/necessity.py +0 -782
  1418. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_2a4_acceptance.py +0 -208
  1419. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_add_quiet.py +0 -149
  1420. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +0 -206
  1421. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_estimate.py +0 -67
  1422. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +0 -292
  1423. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_followups_review.py +0 -259
  1424. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +0 -33
  1425. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +0 -36
  1426. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +0 -26
  1427. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +0 -209
  1428. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +0 -41
  1429. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase4_dispatch_latency.py +0 -108
  1430. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +0 -92
  1431. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +0 -257
  1432. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_post_revert.py +0 -197
  1433. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +0 -149
  1434. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_roundtrip.py +0 -111
  1435. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_rule_hardening_v1.py +0 -251
  1436. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py +0 -98
  1437. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_open_questions.py +0 -232
  1438. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +0 -144
  1439. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_gaps.py +0 -252
  1440. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_v3_review.py +0 -240
  1441. package/src/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +0 -180
  1442. package/src/scripts/ai_council/orchestrator.py +0 -1206
  1443. package/src/scripts/ai_council/pricing.py +0 -215
  1444. package/src/scripts/ai_council/probation_gate.py +0 -152
  1445. package/src/scripts/ai_council/project_context.py +0 -159
  1446. package/src/scripts/ai_council/prompts.py +0 -567
  1447. package/src/scripts/ai_council/redact_low_impact_entry.py +0 -155
  1448. package/src/scripts/ai_council/replay.py +0 -155
  1449. package/src/scripts/ai_council/session.py +0 -366
  1450. package/src/scripts/ai_council/shadow_dispatch.py +0 -235
  1451. package/src/scripts/ai_council/solo_dispatch.py +0 -226
  1452. package/src/scripts/annotate_discovery.py +0 -149
  1453. package/src/scripts/apply_modules_config.py +0 -290
  1454. package/src/scripts/audit_adr_coverage.py +0 -175
  1455. package/src/scripts/audit_auto_rules.py +0 -175
  1456. package/src/scripts/audit_cloud_compatibility.py +0 -362
  1457. package/src/scripts/audit_command_surface.py +0 -669
  1458. package/src/scripts/audit_initial_context.py +0 -237
  1459. package/src/scripts/audit_likelihood.py +0 -148
  1460. package/src/scripts/audit_mcp_tools.py +0 -146
  1461. package/src/scripts/audit_overlap.py +0 -145
  1462. package/src/scripts/audit_skill_descriptions.py +0 -180
  1463. package/src/scripts/audit_skill_overlap.py +0 -207
  1464. package/src/scripts/audit_user_type_axis.py +0 -140
  1465. package/src/scripts/backfill_model_tier.py +0 -184
  1466. package/src/scripts/bench_ab_cache_dispatch.py +0 -68
  1467. package/src/scripts/bench_ab_clone.py +0 -170
  1468. package/src/scripts/bench_ab_diff.py +0 -220
  1469. package/src/scripts/bench_ab_integrity.py +0 -143
  1470. package/src/scripts/bench_ab_run.py +0 -235
  1471. package/src/scripts/bench_ab_task_runner.py +0 -369
  1472. package/src/scripts/bench_ab_tracka_run.py +0 -202
  1473. package/src/scripts/bench_baseline_ready.py +0 -108
  1474. package/src/scripts/bench_condense_memory.py +0 -168
  1475. package/src/scripts/bench_drift_check.py +0 -151
  1476. package/src/scripts/bench_per_tool.py +0 -216
  1477. package/src/scripts/bench_rtk_savings.py +0 -320
  1478. package/src/scripts/bench_run.py +0 -272
  1479. package/src/scripts/bench_runner.py +0 -158
  1480. package/src/scripts/build_cloud_bundle.py +0 -458
  1481. package/src/scripts/build_discovery_manifest.py +0 -747
  1482. package/src/scripts/build_linear_digest.py +0 -260
  1483. package/src/scripts/build_mcp_registry_manifest.py +0 -181
  1484. package/src/scripts/build_rule_trigger_matrix.py +0 -350
  1485. package/src/scripts/capture_showcase_session.py +0 -361
  1486. package/src/scripts/chat_history.py +0 -1799
  1487. package/src/scripts/check_always_budget.py +0 -532
  1488. package/src/scripts/check_artefact_checksums.py +0 -111
  1489. package/src/scripts/check_augment_description_cap.py +0 -79
  1490. package/src/scripts/check_augmentignore.py +0 -72
  1491. package/src/scripts/check_beta_review_markers.py +0 -127
  1492. package/src/scripts/check_bite_sized_granularity.py +0 -99
  1493. package/src/scripts/check_cluster_patterns.py +0 -206
  1494. package/src/scripts/check_command_count_messaging.py +0 -152
  1495. package/src/scripts/check_condensation.py +0 -375
  1496. package/src/scripts/check_condensed_paths.py +0 -231
  1497. package/src/scripts/check_context_paths.py +0 -202
  1498. package/src/scripts/check_council_layout.py +0 -125
  1499. package/src/scripts/check_council_references.py +0 -228
  1500. package/src/scripts/check_discovery_determinism.py +0 -70
  1501. package/src/scripts/check_gate_paths.py +0 -128
  1502. package/src/scripts/check_iron_law_prominence.py +0 -145
  1503. package/src/scripts/check_kernel_rule_bundle.py +0 -151
  1504. package/src/scripts/check_md_language.py +0 -161
  1505. package/src/scripts/check_memory.py +0 -443
  1506. package/src/scripts/check_memory_proposal.py +0 -182
  1507. package/src/scripts/check_module_management_neutral.py +0 -147
  1508. package/src/scripts/check_no_local_settings_committed.py +0 -51
  1509. package/src/scripts/check_no_new_legacy_path.py +0 -100
  1510. package/src/scripts/check_no_roadmap_refs.py +0 -155
  1511. package/src/scripts/check_one_off_location.py +0 -81
  1512. package/src/scripts/check_overlay_cascade_subdirs.py +0 -129
  1513. package/src/scripts/check_portability.py +0 -574
  1514. package/src/scripts/check_proposal.py +0 -269
  1515. package/src/scripts/check_public_catalog_links.py +0 -125
  1516. package/src/scripts/check_public_links.py +0 -185
  1517. package/src/scripts/check_references.py +0 -557
  1518. package/src/scripts/check_release_includes_discovery.py +0 -61
  1519. package/src/scripts/check_release_pr_shape.py +0 -123
  1520. package/src/scripts/check_release_published.py +0 -145
  1521. package/src/scripts/check_release_trunk_sync.py +0 -152
  1522. package/src/scripts/check_reply_consistency.py +0 -169
  1523. package/src/scripts/check_roadmap_trackable.py +0 -114
  1524. package/src/scripts/check_role_doc_links.py +0 -110
  1525. package/src/scripts/check_safety_floor_untouched.py +0 -125
  1526. package/src/scripts/check_skill_requires.py +0 -147
  1527. package/src/scripts/check_template_pin_drift.py +0 -129
  1528. package/src/scripts/check_test_coverage_diff.py +0 -180
  1529. package/src/scripts/check_token_optimizer_freshness.py +0 -146
  1530. package/src/scripts/check_update_banner.py +0 -86
  1531. package/src/scripts/ci_status.py +0 -301
  1532. package/src/scripts/ci_summary.py +0 -131
  1533. package/src/scripts/ci_time_ratio.py +0 -168
  1534. package/src/scripts/command_suggester/__init__.py +0 -51
  1535. package/src/scripts/command_suggester/cooldown.py +0 -132
  1536. package/src/scripts/command_suggester/loader.py +0 -73
  1537. package/src/scripts/command_suggester/match.py +0 -180
  1538. package/src/scripts/command_suggester/rank.py +0 -120
  1539. package/src/scripts/command_suggester/render.py +0 -86
  1540. package/src/scripts/command_suggester/sanitize.py +0 -113
  1541. package/src/scripts/command_suggester/settings.py +0 -127
  1542. package/src/scripts/command_suggester/types.py +0 -78
  1543. package/src/scripts/compile_router.py +0 -232
  1544. package/src/scripts/condense.py +0 -1919
  1545. package/src/scripts/condense_memory.py +0 -178
  1546. package/src/scripts/config/__init__.py +0 -9
  1547. package/src/scripts/config/packs.py +0 -157
  1548. package/src/scripts/config/presets.py +0 -224
  1549. package/src/scripts/config/profile_explain.py +0 -89
  1550. package/src/scripts/config/profiles.py +0 -191
  1551. package/src/scripts/config/session_profiles.py +0 -542
  1552. package/src/scripts/context_hygiene_hook.py +0 -181
  1553. package/src/scripts/cost_by_conversation.py +0 -78
  1554. package/src/scripts/cost_summary.py +0 -97
  1555. package/src/scripts/council_cli.py +0 -2557
  1556. package/src/scripts/council_prune.py +0 -81
  1557. package/src/scripts/cross_repo_retrieve.py +0 -172
  1558. package/src/scripts/discovery_stats.py +0 -70
  1559. package/src/scripts/extract_audit_patterns.py +0 -202
  1560. package/src/scripts/first_run_gate_hook.py +0 -179
  1561. package/src/scripts/gen_discovery_baseline.py +0 -127
  1562. package/src/scripts/generate_catalog.py +0 -116
  1563. package/src/scripts/generate_command_flows.py +0 -191
  1564. package/src/scripts/generate_index.py +0 -303
  1565. package/src/scripts/generate_ownership_matrix.py +0 -378
  1566. package/src/scripts/generate_pack_manifests.py +0 -340
  1567. package/src/scripts/hooks/__init__.py +0 -1
  1568. package/src/scripts/hooks/dispatch_hook.py +0 -461
  1569. package/src/scripts/hooks/dispatch_issues.py +0 -136
  1570. package/src/scripts/hooks/envelope.py +0 -98
  1571. package/src/scripts/hooks/replay_hook.py +0 -144
  1572. package/src/scripts/hooks/state_io.py +0 -145
  1573. package/src/scripts/hooks_doctor.py +0 -223
  1574. package/src/scripts/hooks_status.py +0 -157
  1575. package/src/scripts/install.py +0 -5183
  1576. package/src/scripts/inventory_abstraction_budget.py +0 -622
  1577. package/src/scripts/inventory_frontmatter.py +0 -164
  1578. package/src/scripts/inventory_meta_layers.py +0 -288
  1579. package/src/scripts/iron_law_sha.py +0 -107
  1580. package/src/scripts/linked_projects_list.py +0 -91
  1581. package/src/scripts/lint_agent_skill_names.py +0 -150
  1582. package/src/scripts/lint_agents_layout.py +0 -197
  1583. package/src/scripts/lint_agents_md.py +0 -210
  1584. package/src/scripts/lint_archived_skills.py +0 -159
  1585. package/src/scripts/lint_artefact_frontmatter.py +0 -188
  1586. package/src/scripts/lint_bench_ab.py +0 -172
  1587. package/src/scripts/lint_bench_corpus.py +0 -255
  1588. package/src/scripts/lint_command_flow_coverage.py +0 -132
  1589. package/src/scripts/lint_command_routing.py +0 -160
  1590. package/src/scripts/lint_command_tiers.py +0 -175
  1591. package/src/scripts/lint_command_verbs.py +0 -206
  1592. package/src/scripts/lint_commit_subjects.py +0 -139
  1593. package/src/scripts/lint_context_spine_usage.py +0 -137
  1594. package/src/scripts/lint_discovery_manifest.py +0 -176
  1595. package/src/scripts/lint_discovery_vocabulary.py +0 -220
  1596. package/src/scripts/lint_examples.py +0 -102
  1597. package/src/scripts/lint_explain_trace.py +0 -80
  1598. package/src/scripts/lint_featured_skills.py +0 -144
  1599. package/src/scripts/lint_flows.py +0 -215
  1600. package/src/scripts/lint_framework_leakage.py +0 -375
  1601. package/src/scripts/lint_frontmatter_boilerplate.py +0 -77
  1602. package/src/scripts/lint_ghostwriter_source.py +0 -242
  1603. package/src/scripts/lint_global_paths.py +0 -148
  1604. package/src/scripts/lint_handoffs.py +0 -217
  1605. package/src/scripts/lint_hook_concern_budget.py +0 -207
  1606. package/src/scripts/lint_hook_manifest.py +0 -217
  1607. package/src/scripts/lint_load_context.py +0 -196
  1608. package/src/scripts/lint_marketplace.py +0 -180
  1609. package/src/scripts/lint_marketplace_install_completeness.py +0 -198
  1610. package/src/scripts/lint_mcp_registry_manifest.py +0 -69
  1611. package/src/scripts/lint_media_policy_linkage.py +0 -140
  1612. package/src/scripts/lint_model_tier_coverage.py +0 -73
  1613. package/src/scripts/lint_namespace.py +0 -135
  1614. package/src/scripts/lint_namespace_collisions.py +0 -103
  1615. package/src/scripts/lint_new_skill_gate.py +0 -144
  1616. package/src/scripts/lint_no_new_atomic_commands.py +0 -180
  1617. package/src/scripts/lint_one_off_age.py +0 -184
  1618. package/src/scripts/lint_orchestration_dsl.py +0 -217
  1619. package/src/scripts/lint_orchestrator_auto_detect.py +0 -111
  1620. package/src/scripts/lint_pack_boundaries.py +0 -147
  1621. package/src/scripts/lint_pack_dependencies.py +0 -137
  1622. package/src/scripts/lint_pack_first_win.py +0 -121
  1623. package/src/scripts/lint_persona_governance.py +0 -164
  1624. package/src/scripts/lint_positioning.py +0 -143
  1625. package/src/scripts/lint_profile_overlay_set_only.py +0 -179
  1626. package/src/scripts/lint_readme_jargon.py +0 -131
  1627. package/src/scripts/lint_readme_size.py +0 -33
  1628. package/src/scripts/lint_regression.py +0 -251
  1629. package/src/scripts/lint_roadmap_ci_steps.py +0 -186
  1630. package/src/scripts/lint_roadmap_complexity.py +0 -220
  1631. package/src/scripts/lint_role_experiences.py +0 -255
  1632. package/src/scripts/lint_rule_interactions.py +0 -170
  1633. package/src/scripts/lint_rule_tiers.py +0 -90
  1634. package/src/scripts/lint_showcase_sessions.py +0 -148
  1635. package/src/scripts/lint_skill_tools.py +0 -168
  1636. package/src/scripts/lint_topics_yaml.py +0 -89
  1637. package/src/scripts/lint_trust_coherence.py +0 -212
  1638. package/src/scripts/lint_value_dashboard.py +0 -218
  1639. package/src/scripts/mcp_parity_smoke.py +0 -316
  1640. package/src/scripts/mcp_render.py +0 -173
  1641. package/src/scripts/mcp_server/__init__.py +0 -19
  1642. package/src/scripts/mcp_server/__main__.py +0 -12
  1643. package/src/scripts/mcp_server/catalog.py +0 -125
  1644. package/src/scripts/mcp_server/metadata.py +0 -75
  1645. package/src/scripts/mcp_server/prompts.py +0 -442
  1646. package/src/scripts/mcp_server/requirements.txt +0 -4
  1647. package/src/scripts/mcp_server/resources.py +0 -201
  1648. package/src/scripts/mcp_server/server.py +0 -270
  1649. package/src/scripts/mcp_server/telemetry.py +0 -128
  1650. package/src/scripts/mcp_server/tools.py +0 -950
  1651. package/src/scripts/mcp_telemetry_health.py +0 -214
  1652. package/src/scripts/mcp_telemetry_query.py +0 -203
  1653. package/src/scripts/mcp_telemetry_store.py +0 -211
  1654. package/src/scripts/measure_augment_budget.py +0 -214
  1655. package/src/scripts/measure_density.py +0 -232
  1656. package/src/scripts/measure_frugality_savings.py +0 -164
  1657. package/src/scripts/measure_markitdown_lift.py +0 -127
  1658. package/src/scripts/measure_patterns.py +0 -376
  1659. package/src/scripts/measure_projection_bytes.py +0 -159
  1660. package/src/scripts/measure_rule_budget.py +0 -347
  1661. package/src/scripts/measure_skill_reduction.py +0 -102
  1662. package/src/scripts/memory_hash.py +0 -75
  1663. package/src/scripts/memory_lookup.py +0 -705
  1664. package/src/scripts/memory_report.py +0 -336
  1665. package/src/scripts/memory_signal.py +0 -212
  1666. package/src/scripts/memory_status.py +0 -257
  1667. package/src/scripts/migrate_command_suggestions.py +0 -151
  1668. package/src/scripts/migrate_frontmatter_defaults.py +0 -245
  1669. package/src/scripts/mine_session.py +0 -279
  1670. package/src/scripts/minimal_safe_diff_hook.py +0 -245
  1671. package/src/scripts/move_artefact.py +0 -143
  1672. package/src/scripts/new_skill.py +0 -148
  1673. package/src/scripts/onboarding_gate_hook.py +0 -142
  1674. package/src/scripts/pack_mcp_content.py +0 -293
  1675. package/src/scripts/plan_physical_move.py +0 -353
  1676. package/src/scripts/prediction-pool/poisson_sim.py +0 -167
  1677. package/src/scripts/prediction-pool/pool_winsim.py +0 -236
  1678. package/src/scripts/prediction-pool/score_ev.py +0 -188
  1679. package/src/scripts/print_required_checks.py +0 -196
  1680. package/src/scripts/probe_projection_fidelity.py +0 -202
  1681. package/src/scripts/probe_skill_registration.py +0 -413
  1682. package/src/scripts/profile_staleness_hook.py +0 -69
  1683. package/src/scripts/profile_use.py +0 -164
  1684. package/src/scripts/project_thin_rules.py +0 -168
  1685. package/src/scripts/propose_modules_config.py +0 -145
  1686. package/src/scripts/prototype_lint_contradictions.py +0 -150
  1687. package/src/scripts/prove_pack_extractable.py +0 -187
  1688. package/src/scripts/readme_linter.py +0 -589
  1689. package/src/scripts/redact_hook_capture.py +0 -148
  1690. package/src/scripts/refine_ticket_detect.py +0 -646
  1691. package/src/scripts/release.py +0 -1091
  1692. package/src/scripts/render_benchmark_md.py +0 -312
  1693. package/src/scripts/render_value_md.py +0 -347
  1694. package/src/scripts/requirements-evals.txt +0 -8
  1695. package/src/scripts/roadmap_progress_hook.py +0 -274
  1696. package/src/scripts/router_telemetry.py +0 -470
  1697. package/src/scripts/run_skill_evals.py +0 -185
  1698. package/src/scripts/runtime_dispatcher.py +0 -276
  1699. package/src/scripts/runtime_handler.py +0 -148
  1700. package/src/scripts/runtime_registry.py +0 -166
  1701. package/src/scripts/score_skill_selection.py +0 -198
  1702. package/src/scripts/setup_eval_venv.sh +0 -58
  1703. package/src/scripts/skill_collision_clusters.py +0 -162
  1704. package/src/scripts/skill_discovery.py +0 -254
  1705. package/src/scripts/skill_linter.py +0 -3694
  1706. package/src/scripts/skill_overlap.py +0 -204
  1707. package/src/scripts/skill_preview.py +0 -179
  1708. package/src/scripts/skill_tools/__init__.py +0 -22
  1709. package/src/scripts/skill_tools/audit_persona_coverage.py +0 -147
  1710. package/src/scripts/skill_tools/audit_user_type_coverage.py +0 -148
  1711. package/src/scripts/skill_tools/run_block_d_eval.py +0 -129
  1712. package/src/scripts/skill_tools/score_skill_relevance.py +0 -169
  1713. package/src/scripts/skill_tools/suggest_skill_for_task.py +0 -113
  1714. package/src/scripts/skill_trigger_eval.py +0 -682
  1715. package/src/scripts/skill_usage_collect.py +0 -191
  1716. package/src/scripts/skill_usage_report.py +0 -162
  1717. package/src/scripts/smoke_path_resolution.py +0 -93
  1718. package/src/scripts/smoke_quickstart.py +0 -144
  1719. package/src/scripts/snapshot_agent_outputs.py +0 -144
  1720. package/src/scripts/spotcheck_thin_root.py +0 -134
  1721. package/src/scripts/sync_agent_settings.py +0 -180
  1722. package/src/scripts/sync_github_metadata.py +0 -147
  1723. package/src/scripts/sync_gitignore.py +0 -291
  1724. package/src/scripts/sync_yaml_rt.py +0 -734
  1725. package/src/scripts/telegraph_stats.py +0 -119
  1726. package/src/scripts/tool_registry.py +0 -146
  1727. package/src/scripts/tools/__init__.py +0 -1
  1728. package/src/scripts/tools/adapter_errors.py +0 -63
  1729. package/src/scripts/tools/base_adapter.py +0 -91
  1730. package/src/scripts/tools/github_adapter.py +0 -128
  1731. package/src/scripts/tools/jira_adapter.py +0 -115
  1732. package/src/scripts/trigger_coverage.py +0 -129
  1733. package/src/scripts/update_counts.py +0 -199
  1734. package/src/scripts/update_prices.py +0 -125
  1735. package/src/scripts/validate_agent_settings.py +0 -124
  1736. package/src/scripts/validate_decision_engine.py +0 -136
  1737. package/src/scripts/validate_discovery_manifest.py +0 -94
  1738. package/src/scripts/validate_frontmatter.py +0 -647
  1739. package/src/scripts/validate_pack_yaml.py +0 -179
  1740. package/src/scripts/validate_safe_paths.py +0 -118
  1741. package/src/scripts/validate_telegraph_carveouts.py +0 -129
  1742. package/src/scripts/verify_before_complete_hook.py +0 -216
  1743. package/src/scripts/verify_physical_move.py +0 -185
  1744. package/src/scripts/wrapper_freshness_hook.py +0 -86
  1745. /package/dist/agent-src/skills/design-intelligence/data/{typography.csv → font-pairings-reference.csv} +0 -0
  1746. /package/src/scripts/{ai-video → media}/lib/fixtures/allin1/analysis.json +0 -0
  1747. /package/src/scripts/{ai-video → media}/lib/fixtures/comfyui/scene-0001.mp4 +0 -0
  1748. /package/src/scripts/{ai-video → media}/lib/fixtures/fal/scene-0001.mp4 +0 -0
  1749. /package/src/scripts/{ai-video → media}/lib/fixtures/gemini-veo/scene-0001.mp4 +0 -0
  1750. /package/src/scripts/{ai-video → media}/lib/fixtures/higgsfield/scene-0001.mp4 +0 -0
  1751. /package/src/scripts/{ai-video → media}/lib/fixtures/kling/scene-0001.mp4 +0 -0
  1752. /package/src/scripts/{ai-video → media}/lib/fixtures/musetalk/lipsync-0001.mp4 +0 -0
  1753. /package/src/scripts/{ai-video → media}/lib/fixtures/openai-images/scene-0001.png +0 -0
  1754. /package/src/scripts/{ai-video → media}/lib/fixtures/replicate/scene-0001.mp4 +0 -0
  1755. /package/src/scripts/{ai-video → media}/lib/fixtures/sora/scene-0001.mp4 +0 -0
  1756. /package/src/scripts/{ai-video → media}/lib/fixtures/syncso/lipsync-0001.mp4 +0 -0
  1757. /package/src/scripts/{ai-video → media}/lib/fixtures/whisperx/transcript.json +0 -0
  1758. /package/src/scripts/{ai-video → media}/lib/telemetry.sh +0 -0
@@ -0,0 +1,1151 @@
1
+ /**
2
+ * Schema v1 of the universal-engine work state.
3
+ *
4
+ * TypeScript twin of `work_engine/state.py` (ADR-200 py2ts). Byte-for-byte
5
+ * serialization parity with the Python original is the contract: field order,
6
+ * defaults, validation order, and error text are all part of the wire format
7
+ * the dispatcher and the freeze-guard replay depend on.
8
+ *
9
+ * The wire format adds five envelope fields on top of the legacy
10
+ * `DeliveryState` shape from `implement_ticket.delivery_state`:
11
+ *
12
+ * - `version` — integer schema version, currently `1`.
13
+ * - `input.kind` — typed input variant (only `"ticket"` for R1).
14
+ * - `input.data` — the original payload (was `state.ticket` in v0).
15
+ * - `intent` — coarse intent label (`"backend-coding"` for R1).
16
+ * - `directive_set` — name of the directive bundle the dispatcher
17
+ * loads. The enum is forward-compatible: `ui`, `ui-trivial`, and
18
+ * `mixed` are accepted by the schema even though only `backend`
19
+ * has working directives in R1 (Phase 4 Step 4 — pre-listed to avoid
20
+ * a schema bump when R3 V2 lands).
21
+ * - `stack` — optional `{frontend, mtime}` cache populated by
22
+ * `work_engine.stack.detect` (R3 Phase 1). `null` while the
23
+ * detector has not yet run; the dispatcher fills it on the first UI
24
+ * dispatch and re-runs detection when `mtime` no longer matches the
25
+ * filesystem (manifest edited).
26
+ * - `ui_audit` — optional inventory written by the
27
+ * `existing-ui-audit` skill (R3 Phase 2). `null` while the audit
28
+ * has not run; populated dict once the skill returns. `greenfield`
29
+ * flag plus `greenfield_decision` carry the user's scaffolding
30
+ * pick. The audit gate (`work_engine.directives.ui.audit`)
31
+ * refuses to advance to design/apply while the slot is empty or
32
+ * while `greenfield` is set without a recorded decision.
33
+ * - `app_spec` — optional greenfield grounding artifact written by
34
+ * `work_engine.directives.ui.app_spec` (greenfield-scaffold
35
+ * Phase 2). Derives a `pages` set, `entity_model`, and `flow_map`
36
+ * from the prompt and carries a `confirmed` flag (the lightweight
37
+ * confirm halt) plus a `bypassed` flag (the "just scaffold" escape).
38
+ * `null` for every non-greenfield-scaffold flow — the app-spec gate
39
+ * is a no-op outside `greenfield_decision == "scaffold"`.
40
+ * - `ui_design` — optional design brief produced by
41
+ * `work_engine.directives.ui.design` (R3 Phase 3 Step 1). Locks
42
+ * layout / components / states / microcopy / a11y; `design_confirmed`
43
+ * carries the user's sign-off.
44
+ * - `ui_scaffold` — optional greenfield scaffold plan written by
45
+ * `work_engine.directives.ui.scaffold` (greenfield-scaffold
46
+ * Phase 3). Plan-only and stack-agnostic
47
+ * (`{pages, routes, layout_strategy, component_manifest, token_seed}`);
48
+ * the engine writes no files — a stack scaffold skill consumes the plan,
49
+ * creates the skeleton, and sets `scaffolded = true` + `artifacts`.
50
+ * `null` for every non-greenfield-scaffold flow. The scaffold gate
51
+ * sits in the `plan` slot (after design): design fixes the abstract
52
+ * visual language, scaffold maps it onto concrete structure.
53
+ * - `ui_review` — optional review-pass output written by
54
+ * `work_engine.directives.ui.review` (R3 Phase 3 Step 4). Carries
55
+ * the design-review findings list and a `review_clean` flag set when
56
+ * no findings remain.
57
+ * - `ui_polish` — optional polish-pass log written by
58
+ * `work_engine.directives.ui.polish` (R3 Phase 3 Step 5). Tracks
59
+ * the round counter (`rounds` <= 2 ceiling) and the per-round
60
+ * applied-fix list so a re-entry knows whether the loop has been
61
+ * exhausted.
62
+ * - `contract` — optional backend-contract envelope written by
63
+ * `work_engine.directives.mixed.contract` (R3 Phase 4 Step 1).
64
+ * Locks `data_model` and `api_surface` before any UI work starts;
65
+ * `contract_confirmed` carries the user's sign-off. The mixed UI
66
+ * step refuses to advance without a confirmed contract — this is the
67
+ * sentinel that prevents UI work from racing ahead of the backend.
68
+ * - `stitch` — optional integration-verification envelope written by
69
+ * `work_engine.directives.mixed.stitch` (R3 Phase 4 Step 3).
70
+ * Carries the end-to-end smoke `scenarios` list, an aggregate
71
+ * `verdict` (success / blocked / partial), and the
72
+ * `integration_confirmed` flag the user sets after reviewing the
73
+ * integration evidence.
74
+ * - `halts` — append-only log of `HookHalt` events the engine
75
+ * persisted into state. Populated by `emitters._emit_halt` when
76
+ * it runs against an already-persisted state file (the P3 branch table
77
+ * is preserved: fresh-run halts before the first `_save` still leave
78
+ * no state on disk). The `explain_last` trace builder reads the
79
+ * tail entry to fill the `trace.halt` slot. Each entry is
80
+ * `{reason, step, surface, timestamp}`. The list defaults to empty
81
+ * and is omitted from older state files via `from_dict`'s tolerant
82
+ * reader — no schema-version bump.
83
+ *
84
+ * All other fields keep their v0 names so the dispatcher can read the
85
+ * legacy slice unchanged once Phase 3 wires the steps over.
86
+ *
87
+ * The module exposes:
88
+ *
89
+ * - `SCHEMA_VERSION` — the integer carried in `version`.
90
+ * - `KNOWN_INPUT_KINDS` / `KNOWN_DIRECTIVE_SETS` — the
91
+ * whitelists used by validation.
92
+ * - `Input`, `WorkState` — typed classes.
93
+ * - `from_dict` / `to_dict` — JSON round-trip helpers.
94
+ * - `SchemaError` — raised on every validation failure.
95
+ */
96
+ import * as fs from 'node:fs';
97
+ import * as path from 'node:path';
98
+
99
+ // ── JSON value model ────────────────────────────────────────────────────
100
+ //
101
+ // The persisted state carries arbitrary user JSON (the input payload, the
102
+ // plan / changes / tests / verify slots). Model it as the standard JSON
103
+ // union so the heterogeneous dict shape and any-missing-key access survive
104
+ // without `any`.
105
+
106
+ export type JsonValue =
107
+ | string
108
+ | number
109
+ | boolean
110
+ | null
111
+ | JsonValue[]
112
+ | { [key: string]: JsonValue };
113
+
114
+ /** A heterogeneous JSON object, mirroring a Python `dict[str, Any]`. */
115
+ export type Dict = { [key: string]: JsonValue };
116
+
117
+ export const SCHEMA_VERSION = 1;
118
+ /** Integer version stored under the `version` key on disk. */
119
+
120
+ export const DEFAULT_INTENT = 'backend-coding';
121
+ /** Intent applied when migrating a v0 file or building a fresh state. */
122
+
123
+ export const DEFAULT_DIRECTIVE_SET = 'backend';
124
+ /** Directive set applied when migrating a v0 file or building a fresh state. */
125
+
126
+ /**
127
+ * Input kinds accepted by the schema.
128
+ *
129
+ * `ticket` is the R1 kind: pre-structured `{id, title, acceptance_criteria, ...}`
130
+ * fed by the `/implement-ticket` flow. `prompt` is the R2 kind: a free-form
131
+ * user prompt wrapped via `work_engine.resolvers.prompt` into
132
+ * `{raw, reconstructed_ac, assumptions}`; the engine refines the raw text
133
+ * into actionable AC + a confidence band before plan/apply/test/review run.
134
+ *
135
+ * `diff` and `file` are the R3 Phase 1 UI-improve kinds. `diff` carries a
136
+ * unified-diff / patch payload (`{raw, reconstructed_ac, assumptions}`) so the
137
+ * `directives/ui` set can take an "improve this screen" PR-style input; `file`
138
+ * carries a path reference to an existing component/page (`{path,
139
+ * reconstructed_ac, assumptions}`) for the same surface. Both default-route to
140
+ * `ui-improve` via `work_engine.intent.populate_routing`.
141
+ *
142
+ * Per the schema/capability split documented on
143
+ * `work_engine.directives.backend.SUPPORTED_KINDS`, presence here only
144
+ * means the *envelope* is accepted on disk — a directive set still has to
145
+ * list the kind in its `SUPPORTED_KINDS` tuple before the dispatcher will
146
+ * route it. R2 widens the envelope; R2 Phase 3 widens backend's capability
147
+ * tuple in lockstep with the `refine-prompt` skill landing. R3 Phase 1 widens
148
+ * the envelope further; `ui` capability is wired in Phase 3 of the UI track.
149
+ *
150
+ * Other kinds are rejected so unknown values surface as errors instead of
151
+ * silently falling through to a default branch.
152
+ */
153
+ export const KNOWN_INPUT_KINDS: ReadonlySet<string> = new Set([
154
+ 'ticket',
155
+ 'prompt',
156
+ 'diff',
157
+ 'file',
158
+ ]);
159
+
160
+ /**
161
+ * Directive sets recognised by the schema.
162
+ *
163
+ * Per the roadmap (Phase 4 Step 4), `ui`, `ui-trivial`, and `mixed`
164
+ * are intentionally pre-listed so a future R3 V2 release does not need a
165
+ * schema bump. Only `backend` has working directives in R1; the others
166
+ * raise `NotImplementedError` at dispatch time.
167
+ */
168
+ export const KNOWN_DIRECTIVE_SETS: ReadonlySet<string> = new Set([
169
+ 'backend',
170
+ 'ui',
171
+ 'ui-trivial',
172
+ 'mixed',
173
+ ]);
174
+
175
+ /** Raised when a state payload violates the v1 contract. */
176
+ export class SchemaError extends Error {
177
+ constructor(message: string) {
178
+ super(message);
179
+ this.name = 'SchemaError';
180
+ Object.setPrototypeOf(this, SchemaError.prototype);
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Typed envelope for the user-supplied work item.
186
+ *
187
+ * `kind` is one of `KNOWN_INPUT_KINDS`; `data` is the raw
188
+ * payload. The legacy `state.ticket` dict lands here as
189
+ * `Input(kind="ticket", data=<dict>)` after migration.
190
+ */
191
+ export class Input {
192
+ kind: string;
193
+ data: Dict;
194
+
195
+ constructor(kind: string, data: Dict | null = null) {
196
+ this.kind = kind;
197
+ // Mirror `field(default_factory=dict)` — a fresh empty dict per instance.
198
+ this.data = data ?? {};
199
+ }
200
+ }
201
+
202
+ /**
203
+ * Schema v1 of the persisted work state.
204
+ *
205
+ * Field order mirrors the on-disk JSON: envelope (`version`,
206
+ * `input`, `intent`, `directive_set`, `stack`) first, then
207
+ * the legacy `DeliveryState` slice (`persona` ... `report`) so a
208
+ * diff between a v1 file and its v0 ancestor stays readable.
209
+ */
210
+ export class WorkState {
211
+ input: Input;
212
+ intent: string;
213
+ directive_set: string;
214
+ stack: Dict | null;
215
+ ui_audit: Dict | null;
216
+ app_spec: Dict | null;
217
+ ui_design: Dict | null;
218
+ ui_scaffold: Dict | null;
219
+ ui_review: Dict | null;
220
+ ui_polish: Dict | null;
221
+ contract: Dict | null;
222
+ stitch: Dict | null;
223
+ halts: Dict[];
224
+ version: number;
225
+ persona: string;
226
+ memory: Dict[];
227
+ plan: JsonValue;
228
+ changes: Dict[];
229
+ tests: JsonValue;
230
+ verify: JsonValue;
231
+ outcomes: { [key: string]: string };
232
+ questions: string[];
233
+ report: string;
234
+
235
+ constructor(opts: {
236
+ input: Input;
237
+ intent?: string;
238
+ directive_set?: string;
239
+ stack?: Dict | null;
240
+ ui_audit?: Dict | null;
241
+ app_spec?: Dict | null;
242
+ ui_design?: Dict | null;
243
+ ui_scaffold?: Dict | null;
244
+ ui_review?: Dict | null;
245
+ ui_polish?: Dict | null;
246
+ contract?: Dict | null;
247
+ stitch?: Dict | null;
248
+ halts?: Dict[];
249
+ version?: number;
250
+ persona?: string;
251
+ memory?: Dict[];
252
+ plan?: JsonValue;
253
+ changes?: Dict[];
254
+ tests?: JsonValue;
255
+ verify?: JsonValue;
256
+ outcomes?: { [key: string]: string };
257
+ questions?: string[];
258
+ report?: string;
259
+ }) {
260
+ this.input = opts.input;
261
+ this.intent = opts.intent ?? DEFAULT_INTENT;
262
+ this.directive_set = opts.directive_set ?? DEFAULT_DIRECTIVE_SET;
263
+ this.stack = opts.stack ?? null;
264
+ this.ui_audit = opts.ui_audit ?? null;
265
+ this.app_spec = opts.app_spec ?? null;
266
+ this.ui_design = opts.ui_design ?? null;
267
+ this.ui_scaffold = opts.ui_scaffold ?? null;
268
+ this.ui_review = opts.ui_review ?? null;
269
+ this.ui_polish = opts.ui_polish ?? null;
270
+ this.contract = opts.contract ?? null;
271
+ this.stitch = opts.stitch ?? null;
272
+ this.halts = opts.halts ?? [];
273
+ this.version = opts.version ?? SCHEMA_VERSION;
274
+ this.persona = opts.persona ?? 'senior-engineer';
275
+ this.memory = opts.memory ?? [];
276
+ this.plan = opts.plan ?? null;
277
+ this.changes = opts.changes ?? [];
278
+ this.tests = opts.tests ?? null;
279
+ this.verify = opts.verify ?? null;
280
+ this.outcomes = opts.outcomes ?? {};
281
+ this.questions = opts.questions ?? [];
282
+ this.report = opts.report ?? '';
283
+ }
284
+ }
285
+
286
+ /**
287
+ * Serialise `state` to the canonical v1 JSON shape.
288
+ *
289
+ * Field order is fixed: `version` -> `input` -> `intent` ->
290
+ * `directive_set` -> legacy slice. Stable order keeps state
291
+ * snapshots diff-friendly across re-runs and across the freeze-guard
292
+ * replay. Validation runs before serialisation so an in-memory
293
+ * object that was mutated past the schema cannot reach disk.
294
+ */
295
+ export function to_dict(state: WorkState): Dict {
296
+ _validate_kind(state.input.kind);
297
+ _validate_directive_set(state.directive_set);
298
+ if (state.version !== SCHEMA_VERSION) {
299
+ throw new SchemaError(
300
+ `version must be ${SCHEMA_VERSION}; got ${pyRepr(state.version)}`,
301
+ );
302
+ }
303
+ _validate_stack(state.stack);
304
+ _validate_ui_audit(state.ui_audit);
305
+ _validate_app_spec(state.app_spec);
306
+ _validate_ui_design(state.ui_design);
307
+ _validate_ui_scaffold(state.ui_scaffold);
308
+ _validate_ui_review(state.ui_review);
309
+ _validate_ui_polish(state.ui_polish);
310
+ _validate_contract(state.contract);
311
+ _validate_stitch(state.stitch);
312
+ _validate_halts(state.halts);
313
+ return {
314
+ version: state.version,
315
+ input: { kind: state.input.kind, data: state.input.data },
316
+ intent: state.intent,
317
+ directive_set: state.directive_set,
318
+ stack: state.stack,
319
+ ui_audit: state.ui_audit,
320
+ app_spec: state.app_spec,
321
+ ui_design: state.ui_design,
322
+ ui_scaffold: state.ui_scaffold,
323
+ ui_review: state.ui_review,
324
+ ui_polish: state.ui_polish,
325
+ contract: state.contract,
326
+ stitch: state.stitch,
327
+ halts: [...state.halts],
328
+ persona: state.persona,
329
+ memory: state.memory,
330
+ plan: state.plan,
331
+ changes: state.changes,
332
+ tests: state.tests,
333
+ verify: state.verify,
334
+ outcomes: state.outcomes,
335
+ questions: state.questions,
336
+ report: state.report,
337
+ };
338
+ }
339
+
340
+ /**
341
+ * Build a `WorkState` from a parsed JSON payload.
342
+ *
343
+ * Validates the envelope (`version`, `input.kind`,
344
+ * `directive_set`) before instantiating the class. Unknown
345
+ * top-level keys are tolerated and dropped — the schema is additive,
346
+ * not strict-rejecting, so a future field rolled out by a newer
347
+ * engine version does not crash an older reader.
348
+ */
349
+ export function from_dict(payload: JsonValue): WorkState {
350
+ if (!_isDict(payload)) {
351
+ throw new SchemaError(
352
+ `state payload must be a JSON object; got ${pyTypeName(payload)}`,
353
+ );
354
+ }
355
+
356
+ const version = payload['version'];
357
+ if (version !== SCHEMA_VERSION) {
358
+ throw new SchemaError(
359
+ `version must be ${SCHEMA_VERSION}; got ${pyRepr(version)}. ` +
360
+ 'Run the v0→v1 migration before loading legacy files.',
361
+ );
362
+ }
363
+
364
+ const raw_input = payload['input'];
365
+ if (!_isDict(raw_input)) {
366
+ throw new SchemaError(
367
+ "state.input must be a JSON object with 'kind' and 'data' keys",
368
+ );
369
+ }
370
+ const kind = raw_input['kind'];
371
+ _validate_kind(kind);
372
+ const data = 'data' in raw_input ? raw_input['data'] : {};
373
+ if (!_isDict(data)) {
374
+ throw new SchemaError(
375
+ `state.input.data must be a JSON object; got ${pyTypeName(data)}`,
376
+ );
377
+ }
378
+
379
+ const directive_set = _get(payload, 'directive_set', DEFAULT_DIRECTIVE_SET);
380
+ _validate_directive_set(directive_set);
381
+
382
+ const stack = payload['stack'] ?? null;
383
+ _validate_stack(stack);
384
+
385
+ const ui_audit = payload['ui_audit'] ?? null;
386
+ _validate_ui_audit(ui_audit);
387
+
388
+ const app_spec = payload['app_spec'] ?? null;
389
+ _validate_app_spec(app_spec);
390
+
391
+ const ui_design = payload['ui_design'] ?? null;
392
+ _validate_ui_design(ui_design);
393
+
394
+ const ui_scaffold = payload['ui_scaffold'] ?? null;
395
+ _validate_ui_scaffold(ui_scaffold);
396
+
397
+ const ui_review = payload['ui_review'] ?? null;
398
+ _validate_ui_review(ui_review);
399
+
400
+ const ui_polish = payload['ui_polish'] ?? null;
401
+ _validate_ui_polish(ui_polish);
402
+
403
+ const contract = payload['contract'] ?? null;
404
+ _validate_contract(contract);
405
+
406
+ const stitch = payload['stitch'] ?? null;
407
+ _validate_stitch(stitch);
408
+
409
+ const halts = 'halts' in payload ? payload['halts'] : [];
410
+ _validate_halts(halts);
411
+
412
+ return new WorkState({
413
+ input: new Input(kind as string, { ...(data as Dict) }),
414
+ intent: _get(payload, 'intent', DEFAULT_INTENT) as string,
415
+ directive_set: directive_set as string,
416
+ stack: _isDict(stack) ? { ...stack } : null,
417
+ ui_audit: _isDict(ui_audit) ? { ...ui_audit } : null,
418
+ app_spec: _isDict(app_spec) ? { ...app_spec } : null,
419
+ ui_design: _isDict(ui_design) ? { ...ui_design } : null,
420
+ ui_scaffold: _isDict(ui_scaffold) ? { ...ui_scaffold } : null,
421
+ ui_review: _isDict(ui_review) ? { ...ui_review } : null,
422
+ ui_polish: _isDict(ui_polish) ? { ...ui_polish } : null,
423
+ contract: _isDict(contract) ? { ...contract } : null,
424
+ stitch: _isDict(stitch) ? { ...stitch } : null,
425
+ halts: Array.isArray(halts) ? ([...halts] as Dict[]) : [],
426
+ version: version as number,
427
+ persona: _get(payload, 'persona', 'senior-engineer') as string,
428
+ memory: [...(_listOrEmpty(_get(payload, 'memory', [])))] as Dict[],
429
+ plan: _get(payload, 'plan', null),
430
+ changes: [...(_listOrEmpty(_get(payload, 'changes', [])))] as Dict[],
431
+ tests: _get(payload, 'tests', null),
432
+ verify: _get(payload, 'verify', null),
433
+ outcomes: { ...(_dictOrEmpty(_get(payload, 'outcomes', {}))) } as {
434
+ [key: string]: string;
435
+ },
436
+ questions: [
437
+ ...(_listOrEmpty(_get(payload, 'questions', []))),
438
+ ] as string[],
439
+ report: _get(payload, 'report', '') as string,
440
+ });
441
+ }
442
+
443
+ /** Read a v1 state file from disk and return a `WorkState`. */
444
+ export function load(p: string): WorkState {
445
+ const raw = fs.readFileSync(p, 'utf-8');
446
+ let payload: JsonValue;
447
+ try {
448
+ payload = JSON.parse(raw) as JsonValue;
449
+ } catch (exc) {
450
+ throw new SchemaError(`invalid JSON in ${p}: ${(exc as Error).message}`);
451
+ }
452
+ return from_dict(payload);
453
+ }
454
+
455
+ /** Write `state` to `p` as pretty JSON, terminating newline included. */
456
+ export function dump(state: WorkState, p: string): void {
457
+ fs.mkdirSync(path.dirname(p), { recursive: true });
458
+ fs.writeFileSync(p, jsonDumps(to_dict(state)) + '\n', 'utf-8');
459
+ }
460
+
461
+ function _validate_kind(kind: JsonValue | undefined): void {
462
+ if (typeof kind !== 'string') {
463
+ throw new SchemaError(
464
+ `state.input.kind must be a string; got ${pyTypeName(kind)}`,
465
+ );
466
+ }
467
+ if (!KNOWN_INPUT_KINDS.has(kind)) {
468
+ throw new SchemaError(
469
+ `unknown input.kind ${pyRepr(kind)}; ` +
470
+ `expected one of ${pyListRepr(pySorted(KNOWN_INPUT_KINDS))}`,
471
+ );
472
+ }
473
+ }
474
+
475
+ function _validate_directive_set(name: JsonValue): void {
476
+ if (typeof name !== 'string') {
477
+ throw new SchemaError(
478
+ `state.directive_set must be a string; got ${pyTypeName(name)}`,
479
+ );
480
+ }
481
+ if (!KNOWN_DIRECTIVE_SETS.has(name)) {
482
+ throw new SchemaError(
483
+ `unknown directive_set ${pyRepr(name)}; ` +
484
+ `expected one of ${pyListRepr(pySorted(KNOWN_DIRECTIVE_SETS))}`,
485
+ );
486
+ }
487
+ }
488
+
489
+ /**
490
+ * Reject malformed stack envelopes; tolerate `null` (not yet detected).
491
+ *
492
+ * The detector populates `state.stack` lazily — the first dispatch
493
+ * of a new state file may run without it set, then the dispatcher
494
+ * fills it in before any UI handler reads it. We only validate the
495
+ * shape when present so the absence-of-detection case stays a normal
496
+ * code path, not an error.
497
+ */
498
+ function _validate_stack(stack: JsonValue): void {
499
+ if (stack === null) {
500
+ return;
501
+ }
502
+ if (!_isDict(stack)) {
503
+ throw new SchemaError(
504
+ `state.stack must be a JSON object or null; ` +
505
+ `got ${pyTypeName(stack)}`,
506
+ );
507
+ }
508
+ const frontend = stack['frontend'];
509
+ if (typeof frontend !== 'string' || !frontend) {
510
+ throw new SchemaError('state.stack.frontend must be a non-empty string');
511
+ }
512
+ const mtime = 'mtime' in stack ? stack['mtime'] : 0.0;
513
+ if (!_isNumber(mtime)) {
514
+ throw new SchemaError(
515
+ `state.stack.mtime must be a number; got ${pyTypeName(mtime)}`,
516
+ );
517
+ }
518
+ }
519
+
520
+ /**
521
+ * Reject malformed `ui_audit` envelopes; tolerate `null` and `{}`.
522
+ *
523
+ * `null` means the audit has not run yet — the dispatcher's audit
524
+ * gate (`directives.ui.audit`) will emit the agent-directive that
525
+ * populates it. An empty dict is the in-progress shape after the
526
+ * skill returns but before findings land; the gate treats it the
527
+ * same as `null`. Once populated, `greenfield` (when present)
528
+ * must be a bool, and `greenfield_decision` (when present) must
529
+ * be one of the three documented choices. Other keys (`components`,
530
+ * `patterns`, ...) are validated by the audit handler against the
531
+ * skill contract — the schema only enforces shape, not content.
532
+ */
533
+ function _validate_ui_audit(ui_audit: JsonValue): void {
534
+ if (ui_audit === null) {
535
+ return;
536
+ }
537
+ if (!_isDict(ui_audit)) {
538
+ throw new SchemaError(
539
+ `state.ui_audit must be a JSON object or null; ` +
540
+ `got ${pyTypeName(ui_audit)}`,
541
+ );
542
+ }
543
+ if ('greenfield' in ui_audit && typeof ui_audit['greenfield'] !== 'boolean') {
544
+ throw new SchemaError(
545
+ 'state.ui_audit.greenfield must be a boolean when present',
546
+ );
547
+ }
548
+ const decision = 'greenfield_decision' in ui_audit
549
+ ? ui_audit['greenfield_decision']
550
+ : null;
551
+ if (
552
+ decision !== null &&
553
+ decision !== 'scaffold' &&
554
+ decision !== 'bare' &&
555
+ decision !== 'external_reference'
556
+ ) {
557
+ throw new SchemaError(
558
+ `state.ui_audit.greenfield_decision must be one of ` +
559
+ `'scaffold', 'bare', 'external_reference', or null; ` +
560
+ `got ${pyRepr(decision)}`,
561
+ );
562
+ }
563
+ if (
564
+ 'a11y_baseline' in ui_audit &&
565
+ !Array.isArray(ui_audit['a11y_baseline'])
566
+ ) {
567
+ throw new SchemaError(
568
+ 'state.ui_audit.a11y_baseline must be a list when present',
569
+ );
570
+ }
571
+ }
572
+
573
+ /**
574
+ * Reject malformed `app_spec` envelopes; tolerate `null` and `{}`.
575
+ *
576
+ * `null` means the app-spec gate has not produced a grounding
577
+ * artifact yet — the greenfield-scaffold `app_spec` directive
578
+ * (greenfield-scaffold Phase 2) emits the agent-directive that
579
+ * populates it, and the gate is a no-op for every non-greenfield
580
+ * flow so the slot stays `null` there. An empty dict is the
581
+ * in-progress shape after the skill returns but before the page-set
582
+ * lands; the gate treats it the same as `null`. Once populated,
583
+ * `pages` / `entity_model` (when present) must be lists,
584
+ * `flow_map` (when present) must be a list or dict, and
585
+ * `confirmed` / `bypassed` (when present) must be bools — the
586
+ * app-spec gate's confirm/bypass sentinels are simple equality
587
+ * tests, so the schema enforces only shape, not content.
588
+ */
589
+ function _validate_app_spec(app_spec: JsonValue): void {
590
+ if (app_spec === null) {
591
+ return;
592
+ }
593
+ if (!_isDict(app_spec)) {
594
+ throw new SchemaError(
595
+ `state.app_spec must be a JSON object or null; ` +
596
+ `got ${pyTypeName(app_spec)}`,
597
+ );
598
+ }
599
+ for (const key of ['pages', 'entity_model']) {
600
+ if (key in app_spec && !Array.isArray(app_spec[key])) {
601
+ throw new SchemaError(
602
+ `state.app_spec.${key} must be a list when present`,
603
+ );
604
+ }
605
+ }
606
+ if (
607
+ 'flow_map' in app_spec &&
608
+ !Array.isArray(app_spec['flow_map']) &&
609
+ !_isDict(app_spec['flow_map'])
610
+ ) {
611
+ throw new SchemaError(
612
+ 'state.app_spec.flow_map must be a list or object when present',
613
+ );
614
+ }
615
+ for (const key of ['confirmed', 'bypassed']) {
616
+ if (key in app_spec && typeof app_spec[key] !== 'boolean') {
617
+ throw new SchemaError(
618
+ `state.app_spec.${key} must be a boolean when present`,
619
+ );
620
+ }
621
+ }
622
+ }
623
+
624
+ /**
625
+ * Reject malformed `ui_design` envelopes; tolerate `null` and `{}`.
626
+ *
627
+ * `null` means the design step has not produced a brief yet — the
628
+ * dispatcher's design gate (`directives.ui.design`) emits the
629
+ * agent-directive that populates it. An empty dict is the in-progress
630
+ * shape after the skill returns but before the brief lands; the gate
631
+ * treats it the same as `null`. Once populated, `design_confirmed`
632
+ * (when present) must be a bool. Other keys (`layout`, `components`,
633
+ * `states`, `microcopy`, `a11y`, `reused_from_audit`) are
634
+ * validated by the design handler against the skill contract — the
635
+ * schema only enforces shape, not content.
636
+ */
637
+ function _validate_ui_design(ui_design: JsonValue): void {
638
+ if (ui_design === null) {
639
+ return;
640
+ }
641
+ if (!_isDict(ui_design)) {
642
+ throw new SchemaError(
643
+ `state.ui_design must be a JSON object or null; ` +
644
+ `got ${pyTypeName(ui_design)}`,
645
+ );
646
+ }
647
+ if (
648
+ 'design_confirmed' in ui_design &&
649
+ typeof ui_design['design_confirmed'] !== 'boolean'
650
+ ) {
651
+ throw new SchemaError(
652
+ 'state.ui_design.design_confirmed must be a boolean when present',
653
+ );
654
+ }
655
+ }
656
+
657
+ /**
658
+ * Reject malformed `ui_scaffold` envelopes; tolerate `null` and `{}`.
659
+ *
660
+ * `null` means the scaffold gate has not produced a plan yet — the
661
+ * greenfield-scaffold `scaffold` directive (greenfield-scaffold
662
+ * Phase 3) emits the agent-directive that populates it, and the gate
663
+ * is a no-op for every non-greenfield flow so the slot stays `null`
664
+ * there. An empty dict is the in-progress shape. Once populated, the
665
+ * stack-agnostic plan keys `pages` / `routes` / `component_manifest`
666
+ * / `artifacts` (when present) must be lists, `layout_strategy`
667
+ * (when present) must be a string, `token_seed` (when present) must
668
+ * be an object, and `scaffolded` (when present) must be a bool — the
669
+ * scaffold gate's "plan produced" and "files created" sentinels are
670
+ * simple shape/equality tests, so the schema enforces only shape.
671
+ */
672
+ function _validate_ui_scaffold(ui_scaffold: JsonValue): void {
673
+ if (ui_scaffold === null) {
674
+ return;
675
+ }
676
+ if (!_isDict(ui_scaffold)) {
677
+ throw new SchemaError(
678
+ `state.ui_scaffold must be a JSON object or null; ` +
679
+ `got ${pyTypeName(ui_scaffold)}`,
680
+ );
681
+ }
682
+ for (const key of ['pages', 'routes', 'component_manifest', 'artifacts']) {
683
+ if (key in ui_scaffold && !Array.isArray(ui_scaffold[key])) {
684
+ throw new SchemaError(
685
+ `state.ui_scaffold.${key} must be a list when present`,
686
+ );
687
+ }
688
+ }
689
+ if (
690
+ 'layout_strategy' in ui_scaffold &&
691
+ typeof ui_scaffold['layout_strategy'] !== 'string'
692
+ ) {
693
+ throw new SchemaError(
694
+ 'state.ui_scaffold.layout_strategy must be a string when present',
695
+ );
696
+ }
697
+ if ('token_seed' in ui_scaffold && !_isDict(ui_scaffold['token_seed'])) {
698
+ throw new SchemaError(
699
+ 'state.ui_scaffold.token_seed must be a JSON object when present',
700
+ );
701
+ }
702
+ if (
703
+ 'scaffolded' in ui_scaffold &&
704
+ typeof ui_scaffold['scaffolded'] !== 'boolean'
705
+ ) {
706
+ throw new SchemaError(
707
+ 'state.ui_scaffold.scaffolded must be a boolean when present',
708
+ );
709
+ }
710
+ }
711
+
712
+ /**
713
+ * Reject malformed `ui_review` envelopes; tolerate `null` and `{}`.
714
+ *
715
+ * `null` means the review pass has not run yet — the dispatcher's
716
+ * review gate (`directives.ui.review`) emits the agent-directive
717
+ * that populates it. An empty dict is the in-progress shape after
718
+ * the skill returns but before findings land. Once populated,
719
+ * `findings` (when present) must be a list and `review_clean`
720
+ * (when present) must be a bool. Field content (severity labels,
721
+ * fix suggestions) is validated by the review handler; the schema
722
+ * enforces only shape.
723
+ */
724
+ function _validate_ui_review(ui_review: JsonValue): void {
725
+ if (ui_review === null) {
726
+ return;
727
+ }
728
+ if (!_isDict(ui_review)) {
729
+ throw new SchemaError(
730
+ `state.ui_review must be a JSON object or null; ` +
731
+ `got ${pyTypeName(ui_review)}`,
732
+ );
733
+ }
734
+ if ('findings' in ui_review && !Array.isArray(ui_review['findings'])) {
735
+ throw new SchemaError(
736
+ 'state.ui_review.findings must be a list when present',
737
+ );
738
+ }
739
+ if (
740
+ 'review_clean' in ui_review &&
741
+ typeof ui_review['review_clean'] !== 'boolean'
742
+ ) {
743
+ throw new SchemaError(
744
+ 'state.ui_review.review_clean must be a boolean when present',
745
+ );
746
+ }
747
+ const a11y = 'a11y' in ui_review ? ui_review['a11y'] : null;
748
+ if (a11y !== null) {
749
+ if (!_isDict(a11y)) {
750
+ throw new SchemaError(
751
+ 'state.ui_review.a11y must be a JSON object or null when present',
752
+ );
753
+ }
754
+ if ('violations' in a11y && !Array.isArray(a11y['violations'])) {
755
+ throw new SchemaError(
756
+ 'state.ui_review.a11y.violations must be a list when present',
757
+ );
758
+ }
759
+ const floor = 'severity_floor' in a11y ? a11y['severity_floor'] : null;
760
+ if (
761
+ floor !== null &&
762
+ floor !== 'minor' &&
763
+ floor !== 'moderate' &&
764
+ floor !== 'serious' &&
765
+ floor !== 'critical'
766
+ ) {
767
+ throw new SchemaError(
768
+ `state.ui_review.a11y.severity_floor must be one of ` +
769
+ `'minor', 'moderate', 'serious', 'critical', or null; ` +
770
+ `got ${pyRepr(floor)}`,
771
+ );
772
+ }
773
+ if (
774
+ 'accepted_violations' in a11y &&
775
+ !Array.isArray(a11y['accepted_violations'])
776
+ ) {
777
+ throw new SchemaError(
778
+ 'state.ui_review.a11y.accepted_violations must be a list when present',
779
+ );
780
+ }
781
+ }
782
+ const preview = 'preview' in ui_review ? ui_review['preview'] : null;
783
+ if (preview !== null) {
784
+ if (!_isDict(preview)) {
785
+ throw new SchemaError(
786
+ 'state.ui_review.preview must be a JSON object or null when present',
787
+ );
788
+ }
789
+ if ('render_ok' in preview && typeof preview['render_ok'] !== 'boolean') {
790
+ throw new SchemaError(
791
+ 'state.ui_review.preview.render_ok must be a boolean when present',
792
+ );
793
+ }
794
+ }
795
+ }
796
+
797
+ /**
798
+ * Reject malformed `ui_polish` envelopes; tolerate `null` and `{}`.
799
+ *
800
+ * `null` means the polish loop has not entered yet. Once
801
+ * populated, `rounds` (when present) must be an int in `[0, 2]`
802
+ * by default — the polish-loop ceiling defined in
803
+ * `agents/roadmaps/road-to-product-ui-track.md` Phase 3 Step 5.
804
+ * R4 Phase 2 widens the upper bound to `3` when
805
+ * `extension_used` is `True` (one-shot a11y extension halt).
806
+ * `applied` (when present) must be a list. The polish handler
807
+ * enforces ceiling semantics; the schema enforces only shape.
808
+ */
809
+ function _validate_ui_polish(ui_polish: JsonValue): void {
810
+ if (ui_polish === null) {
811
+ return;
812
+ }
813
+ if (!_isDict(ui_polish)) {
814
+ throw new SchemaError(
815
+ `state.ui_polish must be a JSON object or null; ` +
816
+ `got ${pyTypeName(ui_polish)}`,
817
+ );
818
+ }
819
+ if (
820
+ 'extension_used' in ui_polish &&
821
+ typeof ui_polish['extension_used'] !== 'boolean'
822
+ ) {
823
+ throw new SchemaError(
824
+ 'state.ui_polish.extension_used must be a boolean when present',
825
+ );
826
+ }
827
+ const extension_used = _pyBool(
828
+ 'extension_used' in ui_polish ? ui_polish['extension_used'] : false,
829
+ );
830
+ if ('rounds' in ui_polish) {
831
+ const rounds = ui_polish['rounds'];
832
+ if (!_isPyInt(rounds)) {
833
+ throw new SchemaError(
834
+ `state.ui_polish.rounds must be an integer; got ${pyTypeName(rounds)}`,
835
+ );
836
+ }
837
+ const max_rounds = extension_used ? 3 : 2;
838
+ if (rounds < 0 || rounds > max_rounds) {
839
+ throw new SchemaError(
840
+ `state.ui_polish.rounds must be in [0, ${max_rounds}]; ` +
841
+ `got ${rounds} (extension_used=${pyBoolRepr(extension_used)})`,
842
+ );
843
+ }
844
+ }
845
+ if ('applied' in ui_polish && !Array.isArray(ui_polish['applied'])) {
846
+ throw new SchemaError(
847
+ 'state.ui_polish.applied must be a list when present',
848
+ );
849
+ }
850
+ }
851
+
852
+ /**
853
+ * Reject malformed `contract` envelopes; tolerate `null` and `{}`.
854
+ *
855
+ * `null` means the contract step has not run yet — the mixed
856
+ * `contract` directive (R3 Phase 4 Step 1) emits the
857
+ * agent-directive that populates it. Once populated,
858
+ * `data_model` and `api_surface` (when present) must be lists,
859
+ * and `contract_confirmed` (when present) must be a bool. Field
860
+ * content (entity names, endpoint shapes) is validated by the
861
+ * contract handler; the schema enforces only shape so the mixed UI
862
+ * step's sentinel check (`contract_confirmed is True`) stays a
863
+ * simple equality test.
864
+ */
865
+ function _validate_contract(contract: JsonValue): void {
866
+ if (contract === null) {
867
+ return;
868
+ }
869
+ if (!_isDict(contract)) {
870
+ throw new SchemaError(
871
+ `state.contract must be a JSON object or null; ` +
872
+ `got ${pyTypeName(contract)}`,
873
+ );
874
+ }
875
+ if ('data_model' in contract && !Array.isArray(contract['data_model'])) {
876
+ throw new SchemaError(
877
+ 'state.contract.data_model must be a list when present',
878
+ );
879
+ }
880
+ if ('api_surface' in contract && !Array.isArray(contract['api_surface'])) {
881
+ throw new SchemaError(
882
+ 'state.contract.api_surface must be a list when present',
883
+ );
884
+ }
885
+ if (
886
+ 'contract_confirmed' in contract &&
887
+ typeof contract['contract_confirmed'] !== 'boolean'
888
+ ) {
889
+ throw new SchemaError(
890
+ 'state.contract.contract_confirmed must be a bool when present',
891
+ );
892
+ }
893
+ }
894
+
895
+ /**
896
+ * Reject malformed `stitch` envelopes; tolerate `null` and `{}`.
897
+ *
898
+ * `null` means the integration-verification step has not run yet
899
+ * — the mixed `stitch` directive (R3 Phase 4 Step 3) emits the
900
+ * agent-directive that populates it. Once populated, `scenarios`
901
+ * (when present) must be a list of integration smoke cases,
902
+ * `verdict` (when present) must be one of
903
+ * `{"success", "blocked", "partial"}`, and
904
+ * `integration_confirmed` (when present) must be a bool. The
905
+ * stitch handler enforces verdict semantics; the schema enforces
906
+ * only shape.
907
+ */
908
+ function _validate_stitch(stitch: JsonValue): void {
909
+ if (stitch === null) {
910
+ return;
911
+ }
912
+ if (!_isDict(stitch)) {
913
+ throw new SchemaError(
914
+ `state.stitch must be a JSON object or null; ` +
915
+ `got ${pyTypeName(stitch)}`,
916
+ );
917
+ }
918
+ if ('scenarios' in stitch && !Array.isArray(stitch['scenarios'])) {
919
+ throw new SchemaError(
920
+ 'state.stitch.scenarios must be a list when present',
921
+ );
922
+ }
923
+ if ('verdict' in stitch) {
924
+ const verdict = stitch['verdict'];
925
+ if (
926
+ verdict !== 'success' &&
927
+ verdict !== 'blocked' &&
928
+ verdict !== 'partial'
929
+ ) {
930
+ throw new SchemaError(
931
+ `state.stitch.verdict must be one of success/blocked/partial; ` +
932
+ `got ${pyRepr(verdict)}`,
933
+ );
934
+ }
935
+ }
936
+ if (
937
+ 'integration_confirmed' in stitch &&
938
+ typeof stitch['integration_confirmed'] !== 'boolean'
939
+ ) {
940
+ throw new SchemaError(
941
+ 'state.stitch.integration_confirmed must be a bool when present',
942
+ );
943
+ }
944
+ }
945
+
946
+ /**
947
+ * Reject malformed `halts` envelopes; tolerate `[]`.
948
+ *
949
+ * Each entry must be a dict with at minimum `reason` (str) and
950
+ * `surface` (list of str). `step` and `timestamp` are optional
951
+ * metadata appended by `emitters._emit_halt`. The schema enforces
952
+ * only shape — the explain renderer is responsible for fallback
953
+ * rendering when optional fields are absent.
954
+ */
955
+ function _validate_halts(halts: JsonValue): void {
956
+ if (!Array.isArray(halts)) {
957
+ throw new SchemaError(
958
+ `state.halts must be a list; got ${pyTypeName(halts)}`,
959
+ );
960
+ }
961
+ for (let idx = 0; idx < halts.length; idx++) {
962
+ const entry = halts[idx];
963
+ if (!_isDict(entry)) {
964
+ throw new SchemaError(
965
+ `state.halts[${idx}] must be a JSON object; ` +
966
+ `got ${pyTypeName(entry)}`,
967
+ );
968
+ }
969
+ const reason = 'reason' in entry ? entry['reason'] : undefined;
970
+ if (typeof reason !== 'string' || !reason) {
971
+ throw new SchemaError(
972
+ `state.halts[${idx}].reason must be a non-empty string`,
973
+ );
974
+ }
975
+ const surface = 'surface' in entry ? entry['surface'] : [];
976
+ if (!Array.isArray(surface)) {
977
+ throw new SchemaError(
978
+ `state.halts[${idx}].surface must be a list; ` +
979
+ `got ${pyTypeName(surface)}`,
980
+ );
981
+ }
982
+ for (let j = 0; j < surface.length; j++) {
983
+ if (typeof surface[j] !== 'string') {
984
+ throw new SchemaError(
985
+ `state.halts[${idx}].surface[${j}] must be a string`,
986
+ );
987
+ }
988
+ }
989
+ }
990
+ }
991
+
992
+ // ── Python-parity helpers ───────────────────────────────────────────────
993
+
994
+ /**
995
+ * True when `v` is a plain JSON object (Python `dict`). Arrays and `null`
996
+ * are excluded, mirroring `isinstance(x, dict)`.
997
+ */
998
+ function _isDict(v: JsonValue | undefined): v is Dict {
999
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
1000
+ }
1001
+
1002
+ /**
1003
+ * Mirror Python `isinstance(x, (int, float))` for the `mtime` check. JSON
1004
+ * numbers (int or float) are all JS `number`; booleans are NOT numbers in
1005
+ * Python's `(int, float)` test only because `bool` IS a subclass of `int`
1006
+ * — but `_validate_stack` does not exclude bools, so neither do we: a JSON
1007
+ * `true`/`false` never reaches `mtime` as a JS boolean is `typeof boolean`,
1008
+ * not `number`. Python's `isinstance(True, (int, float))` is True; to match
1009
+ * that edge we treat a JS boolean as a number here too.
1010
+ */
1011
+ function _isNumber(v: JsonValue): boolean {
1012
+ return typeof v === 'number' || typeof v === 'boolean';
1013
+ }
1014
+
1015
+ /**
1016
+ * Mirror Python `isinstance(x, int) and not isinstance(x, bool)` for the
1017
+ * `rounds` check. A JSON integer parses to a JS `number` with no fractional
1018
+ * part; a JSON float with a fractional part is rejected; a JSON bool is
1019
+ * rejected (Python excludes bool explicitly).
1020
+ */
1021
+ function _isPyInt(v: JsonValue | undefined): v is number {
1022
+ return typeof v === 'number' && Number.isInteger(v);
1023
+ }
1024
+
1025
+ /** Mirror Python `bool(x)` truthiness for the values `ui_polish` can hold. */
1026
+ function _pyBool(v: JsonValue | undefined): boolean {
1027
+ if (v === null || v === undefined) return false;
1028
+ if (typeof v === 'boolean') return v;
1029
+ if (typeof v === 'number') return v !== 0;
1030
+ if (typeof v === 'string') return v.length > 0;
1031
+ if (Array.isArray(v)) return v.length > 0;
1032
+ if (_isDict(v)) return Object.keys(v).length > 0;
1033
+ return true;
1034
+ }
1035
+
1036
+ /** Python `dict.get(key, default)` over a JSON object. */
1037
+ function _get(obj: Dict, key: string, dflt: JsonValue): JsonValue {
1038
+ return key in obj ? (obj[key] as JsonValue) : dflt;
1039
+ }
1040
+
1041
+ /** `list(x)` where x may be a list (copy) or anything else (Python would error,
1042
+ * but `from_dict` only feeds it the result of `payload.get(k, [])`, so it is a
1043
+ * list or the default `[]`). Returns the array itself for spreading. */
1044
+ function _listOrEmpty(v: JsonValue): JsonValue[] {
1045
+ return Array.isArray(v) ? v : [];
1046
+ }
1047
+
1048
+ /** `dict(x)` where x is the result of `payload.get(k, {})`. */
1049
+ function _dictOrEmpty(v: JsonValue): Dict {
1050
+ return _isDict(v) ? v : {};
1051
+ }
1052
+
1053
+ /**
1054
+ * Python `type(x).__name__` for the JSON value classes that appear in the
1055
+ * error messages: `dict`, `list`, `str`, `int`, `float`, `bool`, `NoneType`.
1056
+ */
1057
+ function pyTypeName(v: JsonValue | undefined): string {
1058
+ if (v === null || v === undefined) return 'NoneType';
1059
+ if (typeof v === 'boolean') return 'bool';
1060
+ if (typeof v === 'string') return 'str';
1061
+ if (typeof v === 'number') return Number.isInteger(v) ? 'int' : 'float';
1062
+ if (Array.isArray(v)) return 'list';
1063
+ return 'dict';
1064
+ }
1065
+
1066
+ /**
1067
+ * Python `repr(x)` for the scalar values that flow into error messages
1068
+ * (`version`, `kind`, `decision`, `floor`, `verdict`). Strings → single-quoted
1069
+ * with Python escaping; `None` → `None`; bools → `True`/`False`; numbers as-is.
1070
+ */
1071
+ function pyRepr(v: JsonValue | undefined): string {
1072
+ if (v === undefined || v === null) return 'None';
1073
+ if (typeof v === 'boolean') return v ? 'True' : 'False';
1074
+ if (typeof v === 'number') return _pyNumRepr(v);
1075
+ if (typeof v === 'string') return pyStrRepr(v);
1076
+ if (Array.isArray(v)) {
1077
+ return '[' + v.map((x) => pyRepr(x)).join(', ') + ']';
1078
+ }
1079
+ // dict repr is not exercised by the .py error paths; render Python-ish.
1080
+ const items = Object.keys(v).map((k) => `${pyStrRepr(k)}: ${pyRepr(v[k])}`);
1081
+ return '{' + items.join(', ') + '}';
1082
+ }
1083
+
1084
+ /** Python numeric repr — integer-valued floats are never produced here because
1085
+ * JSON-parsed numbers carry no float/int tag; an integer renders without `.0`. */
1086
+ function _pyNumRepr(n: number): string {
1087
+ return String(n);
1088
+ }
1089
+
1090
+ /**
1091
+ * Python `repr(str)` — prefers single quotes, switches to double quotes only
1092
+ * when the string contains a single quote but no double quote, and escapes
1093
+ * backslash plus the active quote and the standard control characters.
1094
+ */
1095
+ function pyStrRepr(s: string): string {
1096
+ const hasSingle = s.includes("'");
1097
+ const hasDouble = s.includes('"');
1098
+ const quote = hasSingle && !hasDouble ? '"' : "'";
1099
+ let out = quote;
1100
+ for (const ch of s) {
1101
+ const code = ch.codePointAt(0) as number;
1102
+ if (ch === '\\') out += '\\\\';
1103
+ else if (ch === quote) out += '\\' + quote;
1104
+ else if (ch === '\n') out += '\\n';
1105
+ else if (ch === '\r') out += '\\r';
1106
+ else if (ch === '\t') out += '\\t';
1107
+ else if (code < 0x20 || code === 0x7f) {
1108
+ out += `\\x${code.toString(16).padStart(2, '0')}`;
1109
+ } else {
1110
+ out += ch;
1111
+ }
1112
+ }
1113
+ return out + quote;
1114
+ }
1115
+
1116
+ /** Python `repr(list_of_str)` for the `sorted(KNOWN_*)` error tails. */
1117
+ function pyListRepr(items: string[]): string {
1118
+ return '[' + items.map((s) => pyStrRepr(s)).join(', ') + ']';
1119
+ }
1120
+
1121
+ /** Python `repr(bool)` — `True` / `False`. */
1122
+ function pyBoolRepr(b: boolean): string {
1123
+ return b ? 'True' : 'False';
1124
+ }
1125
+
1126
+ /**
1127
+ * Python `sorted(set_of_str)` — code-point ascending, the default `str`
1128
+ * ordering CPython uses. `Array.prototype.sort()` with no comparator sorts
1129
+ * by UTF-16 code unit, which matches for the BMP ASCII tokens in these sets;
1130
+ * use an explicit code-point comparator to be faithful for any input.
1131
+ */
1132
+ function pySorted(values: ReadonlySet<string>): string[] {
1133
+ return [...values].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
1134
+ }
1135
+
1136
+ /**
1137
+ * Mirror Python `json.dumps(obj, indent=2, ensure_ascii=False)`.
1138
+ *
1139
+ * For round-tripped JSON (the only producer of a state dict), `JSON.stringify`
1140
+ * with a 2-space indent matches CPython byte-for-byte: 2-space indent,
1141
+ * `": "` key separator, no trailing space after the array/object item commas,
1142
+ * `{}` / `[]` for empties, non-ASCII left verbatim. The one structural
1143
+ * difference CPython has — integer-valued floats rendered as `N.0` — cannot
1144
+ * arise here: JSON has no float/int tag, so a parsed `1.0` is already the JS
1145
+ * number `1` before it ever reaches this serialiser, exactly as a Python
1146
+ * reader that parsed the same bytes would diverge. `to_dict` never injects a
1147
+ * float that did not come from the parsed payload.
1148
+ */
1149
+ function jsonDumps(obj: Dict): string {
1150
+ return JSON.stringify(obj, null, 2);
1151
+ }