@hivehub/rulebook 5.5.1 → 5.7.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 (342) hide show
  1. package/.claude/commands/rulebook-learn-capture.md +41 -48
  2. package/.claude/commands/rulebook-learn-list.md +13 -13
  3. package/README.md +332 -394
  4. package/dist/cli/commands/context-intelligence.d.ts +0 -1
  5. package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
  6. package/dist/cli/commands/context-intelligence.js +12 -33
  7. package/dist/cli/commands/context-intelligence.js.map +1 -1
  8. package/dist/cli/commands/index.d.ts +4 -7
  9. package/dist/cli/commands/index.d.ts.map +1 -1
  10. package/dist/cli/commands/index.js +4 -7
  11. package/dist/cli/commands/index.js.map +1 -1
  12. package/dist/cli/commands/init.d.ts.map +1 -1
  13. package/dist/cli/commands/init.js +40 -81
  14. package/dist/cli/commands/init.js.map +1 -1
  15. package/dist/cli/commands/mcp.d.ts +0 -1
  16. package/dist/cli/commands/mcp.d.ts.map +1 -1
  17. package/dist/cli/commands/mcp.js +1 -7
  18. package/dist/cli/commands/mcp.js.map +1 -1
  19. package/dist/cli/commands/memory.d.ts +7 -1
  20. package/dist/cli/commands/memory.d.ts.map +1 -1
  21. package/dist/cli/commands/memory.js +51 -57
  22. package/dist/cli/commands/memory.js.map +1 -1
  23. package/dist/cli/commands/misc.d.ts +1 -15
  24. package/dist/cli/commands/misc.d.ts.map +1 -1
  25. package/dist/cli/commands/misc.js +36 -215
  26. package/dist/cli/commands/misc.js.map +1 -1
  27. package/dist/cli/commands/plans.d.ts +0 -6
  28. package/dist/cli/commands/plans.d.ts.map +1 -1
  29. package/dist/cli/commands/plans.js +9 -77
  30. package/dist/cli/commands/plans.js.map +1 -1
  31. package/dist/cli/commands/skills.js +6 -6
  32. package/dist/cli/commands/skills.js.map +1 -1
  33. package/dist/cli/commands/task.js +4 -4
  34. package/dist/cli/commands/task.js.map +1 -1
  35. package/dist/cli/commands/update.d.ts.map +1 -1
  36. package/dist/cli/commands/update.js +122 -52
  37. package/dist/cli/commands/update.js.map +1 -1
  38. package/dist/cli/prompts.d.ts.map +1 -1
  39. package/dist/cli/prompts.js +1 -78
  40. package/dist/cli/prompts.js.map +1 -1
  41. package/dist/core/claude/claude-mcp.d.ts +59 -0
  42. package/dist/core/claude/claude-mcp.d.ts.map +1 -0
  43. package/dist/core/claude/claude-mcp.js +220 -0
  44. package/dist/core/claude/claude-mcp.js.map +1 -0
  45. package/dist/core/claude/claude-md-generator.d.ts +52 -0
  46. package/dist/core/claude/claude-md-generator.d.ts.map +1 -0
  47. package/dist/core/claude/claude-md-generator.js +104 -0
  48. package/dist/core/claude/claude-md-generator.js.map +1 -0
  49. package/dist/core/claude/claude-settings-manager.d.ts +44 -0
  50. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -0
  51. package/dist/core/claude/claude-settings-manager.js +194 -0
  52. package/dist/core/claude/claude-settings-manager.js.map +1 -0
  53. package/dist/core/claude-settings-manager.d.ts.map +1 -1
  54. package/dist/core/claude-settings-manager.js +9 -3
  55. package/dist/core/claude-settings-manager.js.map +1 -1
  56. package/dist/core/console/cli-bridge.d.ts +113 -0
  57. package/dist/core/console/cli-bridge.d.ts.map +1 -0
  58. package/dist/core/console/cli-bridge.js +1094 -0
  59. package/dist/core/console/cli-bridge.js.map +1 -0
  60. package/dist/core/detect/detector.d.ts +35 -0
  61. package/dist/core/detect/detector.d.ts.map +1 -0
  62. package/dist/core/detect/detector.js +541 -0
  63. package/dist/core/detect/detector.js.map +1 -0
  64. package/dist/core/docs/docs-generator.d.ts +9 -0
  65. package/dist/core/docs/docs-generator.d.ts.map +1 -0
  66. package/dist/core/docs/docs-generator.js +531 -0
  67. package/dist/core/docs/docs-generator.js.map +1 -0
  68. package/dist/core/docs/mcp-reference-generator.d.ts +13 -0
  69. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
  70. package/dist/core/docs/mcp-reference-generator.js +66 -0
  71. package/dist/core/docs/mcp-reference-generator.js.map +1 -0
  72. package/dist/core/generators/generator.d.ts +54 -0
  73. package/dist/core/generators/generator.d.ts.map +1 -0
  74. package/dist/core/generators/generator.js +1041 -0
  75. package/dist/core/generators/generator.js.map +1 -0
  76. package/dist/core/generators/gitignore-generator.d.ts +13 -0
  77. package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
  78. package/dist/core/generators/gitignore-generator.js +307 -0
  79. package/dist/core/generators/gitignore-generator.js.map +1 -0
  80. package/dist/core/generators/minimal-scaffolder.d.ts +8 -0
  81. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
  82. package/dist/core/generators/minimal-scaffolder.js +51 -0
  83. package/dist/core/generators/minimal-scaffolder.js.map +1 -0
  84. package/dist/core/generators/rules-generator.d.ts +73 -0
  85. package/dist/core/generators/rules-generator.d.ts.map +1 -0
  86. package/dist/core/generators/rules-generator.js +202 -0
  87. package/dist/core/generators/rules-generator.js.map +1 -0
  88. package/dist/core/generators/workflow-generator.d.ts +15 -0
  89. package/dist/core/generators/workflow-generator.d.ts.map +1 -0
  90. package/dist/core/generators/workflow-generator.js +390 -0
  91. package/dist/core/generators/workflow-generator.js.map +1 -0
  92. package/dist/core/ide/multi-tool-generator.d.ts +59 -0
  93. package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
  94. package/dist/core/ide/multi-tool-generator.js +157 -0
  95. package/dist/core/ide/multi-tool-generator.js.map +1 -0
  96. package/dist/core/ide/opencode-generator.d.ts +72 -0
  97. package/dist/core/ide/opencode-generator.d.ts.map +1 -0
  98. package/dist/core/ide/opencode-generator.js +450 -0
  99. package/dist/core/ide/opencode-generator.js.map +1 -0
  100. package/dist/core/merger.d.ts +1 -1
  101. package/dist/core/merger.d.ts.map +1 -1
  102. package/dist/core/merger.js +5 -5
  103. package/dist/core/merger.js.map +1 -1
  104. package/dist/core/migrator.d.ts +0 -1
  105. package/dist/core/migrator.d.ts.map +1 -1
  106. package/dist/core/migrator.js +4 -29
  107. package/dist/core/migrator.js.map +1 -1
  108. package/dist/core/quality/coverage-checker.d.ts +14 -0
  109. package/dist/core/quality/coverage-checker.d.ts.map +1 -0
  110. package/dist/core/quality/coverage-checker.js +176 -0
  111. package/dist/core/quality/coverage-checker.js.map +1 -0
  112. package/dist/core/quality/dependency-checker.d.ts +21 -0
  113. package/dist/core/quality/dependency-checker.d.ts.map +1 -0
  114. package/dist/core/quality/dependency-checker.js +247 -0
  115. package/dist/core/quality/dependency-checker.js.map +1 -0
  116. package/dist/core/quality/doctor.d.ts +19 -0
  117. package/dist/core/quality/doctor.d.ts.map +1 -0
  118. package/dist/core/quality/doctor.js +163 -0
  119. package/dist/core/quality/doctor.js.map +1 -0
  120. package/dist/core/quality/validator.d.ts +21 -0
  121. package/dist/core/quality/validator.d.ts.map +1 -0
  122. package/dist/core/quality/validator.js +177 -0
  123. package/dist/core/quality/validator.js.map +1 -0
  124. package/dist/core/ralph-scripts.d.ts.map +1 -1
  125. package/dist/core/ralph-scripts.js +7 -6
  126. package/dist/core/ralph-scripts.js.map +1 -1
  127. package/dist/core/skills/skills-manager.d.ts +126 -0
  128. package/dist/core/skills/skills-manager.d.ts.map +1 -0
  129. package/dist/core/skills/skills-manager.js +630 -0
  130. package/dist/core/skills/skills-manager.js.map +1 -0
  131. package/dist/core/state/config-manager.d.ts +86 -0
  132. package/dist/core/state/config-manager.d.ts.map +1 -0
  133. package/dist/core/state/config-manager.js +562 -0
  134. package/dist/core/state/config-manager.js.map +1 -0
  135. package/dist/core/state/override-manager.d.ts +23 -0
  136. package/dist/core/state/override-manager.d.ts.map +1 -0
  137. package/dist/core/state/override-manager.js +82 -0
  138. package/dist/core/state/override-manager.js.map +1 -0
  139. package/dist/core/state/state-writer.d.ts +34 -0
  140. package/dist/core/state/state-writer.d.ts.map +1 -0
  141. package/dist/core/state/state-writer.js +78 -0
  142. package/dist/core/state/state-writer.js.map +1 -0
  143. package/dist/core/state/version-bumper.d.ts +19 -0
  144. package/dist/core/state/version-bumper.d.ts.map +1 -0
  145. package/dist/core/state/version-bumper.js +180 -0
  146. package/dist/core/state/version-bumper.js.map +1 -0
  147. package/dist/core/tasks/decision-manager.d.ts +25 -0
  148. package/dist/core/tasks/decision-manager.d.ts.map +1 -0
  149. package/dist/core/tasks/decision-manager.js +183 -0
  150. package/dist/core/tasks/decision-manager.js.map +1 -0
  151. package/dist/core/tasks/knowledge-manager.d.ts +24 -0
  152. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
  153. package/dist/core/tasks/knowledge-manager.js +173 -0
  154. package/dist/core/tasks/knowledge-manager.js.map +1 -0
  155. package/dist/core/tasks/learn-manager.d.ts +27 -0
  156. package/dist/core/tasks/learn-manager.d.ts.map +1 -0
  157. package/dist/core/tasks/learn-manager.js +121 -0
  158. package/dist/core/tasks/learn-manager.js.map +1 -0
  159. package/dist/core/tasks/plans-manager.d.ts +46 -0
  160. package/dist/core/tasks/plans-manager.d.ts.map +1 -0
  161. package/dist/core/tasks/plans-manager.js +158 -0
  162. package/dist/core/tasks/plans-manager.js.map +1 -0
  163. package/dist/core/tasks/task-manager.d.ts +127 -0
  164. package/dist/core/tasks/task-manager.d.ts.map +1 -0
  165. package/dist/core/tasks/task-manager.js +607 -0
  166. package/dist/core/tasks/task-manager.js.map +1 -0
  167. package/dist/core/workspace/project-worker.d.ts +6 -6
  168. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  169. package/dist/core/workspace/project-worker.js +6 -6
  170. package/dist/core/workspace/project-worker.js.map +1 -1
  171. package/dist/index.d.ts +1 -1
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +19 -176
  174. package/dist/index.js.map +1 -1
  175. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  176. package/dist/mcp/rulebook-server.js +16 -960
  177. package/dist/mcp/rulebook-server.js.map +1 -1
  178. package/dist/memory/file-search.d.ts +43 -0
  179. package/dist/memory/file-search.d.ts.map +1 -0
  180. package/dist/memory/file-search.js +228 -0
  181. package/dist/memory/file-search.js.map +1 -0
  182. package/dist/memory/file-store.d.ts +99 -0
  183. package/dist/memory/file-store.d.ts.map +1 -0
  184. package/dist/memory/file-store.js +615 -0
  185. package/dist/memory/file-store.js.map +1 -0
  186. package/dist/memory/legacy-migrator.d.ts +27 -0
  187. package/dist/memory/legacy-migrator.d.ts.map +1 -0
  188. package/dist/memory/legacy-migrator.js +185 -0
  189. package/dist/memory/legacy-migrator.js.map +1 -0
  190. package/dist/memory/memory-manager.d.ts +25 -24
  191. package/dist/memory/memory-manager.d.ts.map +1 -1
  192. package/dist/memory/memory-manager.js +97 -140
  193. package/dist/memory/memory-manager.js.map +1 -1
  194. package/dist/memory/memory-types.d.ts +1 -1
  195. package/dist/memory/memory-types.d.ts.map +1 -1
  196. package/dist/types.d.ts +8 -119
  197. package/dist/types.d.ts.map +1 -1
  198. package/dist/utils/file-system.d.ts +22 -0
  199. package/dist/utils/file-system.d.ts.map +1 -1
  200. package/dist/utils/file-system.js +31 -0
  201. package/dist/utils/file-system.js.map +1 -1
  202. package/dist/utils/git-hooks.d.ts.map +1 -1
  203. package/dist/utils/git-hooks.js +3 -2
  204. package/dist/utils/git-hooks.js.map +1 -1
  205. package/package.json +2 -6
  206. package/templates/agents/context-intelligence.md +50 -52
  207. package/templates/cli/OPENCODE.md +85 -18
  208. package/templates/commands/rulebook-learn-capture.md +41 -48
  209. package/templates/commands/rulebook-learn-list.md +13 -13
  210. package/templates/core/AGENTS_LEAN.md +0 -14
  211. package/templates/hooks/check-context-and-handoff.sh +74 -76
  212. package/templates/hooks/enforce-pre-tool.sh +70 -0
  213. package/templates/hooks/enforce-team-for-background-agents.sh +55 -55
  214. package/templates/hooks/on-compact-reinject.sh +34 -34
  215. package/templates/hooks/resume-from-handoff.sh +61 -61
  216. package/templates/hooks/terse-activate.sh +197 -197
  217. package/templates/hooks/terse-mode-tracker.sh +190 -187
  218. package/templates/ides/OPENCODE.md +63 -0
  219. package/templates/skills/cli/opencode/SKILL.md +82 -28
  220. package/.claude/commands/ralph-config.md +0 -112
  221. package/.claude/commands/ralph-history.md +0 -110
  222. package/.claude/commands/ralph-init.md +0 -72
  223. package/.claude/commands/ralph-pause-resume.md +0 -105
  224. package/.claude/commands/ralph-run.md +0 -101
  225. package/.claude/commands/ralph-status.md +0 -76
  226. package/templates/core/RALPH.md +0 -471
  227. package/templates/frameworks/ANGULAR.md +0 -36
  228. package/templates/frameworks/DJANGO.md +0 -83
  229. package/templates/frameworks/ELECTRON.md +0 -147
  230. package/templates/frameworks/FLASK.md +0 -38
  231. package/templates/frameworks/FLUTTER.md +0 -55
  232. package/templates/frameworks/JQUERY.md +0 -32
  233. package/templates/frameworks/LARAVEL.md +0 -38
  234. package/templates/frameworks/NESTJS.md +0 -43
  235. package/templates/frameworks/NEXTJS.md +0 -127
  236. package/templates/frameworks/NUXT.md +0 -40
  237. package/templates/frameworks/RAILS.md +0 -66
  238. package/templates/frameworks/REACT.md +0 -38
  239. package/templates/frameworks/REACT_NATIVE.md +0 -47
  240. package/templates/frameworks/SPRING.md +0 -39
  241. package/templates/frameworks/SYMFONY.md +0 -36
  242. package/templates/frameworks/VUE.md +0 -36
  243. package/templates/frameworks/ZEND.md +0 -35
  244. package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
  245. package/templates/hooks/enforce-no-deferred.sh +0 -21
  246. package/templates/hooks/enforce-no-shortcuts.sh +0 -31
  247. package/templates/ides/COPILOT.md +0 -37
  248. package/templates/ides/CURSOR.md +0 -43
  249. package/templates/ides/JETBRAINS_AI.md +0 -35
  250. package/templates/ides/REPLIT.md +0 -36
  251. package/templates/ides/TABNINE.md +0 -29
  252. package/templates/ides/VSCODE.md +0 -40
  253. package/templates/ides/WINDSURF.md +0 -36
  254. package/templates/ides/ZED.md +0 -32
  255. package/templates/ides/cursor-mdc/go.mdc +0 -24
  256. package/templates/ides/cursor-mdc/python.mdc +0 -24
  257. package/templates/ides/cursor-mdc/quality.mdc +0 -25
  258. package/templates/ides/cursor-mdc/ralph.mdc +0 -39
  259. package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
  260. package/templates/ides/cursor-mdc/rust.mdc +0 -24
  261. package/templates/ides/cursor-mdc/typescript.mdc +0 -25
  262. package/templates/ralph/ralph-history.bat +0 -4
  263. package/templates/ralph/ralph-history.sh +0 -5
  264. package/templates/ralph/ralph-init.bat +0 -5
  265. package/templates/ralph/ralph-init.sh +0 -5
  266. package/templates/ralph/ralph-pause.bat +0 -5
  267. package/templates/ralph/ralph-pause.sh +0 -5
  268. package/templates/ralph/ralph-run.bat +0 -5
  269. package/templates/ralph/ralph-run.sh +0 -5
  270. package/templates/ralph/ralph-status.bat +0 -4
  271. package/templates/ralph/ralph-status.sh +0 -5
  272. package/templates/services/AZURE_BLOB.md +0 -184
  273. package/templates/services/CASSANDRA.md +0 -239
  274. package/templates/services/DATADOG.md +0 -26
  275. package/templates/services/DOCKER.md +0 -124
  276. package/templates/services/DOCKER_COMPOSE.md +0 -168
  277. package/templates/services/DYNAMODB.md +0 -308
  278. package/templates/services/ELASTICSEARCH.md +0 -347
  279. package/templates/services/GCS.md +0 -178
  280. package/templates/services/HELM.md +0 -194
  281. package/templates/services/INFLUXDB.md +0 -265
  282. package/templates/services/KAFKA.md +0 -341
  283. package/templates/services/KUBERNETES.md +0 -208
  284. package/templates/services/MARIADB.md +0 -183
  285. package/templates/services/MEMCACHED.md +0 -242
  286. package/templates/services/MINIO.md +0 -201
  287. package/templates/services/MONGODB.md +0 -268
  288. package/templates/services/MYSQL.md +0 -358
  289. package/templates/services/NEO4J.md +0 -247
  290. package/templates/services/OPENTELEMETRY.md +0 -25
  291. package/templates/services/ORACLE.md +0 -290
  292. package/templates/services/PINO.md +0 -24
  293. package/templates/services/POSTGRESQL.md +0 -326
  294. package/templates/services/PROMETHEUS.md +0 -33
  295. package/templates/services/RABBITMQ.md +0 -286
  296. package/templates/services/REDIS.md +0 -292
  297. package/templates/services/S3.md +0 -298
  298. package/templates/services/SENTRY.md +0 -23
  299. package/templates/services/SQLITE.md +0 -294
  300. package/templates/services/SQLSERVER.md +0 -294
  301. package/templates/services/WINSTON.md +0 -30
  302. package/templates/skills/frameworks/angular/SKILL.md +0 -46
  303. package/templates/skills/frameworks/django/SKILL.md +0 -93
  304. package/templates/skills/frameworks/electron/SKILL.md +0 -157
  305. package/templates/skills/frameworks/flask/SKILL.md +0 -48
  306. package/templates/skills/frameworks/flutter/SKILL.md +0 -65
  307. package/templates/skills/frameworks/jquery/SKILL.md +0 -42
  308. package/templates/skills/frameworks/laravel/SKILL.md +0 -48
  309. package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
  310. package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
  311. package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
  312. package/templates/skills/frameworks/rails/SKILL.md +0 -76
  313. package/templates/skills/frameworks/react/SKILL.md +0 -48
  314. package/templates/skills/frameworks/react-native/SKILL.md +0 -57
  315. package/templates/skills/frameworks/spring/SKILL.md +0 -49
  316. package/templates/skills/frameworks/symfony/SKILL.md +0 -46
  317. package/templates/skills/frameworks/vue/SKILL.md +0 -46
  318. package/templates/skills/frameworks/zend/SKILL.md +0 -45
  319. package/templates/skills/services/azure-blob/SKILL.md +0 -194
  320. package/templates/skills/services/cassandra/SKILL.md +0 -249
  321. package/templates/skills/services/dynamodb/SKILL.md +0 -318
  322. package/templates/skills/services/elasticsearch/SKILL.md +0 -357
  323. package/templates/skills/services/gcs/SKILL.md +0 -188
  324. package/templates/skills/services/influxdb/SKILL.md +0 -275
  325. package/templates/skills/services/kafka/SKILL.md +0 -351
  326. package/templates/skills/services/mariadb/SKILL.md +0 -193
  327. package/templates/skills/services/memcached/SKILL.md +0 -252
  328. package/templates/skills/services/minio/SKILL.md +0 -211
  329. package/templates/skills/services/mongodb/SKILL.md +0 -278
  330. package/templates/skills/services/mysql/SKILL.md +0 -368
  331. package/templates/skills/services/neo4j/SKILL.md +0 -257
  332. package/templates/skills/services/oracle/SKILL.md +0 -300
  333. package/templates/skills/services/postgresql/SKILL.md +0 -336
  334. package/templates/skills/services/rabbitmq/SKILL.md +0 -296
  335. package/templates/skills/services/redis/SKILL.md +0 -302
  336. package/templates/skills/services/s3/SKILL.md +0 -308
  337. package/templates/skills/services/sqlite/SKILL.md +0 -304
  338. package/templates/skills/services/sqlserver/SKILL.md +0 -304
  339. package/templates/skills/workflows/ralph/SETUP.md +0 -228
  340. package/templates/skills/workflows/ralph/SKILL.md +0 -309
  341. package/templates/skills/workflows/ralph/install.sh +0 -87
  342. package/templates/skills/workflows/ralph/manifest.json +0 -158
@@ -0,0 +1,450 @@
1
+ /**
2
+ * OpenCode Integration Generator
3
+ *
4
+ * Generates the OpenCode-specific surface area for a Rulebook-managed project:
5
+ * - opencode.json with $schema, mcp.rulebook, and instructions
6
+ * - .opencode/commands/<name>.md mirroring user-invocable Rulebook slash commands
7
+ * - .opencode/agents/<role>.md mirroring Rulebook role agents
8
+ * - .opencode/skills/<name>/SKILL.md normalized to OpenCode's frontmatter schema
9
+ * - .opencode/.rulebook-managed.json listing managed keys for safe future updates
10
+ *
11
+ * Idempotency: every generator preserves user-owned files. A managed file is
12
+ * identified by either the `<!-- RULEBOOK:START -->` marker (markdown) or by
13
+ * the `_rulebook_managed: true` JSON key (managed-keys file).
14
+ */
15
+ import path, { dirname } from 'path';
16
+ import { existsSync } from 'fs';
17
+ import { readdir, readFile, writeFile, mkdir, rm, stat } from 'fs/promises';
18
+ import { fileURLToPath } from 'url';
19
+ const __filename = fileURLToPath(import.meta.url);
20
+ const __dirname = dirname(__filename);
21
+ const RULEBOOK_MARKER = '<!-- RULEBOOK:START -->';
22
+ const RULEBOOK_END_MARKER = '<!-- RULEBOOK:END -->';
23
+ const MANAGED_KEYS_FILE = '.rulebook-managed.json';
24
+ const SCHEMA_URL = 'https://opencode.ai/config.json';
25
+ const MANAGED_TOP_LEVEL_KEYS = ['$schema', 'instructions'];
26
+ const MANAGED_MCP_KEY = 'rulebook';
27
+ const MODEL_TIER_MAP = {
28
+ haiku: 'anthropic/claude-haiku-4-5',
29
+ sonnet: 'anthropic/claude-sonnet-4-6',
30
+ opus: 'anthropic/claude-opus-4-7',
31
+ };
32
+ const READ_ONLY_AGENTS = new Set([
33
+ 'researcher',
34
+ 'code-reviewer',
35
+ 'security-reviewer',
36
+ 'accessibility-reviewer',
37
+ 'ux-reviewer',
38
+ 'performance-engineer',
39
+ ]);
40
+ /**
41
+ * Find the templates/ root directory (relative to dist/ at runtime).
42
+ */
43
+ function getTemplatesDir() {
44
+ return path.join(__dirname, '..', '..', '..', 'templates');
45
+ }
46
+ async function readJson(p) {
47
+ if (!existsSync(p))
48
+ return null;
49
+ try {
50
+ return JSON.parse(await readFile(p, 'utf-8'));
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ }
56
+ async function writeJson(p, data) {
57
+ const dir = path.dirname(p);
58
+ if (!existsSync(dir))
59
+ await mkdir(dir, { recursive: true });
60
+ await writeFile(p, JSON.stringify(data, null, 2) + '\n', 'utf-8');
61
+ }
62
+ /**
63
+ * Discover rule files that should be appended to the OpenCode `instructions`
64
+ * array. These are lazy-loaded by OpenCode when the model is consulted.
65
+ */
66
+ async function discoverInstructionPaths(projectRoot) {
67
+ const instructions = [];
68
+ for (const candidate of ['AGENTS.md', 'AGENTS.override.md', 'CLAUDE.md']) {
69
+ if (existsSync(path.join(projectRoot, candidate))) {
70
+ instructions.push(candidate);
71
+ }
72
+ }
73
+ const specsDir = path.join(projectRoot, '.rulebook', 'specs');
74
+ if (existsSync(specsDir)) {
75
+ try {
76
+ const files = await readdir(specsDir);
77
+ for (const file of files.sort()) {
78
+ if (file.endsWith('.md')) {
79
+ instructions.push(`.rulebook/specs/${file}`);
80
+ }
81
+ }
82
+ }
83
+ catch {
84
+ // ignore
85
+ }
86
+ }
87
+ return instructions;
88
+ }
89
+ /**
90
+ * Build the rulebook MCP server entry for opencode.json. Mirrors `.mcp.json`
91
+ * if it declares a `rulebook` server; otherwise falls back to the published
92
+ * npm command. The fallback uses `npx -y @hivellm/rulebook-mcp` per the
93
+ * proposal — if that package name has not been published yet, projects can
94
+ * override the entry by editing opencode.json directly.
95
+ */
96
+ async function buildMcpRulebookEntry(projectRoot) {
97
+ const mcpJsonPath = path.join(projectRoot, '.mcp.json');
98
+ const existing = await readJson(mcpJsonPath);
99
+ const declared = existing?.mcpServers?.rulebook;
100
+ if (declared && declared.command) {
101
+ const cmd = [declared.command, ...(declared.args ?? [])];
102
+ const entry = {
103
+ type: 'local',
104
+ command: cmd,
105
+ enabled: true,
106
+ };
107
+ if (declared.env && Object.keys(declared.env).length > 0) {
108
+ entry.environment = declared.env;
109
+ }
110
+ return entry;
111
+ }
112
+ // Fallback: published name is `@hivehub/rulebook` with `mcp-server` subcommand
113
+ // (mirrors src/core/claude/claude-mcp.ts). The legacy `@hivellm/rulebook-mcp`
114
+ // name in the original proposal is not published — using the real one.
115
+ return {
116
+ type: 'local',
117
+ command: ['npx', '-y', '@hivehub/rulebook@latest', 'mcp-server'],
118
+ enabled: true,
119
+ };
120
+ }
121
+ /**
122
+ * Generate or update opencode.json with $schema, mcp.rulebook, and
123
+ * instructions. Preserves all unrelated user keys. Writes a sibling
124
+ * .opencode/.rulebook-managed.json listing the managed keys so future runs
125
+ * know what may be safely refreshed.
126
+ */
127
+ export async function generateOpencodeConfig(projectRoot, _detection) {
128
+ const jsoncPath = path.join(projectRoot, 'opencode.jsonc');
129
+ const jsonPath = path.join(projectRoot, 'opencode.json');
130
+ const configPath = existsSync(jsoncPath) ? jsoncPath : jsonPath;
131
+ const existing = (await readJson(configPath)) ?? {};
132
+ existing.$schema = SCHEMA_URL;
133
+ const mcpEntry = await buildMcpRulebookEntry(projectRoot);
134
+ existing.mcp = { ...(existing.mcp ?? {}) };
135
+ existing.mcp[MANAGED_MCP_KEY] = mcpEntry;
136
+ const newInstructions = await discoverInstructionPaths(projectRoot);
137
+ const existingInstructions = Array.isArray(existing.instructions)
138
+ ? existing.instructions
139
+ : [];
140
+ const seen = new Set();
141
+ const merged = [];
142
+ for (const entry of [...existingInstructions, ...newInstructions]) {
143
+ if (typeof entry !== 'string')
144
+ continue;
145
+ if (seen.has(entry))
146
+ continue;
147
+ seen.add(entry);
148
+ merged.push(entry);
149
+ }
150
+ existing.instructions = merged;
151
+ await writeJson(configPath, existing);
152
+ const managedKeys = {
153
+ _rulebook_managed: true,
154
+ version: 1,
155
+ topLevel: [...MANAGED_TOP_LEVEL_KEYS],
156
+ mcpServers: [MANAGED_MCP_KEY],
157
+ instructions: newInstructions,
158
+ };
159
+ const managedKeysPath = path.join(projectRoot, '.opencode', MANAGED_KEYS_FILE);
160
+ await writeJson(managedKeysPath, managedKeys);
161
+ return { configPath, managedKeysPath };
162
+ }
163
+ /**
164
+ * Write a markdown file idempotently: only overwrite when the existing file
165
+ * already carries the rulebook marker.
166
+ *
167
+ * @returns 'written' | 'preserved'
168
+ */
169
+ async function writeManagedMarkdown(destPath, body) {
170
+ const content = body.includes(RULEBOOK_MARKER)
171
+ ? body
172
+ : `${RULEBOOK_MARKER}\n${body.trimEnd()}\n${RULEBOOK_END_MARKER}\n`;
173
+ if (existsSync(destPath)) {
174
+ const existing = await readFile(destPath, 'utf-8');
175
+ if (!existing.includes(RULEBOOK_MARKER)) {
176
+ return 'preserved';
177
+ }
178
+ }
179
+ const parent = path.dirname(destPath);
180
+ if (!existsSync(parent))
181
+ await mkdir(parent, { recursive: true });
182
+ await writeFile(destPath, content, 'utf-8');
183
+ return 'written';
184
+ }
185
+ /**
186
+ * Parse YAML-ish frontmatter at the top of a markdown file. The parser is
187
+ * deliberately minimal: it handles the simple `key: value` and `key: [a, b]`
188
+ * forms used by Rulebook templates, not arbitrary YAML.
189
+ */
190
+ function parseFrontmatter(text) {
191
+ // Normalize line endings so CRLF-formatted templates (Windows) parse
192
+ // identically to LF.
193
+ const norm = text.replace(/\r\n/g, '\n');
194
+ if (!norm.startsWith('---\n')) {
195
+ return { meta: {}, body: norm };
196
+ }
197
+ const end = norm.indexOf('\n---', 4);
198
+ if (end < 0) {
199
+ return { meta: {}, body: norm };
200
+ }
201
+ const block = norm.slice(4, end);
202
+ const body = norm.slice(end + 4).replace(/^\n/, '');
203
+ const meta = {};
204
+ for (const rawLine of block.split('\n')) {
205
+ const line = rawLine.trim();
206
+ if (!line || line.startsWith('#'))
207
+ continue;
208
+ const idx = line.indexOf(':');
209
+ if (idx < 0)
210
+ continue;
211
+ const key = line.slice(0, idx).trim();
212
+ let value = line.slice(idx + 1).trim();
213
+ if ((value.startsWith('"') && value.endsWith('"')) ||
214
+ (value.startsWith("'") && value.endsWith("'"))) {
215
+ value = value.slice(1, -1);
216
+ }
217
+ meta[key] = value;
218
+ }
219
+ return { meta, body };
220
+ }
221
+ /**
222
+ * Serialize a small key/value object back into YAML frontmatter.
223
+ */
224
+ function serializeFrontmatter(meta) {
225
+ const lines = ['---'];
226
+ for (const [k, v] of Object.entries(meta)) {
227
+ if (Array.isArray(v)) {
228
+ lines.push(`${k}: [${v.map((x) => `"${String(x).replace(/"/g, '\\"')}"`).join(', ')}]`);
229
+ }
230
+ else if (typeof v === 'object' && v !== null) {
231
+ lines.push(`${k}:`);
232
+ for (const [k2, v2] of Object.entries(v)) {
233
+ lines.push(` ${k2}: ${typeof v2 === 'string' ? `"${v2}"` : String(v2)}`);
234
+ }
235
+ }
236
+ else if (typeof v === 'string' && (v.includes(':') || v.includes('#'))) {
237
+ lines.push(`${k}: "${v.replace(/"/g, '\\"')}"`);
238
+ }
239
+ else {
240
+ lines.push(`${k}: ${v}`);
241
+ }
242
+ }
243
+ lines.push('---');
244
+ return lines.join('\n') + '\n';
245
+ }
246
+ /**
247
+ * Generate .opencode/commands/<name>.md from each user-invocable Rulebook
248
+ * slash-command template under templates/commands/.
249
+ */
250
+ export async function generateOpencodeCommands(projectRoot) {
251
+ const sourceDir = path.join(getTemplatesDir(), 'commands');
252
+ const targetDir = path.join(projectRoot, '.opencode', 'commands');
253
+ const written = [];
254
+ const preserved = [];
255
+ if (!existsSync(sourceDir)) {
256
+ return { written, preserved };
257
+ }
258
+ await mkdir(targetDir, { recursive: true });
259
+ const entries = await readdir(sourceDir);
260
+ for (const entry of entries) {
261
+ if (!entry.endsWith('.md'))
262
+ continue;
263
+ const sourcePath = path.join(sourceDir, entry);
264
+ const targetPath = path.join(targetDir, entry);
265
+ const raw = await readFile(sourcePath, 'utf-8');
266
+ const { meta, body } = parseFrontmatter(raw);
267
+ const description = (meta.description || meta.id || entry.replace(/\.md$/, '')).slice(0, 1024);
268
+ const opencodeFm = serializeFrontmatter({
269
+ description,
270
+ });
271
+ const newBody = `${opencodeFm}${RULEBOOK_MARKER}\n${body.trimEnd()}\n${RULEBOOK_END_MARKER}\n`;
272
+ const result = await writeManagedMarkdown(targetPath, newBody);
273
+ if (result === 'written')
274
+ written.push(targetPath);
275
+ else
276
+ preserved.push(targetPath);
277
+ }
278
+ return { written, preserved };
279
+ }
280
+ /**
281
+ * Translate a Rulebook role-agent definition to the OpenCode agent schema.
282
+ */
283
+ function buildOpencodeAgentBody(meta, body, name) {
284
+ const description = (meta.description || `${name} role agent`).slice(0, 1024);
285
+ const tier = (meta.model || 'sonnet').toLowerCase();
286
+ const model = MODEL_TIER_MAP[tier] || MODEL_TIER_MAP.sonnet;
287
+ const isReadOnly = READ_ONLY_AGENTS.has(name);
288
+ const mode = name === 'team-lead' ? 'primary' : 'subagent';
289
+ const fm = [
290
+ '---',
291
+ `description: "${description.replace(/"/g, '\\"')}"`,
292
+ `mode: ${mode}`,
293
+ `model: ${model}`,
294
+ 'permission:',
295
+ ` edit: ${isReadOnly ? 'deny' : 'allow'}`,
296
+ ` bash: ${isReadOnly ? 'ask' : 'allow'}`,
297
+ ' webfetch: allow',
298
+ '---',
299
+ '',
300
+ ].join('\n');
301
+ return `${fm}${RULEBOOK_MARKER}\n${body.trimEnd()}\n${RULEBOOK_END_MARKER}\n`;
302
+ }
303
+ /**
304
+ * Generate .opencode/agents/<role>.md from each Rulebook role agent.
305
+ * Sources are templates/agents/<role>.md; we emit one OpenCode agent per
306
+ * source role.
307
+ */
308
+ export async function generateOpencodeAgents(projectRoot) {
309
+ const sourceDir = path.join(getTemplatesDir(), 'agents');
310
+ const targetDir = path.join(projectRoot, '.opencode', 'agents');
311
+ const written = [];
312
+ const preserved = [];
313
+ if (!existsSync(sourceDir)) {
314
+ return { written, preserved };
315
+ }
316
+ await mkdir(targetDir, { recursive: true });
317
+ const entries = await readdir(sourceDir);
318
+ for (const entry of entries) {
319
+ if (!entry.endsWith('.md'))
320
+ continue;
321
+ const name = entry.replace(/\.md$/, '');
322
+ const sourcePath = path.join(sourceDir, entry);
323
+ const sourceStat = await stat(sourcePath);
324
+ if (!sourceStat.isFile())
325
+ continue;
326
+ const raw = await readFile(sourcePath, 'utf-8');
327
+ const { meta, body } = parseFrontmatter(raw);
328
+ const newContent = buildOpencodeAgentBody(meta, body, name);
329
+ const targetPath = path.join(targetDir, entry);
330
+ const result = await writeManagedMarkdown(targetPath, newContent);
331
+ if (result === 'written')
332
+ written.push(targetPath);
333
+ else
334
+ preserved.push(targetPath);
335
+ }
336
+ return { written, preserved };
337
+ }
338
+ /**
339
+ * Normalize a skill name to OpenCode's regex `[a-z0-9](-[a-z0-9])*` with a
340
+ * 64-char limit. Sequences of non-alphanumerics collapse into single hyphens
341
+ * and any leading/trailing hyphens are stripped.
342
+ */
343
+ export function normalizeOpencodeSkillName(raw) {
344
+ const lower = raw.toLowerCase();
345
+ const collapsed = lower.replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
346
+ const truncated = collapsed.slice(0, 64).replace(/-+$/g, '');
347
+ return truncated || 'skill';
348
+ }
349
+ /**
350
+ * Bound description to OpenCode's [1, 1024]-char range.
351
+ */
352
+ function clampDescription(raw, fallback) {
353
+ const text = (raw && raw.trim()) || fallback;
354
+ if (text.length <= 1024)
355
+ return text;
356
+ return text.slice(0, 1021).trimEnd() + '...';
357
+ }
358
+ /**
359
+ * Generate .opencode/skills/<normalized-name>/SKILL.md for every dev skill
360
+ * under templates/skills/dev/. Throws on a name collision so two source
361
+ * skills never silently overwrite each other.
362
+ */
363
+ export async function generateOpencodeSkills(projectRoot) {
364
+ const sourceDir = path.join(getTemplatesDir(), 'skills', 'dev');
365
+ const targetDir = path.join(projectRoot, '.opencode', 'skills');
366
+ const written = [];
367
+ const preserved = [];
368
+ const orphaned = [];
369
+ if (!existsSync(sourceDir)) {
370
+ return { written, preserved, orphaned };
371
+ }
372
+ await mkdir(targetDir, { recursive: true });
373
+ const entries = await readdir(sourceDir, { withFileTypes: true });
374
+ const collisions = new Map();
375
+ const sourceNames = new Set();
376
+ for (const entry of entries) {
377
+ if (!entry.isDirectory())
378
+ continue;
379
+ const skillFile = path.join(sourceDir, entry.name, 'SKILL.md');
380
+ if (!existsSync(skillFile))
381
+ continue;
382
+ const raw = await readFile(skillFile, 'utf-8');
383
+ const { meta, body } = parseFrontmatter(raw);
384
+ const sourceName = meta.name || entry.name;
385
+ const normalized = normalizeOpencodeSkillName(sourceName);
386
+ if (!collisions.has(normalized))
387
+ collisions.set(normalized, []);
388
+ collisions.get(normalized).push(entry.name);
389
+ if (collisions.get(normalized).length > 1) {
390
+ throw new Error(`OpenCode skill name collision: source skills [${collisions
391
+ .get(normalized)
392
+ .join(', ')}] all normalize to "${normalized}"`);
393
+ }
394
+ sourceNames.add(normalized);
395
+ const description = clampDescription(meta.description, `${normalized} skill`);
396
+ const fm = serializeFrontmatter({ name: normalized, description });
397
+ const newBody = `${fm}${RULEBOOK_MARKER}\n${body.trimEnd()}\n${RULEBOOK_END_MARKER}\n`;
398
+ const targetPath = path.join(targetDir, normalized, 'SKILL.md');
399
+ const result = await writeManagedMarkdown(targetPath, newBody);
400
+ if (result === 'written')
401
+ written.push(targetPath);
402
+ else
403
+ preserved.push(targetPath);
404
+ }
405
+ // Cleanup: remove managed skill dirs whose source no longer exists.
406
+ if (existsSync(targetDir)) {
407
+ const existing = await readdir(targetDir, { withFileTypes: true });
408
+ for (const dirent of existing) {
409
+ if (!dirent.isDirectory())
410
+ continue;
411
+ if (sourceNames.has(dirent.name))
412
+ continue;
413
+ const skillPath = path.join(targetDir, dirent.name, 'SKILL.md');
414
+ if (!existsSync(skillPath))
415
+ continue;
416
+ const content = await readFile(skillPath, 'utf-8');
417
+ if (!content.includes(RULEBOOK_MARKER))
418
+ continue;
419
+ await rm(path.join(targetDir, dirent.name), { recursive: true, force: true });
420
+ orphaned.push(path.join(targetDir, dirent.name));
421
+ }
422
+ }
423
+ return { written, preserved, orphaned };
424
+ }
425
+ /**
426
+ * Run all four OpenCode generators in sequence and aggregate the results.
427
+ * This is the entry point used by `init` and `update`.
428
+ */
429
+ export async function generateOpencodeIntegration(projectRoot, detection) {
430
+ const result = {
431
+ commands: [],
432
+ agents: [],
433
+ skills: [],
434
+ preserved: [],
435
+ };
436
+ const cfg = await generateOpencodeConfig(projectRoot, detection);
437
+ result.configPath = cfg.configPath;
438
+ result.managedKeysPath = cfg.managedKeysPath;
439
+ const cmds = await generateOpencodeCommands(projectRoot);
440
+ result.commands = cmds.written;
441
+ result.preserved.push(...cmds.preserved);
442
+ const agents = await generateOpencodeAgents(projectRoot);
443
+ result.agents = agents.written;
444
+ result.preserved.push(...agents.preserved);
445
+ const skills = await generateOpencodeSkills(projectRoot);
446
+ result.skills = skills.written;
447
+ result.preserved.push(...skills.preserved);
448
+ return result;
449
+ }
450
+ //# sourceMappingURL=opencode-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-generator.js","sourceRoot":"","sources":["../../../src/core/ide/opencode-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAClD,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AACpD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AACnD,MAAM,UAAU,GAAG,iCAAiC,CAAC;AAErD,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,cAAc,CAAU,CAAC;AACpE,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC,MAAM,cAAc,GAA2B;IAC7C,KAAK,EAAE,4BAA4B;IACnC,MAAM,EAAE,6BAA6B;IACrC,IAAI,EAAE,2BAA2B;CAClC,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,eAAe;IACf,mBAAmB;IACnB,wBAAwB;IACxB,aAAa;IACb,sBAAsB;CACvB,CAAC,CAAC;AAmCH;;GAEG;AACH,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,QAAQ,CAAc,CAAS;IAC5C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAM,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,CAAS,EAAE,IAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,wBAAwB,CAAC,WAAmB;IACzD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,SAAS,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,WAAW,CAAC,EAAE,CAAC;QACzE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YAClD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,YAAY,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,qBAAqB,CAAC,WAAmB;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAK5B,WAAW,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;IAChD,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAsB;YAC/B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,IAAI;SACd,CAAC;QACF,IAAI,QAAQ,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;QACnC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+EAA+E;IAC/E,8EAA8E;IAC9E,uEAAuE;IACvE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,YAAY,CAAC;QAChE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,UAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEhE,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAiB,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpE,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;IAE9B,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC1D,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;IAEzC,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,oBAAoB,GAAa,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QACzE,CAAC,CAAE,QAAQ,CAAC,YAAyB;QACrC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,oBAAoB,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC;QAClE,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC;IAE/B,MAAM,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAoB;QACnC,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC,GAAG,sBAAsB,CAAC;QACrC,UAAU,EAAE,CAAC,eAAe,CAAC;QAC7B,YAAY,EAAE,eAAe;KAC9B,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC/E,MAAM,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAE9C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,oBAAoB,CACjC,QAAgB,EAChB,IAAY;IAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC5C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,eAAe,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,mBAAmB,IAAI,CAAC;IAEtE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACxC,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,qEAAqE;IACrE,qBAAqB;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAgD;IAC5E,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE,CAAC;gBACpE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAElE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE/C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAE/F,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACtC,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,GAAG,UAAU,GAAG,eAAe,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,mBAAmB,IAAI,CAAC;QAE/F,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;YAC9C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAA4B,EAAE,IAAY,EAAE,IAAY;IACtF,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC;IAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAE3D,MAAM,EAAE,GAAG;QACT,KAAK;QACL,iBAAiB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;QACpD,SAAS,IAAI,EAAE;QACf,UAAU,KAAK,EAAE;QACjB,aAAa;QACb,WAAW,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;QAC1C,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;QACzC,mBAAmB;QACnB,KAAK;QACL,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,GAAG,EAAE,GAAG,eAAe,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,mBAAmB,IAAI,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAAE,SAAS;QAEnC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;YAC9C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,SAAS,IAAI,OAAO,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,GAAW,EAAE,QAAgB;IACrD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QAErC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;QAC3C,MAAM,UAAU,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,iDAAiD,UAAU;iBACxD,GAAG,CAAC,UAAU,CAAE;iBAChB,IAAI,CAAC,IAAI,CAAC,uBAAuB,UAAU,GAAG,CAClD,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE5B,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,UAAU,QAAQ,CAAC,CAAC;QAC9E,MAAM,EAAE,GAAG,oBAAoB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,eAAe,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,mBAAmB,IAAI,CAAC;QAEvF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;YAC9C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,oEAAoE;IACpE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBAAE,SAAS;YACpC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS;YACrC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAE,SAAS;YACjD,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,SAA2B;IAE3B,MAAM,MAAM,GAA6B;QACvC,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IACnC,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IAE7C,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;IAC/B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ExistingAgentsInfo, ProjectConfig } from '../types.js';
2
- import { CLAUDE_MD_SENTINEL_END } from './claude-md-generator.js';
2
+ import { CLAUDE_MD_SENTINEL_END } from './claude/claude-md-generator.js';
3
3
  export declare function mergeAgents(existing: ExistingAgentsInfo, config: ProjectConfig): Promise<string>;
4
4
  export declare function mergeLanguageRules(existing: ExistingAgentsInfo, language: string): Promise<string>;
5
5
  export declare function mergeModuleRules(existing: ExistingAgentsInfo, module: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAc,MAAM,aAAa,CAAC;AAOjF,OAAO,EAKL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAIlC,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAgEjB;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;IACxB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkCrF;AA0ED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAc,MAAM,aAAa,CAAC;AAWjF,OAAO,EAKL,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAIzC,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAgEjB;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,iBAAiB,CAAC;IACxB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkCrF;AA0ED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,8 +1,8 @@
1
- import { generateAgentsContent, generateLanguageRules, generateModuleRules } from './generator.js';
1
+ import { generateAgentsContent, generateLanguageRules, generateModuleRules, } from './generators/generator.js';
2
2
  import { hasEmbeddedTemplates, migrateEmbeddedTemplates, replaceEmbeddedWithReferences, } from './migrator.js';
3
- import { generateClaudeMd, getClaudeMdPath, hasV2Sentinels, writeClaudeMd, CLAUDE_MD_SENTINEL_END, } from './claude-md-generator.js';
3
+ import { generateClaudeMd, getClaudeMdPath, hasV2Sentinels, writeClaudeMd, CLAUDE_MD_SENTINEL_END, } from './claude/claude-md-generator.js';
4
4
  import { fileExists, readFile, writeFile } from '../utils/file-system.js';
5
- import { getOverridePath, initOverride } from './override-manager.js';
5
+ import { getOverridePath, initOverride } from './state/override-manager.js';
6
6
  export async function mergeAgents(existing, config) {
7
7
  const lines = existing.content.split('\n');
8
8
  const rulebookBlock = existing.blocks.find((b) => b.name === 'RULEBOOK');
@@ -54,7 +54,7 @@ export async function mergeModuleRules(existing, module) {
54
54
  export async function mergeFullAgents(existing, config, projectRoot) {
55
55
  // Always use lean template — the procedural 6k-line output is deprecated.
56
56
  if (projectRoot) {
57
- const { generateLeanAgents } = await import('./generator.js');
57
+ const { generateLeanAgents } = await import('./generators/generator.js');
58
58
  return await generateLeanAgents(config, projectRoot);
59
59
  }
60
60
  // Check if we need to migrate from embedded to modular
@@ -79,7 +79,7 @@ export async function mergeFullAgents(existing, config, projectRoot) {
79
79
  };
80
80
  // If modular mode, use generateModularAgents instead of merging blocks
81
81
  if (config.modular !== false && projectRoot) {
82
- const { generateModularAgents } = await import('./generator.js');
82
+ const { generateModularAgents } = await import('./generators/generator.js');
83
83
  return await generateModularAgents(config, projectRoot);
84
84
  }
85
85
  // Legacy: Merge language rules (embedded)
@@ -1 +1 @@
1
- {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/core/merger.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,6 @@ export declare function hasEmbeddedTemplates(existing: ExistingAgentsInfo): bool
9
9
  export declare function migrateEmbeddedTemplates(existing: ExistingAgentsInfo, config: ProjectConfig, projectRoot: string): Promise<{
10
10
  extractedLanguages: string[];
11
11
  extractedModules: string[];
12
- extractedFrameworks: string[];
13
12
  }>;
14
13
  /**
15
14
  * Replace embedded templates with references in AGENTS.md
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/core/migrator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASrE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAoB1E;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC,CA4ED;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAoB,GAChC,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAoB,GAChC,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsCtC"}
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/core/migrator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQrE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAc1E;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC,CAsDD;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAoB,GAChC,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAoB,GAChC,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAsCtC"}
@@ -1,6 +1,6 @@
1
1
  import path from 'path';
2
2
  import { writeFile, ensureDir, fileExists, readFile } from '../utils/file-system.js';
3
- import { generateLanguageRules, generateModuleRules, generateFrameworkRules, generateModularAgents, } from './generator.js';
3
+ import { generateLanguageRules, generateModuleRules, generateModularAgents, } from './generators/generator.js';
4
4
  import fs from 'fs/promises';
5
5
  /**
6
6
  * Detect if AGENTS.md contains embedded templates (legacy mode)
@@ -12,11 +12,7 @@ export function hasEmbeddedTemplates(existing) {
12
12
  const embeddedLanguagePattern = /<!--\s*(TYPESCRIPT|RUST|PYTHON|JAVASCRIPT|GO|JAVA|ELIXIR|CSHARP|PHP|SWIFT|KOTLIN|CPP|C|SOLIDITY|ZIG|ERLANG|DART|RUBY|SCALA|R|HASKELL|JULIA|LUA|ADA|SAS|LISP|OBJECTIVEC|SQL):START\s*-->/i;
13
13
  // Check for embedded module blocks (e.g., <!-- VECTORIZER:START -->)
14
14
  const embeddedModulePattern = /<!--\s*(VECTORIZER|SYNAP|CONTEXT7|GITHUB|PLAYWRIGHT|SUPABASE|NOTION|ATLASSIAN|SERENA|FIGMA|GRAFANA|AGENT_AUTOMATION):START\s*-->/i;
15
- // Check for embedded framework blocks (e.g., <!-- REACT:START -->)
16
- const embeddedFrameworkPattern = /<!--\s*(NESTJS|SPRING|LARAVEL|ANGULAR|REACT|VUE|NUXT|NEXTJS|DJANGO|RAILS|FLASK|SYMFONY|ZEND|JQUERY|REACTNATIVE|FLUTTER|ELECTRON):START\s*-->/i;
17
- return (embeddedLanguagePattern.test(existing.content) ||
18
- embeddedModulePattern.test(existing.content) ||
19
- embeddedFrameworkPattern.test(existing.content));
15
+ return (embeddedLanguagePattern.test(existing.content) || embeddedModulePattern.test(existing.content));
20
16
  }
21
17
  /**
22
18
  * Extract embedded template content and write to /rulebook/ directory
@@ -29,9 +25,8 @@ export async function migrateEmbeddedTemplates(existing, config, projectRoot) {
29
25
  // This is intentional for migration - existing modular files take precedence
30
26
  const extractedLanguages = [];
31
27
  const extractedModules = [];
32
- const extractedFrameworks = [];
33
28
  if (!existing.content) {
34
- return { extractedLanguages, extractedModules, extractedFrameworks };
29
+ return { extractedLanguages, extractedModules };
35
30
  }
36
31
  // Extract language blocks
37
32
  for (const language of config.languages) {
@@ -69,27 +64,7 @@ export async function migrateEmbeddedTemplates(existing, config, projectRoot) {
69
64
  extractedModules.push(module);
70
65
  }
71
66
  }
72
- // Extract framework blocks
73
- if (config.frameworks) {
74
- for (const framework of config.frameworks) {
75
- const blockName = framework.toUpperCase();
76
- const frameworkBlock = existing.blocks.find((b) => b.name === blockName);
77
- if (frameworkBlock && frameworkBlock.content) {
78
- // Write extracted content to /rulebook/[FRAMEWORK].md
79
- const filePath = path.join(specsPath, `${blockName}.md`);
80
- await writeFile(filePath, frameworkBlock.content);
81
- extractedFrameworks.push(framework);
82
- }
83
- else {
84
- // Generate new template if not found
85
- const frameworkRules = await generateFrameworkRules(framework);
86
- const filePath = path.join(specsPath, `${blockName}.md`);
87
- await writeFile(filePath, frameworkRules);
88
- extractedFrameworks.push(framework);
89
- }
90
- }
91
- }
92
- return { extractedLanguages, extractedModules, extractedFrameworks };
67
+ return { extractedLanguages, extractedModules };
93
68
  }
94
69
  /**
95
70
  * Replace embedded templates with references in AGENTS.md