aicodeman 0.2.9 → 0.3.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 (347) hide show
  1. package/README.md +91 -0
  2. package/dist/ai-idle-checker.d.ts.map +1 -1
  3. package/dist/ai-idle-checker.js +3 -2
  4. package/dist/ai-idle-checker.js.map +1 -1
  5. package/dist/ai-plan-checker.d.ts.map +1 -1
  6. package/dist/ai-plan-checker.js +3 -2
  7. package/dist/ai-plan-checker.js.map +1 -1
  8. package/dist/bash-tool-parser.d.ts +2 -3
  9. package/dist/bash-tool-parser.d.ts.map +1 -1
  10. package/dist/bash-tool-parser.js +14 -31
  11. package/dist/bash-tool-parser.js.map +1 -1
  12. package/dist/config/ai-defaults.d.ts +16 -0
  13. package/dist/config/ai-defaults.d.ts.map +1 -0
  14. package/dist/config/ai-defaults.js +16 -0
  15. package/dist/config/ai-defaults.js.map +1 -0
  16. package/dist/config/auth-config.d.ts +19 -0
  17. package/dist/config/auth-config.d.ts.map +1 -0
  18. package/dist/config/auth-config.js +28 -0
  19. package/dist/config/auth-config.js.map +1 -0
  20. package/dist/config/exec-timeout.d.ts +10 -0
  21. package/dist/config/exec-timeout.d.ts.map +1 -0
  22. package/dist/config/exec-timeout.js +10 -0
  23. package/dist/config/exec-timeout.js.map +1 -0
  24. package/dist/config/map-limits.d.ts +4 -0
  25. package/dist/config/map-limits.d.ts.map +1 -1
  26. package/dist/config/map-limits.js +7 -0
  27. package/dist/config/map-limits.js.map +1 -1
  28. package/dist/config/server-timing.d.ts +36 -0
  29. package/dist/config/server-timing.d.ts.map +1 -0
  30. package/dist/config/server-timing.js +51 -0
  31. package/dist/config/server-timing.js.map +1 -0
  32. package/dist/config/team-config.d.ts +16 -0
  33. package/dist/config/team-config.d.ts.map +1 -0
  34. package/dist/config/team-config.js +16 -0
  35. package/dist/config/team-config.js.map +1 -0
  36. package/dist/config/terminal-limits.d.ts +18 -0
  37. package/dist/config/terminal-limits.d.ts.map +1 -0
  38. package/dist/config/terminal-limits.js +18 -0
  39. package/dist/config/terminal-limits.js.map +1 -0
  40. package/dist/config/tunnel-config.d.ts +27 -0
  41. package/dist/config/tunnel-config.d.ts.map +1 -0
  42. package/dist/config/tunnel-config.js +36 -0
  43. package/dist/config/tunnel-config.js.map +1 -0
  44. package/dist/hooks-config.d.ts.map +1 -1
  45. package/dist/hooks-config.js +7 -6
  46. package/dist/hooks-config.js.map +1 -1
  47. package/dist/image-watcher.d.ts +4 -4
  48. package/dist/image-watcher.d.ts.map +1 -1
  49. package/dist/image-watcher.js +17 -30
  50. package/dist/image-watcher.js.map +1 -1
  51. package/dist/index.js +1 -2
  52. package/dist/index.js.map +1 -1
  53. package/dist/plan-orchestrator.d.ts +2 -24
  54. package/dist/plan-orchestrator.d.ts.map +1 -1
  55. package/dist/plan-orchestrator.js.map +1 -1
  56. package/dist/push-store.d.ts +1 -1
  57. package/dist/push-store.d.ts.map +1 -1
  58. package/dist/push-store.js +4 -12
  59. package/dist/push-store.js.map +1 -1
  60. package/dist/ralph-fix-plan-watcher.d.ts +91 -0
  61. package/dist/ralph-fix-plan-watcher.d.ts.map +1 -0
  62. package/dist/ralph-fix-plan-watcher.js +326 -0
  63. package/dist/ralph-fix-plan-watcher.js.map +1 -0
  64. package/dist/ralph-plan-tracker.d.ts +201 -0
  65. package/dist/ralph-plan-tracker.d.ts.map +1 -0
  66. package/dist/ralph-plan-tracker.js +325 -0
  67. package/dist/ralph-plan-tracker.js.map +1 -0
  68. package/dist/ralph-stall-detector.d.ts +84 -0
  69. package/dist/ralph-stall-detector.d.ts.map +1 -0
  70. package/dist/ralph-stall-detector.js +139 -0
  71. package/dist/ralph-stall-detector.js.map +1 -0
  72. package/dist/ralph-status-parser.d.ts +141 -0
  73. package/dist/ralph-status-parser.d.ts.map +1 -0
  74. package/dist/ralph-status-parser.js +478 -0
  75. package/dist/ralph-status-parser.js.map +1 -0
  76. package/dist/ralph-tracker.d.ts +194 -685
  77. package/dist/ralph-tracker.d.ts.map +1 -1
  78. package/dist/ralph-tracker.js +349 -1713
  79. package/dist/ralph-tracker.js.map +1 -1
  80. package/dist/respawn-adaptive-timing.d.ts +61 -0
  81. package/dist/respawn-adaptive-timing.d.ts.map +1 -0
  82. package/dist/respawn-adaptive-timing.js +105 -0
  83. package/dist/respawn-adaptive-timing.js.map +1 -0
  84. package/dist/respawn-controller.d.ts +12 -101
  85. package/dist/respawn-controller.d.ts.map +1 -1
  86. package/dist/respawn-controller.js +144 -593
  87. package/dist/respawn-controller.js.map +1 -1
  88. package/dist/respawn-health.d.ts +54 -0
  89. package/dist/respawn-health.d.ts.map +1 -0
  90. package/dist/respawn-health.js +183 -0
  91. package/dist/respawn-health.js.map +1 -0
  92. package/dist/respawn-metrics.d.ts +81 -0
  93. package/dist/respawn-metrics.d.ts.map +1 -0
  94. package/dist/respawn-metrics.js +198 -0
  95. package/dist/respawn-metrics.js.map +1 -0
  96. package/dist/respawn-patterns.d.ts +45 -0
  97. package/dist/respawn-patterns.d.ts.map +1 -0
  98. package/dist/respawn-patterns.js +125 -0
  99. package/dist/respawn-patterns.js.map +1 -0
  100. package/dist/session-auto-ops.d.ts +89 -0
  101. package/dist/session-auto-ops.d.ts.map +1 -0
  102. package/dist/session-auto-ops.js +224 -0
  103. package/dist/session-auto-ops.js.map +1 -0
  104. package/dist/session-cli-builder.d.ts +62 -0
  105. package/dist/session-cli-builder.d.ts.map +1 -0
  106. package/dist/session-cli-builder.js +121 -0
  107. package/dist/session-cli-builder.js.map +1 -0
  108. package/dist/session-task-cache.d.ts +52 -0
  109. package/dist/session-task-cache.d.ts.map +1 -0
  110. package/dist/session-task-cache.js +90 -0
  111. package/dist/session-task-cache.js.map +1 -0
  112. package/dist/session.d.ts +2 -33
  113. package/dist/session.d.ts.map +1 -1
  114. package/dist/session.js +58 -309
  115. package/dist/session.js.map +1 -1
  116. package/dist/state-store.d.ts +2 -2
  117. package/dist/state-store.d.ts.map +1 -1
  118. package/dist/state-store.js +12 -23
  119. package/dist/state-store.js.map +1 -1
  120. package/dist/subagent-watcher.d.ts +3 -4
  121. package/dist/subagent-watcher.d.ts.map +1 -1
  122. package/dist/subagent-watcher.js +24 -61
  123. package/dist/subagent-watcher.js.map +1 -1
  124. package/dist/team-watcher.d.ts.map +1 -1
  125. package/dist/team-watcher.js +2 -5
  126. package/dist/team-watcher.js.map +1 -1
  127. package/dist/tmux-manager.d.ts.map +1 -1
  128. package/dist/tmux-manager.js +1 -2
  129. package/dist/tmux-manager.js.map +1 -1
  130. package/dist/tunnel-manager.d.ts +26 -0
  131. package/dist/tunnel-manager.d.ts.map +1 -1
  132. package/dist/tunnel-manager.js +127 -7
  133. package/dist/tunnel-manager.js.map +1 -1
  134. package/dist/types/api.d.ts +93 -0
  135. package/dist/types/api.d.ts.map +1 -0
  136. package/dist/types/api.js +83 -0
  137. package/dist/types/api.js.map +1 -0
  138. package/dist/types/app-state.d.ts +100 -0
  139. package/dist/types/app-state.d.ts.map +1 -0
  140. package/dist/types/app-state.js +59 -0
  141. package/dist/types/app-state.js.map +1 -0
  142. package/dist/types/common.d.ts +70 -0
  143. package/dist/types/common.d.ts.map +1 -0
  144. package/dist/types/common.js +8 -0
  145. package/dist/types/common.js.map +1 -0
  146. package/dist/types/index.d.ts +18 -0
  147. package/dist/types/index.d.ts.map +1 -0
  148. package/dist/types/index.js +18 -0
  149. package/dist/types/index.js.map +1 -0
  150. package/dist/types/lifecycle.d.ts +17 -0
  151. package/dist/types/lifecycle.d.ts.map +1 -0
  152. package/dist/types/lifecycle.js +5 -0
  153. package/dist/types/lifecycle.js.map +1 -0
  154. package/dist/types/plan.d.ts +32 -0
  155. package/dist/types/plan.d.ts.map +1 -0
  156. package/dist/types/plan.js +5 -0
  157. package/dist/types/plan.js.map +1 -0
  158. package/dist/types/push.d.ts +23 -0
  159. package/dist/types/push.d.ts.map +1 -0
  160. package/dist/types/push.js +5 -0
  161. package/dist/types/push.js.map +1 -0
  162. package/dist/types/ralph.d.ts +241 -0
  163. package/dist/types/ralph.d.ts.map +1 -0
  164. package/dist/types/ralph.js +49 -0
  165. package/dist/types/ralph.js.map +1 -0
  166. package/dist/types/respawn.d.ts +250 -0
  167. package/dist/types/respawn.d.ts.map +1 -0
  168. package/dist/types/respawn.js +5 -0
  169. package/dist/types/respawn.js.map +1 -0
  170. package/dist/types/run-summary.d.ts +81 -0
  171. package/dist/types/run-summary.d.ts.map +1 -0
  172. package/dist/types/run-summary.js +22 -0
  173. package/dist/types/run-summary.js.map +1 -0
  174. package/dist/types/session.d.ts +130 -0
  175. package/dist/types/session.d.ts.map +1 -0
  176. package/dist/types/session.js +5 -0
  177. package/dist/types/session.js.map +1 -0
  178. package/dist/types/task.d.ts +58 -0
  179. package/dist/types/task.d.ts.map +1 -0
  180. package/dist/types/task.js +5 -0
  181. package/dist/types/task.js.map +1 -0
  182. package/dist/types/teams.d.ts +55 -0
  183. package/dist/types/teams.d.ts.map +1 -0
  184. package/dist/types/teams.js +5 -0
  185. package/dist/types/teams.js.map +1 -0
  186. package/dist/types/tools.d.ts +46 -0
  187. package/dist/types/tools.d.ts.map +1 -0
  188. package/dist/types/tools.js +5 -0
  189. package/dist/types/tools.js.map +1 -0
  190. package/dist/types.d.ts +1 -1138
  191. package/dist/types.d.ts.map +1 -1
  192. package/dist/types.js +1 -214
  193. package/dist/types.js.map +1 -1
  194. package/dist/utils/claude-cli-resolver.d.ts.map +1 -1
  195. package/dist/utils/claude-cli-resolver.js +1 -2
  196. package/dist/utils/claude-cli-resolver.js.map +1 -1
  197. package/dist/utils/debouncer.d.ts +111 -0
  198. package/dist/utils/debouncer.d.ts.map +1 -0
  199. package/dist/utils/debouncer.js +162 -0
  200. package/dist/utils/debouncer.js.map +1 -0
  201. package/dist/utils/index.d.ts +3 -2
  202. package/dist/utils/index.d.ts.map +1 -1
  203. package/dist/utils/index.js +3 -2
  204. package/dist/utils/index.js.map +1 -1
  205. package/dist/utils/opencode-cli-resolver.d.ts.map +1 -1
  206. package/dist/utils/opencode-cli-resolver.js +1 -2
  207. package/dist/utils/opencode-cli-resolver.js.map +1 -1
  208. package/dist/utils/string-similarity.d.ts +0 -57
  209. package/dist/utils/string-similarity.d.ts.map +1 -1
  210. package/dist/utils/string-similarity.js +3 -18
  211. package/dist/utils/string-similarity.js.map +1 -1
  212. package/dist/web/middleware/auth.d.ts +31 -0
  213. package/dist/web/middleware/auth.d.ts.map +1 -0
  214. package/dist/web/middleware/auth.js +154 -0
  215. package/dist/web/middleware/auth.js.map +1 -0
  216. package/dist/web/ports/auth-port.d.ts +18 -0
  217. package/dist/web/ports/auth-port.d.ts.map +1 -0
  218. package/dist/web/ports/auth-port.js +6 -0
  219. package/dist/web/ports/auth-port.js.map +1 -0
  220. package/dist/web/ports/config-port.d.ts +28 -0
  221. package/dist/web/ports/config-port.d.ts.map +1 -0
  222. package/dist/web/ports/config-port.js +6 -0
  223. package/dist/web/ports/config-port.js.map +1 -0
  224. package/dist/web/ports/event-port.d.ts +13 -0
  225. package/dist/web/ports/event-port.d.ts.map +1 -0
  226. package/dist/web/ports/event-port.js +6 -0
  227. package/dist/web/ports/event-port.js.map +1 -0
  228. package/dist/web/ports/index.d.ts +14 -0
  229. package/dist/web/ports/index.d.ts.map +1 -0
  230. package/dist/web/ports/index.js +9 -0
  231. package/dist/web/ports/index.js.map +1 -0
  232. package/dist/web/ports/infra-port.d.ts +36 -0
  233. package/dist/web/ports/infra-port.d.ts.map +1 -0
  234. package/dist/web/ports/infra-port.js +6 -0
  235. package/dist/web/ports/infra-port.js.map +1 -0
  236. package/dist/web/ports/respawn-port.d.ts +20 -0
  237. package/dist/web/ports/respawn-port.d.ts.map +1 -0
  238. package/dist/web/ports/respawn-port.js +6 -0
  239. package/dist/web/ports/respawn-port.js.map +1 -0
  240. package/dist/web/ports/session-port.d.ts +15 -0
  241. package/dist/web/ports/session-port.d.ts.map +1 -0
  242. package/dist/web/ports/session-port.js +6 -0
  243. package/dist/web/ports/session-port.js.map +1 -0
  244. package/dist/web/public/api-client.js +70 -0
  245. package/dist/web/public/api-client.js.br +0 -0
  246. package/dist/web/public/api-client.js.gz +0 -0
  247. package/dist/web/public/app.js +151 -235
  248. package/dist/web/public/app.js.br +0 -0
  249. package/dist/web/public/app.js.gz +0 -0
  250. package/dist/web/public/constants.js +238 -0
  251. package/dist/web/public/constants.js.br +0 -0
  252. package/dist/web/public/constants.js.gz +0 -0
  253. package/dist/web/public/index.html +11 -3
  254. package/dist/web/public/index.html.br +0 -0
  255. package/dist/web/public/index.html.gz +0 -0
  256. package/dist/web/public/keyboard-accessory.js +279 -0
  257. package/dist/web/public/keyboard-accessory.js.br +0 -0
  258. package/dist/web/public/keyboard-accessory.js.gz +0 -0
  259. package/dist/web/public/mobile-handlers.js +467 -0
  260. package/dist/web/public/mobile-handlers.js.br +0 -0
  261. package/dist/web/public/mobile-handlers.js.gz +0 -0
  262. package/dist/web/public/mobile.css.gz +0 -0
  263. package/dist/web/public/notification-manager.js +445 -0
  264. package/dist/web/public/notification-manager.js.br +0 -0
  265. package/dist/web/public/notification-manager.js.gz +0 -0
  266. package/dist/web/public/ralph-wizard.js +3 -3
  267. package/dist/web/public/ralph-wizard.js.br +0 -0
  268. package/dist/web/public/ralph-wizard.js.gz +0 -0
  269. package/dist/web/public/styles.css.gz +0 -0
  270. package/dist/web/public/subagent-windows.js +1115 -0
  271. package/dist/web/public/subagent-windows.js.br +0 -0
  272. package/dist/web/public/subagent-windows.js.gz +0 -0
  273. package/dist/web/public/sw.js.gz +0 -0
  274. package/dist/web/public/upload.html.gz +0 -0
  275. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  276. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  277. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  278. package/dist/web/public/vendor/xterm.css.gz +0 -0
  279. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  280. package/dist/web/public/voice-input.js +858 -0
  281. package/dist/web/public/voice-input.js.br +0 -0
  282. package/dist/web/public/voice-input.js.gz +0 -0
  283. package/dist/web/route-helpers.d.ts +38 -0
  284. package/dist/web/route-helpers.d.ts.map +1 -0
  285. package/dist/web/route-helpers.js +143 -0
  286. package/dist/web/route-helpers.js.map +1 -0
  287. package/dist/web/routes/case-routes.d.ts +9 -0
  288. package/dist/web/routes/case-routes.d.ts.map +1 -0
  289. package/dist/web/routes/case-routes.js +419 -0
  290. package/dist/web/routes/case-routes.js.map +1 -0
  291. package/dist/web/routes/file-routes.d.ts +8 -0
  292. package/dist/web/routes/file-routes.d.ts.map +1 -0
  293. package/dist/web/routes/file-routes.js +337 -0
  294. package/dist/web/routes/file-routes.js.map +1 -0
  295. package/dist/web/routes/hook-event-routes.d.ts +9 -0
  296. package/dist/web/routes/hook-event-routes.d.ts.map +1 -0
  297. package/dist/web/routes/hook-event-routes.js +57 -0
  298. package/dist/web/routes/hook-event-routes.js.map +1 -0
  299. package/dist/web/routes/index.d.ts +16 -0
  300. package/dist/web/routes/index.d.ts.map +1 -0
  301. package/dist/web/routes/index.js +16 -0
  302. package/dist/web/routes/index.js.map +1 -0
  303. package/dist/web/routes/mux-routes.d.ts +8 -0
  304. package/dist/web/routes/mux-routes.d.ts.map +1 -0
  305. package/dist/web/routes/mux-routes.js +32 -0
  306. package/dist/web/routes/mux-routes.js.map +1 -0
  307. package/dist/web/routes/plan-routes.d.ts +9 -0
  308. package/dist/web/routes/plan-routes.d.ts.map +1 -0
  309. package/dist/web/routes/plan-routes.js +381 -0
  310. package/dist/web/routes/plan-routes.js.map +1 -0
  311. package/dist/web/routes/push-routes.d.ts +8 -0
  312. package/dist/web/routes/push-routes.d.ts.map +1 -0
  313. package/dist/web/routes/push-routes.js +49 -0
  314. package/dist/web/routes/push-routes.js.map +1 -0
  315. package/dist/web/routes/ralph-routes.d.ts +9 -0
  316. package/dist/web/routes/ralph-routes.d.ts.map +1 -0
  317. package/dist/web/routes/ralph-routes.js +475 -0
  318. package/dist/web/routes/ralph-routes.js.map +1 -0
  319. package/dist/web/routes/respawn-routes.d.ts +8 -0
  320. package/dist/web/routes/respawn-routes.d.ts.map +1 -0
  321. package/dist/web/routes/respawn-routes.js +260 -0
  322. package/dist/web/routes/respawn-routes.js.map +1 -0
  323. package/dist/web/routes/scheduled-routes.d.ts +8 -0
  324. package/dist/web/routes/scheduled-routes.d.ts.map +1 -0
  325. package/dist/web/routes/scheduled-routes.js +51 -0
  326. package/dist/web/routes/scheduled-routes.js.map +1 -0
  327. package/dist/web/routes/session-routes.d.ts +9 -0
  328. package/dist/web/routes/session-routes.d.ts.map +1 -0
  329. package/dist/web/routes/session-routes.js +729 -0
  330. package/dist/web/routes/session-routes.js.map +1 -0
  331. package/dist/web/routes/system-routes.d.ts +9 -0
  332. package/dist/web/routes/system-routes.d.ts.map +1 -0
  333. package/dist/web/routes/system-routes.js +678 -0
  334. package/dist/web/routes/system-routes.js.map +1 -0
  335. package/dist/web/routes/team-routes.d.ts +8 -0
  336. package/dist/web/routes/team-routes.d.ts.map +1 -0
  337. package/dist/web/routes/team-routes.js +14 -0
  338. package/dist/web/routes/team-routes.js.map +1 -0
  339. package/dist/web/schemas.d.ts +43 -3
  340. package/dist/web/schemas.d.ts.map +1 -1
  341. package/dist/web/schemas.js +6 -2
  342. package/dist/web/schemas.js.map +1 -1
  343. package/dist/web/server.d.ts +10 -9
  344. package/dist/web/server.d.ts.map +1 -1
  345. package/dist/web/server.js +335 -3824
  346. package/dist/web/server.js.map +1 -1
  347. package/package.json +1 -1
@@ -0,0 +1,201 @@
1
+ /**
2
+ * @fileoverview RalphPlanTracker - Enhanced plan task management
3
+ *
4
+ * Manages plan tasks with verification criteria, dependencies,
5
+ * execution tracking, TDD workflow support, and plan versioning.
6
+ *
7
+ * Extracted from ralph-tracker.ts as part of domain splitting.
8
+ *
9
+ * @module ralph-plan-tracker
10
+ */
11
+ import { EventEmitter } from 'node:events';
12
+ import type { PlanTaskStatus, TddPhase } from './types.js';
13
+ /**
14
+ * Enhanced plan task with verification criteria, dependencies, and execution tracking.
15
+ * Supports TDD workflow, failure tracking, and plan versioning.
16
+ */
17
+ export interface EnhancedPlanTask {
18
+ /** Unique identifier (e.g., "P0-001") */
19
+ id: string;
20
+ /** Task description */
21
+ content: string;
22
+ /** Criticality level */
23
+ priority: 'P0' | 'P1' | 'P2' | null;
24
+ /** How to verify completion */
25
+ verificationCriteria?: string;
26
+ /** Command to run for verification */
27
+ testCommand?: string;
28
+ /** IDs of tasks that must complete first */
29
+ dependencies: string[];
30
+ /** Current execution status */
31
+ status: PlanTaskStatus;
32
+ /** How many times attempted */
33
+ attempts: number;
34
+ /** Most recent failure reason */
35
+ lastError?: string;
36
+ /** Timestamp of completion */
37
+ completedAt?: number;
38
+ /** Plan version this belongs to */
39
+ version: number;
40
+ /** TDD phase category */
41
+ tddPhase?: TddPhase;
42
+ /** ID of paired test/impl task */
43
+ pairedWith?: string;
44
+ /** Estimated complexity */
45
+ complexity?: 'low' | 'medium' | 'high';
46
+ /** Checklist items for review tasks (tddPhase: 'review') */
47
+ reviewChecklist?: string[];
48
+ }
49
+ /** Checkpoint review data */
50
+ export interface CheckpointReview {
51
+ iteration: number;
52
+ timestamp: number;
53
+ summary: {
54
+ total: number;
55
+ completed: number;
56
+ failed: number;
57
+ blocked: number;
58
+ pending: number;
59
+ inProgress: number;
60
+ };
61
+ stuckTasks: Array<{
62
+ id: string;
63
+ content: string;
64
+ attempts: number;
65
+ lastError?: string;
66
+ }>;
67
+ recommendations: string[];
68
+ }
69
+ /**
70
+ * RalphPlanTracker - Manages enhanced plan tasks with versioning and checkpoints.
71
+ *
72
+ * Events emitted:
73
+ * - `planInitialized` - When a new plan is initialized
74
+ * - `planTaskUpdate` - When a plan task is updated
75
+ * - `taskBlocked` - When a task becomes blocked after too many failures
76
+ * - `taskUnblocked` - When a task's dependencies are all met
77
+ * - `planCheckpoint` - When a checkpoint review is triggered
78
+ * - `planTaskAdded` - When a new task is added to the plan
79
+ * - `planRollback` - When the plan is rolled back to a previous version
80
+ */
81
+ export declare class RalphPlanTracker extends EventEmitter {
82
+ /** Current version of the plan (incremented on changes) */
83
+ private _planVersion;
84
+ /** History of plan versions for rollback support */
85
+ private _planHistory;
86
+ /** Enhanced plan tasks with execution tracking */
87
+ private _planTasks;
88
+ /** Checkpoint intervals (iterations at which to trigger review) */
89
+ private _checkpointIterations;
90
+ /** Last checkpoint iteration */
91
+ private _lastCheckpointIteration;
92
+ /** Current cycle count (fed by parent via notifyCycleCount) */
93
+ private _cycleCount;
94
+ constructor();
95
+ /**
96
+ * Notify the plan tracker of the current cycle count.
97
+ * Called by parent when iteration changes (for checkpoint detection).
98
+ */
99
+ notifyCycleCount(cycleCount: number): void;
100
+ /**
101
+ * Initialize plan tasks from generated plan items.
102
+ * Called when wizard generates a new plan.
103
+ */
104
+ initializePlanTasks(items: Array<{
105
+ id?: string;
106
+ content: string;
107
+ priority?: 'P0' | 'P1' | 'P2' | null;
108
+ verificationCriteria?: string;
109
+ testCommand?: string;
110
+ dependencies?: string[];
111
+ tddPhase?: TddPhase;
112
+ pairedWith?: string;
113
+ complexity?: 'low' | 'medium' | 'high';
114
+ }>): void;
115
+ /**
116
+ * Update a specific plan task's status, attempts, or error.
117
+ */
118
+ updatePlanTask(taskId: string, update: {
119
+ status?: PlanTaskStatus;
120
+ error?: string;
121
+ incrementAttempts?: boolean;
122
+ }): {
123
+ success: boolean;
124
+ task?: EnhancedPlanTask;
125
+ error?: string;
126
+ };
127
+ /**
128
+ * Add a new task to the plan (for runtime adaptation).
129
+ */
130
+ addPlanTask(task: {
131
+ content: string;
132
+ priority?: 'P0' | 'P1' | 'P2';
133
+ verificationCriteria?: string;
134
+ dependencies?: string[];
135
+ insertAfter?: string;
136
+ }): {
137
+ task: EnhancedPlanTask;
138
+ };
139
+ /**
140
+ * Get all plan tasks.
141
+ */
142
+ getPlanTasks(): EnhancedPlanTask[];
143
+ /**
144
+ * Generate a checkpoint review summarizing plan progress and stuck tasks.
145
+ */
146
+ generateCheckpointReview(): CheckpointReview;
147
+ /**
148
+ * Get plan version history.
149
+ */
150
+ getPlanHistory(): Array<{
151
+ version: number;
152
+ timestamp: number;
153
+ summary: string;
154
+ stats: {
155
+ total: number;
156
+ completed: number;
157
+ failed: number;
158
+ };
159
+ }>;
160
+ /**
161
+ * Rollback to a previous plan version.
162
+ */
163
+ rollbackToVersion(version: number): {
164
+ success: boolean;
165
+ plan?: EnhancedPlanTask[];
166
+ error?: string;
167
+ };
168
+ /**
169
+ * Check if checkpoint review is due for current iteration.
170
+ */
171
+ isCheckpointDue(): boolean;
172
+ /**
173
+ * Get current plan version.
174
+ */
175
+ get planVersion(): number;
176
+ /**
177
+ * Reset plan state (soft reset - keeps version history).
178
+ */
179
+ reset(): void;
180
+ /**
181
+ * Full reset - clears all plan state.
182
+ */
183
+ fullReset(): void;
184
+ /**
185
+ * Clean up all resources.
186
+ */
187
+ destroy(): void;
188
+ /**
189
+ * Unblock tasks that were waiting on a completed dependency.
190
+ */
191
+ private _unblockDependentTasks;
192
+ /**
193
+ * Check if current iteration is a checkpoint and emit review if so.
194
+ */
195
+ private _checkForCheckpoint;
196
+ /**
197
+ * Save current plan state to history.
198
+ */
199
+ private _savePlanToHistory;
200
+ }
201
+ //# sourceMappingURL=ralph-plan-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ralph-plan-tracker.d.ts","sourceRoot":"","sources":["../src/ralph-plan-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,325 @@
1
+ /**
2
+ * @fileoverview RalphPlanTracker - Enhanced plan task management
3
+ *
4
+ * Manages plan tasks with verification criteria, dependencies,
5
+ * execution tracking, TDD workflow support, and plan versioning.
6
+ *
7
+ * Extracted from ralph-tracker.ts as part of domain splitting.
8
+ *
9
+ * @module ralph-plan-tracker
10
+ */
11
+ import { EventEmitter } from 'node:events';
12
+ const MAX_PLAN_HISTORY = 10;
13
+ /**
14
+ * RalphPlanTracker - Manages enhanced plan tasks with versioning and checkpoints.
15
+ *
16
+ * Events emitted:
17
+ * - `planInitialized` - When a new plan is initialized
18
+ * - `planTaskUpdate` - When a plan task is updated
19
+ * - `taskBlocked` - When a task becomes blocked after too many failures
20
+ * - `taskUnblocked` - When a task's dependencies are all met
21
+ * - `planCheckpoint` - When a checkpoint review is triggered
22
+ * - `planTaskAdded` - When a new task is added to the plan
23
+ * - `planRollback` - When the plan is rolled back to a previous version
24
+ */
25
+ export class RalphPlanTracker extends EventEmitter {
26
+ /** Current version of the plan (incremented on changes) */
27
+ _planVersion = 1;
28
+ /** History of plan versions for rollback support */
29
+ _planHistory = [];
30
+ /** Enhanced plan tasks with execution tracking */
31
+ _planTasks = new Map();
32
+ /** Checkpoint intervals (iterations at which to trigger review) */
33
+ _checkpointIterations = [5, 10, 20, 30, 50, 75, 100];
34
+ /** Last checkpoint iteration */
35
+ _lastCheckpointIteration = 0;
36
+ /** Current cycle count (fed by parent via notifyCycleCount) */
37
+ _cycleCount = 0;
38
+ constructor() {
39
+ super();
40
+ }
41
+ /**
42
+ * Notify the plan tracker of the current cycle count.
43
+ * Called by parent when iteration changes (for checkpoint detection).
44
+ */
45
+ notifyCycleCount(cycleCount) {
46
+ this._cycleCount = cycleCount;
47
+ }
48
+ /**
49
+ * Initialize plan tasks from generated plan items.
50
+ * Called when wizard generates a new plan.
51
+ */
52
+ initializePlanTasks(items) {
53
+ // Save current plan to history before replacing
54
+ if (this._planTasks.size > 0) {
55
+ this._savePlanToHistory('Plan replaced with new generation');
56
+ }
57
+ // Clear and rebuild
58
+ this._planTasks.clear();
59
+ this._planVersion++;
60
+ items.forEach((item, idx) => {
61
+ const id = item.id || `task-${idx}`;
62
+ const task = {
63
+ id,
64
+ content: item.content,
65
+ priority: item.priority || null,
66
+ verificationCriteria: item.verificationCriteria,
67
+ testCommand: item.testCommand,
68
+ dependencies: item.dependencies || [],
69
+ status: 'pending',
70
+ attempts: 0,
71
+ version: this._planVersion,
72
+ tddPhase: item.tddPhase,
73
+ pairedWith: item.pairedWith,
74
+ complexity: item.complexity,
75
+ };
76
+ this._planTasks.set(id, task);
77
+ });
78
+ this.emit('planInitialized', { version: this._planVersion, taskCount: this._planTasks.size });
79
+ }
80
+ /**
81
+ * Update a specific plan task's status, attempts, or error.
82
+ */
83
+ updatePlanTask(taskId, update) {
84
+ const task = this._planTasks.get(taskId);
85
+ if (!task) {
86
+ return { success: false, error: 'Task not found' };
87
+ }
88
+ if (update.status) {
89
+ task.status = update.status;
90
+ if (update.status === 'completed') {
91
+ task.completedAt = Date.now();
92
+ }
93
+ }
94
+ if (update.error) {
95
+ task.lastError = update.error;
96
+ }
97
+ if (update.incrementAttempts) {
98
+ task.attempts++;
99
+ // After 3 failed attempts, mark as blocked and emit warning
100
+ if (task.attempts >= 3 && task.status === 'failed') {
101
+ task.status = 'blocked';
102
+ this.emit('taskBlocked', {
103
+ taskId,
104
+ content: task.content,
105
+ attempts: task.attempts,
106
+ lastError: task.lastError,
107
+ });
108
+ }
109
+ }
110
+ // Update blocked tasks when a dependency completes
111
+ if (update.status === 'completed') {
112
+ this._unblockDependentTasks(taskId);
113
+ }
114
+ // Check for checkpoint
115
+ this._checkForCheckpoint();
116
+ this.emit('planTaskUpdate', { taskId, task });
117
+ return { success: true, task };
118
+ }
119
+ /**
120
+ * Add a new task to the plan (for runtime adaptation).
121
+ */
122
+ addPlanTask(task) {
123
+ // Generate unique ID
124
+ const existingIds = Array.from(this._planTasks.keys());
125
+ const prefix = task.priority || 'P1';
126
+ let counter = existingIds.filter((id) => id.startsWith(prefix)).length + 1;
127
+ let id = `${prefix}-${String(counter).padStart(3, '0')}`;
128
+ while (this._planTasks.has(id)) {
129
+ counter++;
130
+ id = `${prefix}-${String(counter).padStart(3, '0')}`;
131
+ }
132
+ const newTask = {
133
+ id,
134
+ content: task.content,
135
+ priority: task.priority || null,
136
+ verificationCriteria: task.verificationCriteria || 'Task completed successfully',
137
+ dependencies: task.dependencies || [],
138
+ status: 'pending',
139
+ attempts: 0,
140
+ version: this._planVersion,
141
+ };
142
+ this._planTasks.set(id, newTask);
143
+ this.emit('planTaskAdded', { task: newTask });
144
+ return { task: newTask };
145
+ }
146
+ /**
147
+ * Get all plan tasks.
148
+ */
149
+ getPlanTasks() {
150
+ return Array.from(this._planTasks.values());
151
+ }
152
+ /**
153
+ * Generate a checkpoint review summarizing plan progress and stuck tasks.
154
+ */
155
+ generateCheckpointReview() {
156
+ const tasks = Array.from(this._planTasks.values());
157
+ const summary = {
158
+ total: tasks.length,
159
+ completed: tasks.filter((t) => t.status === 'completed').length,
160
+ failed: tasks.filter((t) => t.status === 'failed').length,
161
+ blocked: tasks.filter((t) => t.status === 'blocked').length,
162
+ pending: tasks.filter((t) => t.status === 'pending').length,
163
+ inProgress: tasks.filter((t) => t.status === 'in_progress').length,
164
+ };
165
+ // Find stuck tasks (3+ attempts or blocked)
166
+ const stuckTasks = tasks
167
+ .filter((t) => t.attempts >= 3 || t.status === 'blocked')
168
+ .map((t) => ({
169
+ id: t.id,
170
+ content: t.content,
171
+ attempts: t.attempts,
172
+ lastError: t.lastError,
173
+ }));
174
+ // Generate recommendations
175
+ const recommendations = [];
176
+ if (stuckTasks.length > 0) {
177
+ recommendations.push(`${stuckTasks.length} task(s) are stuck. Consider breaking them into smaller steps.`);
178
+ }
179
+ if (summary.failed > summary.completed && summary.total > 5) {
180
+ recommendations.push('More tasks have failed than completed. Review approach and consider plan adjustment.');
181
+ }
182
+ const progressPercent = summary.total > 0 ? Math.round((summary.completed / summary.total) * 100) : 0;
183
+ if (progressPercent < 20 && this._cycleCount > 10) {
184
+ recommendations.push('Progress is slow. Consider simplifying tasks or reviewing dependencies.');
185
+ }
186
+ if (summary.total > 0 && summary.blocked > summary.total / 3) {
187
+ recommendations.push('Many tasks are blocked. Review dependency chain for bottlenecks.');
188
+ }
189
+ return {
190
+ iteration: this._cycleCount,
191
+ timestamp: Date.now(),
192
+ summary,
193
+ stuckTasks,
194
+ recommendations,
195
+ };
196
+ }
197
+ /**
198
+ * Get plan version history.
199
+ */
200
+ getPlanHistory() {
201
+ return this._planHistory.map((h) => {
202
+ const tasks = Array.from(h.tasks.values());
203
+ return {
204
+ version: h.version,
205
+ timestamp: h.timestamp,
206
+ summary: h.summary,
207
+ stats: {
208
+ total: tasks.length,
209
+ completed: tasks.filter((t) => t.status === 'completed').length,
210
+ failed: tasks.filter((t) => t.status === 'failed').length,
211
+ },
212
+ };
213
+ });
214
+ }
215
+ /**
216
+ * Rollback to a previous plan version.
217
+ */
218
+ rollbackToVersion(version) {
219
+ const historyEntry = this._planHistory.find((h) => h.version === version);
220
+ if (!historyEntry) {
221
+ return { success: false, error: `Version ${version} not found in history` };
222
+ }
223
+ // Save current state first
224
+ this._savePlanToHistory(`Rolled back from v${this._planVersion} to v${version}`);
225
+ // Restore the historical version
226
+ this._planTasks.clear();
227
+ for (const [id, task] of historyEntry.tasks) {
228
+ // Reset execution state for retry
229
+ this._planTasks.set(id, {
230
+ ...task,
231
+ status: task.status === 'completed' ? 'completed' : 'pending',
232
+ attempts: task.status === 'completed' ? task.attempts : 0,
233
+ lastError: undefined,
234
+ });
235
+ }
236
+ this._planVersion++;
237
+ this.emit('planRollback', { version, newVersion: this._planVersion });
238
+ return { success: true, plan: Array.from(this._planTasks.values()) };
239
+ }
240
+ /**
241
+ * Check if checkpoint review is due for current iteration.
242
+ */
243
+ isCheckpointDue() {
244
+ return this._checkpointIterations.includes(this._cycleCount) && this._cycleCount > this._lastCheckpointIteration;
245
+ }
246
+ /**
247
+ * Get current plan version.
248
+ */
249
+ get planVersion() {
250
+ return this._planVersion;
251
+ }
252
+ /**
253
+ * Reset plan state (soft reset - keeps version history).
254
+ */
255
+ reset() {
256
+ // Don't clear history or version on soft reset
257
+ }
258
+ /**
259
+ * Full reset - clears all plan state.
260
+ */
261
+ fullReset() {
262
+ this._planTasks.clear();
263
+ this._planHistory.length = 0;
264
+ this._planVersion = 1;
265
+ this._lastCheckpointIteration = 0;
266
+ this._cycleCount = 0;
267
+ }
268
+ /**
269
+ * Clean up all resources.
270
+ */
271
+ destroy() {
272
+ this._planTasks.clear();
273
+ this._planHistory.length = 0;
274
+ this.removeAllListeners();
275
+ }
276
+ /**
277
+ * Unblock tasks that were waiting on a completed dependency.
278
+ */
279
+ _unblockDependentTasks(completedTaskId) {
280
+ for (const [_, task] of this._planTasks) {
281
+ if (task.dependencies.includes(completedTaskId)) {
282
+ // Check if all dependencies are now complete
283
+ const allDepsComplete = task.dependencies.every((depId) => {
284
+ const dep = this._planTasks.get(depId);
285
+ return dep && dep.status === 'completed';
286
+ });
287
+ if (allDepsComplete && task.status === 'blocked') {
288
+ task.status = 'pending';
289
+ this.emit('taskUnblocked', { taskId: task.id });
290
+ }
291
+ }
292
+ }
293
+ }
294
+ /**
295
+ * Check if current iteration is a checkpoint and emit review if so.
296
+ */
297
+ _checkForCheckpoint() {
298
+ if (this._checkpointIterations.includes(this._cycleCount) && this._cycleCount > this._lastCheckpointIteration) {
299
+ this._lastCheckpointIteration = this._cycleCount;
300
+ const checkpoint = this.generateCheckpointReview();
301
+ this.emit('planCheckpoint', checkpoint);
302
+ }
303
+ }
304
+ /**
305
+ * Save current plan state to history.
306
+ */
307
+ _savePlanToHistory(summary) {
308
+ // Clone current tasks
309
+ const tasksCopy = new Map();
310
+ for (const [id, task] of this._planTasks) {
311
+ tasksCopy.set(id, { ...task });
312
+ }
313
+ this._planHistory.push({
314
+ version: this._planVersion,
315
+ timestamp: Date.now(),
316
+ tasks: tasksCopy,
317
+ summary,
318
+ });
319
+ // Limit history size
320
+ if (this._planHistory.length > MAX_PLAN_HISTORY) {
321
+ this._planHistory.shift();
322
+ }
323
+ }
324
+ }
325
+ //# sourceMappingURL=ralph-plan-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ralph-plan-tracker.js","sourceRoot":"","sources":["../src/ralph-plan-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @fileoverview RalphStallDetector - Iteration stall detection
3
+ *
4
+ * Monitors iteration progress and emits warnings when the loop
5
+ * appears to be stalled (no iteration changes for extended periods).
6
+ *
7
+ * Extracted from ralph-tracker.ts as part of domain splitting.
8
+ *
9
+ * @module ralph-stall-detector
10
+ */
11
+ import { EventEmitter } from 'node:events';
12
+ /**
13
+ * RalphStallDetector - Detects iteration stalls in the Ralph loop.
14
+ *
15
+ * Events emitted:
16
+ * - `iterationStallWarning` - When iteration hasn't changed for warning threshold
17
+ * - `iterationStallCritical` - When iteration hasn't changed for critical threshold
18
+ */
19
+ export declare class RalphStallDetector extends EventEmitter {
20
+ /** Timestamp when iteration count last changed */
21
+ private _lastIterationChangeTime;
22
+ /** Last observed iteration count for stall detection */
23
+ private _lastObservedIteration;
24
+ /** Timer for iteration stall detection */
25
+ private _iterationStallTimer;
26
+ /** Iteration stall warning threshold (ms) - default 10 minutes */
27
+ private _iterationStallWarningMs;
28
+ /** Iteration stall critical threshold (ms) - default 20 minutes */
29
+ private _iterationStallCriticalMs;
30
+ /** Whether stall warning has been emitted */
31
+ private _iterationStallWarned;
32
+ /** Whether the loop is currently active */
33
+ private _loopActive;
34
+ constructor();
35
+ /**
36
+ * Start iteration stall detection timer.
37
+ * Should be called when the loop becomes active.
38
+ */
39
+ startIterationStallDetection(): void;
40
+ /**
41
+ * Stop iteration stall detection timer.
42
+ */
43
+ stopIterationStallDetection(): void;
44
+ /**
45
+ * Notify the detector that the iteration has changed.
46
+ * Resets stall tracking state.
47
+ */
48
+ notifyIterationChanged(iteration: number): void;
49
+ /**
50
+ * Set whether the loop is currently active.
51
+ * Stall detection only fires when loop is active.
52
+ */
53
+ setLoopActive(active: boolean): void;
54
+ /**
55
+ * Check for iteration stall and emit appropriate events.
56
+ */
57
+ private checkIterationStall;
58
+ /**
59
+ * Get iteration stall metrics for monitoring.
60
+ */
61
+ getIterationStallMetrics(): {
62
+ lastIterationChangeTime: number;
63
+ stallDurationMs: number;
64
+ warningThresholdMs: number;
65
+ criticalThresholdMs: number;
66
+ isWarned: boolean;
67
+ currentIteration: number;
68
+ };
69
+ /**
70
+ * Configure iteration stall thresholds.
71
+ * @param warningMs - Warning threshold in milliseconds
72
+ * @param criticalMs - Critical threshold in milliseconds
73
+ */
74
+ configureIterationStallThresholds(warningMs: number, criticalMs: number): void;
75
+ /**
76
+ * Reset stall detector state.
77
+ */
78
+ reset(): void;
79
+ /**
80
+ * Clean up all resources.
81
+ */
82
+ destroy(): void;
83
+ }
84
+ //# sourceMappingURL=ralph-stall-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ralph-stall-detector.d.ts","sourceRoot":"","sources":["../src/ralph-stall-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,kDAAkD;IAClD,OAAO,CAAC,wBAAwB,CAAa;IAE7C,wDAAwD;IACxD,OAAO,CAAC,sBAAsB,CAAa;IAE3C,0CAA0C;IAC1C,OAAO,CAAC,oBAAoB,CAA+B;IAE3D,kEAAkE;IAClE,OAAO,CAAC,wBAAwB,CAA0B;IAE1D,mEAAmE;IACnE,OAAO,CAAC,yBAAyB,CAA0B;IAE3D,6CAA6C;IAC7C,OAAO,CAAC,qBAAqB,CAAkB;IAE/C,2CAA2C;IAC3C,OAAO,CAAC,WAAW,CAAkB;;IAOrC;;;OAGG;IACH,4BAA4B,IAAI,IAAI;IAWpC;;OAEG;IACH,2BAA2B,IAAI,IAAI;IAOnC;;;OAGG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/C;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIpC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,wBAAwB,IAAI;QAC1B,uBAAuB,EAAE,MAAM,CAAC;QAChC,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAWD;;;;OAIG;IACH,iCAAiC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAK9E;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}