@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,86 @@
1
+ import type { RulebookConfig } from '../../types.js';
2
+ export declare class ConfigManager {
3
+ private configPath;
4
+ private configDir;
5
+ private projectRoot;
6
+ private config;
7
+ constructor(projectRoot: string);
8
+ /**
9
+ * Load configuration from .rulebook/rulebook.json file
10
+ */
11
+ loadConfig(): Promise<RulebookConfig>;
12
+ /**
13
+ * Save configuration to .rulebook/rulebook.json file
14
+ */
15
+ saveConfig(config: RulebookConfig): Promise<void>;
16
+ /**
17
+ * Migrate old .rulebook file to new .rulebook/rulebook.json structure
18
+ */
19
+ private migrateOldRulebookFile;
20
+ /**
21
+ * Initialize new configuration with defaults
22
+ */
23
+ initializeConfig(): Promise<RulebookConfig>;
24
+ /**
25
+ * Migrate configuration from older versions
26
+ */
27
+ migrateConfig(config: RulebookConfig): Promise<RulebookConfig>;
28
+ /**
29
+ * Update specific configuration values
30
+ */
31
+ updateConfig(updates: Partial<RulebookConfig>): Promise<RulebookConfig>;
32
+ /**
33
+ * Enable or disable a feature
34
+ */
35
+ toggleFeature(feature: keyof RulebookConfig['features'], enabled: boolean): Promise<RulebookConfig>;
36
+ /**
37
+ * Detect available CLI tools
38
+ */
39
+ detectCLITools(): Promise<string[]>;
40
+ /**
41
+ * Update detected CLI tools in config
42
+ */
43
+ updateCLITools(): Promise<RulebookConfig>;
44
+ /**
45
+ * Get configuration value
46
+ */
47
+ getConfigValue<K extends keyof RulebookConfig>(key: K): Promise<RulebookConfig[K]>;
48
+ /**
49
+ * Check if feature is enabled
50
+ */
51
+ isFeatureEnabled(feature: keyof RulebookConfig['features']): Promise<boolean>;
52
+ /**
53
+ * Get configuration summary
54
+ */
55
+ getConfigSummary(): Promise<{
56
+ version: string;
57
+ projectId: string;
58
+ enabledFeatures: string[];
59
+ coverageThreshold: number;
60
+ cliTools: string[];
61
+ }>;
62
+ /**
63
+ * Migrate old rulebook/ directory into .rulebook/
64
+ * Moves rulebook/specs/ → .rulebook/specs/ and rulebook/tasks/ → .rulebook/tasks/
65
+ * Then removes the now-empty rulebook/ directory
66
+ */
67
+ migrateRulebookDirectory(): Promise<void>;
68
+ /**
69
+ * Migrate old directory structure to new consolidated structure
70
+ * Moves .rulebook-memory/ to .rulebook/memory/ and .rulebook-ralph/ to .rulebook/ralph/
71
+ */
72
+ migrateDirectoryStructure(projectRoot: string): Promise<void>;
73
+ /**
74
+ * Ensure .gitignore has .rulebook entries with specs/ and tasks/ exceptions
75
+ */
76
+ ensureGitignore(): Promise<void>;
77
+ }
78
+ /**
79
+ * Create a new ConfigManager instance
80
+ */
81
+ export declare function createConfigManager(projectRoot: string): ConfigManager;
82
+ /**
83
+ * Get default configuration
84
+ */
85
+ export declare function getDefaultConfig(): RulebookConfig;
86
+ //# sourceMappingURL=config-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/core/state/config-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAmBrD,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAA+B;gBAEjC,WAAW,EAAE,MAAM;IAM/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;IA8B3C;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BvD;;OAEG;YACW,sBAAsB;IAiCpC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC;IAsDjD;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAuEpE;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ7E;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,cAAc,CAAC,UAAU,CAAC,EACzC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,CAAC;IAc1B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBzC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC;IAK/C;;OAEG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAKxF;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnF;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IAgBF;;;;OAIG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyD/C;;;OAGG;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiFnE;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CA6DvC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAEtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAuCjD"}
@@ -0,0 +1,562 @@
1
+ import { readFile, writeFile, existsSync, readFileSync } from 'fs';
2
+ import { promisify } from 'util';
3
+ import { join, dirname } from 'path';
4
+ import { randomUUID } from 'crypto';
5
+ import { fileURLToPath } from 'url';
6
+ import { cp, rm, mkdir } from 'fs/promises';
7
+ const readFileAsync = promisify(readFile);
8
+ const writeFileAsync = promisify(writeFile);
9
+ const CONFIG_DIR = '.rulebook';
10
+ const CONFIG_FILE = 'rulebook.json';
11
+ function getPackageVersion() {
12
+ try {
13
+ const __dirname = dirname(fileURLToPath(import.meta.url));
14
+ const packagePath = join(__dirname, '..', '..', '..', 'package.json');
15
+ const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
16
+ return packageJson.version;
17
+ }
18
+ catch {
19
+ return '2.2.0';
20
+ }
21
+ }
22
+ export class ConfigManager {
23
+ configPath;
24
+ configDir;
25
+ projectRoot;
26
+ config = null;
27
+ constructor(projectRoot) {
28
+ this.projectRoot = projectRoot;
29
+ this.configDir = join(projectRoot, CONFIG_DIR);
30
+ this.configPath = join(this.configDir, CONFIG_FILE);
31
+ }
32
+ /**
33
+ * Load configuration from .rulebook/rulebook.json file
34
+ */
35
+ async loadConfig() {
36
+ if (this.config) {
37
+ return this.config;
38
+ }
39
+ // Migrate old .rulebook file to new directory structure if needed
40
+ await this.migrateOldRulebookFile();
41
+ // Migrate old rulebook/ directory into .rulebook/
42
+ await this.migrateRulebookDirectory();
43
+ if (!existsSync(this.configPath)) {
44
+ return await this.initializeConfig();
45
+ }
46
+ try {
47
+ const data = await readFileAsync(this.configPath, 'utf-8');
48
+ const loadedConfig = JSON.parse(data);
49
+ // Migrate config if needed
50
+ const migratedConfig = await this.migrateConfig(loadedConfig);
51
+ this.config = migratedConfig;
52
+ return migratedConfig;
53
+ }
54
+ catch (error) {
55
+ console.warn('Failed to load config, initializing new one:', error);
56
+ return await this.initializeConfig();
57
+ }
58
+ }
59
+ /**
60
+ * Save configuration to .rulebook/rulebook.json file
61
+ */
62
+ async saveConfig(config) {
63
+ try {
64
+ const fsPromises = await import('fs/promises');
65
+ // Check if .rulebook exists as a file (old structure) and remove it
66
+ const oldConfigPath = join(this.projectRoot, '.rulebook');
67
+ if (existsSync(oldConfigPath)) {
68
+ const stats = await fsPromises.stat(oldConfigPath);
69
+ if (stats.isFile()) {
70
+ // It's a file, remove it
71
+ await fsPromises.rm(oldConfigPath, { force: true });
72
+ }
73
+ }
74
+ // Ensure .rulebook directory exists
75
+ await mkdir(this.configDir, { recursive: true });
76
+ const configToSave = {
77
+ ...config,
78
+ updatedAt: new Date().toISOString(),
79
+ };
80
+ await writeFileAsync(this.configPath, JSON.stringify(configToSave, null, 2));
81
+ this.config = configToSave;
82
+ }
83
+ catch (error) {
84
+ throw new Error(`Failed to save config: ${error}`);
85
+ }
86
+ }
87
+ /**
88
+ * Migrate old .rulebook file to new .rulebook/rulebook.json structure
89
+ */
90
+ async migrateOldRulebookFile() {
91
+ const oldConfigPath = join(this.projectRoot, '.rulebook');
92
+ const fsPromises = await import('fs/promises');
93
+ // Check if old .rulebook file exists and is a file (not directory)
94
+ if (!existsSync(oldConfigPath)) {
95
+ return;
96
+ }
97
+ try {
98
+ const stats = await fsPromises.stat(oldConfigPath);
99
+ if (stats.isDirectory()) {
100
+ // Already migrated
101
+ return;
102
+ }
103
+ // Old file exists as a file, migrate it
104
+ const data = await readFileAsync(oldConfigPath, 'utf-8');
105
+ const config = JSON.parse(data);
106
+ // Remove old file first (before creating directory with same name)
107
+ await fsPromises.rm(oldConfigPath, { force: true });
108
+ // Create .rulebook directory
109
+ await mkdir(this.configDir, { recursive: true });
110
+ // Save config to new location
111
+ await this.saveConfig(config);
112
+ }
113
+ catch {
114
+ // Silently skip migration errors - they'll be handled by loadConfig
115
+ }
116
+ }
117
+ /**
118
+ * Initialize new configuration with defaults
119
+ */
120
+ async initializeConfig() {
121
+ const now = new Date().toISOString();
122
+ const projectId = randomUUID();
123
+ const defaultConfig = {
124
+ version: getPackageVersion(),
125
+ installedAt: now,
126
+ updatedAt: now,
127
+ projectId,
128
+ mode: 'full',
129
+ features: {
130
+ watcher: true,
131
+ agent: true,
132
+ logging: true,
133
+ notifications: false,
134
+ dryRun: false,
135
+ gitHooks: false,
136
+ repl: false,
137
+ templates: false,
138
+ context: false,
139
+ health: false,
140
+ plugins: false,
141
+ parallel: false,
142
+ smartContinue: false,
143
+ },
144
+ coverageThreshold: 95,
145
+ language: 'en',
146
+ outputLanguage: 'en',
147
+ cliTools: [],
148
+ maxParallelTasks: 1,
149
+ timeouts: {
150
+ taskExecution: 300000, // 5 minutes
151
+ cliResponse: 60000, // 1 minute
152
+ testRun: 120000, // 2 minutes
153
+ },
154
+ memory: {
155
+ enabled: false,
156
+ dbPath: '.rulebook/memory/memory.db',
157
+ maxSizeBytes: 524288000,
158
+ autoCapture: false,
159
+ vectorDimensions: 256,
160
+ },
161
+ agentsMode: 'lean',
162
+ monorepo: {
163
+ detected: false,
164
+ tool: null,
165
+ packages: [],
166
+ },
167
+ };
168
+ await this.saveConfig(defaultConfig);
169
+ return defaultConfig;
170
+ }
171
+ /**
172
+ * Migrate configuration from older versions
173
+ */
174
+ async migrateConfig(config) {
175
+ const migrated = { ...config };
176
+ // Migrate directory structure from old to new layout
177
+ await this.migrateDirectoryStructure(this.projectRoot);
178
+ // Add missing features with defaults
179
+ const defaultFeatures = {
180
+ watcher: true,
181
+ agent: true,
182
+ logging: true,
183
+ notifications: false,
184
+ dryRun: false,
185
+ gitHooks: false,
186
+ repl: false,
187
+ templates: false,
188
+ context: false,
189
+ health: false,
190
+ plugins: false,
191
+ parallel: false,
192
+ smartContinue: false,
193
+ };
194
+ migrated.features = { ...defaultFeatures, ...migrated.features };
195
+ if (!migrated.mode) {
196
+ migrated.mode = 'full';
197
+ }
198
+ // Add missing top-level properties
199
+ if (!migrated.outputLanguage) {
200
+ migrated.outputLanguage = migrated.language || 'en';
201
+ }
202
+ if (!migrated.maxParallelTasks) {
203
+ migrated.maxParallelTasks = 1;
204
+ }
205
+ if (!migrated.timeouts) {
206
+ migrated.timeouts = {
207
+ taskExecution: 300000,
208
+ cliResponse: 60000,
209
+ testRun: 120000,
210
+ };
211
+ }
212
+ // Add memory config with defaults (disabled by default to save resources)
213
+ if (!migrated.memory) {
214
+ migrated.memory = {
215
+ enabled: false,
216
+ dbPath: '.rulebook/memory/memory.db',
217
+ maxSizeBytes: 524288000,
218
+ autoCapture: false,
219
+ vectorDimensions: 256,
220
+ };
221
+ }
222
+ else {
223
+ // Preserve existing memory.enabled — don't force it
224
+ if (!migrated.memory.dbPath)
225
+ migrated.memory.dbPath = '.rulebook/memory/memory.db';
226
+ if (!migrated.memory.maxSizeBytes)
227
+ migrated.memory.maxSizeBytes = 524288000;
228
+ if (migrated.memory.autoCapture === undefined)
229
+ migrated.memory.autoCapture = false;
230
+ if (!migrated.memory.vectorDimensions)
231
+ migrated.memory.vectorDimensions = 256;
232
+ }
233
+ // v4 migration: ensure .rulebook/scripts/ dir is noted in config
234
+ // Scripts dir will be populated on next init/update
235
+ // No config changes needed — scripts are filesystem-only
236
+ // Update version
237
+ migrated.version = getPackageVersion();
238
+ return migrated;
239
+ }
240
+ /**
241
+ * Update specific configuration values
242
+ */
243
+ async updateConfig(updates) {
244
+ const currentConfig = await this.loadConfig();
245
+ const updatedConfig = { ...currentConfig, ...updates };
246
+ await this.saveConfig(updatedConfig);
247
+ return updatedConfig;
248
+ }
249
+ /**
250
+ * Enable or disable a feature
251
+ */
252
+ async toggleFeature(feature, enabled) {
253
+ const currentConfig = await this.loadConfig();
254
+ const updatedConfig = {
255
+ ...currentConfig,
256
+ features: {
257
+ ...currentConfig.features,
258
+ [feature]: enabled,
259
+ },
260
+ };
261
+ await this.saveConfig(updatedConfig);
262
+ return updatedConfig;
263
+ }
264
+ /**
265
+ * Detect available CLI tools
266
+ */
267
+ async detectCLITools() {
268
+ const { execa } = await import('execa');
269
+ const cliTools = [];
270
+ const tools = ['cursor-agent', 'claude-code', 'gemini-cli', 'opencode'];
271
+ for (const tool of tools) {
272
+ try {
273
+ await execa(tool, ['--version'], { timeout: 5000 });
274
+ cliTools.push(tool);
275
+ }
276
+ catch {
277
+ // Tool not available
278
+ }
279
+ }
280
+ return cliTools;
281
+ }
282
+ /**
283
+ * Update detected CLI tools in config
284
+ */
285
+ async updateCLITools() {
286
+ const detectedTools = await this.detectCLITools();
287
+ return await this.updateConfig({ cliTools: detectedTools });
288
+ }
289
+ /**
290
+ * Get configuration value
291
+ */
292
+ async getConfigValue(key) {
293
+ const config = await this.loadConfig();
294
+ return config[key];
295
+ }
296
+ /**
297
+ * Check if feature is enabled
298
+ */
299
+ async isFeatureEnabled(feature) {
300
+ const config = await this.loadConfig();
301
+ return config.features[feature];
302
+ }
303
+ /**
304
+ * Get configuration summary
305
+ */
306
+ async getConfigSummary() {
307
+ const config = await this.loadConfig();
308
+ const enabledFeatures = Object.entries(config.features)
309
+ .filter(([, enabled]) => enabled)
310
+ .map(([feature]) => feature);
311
+ return {
312
+ version: config.version,
313
+ projectId: config.projectId,
314
+ enabledFeatures,
315
+ coverageThreshold: config.coverageThreshold,
316
+ cliTools: config.cliTools,
317
+ };
318
+ }
319
+ /**
320
+ * Migrate old rulebook/ directory into .rulebook/
321
+ * Moves rulebook/specs/ → .rulebook/specs/ and rulebook/tasks/ → .rulebook/tasks/
322
+ * Then removes the now-empty rulebook/ directory
323
+ */
324
+ async migrateRulebookDirectory() {
325
+ const fsPromises = await import('fs/promises');
326
+ const oldRulebookDir = join(this.projectRoot, 'rulebook');
327
+ const newRulebookDir = join(this.projectRoot, '.rulebook');
328
+ // Only migrate if old rulebook/ directory exists
329
+ if (!existsSync(oldRulebookDir)) {
330
+ return;
331
+ }
332
+ try {
333
+ const stats = await fsPromises.stat(oldRulebookDir);
334
+ if (!stats.isDirectory()) {
335
+ return;
336
+ }
337
+ }
338
+ catch {
339
+ return;
340
+ }
341
+ try {
342
+ // Ensure .rulebook directory exists
343
+ await mkdir(newRulebookDir, { recursive: true });
344
+ // Migrate specs/
345
+ const oldSpecsDir = join(oldRulebookDir, 'specs');
346
+ const newSpecsDir = join(newRulebookDir, 'specs');
347
+ if (existsSync(oldSpecsDir)) {
348
+ if (!existsSync(newSpecsDir)) {
349
+ await cp(oldSpecsDir, newSpecsDir, { recursive: true });
350
+ }
351
+ await rm(oldSpecsDir, { recursive: true, force: true });
352
+ }
353
+ // Migrate tasks/
354
+ const oldTasksDir = join(oldRulebookDir, 'tasks');
355
+ const newTasksDir = join(newRulebookDir, 'tasks');
356
+ if (existsSync(oldTasksDir)) {
357
+ if (!existsSync(newTasksDir)) {
358
+ await cp(oldTasksDir, newTasksDir, { recursive: true });
359
+ }
360
+ await rm(oldTasksDir, { recursive: true, force: true });
361
+ }
362
+ // Remove empty rulebook/ directory if it's now empty
363
+ try {
364
+ const remaining = await fsPromises.readdir(oldRulebookDir);
365
+ if (remaining.length === 0) {
366
+ await rm(oldRulebookDir, { recursive: true, force: true });
367
+ }
368
+ }
369
+ catch {
370
+ // Ignore errors reading the directory
371
+ }
372
+ }
373
+ catch (error) {
374
+ console.warn(`Rulebook directory migration warning: ${error}`);
375
+ }
376
+ }
377
+ /**
378
+ * Migrate old directory structure to new consolidated structure
379
+ * Moves .rulebook-memory/ to .rulebook/memory/ and .rulebook-ralph/ to .rulebook/ralph/
380
+ */
381
+ async migrateDirectoryStructure(projectRoot) {
382
+ const fsPromises = await import('fs/promises');
383
+ const { mkdir } = fsPromises;
384
+ const oldMemoryDir = join(projectRoot, '.rulebook-memory');
385
+ const oldRalphDir = join(projectRoot, '.rulebook-ralph');
386
+ const newRulebookDir = join(projectRoot, '.rulebook');
387
+ const newMemoryDir = join(newRulebookDir, 'memory');
388
+ const newRalphDir = join(newRulebookDir, 'ralph');
389
+ try {
390
+ // Check if .rulebook exists
391
+ if (existsSync(newRulebookDir)) {
392
+ const stats = await fsPromises.stat(newRulebookDir);
393
+ if (stats.isFile()) {
394
+ // Old .rulebook file exists, remove it
395
+ await fsPromises.rm(newRulebookDir, { force: true });
396
+ }
397
+ else if (stats.isDirectory()) {
398
+ // Already migrated to directory structure, skip migration
399
+ // Clean up accidental subdirectories and exit
400
+ const accidentalDir = join(newRulebookDir, '.rulebook');
401
+ if (existsSync(accidentalDir)) {
402
+ await fsPromises.rm(accidentalDir, { recursive: true, force: true });
403
+ }
404
+ return;
405
+ }
406
+ }
407
+ // Create parent .rulebook directory if needed
408
+ if (!existsSync(newRulebookDir)) {
409
+ await mkdir(newRulebookDir, { recursive: true });
410
+ }
411
+ // Migrate memory directory if it exists (but not if it's already in new location)
412
+ // Also prevent copying .rulebook into itself
413
+ if (existsSync(oldMemoryDir) &&
414
+ oldMemoryDir !== newMemoryDir &&
415
+ !oldMemoryDir.includes(newRulebookDir)) {
416
+ if (!existsSync(newMemoryDir)) {
417
+ await cp(oldMemoryDir, newMemoryDir, { recursive: true });
418
+ }
419
+ // Remove old directory after successful copy
420
+ await rm(oldMemoryDir, { recursive: true, force: true });
421
+ }
422
+ // Migrate ralph directory if it exists (but not if it's already in new location)
423
+ // Also prevent copying .rulebook into itself
424
+ if (existsSync(oldRalphDir) &&
425
+ oldRalphDir !== newRalphDir &&
426
+ !oldRalphDir.includes(newRulebookDir)) {
427
+ if (!existsSync(newRalphDir)) {
428
+ await cp(oldRalphDir, newRalphDir, { recursive: true });
429
+ }
430
+ // Remove old directory after successful copy
431
+ await rm(oldRalphDir, { recursive: true, force: true });
432
+ }
433
+ // Clean up any accidental .rulebook/.rulebook directory
434
+ const accidentalDir = join(newRulebookDir, '.rulebook');
435
+ if (existsSync(accidentalDir)) {
436
+ await rm(accidentalDir, { recursive: true, force: true });
437
+ }
438
+ }
439
+ catch (error) {
440
+ // Log error but don't fail - migration is non-critical
441
+ // Still clean up accidental directories even if there's an error
442
+ try {
443
+ const accidentalDir = join(newRulebookDir, '.rulebook');
444
+ if (existsSync(accidentalDir)) {
445
+ const fsP = await import('fs/promises');
446
+ await fsP.rm(accidentalDir, { recursive: true, force: true });
447
+ }
448
+ }
449
+ catch {
450
+ // Ignore cleanup errors
451
+ }
452
+ console.warn(`Directory migration warning: ${error}`);
453
+ }
454
+ }
455
+ /**
456
+ * Ensure .gitignore has .rulebook entries with specs/ and tasks/ exceptions
457
+ */
458
+ async ensureGitignore() {
459
+ const gitignorePath = join(this.projectRoot, '.gitignore');
460
+ const rulebookBlock = [
461
+ '',
462
+ '# Rulebook - ignore runtime data, keep specs and tasks',
463
+ '/.rulebook/*',
464
+ '!/.rulebook/specs/',
465
+ '!/.rulebook/tasks/',
466
+ '!/.rulebook/tasks/**/*.md',
467
+ '!/.rulebook/rulebook.json',
468
+ ].join('\n');
469
+ try {
470
+ if (existsSync(gitignorePath)) {
471
+ let content = await readFileAsync(gitignorePath, 'utf-8');
472
+ // Already has the correct block with all exceptions
473
+ if (content.includes('!/.rulebook/specs/') &&
474
+ content.includes('!/.rulebook/tasks/**/*.md')) {
475
+ return;
476
+ }
477
+ // Has old-style entry without exceptions — replace it
478
+ if (content.includes('.rulebook')) {
479
+ // Remove old entries (with or without leading /)
480
+ const lines = content.split('\n');
481
+ const filtered = lines.filter((line) => {
482
+ const trimmed = line.trim();
483
+ return (trimmed !== '.rulebook' &&
484
+ trimmed !== '.rulebook/' &&
485
+ trimmed !== '.rulebook/*' &&
486
+ trimmed !== '/.rulebook' &&
487
+ trimmed !== '/.rulebook/' &&
488
+ trimmed !== '/.rulebook/*' &&
489
+ trimmed !== '!.rulebook/specs/' &&
490
+ trimmed !== '!.rulebook/tasks/' &&
491
+ trimmed !== '!.rulebook/tasks/**/*.md' &&
492
+ trimmed !== '!.rulebook/rulebook.json' &&
493
+ trimmed !== '!/.rulebook/specs/' &&
494
+ trimmed !== '!/.rulebook/tasks/' &&
495
+ trimmed !== '!/.rulebook/tasks/**/*.md' &&
496
+ trimmed !== '!/.rulebook/rulebook.json' &&
497
+ trimmed !== '# Rulebook - ignore runtime data, keep specs and tasks');
498
+ });
499
+ content = filtered.join('\n');
500
+ }
501
+ // Append the correct block
502
+ const separator = content.endsWith('\n') ? '' : '\n';
503
+ await writeFileAsync(gitignorePath, content + separator + rulebookBlock + '\n');
504
+ }
505
+ else {
506
+ await writeFileAsync(gitignorePath, rulebookBlock.trimStart() + '\n');
507
+ }
508
+ }
509
+ catch {
510
+ // Non-critical, don't fail init
511
+ }
512
+ }
513
+ }
514
+ /**
515
+ * Create a new ConfigManager instance
516
+ */
517
+ export function createConfigManager(projectRoot) {
518
+ return new ConfigManager(projectRoot);
519
+ }
520
+ /**
521
+ * Get default configuration
522
+ */
523
+ export function getDefaultConfig() {
524
+ const now = new Date().toISOString();
525
+ const projectId = randomUUID();
526
+ return {
527
+ version: getPackageVersion(),
528
+ installedAt: now,
529
+ updatedAt: now,
530
+ projectId,
531
+ mode: 'full',
532
+ features: {
533
+ watcher: true,
534
+ agent: true,
535
+ logging: true,
536
+ notifications: false,
537
+ dryRun: false,
538
+ gitHooks: false,
539
+ repl: false,
540
+ templates: false,
541
+ context: false,
542
+ health: false,
543
+ plugins: false,
544
+ parallel: false,
545
+ smartContinue: false,
546
+ },
547
+ coverageThreshold: 95,
548
+ language: 'en',
549
+ outputLanguage: 'en',
550
+ cliTools: [],
551
+ maxParallelTasks: 1,
552
+ timeouts: {
553
+ taskExecution: 300000,
554
+ cliResponse: 60000,
555
+ testRun: 120000,
556
+ },
557
+ memory: {
558
+ enabled: false,
559
+ },
560
+ };
561
+ }
562
+ //# sourceMappingURL=config-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../../src/core/state/config-manager.ts"],"names":[],"mappings":"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"}