@hivehub/rulebook 5.5.2 → 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 (325) 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/console/cli-bridge.d.ts +113 -0
  54. package/dist/core/console/cli-bridge.d.ts.map +1 -0
  55. package/dist/core/console/cli-bridge.js +1094 -0
  56. package/dist/core/console/cli-bridge.js.map +1 -0
  57. package/dist/core/detect/detector.d.ts +35 -0
  58. package/dist/core/detect/detector.d.ts.map +1 -0
  59. package/dist/core/detect/detector.js +541 -0
  60. package/dist/core/detect/detector.js.map +1 -0
  61. package/dist/core/docs/docs-generator.d.ts +9 -0
  62. package/dist/core/docs/docs-generator.d.ts.map +1 -0
  63. package/dist/core/docs/docs-generator.js +531 -0
  64. package/dist/core/docs/docs-generator.js.map +1 -0
  65. package/dist/core/docs/mcp-reference-generator.d.ts +13 -0
  66. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
  67. package/dist/core/docs/mcp-reference-generator.js +66 -0
  68. package/dist/core/docs/mcp-reference-generator.js.map +1 -0
  69. package/dist/core/generators/generator.d.ts +54 -0
  70. package/dist/core/generators/generator.d.ts.map +1 -0
  71. package/dist/core/generators/generator.js +1041 -0
  72. package/dist/core/generators/generator.js.map +1 -0
  73. package/dist/core/generators/gitignore-generator.d.ts +13 -0
  74. package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
  75. package/dist/core/generators/gitignore-generator.js +307 -0
  76. package/dist/core/generators/gitignore-generator.js.map +1 -0
  77. package/dist/core/generators/minimal-scaffolder.d.ts +8 -0
  78. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
  79. package/dist/core/generators/minimal-scaffolder.js +51 -0
  80. package/dist/core/generators/minimal-scaffolder.js.map +1 -0
  81. package/dist/core/generators/rules-generator.d.ts +73 -0
  82. package/dist/core/generators/rules-generator.d.ts.map +1 -0
  83. package/dist/core/generators/rules-generator.js +202 -0
  84. package/dist/core/generators/rules-generator.js.map +1 -0
  85. package/dist/core/generators/workflow-generator.d.ts +15 -0
  86. package/dist/core/generators/workflow-generator.d.ts.map +1 -0
  87. package/dist/core/generators/workflow-generator.js +390 -0
  88. package/dist/core/generators/workflow-generator.js.map +1 -0
  89. package/dist/core/ide/multi-tool-generator.d.ts +59 -0
  90. package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
  91. package/dist/core/ide/multi-tool-generator.js +157 -0
  92. package/dist/core/ide/multi-tool-generator.js.map +1 -0
  93. package/dist/core/ide/opencode-generator.d.ts +72 -0
  94. package/dist/core/ide/opencode-generator.d.ts.map +1 -0
  95. package/dist/core/ide/opencode-generator.js +450 -0
  96. package/dist/core/ide/opencode-generator.js.map +1 -0
  97. package/dist/core/merger.d.ts +1 -1
  98. package/dist/core/merger.d.ts.map +1 -1
  99. package/dist/core/merger.js +5 -5
  100. package/dist/core/merger.js.map +1 -1
  101. package/dist/core/migrator.d.ts +0 -1
  102. package/dist/core/migrator.d.ts.map +1 -1
  103. package/dist/core/migrator.js +4 -29
  104. package/dist/core/migrator.js.map +1 -1
  105. package/dist/core/quality/coverage-checker.d.ts +14 -0
  106. package/dist/core/quality/coverage-checker.d.ts.map +1 -0
  107. package/dist/core/quality/coverage-checker.js +176 -0
  108. package/dist/core/quality/coverage-checker.js.map +1 -0
  109. package/dist/core/quality/dependency-checker.d.ts +21 -0
  110. package/dist/core/quality/dependency-checker.d.ts.map +1 -0
  111. package/dist/core/quality/dependency-checker.js +247 -0
  112. package/dist/core/quality/dependency-checker.js.map +1 -0
  113. package/dist/core/quality/doctor.d.ts +19 -0
  114. package/dist/core/quality/doctor.d.ts.map +1 -0
  115. package/dist/core/quality/doctor.js +163 -0
  116. package/dist/core/quality/doctor.js.map +1 -0
  117. package/dist/core/quality/validator.d.ts +21 -0
  118. package/dist/core/quality/validator.d.ts.map +1 -0
  119. package/dist/core/quality/validator.js +177 -0
  120. package/dist/core/quality/validator.js.map +1 -0
  121. package/dist/core/skills/skills-manager.d.ts +126 -0
  122. package/dist/core/skills/skills-manager.d.ts.map +1 -0
  123. package/dist/core/skills/skills-manager.js +630 -0
  124. package/dist/core/skills/skills-manager.js.map +1 -0
  125. package/dist/core/state/config-manager.d.ts +86 -0
  126. package/dist/core/state/config-manager.d.ts.map +1 -0
  127. package/dist/core/state/config-manager.js +562 -0
  128. package/dist/core/state/config-manager.js.map +1 -0
  129. package/dist/core/state/override-manager.d.ts +23 -0
  130. package/dist/core/state/override-manager.d.ts.map +1 -0
  131. package/dist/core/state/override-manager.js +82 -0
  132. package/dist/core/state/override-manager.js.map +1 -0
  133. package/dist/core/state/state-writer.d.ts +34 -0
  134. package/dist/core/state/state-writer.d.ts.map +1 -0
  135. package/dist/core/state/state-writer.js +78 -0
  136. package/dist/core/state/state-writer.js.map +1 -0
  137. package/dist/core/state/version-bumper.d.ts +19 -0
  138. package/dist/core/state/version-bumper.d.ts.map +1 -0
  139. package/dist/core/state/version-bumper.js +180 -0
  140. package/dist/core/state/version-bumper.js.map +1 -0
  141. package/dist/core/tasks/decision-manager.d.ts +25 -0
  142. package/dist/core/tasks/decision-manager.d.ts.map +1 -0
  143. package/dist/core/tasks/decision-manager.js +183 -0
  144. package/dist/core/tasks/decision-manager.js.map +1 -0
  145. package/dist/core/tasks/knowledge-manager.d.ts +24 -0
  146. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
  147. package/dist/core/tasks/knowledge-manager.js +173 -0
  148. package/dist/core/tasks/knowledge-manager.js.map +1 -0
  149. package/dist/core/tasks/learn-manager.d.ts +27 -0
  150. package/dist/core/tasks/learn-manager.d.ts.map +1 -0
  151. package/dist/core/tasks/learn-manager.js +121 -0
  152. package/dist/core/tasks/learn-manager.js.map +1 -0
  153. package/dist/core/tasks/plans-manager.d.ts +46 -0
  154. package/dist/core/tasks/plans-manager.d.ts.map +1 -0
  155. package/dist/core/tasks/plans-manager.js +158 -0
  156. package/dist/core/tasks/plans-manager.js.map +1 -0
  157. package/dist/core/tasks/task-manager.d.ts +127 -0
  158. package/dist/core/tasks/task-manager.d.ts.map +1 -0
  159. package/dist/core/tasks/task-manager.js +607 -0
  160. package/dist/core/tasks/task-manager.js.map +1 -0
  161. package/dist/core/workspace/project-worker.d.ts +6 -6
  162. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  163. package/dist/core/workspace/project-worker.js +6 -6
  164. package/dist/core/workspace/project-worker.js.map +1 -1
  165. package/dist/index.d.ts +1 -1
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +19 -176
  168. package/dist/index.js.map +1 -1
  169. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  170. package/dist/mcp/rulebook-server.js +16 -960
  171. package/dist/mcp/rulebook-server.js.map +1 -1
  172. package/dist/memory/file-search.d.ts +43 -0
  173. package/dist/memory/file-search.d.ts.map +1 -0
  174. package/dist/memory/file-search.js +228 -0
  175. package/dist/memory/file-search.js.map +1 -0
  176. package/dist/memory/file-store.d.ts +99 -0
  177. package/dist/memory/file-store.d.ts.map +1 -0
  178. package/dist/memory/file-store.js +615 -0
  179. package/dist/memory/file-store.js.map +1 -0
  180. package/dist/memory/legacy-migrator.d.ts +27 -0
  181. package/dist/memory/legacy-migrator.d.ts.map +1 -0
  182. package/dist/memory/legacy-migrator.js +185 -0
  183. package/dist/memory/legacy-migrator.js.map +1 -0
  184. package/dist/memory/memory-manager.d.ts +25 -24
  185. package/dist/memory/memory-manager.d.ts.map +1 -1
  186. package/dist/memory/memory-manager.js +97 -140
  187. package/dist/memory/memory-manager.js.map +1 -1
  188. package/dist/memory/memory-types.d.ts +1 -1
  189. package/dist/memory/memory-types.d.ts.map +1 -1
  190. package/dist/types.d.ts +8 -119
  191. package/dist/types.d.ts.map +1 -1
  192. package/package.json +1 -6
  193. package/templates/agents/context-intelligence.md +50 -52
  194. package/templates/cli/OPENCODE.md +85 -18
  195. package/templates/commands/rulebook-learn-capture.md +41 -48
  196. package/templates/commands/rulebook-learn-list.md +13 -13
  197. package/templates/core/AGENTS_LEAN.md +0 -14
  198. package/templates/hooks/check-context-and-handoff.sh +8 -10
  199. package/templates/hooks/enforce-pre-tool.sh +70 -0
  200. package/templates/hooks/terse-mode-tracker.sh +146 -143
  201. package/templates/ides/OPENCODE.md +63 -0
  202. package/templates/skills/cli/opencode/SKILL.md +82 -28
  203. package/.claude/commands/ralph-config.md +0 -112
  204. package/.claude/commands/ralph-history.md +0 -110
  205. package/.claude/commands/ralph-init.md +0 -72
  206. package/.claude/commands/ralph-pause-resume.md +0 -105
  207. package/.claude/commands/ralph-run.md +0 -101
  208. package/.claude/commands/ralph-status.md +0 -76
  209. package/templates/core/RALPH.md +0 -471
  210. package/templates/frameworks/ANGULAR.md +0 -36
  211. package/templates/frameworks/DJANGO.md +0 -83
  212. package/templates/frameworks/ELECTRON.md +0 -147
  213. package/templates/frameworks/FLASK.md +0 -38
  214. package/templates/frameworks/FLUTTER.md +0 -55
  215. package/templates/frameworks/JQUERY.md +0 -32
  216. package/templates/frameworks/LARAVEL.md +0 -38
  217. package/templates/frameworks/NESTJS.md +0 -43
  218. package/templates/frameworks/NEXTJS.md +0 -127
  219. package/templates/frameworks/NUXT.md +0 -40
  220. package/templates/frameworks/RAILS.md +0 -66
  221. package/templates/frameworks/REACT.md +0 -38
  222. package/templates/frameworks/REACT_NATIVE.md +0 -47
  223. package/templates/frameworks/SPRING.md +0 -39
  224. package/templates/frameworks/SYMFONY.md +0 -36
  225. package/templates/frameworks/VUE.md +0 -36
  226. package/templates/frameworks/ZEND.md +0 -35
  227. package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
  228. package/templates/hooks/enforce-no-deferred.sh +0 -21
  229. package/templates/hooks/enforce-no-shortcuts.sh +0 -31
  230. package/templates/ides/COPILOT.md +0 -37
  231. package/templates/ides/CURSOR.md +0 -43
  232. package/templates/ides/JETBRAINS_AI.md +0 -35
  233. package/templates/ides/REPLIT.md +0 -36
  234. package/templates/ides/TABNINE.md +0 -29
  235. package/templates/ides/VSCODE.md +0 -40
  236. package/templates/ides/WINDSURF.md +0 -36
  237. package/templates/ides/ZED.md +0 -32
  238. package/templates/ides/cursor-mdc/go.mdc +0 -24
  239. package/templates/ides/cursor-mdc/python.mdc +0 -24
  240. package/templates/ides/cursor-mdc/quality.mdc +0 -25
  241. package/templates/ides/cursor-mdc/ralph.mdc +0 -39
  242. package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
  243. package/templates/ides/cursor-mdc/rust.mdc +0 -24
  244. package/templates/ides/cursor-mdc/typescript.mdc +0 -25
  245. package/templates/ralph/ralph-history.bat +0 -4
  246. package/templates/ralph/ralph-history.sh +0 -5
  247. package/templates/ralph/ralph-init.bat +0 -5
  248. package/templates/ralph/ralph-init.sh +0 -5
  249. package/templates/ralph/ralph-pause.bat +0 -5
  250. package/templates/ralph/ralph-pause.sh +0 -5
  251. package/templates/ralph/ralph-run.bat +0 -5
  252. package/templates/ralph/ralph-run.sh +0 -5
  253. package/templates/ralph/ralph-status.bat +0 -4
  254. package/templates/ralph/ralph-status.sh +0 -5
  255. package/templates/services/AZURE_BLOB.md +0 -184
  256. package/templates/services/CASSANDRA.md +0 -239
  257. package/templates/services/DATADOG.md +0 -26
  258. package/templates/services/DOCKER.md +0 -124
  259. package/templates/services/DOCKER_COMPOSE.md +0 -168
  260. package/templates/services/DYNAMODB.md +0 -308
  261. package/templates/services/ELASTICSEARCH.md +0 -347
  262. package/templates/services/GCS.md +0 -178
  263. package/templates/services/HELM.md +0 -194
  264. package/templates/services/INFLUXDB.md +0 -265
  265. package/templates/services/KAFKA.md +0 -341
  266. package/templates/services/KUBERNETES.md +0 -208
  267. package/templates/services/MARIADB.md +0 -183
  268. package/templates/services/MEMCACHED.md +0 -242
  269. package/templates/services/MINIO.md +0 -201
  270. package/templates/services/MONGODB.md +0 -268
  271. package/templates/services/MYSQL.md +0 -358
  272. package/templates/services/NEO4J.md +0 -247
  273. package/templates/services/OPENTELEMETRY.md +0 -25
  274. package/templates/services/ORACLE.md +0 -290
  275. package/templates/services/PINO.md +0 -24
  276. package/templates/services/POSTGRESQL.md +0 -326
  277. package/templates/services/PROMETHEUS.md +0 -33
  278. package/templates/services/RABBITMQ.md +0 -286
  279. package/templates/services/REDIS.md +0 -292
  280. package/templates/services/S3.md +0 -298
  281. package/templates/services/SENTRY.md +0 -23
  282. package/templates/services/SQLITE.md +0 -294
  283. package/templates/services/SQLSERVER.md +0 -294
  284. package/templates/services/WINSTON.md +0 -30
  285. package/templates/skills/frameworks/angular/SKILL.md +0 -46
  286. package/templates/skills/frameworks/django/SKILL.md +0 -93
  287. package/templates/skills/frameworks/electron/SKILL.md +0 -157
  288. package/templates/skills/frameworks/flask/SKILL.md +0 -48
  289. package/templates/skills/frameworks/flutter/SKILL.md +0 -65
  290. package/templates/skills/frameworks/jquery/SKILL.md +0 -42
  291. package/templates/skills/frameworks/laravel/SKILL.md +0 -48
  292. package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
  293. package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
  294. package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
  295. package/templates/skills/frameworks/rails/SKILL.md +0 -76
  296. package/templates/skills/frameworks/react/SKILL.md +0 -48
  297. package/templates/skills/frameworks/react-native/SKILL.md +0 -57
  298. package/templates/skills/frameworks/spring/SKILL.md +0 -49
  299. package/templates/skills/frameworks/symfony/SKILL.md +0 -46
  300. package/templates/skills/frameworks/vue/SKILL.md +0 -46
  301. package/templates/skills/frameworks/zend/SKILL.md +0 -45
  302. package/templates/skills/services/azure-blob/SKILL.md +0 -194
  303. package/templates/skills/services/cassandra/SKILL.md +0 -249
  304. package/templates/skills/services/dynamodb/SKILL.md +0 -318
  305. package/templates/skills/services/elasticsearch/SKILL.md +0 -357
  306. package/templates/skills/services/gcs/SKILL.md +0 -188
  307. package/templates/skills/services/influxdb/SKILL.md +0 -275
  308. package/templates/skills/services/kafka/SKILL.md +0 -351
  309. package/templates/skills/services/mariadb/SKILL.md +0 -193
  310. package/templates/skills/services/memcached/SKILL.md +0 -252
  311. package/templates/skills/services/minio/SKILL.md +0 -211
  312. package/templates/skills/services/mongodb/SKILL.md +0 -278
  313. package/templates/skills/services/mysql/SKILL.md +0 -368
  314. package/templates/skills/services/neo4j/SKILL.md +0 -257
  315. package/templates/skills/services/oracle/SKILL.md +0 -300
  316. package/templates/skills/services/postgresql/SKILL.md +0 -336
  317. package/templates/skills/services/rabbitmq/SKILL.md +0 -296
  318. package/templates/skills/services/redis/SKILL.md +0 -302
  319. package/templates/skills/services/s3/SKILL.md +0 -308
  320. package/templates/skills/services/sqlite/SKILL.md +0 -304
  321. package/templates/skills/services/sqlserver/SKILL.md +0 -304
  322. package/templates/skills/workflows/ralph/SETUP.md +0 -228
  323. package/templates/skills/workflows/ralph/SKILL.md +0 -309
  324. package/templates/skills/workflows/ralph/install.sh +0 -87
  325. 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":"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"}
@@ -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