@event4u/agent-config 2.26.0 → 3.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 (771) hide show
  1. package/.agent-src/commands/agent-handoff.md +15 -3
  2. package/.agent-src/commands/agent-status.md +12 -0
  3. package/.agent-src/commands/agents/audit.md +12 -0
  4. package/.agent-src/commands/agents/init.md +12 -0
  5. package/.agent-src/commands/agents/optimize.md +12 -0
  6. package/.agent-src/commands/agents/user/accept.md +12 -0
  7. package/.agent-src/commands/agents/user/init.md +12 -0
  8. package/.agent-src/commands/agents/user/review.md +12 -0
  9. package/.agent-src/commands/agents/user/show.md +12 -0
  10. package/.agent-src/commands/agents/user/update.md +12 -0
  11. package/.agent-src/commands/agents/user.md +12 -0
  12. package/.agent-src/commands/agents.md +12 -0
  13. package/.agent-src/commands/analyze-reference-repo.md +15 -3
  14. package/.agent-src/commands/bug-fix.md +12 -0
  15. package/.agent-src/commands/bug-investigate.md +13 -1
  16. package/.agent-src/commands/challenge-me/vision.md +12 -0
  17. package/.agent-src/commands/challenge-me/with-docs.md +12 -0
  18. package/.agent-src/commands/challenge-me.md +12 -0
  19. package/.agent-src/commands/chat-history/import.md +16 -4
  20. package/.agent-src/commands/chat-history/learn.md +15 -3
  21. package/.agent-src/commands/chat-history/show.md +17 -5
  22. package/.agent-src/commands/chat-history.md +14 -2
  23. package/.agent-src/commands/check-current-md.md +12 -0
  24. package/.agent-src/commands/commit/in-chunks.md +12 -0
  25. package/.agent-src/commands/commit.md +12 -0
  26. package/.agent-src/commands/compress.md +12 -0
  27. package/.agent-src/commands/context/create.md +17 -5
  28. package/.agent-src/commands/context/refactor.md +15 -3
  29. package/.agent-src/commands/context.md +12 -0
  30. package/.agent-src/commands/cost-report.md +12 -0
  31. package/.agent-src/commands/council/analysis.md +15 -3
  32. package/.agent-src/commands/council/debate.md +17 -5
  33. package/.agent-src/commands/council/default.md +17 -5
  34. package/.agent-src/commands/council/design.md +12 -0
  35. package/.agent-src/commands/council/optimize.md +12 -0
  36. package/.agent-src/commands/council/pr.md +12 -0
  37. package/.agent-src/commands/council.md +13 -1
  38. package/.agent-src/commands/create-pr/description-only.md +12 -0
  39. package/.agent-src/commands/create-pr.md +39 -0
  40. package/.agent-src/commands/e2e-heal.md +12 -0
  41. package/.agent-src/commands/e2e-plan.md +12 -0
  42. package/.agent-src/commands/estimate-ticket.md +12 -0
  43. package/.agent-src/commands/feature/dev.md +13 -1
  44. package/.agent-src/commands/feature/explore.md +12 -0
  45. package/.agent-src/commands/feature/plan.md +14 -2
  46. package/.agent-src/commands/feature/refactor.md +12 -0
  47. package/.agent-src/commands/feature/roadmap.md +12 -0
  48. package/.agent-src/commands/feature.md +12 -0
  49. package/.agent-src/commands/fix/ci.md +12 -0
  50. package/.agent-src/commands/fix/portability.md +12 -0
  51. package/.agent-src/commands/fix/pr-bot-comments.md +12 -0
  52. package/.agent-src/commands/fix/pr-comments.md +12 -0
  53. package/.agent-src/commands/fix/pr-developer-comments.md +12 -0
  54. package/.agent-src/commands/fix/refs.md +12 -0
  55. package/.agent-src/commands/fix/seeder.md +12 -0
  56. package/.agent-src/commands/fix.md +12 -0
  57. package/.agent-src/commands/ghostwriter/delete.md +20 -8
  58. package/.agent-src/commands/ghostwriter/fetch.md +19 -7
  59. package/.agent-src/commands/ghostwriter/list.md +19 -7
  60. package/.agent-src/commands/ghostwriter/show.md +14 -2
  61. package/.agent-src/commands/ghostwriter/write.md +15 -3
  62. package/.agent-src/commands/ghostwriter.md +14 -2
  63. package/.agent-src/commands/grill-me.md +12 -0
  64. package/.agent-src/commands/implement-ticket.md +12 -0
  65. package/.agent-src/commands/jira-ticket.md +12 -0
  66. package/.agent-src/commands/judge/on-diff.md +12 -0
  67. package/.agent-src/commands/judge/solo.md +12 -0
  68. package/.agent-src/commands/judge/steps.md +12 -0
  69. package/.agent-src/commands/judge.md +12 -0
  70. package/.agent-src/commands/memory/add.md +12 -0
  71. package/.agent-src/commands/memory/learn-low-impact.md +18 -6
  72. package/.agent-src/commands/memory/load.md +12 -0
  73. package/.agent-src/commands/memory/mine-session.md +12 -0
  74. package/.agent-src/commands/memory/promote.md +12 -0
  75. package/.agent-src/commands/memory/propose.md +12 -0
  76. package/.agent-src/commands/memory.md +12 -0
  77. package/.agent-src/commands/mode.md +12 -0
  78. package/.agent-src/commands/module/create.md +12 -0
  79. package/.agent-src/commands/module/explore.md +13 -1
  80. package/.agent-src/commands/module.md +12 -0
  81. package/.agent-src/commands/optimize/agents-dir.md +14 -2
  82. package/.agent-src/commands/optimize/augmentignore.md +12 -0
  83. package/.agent-src/commands/optimize/rtk.md +12 -0
  84. package/.agent-src/commands/optimize/skills.md +12 -0
  85. package/.agent-src/commands/optimize-prompt.md +12 -0
  86. package/.agent-src/commands/optimize.md +12 -0
  87. package/.agent-src/commands/orchestrate.md +13 -1
  88. package/.agent-src/commands/override/create.md +12 -0
  89. package/.agent-src/commands/override/manage.md +12 -0
  90. package/.agent-src/commands/override.md +12 -0
  91. package/.agent-src/commands/package-reset.md +12 -0
  92. package/.agent-src/commands/package-test.md +12 -0
  93. package/.agent-src/commands/post-as/ghostwriter.md +12 -0
  94. package/.agent-src/commands/post-as/me.md +13 -1
  95. package/.agent-src/commands/post-as.md +12 -0
  96. package/.agent-src/commands/prepare-for-review.md +12 -0
  97. package/.agent-src/commands/project-analyze.md +27 -15
  98. package/.agent-src/commands/project-health.md +13 -1
  99. package/.agent-src/commands/quality-fix.md +12 -0
  100. package/.agent-src/commands/refine-ticket.md +12 -0
  101. package/.agent-src/commands/research/deep.md +12 -0
  102. package/.agent-src/commands/research/report.md +12 -0
  103. package/.agent-src/commands/research.md +12 -0
  104. package/.agent-src/commands/review-changes.md +12 -0
  105. package/.agent-src/commands/review-routing.md +12 -0
  106. package/.agent-src/commands/roadmap/ai-council.md +15 -3
  107. package/.agent-src/commands/roadmap/create.md +13 -1
  108. package/.agent-src/commands/roadmap/process-full.md +12 -0
  109. package/.agent-src/commands/roadmap/process-phase.md +12 -0
  110. package/.agent-src/commands/roadmap/process-step.md +12 -0
  111. package/.agent-src/commands/roadmap.md +12 -0
  112. package/.agent-src/commands/rule-compliance-audit.md +12 -0
  113. package/.agent-src/commands/set-cost-profile.md +12 -0
  114. package/.agent-src/commands/sync-agent-settings.md +12 -0
  115. package/.agent-src/commands/sync-gitignore/fix.md +32 -13
  116. package/.agent-src/commands/sync-gitignore.md +13 -1
  117. package/.agent-src/commands/tests/create.md +12 -0
  118. package/.agent-src/commands/tests/execute.md +12 -0
  119. package/.agent-src/commands/tests.md +12 -0
  120. package/.agent-src/commands/threat-model.md +12 -0
  121. package/.agent-src/commands/update-form-request-messages.md +12 -0
  122. package/.agent-src/commands/upstream-contribute.md +12 -0
  123. package/.agent-src/commands/video/from-script.md +12 -0
  124. package/.agent-src/commands/video/scene.md +12 -0
  125. package/.agent-src/commands/video/stitch.md +13 -1
  126. package/.agent-src/commands/video/storyboard.md +12 -0
  127. package/.agent-src/commands/video.md +12 -0
  128. package/.agent-src/commands/work.md +12 -0
  129. package/.agent-src/contexts/augment-infrastructure.md +2 -2
  130. package/.agent-src/contexts/authority/scope-mechanics.md +11 -0
  131. package/.agent-src/contexts/contracts/agents-md-anatomy.md +1 -1
  132. package/.agent-src/contexts/documentation-hierarchy.md +2 -2
  133. package/.agent-src/contexts/execution/roadmap-process-loop.md +19 -0
  134. package/.agent-src/ghostwriter/README.md +2 -2
  135. package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
  136. package/.agent-src/personas/README.md +1 -1
  137. package/.agent-src/personas/advisors/contrarian.md +1 -1
  138. package/.agent-src/personas/advisors/executor.md +1 -1
  139. package/.agent-src/personas/advisors/expansionist.md +1 -1
  140. package/.agent-src/personas/advisors/first-principles.md +1 -1
  141. package/.agent-src/personas/advisors/outsider.md +1 -1
  142. package/.agent-src/rules/agent-authority.md +12 -0
  143. package/.agent-src/rules/analysis-skill-routing.md +12 -0
  144. package/.agent-src/rules/architecture.md +13 -1
  145. package/.agent-src/rules/artifact-drafting-protocol.md +13 -1
  146. package/.agent-src/rules/artifact-engagement-recording.md +13 -1
  147. package/.agent-src/rules/ask-when-uncertain.md +12 -0
  148. package/.agent-src/rules/augment-edit-discipline.md +13 -1
  149. package/.agent-src/rules/augment-source-of-truth.md +13 -1
  150. package/.agent-src/rules/autonomous-execution.md +13 -1
  151. package/.agent-src/rules/caveman-speak.md +13 -1
  152. package/.agent-src/rules/cli-output-handling.md +13 -1
  153. package/.agent-src/rules/command-suggestion-policy.md +13 -1
  154. package/.agent-src/rules/commit-conventions.md +13 -1
  155. package/.agent-src/rules/commit-policy.md +12 -0
  156. package/.agent-src/rules/context-hygiene.md +15 -3
  157. package/.agent-src/rules/copilot-routing.md +13 -1
  158. package/.agent-src/rules/devcontainer-routing.md +13 -1
  159. package/.agent-src/rules/direct-answers.md +12 -0
  160. package/.agent-src/rules/docker-commands.md +13 -1
  161. package/.agent-src/rules/domain-adoption-policy.md +17 -5
  162. package/.agent-src/rules/domain-safety-disclaimer.md +13 -1
  163. package/.agent-src/rules/domain-safety-pii.md +13 -1
  164. package/.agent-src/rules/domain-safety-retention.md +13 -1
  165. package/.agent-src/rules/downstream-changes.md +13 -1
  166. package/.agent-src/rules/external-reference-deep-dive.md +13 -1
  167. package/.agent-src/rules/fast-path-marker-visibility.md +21 -1
  168. package/.agent-src/rules/framework-neutrality-in-generic-skills.md +13 -1
  169. package/.agent-src/rules/git-history-discipline.md +13 -1
  170. package/.agent-src/rules/guidelines.md +12 -0
  171. package/.agent-src/rules/improve-before-implement.md +13 -1
  172. package/.agent-src/rules/invite-challenge.md +13 -1
  173. package/.agent-src/rules/language-and-tone.md +12 -0
  174. package/.agent-src/rules/laravel-routing.md +13 -1
  175. package/.agent-src/rules/laravel-translations.md +13 -1
  176. package/.agent-src/rules/low-impact-corpus-privacy-floor.md +17 -5
  177. package/.agent-src/rules/markdown-safe-codeblocks.md +13 -1
  178. package/.agent-src/rules/media-governance-routing.md +27 -15
  179. package/.agent-src/rules/minimal-safe-diff.md +13 -1
  180. package/.agent-src/rules/missing-tool-handling.md +13 -1
  181. package/.agent-src/rules/model-recommendation.md +13 -1
  182. package/.agent-src/rules/no-attribution-footers.md +13 -1
  183. package/.agent-src/rules/no-cheap-questions.md +12 -0
  184. package/.agent-src/rules/no-roadmap-references.md +28 -16
  185. package/.agent-src/rules/non-destructive-by-default.md +12 -0
  186. package/.agent-src/rules/onboarding-gate.md +19 -6
  187. package/.agent-src/rules/package-ci-checks.md +12 -0
  188. package/.agent-src/rules/persona-governance.md +13 -1
  189. package/.agent-src/rules/php-coding.md +13 -1
  190. package/.agent-src/rules/preservation-guard.md +13 -1
  191. package/.agent-src/rules/provider-lifecycle-discipline.md +14 -2
  192. package/.agent-src/rules/reviewer-awareness.md +13 -1
  193. package/.agent-src/rules/roadmap-ci-steps-policy.md +13 -1
  194. package/.agent-src/rules/roadmap-progress-sync.md +18 -1
  195. package/.agent-src/rules/role-mode-adherence.md +13 -1
  196. package/.agent-src/rules/rule-type-governance.md +13 -1
  197. package/.agent-src/rules/runtime-safety.md +13 -1
  198. package/.agent-src/rules/scope-control.md +12 -0
  199. package/.agent-src/rules/security-sensitive-stop.md +13 -1
  200. package/.agent-src/rules/size-enforcement.md +12 -0
  201. package/.agent-src/rules/skill-improvement-trigger.md +13 -1
  202. package/.agent-src/rules/skill-quality.md +13 -1
  203. package/.agent-src/rules/slash-command-routing-policy.md +13 -1
  204. package/.agent-src/rules/symfony-routing.md +13 -1
  205. package/.agent-src/rules/think-before-action.md +13 -1
  206. package/.agent-src/rules/token-efficiency.md +13 -1
  207. package/.agent-src/rules/token-optimizer-maintenance.md +12 -0
  208. package/.agent-src/rules/tool-safety.md +13 -1
  209. package/.agent-src/rules/ui-audit-gate.md +13 -1
  210. package/.agent-src/rules/upstream-proposal.md +13 -1
  211. package/.agent-src/rules/user-interaction.md +13 -1
  212. package/.agent-src/rules/user-interrupt-priority.md +12 -0
  213. package/.agent-src/rules/verify-before-complete.md +12 -0
  214. package/.agent-src/skills/accessibility-auditor/SKILL.md +12 -0
  215. package/.agent-src/skills/activation-design/SKILL.md +12 -0
  216. package/.agent-src/skills/adr-create/SKILL.md +12 -0
  217. package/.agent-src/skills/adversarial-review/SKILL.md +12 -0
  218. package/.agent-src/skills/agent-docs-writing/SKILL.md +16 -4
  219. package/.agent-src/skills/agents-md-thin-root/SKILL.md +14 -2
  220. package/.agent-src/skills/ai-council/SKILL.md +28 -15
  221. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +12 -0
  222. package/.agent-src/skills/analysis-skill-router/SKILL.md +12 -0
  223. package/.agent-src/skills/api-design/SKILL.md +13 -3
  224. package/.agent-src/skills/api-endpoint/SKILL.md +12 -0
  225. package/.agent-src/skills/api-testing/SKILL.md +12 -0
  226. package/.agent-src/skills/architecture-review-lens/SKILL.md +12 -0
  227. package/.agent-src/skills/artisan-commands/SKILL.md +12 -0
  228. package/.agent-src/skills/async-python-patterns/SKILL.md +13 -1
  229. package/.agent-src/skills/authz-review/SKILL.md +12 -2
  230. package/.agent-src/skills/aws-infrastructure/SKILL.md +12 -0
  231. package/.agent-src/skills/blade-ui/SKILL.md +12 -0
  232. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +12 -0
  233. package/.agent-src/skills/bug-analyzer/SKILL.md +14 -2
  234. package/.agent-src/skills/build-buy-partner/SKILL.md +12 -0
  235. package/.agent-src/skills/canvas-design/SKILL.md +12 -0
  236. package/.agent-src/skills/character-consistency/SKILL.md +23 -11
  237. package/.agent-src/skills/check-refs/SKILL.md +12 -0
  238. package/.agent-src/skills/churn-prevention/SKILL.md +12 -0
  239. package/.agent-src/skills/code-refactoring/SKILL.md +16 -4
  240. package/.agent-src/skills/code-review/SKILL.md +12 -0
  241. package/.agent-src/skills/command-routing/SKILL.md +12 -0
  242. package/.agent-src/skills/command-writing/SKILL.md +14 -2
  243. package/.agent-src/skills/comp-banding/SKILL.md +12 -0
  244. package/.agent-src/skills/competitive-moat-analysis/SKILL.md +12 -2
  245. package/.agent-src/skills/competitive-positioning/SKILL.md +12 -2
  246. package/.agent-src/skills/composer-packages/SKILL.md +12 -0
  247. package/.agent-src/skills/compress-memory/SKILL.md +12 -0
  248. package/.agent-src/skills/content-funnel-design/SKILL.md +12 -2
  249. package/.agent-src/skills/context-authoring/SKILL.md +18 -6
  250. package/.agent-src/skills/context-document/SKILL.md +17 -5
  251. package/.agent-src/skills/contracts-cognition/SKILL.md +12 -2
  252. package/.agent-src/skills/conventional-commits-writing/SKILL.md +12 -0
  253. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +13 -1
  254. package/.agent-src/skills/copilot-config/SKILL.md +12 -0
  255. package/.agent-src/skills/customer-research/SKILL.md +12 -0
  256. package/.agent-src/skills/dashboard-design/SKILL.md +12 -0
  257. package/.agent-src/skills/data-flow-mapper/SKILL.md +12 -0
  258. package/.agent-src/skills/data-handling-judgment/SKILL.md +12 -2
  259. package/.agent-src/skills/database/SKILL.md +14 -2
  260. package/.agent-src/skills/dcf-modeling/SKILL.md +12 -2
  261. package/.agent-src/skills/deal-qualification-meddic/SKILL.md +12 -2
  262. package/.agent-src/skills/decision-record/SKILL.md +12 -0
  263. package/.agent-src/skills/deep-reading-analyst/SKILL.md +12 -0
  264. package/.agent-src/skills/defense-in-depth/SKILL.md +13 -1
  265. package/.agent-src/skills/dependency-upgrade/SKILL.md +12 -0
  266. package/.agent-src/skills/description-assist/SKILL.md +12 -0
  267. package/.agent-src/skills/design-review/SKILL.md +12 -0
  268. package/.agent-src/skills/devcontainer/SKILL.md +12 -0
  269. package/.agent-src/skills/developer-like-execution/SKILL.md +12 -0
  270. package/.agent-src/skills/discovery-interview/SKILL.md +12 -2
  271. package/.agent-src/skills/doc-coauthoring/SKILL.md +12 -0
  272. package/.agent-src/skills/docker/SKILL.md +12 -0
  273. package/.agent-src/skills/editorial-calendar/SKILL.md +12 -2
  274. package/.agent-src/skills/eloquent/SKILL.md +12 -0
  275. package/.agent-src/skills/eloquent/evals/triggers.json +1 -1
  276. package/.agent-src/skills/error-handling-patterns/SKILL.md +13 -1
  277. package/.agent-src/skills/estimate-ticket/SKILL.md +12 -0
  278. package/.agent-src/skills/existing-ui-audit/SKILL.md +12 -0
  279. package/.agent-src/skills/expansion-playbook/SKILL.md +12 -0
  280. package/.agent-src/skills/fe-design/SKILL.md +12 -0
  281. package/.agent-src/skills/feature-planning/SKILL.md +12 -0
  282. package/.agent-src/skills/file-editor/SKILL.md +12 -0
  283. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +12 -0
  284. package/.agent-src/skills/flux/SKILL.md +12 -0
  285. package/.agent-src/skills/forecast-accuracy/SKILL.md +12 -2
  286. package/.agent-src/skills/forecasting/SKILL.md +12 -2
  287. package/.agent-src/skills/form-handler/SKILL.md +12 -0
  288. package/.agent-src/skills/fundraising-narrative/SKILL.md +12 -2
  289. package/.agent-src/skills/funnel-analysis/SKILL.md +12 -0
  290. package/.agent-src/skills/git-workflow/SKILL.md +12 -0
  291. package/.agent-src/skills/github-ci/SKILL.md +12 -0
  292. package/.agent-src/skills/grafana/SKILL.md +12 -0
  293. package/.agent-src/skills/gtm-launch/SKILL.md +12 -2
  294. package/.agent-src/skills/guideline-writing/SKILL.md +12 -0
  295. package/.agent-src/skills/hiring-loop-design/SKILL.md +12 -0
  296. package/.agent-src/skills/incident-commander/SKILL.md +12 -2
  297. package/.agent-src/skills/jira-integration/SKILL.md +12 -0
  298. package/.agent-src/skills/jobs-events/SKILL.md +12 -0
  299. package/.agent-src/skills/judge-bug-hunter/SKILL.md +12 -0
  300. package/.agent-src/skills/judge-code-quality/SKILL.md +12 -0
  301. package/.agent-src/skills/judge-security-auditor/SKILL.md +12 -0
  302. package/.agent-src/skills/judge-test-coverage/SKILL.md +12 -0
  303. package/.agent-src/skills/laravel/SKILL.md +12 -0
  304. package/.agent-src/skills/laravel-api-endpoint/SKILL.md +15 -3
  305. package/.agent-src/skills/laravel-dto/SKILL.md +14 -2
  306. package/.agent-src/skills/laravel-horizon/SKILL.md +12 -0
  307. package/.agent-src/skills/laravel-mail/SKILL.md +12 -0
  308. package/.agent-src/skills/laravel-middleware/SKILL.md +12 -0
  309. package/.agent-src/skills/laravel-migration/SKILL.md +12 -0
  310. package/.agent-src/skills/laravel-notifications/SKILL.md +12 -0
  311. package/.agent-src/skills/laravel-pennant/SKILL.md +12 -0
  312. package/.agent-src/skills/laravel-pulse/SKILL.md +12 -0
  313. package/.agent-src/skills/laravel-reverb/SKILL.md +12 -0
  314. package/.agent-src/skills/laravel-scheduling/SKILL.md +12 -0
  315. package/.agent-src/skills/laravel-validation/SKILL.md +12 -0
  316. package/.agent-src/skills/laravel-websocket/SKILL.md +12 -0
  317. package/.agent-src/skills/launch-readiness/SKILL.md +12 -2
  318. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +15 -3
  319. package/.agent-src/skills/lint-skills/SKILL.md +12 -0
  320. package/.agent-src/skills/livewire/SKILL.md +12 -0
  321. package/.agent-src/skills/livewire-architect/SKILL.md +12 -0
  322. package/.agent-src/skills/logging-monitoring/SKILL.md +12 -0
  323. package/.agent-src/skills/market-entry-analysis/SKILL.md +12 -0
  324. package/.agent-src/skills/markitdown/SKILL.md +14 -2
  325. package/.agent-src/skills/mcp/SKILL.md +12 -0
  326. package/.agent-src/skills/mcp-builder/SKILL.md +14 -2
  327. package/.agent-src/skills/md-language-check/SKILL.md +13 -1
  328. package/.agent-src/skills/memory-consolidation/SKILL.md +12 -0
  329. package/.agent-src/skills/merge-conflicts/SKILL.md +12 -0
  330. package/.agent-src/skills/messaging-architecture/SKILL.md +12 -2
  331. package/.agent-src/skills/migration-architect/SKILL.md +12 -0
  332. package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +12 -0
  333. package/.agent-src/skills/module-management/SKILL.md +12 -0
  334. package/.agent-src/skills/motion-choreographer/SKILL.md +16 -4
  335. package/.agent-src/skills/multi-tenancy/SKILL.md +14 -2
  336. package/.agent-src/skills/nextjs-patterns/SKILL.md +12 -0
  337. package/.agent-src/skills/okr-tree-modeling/SKILL.md +12 -2
  338. package/.agent-src/skills/onboarding-design/SKILL.md +12 -0
  339. package/.agent-src/skills/onboarding-program/SKILL.md +12 -0
  340. package/.agent-src/skills/one-on-one-cadence/SKILL.md +12 -0
  341. package/.agent-src/skills/openapi/SKILL.md +13 -1
  342. package/.agent-src/skills/org-design/SKILL.md +12 -0
  343. package/.agent-src/skills/override-management/SKILL.md +12 -0
  344. package/.agent-src/skills/perf-feedback-craft/SKILL.md +12 -0
  345. package/.agent-src/skills/performance/SKILL.md +12 -0
  346. package/.agent-src/skills/performance-analysis/SKILL.md +12 -0
  347. package/.agent-src/skills/persona-writing/SKILL.md +12 -0
  348. package/.agent-src/skills/pest-testing/SKILL.md +12 -0
  349. package/.agent-src/skills/php-coder/SKILL.md +12 -0
  350. package/.agent-src/skills/php-debugging/SKILL.md +12 -0
  351. package/.agent-src/skills/php-service/SKILL.md +12 -0
  352. package/.agent-src/skills/pipeline-strategy/SKILL.md +12 -2
  353. package/.agent-src/skills/pixar-storyteller/SKILL.md +17 -5
  354. package/.agent-src/skills/playwright-architect/SKILL.md +12 -2
  355. package/.agent-src/skills/playwright-testing/SKILL.md +12 -0
  356. package/.agent-src/skills/po-discovery/SKILL.md +12 -0
  357. package/.agent-src/skills/positioning-strategy/SKILL.md +12 -0
  358. package/.agent-src/skills/privacy-review/SKILL.md +12 -2
  359. package/.agent-src/skills/project-analysis-core/SKILL.md +12 -0
  360. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +12 -0
  361. package/.agent-src/skills/project-analysis-laravel/SKILL.md +12 -0
  362. package/.agent-src/skills/project-analysis-nextjs/SKILL.md +12 -0
  363. package/.agent-src/skills/project-analysis-node-express/SKILL.md +12 -0
  364. package/.agent-src/skills/project-analysis-react/SKILL.md +12 -0
  365. package/.agent-src/skills/project-analysis-symfony/SKILL.md +12 -0
  366. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +12 -0
  367. package/.agent-src/skills/project-analyzer/SKILL.md +30 -18
  368. package/.agent-src/skills/project-docs/SKILL.md +25 -13
  369. package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +13 -1
  370. package/.agent-src/skills/prompt-optimizer/SKILL.md +13 -1
  371. package/.agent-src/skills/quality-tools/SKILL.md +12 -2
  372. package/.agent-src/skills/react-native-setup/SKILL.md +12 -0
  373. package/.agent-src/skills/react-shadcn-ui/SKILL.md +12 -0
  374. package/.agent-src/skills/readme-reviewer/SKILL.md +12 -0
  375. package/.agent-src/skills/readme-writing/SKILL.md +12 -0
  376. package/.agent-src/skills/readme-writing-package/SKILL.md +12 -0
  377. package/.agent-src/skills/receiving-code-review/SKILL.md +12 -0
  378. package/.agent-src/skills/refine-prompt/SKILL.md +13 -1
  379. package/.agent-src/skills/refine-ticket/SKILL.md +14 -2
  380. package/.agent-src/skills/refine-ticket/detection-map.yml +2 -2
  381. package/.agent-src/skills/release-comms/SKILL.md +12 -2
  382. package/.agent-src/skills/repomix-packer/SKILL.md +13 -1
  383. package/.agent-src/skills/requesting-code-review/SKILL.md +12 -0
  384. package/.agent-src/skills/retention-loops/SKILL.md +12 -0
  385. package/.agent-src/skills/review-routing/SKILL.md +12 -0
  386. package/.agent-src/skills/rice-prioritization/SKILL.md +12 -0
  387. package/.agent-src/skills/risk-officer/SKILL.md +12 -0
  388. package/.agent-src/skills/roadmap-management/SKILL.md +12 -0
  389. package/.agent-src/skills/roadmap-writing/SKILL.md +12 -0
  390. package/.agent-src/skills/rtk-output-filtering/SKILL.md +12 -0
  391. package/.agent-src/skills/rule-refactor/SKILL.md +15 -3
  392. package/.agent-src/skills/rule-writing/SKILL.md +13 -1
  393. package/.agent-src/skills/runway-cognition/SKILL.md +12 -2
  394. package/.agent-src/skills/scenario-modeling/SKILL.md +12 -2
  395. package/.agent-src/skills/scene-expander/SKILL.md +18 -6
  396. package/.agent-src/skills/script-writing/SKILL.md +13 -1
  397. package/.agent-src/skills/secrets-management/SKILL.md +13 -3
  398. package/.agent-src/skills/security/SKILL.md +12 -0
  399. package/.agent-src/skills/security-audit/SKILL.md +12 -0
  400. package/.agent-src/skills/sentry-integration/SKILL.md +12 -0
  401. package/.agent-src/skills/sequential-thinking/SKILL.md +12 -0
  402. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +12 -0
  403. package/.agent-src/skills/skill-management/SKILL.md +12 -0
  404. package/.agent-src/skills/skill-reviewer/SKILL.md +12 -0
  405. package/.agent-src/skills/skill-writing/SKILL.md +12 -0
  406. package/.agent-src/skills/sql-writing/SKILL.md +12 -0
  407. package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +12 -0
  408. package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -1
  409. package/.agent-src/skills/symfony-workflow/SKILL.md +12 -0
  410. package/.agent-src/skills/systematic-debugging/SKILL.md +12 -0
  411. package/.agent-src/skills/tailwind-engineer/SKILL.md +12 -0
  412. package/.agent-src/skills/tech-debt-tracker/SKILL.md +12 -2
  413. package/.agent-src/skills/technical-specification/SKILL.md +12 -0
  414. package/.agent-src/skills/terraform/SKILL.md +12 -0
  415. package/.agent-src/skills/terragrunt/SKILL.md +12 -0
  416. package/.agent-src/skills/test-driven-development/SKILL.md +12 -0
  417. package/.agent-src/skills/test-performance/SKILL.md +13 -1
  418. package/.agent-src/skills/testing-anti-patterns/SKILL.md +13 -1
  419. package/.agent-src/skills/threat-modeling/SKILL.md +12 -0
  420. package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +12 -0
  421. package/.agent-src/skills/token-optimizer/SKILL.md +12 -0
  422. package/.agent-src/skills/traefik/SKILL.md +12 -0
  423. package/.agent-src/skills/ui-component-architect/SKILL.md +12 -0
  424. package/.agent-src/skills/unit-economics-modeling/SKILL.md +12 -2
  425. package/.agent-src/skills/universal-project-analysis/SKILL.md +12 -0
  426. package/.agent-src/skills/upstream-contribute/SKILL.md +12 -0
  427. package/.agent-src/skills/using-git-worktrees/SKILL.md +12 -0
  428. package/.agent-src/skills/validate-feature-fit/SKILL.md +12 -0
  429. package/.agent-src/skills/verify-completion-evidence/SKILL.md +12 -0
  430. package/.agent-src/skills/video-director/SKILL.md +18 -6
  431. package/.agent-src/skills/vision-articulation/SKILL.md +12 -0
  432. package/.agent-src/skills/voc-extract/SKILL.md +12 -2
  433. package/.agent-src/skills/voice-and-tone-design/SKILL.md +12 -2
  434. package/.agent-src/templates/agent-settings.md +5 -5
  435. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  436. package/.agent-src/templates/agents/memory/ownership.example.yml +1 -1
  437. package/.agent-src/templates/agents/proposal.example.md +12 -0
  438. package/.agent-src/templates/command.md +1 -1
  439. package/.agent-src/templates/contexts/auth-model.md +2 -2
  440. package/.agent-src/templates/contexts/data-sensitivity.md +3 -3
  441. package/.agent-src/templates/contexts/deployment-order.md +2 -2
  442. package/.agent-src/templates/contexts/observability.md +3 -3
  443. package/.agent-src/templates/contexts/tenant-boundaries.md +3 -3
  444. package/.agent-src/templates/contexts.md +1 -1
  445. package/.agent-src/templates/rule.md +1 -1
  446. package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +3 -3
  447. package/.agent-src/templates/scripts/work_engine/cli.py +6 -6
  448. package/.agent-src/templates/scripts/work_engine/emitters.py +29 -4
  449. package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +3 -3
  450. package/.agent-src/templates/scripts/work_engine/state.py +53 -0
  451. package/.agent-src/templates/skill-archive-note.md +4 -4
  452. package/.claude-plugin/marketplace.json +1 -2
  453. package/AGENTS.md +5 -4
  454. package/CHANGELOG.md +170 -90
  455. package/CONTRIBUTING.md +61 -0
  456. package/README.md +23 -20
  457. package/config/agent-settings.template.yml +11 -1
  458. package/config/discovery/packs.yml +142 -0
  459. package/config/discovery/unassigned-artefacts.yml +66 -0
  460. package/config/discovery/workspaces.yml +59 -0
  461. package/config/gitignore-block.txt +17 -20
  462. package/dist/cli/agent-config.js +199 -0
  463. package/dist/cli/agent-config.js.map +1 -0
  464. package/dist/cli/bash/runBash.js +40 -0
  465. package/dist/cli/bash/runBash.js.map +1 -0
  466. package/dist/cli/commands/doctorShell.js +91 -0
  467. package/dist/cli/commands/doctorShell.js.map +1 -0
  468. package/dist/cli/commands/packs.js +59 -0
  469. package/dist/cli/commands/packs.js.map +1 -0
  470. package/dist/cli/commands/settings.js +35 -0
  471. package/dist/cli/commands/settings.js.map +1 -0
  472. package/dist/cli/commands/uiServe.js +110 -0
  473. package/dist/cli/commands/uiServe.js.map +1 -0
  474. package/dist/cli/commands/versions.js +64 -0
  475. package/dist/cli/commands/versions.js.map +1 -0
  476. package/dist/cli/commands/workspaces.js +58 -0
  477. package/dist/cli/commands/workspaces.js.map +1 -0
  478. package/dist/cli/discovery/loadManifest.js +62 -0
  479. package/dist/cli/discovery/loadManifest.js.map +1 -0
  480. package/dist/cli/log/logger.js +41 -0
  481. package/dist/cli/log/logger.js.map +1 -0
  482. package/dist/cli/paths.js +60 -0
  483. package/dist/cli/paths.js.map +1 -0
  484. package/dist/cli/python/resolvePython.js +38 -0
  485. package/dist/cli/python/resolvePython.js.map +1 -0
  486. package/dist/cli/registry.js +75 -0
  487. package/dist/cli/registry.js.map +1 -0
  488. package/dist/discovery/discovery-manifest.json +9195 -0
  489. package/dist/discovery/discovery-manifest.json.sha256 +1 -0
  490. package/dist/discovery/discovery-manifest.summary.md +93 -0
  491. package/dist/mcp/awesome-mcp-servers.row.md +1 -0
  492. package/dist/mcp/mcp-cloudflare-catalogue.json +27 -0
  493. package/dist/mcp/registry-manifest.json +63 -0
  494. package/dist/server/app.js +117 -0
  495. package/dist/server/app.js.map +1 -0
  496. package/dist/server/io/atomicMultiWrite.js +202 -0
  497. package/dist/server/io/atomicMultiWrite.js.map +1 -0
  498. package/dist/server/io/atomicWrite.js +79 -0
  499. package/dist/server/io/atomicWrite.js.map +1 -0
  500. package/dist/server/io/substituteTemplate.js +87 -0
  501. package/dist/server/io/substituteTemplate.js.map +1 -0
  502. package/dist/server/io/yamlIO.js +140 -0
  503. package/dist/server/io/yamlIO.js.map +1 -0
  504. package/dist/server/port.js +97 -0
  505. package/dist/server/port.js.map +1 -0
  506. package/dist/server/routes/discovery.js +72 -0
  507. package/dist/server/routes/discovery.js.map +1 -0
  508. package/dist/server/routes/ping.js +49 -0
  509. package/dist/server/routes/ping.js.map +1 -0
  510. package/dist/server/routes/schema.js +41 -0
  511. package/dist/server/routes/schema.js.map +1 -0
  512. package/dist/server/routes/settings.js +155 -0
  513. package/dist/server/routes/settings.js.map +1 -0
  514. package/dist/server/routes/userMd.js +117 -0
  515. package/dist/server/routes/userMd.js.map +1 -0
  516. package/dist/server/routes/wizard.js +138 -0
  517. package/dist/server/routes/wizard.js.map +1 -0
  518. package/dist/server/schemas/settings.js +138 -0
  519. package/dist/server/schemas/settings.js.map +1 -0
  520. package/dist/server/token.js +68 -0
  521. package/dist/server/token.js.map +1 -0
  522. package/dist/server/writeRoot.js +67 -0
  523. package/dist/server/writeRoot.js.map +1 -0
  524. package/dist/server/writeRoot.test.js +73 -0
  525. package/dist/server/writeRoot.test.js.map +1 -0
  526. package/dist/shared/userMd/formAdapter.js +105 -0
  527. package/dist/shared/userMd/formAdapter.js.map +1 -0
  528. package/dist/shared/userMd/schema.js +118 -0
  529. package/dist/shared/userMd/schema.js.map +1 -0
  530. package/dist/shared/userMd/utils.js +74 -0
  531. package/dist/shared/userMd/utils.js.map +1 -0
  532. package/dist/ui/assets/index-BTRcKDlB.js +39 -0
  533. package/dist/ui/assets/index-BTRcKDlB.js.map +1 -0
  534. package/dist/ui/assets/index-Dqfhmg-d.css +1 -0
  535. package/dist/ui/index.html +14 -0
  536. package/docs/adrs/caveman/0001-default-off-until-bench.md +2 -2
  537. package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
  538. package/docs/adrs/schema/0001-json-schema-frontmatter.md +4 -4
  539. package/docs/adrs/schema/README.md +1 -1
  540. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +2 -2
  541. package/docs/architecture/setup-vs-settings-shared-surface.md +114 -0
  542. package/docs/architecture.md +2 -1
  543. package/docs/archive/CHANGELOG-pre-2.2.0.md +7 -7
  544. package/docs/archive/CHANGELOG-pre-3.0.0.md +130 -0
  545. package/docs/catalog.md +66 -78
  546. package/docs/contracts/STABILITY.md +1 -1
  547. package/docs/contracts/adr-architectural-consensus-mechanism.md +5 -5
  548. package/docs/contracts/adr-chat-history-split.md +1 -1
  549. package/docs/contracts/adr-implement-ticket-runtime.md +1 -1
  550. package/docs/contracts/adr-install-user-type-axis.md +1 -1
  551. package/docs/contracts/adr-mcp-runtime.md +2 -2
  552. package/docs/contracts/agent-user-schema.md +11 -2
  553. package/docs/contracts/ai-council-config.md +13 -13
  554. package/docs/contracts/audit-log-v1.md +2 -2
  555. package/docs/contracts/command-clusters.md +2 -2
  556. package/docs/contracts/compression-default-kill-criterion.md +3 -3
  557. package/docs/contracts/decision-trace-v1.md +5 -5
  558. package/docs/contracts/discovery-manifest.schema.json +146 -0
  559. package/docs/contracts/explain-trace.schema.json +144 -0
  560. package/docs/contracts/file-ownership-matrix.json +117 -341
  561. package/docs/contracts/file-ownership-matrix.md +1 -1
  562. package/docs/contracts/ghostwriter-schema.md +3 -3
  563. package/docs/contracts/hook-architecture-v1.md +10 -10
  564. package/docs/contracts/kernel-membership.md +4 -4
  565. package/docs/contracts/linter-structural-model.md +3 -3
  566. package/docs/contracts/load-context-schema.md +5 -5
  567. package/docs/contracts/local-server-api.md +134 -0
  568. package/docs/contracts/low-impact-corpus-format.md +1 -1
  569. package/docs/contracts/mcp-cloud-scope.md +2 -2
  570. package/docs/contracts/mcp-discovery-phase-notice.md +1 -1
  571. package/docs/contracts/mcp-phase-1-scope.md +5 -4
  572. package/docs/contracts/mcp-registry-manifest.schema.json +129 -0
  573. package/docs/contracts/mcp-tool-stub-envelope.md +1 -1
  574. package/docs/contracts/memory-visibility-v1.md +2 -2
  575. package/docs/contracts/multi-tool-projection-fidelity.md +3 -3
  576. package/docs/contracts/namespace.md +1 -1
  577. package/docs/contracts/one-off-script-lifecycle.md +1 -1
  578. package/docs/contracts/package-self-orientation.md +1 -1
  579. package/docs/contracts/provider-lifecycle.md +2 -2
  580. package/docs/contracts/router-blending.md +1 -1
  581. package/docs/contracts/rule-classification.md +2 -2
  582. package/docs/contracts/settings-api.md +160 -0
  583. package/docs/contracts/settings-gui-agent-mode.schema.json +128 -0
  584. package/docs/contracts/tier-3-contrib-plugin.md +1 -1
  585. package/docs/contracts/universal-skills.md +1 -1
  586. package/docs/contracts/write-engine.md +1 -1
  587. package/docs/customization.md +137 -11
  588. package/docs/decisions/ADR-001-kernel-swap-deferred.md +1 -1
  589. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +1 -1
  590. package/docs/decisions/ADR-004-rule-governance-pruning.md +8 -8
  591. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +5 -5
  592. package/docs/decisions/ADR-007-agent-discovery-scopes.md +4 -4
  593. package/docs/decisions/ADR-008-installed-tools-manifest.md +2 -2
  594. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +2 -2
  595. package/docs/decisions/ADR-011-domain-pack-readiness.md +4 -4
  596. package/docs/decisions/ADR-012-typescript-cli-shell.md +162 -0
  597. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +210 -0
  598. package/docs/decisions/ADR-014-gui-framework-choice.md +136 -0
  599. package/docs/decisions/ADR-rule-kernel-and-router.md +2 -2
  600. package/docs/decisions/INDEX.md +3 -0
  601. package/docs/distribution/mcp-submission-checklist.md +95 -0
  602. package/docs/distribution/topics-equivalents-decay-policy.md +51 -0
  603. package/docs/examples/agent-user.example.md +3 -1
  604. package/docs/getting-started.md +5 -4
  605. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
  606. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +10 -1
  607. package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
  608. package/docs/guidelines/agent-infra/tool-integration.md +1 -1
  609. package/docs/guidelines/php/api-design.md +1 -1
  610. package/docs/guidelines/prompt-templates.md +2 -2
  611. package/docs/hook-payload-capture.md +3 -3
  612. package/docs/installation.md +12 -4
  613. package/docs/migrations/commands-1.15.0.md +3 -3
  614. package/docs/parity/bench-ruflo.json +1 -1
  615. package/docs/parity/ruflo.md +3 -3
  616. package/docs/profiles.md +1 -1
  617. package/docs/quality.md +2 -2
  618. package/docs/recruits/_template.md +3 -3
  619. package/docs/setup/enterprise-and-offline.md +3 -3
  620. package/docs/setup/mcp-server-docker.md +5 -3
  621. package/docs/skills-catalog.md +62 -18
  622. package/docs/wizard.md +121 -0
  623. package/llms.txt +61 -17
  624. package/package.json +46 -3
  625. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  626. package/scripts/_archive/README.md +2 -2
  627. package/scripts/_archive/_p4_migrate.py +1 -1
  628. package/scripts/_cli/cmd_doctor.py +5 -5
  629. package/scripts/_cli/cmd_explain.py +106 -2
  630. package/scripts/_cli/cmd_migrate.py +2 -2
  631. package/scripts/_cli/explain_last/__init__.py +122 -0
  632. package/scripts/_cli/explain_last/assumptions.py +59 -0
  633. package/scripts/_cli/explain_last/council.py +105 -0
  634. package/scripts/_cli/explain_last/halt.py +44 -0
  635. package/scripts/_cli/explain_last/inputs.py +125 -0
  636. package/scripts/_cli/explain_last/memory.py +94 -0
  637. package/scripts/_cli/explain_last/provider.py +52 -0
  638. package/scripts/_cli/explain_last/render.py +52 -0
  639. package/scripts/_cli/explain_last/route.py +58 -0
  640. package/scripts/_cli/explain_last/scrubber.py +105 -0
  641. package/scripts/_cli/explain_last/sections/__init__.py +35 -0
  642. package/scripts/_cli/explain_last/sections/assumptions.py +21 -0
  643. package/scripts/_cli/explain_last/sections/council.py +27 -0
  644. package/scripts/_cli/explain_last/sections/halt.py +31 -0
  645. package/scripts/_cli/explain_last/sections/header.py +24 -0
  646. package/scripts/_cli/explain_last/sections/inputs.py +27 -0
  647. package/scripts/_cli/explain_last/sections/memory.py +21 -0
  648. package/scripts/_cli/explain_last/sections/pack.py +16 -0
  649. package/scripts/_cli/explain_last/sections/provider.py +26 -0
  650. package/scripts/_cli/explain_last/sections/route.py +22 -0
  651. package/scripts/_cli/explain_last/state_loader.py +76 -0
  652. package/scripts/_dispatch.bash +954 -0
  653. package/scripts/_lib/agent_settings.py +3 -3
  654. package/scripts/_lib/agents_overlay.py +3 -3
  655. package/scripts/_phase4_bucket.py +210 -0
  656. package/scripts/agent-config +35 -943
  657. package/scripts/ai-video/adapters/higgsfield.sh +1 -1
  658. package/scripts/ai-video/adapters/sora.sh +1 -1
  659. package/scripts/ai-video/test-pipeline.sh +2 -2
  660. package/scripts/ai_council/_default_prices.py +5 -5
  661. package/scripts/ai_council/advisors.py +1 -1
  662. package/scripts/ai_council/clients.py +2 -2
  663. package/scripts/ai_council/compile_corpus.py +9 -8
  664. package/scripts/ai_council/config.py +3 -3
  665. package/scripts/ai_council/events_log.py +8 -4
  666. package/scripts/ai_council/low_impact_corpus.py +1 -1
  667. package/scripts/ai_council/low_impact_intake.py +1 -1
  668. package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +2 -2
  669. package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +1 -1
  670. package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +3 -3
  671. package/scripts/ai_council/pricing.py +8 -7
  672. package/scripts/ai_council/probation_gate.py +1 -1
  673. package/scripts/ai_council/redact_low_impact_entry.py +1 -1
  674. package/scripts/ai_council/session.py +13 -13
  675. package/scripts/ai_council/shadow_dispatch.py +2 -2
  676. package/scripts/annotate_discovery.py +149 -0
  677. package/scripts/audit_adr_coverage.py +1 -1
  678. package/scripts/audit_auto_rules.py +2 -2
  679. package/scripts/audit_cloud_compatibility.py +1 -1
  680. package/scripts/audit_command_surface.py +2 -2
  681. package/scripts/audit_likelihood.py +4 -4
  682. package/scripts/audit_overlap.py +3 -3
  683. package/scripts/audit_user_type_axis.py +1 -1
  684. package/scripts/build_discovery_manifest.py +302 -0
  685. package/scripts/build_mcp_registry_manifest.py +181 -0
  686. package/scripts/build_rule_trigger_matrix.py +2 -2
  687. package/scripts/capture_showcase_session.py +1 -1
  688. package/scripts/chat_history.py +5 -5
  689. package/scripts/check_always_budget.py +7 -2
  690. package/scripts/check_council_layout.py +26 -20
  691. package/scripts/check_council_references.py +10 -10
  692. package/scripts/check_discovery_determinism.py +70 -0
  693. package/scripts/check_kernel_rule_bundle.py +2 -2
  694. package/scripts/check_no_roadmap_refs.py +2 -2
  695. package/scripts/check_one_off_location.py +1 -1
  696. package/scripts/check_public_links.py +2 -2
  697. package/scripts/check_references.py +14 -21
  698. package/scripts/check_release_includes_discovery.py +61 -0
  699. package/scripts/ci_summary.py +2 -2
  700. package/scripts/ci_time_ratio.py +1 -1
  701. package/scripts/command_suggester/__init__.py +1 -1
  702. package/scripts/context_hygiene_hook.py +2 -2
  703. package/scripts/council_cli.py +22 -22
  704. package/scripts/council_prune.py +3 -3
  705. package/scripts/extract_audit_patterns.py +2 -2
  706. package/scripts/gen_discovery_baseline.py +127 -0
  707. package/scripts/generate_ownership_matrix.py +1 -1
  708. package/scripts/hook_manifest.yaml +5 -5
  709. package/scripts/hooks/cline-dispatcher.sh +1 -1
  710. package/scripts/hooks/cowork-dispatcher.sh +1 -1
  711. package/scripts/hooks/dispatch_hook.py +3 -3
  712. package/scripts/hooks/gemini-dispatcher.sh +1 -1
  713. package/scripts/hooks/replay_hook.py +1 -1
  714. package/scripts/hooks/state_io.py +5 -5
  715. package/scripts/hooks_doctor.py +4 -4
  716. package/scripts/install-hooks.sh +2 -2
  717. package/scripts/install.py +3 -3
  718. package/scripts/install.sh +120 -18
  719. package/scripts/inventory_frontmatter.py +1 -1
  720. package/scripts/lint_agents_layout.py +103 -0
  721. package/scripts/lint_archived_skills.py +3 -3
  722. package/scripts/lint_artefact_frontmatter.py +180 -0
  723. package/scripts/lint_discovery_manifest.py +136 -0
  724. package/scripts/lint_discovery_vocabulary.py +148 -0
  725. package/scripts/lint_explain_trace.py +80 -0
  726. package/scripts/lint_framework_leakage_allowlist.json +63 -62
  727. package/scripts/lint_ghostwriter_source.py +1 -1
  728. package/scripts/lint_load_context.py +3 -3
  729. package/scripts/lint_mcp_registry_manifest.py +69 -0
  730. package/scripts/lint_media_policy_linkage.py +6 -6
  731. package/scripts/lint_positioning.py +143 -0
  732. package/scripts/lint_rule_tiers.py +2 -2
  733. package/scripts/lint_skill_tools.py +1 -1
  734. package/scripts/lint_topics_yaml.py +89 -0
  735. package/scripts/mcp_server/consumer_tool_catalog.json +3 -3
  736. package/scripts/mcp_server/telemetry.py +2 -2
  737. package/scripts/mcp_server/tools.py +27 -11
  738. package/scripts/mcp_telemetry_health.py +2 -2
  739. package/scripts/mcp_telemetry_store.py +1 -1
  740. package/scripts/measure_augment_budget.py +3 -3
  741. package/scripts/measure_density.py +2 -2
  742. package/scripts/measure_frugality_savings.py +3 -3
  743. package/scripts/measure_roadmap_trajectory.py +1 -1
  744. package/scripts/measure_rule_budget.py +3 -3
  745. package/scripts/memory_report.py +1 -1
  746. package/scripts/migrate_command_suggestions.py +3 -3
  747. package/scripts/minimal_safe_diff_hook.py +1 -1
  748. package/scripts/onboarding_gate_hook.py +4 -4
  749. package/scripts/prepack-check.mjs +62 -0
  750. package/scripts/probe_projection_fidelity.py +2 -2
  751. package/scripts/refine_ticket_detect.py +1 -1
  752. package/scripts/schemas/command.schema.json +41 -1
  753. package/scripts/schemas/persona.schema.json +1 -1
  754. package/scripts/schemas/rule.schema.json +44 -4
  755. package/scripts/schemas/skill.schema.json +41 -1
  756. package/scripts/score_skill_selection.py +1 -1
  757. package/scripts/skill_collision_clusters.py +1 -1
  758. package/scripts/skill_linter.py +2 -2
  759. package/scripts/skill_overlap.py +1 -1
  760. package/scripts/skill_tools/run_block_d_eval.py +1 -1
  761. package/scripts/skill_usage_collect.py +3 -3
  762. package/scripts/skill_usage_report.py +3 -3
  763. package/scripts/smoke_quickstart.py +1 -1
  764. package/scripts/spotcheck_thin_root.py +1 -1
  765. package/scripts/sync_github_metadata.py +147 -0
  766. package/scripts/sync_gitignore.py +15 -5
  767. package/scripts/update_prices.py +4 -3
  768. package/scripts/verify_before_complete_hook.py +1 -1
  769. package/scripts/verify_roadmap_closure.py +1 -1
  770. package/templates/agent-user.md +35 -0
  771. package/.agent-src/commands/onboard.md +0 -467
@@ -0,0 +1,155 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { zodToJsonSchema } from 'zod-to-json-schema';
4
+ import { settingsSchema } from '../schemas/settings.js';
5
+ import { parseYaml, mergeIntoTemplate, diffValues } from '../io/yamlIO.js';
6
+ import { writeAtomic } from '../io/atomicWrite.js';
7
+ // Computed once — Zod → JSON Schema conversion is pure and the schema is static.
8
+ const SETTINGS_JSON_SCHEMA = zodToJsonSchema(settingsSchema, {
9
+ name: 'AgentSettings',
10
+ $refStrategy: 'none',
11
+ target: 'jsonSchema7',
12
+ });
13
+ const SETTINGS_RELATIVE = '.agent-settings.yml';
14
+ function settingsPath(root) {
15
+ return join(root, SETTINGS_RELATIVE);
16
+ }
17
+ async function readSettingsFrom(root) {
18
+ const path = settingsPath(root);
19
+ let stat;
20
+ let raw;
21
+ try {
22
+ [stat, raw] = await Promise.all([fs.stat(path), fs.readFile(path, 'utf8')]);
23
+ }
24
+ catch (err) {
25
+ if (err.code === 'ENOENT')
26
+ return null;
27
+ throw err;
28
+ }
29
+ const values = parseYaml(raw);
30
+ return { raw, values, mtimeMs: Math.trunc(stat.mtimeMs) };
31
+ }
32
+ /**
33
+ * Read `.agent-settings.yml` from `writeRoot`, falling back to
34
+ * `legacyReadRoot` on ENOENT. A hit on the fallback is what makes the
35
+ * silent-migration story work: the next PUT writes to `writeRoot` and
36
+ * the legacy file is no longer consulted.
37
+ */
38
+ async function readSettings(writeRoot, legacyReadRoot) {
39
+ const primary = await readSettingsFrom(writeRoot);
40
+ if (primary !== null)
41
+ return primary;
42
+ if (legacyReadRoot && legacyReadRoot !== writeRoot) {
43
+ return readSettingsFrom(legacyReadRoot);
44
+ }
45
+ return null;
46
+ }
47
+ function zodIssuesToFields(issues) {
48
+ return issues.map((issue) => ({ path: issue.path.join('.'), message: issue.message }));
49
+ }
50
+ function readIfUnmodified(header) {
51
+ if (typeof header !== 'string')
52
+ return null;
53
+ const n = Number.parseInt(header, 10);
54
+ return Number.isFinite(n) ? n : null;
55
+ }
56
+ export function settingsRoute(opts) {
57
+ const plugin = async (app) => {
58
+ app.get('/api/v1/settings', async (_request, reply) => {
59
+ try {
60
+ const state = await readSettings(opts.writeRoot, opts.legacyReadRoot);
61
+ if (state === null) {
62
+ await reply.code(404).send({ error: { code: 'NOT_FOUND', message: 'settings file missing' } });
63
+ return reply;
64
+ }
65
+ return {
66
+ values: state.values,
67
+ lastModified: state.mtimeMs,
68
+ path: SETTINGS_RELATIVE,
69
+ schema: SETTINGS_JSON_SCHEMA,
70
+ };
71
+ }
72
+ catch (err) {
73
+ const message = err instanceof Error ? err.message : 'YAML parse failed';
74
+ await reply.code(500).send({ error: { code: 'YAML_PARSE', message } });
75
+ return reply;
76
+ }
77
+ });
78
+ app.post('/api/v1/settings/diff', async (request, reply) => {
79
+ const body = (request.body ?? {});
80
+ const parsed = settingsSchema.safeParse(body.values);
81
+ if (!parsed.success) {
82
+ await reply.code(422).send({
83
+ error: { code: 'VALIDATION', message: 'invalid settings', fields: zodIssuesToFields(parsed.error.issues) },
84
+ });
85
+ return reply;
86
+ }
87
+ const current = await readSettings(opts.writeRoot, opts.legacyReadRoot);
88
+ if (current === null) {
89
+ await reply.code(404).send({ error: { code: 'NOT_FOUND', message: 'settings file missing' } });
90
+ return reply;
91
+ }
92
+ const ius = typeof body.ifUnmodifiedSince === 'number' ? body.ifUnmodifiedSince : null;
93
+ if (ius !== null && ius < current.mtimeMs) {
94
+ await reply.code(409).send({
95
+ error: { code: 'CONFLICT', message: 'on-disk file has been modified' },
96
+ current: { values: current.values, lastModified: current.mtimeMs },
97
+ });
98
+ return reply;
99
+ }
100
+ const changes = diffValues(current.values, parsed.data);
101
+ return { changes };
102
+ });
103
+ app.put('/api/v1/settings', async (request, reply) => {
104
+ const ius = readIfUnmodified(request.headers['if-unmodified-since']);
105
+ if (ius === null) {
106
+ await reply.code(412).send({ error: { code: 'PRECONDITION_REQUIRED', message: 'If-Unmodified-Since header required' } });
107
+ return reply;
108
+ }
109
+ const body = (request.body ?? {});
110
+ const parsed = settingsSchema.safeParse(body.values);
111
+ if (!parsed.success) {
112
+ await reply.code(422).send({
113
+ error: { code: 'VALIDATION', message: 'invalid settings', fields: zodIssuesToFields(parsed.error.issues) },
114
+ });
115
+ return reply;
116
+ }
117
+ const current = await readSettings(opts.writeRoot, opts.legacyReadRoot);
118
+ if (current === null) {
119
+ await reply.code(404).send({ error: { code: 'NOT_FOUND', message: 'settings file missing' } });
120
+ return reply;
121
+ }
122
+ if (ius < current.mtimeMs) {
123
+ await reply.code(409).send({
124
+ error: { code: 'CONFLICT', message: 'on-disk file has been modified' },
125
+ current: { values: current.values, lastModified: current.mtimeMs },
126
+ });
127
+ return reply;
128
+ }
129
+ try {
130
+ const merged = mergeIntoTemplate(current.raw, parsed.data);
131
+ if (opts.dryRun === true) {
132
+ // No disk write, no Last-Modified bump — surface the
133
+ // rendered body so the maintainer sees what a real
134
+ // PUT would have written.
135
+ return {
136
+ dryRun: true,
137
+ lastModified: current.mtimeMs,
138
+ preview: { path: SETTINGS_RELATIVE, body: merged },
139
+ };
140
+ }
141
+ const path = settingsPath(opts.writeRoot);
142
+ await writeAtomic(path, merged, { mode: 0o600 });
143
+ const stat = await fs.stat(path);
144
+ return { lastModified: Math.trunc(stat.mtimeMs), writtenPaths: [SETTINGS_RELATIVE] };
145
+ }
146
+ catch (err) {
147
+ const message = err instanceof Error ? err.message : 'atomic write failed';
148
+ await reply.code(500).send({ error: { code: 'ATOMIC_WRITE', message } });
149
+ return reply;
150
+ }
151
+ });
152
+ };
153
+ return plugin;
154
+ }
155
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/server/routes/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { userMdSchema } from '../../shared/userMd/schema.js';
4
+ import { writeAtomic } from '../io/atomicWrite.js';
5
+ import { PACKAGE_ROOT } from '../../cli/paths.js';
6
+ const USER_MD_RELATIVE = '.agent-user.md';
7
+ const DEFAULT_TEMPLATE = join(PACKAGE_ROOT, 'templates', 'agent-user.md');
8
+ function userMdPath(root) {
9
+ return join(root, USER_MD_RELATIVE);
10
+ }
11
+ async function readUserMdFrom(root) {
12
+ const path = userMdPath(root);
13
+ try {
14
+ const [stat, body] = await Promise.all([fs.stat(path), fs.readFile(path, 'utf8')]);
15
+ return { body, mtimeMs: Math.trunc(stat.mtimeMs) };
16
+ }
17
+ catch (err) {
18
+ if (err.code === 'ENOENT')
19
+ return null;
20
+ throw err;
21
+ }
22
+ }
23
+ /**
24
+ * Read `.agent-user.md` from `writeRoot`, falling back to `legacyReadRoot`
25
+ * on ENOENT. Mirrors the settings route — see `readSettings` for the
26
+ * silent-migration rationale.
27
+ */
28
+ async function readUserMd(writeRoot, legacyReadRoot) {
29
+ const primary = await readUserMdFrom(writeRoot);
30
+ if (primary !== null)
31
+ return primary;
32
+ if (legacyReadRoot && legacyReadRoot !== writeRoot) {
33
+ return readUserMdFrom(legacyReadRoot);
34
+ }
35
+ return null;
36
+ }
37
+ function readIfUnmodified(header) {
38
+ if (typeof header !== 'string')
39
+ return null;
40
+ const n = Number.parseInt(header, 10);
41
+ return Number.isFinite(n) ? n : null;
42
+ }
43
+ function zodIssuesToFields(issues) {
44
+ return issues.map((issue) => ({ path: issue.path.join('.'), message: issue.message }));
45
+ }
46
+ export function userMdRoute(opts) {
47
+ const templatePath = opts.templatePath ?? DEFAULT_TEMPLATE;
48
+ const plugin = async (app) => {
49
+ app.get('/api/v1/user-md', async (_request, _reply) => {
50
+ const state = await readUserMd(opts.writeRoot, opts.legacyReadRoot);
51
+ if (state === null) {
52
+ return { body: '', exists: false, lastModified: null };
53
+ }
54
+ return { body: state.body, exists: true, lastModified: state.mtimeMs };
55
+ });
56
+ app.get('/api/v1/user-md/template', async (_request, reply) => {
57
+ try {
58
+ const body = await fs.readFile(templatePath, 'utf8');
59
+ return { body };
60
+ }
61
+ catch (err) {
62
+ if (err.code === 'ENOENT') {
63
+ await reply.code(204).send();
64
+ return reply;
65
+ }
66
+ throw err;
67
+ }
68
+ });
69
+ app.put('/api/v1/user-md', async (request, reply) => {
70
+ const body = (request.body ?? {});
71
+ const parsed = userMdSchema.safeParse(body);
72
+ if (!parsed.success) {
73
+ await reply.code(422).send({
74
+ error: { code: 'VALIDATION', message: 'invalid user-md body', fields: zodIssuesToFields(parsed.error.issues) },
75
+ });
76
+ return reply;
77
+ }
78
+ const ius = readIfUnmodified(request.headers['if-unmodified-since']);
79
+ const current = await readUserMd(opts.writeRoot, opts.legacyReadRoot);
80
+ if (current !== null) {
81
+ if (ius === null) {
82
+ await reply.code(412).send({
83
+ error: { code: 'PRECONDITION_REQUIRED', message: 'If-Unmodified-Since header required for existing file' },
84
+ });
85
+ return reply;
86
+ }
87
+ if (ius < current.mtimeMs) {
88
+ await reply.code(409).send({
89
+ error: { code: 'CONFLICT', message: 'on-disk file has been modified' },
90
+ current: { body: current.body, lastModified: current.mtimeMs },
91
+ });
92
+ return reply;
93
+ }
94
+ }
95
+ try {
96
+ if (opts.dryRun === true) {
97
+ return {
98
+ dryRun: true,
99
+ lastModified: current?.mtimeMs ?? null,
100
+ preview: { path: USER_MD_RELATIVE, body: parsed.data.body },
101
+ };
102
+ }
103
+ const path = userMdPath(opts.writeRoot);
104
+ await writeAtomic(path, parsed.data.body, { mode: 0o600 });
105
+ const stat = await fs.stat(path);
106
+ return { lastModified: Math.trunc(stat.mtimeMs), writtenPaths: [USER_MD_RELATIVE] };
107
+ }
108
+ catch (err) {
109
+ const message = err instanceof Error ? err.message : 'atomic write failed';
110
+ await reply.code(500).send({ error: { code: 'ATOMIC_WRITE', message } });
111
+ return reply;
112
+ }
113
+ });
114
+ };
115
+ return plugin;
116
+ }
117
+ //# sourceMappingURL=userMd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userMd.js","sourceRoot":"","sources":["../../../src/server/routes/userMd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { z } from 'zod';
4
+ import { settingsSchema } from '../schemas/settings.js';
5
+ import { userMdSchema } from '../../shared/userMd/schema.js';
6
+ import { mergeIntoTemplate } from '../io/yamlIO.js';
7
+ import { commitMulti } from '../io/atomicMultiWrite.js';
8
+ import { writeAtomic } from '../io/atomicWrite.js';
9
+ const STATE_REL = join('state', 'wizard-state.json');
10
+ const SETTINGS_REL = '.agent-settings.yml';
11
+ const USER_MD_REL = '.agent-user.md';
12
+ // Step count mirrors the UI's `WIZARD_STEPS` array in `src/ui/wizard/steps.ts`
13
+ // and the chat-side `~/.claude/skills/onboard/SKILL.md`. Bump in lockstep.
14
+ const DEFAULT_TOTAL_STEPS = 7;
15
+ const wizardStateSchema = z.object({
16
+ step: z.number().int().min(0),
17
+ totalSteps: z.number().int().min(1).optional(),
18
+ partial: z.record(z.unknown()).default({}),
19
+ startedAt: z.string().nullable().default(null),
20
+ });
21
+ function statePath(root) {
22
+ return join(root, STATE_REL);
23
+ }
24
+ async function readState(root) {
25
+ try {
26
+ const raw = await fs.readFile(statePath(root), 'utf8');
27
+ const parsed = wizardStateSchema.safeParse(JSON.parse(raw));
28
+ return parsed.success ? parsed.data : null;
29
+ }
30
+ catch (err) {
31
+ if (err.code === 'ENOENT')
32
+ return null;
33
+ return null;
34
+ }
35
+ }
36
+ async function writeState(root, state) {
37
+ const path = statePath(root);
38
+ await fs.mkdir(dirname(path), { recursive: true });
39
+ await writeAtomic(path, JSON.stringify(state, null, 2), { mode: 0o600 });
40
+ }
41
+ async function readTemplate(packageRoot) {
42
+ return fs.readFile(join(packageRoot, 'config', 'agent-settings.template.yml'), 'utf8');
43
+ }
44
+ function zodIssuesToFields(issues) {
45
+ return issues.map((issue) => ({ path: issue.path.join('.'), message: issue.message }));
46
+ }
47
+ export function wizardRoute(opts) {
48
+ const totalSteps = opts.totalSteps ?? DEFAULT_TOTAL_STEPS;
49
+ const dryRun = opts.dryRun === true;
50
+ // Per-process in-memory state for dry-run. One CLI invocation = one
51
+ // server = one Map; cross-session leakage is impossible because each
52
+ // `agent-config setup --dry-run` mints a fresh server. See § Dry-run
53
+ // state contract in the roadmap.
54
+ let memState = null;
55
+ const plugin = async (app) => {
56
+ app.get('/api/v1/wizard/state', async () => {
57
+ // Dry-run: in-memory write wins; fall back to disk so an
58
+ // in-progress real run can be previewed.
59
+ const existing = dryRun ? (memState ?? await readState(opts.writeRoot)) : await readState(opts.writeRoot);
60
+ if (existing === null) {
61
+ return { step: 0, totalSteps, partial: {}, startedAt: null };
62
+ }
63
+ return { ...existing, totalSteps: existing.totalSteps ?? totalSteps };
64
+ });
65
+ app.post('/api/v1/wizard/state', async (request, reply) => {
66
+ const body = (request.body ?? {});
67
+ const parsed = wizardStateSchema.safeParse({
68
+ step: body.step,
69
+ partial: body.partial ?? {},
70
+ totalSteps: body.totalSteps ?? totalSteps,
71
+ startedAt: body.startedAt ?? new Date().toISOString(),
72
+ });
73
+ if (!parsed.success) {
74
+ await reply.code(422).send({
75
+ error: { code: 'VALIDATION', message: 'invalid wizard state', fields: zodIssuesToFields(parsed.error.issues) },
76
+ });
77
+ return reply;
78
+ }
79
+ if (dryRun) {
80
+ memState = parsed.data;
81
+ return { ok: true, dryRun: true };
82
+ }
83
+ await writeState(opts.writeRoot, parsed.data);
84
+ return { ok: true };
85
+ });
86
+ app.post('/api/v1/wizard/finish', async (request, reply) => {
87
+ const body = (request.body ?? {});
88
+ const settingsParsed = settingsSchema.safeParse(body.settings);
89
+ if (!settingsParsed.success) {
90
+ await reply.code(422).send({
91
+ error: { code: 'VALIDATION', message: 'invalid settings', fields: zodIssuesToFields(settingsParsed.error.issues) },
92
+ });
93
+ return reply;
94
+ }
95
+ // Wire shape: `userMd` is a bare string. The schema wraps it
96
+ // as `{ body }` for length + frontmatter checks.
97
+ const userMdParsed = body.userMd === undefined || body.userMd === null
98
+ ? null
99
+ : userMdSchema.safeParse({ body: body.userMd });
100
+ if (userMdParsed && !userMdParsed.success) {
101
+ await reply.code(422).send({
102
+ error: { code: 'VALIDATION', message: 'invalid user-md', fields: zodIssuesToFields(userMdParsed.error.issues) },
103
+ });
104
+ return reply;
105
+ }
106
+ try {
107
+ const template = await readTemplate(opts.packageRoot);
108
+ const settingsBody = mergeIntoTemplate(template, settingsParsed.data);
109
+ const userMdBody = userMdParsed && userMdParsed.success ? userMdParsed.data.body : null;
110
+ if (dryRun) {
111
+ // No disk write; surface the rendered would-be bodies
112
+ // so the maintainer sees the actual diff target.
113
+ return {
114
+ ok: true,
115
+ dryRun: true,
116
+ preview: { settingsYaml: settingsBody, userMd: userMdBody },
117
+ };
118
+ }
119
+ const payloads = [
120
+ { target: join(opts.writeRoot, SETTINGS_REL), contents: settingsBody, mode: 0o600 },
121
+ ];
122
+ if (userMdBody !== null) {
123
+ payloads.push({ target: join(opts.writeRoot, USER_MD_REL), contents: userMdBody, mode: 0o600 });
124
+ }
125
+ const { txnId } = await commitMulti(payloads, { writeRoot: opts.writeRoot });
126
+ await fs.unlink(statePath(opts.writeRoot)).catch(() => undefined);
127
+ return { writtenPaths: payloads.map((p) => p.target), txnId };
128
+ }
129
+ catch (err) {
130
+ const message = err instanceof Error ? err.message : '2PC commit failed';
131
+ await reply.code(500).send({ error: { code: 'TXN_PARTIAL', message } });
132
+ return reply;
133
+ }
134
+ });
135
+ };
136
+ return plugin;
137
+ }
138
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/server/routes/wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Zod schema for `.agent-settings.yml`.
3
+ *
4
+ * Source of truth: `config/agent-settings.template.yml`. Every leaf has a
5
+ * matching template key; the schema↔template parity test
6
+ * (`tests/server/schemas/parity.test.ts`) walks both trees and asserts the
7
+ * Zod schema covers every template path. New template keys without schema
8
+ * additions fail CI.
9
+ *
10
+ * Render strategy: depth ≤ 2. The form renderer (`SchemaForm`, Phase 2)
11
+ * recurses one level into nested objects; deeper trees fail render-time.
12
+ */
13
+ import { z } from 'zod';
14
+ const costProfile = z.enum(['minimal', 'balanced', 'full', 'custom']);
15
+ const enforcementMode = z.enum(['advisory', 'hard-stop']);
16
+ const autonomyMode = z.enum(['on', 'off', 'auto']);
17
+ const userType = z.enum(['', 'consultant', 'creator', 'developer', 'finance', 'founder', 'gtm', 'ops']);
18
+ const accessStyle = z.enum(['getters_setters', 'get_attribute', 'magic_properties']);
19
+ const chatFreq = z.enum(['per_turn', 'per_phase', 'per_tool']);
20
+ const chatOverflow = z.enum(['rotate', 'compress']);
21
+ const qualityCadence = z.enum(['end_of_roadmap', 'per_phase', 'per_step']);
22
+ const regenCadence = z.enum(['per_step', 'every_5_steps', 'phase_boundary']);
23
+ const worktreeMode = z.enum(['off', 'on', 'ask']);
24
+ const replyMethod = z.enum(['replies_endpoint', 'create_review_comment', 'auto']);
25
+ const confidenceBand = z.enum(['off', 'low', 'medium', 'high']);
26
+ const onBlock = z.enum(['stop', 'ask', 'warn']);
27
+ const onBlockFallback = z.enum(['stop', 'warn']);
28
+ export const settingsSchema = z.object({
29
+ agent_config_version: z.string().default('').describe('Pin the package to an exact semver (e.g. "1.4.2") so all teammates load the same skill / rule set. Leave empty to track whatever is installed locally — useful for the maintainers of this package, risky for production projects.'),
30
+ cost_profile: costProfile.default('balanced').describe('Master switch for which rule tiers load and how cautiously the agent spends tokens. minimal = only the 9 kernel rules (cheapest, fewest guardrails). balanced = kernel + tier-1 (recommended default). full = kernel + tier-1 + tier-2 (most guardrails, highest token cost). custom = roll your own in agents/overrides/.'),
31
+ cost: z.object({
32
+ budgets: z.object({
33
+ daily: z.number().min(0).default(0).describe('Daily USD ceiling across all model calls. The agent warns at 50% / 75% / 90% and either stops or warns at 100% depending on cost.enforcement. Set 0 to disable the daily budget entirely.'),
34
+ weekly: z.number().min(0).default(0).describe('Rolling 7-day USD ceiling. Same alert ladder as cost.budgets.daily but useful when work bursts unevenly across the week. Set 0 to disable.'),
35
+ monthly: z.number().min(0).default(0).describe('Calendar-month USD ceiling. Pairs with cost.enforcement = hard-stop for a hard cap on agent spend before the next billing cycle. Set 0 to disable.'),
36
+ }),
37
+ enforcement: enforcementMode.default('advisory').describe('What happens when a budget hits 100%. advisory = show a banner, keep working (default — never blocks an active task). hard-stop = refuse further model calls until the budget resets or you raise the ceiling.'),
38
+ }),
39
+ personal: z.object({
40
+ ide: z.string().default('').describe('CLI binary your IDE registers (code, code-insiders, phpstorm, cursor, windsurf, idea, subl, …). Used by the file-editor skill to open edited files. Leave empty to disable IDE integration.'),
41
+ open_edited_files: z.boolean().default(false).describe('After the agent edits a file, run `<ide> <path>` to surface it in your editor immediately. Off by default to avoid window-stealing during long agent runs.'),
42
+ user_name: z.string().default('').describe('How the agent addresses you in chat ("Matze", "Sarah"). Legacy fallback only — the source of truth is the YAML frontmatter in .agent-user.md, which also carries pronouns, working hours, and tone preferences.'),
43
+ rtk_installed: z.boolean().default(false).describe('Does this machine have rtk (Rust Token Killer, https://github.com/event4u-app/rtk) on PATH? When true the agent wraps verbose CLI output (git, tests, linters, docker, npm, composer) with rtk for ~60-90% token savings. Leave false if rtk is missing — the agent falls back to tail / grep.'),
44
+ minimal_output: z.boolean().default(true).describe('Prefer short bullets and tables (true, default) vs verbose prose with rationale (false). Affects every chat reply; flip to false during debugging when you want the agent to think out loud.'),
45
+ play_by_play: z.boolean().default(false).describe('Narrate intermediate findings between tool calls ("Found it.", "Let me check Y."). Off by default — most users find it noisy. Turn on when you want to follow the agent\'s reasoning step by step.'),
46
+ pr_comment_bot_icon: z.boolean().default(false).describe('Prefix every PR review-comment reply with 🤖 so humans can tell agent-authored comments apart from teammate comments at a glance. Cosmetic only; the comment body itself never changes.'),
47
+ autonomy: autonomyMode.default('auto').describe('How aggressively the agent suppresses trivial workflow questions ("commit now?", "open PR?"). on = silently pick the sensible default. off = always ask. auto (default) = decide per project, on for solo / off when collaborators are involved. The Hard Floor (prod, deploys, bulk deletes) ignores this setting and always asks.'),
48
+ user_type: userType.default('').describe('Optional persona axis used by the skill-suggester to surface the relevant subset (consultant / creator / developer / finance / founder / gtm / ops). Empty = no filter, all skills available. You can change this any time without re-running setup.'),
49
+ }),
50
+ project: z.object({
51
+ pr_template: z.string().default('.github/pull_request_template.md').describe('Path (relative to project root) to the PR-description template the agent fills in before opening a pull request. Override only if your repo keeps the template somewhere non-standard.'),
52
+ upstream_repo: z.string().default('').describe('GitHub slug (owner/repo) the upstream-contribute skill targets when you ask the agent to push a learning back to the shared agent-config package. Empty = improvement PRs are disabled.'),
53
+ improvement_pr_branch_prefix: z.string().default('improve/agent-').describe('Branch-name prefix for improvement PRs the agent opens against project.upstream_repo (e.g. "improve/agent-add-react-skill"). Pick a prefix your repo conventions allow.'),
54
+ }),
55
+ github: z.object({
56
+ pr_reply_method: replyMethod.default('create_review_comment').describe('How the agent replies to PR review comments. create_review_comment = post a new review comment (works on every GitHub plan). replies_endpoint = thread the reply under the original comment (needs the newer REST endpoint). auto = detect at runtime, prefer threaded replies when available.'),
57
+ }),
58
+ augment: z.object({
59
+ rules_use_symlinks: z.boolean().default(false).describe('When true, .augment/rules/*.md are symlinks into .agent-src/rules/ — edits flow back to source on save. When false (default), they are copies — safer on Windows and shared volumes, but rule edits in .augment/ are lost on the next `task sync`.'),
60
+ }),
61
+ eloquent: z.object({
62
+ access_style: accessStyle.default('getters_setters').describe('How the agent writes Laravel Eloquent property access. getters_setters = explicit getName() / setName() methods (most refactor-safe). get_attribute = $model->getAttribute("name") (verbose but explicit). magic_properties = $model->name (idiomatic but harder to grep).'),
63
+ }),
64
+ chat_history: z.object({
65
+ enabled: z.boolean().default(true).describe('Persist a structured log of every chat turn to .agent-config/chat-history/ so /chat-history:show, :import, and :learn can replay sessions. Turn off if you never want chat transcripts on disk.'),
66
+ frequency: chatFreq.default('per_turn').describe('How often the chat-history writer flushes to disk. per_turn = after every user / agent exchange (default, lowest data loss on crash). per_phase = at phase boundaries (cheaper I/O). per_tool = after every tool call (highest fidelity, noisiest log).'),
67
+ max_size_kb: z.number().int().min(0).default(2048).describe('Maximum size (KB) of the active chat-history file before chat_history.on_overflow kicks in. Set 0 to disable rotation / compression entirely (file grows forever).'),
68
+ on_overflow: chatOverflow.default('rotate').describe('What happens when chat_history.max_size_kb is hit. rotate = move the current log aside and start fresh (default). compress = caveman-compress the oldest entries in place to keep recent context.'),
69
+ text_limits: z.object({
70
+ user: z.number().int().min(0).default(0).describe('Per-message character cap for user inputs in the chat-history log. 0 = log verbatim (default). Raise above 0 only if your prompts contain large pasted artefacts you do not want stored.'),
71
+ agent: z.number().int().min(0).default(5000).describe('Per-message character cap for agent replies in the chat-history log. Truncates with an ellipsis past the cap. Lower to shrink history files, raise for long-reasoning replies.'),
72
+ tool: z.number().int().min(0).default(200).describe('Per-call character cap for tool input / output blobs in the chat-history log. The default 200 keeps history files compact while preserving enough signal to replay a session.'),
73
+ phase: z.number().int().min(0).default(200).describe('Per-marker character cap for phase markers (Phase=Refine, Phase=Plan, …) in the chat-history log. Rarely needs tuning.'),
74
+ }),
75
+ }),
76
+ pipelines: z.object({
77
+ skill_improvement: z.boolean().default(true).describe('After a meaningful task the agent proposes a learning-capture turn (new skill, rule tweak, guideline). Turn off if you find the prompts noisy — you can still run /memory:promote manually.'),
78
+ }),
79
+ roadmap: z.object({
80
+ quality_cadence: qualityCadence.default('end_of_roadmap').describe('When the agent runs the full quality / test suite during /roadmap:process-* runs. end_of_roadmap = once, after the last step (fastest, default). per_phase = after each phase boundary. per_step = after every single step (slowest, highest confidence).'),
81
+ dashboard_regen_cadence: regenCadence.default('per_step').describe('How often the agent regenerates agents/roadmaps/dashboard.md during a roadmap run. per_step = after every step (default, freshest dashboard). every_5_steps = batch the regen. phase_boundary = only at phase edges.'),
82
+ horizon_weeks: z.number().int().min(0).default(0).describe('Optional planning horizon (weeks) the agent shows in roadmap framing ("next 4 weeks"). Set 0 to omit the horizon — most teams prefer to ship without a hardcoded window.'),
83
+ }),
84
+ quality: z.object({
85
+ local_auto_run: z.boolean().default(true).describe('Run quality tools (linters, type-checks, formatters) and the local test suite autonomously after edits. Turn off if your toolchain is slow and you prefer to invoke quality runs manually with /quality-fix.'),
86
+ wait_for_remote_ci: z.boolean().default(false).describe('After pushing a branch, poll the remote CI provider (GitHub Actions, GitLab CI) and surface failures inline. Off by default — useful when local CI does not cover everything the remote pipeline runs.'),
87
+ }),
88
+ subagents: z.object({
89
+ implementer_model: z.string().default('').describe('Override the model the orchestrator dispatches to subagents that write code (e.g. claude-sonnet-4, gpt-5). Empty (default) = inherit the session\'s primary model — cheapest and usually right.'),
90
+ judge_model: z.string().default('').describe('Override the model used for review / judge subagents that critique implementer output. Empty (default) = one tier above the implementer model — picks up nuance the implementer missed.'),
91
+ max_parallel: z.number().int().min(1).default(3).describe('Hard cap on subagents running in parallel during /do-in-parallel, /do-competitively, and /judge runs. Raise for faster fan-out, lower if you hit rate limits or want lower token spend.'),
92
+ }),
93
+ worktrees: z.object({
94
+ mode: worktreeMode.default('ask').describe('When the agent considers a parallel `git worktree` for risky / large work. ask (default) = surface a numbered option and wait. on = spawn worktrees autonomously. off = never use worktrees, edit in place.'),
95
+ }),
96
+ onboarding: z.object({
97
+ onboarded: z.boolean().default(false).describe('Set to true once the developer has completed `agent-config setup`. The onboarding-gate rule blocks the first turn of every chat until this is true. Toggle back to false to re-trigger the wizard.'),
98
+ }),
99
+ commands: z.object({
100
+ suggestion: z.object({
101
+ enabled: z.boolean().default(true).describe('Master switch for the slash-command suggestion layer. When on, the agent offers numbered options ("did you mean /commit?") instead of guessing. Turn off if you prefer to type every command yourself.'),
102
+ confidence_floor: z.number().min(0).max(1).default(0.6).describe('Minimum semantic-match score (0.0–1.0) before a command is offered as a suggestion. 0.6 (default) balances precision and recall. Raise toward 0.8 for fewer false positives, lower for broader hints.'),
103
+ cooldown_seconds: z.number().int().min(0).default(600).describe('How long (seconds) the suggester waits before offering the same command again after you ignored it. Default 600s (10 min) keeps the agent from nagging. Set 0 to disable the cooldown.'),
104
+ max_options: z.number().int().min(0).default(4).describe('Maximum number of command suggestions shown in a single numbered-options block, before the "Proceed as-is" escape. Lower for terser prompts, raise if you regularly want broader fan-out.'),
105
+ blocklist: z.array(z.string()).default([]).describe('Slash-command names that should never be suggested, one per line (e.g. "commit", "create-pr"). Useful if a command misfires on your common phrasing.'),
106
+ }),
107
+ create_pr: z.object({
108
+ preview_description: z.boolean().default(false).describe('When /create-pr runs, show the generated title and body and wait for confirmation before opening the PR. Off by default (zero-friction PR creation); turn on if you want a last-look gate.'),
109
+ }),
110
+ }),
111
+ memory: z.object({
112
+ review_threshold: z.number().int().min(0).default(10).describe('Maximum number of memory entries /memory:load surfaces inline before falling back to a summary view. Default 10 keeps the chat readable. Raise to see more candidates, lower to keep the context tight.'),
113
+ redact_patterns: z.array(z.string()).default([]).describe('Regex patterns (one per line) that scrub matches from chat-history transcripts and memory before they hit disk. Use for secrets, customer names, internal URLs. Patterns are anchored and case-insensitive.'),
114
+ }),
115
+ hooks: z.object({
116
+ concern_budget: z.object({
117
+ max_per_event: z.number().int().min(1).default(8).describe('Maximum number of concerns (issues / warnings) a single hook may raise per (platform, event) pair before the hook is rate-limited. Default 8 prevents noisy hooks from drowning out high-signal ones.'),
118
+ tier1_concerns: z.array(z.string()).default([]).describe('Concern IDs (one per line) that are allowed to block the run on failure rather than warn. Reserved for high-confidence guards — leave empty unless you maintain custom hooks.'),
119
+ hard_fail: z.boolean().default(false).describe('When a hook exceeds hooks.concern_budget.max_per_event, fail the run (true) instead of warning and continuing (false, default). Turn on in CI when you want hook quality to gate merges.'),
120
+ }),
121
+ }),
122
+ decision_engine: z.object({
123
+ surface_traces: z.boolean().default(false).describe('Emit DecisionTraceHook events that surface why the agent picked one option over another. Useful when debugging unexpected choices; off by default to keep chat noise low.'),
124
+ min_confidence: confidenceBand.default('off').describe('During Phase=Plan, refuse to advance to Phase=Implement if confidence is below this band. off (default) = no gate. low / medium / high = raise the floor; on miss, decision_engine.on_block decides what happens.'),
125
+ block_on_risk: confidenceBand.default('off').describe('During Phase=Implement, refuse to act when the risk class meets or exceeds this band. off (default) = no gate. low / medium / high = stricter ceilings; pairs with decision_engine.on_block.'),
126
+ require_memory_hits: z.boolean().default(false).describe('During Phase=Refine, require at least one relevant memory hit (skill, ADR, past decision) before the agent proceeds. Off by default; turn on for highly conventional codebases where memory should always inform decisions.'),
127
+ on_block: onBlock.default('stop').describe('What the decision engine does when a gate (min_confidence / block_on_risk / require_memory_hits) fires. stop (default) = halt and surface the reason. ask = present numbered options. warn = log and continue.'),
128
+ ask_timeout_seconds: z.number().int().min(0).default(30).describe('Non-TTY timeout (seconds) for decision_engine.on_block = ask. After this elapses without input, decision_engine.on_block_fallback takes over. Default 30s; raise for slow human review, 0 = wait forever.'),
129
+ on_block_fallback: onBlockFallback.default('stop').describe('Resolution when decision_engine.on_block = ask times out (see decision_engine.ask_timeout_seconds). stop (default) = halt the run. warn = log and continue with the agent\'s best guess.'),
130
+ }),
131
+ update_check: z.object({
132
+ enabled: z.boolean().default(true).describe('Once per day the agent checks the npm registry for a newer agent-config release and surfaces a one-line banner if one exists. Turn off in air-gapped environments or to silence the banner.'),
133
+ }),
134
+ explain: z.object({
135
+ enable_last: z.boolean().default(true).describe('Enable the `agent-config explain last` command, which prints the reasoning behind the agent\'s most recent decision (last tool call, last suggestion). Disable if you never use it and want a smaller CLI surface.'),
136
+ }),
137
+ });
138
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/server/schemas/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtE,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1D,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACxG,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACrF,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AACpD,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3E,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC7E,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClD,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;AAClF,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAChE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CACjD,oOAAoO,CACvO;IACD,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAClD,4TAA4T,CAC/T;IACD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACX,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACxC,2LAA2L,CAC9L;YACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACzC,4IAA4I,CAC/I;YACD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC1C,oJAAoJ,CACvJ;SACJ,CAAC;QACF,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CACrD,gNAAgN,CACnN;KACJ,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAChC,6LAA6L,CAChM;QACD,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAClD,4JAA4J,CAC/J;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CACtC,iNAAiN,CACpN;QACD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAC9C,gSAAgS,CACnS;QACD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAC9C,8LAA8L,CACjM;QACD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAC7C,oMAAoM,CACvM;QACD,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CACpD,yLAAyL,CAC5L;QACD,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAC3C,qUAAqU,CACxU;QACD,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CACpC,sPAAsP,CACzP;KACJ,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,QAAQ,CACxE,wLAAwL,CAC3L;QACD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC1C,yLAAyL,CAC5L;QACD,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CACvE,yKAAyK,CAC5K;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAClE,gSAAgS,CACnS;KACJ,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CACnD,oPAAoP,CACvP;KACJ,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CACzD,4QAA4Q,CAC/Q;KACJ,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CACvC,iMAAiM,CACpM;QACD,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC5C,yPAAyP,CAC5P;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CACvD,oKAAoK,CACvK;QACD,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAChD,mMAAmM,CACtM;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC7C,0LAA0L,CAC7L;YACD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CACjD,gLAAgL,CACnL;YACD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAC/C,+KAA+K,CAClL;YACD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAChD,wHAAwH,CAC3H;SACJ,CAAC;KACL,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CACjD,6LAA6L,CAChM;KACJ,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,eAAe,EAAE,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAC9D,2PAA2P,CAC9P;QACD,uBAAuB,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAC9D,sNAAsN,CACzN;QACD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtD,0KAA0K,CAC7K;KACJ,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAC9C,8MAA8M,CACjN;QACD,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CACnD,wMAAwM,CAC3M;KACJ,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC9C,iMAAiM,CACpM;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CACxC,yLAAyL,CAC5L;QACD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACrD,yLAAyL,CAC5L;KACJ,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CACtC,6MAA6M,CAChN;KACJ,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAC1C,oMAAoM,CACvM;KACJ,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CACvC,wMAAwM,CAC3M;YACD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAC5D,uMAAuM,CAC1M;YACD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAC3D,wLAAwL,CAC3L;YACD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACpD,2LAA2L,CAC9L;YACD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC/C,sJAAsJ,CACzJ;SACJ,CAAC;QACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CACpD,4LAA4L,CAC/L;SACJ,CAAC;KACL,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC1D,yMAAyM,CAC5M;QACD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CACrD,6MAA6M,CAChN;KACJ,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtD,uMAAuM,CAC1M;YACD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CACpD,+KAA+K,CAClL;YACD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAC1C,0LAA0L,CAC7L;SACJ,CAAC;KACL,CAAC;IACF,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAC/C,2KAA2K,CAC9K;QACD,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAClD,mNAAmN,CACtN;QACD,aAAa,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CACjD,8LAA8L,CACjM;QACD,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CACpD,6NAA6N,CAChO;QACD,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CACtC,gNAAgN,CACnN;QACD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAC7D,2MAA2M,CAC9M;QACD,iBAAiB,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CACvD,0LAA0L,CAC7L;KACJ,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CACvC,6LAA6L,CAChM;KACJ,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAC3C,oNAAoN,CACvN;KACJ,CAAC;CACL,CAAC,CAAC"}