@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,23 @@
1
+ /**
2
+ * Get path to AGENTS.override.md in the project root.
3
+ */
4
+ export declare function getOverridePath(projectRoot: string): string;
5
+ /**
6
+ * Check if AGENTS.override.md exists.
7
+ */
8
+ export declare function overrideExists(projectRoot: string): boolean;
9
+ /**
10
+ * Read override content, stripping OVERRIDE:START/END markers.
11
+ * Returns empty string if file does not exist or has no custom content.
12
+ */
13
+ export declare function readOverrideContent(projectRoot: string): Promise<string>;
14
+ /**
15
+ * Create AGENTS.override.md from template if it does not already exist.
16
+ * Returns true if file was created, false if it already existed.
17
+ */
18
+ export declare function initOverride(projectRoot: string): Promise<boolean>;
19
+ /**
20
+ * Clear AGENTS.override.md back to the empty template.
21
+ */
22
+ export declare function clearOverride(projectRoot: string): Promise<void>;
23
+ //# sourceMappingURL=override-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"override-manager.d.ts","sourceRoot":"","sources":["../../../src/core/state/override-manager.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB9E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4BxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtE"}
@@ -0,0 +1,82 @@
1
+ import { existsSync } from 'fs';
2
+ import { readFile, writeFile } from 'fs/promises';
3
+ import path from 'path';
4
+ import { fileExists } from '../../utils/file-system.js';
5
+ const OVERRIDE_FILE = 'AGENTS.override.md';
6
+ /**
7
+ * Get path to AGENTS.override.md in the project root.
8
+ */
9
+ export function getOverridePath(projectRoot) {
10
+ return path.join(projectRoot, OVERRIDE_FILE);
11
+ }
12
+ /**
13
+ * Check if AGENTS.override.md exists.
14
+ */
15
+ export function overrideExists(projectRoot) {
16
+ return existsSync(getOverridePath(projectRoot));
17
+ }
18
+ /**
19
+ * Read override content, stripping OVERRIDE:START/END markers.
20
+ * Returns empty string if file does not exist or has no custom content.
21
+ */
22
+ export async function readOverrideContent(projectRoot) {
23
+ const overridePath = getOverridePath(projectRoot);
24
+ if (!existsSync(overridePath))
25
+ return '';
26
+ const raw = await readFile(overridePath, 'utf-8');
27
+ // Strip marker comments — return only actual content between them
28
+ const match = raw.match(/<!-- OVERRIDE:START -->([\s\S]*?)<!-- OVERRIDE:END -->/);
29
+ if (!match)
30
+ return raw.trim();
31
+ const content = match[1].trim();
32
+ // If it still contains only the template placeholder text, treat as empty
33
+ if (content.includes('This file contains project-specific directives') &&
34
+ !content.split('\n').some((line) => line.startsWith('- ') && !line.includes('**Example'))) {
35
+ return '';
36
+ }
37
+ return content;
38
+ }
39
+ /**
40
+ * Create AGENTS.override.md from template if it does not already exist.
41
+ * Returns true if file was created, false if it already existed.
42
+ */
43
+ export async function initOverride(projectRoot) {
44
+ const overridePath = getOverridePath(projectRoot);
45
+ if (existsSync(overridePath))
46
+ return false;
47
+ const templatePath = path.join(path.dirname(path.dirname(new URL(import.meta.url).pathname)), 'templates', 'core', 'AGENTS_OVERRIDE.md');
48
+ let templateContent = '';
49
+ if (await fileExists(templatePath)) {
50
+ templateContent = await readFile(templatePath, 'utf-8');
51
+ }
52
+ else {
53
+ templateContent = [
54
+ '<!-- OVERRIDE:START -->',
55
+ '# Project-Specific Overrides',
56
+ '',
57
+ 'Add your custom rules and team conventions here.',
58
+ 'This file is never overwritten by `rulebook init` or `rulebook update`.',
59
+ '<!-- OVERRIDE:END -->',
60
+ '',
61
+ ].join('\n');
62
+ }
63
+ await writeFile(overridePath, templateContent);
64
+ return true;
65
+ }
66
+ /**
67
+ * Clear AGENTS.override.md back to the empty template.
68
+ */
69
+ export async function clearOverride(projectRoot) {
70
+ const overridePath = getOverridePath(projectRoot);
71
+ const emptyContent = [
72
+ '<!-- OVERRIDE:START -->',
73
+ '# Project-Specific Overrides',
74
+ '',
75
+ 'Add your custom rules and team conventions here.',
76
+ 'This file is never overwritten by `rulebook init` or `rulebook update`.',
77
+ '<!-- OVERRIDE:END -->',
78
+ '',
79
+ ].join('\n');
80
+ await writeFile(overridePath, emptyContent);
81
+ }
82
+ //# sourceMappingURL=override-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"override-manager.js","sourceRoot":"","sources":["../../../src/core/state/override-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * v5.3.0 F3 — `.rulebook/STATE.md` auto-regeneration.
3
+ *
4
+ * Renders a short (<40 line) machine-written status file imported by
5
+ * CLAUDE.md via `@.rulebook/STATE.md`. Updated on every task state
6
+ * change. Users can opt out by adding a `manual: true` YAML
7
+ * frontmatter flag.
8
+ */
9
+ export declare const STATE_FILE = ".rulebook/STATE.md";
10
+ export interface StateSnapshot {
11
+ activeTask?: {
12
+ id: string;
13
+ phase: string;
14
+ progress: string;
15
+ } | null;
16
+ lastQualityGate?: string | null;
17
+ healthScore?: number | null;
18
+ updatedAt: string;
19
+ }
20
+ export declare function getStatePath(projectRoot: string): string;
21
+ /**
22
+ * Check whether the STATE.md has `manual: true` frontmatter, meaning
23
+ * the user maintains it by hand and rulebook should not touch it.
24
+ */
25
+ export declare function isManuallyMaintained(projectRoot: string): Promise<boolean>;
26
+ /**
27
+ * Write or overwrite `.rulebook/STATE.md` with the given snapshot.
28
+ * No-op if the file has `manual: true` frontmatter.
29
+ */
30
+ export declare function writeState(projectRoot: string, snapshot: StateSnapshot): Promise<{
31
+ path: string;
32
+ written: boolean;
33
+ }>;
34
+ //# sourceMappingURL=state-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-writer.d.ts","sourceRoot":"","sources":["../../../src/core/state/state-writer.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,eAAO,MAAM,UAAU,uBAAuB,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKhF;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAU7C"}
@@ -0,0 +1,78 @@
1
+ import path from 'path';
2
+ import { writeFile, fileExists, readFile, ensureDir } from '../../utils/file-system.js';
3
+ /**
4
+ * v5.3.0 F3 — `.rulebook/STATE.md` auto-regeneration.
5
+ *
6
+ * Renders a short (<40 line) machine-written status file imported by
7
+ * CLAUDE.md via `@.rulebook/STATE.md`. Updated on every task state
8
+ * change. Users can opt out by adding a `manual: true` YAML
9
+ * frontmatter flag.
10
+ */
11
+ export const STATE_FILE = '.rulebook/STATE.md';
12
+ export function getStatePath(projectRoot) {
13
+ return path.join(projectRoot, STATE_FILE);
14
+ }
15
+ /**
16
+ * Check whether the STATE.md has `manual: true` frontmatter, meaning
17
+ * the user maintains it by hand and rulebook should not touch it.
18
+ */
19
+ export async function isManuallyMaintained(projectRoot) {
20
+ const target = getStatePath(projectRoot);
21
+ if (!(await fileExists(target)))
22
+ return false;
23
+ const content = await readFile(target);
24
+ return /^---\n[\s\S]*?manual:\s*true/m.test(content);
25
+ }
26
+ /**
27
+ * Write or overwrite `.rulebook/STATE.md` with the given snapshot.
28
+ * No-op if the file has `manual: true` frontmatter.
29
+ */
30
+ export async function writeState(projectRoot, snapshot) {
31
+ if (await isManuallyMaintained(projectRoot)) {
32
+ return { path: getStatePath(projectRoot), written: false };
33
+ }
34
+ const target = getStatePath(projectRoot);
35
+ await ensureDir(path.dirname(target));
36
+ const content = renderState(snapshot);
37
+ await writeFile(target, content);
38
+ return { path: target, written: true };
39
+ }
40
+ function renderState(s) {
41
+ const lines = [
42
+ '<!-- Auto-generated by rulebook v5.3.0. Do not edit — changes will be overwritten. -->',
43
+ '<!-- Add `manual: true` frontmatter to opt out of auto-generation. -->',
44
+ '',
45
+ '# Project state',
46
+ '',
47
+ `**Last updated**: ${s.updatedAt}`,
48
+ '',
49
+ ];
50
+ if (s.activeTask) {
51
+ lines.push(`## Active task`);
52
+ lines.push('');
53
+ lines.push(`- **ID**: \`${s.activeTask.id}\``);
54
+ lines.push(`- **Phase**: ${s.activeTask.phase}`);
55
+ lines.push(`- **Progress**: ${s.activeTask.progress}`);
56
+ lines.push('');
57
+ }
58
+ else {
59
+ lines.push('## Active task');
60
+ lines.push('');
61
+ lines.push('No active task.');
62
+ lines.push('');
63
+ }
64
+ if (s.lastQualityGate) {
65
+ lines.push(`## Quality gate`);
66
+ lines.push('');
67
+ lines.push(`- **Last status**: ${s.lastQualityGate}`);
68
+ lines.push('');
69
+ }
70
+ if (s.healthScore != null) {
71
+ lines.push(`## Health`);
72
+ lines.push('');
73
+ lines.push(`- **Score**: ${s.healthScore}/100`);
74
+ lines.push('');
75
+ }
76
+ return lines.join('\n');
77
+ }
78
+ //# sourceMappingURL=state-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-writer.js","sourceRoot":"","sources":["../../../src/core/state/state-writer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAExF;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAS/C,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAAmB,EACnB,QAAuB;IAEvB,IAAI,MAAM,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,CAAgB;IACnC,MAAM,KAAK,GAAa;QACtB,wFAAwF;QACxF,wEAAwE;QACxE,EAAE;QACF,iBAAiB;QACjB,EAAE;QACF,qBAAqB,CAAC,CAAC,SAAS,EAAE;QAClC,EAAE;KACH,CAAC;IAEF,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type BumpType = 'major' | 'minor' | 'patch';
2
+ export interface VersionBumpResult {
3
+ oldVersion: string;
4
+ newVersion: string;
5
+ filesUpdated: string[];
6
+ }
7
+ /**
8
+ * Bump semantic version
9
+ */
10
+ export declare function bumpVersion(version: string, type: BumpType): string;
11
+ /**
12
+ * Get current version from project files
13
+ */
14
+ export declare function getCurrentVersion(projectDir: string): Promise<string | null>;
15
+ /**
16
+ * Bump version across all project files
17
+ */
18
+ export declare function bumpProjectVersion(projectDir: string, bumpType: BumpType): Promise<VersionBumpResult>;
19
+ //# sourceMappingURL=version-bumper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-bumper.d.ts","sourceRoot":"","sources":["../../../src/core/state/version-bumper.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyBnE;AA+GD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BlF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,iBAAiB,CAAC,CA4C5B"}
@@ -0,0 +1,180 @@
1
+ import { readFile, writeFile, fileExists } from '../../utils/file-system.js';
2
+ import path from 'path';
3
+ import { exec } from 'child_process';
4
+ import { promisify } from 'util';
5
+ const execAsync = promisify(exec);
6
+ /**
7
+ * Bump semantic version
8
+ */
9
+ export function bumpVersion(version, type) {
10
+ const parts = version.replace(/^v/, '').split('.').map(Number);
11
+ if (parts.length !== 3 || parts.some(isNaN)) {
12
+ throw new Error(`Invalid version format: ${version}`);
13
+ }
14
+ let [major, minor, patch] = parts;
15
+ switch (type) {
16
+ case 'major':
17
+ major += 1;
18
+ minor = 0;
19
+ patch = 0;
20
+ break;
21
+ case 'minor':
22
+ minor += 1;
23
+ patch = 0;
24
+ break;
25
+ case 'patch':
26
+ patch += 1;
27
+ break;
28
+ }
29
+ return `${major}.${minor}.${patch}`;
30
+ }
31
+ /**
32
+ * Update version in package.json
33
+ */
34
+ async function updatePackageJson(projectDir, newVersion) {
35
+ const packagePath = path.join(projectDir, 'package.json');
36
+ if (!(await fileExists(packagePath))) {
37
+ return false;
38
+ }
39
+ const content = await readFile(packagePath);
40
+ const pkg = JSON.parse(content);
41
+ pkg.version = newVersion;
42
+ await writeFile(packagePath, JSON.stringify(pkg, null, 2) + '\n');
43
+ return true;
44
+ }
45
+ /**
46
+ * Update version in Cargo.toml
47
+ */
48
+ async function updateCargoToml(projectDir, newVersion) {
49
+ const cargoPath = path.join(projectDir, 'Cargo.toml');
50
+ if (!(await fileExists(cargoPath))) {
51
+ return false;
52
+ }
53
+ let content = await readFile(cargoPath);
54
+ content = content.replace(/^version\s*=\s*"[^"]+"/m, `version = "${newVersion}"`);
55
+ await writeFile(cargoPath, content);
56
+ return true;
57
+ }
58
+ /**
59
+ * Update version in pyproject.toml
60
+ */
61
+ async function updatePyprojectToml(projectDir, newVersion) {
62
+ const pyprojectPath = path.join(projectDir, 'pyproject.toml');
63
+ if (!(await fileExists(pyprojectPath))) {
64
+ return false;
65
+ }
66
+ let content = await readFile(pyprojectPath);
67
+ content = content.replace(/^version\s*=\s*"[^"]+"/m, `version = "${newVersion}"`);
68
+ await writeFile(pyprojectPath, content);
69
+ return true;
70
+ }
71
+ /**
72
+ * Update version in mix.exs (Elixir)
73
+ */
74
+ async function updateMixExs(projectDir, newVersion) {
75
+ const mixPath = path.join(projectDir, 'mix.exs');
76
+ if (!(await fileExists(mixPath))) {
77
+ return false;
78
+ }
79
+ let content = await readFile(mixPath);
80
+ content = content.replace(/version:\s*"[^"]+"/, `version: "${newVersion}"`);
81
+ await writeFile(mixPath, content);
82
+ return true;
83
+ }
84
+ /**
85
+ * Update version in build.gradle.kts (Kotlin)
86
+ */
87
+ async function updateGradleKts(projectDir, newVersion) {
88
+ const gradlePath = path.join(projectDir, 'build.gradle.kts');
89
+ if (!(await fileExists(gradlePath))) {
90
+ return false;
91
+ }
92
+ let content = await readFile(gradlePath);
93
+ content = content.replace(/version\s*=\s*"[^"]+"/, `version = "${newVersion}"`);
94
+ await writeFile(gradlePath, content);
95
+ return true;
96
+ }
97
+ /**
98
+ * Update version in .csproj (C#)
99
+ */
100
+ async function updateCsproj(projectDir, newVersion) {
101
+ const csprojFiles = await execAsync(`find . -maxdepth 2 -name "*.csproj" 2>/dev/null || true`, {
102
+ cwd: projectDir,
103
+ });
104
+ if (!csprojFiles.stdout.trim()) {
105
+ return false;
106
+ }
107
+ const csprojPath = path.join(projectDir, csprojFiles.stdout.trim().split('\n')[0].replace('./', ''));
108
+ let content = await readFile(csprojPath);
109
+ content = content.replace(/<Version>[^<]+<\/Version>/, `<Version>${newVersion}</Version>`);
110
+ await writeFile(csprojPath, content);
111
+ return true;
112
+ }
113
+ /**
114
+ * Get current version from project files
115
+ */
116
+ export async function getCurrentVersion(projectDir) {
117
+ // Check package.json
118
+ const packagePath = path.join(projectDir, 'package.json');
119
+ if (await fileExists(packagePath)) {
120
+ const content = await readFile(packagePath);
121
+ const pkg = JSON.parse(content);
122
+ return pkg.version;
123
+ }
124
+ // Check Cargo.toml
125
+ const cargoPath = path.join(projectDir, 'Cargo.toml');
126
+ if (await fileExists(cargoPath)) {
127
+ const content = await readFile(cargoPath);
128
+ const match = content.match(/^version\s*=\s*"([^"]+)"/m);
129
+ if (match)
130
+ return match[1];
131
+ }
132
+ // Check pyproject.toml
133
+ const pyprojectPath = path.join(projectDir, 'pyproject.toml');
134
+ if (await fileExists(pyprojectPath)) {
135
+ const content = await readFile(pyprojectPath);
136
+ const match = content.match(/^version\s*=\s*"([^"]+)"/m);
137
+ if (match)
138
+ return match[1];
139
+ }
140
+ return null;
141
+ }
142
+ /**
143
+ * Bump version across all project files
144
+ */
145
+ export async function bumpProjectVersion(projectDir, bumpType) {
146
+ const currentVersion = await getCurrentVersion(projectDir);
147
+ if (!currentVersion) {
148
+ throw new Error('Could not find version in project files');
149
+ }
150
+ const newVersion = bumpVersion(currentVersion, bumpType);
151
+ const filesUpdated = [];
152
+ // Update all version files
153
+ if (await updatePackageJson(projectDir, newVersion)) {
154
+ filesUpdated.push('package.json');
155
+ }
156
+ if (await updateCargoToml(projectDir, newVersion)) {
157
+ filesUpdated.push('Cargo.toml');
158
+ }
159
+ if (await updatePyprojectToml(projectDir, newVersion)) {
160
+ filesUpdated.push('pyproject.toml');
161
+ }
162
+ if (await updateMixExs(projectDir, newVersion)) {
163
+ filesUpdated.push('mix.exs');
164
+ }
165
+ if (await updateGradleKts(projectDir, newVersion)) {
166
+ filesUpdated.push('build.gradle.kts');
167
+ }
168
+ if (await updateCsproj(projectDir, newVersion)) {
169
+ filesUpdated.push('*.csproj');
170
+ }
171
+ if (filesUpdated.length === 0) {
172
+ throw new Error('No version files found to update');
173
+ }
174
+ return {
175
+ oldVersion: currentVersion,
176
+ newVersion,
177
+ filesUpdated,
178
+ };
179
+ }
180
+ //# sourceMappingURL=version-bumper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-bumper.js","sourceRoot":"","sources":["../../../src/core/state/version-bumper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Decision, DecisionStatus } from '../../types.js';
2
+ export declare class DecisionManager {
3
+ private decisionsPath;
4
+ constructor(projectRoot: string, rulebookDir?: string);
5
+ private ensureDir;
6
+ getNextId(): Promise<number>;
7
+ create(title: string, options?: {
8
+ context?: string;
9
+ decision?: string;
10
+ alternatives?: string[];
11
+ consequences?: string;
12
+ relatedTasks?: string[];
13
+ status?: DecisionStatus;
14
+ }): Promise<Decision>;
15
+ list(status?: DecisionStatus): Promise<Decision[]>;
16
+ show(id: number): Promise<{
17
+ decision: Decision;
18
+ content: string;
19
+ } | null>;
20
+ update(id: number, fields: Partial<Pick<Decision, 'status' | 'context' | 'decision' | 'consequences' | 'alternatives'>>): Promise<Decision | null>;
21
+ supersede(oldId: number, newId: number): Promise<boolean>;
22
+ getForGenerator(): Promise<string>;
23
+ private renderMarkdown;
24
+ }
25
+ //# sourceMappingURL=decision-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-manager.d.ts","sourceRoot":"","sources":["../../../src/core/tasks/decision-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAe/D,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,MAAM,EAAE,WAAW,GAAE,MAAoB;IAIlE,OAAO,CAAC,SAAS;IAMX,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAW5B,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,cAAc,CAAC;KACpB,GACL,OAAO,CAAC,QAAQ,CAAC;IA4Cd,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoBlD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAmBzE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CACb,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,GAAG,cAAc,CAAC,CACpF,GACA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAkCrB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BzD,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAqBxC,OAAO,CAAC,cAAc;CAsBvB"}