@planweave-ai/runtime 0.1.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 (374) hide show
  1. package/LICENSE +21 -0
  2. package/dist/autoRun/codexExecutor.d.ts +20 -0
  3. package/dist/autoRun/codexExecutor.d.ts.map +1 -0
  4. package/dist/autoRun/codexExecutor.js +196 -0
  5. package/dist/autoRun/codexExecutor.js.map +1 -0
  6. package/dist/autoRun/codexProtocol.d.ts +5 -0
  7. package/dist/autoRun/codexProtocol.d.ts.map +1 -0
  8. package/dist/autoRun/codexProtocol.js +72 -0
  9. package/dist/autoRun/codexProtocol.js.map +1 -0
  10. package/dist/autoRun/contract.d.ts +46 -0
  11. package/dist/autoRun/contract.d.ts.map +1 -0
  12. package/dist/autoRun/contract.js +18 -0
  13. package/dist/autoRun/contract.js.map +1 -0
  14. package/dist/autoRun/executorShared.d.ts +57 -0
  15. package/dist/autoRun/executorShared.d.ts.map +1 -0
  16. package/dist/autoRun/executorShared.js +179 -0
  17. package/dist/autoRun/executorShared.js.map +1 -0
  18. package/dist/autoRun/executors.d.ts +43 -0
  19. package/dist/autoRun/executors.d.ts.map +1 -0
  20. package/dist/autoRun/executors.js +201 -0
  21. package/dist/autoRun/executors.js.map +1 -0
  22. package/dist/autoRun/localReviewExecutor.d.ts +20 -0
  23. package/dist/autoRun/localReviewExecutor.d.ts.map +1 -0
  24. package/dist/autoRun/localReviewExecutor.js +133 -0
  25. package/dist/autoRun/localReviewExecutor.js.map +1 -0
  26. package/dist/autoRun/opencodeExecutor.d.ts +20 -0
  27. package/dist/autoRun/opencodeExecutor.d.ts.map +1 -0
  28. package/dist/autoRun/opencodeExecutor.js +211 -0
  29. package/dist/autoRun/opencodeExecutor.js.map +1 -0
  30. package/dist/autoRun/opencodeInvocation.d.ts +9 -0
  31. package/dist/autoRun/opencodeInvocation.d.ts.map +1 -0
  32. package/dist/autoRun/opencodeInvocation.js +53 -0
  33. package/dist/autoRun/opencodeInvocation.js.map +1 -0
  34. package/dist/autoRun/opencodeOutput.d.ts +11 -0
  35. package/dist/autoRun/opencodeOutput.d.ts.map +1 -0
  36. package/dist/autoRun/opencodeOutput.js +190 -0
  37. package/dist/autoRun/opencodeOutput.js.map +1 -0
  38. package/dist/autoRun/reviewResultContract.d.ts +8 -0
  39. package/dist/autoRun/reviewResultContract.d.ts.map +1 -0
  40. package/dist/autoRun/reviewResultContract.js +30 -0
  41. package/dist/autoRun/reviewResultContract.js.map +1 -0
  42. package/dist/autoRun/streamingExecutor.d.ts +21 -0
  43. package/dist/autoRun/streamingExecutor.d.ts.map +1 -0
  44. package/dist/autoRun/streamingExecutor.js +40 -0
  45. package/dist/autoRun/streamingExecutor.js.map +1 -0
  46. package/dist/autoRun/tmuxExecutor.d.ts +36 -0
  47. package/dist/autoRun/tmuxExecutor.d.ts.map +1 -0
  48. package/dist/autoRun/tmuxExecutor.js +203 -0
  49. package/dist/autoRun/tmuxExecutor.js.map +1 -0
  50. package/dist/autoRun/tmuxRunnerScript.d.ts +2 -0
  51. package/dist/autoRun/tmuxRunnerScript.d.ts.map +1 -0
  52. package/dist/autoRun/tmuxRunnerScript.js +72 -0
  53. package/dist/autoRun/tmuxRunnerScript.js.map +1 -0
  54. package/dist/desktop/canvasApi.d.ts +18 -0
  55. package/dist/desktop/canvasApi.d.ts.map +1 -0
  56. package/dist/desktop/canvasApi.js +214 -0
  57. package/dist/desktop/canvasApi.js.map +1 -0
  58. package/dist/desktop/canvasDiagnostics.d.ts +3 -0
  59. package/dist/desktop/canvasDiagnostics.d.ts.map +1 -0
  60. package/dist/desktop/canvasDiagnostics.js +21 -0
  61. package/dist/desktop/canvasDiagnostics.js.map +1 -0
  62. package/dist/desktop/canvasRegistry.d.ts +17 -0
  63. package/dist/desktop/canvasRegistry.d.ts.map +1 -0
  64. package/dist/desktop/canvasRegistry.js +51 -0
  65. package/dist/desktop/canvasRegistry.js.map +1 -0
  66. package/dist/desktop/fileSyncApi.d.ts +8 -0
  67. package/dist/desktop/fileSyncApi.d.ts.map +1 -0
  68. package/dist/desktop/fileSyncApi.js +186 -0
  69. package/dist/desktop/fileSyncApi.js.map +1 -0
  70. package/dist/desktop/graph/draftModel.d.ts +8 -0
  71. package/dist/desktop/graph/draftModel.d.ts.map +1 -0
  72. package/dist/desktop/graph/draftModel.js +75 -0
  73. package/dist/desktop/graph/draftModel.js.map +1 -0
  74. package/dist/desktop/graph/editModel.d.ts +16 -0
  75. package/dist/desktop/graph/editModel.d.ts.map +1 -0
  76. package/dist/desktop/graph/editModel.js +273 -0
  77. package/dist/desktop/graph/editModel.js.map +1 -0
  78. package/dist/desktop/graph/graphHelpers.d.ts +17 -0
  79. package/dist/desktop/graph/graphHelpers.d.ts.map +1 -0
  80. package/dist/desktop/graph/graphHelpers.js +95 -0
  81. package/dist/desktop/graph/graphHelpers.js.map +1 -0
  82. package/dist/desktop/graph/projectCanvasAggregation.d.ts +10 -0
  83. package/dist/desktop/graph/projectCanvasAggregation.d.ts.map +1 -0
  84. package/dist/desktop/graph/projectCanvasAggregation.js +19 -0
  85. package/dist/desktop/graph/projectCanvasAggregation.js.map +1 -0
  86. package/dist/desktop/graph/readModel.d.ts +7 -0
  87. package/dist/desktop/graph/readModel.d.ts.map +1 -0
  88. package/dist/desktop/graph/readModel.js +154 -0
  89. package/dist/desktop/graph/readModel.js.map +1 -0
  90. package/dist/desktop/graph/searchModel.d.ts +3 -0
  91. package/dist/desktop/graph/searchModel.d.ts.map +1 -0
  92. package/dist/desktop/graph/searchModel.js +128 -0
  93. package/dist/desktop/graph/searchModel.js.map +1 -0
  94. package/dist/desktop/graph/statisticsModel.d.ts +3 -0
  95. package/dist/desktop/graph/statisticsModel.d.ts.map +1 -0
  96. package/dist/desktop/graph/statisticsModel.js +121 -0
  97. package/dist/desktop/graph/statisticsModel.js.map +1 -0
  98. package/dist/desktop/graph/todoModel.d.ts +4 -0
  99. package/dist/desktop/graph/todoModel.d.ts.map +1 -0
  100. package/dist/desktop/graph/todoModel.js +88 -0
  101. package/dist/desktop/graph/todoModel.js.map +1 -0
  102. package/dist/desktop/graphApi.d.ts +7 -0
  103. package/dist/desktop/graphApi.d.ts.map +1 -0
  104. package/dist/desktop/graphApi.js +7 -0
  105. package/dist/desktop/graphApi.js.map +1 -0
  106. package/dist/desktop/index.d.ts +12 -0
  107. package/dist/desktop/index.d.ts.map +1 -0
  108. package/dist/desktop/index.js +10 -0
  109. package/dist/desktop/index.js.map +1 -0
  110. package/dist/desktop/layoutApi.d.ts +10 -0
  111. package/dist/desktop/layoutApi.d.ts.map +1 -0
  112. package/dist/desktop/layoutApi.js +191 -0
  113. package/dist/desktop/layoutApi.js.map +1 -0
  114. package/dist/desktop/projectApi.d.ts +10 -0
  115. package/dist/desktop/projectApi.d.ts.map +1 -0
  116. package/dist/desktop/projectApi.js +99 -0
  117. package/dist/desktop/projectApi.js.map +1 -0
  118. package/dist/desktop/recordsApi.d.ts +7 -0
  119. package/dist/desktop/recordsApi.d.ts.map +1 -0
  120. package/dist/desktop/recordsApi.js +188 -0
  121. package/dist/desktop/recordsApi.js.map +1 -0
  122. package/dist/desktop/reviewPipelineApi.d.ts +5 -0
  123. package/dist/desktop/reviewPipelineApi.d.ts.map +1 -0
  124. package/dist/desktop/reviewPipelineApi.js +189 -0
  125. package/dist/desktop/reviewPipelineApi.js.map +1 -0
  126. package/dist/desktop/runApi.d.ts +8 -0
  127. package/dist/desktop/runApi.d.ts.map +1 -0
  128. package/dist/desktop/runApi.js +180 -0
  129. package/dist/desktop/runApi.js.map +1 -0
  130. package/dist/desktop/runRecordOutput.d.ts +14 -0
  131. package/dist/desktop/runRecordOutput.d.ts.map +1 -0
  132. package/dist/desktop/runRecordOutput.js +31 -0
  133. package/dist/desktop/runRecordOutput.js.map +1 -0
  134. package/dist/desktop/runStateStore.d.ts +9 -0
  135. package/dist/desktop/runStateStore.d.ts.map +1 -0
  136. package/dist/desktop/runStateStore.js +38 -0
  137. package/dist/desktop/runStateStore.js.map +1 -0
  138. package/dist/desktop/runStepState.d.ts +16 -0
  139. package/dist/desktop/runStepState.d.ts.map +1 -0
  140. package/dist/desktop/runStepState.js +94 -0
  141. package/dist/desktop/runStepState.js.map +1 -0
  142. package/dist/desktop/types/bridgeTypes.d.ts +115 -0
  143. package/dist/desktop/types/bridgeTypes.d.ts.map +1 -0
  144. package/dist/desktop/types/bridgeTypes.js +2 -0
  145. package/dist/desktop/types/bridgeTypes.js.map +1 -0
  146. package/dist/desktop/types/graphTypes.d.ts +201 -0
  147. package/dist/desktop/types/graphTypes.d.ts.map +1 -0
  148. package/dist/desktop/types/graphTypes.js +2 -0
  149. package/dist/desktop/types/graphTypes.js.map +1 -0
  150. package/dist/desktop/types/projectTypes.d.ts +19 -0
  151. package/dist/desktop/types/projectTypes.d.ts.map +1 -0
  152. package/dist/desktop/types/projectTypes.js +2 -0
  153. package/dist/desktop/types/projectTypes.js.map +1 -0
  154. package/dist/desktop/types/recordsTypes.d.ts +50 -0
  155. package/dist/desktop/types/recordsTypes.d.ts.map +1 -0
  156. package/dist/desktop/types/recordsTypes.js +2 -0
  157. package/dist/desktop/types/recordsTypes.js.map +1 -0
  158. package/dist/desktop/types/reviewPipelineTypes.d.ts +35 -0
  159. package/dist/desktop/types/reviewPipelineTypes.d.ts.map +1 -0
  160. package/dist/desktop/types/reviewPipelineTypes.js +2 -0
  161. package/dist/desktop/types/reviewPipelineTypes.js.map +1 -0
  162. package/dist/desktop/types/runTypes.d.ts +35 -0
  163. package/dist/desktop/types/runTypes.d.ts.map +1 -0
  164. package/dist/desktop/types/runTypes.js +2 -0
  165. package/dist/desktop/types/runTypes.js.map +1 -0
  166. package/dist/desktop/types/syncTypes.d.ts +22 -0
  167. package/dist/desktop/types/syncTypes.d.ts.map +1 -0
  168. package/dist/desktop/types/syncTypes.js +2 -0
  169. package/dist/desktop/types/syncTypes.js.map +1 -0
  170. package/dist/desktop/types.d.ts +8 -0
  171. package/dist/desktop/types.d.ts.map +1 -0
  172. package/dist/desktop/types.js +2 -0
  173. package/dist/desktop/types.js.map +1 -0
  174. package/dist/graph/compileTaskGraph.d.ts +8 -0
  175. package/dist/graph/compileTaskGraph.d.ts.map +1 -0
  176. package/dist/graph/compileTaskGraph.js +311 -0
  177. package/dist/graph/compileTaskGraph.js.map +1 -0
  178. package/dist/graph/editGraph.d.ts +49 -0
  179. package/dist/graph/editGraph.d.ts.map +1 -0
  180. package/dist/graph/editGraph.js +224 -0
  181. package/dist/graph/editGraph.js.map +1 -0
  182. package/dist/graph/mutation.d.ts +62 -0
  183. package/dist/graph/mutation.d.ts.map +1 -0
  184. package/dist/graph/mutation.js +158 -0
  185. package/dist/graph/mutation.js.map +1 -0
  186. package/dist/graph/session/applyOperation.d.ts +3 -0
  187. package/dist/graph/session/applyOperation.d.ts.map +1 -0
  188. package/dist/graph/session/applyOperation.js +101 -0
  189. package/dist/graph/session/applyOperation.js.map +1 -0
  190. package/dist/graph/session/fileQueue.d.ts +5 -0
  191. package/dist/graph/session/fileQueue.d.ts.map +1 -0
  192. package/dist/graph/session/fileQueue.js +26 -0
  193. package/dist/graph/session/fileQueue.js.map +1 -0
  194. package/dist/graph/session/graphIndexes.d.ts +15 -0
  195. package/dist/graph/session/graphIndexes.d.ts.map +1 -0
  196. package/dist/graph/session/graphIndexes.js +174 -0
  197. package/dist/graph/session/graphIndexes.js.map +1 -0
  198. package/dist/graph/session/manifestDiff.d.ts +3 -0
  199. package/dist/graph/session/manifestDiff.d.ts.map +1 -0
  200. package/dist/graph/session/manifestDiff.js +39 -0
  201. package/dist/graph/session/manifestDiff.js.map +1 -0
  202. package/dist/graph/session/rebuild.d.ts +4 -0
  203. package/dist/graph/session/rebuild.d.ts.map +1 -0
  204. package/dist/graph/session/rebuild.js +20 -0
  205. package/dist/graph/session/rebuild.js.map +1 -0
  206. package/dist/graph/session.d.ts +6 -0
  207. package/dist/graph/session.d.ts.map +1 -0
  208. package/dist/graph/session.js +97 -0
  209. package/dist/graph/session.js.map +1 -0
  210. package/dist/index.d.ts +34 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +30 -0
  213. package/dist/index.js.map +1 -0
  214. package/dist/initWorkspace.d.ts +9 -0
  215. package/dist/initWorkspace.d.ts.map +1 -0
  216. package/dist/initWorkspace.js +108 -0
  217. package/dist/initWorkspace.js.map +1 -0
  218. package/dist/json.d.ts +3 -0
  219. package/dist/json.d.ts.map +1 -0
  220. package/dist/json.js +20 -0
  221. package/dist/json.js.map +1 -0
  222. package/dist/package/fileChanges.d.ts +14 -0
  223. package/dist/package/fileChanges.d.ts.map +1 -0
  224. package/dist/package/fileChanges.js +134 -0
  225. package/dist/package/fileChanges.js.map +1 -0
  226. package/dist/package/loadPackage.d.ts +8 -0
  227. package/dist/package/loadPackage.d.ts.map +1 -0
  228. package/dist/package/loadPackage.js +14 -0
  229. package/dist/package/loadPackage.js.map +1 -0
  230. package/dist/package/manifestEdit.d.ts +4 -0
  231. package/dist/package/manifestEdit.d.ts.map +1 -0
  232. package/dist/package/manifestEdit.js +198 -0
  233. package/dist/package/manifestEdit.js.map +1 -0
  234. package/dist/package/orphans.d.ts +6 -0
  235. package/dist/package/orphans.d.ts.map +1 -0
  236. package/dist/package/orphans.js +38 -0
  237. package/dist/package/orphans.js.map +1 -0
  238. package/dist/package/readMarkdown.d.ts +2 -0
  239. package/dist/package/readMarkdown.d.ts.map +1 -0
  240. package/dist/package/readMarkdown.js +5 -0
  241. package/dist/package/readMarkdown.js.map +1 -0
  242. package/dist/package/resolvePackagePath.d.ts +8 -0
  243. package/dist/package/resolvePackagePath.d.ts.map +1 -0
  244. package/dist/package/resolvePackagePath.js +56 -0
  245. package/dist/package/resolvePackagePath.js.map +1 -0
  246. package/dist/paths.d.ts +4 -0
  247. package/dist/paths.d.ts.map +1 -0
  248. package/dist/paths.js +28 -0
  249. package/dist/paths.js.map +1 -0
  250. package/dist/project.d.ts +4 -0
  251. package/dist/project.d.ts.map +1 -0
  252. package/dist/project.js +35 -0
  253. package/dist/project.js.map +1 -0
  254. package/dist/projectId.d.ts +2 -0
  255. package/dist/projectId.d.ts.map +1 -0
  256. package/dist/projectId.js +16 -0
  257. package/dist/projectId.js.map +1 -0
  258. package/dist/projectPromptPolicy.d.ts +9 -0
  259. package/dist/projectPromptPolicy.d.ts.map +1 -0
  260. package/dist/projectPromptPolicy.js +73 -0
  261. package/dist/projectPromptPolicy.js.map +1 -0
  262. package/dist/prompt/getPrompt.d.ts +6 -0
  263. package/dist/prompt/getPrompt.d.ts.map +1 -0
  264. package/dist/prompt/getPrompt.js +5 -0
  265. package/dist/prompt/getPrompt.js.map +1 -0
  266. package/dist/prompt/refreshPrompt.d.ts +6 -0
  267. package/dist/prompt/refreshPrompt.d.ts.map +1 -0
  268. package/dist/prompt/refreshPrompt.js +9 -0
  269. package/dist/prompt/refreshPrompt.js.map +1 -0
  270. package/dist/prompt/refreshPrompts.d.ts +5 -0
  271. package/dist/prompt/refreshPrompts.d.ts.map +1 -0
  272. package/dist/prompt/refreshPrompts.js +17 -0
  273. package/dist/prompt/refreshPrompts.js.map +1 -0
  274. package/dist/prompt/renderManagedSections.d.ts +3 -0
  275. package/dist/prompt/renderManagedSections.d.ts.map +1 -0
  276. package/dist/prompt/renderManagedSections.js +4 -0
  277. package/dist/prompt/renderManagedSections.js.map +1 -0
  278. package/dist/prompt/sections.d.ts +15 -0
  279. package/dist/prompt/sections.d.ts.map +1 -0
  280. package/dist/prompt/sections.js +62 -0
  281. package/dist/prompt/sections.js.map +1 -0
  282. package/dist/schema/manifest.d.ts +192 -0
  283. package/dist/schema/manifest.d.ts.map +1 -0
  284. package/dist/schema/manifest.js +178 -0
  285. package/dist/schema/manifest.js.map +1 -0
  286. package/dist/state.d.ts +7 -0
  287. package/dist/state.d.ts.map +1 -0
  288. package/dist/state.js +139 -0
  289. package/dist/state.js.map +1 -0
  290. package/dist/taskManager/autoRun.d.ts +16 -0
  291. package/dist/taskManager/autoRun.d.ts.map +1 -0
  292. package/dist/taskManager/autoRun.js +228 -0
  293. package/dist/taskManager/autoRun.js.map +1 -0
  294. package/dist/taskManager/blockStatusMutations.d.ts +42 -0
  295. package/dist/taskManager/blockStatusMutations.d.ts.map +1 -0
  296. package/dist/taskManager/blockStatusMutations.js +88 -0
  297. package/dist/taskManager/blockStatusMutations.js.map +1 -0
  298. package/dist/taskManager/blockSubmission.d.ts +9 -0
  299. package/dist/taskManager/blockSubmission.d.ts.map +1 -0
  300. package/dist/taskManager/blockSubmission.js +124 -0
  301. package/dist/taskManager/blockSubmission.js.map +1 -0
  302. package/dist/taskManager/claimScheduler.d.ts +26 -0
  303. package/dist/taskManager/claimScheduler.d.ts.map +1 -0
  304. package/dist/taskManager/claimScheduler.js +286 -0
  305. package/dist/taskManager/claimScheduler.js.map +1 -0
  306. package/dist/taskManager/doctor.d.ts +6 -0
  307. package/dist/taskManager/doctor.d.ts.map +1 -0
  308. package/dist/taskManager/doctor.js +141 -0
  309. package/dist/taskManager/doctor.js.map +1 -0
  310. package/dist/taskManager/executionStatus.d.ts +74 -0
  311. package/dist/taskManager/executionStatus.d.ts.map +1 -0
  312. package/dist/taskManager/executionStatus.js +180 -0
  313. package/dist/taskManager/executionStatus.js.map +1 -0
  314. package/dist/taskManager/executorApi.d.ts +9 -0
  315. package/dist/taskManager/executorApi.d.ts.map +1 -0
  316. package/dist/taskManager/executorApi.js +87 -0
  317. package/dist/taskManager/executorApi.js.map +1 -0
  318. package/dist/taskManager/feedbackArtifacts.d.ts +14 -0
  319. package/dist/taskManager/feedbackArtifacts.d.ts.map +1 -0
  320. package/dist/taskManager/feedbackArtifacts.js +17 -0
  321. package/dist/taskManager/feedbackArtifacts.js.map +1 -0
  322. package/dist/taskManager/feedbackSubmission.d.ts +7 -0
  323. package/dist/taskManager/feedbackSubmission.d.ts.map +1 -0
  324. package/dist/taskManager/feedbackSubmission.js +136 -0
  325. package/dist/taskManager/feedbackSubmission.js.map +1 -0
  326. package/dist/taskManager/index.d.ts +12 -0
  327. package/dist/taskManager/index.d.ts.map +1 -0
  328. package/dist/taskManager/index.js +11 -0
  329. package/dist/taskManager/index.js.map +1 -0
  330. package/dist/taskManager/promptRenderer.d.ts +29 -0
  331. package/dist/taskManager/promptRenderer.d.ts.map +1 -0
  332. package/dist/taskManager/promptRenderer.js +191 -0
  333. package/dist/taskManager/promptRenderer.js.map +1 -0
  334. package/dist/taskManager/resultIndex.d.ts +15 -0
  335. package/dist/taskManager/resultIndex.d.ts.map +1 -0
  336. package/dist/taskManager/resultIndex.js +61 -0
  337. package/dist/taskManager/resultIndex.js.map +1 -0
  338. package/dist/taskManager/reviewHook.d.ts +10 -0
  339. package/dist/taskManager/reviewHook.d.ts.map +1 -0
  340. package/dist/taskManager/reviewHook.js +49 -0
  341. package/dist/taskManager/reviewHook.js.map +1 -0
  342. package/dist/taskManager/reviewRetry.d.ts +13 -0
  343. package/dist/taskManager/reviewRetry.d.ts.map +1 -0
  344. package/dist/taskManager/reviewRetry.js +112 -0
  345. package/dist/taskManager/reviewRetry.js.map +1 -0
  346. package/dist/taskManager/reviewSubmission.d.ts +8 -0
  347. package/dist/taskManager/reviewSubmission.d.ts.map +1 -0
  348. package/dist/taskManager/reviewSubmission.js +444 -0
  349. package/dist/taskManager/reviewSubmission.js.map +1 -0
  350. package/dist/taskManager/runtimeContext.d.ts +16 -0
  351. package/dist/taskManager/runtimeContext.d.ts.map +1 -0
  352. package/dist/taskManager/runtimeContext.js +31 -0
  353. package/dist/taskManager/runtimeContext.js.map +1 -0
  354. package/dist/taskManager/selectors.d.ts +20 -0
  355. package/dist/taskManager/selectors.d.ts.map +1 -0
  356. package/dist/taskManager/selectors.js +148 -0
  357. package/dist/taskManager/selectors.js.map +1 -0
  358. package/dist/tasks/dependencies.d.ts +5 -0
  359. package/dist/tasks/dependencies.d.ts.map +1 -0
  360. package/dist/tasks/dependencies.js +11 -0
  361. package/dist/tasks/dependencies.js.map +1 -0
  362. package/dist/tasks/parallelSafety.d.ts +3 -0
  363. package/dist/tasks/parallelSafety.d.ts.map +1 -0
  364. package/dist/tasks/parallelSafety.js +18 -0
  365. package/dist/tasks/parallelSafety.js.map +1 -0
  366. package/dist/types.d.ts +675 -0
  367. package/dist/types.d.ts.map +1 -0
  368. package/dist/types.js +11 -0
  369. package/dist/types.js.map +1 -0
  370. package/dist/validatePackage.d.ts +5 -0
  371. package/dist/validatePackage.d.ts.map +1 -0
  372. package/dist/validatePackage.js +130 -0
  373. package/dist/validatePackage.js.map +1 -0
  374. package/package.json +47 -0
@@ -0,0 +1,124 @@
1
+ import { createHash } from "node:crypto";
2
+ import { copyFile, mkdir, readdir, readFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { parseBlockRef } from "../graph/compileTaskGraph.js";
5
+ import { readJsonFile, writeJsonFile } from "../json.js";
6
+ import { writeState } from "../state.js";
7
+ import { exists, loadRuntime, refreshDerivedState } from "./runtimeContext.js";
8
+ import { getBlock } from "./selectors.js";
9
+ import { incrementTaskIndexCount, listDirCount, nextId, readTaskIndex, updateTaskIndex } from "./resultIndex.js";
10
+ async function fileHash(path) {
11
+ return createHash("sha256").update(await readFile(path)).digest("hex");
12
+ }
13
+ async function runHasSubmittedResult(runDir, ref, runId, reportHash) {
14
+ const metadataPath = join(runDir, "metadata.json");
15
+ const reportPath = join(runDir, "report.md");
16
+ if (!(await exists(metadataPath)) || !(await exists(reportPath))) {
17
+ return false;
18
+ }
19
+ const metadata = await readJsonFile(metadataPath);
20
+ if (metadata.ref !== ref || metadata.runId !== runId) {
21
+ return false;
22
+ }
23
+ if (!reportHash) {
24
+ return true;
25
+ }
26
+ if (metadata.reportHash === reportHash) {
27
+ return true;
28
+ }
29
+ return (await fileHash(reportPath)) === reportHash;
30
+ }
31
+ async function findPersistedRun(workspace, taskId, blockId, ref, reportHash) {
32
+ const runRoot = join(workspace.resultsDir, taskId, "blocks", blockId, "runs");
33
+ const index = await readTaskIndex(workspace, taskId);
34
+ const indexedRunId = index.latestRunByBlock?.[ref];
35
+ if (indexedRunId && (await runHasSubmittedResult(join(runRoot, indexedRunId), ref, indexedRunId, reportHash))) {
36
+ return indexedRunId;
37
+ }
38
+ let entries;
39
+ try {
40
+ entries = await readdir(runRoot, { withFileTypes: true });
41
+ }
42
+ catch (error) {
43
+ if (error.code === "ENOENT") {
44
+ return null;
45
+ }
46
+ throw error;
47
+ }
48
+ const runIds = entries
49
+ .filter((entry) => entry.isDirectory() && /^RUN-\d+$/.test(entry.name))
50
+ .map((entry) => entry.name)
51
+ .sort()
52
+ .reverse();
53
+ for (const runId of runIds) {
54
+ if (await runHasSubmittedResult(join(runRoot, runId), ref, runId, reportHash)) {
55
+ return runId;
56
+ }
57
+ }
58
+ return null;
59
+ }
60
+ export async function submitBlockResult(options) {
61
+ const context = await loadRuntime(options);
62
+ const { workspace, manifest, graph } = context;
63
+ let { state } = context;
64
+ const { taskId, blockId } = parseBlockRef(options.ref);
65
+ const block = getBlock(graph, options.ref);
66
+ if (block.type === "review") {
67
+ throw new Error("submit-result only accepts implementation blocks.");
68
+ }
69
+ const reportHash = await fileHash(options.reportPath);
70
+ const inProgress = state.blocks[options.ref]?.status === "in_progress";
71
+ const persistedRunId = (await findPersistedRun(workspace, taskId, blockId, options.ref, reportHash)) ??
72
+ (inProgress ? await findPersistedRun(workspace, taskId, blockId, options.ref) : null);
73
+ if (persistedRunId) {
74
+ await updateTaskIndex(workspace, taskId, (index) => ({
75
+ ...index,
76
+ latestRunByBlock: {
77
+ ...(index.latestRunByBlock ?? {}),
78
+ [options.ref]: persistedRunId
79
+ }
80
+ }));
81
+ state.blocks[options.ref] = { ...state.blocks[options.ref], status: "completed", lastRunId: persistedRunId };
82
+ state.currentRefs = state.currentRefs.filter((ref) => ref !== options.ref);
83
+ state = refreshDerivedState(manifest, state);
84
+ await writeState(workspace.stateFile, state);
85
+ return { ref: options.ref, runId: persistedRunId, status: "completed" };
86
+ }
87
+ if (!inProgress) {
88
+ throw new Error(`Block '${options.ref}' must be in_progress before submit-result.`);
89
+ }
90
+ const runRoot = join(workspace.resultsDir, taskId, "blocks", blockId, "runs");
91
+ const runId = options.runId ?? nextId("RUN", await listDirCount(runRoot));
92
+ const runDir = join(runRoot, runId);
93
+ const reportDestination = join(runDir, "report.md");
94
+ const metadataPath = join(runDir, "metadata.json");
95
+ await mkdir(runDir, { recursive: true });
96
+ if (options.reportPath !== reportDestination) {
97
+ await copyFile(options.reportPath, reportDestination);
98
+ }
99
+ const previousMetadata = (await exists(metadataPath)) ? await readJsonFile(metadataPath) : {};
100
+ await writeJsonFile(metadataPath, {
101
+ ...previousMetadata,
102
+ ref: options.ref,
103
+ taskId,
104
+ blockId,
105
+ runId,
106
+ submittedAt: new Date().toISOString(),
107
+ reportHash,
108
+ sourceReportPath: options.reportPath
109
+ });
110
+ await updateTaskIndex(workspace, taskId, (index) => ({
111
+ ...index,
112
+ latestRunByBlock: {
113
+ ...(index.latestRunByBlock ?? {}),
114
+ [options.ref]: runId
115
+ },
116
+ counts: incrementTaskIndexCount(index, "runs")
117
+ }));
118
+ state.blocks[options.ref] = { ...state.blocks[options.ref], status: "completed", lastRunId: runId };
119
+ state.currentRefs = state.currentRefs.filter((ref) => ref !== options.ref);
120
+ state = refreshDerivedState(manifest, state);
121
+ await writeState(workspace.stateFile, state);
122
+ return { ref: options.ref, runId, status: "completed" };
123
+ }
124
+ //# sourceMappingURL=blockSubmission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockSubmission.js","sourceRoot":"","sources":["../../src/taskManager/blockSubmission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { BlockType, ClaimResult, ClaimScope, ExecutionGraphSession, PackageWorkspaceRef } from "../types.js";
2
+ export declare function claimNext(options: {
3
+ projectRoot: PackageWorkspaceRef;
4
+ parallel?: boolean;
5
+ blockType?: BlockType;
6
+ dryRun?: boolean;
7
+ scope?: ClaimScope;
8
+ session?: ExecutionGraphSession;
9
+ }): Promise<ClaimResult>;
10
+ export declare function claimBlock(options: {
11
+ projectRoot: PackageWorkspaceRef;
12
+ ref: string;
13
+ dispatch?: boolean;
14
+ session?: ExecutionGraphSession;
15
+ }): Promise<ClaimResult>;
16
+ export declare function claimTask(options: {
17
+ projectRoot: PackageWorkspaceRef;
18
+ taskId: string;
19
+ session?: ExecutionGraphSession;
20
+ }): Promise<ClaimResult>;
21
+ export declare function claimBlockType(options: {
22
+ projectRoot: PackageWorkspaceRef;
23
+ blockType: BlockType;
24
+ session?: ExecutionGraphSession;
25
+ }): Promise<ClaimResult>;
26
+ //# sourceMappingURL=claimScheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claimScheduler.d.ts","sourceRoot":"","sources":["../../src/taskManager/claimScheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA0BlH,wBAAsB,SAAS,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC,GAAG,OAAO,CAAC,WAAW,CAAC,CA6PvB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,WAAW,EAAE,mBAAmB,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC,GAAG,OAAO,CAAC,WAAW,CAAC,CAwBvB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,mBAAmB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC,GAAG,OAAO,CAAC,WAAW,CAAC,CAEvB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,WAAW,EAAE,mBAAmB,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC,GAAG,OAAO,CAAC,WAAW,CAAC,CAEvB"}
@@ -0,0 +1,286 @@
1
+ import { writeState } from "../state.js";
2
+ import { patchFeedbackArtifact } from "./feedbackArtifacts.js";
3
+ import { updateTaskIndex } from "./resultIndex.js";
4
+ import { loadRuntime, refreshDerivedState } from "./runtimeContext.js";
5
+ import { activeOpenFeedback, blockDependenciesCompleted, blockInScope, canDispatchImplementationBlock, canClaimReviewBlock, claimResultForBlock, feedbackInScope, markClaimed, normalizeClaimScope, taskDependenciesSatisfied, validateClaimScope } from "./selectors.js";
6
+ function withCurrentRef(currentRefs, ref) {
7
+ return currentRefs.includes(ref) ? currentRefs : [...currentRefs, ref];
8
+ }
9
+ function withoutCurrentRef(currentRefs, ref) {
10
+ return currentRefs.filter((currentRef) => currentRef !== ref);
11
+ }
12
+ export async function claimNext(options) {
13
+ const context = await loadRuntime(options);
14
+ let { state } = context;
15
+ const { graph, manifest, workspace } = context;
16
+ const scope = normalizeClaimScope(options.scope);
17
+ const blockType = options.blockType;
18
+ const dryRun = options.dryRun === true;
19
+ const invalidScope = validateClaimScope(scope, graph);
20
+ if (invalidScope) {
21
+ return invalidScope;
22
+ }
23
+ const openFeedback = activeOpenFeedback(state);
24
+ if (openFeedback.length > 1) {
25
+ return { kind: "blocked", reason: "Multiple open feedback envelopes exist; resolve or dismiss one before continuing." };
26
+ }
27
+ if (openFeedback.length === 1) {
28
+ const [feedbackId, feedback] = openFeedback[0];
29
+ if (!feedbackInScope(feedback, graph, scope)) {
30
+ return { kind: "none", reason: "no_claimable_blocks_in_scope" };
31
+ }
32
+ const taskId = graph.blockTaskByRef.get(feedback.sourceReviewBlockRef);
33
+ if (!taskId) {
34
+ throw new Error(`Feedback '${feedbackId}' points to an unknown review block.`);
35
+ }
36
+ if (dryRun) {
37
+ return { kind: "feedback", content: feedback.content };
38
+ }
39
+ await patchFeedbackArtifact(workspace, taskId, feedbackId, { status: "in_progress" });
40
+ await updateTaskIndex(workspace, taskId, (index) => ({
41
+ ...index,
42
+ feedbackStatusById: {
43
+ ...(index.feedbackStatusById ?? {}),
44
+ [feedbackId]: "in_progress"
45
+ }
46
+ }));
47
+ feedback.status = "in_progress";
48
+ state.currentFeedbackId = feedbackId;
49
+ state.currentReviewBlockRef = feedback.sourceReviewBlockRef;
50
+ state.currentRefs = withoutCurrentRef(state.currentRefs, feedback.sourceReviewBlockRef);
51
+ state = refreshDerivedState(manifest, state);
52
+ await writeState(workspace.stateFile, state);
53
+ return { kind: "feedback", content: feedback.content };
54
+ }
55
+ const inProgressReview = graph.blockRefsInManifestOrder.find((ref) => {
56
+ const block = graph.blocksByRef.get(ref);
57
+ return block?.type === "review" && state.blocks[ref]?.status === "in_progress";
58
+ });
59
+ if (inProgressReview && state.currentFeedbackId) {
60
+ if (blockType && blockType !== "review") {
61
+ return { kind: "blocked", ref: inProgressReview, reason: "A review block is in progress outside the selected claim type." };
62
+ }
63
+ const currentFeedback = state.feedback[state.currentFeedbackId];
64
+ if (currentFeedback?.status === "resolved") {
65
+ if (!blockInScope(inProgressReview, graph, scope)) {
66
+ return { kind: "blocked", ref: inProgressReview, reason: "A review block is in progress outside the selected Auto Run scope." };
67
+ }
68
+ if (dryRun) {
69
+ return claimResultForBlock(inProgressReview, graph, "feedback_resolved");
70
+ }
71
+ state.blocks[inProgressReview] = { ...state.blocks[inProgressReview], pendingFeedbackId: null };
72
+ state.currentRefs = withCurrentRef(state.currentRefs, inProgressReview);
73
+ state.currentFeedbackId = null;
74
+ state.currentReviewBlockRef = inProgressReview;
75
+ await writeState(workspace.stateFile, refreshDerivedState(manifest, state));
76
+ return claimResultForBlock(inProgressReview, graph, "feedback_resolved");
77
+ }
78
+ }
79
+ if (inProgressReview) {
80
+ if (blockType && blockType !== "review") {
81
+ return { kind: "blocked", ref: inProgressReview, reason: "A review block is in progress outside the selected claim type." };
82
+ }
83
+ if (!blockInScope(inProgressReview, graph, scope)) {
84
+ return { kind: "blocked", ref: inProgressReview, reason: "A review block is in progress outside the selected Auto Run scope." };
85
+ }
86
+ const reason = state.blocks[inProgressReview]?.pendingFeedbackId ? "feedback_resolved" : "current";
87
+ if (dryRun) {
88
+ return claimResultForBlock(inProgressReview, graph, reason);
89
+ }
90
+ state.blocks[inProgressReview] = { ...state.blocks[inProgressReview], pendingFeedbackId: null };
91
+ state.currentRefs = withCurrentRef(state.currentRefs, inProgressReview);
92
+ state.currentReviewBlockRef = inProgressReview;
93
+ await writeState(workspace.stateFile, refreshDerivedState(manifest, state));
94
+ return claimResultForBlock(inProgressReview, graph, reason);
95
+ }
96
+ const current = graph.blockRefsInManifestOrder.find((ref) => {
97
+ const block = graph.blocksByRef.get(ref);
98
+ return state.blocks[ref]?.status === "in_progress" && block?.type !== "review";
99
+ });
100
+ if (current) {
101
+ const currentBlock = graph.blocksByRef.get(current);
102
+ if (blockType && currentBlock?.type !== blockType) {
103
+ return { kind: "blocked", ref: current, reason: "A block is in progress outside the selected claim type." };
104
+ }
105
+ if (!blockInScope(current, graph, scope)) {
106
+ return { kind: "blocked", ref: current, reason: "A block is in progress outside the selected Auto Run scope." };
107
+ }
108
+ return claimResultForBlock(current, graph, "current");
109
+ }
110
+ const claimSequentialReviewBlock = async () => {
111
+ for (const ref of graph.blockRefsInManifestOrder) {
112
+ if (!blockInScope(ref, graph, scope)) {
113
+ continue;
114
+ }
115
+ const taskId = graph.blockTaskByRef.get(ref);
116
+ const block = graph.blocksByRef.get(ref);
117
+ if (blockType && blockType !== "review") {
118
+ continue;
119
+ }
120
+ if (!taskId || block?.type !== "review") {
121
+ continue;
122
+ }
123
+ if (taskDependenciesSatisfied(graph, state, taskId) && state.blocks[ref]?.status === "ready" && canClaimReviewBlock(graph, state, ref)) {
124
+ if (dryRun) {
125
+ return claimResultForBlock(ref, graph, "claimed");
126
+ }
127
+ markClaimed(state, ref, graph);
128
+ state = refreshDerivedState(manifest, state);
129
+ await writeState(workspace.stateFile, state);
130
+ return claimResultForBlock(ref, graph, "claimed");
131
+ }
132
+ }
133
+ return null;
134
+ };
135
+ const nextSequentialClaimableRefs = () => graph.blockRefsInManifestOrder.filter((ref) => {
136
+ if (!blockInScope(ref, graph, scope)) {
137
+ return false;
138
+ }
139
+ const taskId = graph.blockTaskByRef.get(ref);
140
+ const block = graph.blocksByRef.get(ref);
141
+ if (blockType && block?.type !== blockType) {
142
+ return false;
143
+ }
144
+ if (!taskId || !block || state.blocks[ref]?.status !== "ready" || !taskDependenciesSatisfied(graph, state, taskId)) {
145
+ return false;
146
+ }
147
+ const ready = block.type === "review" ? canClaimReviewBlock(graph, state, ref) : blockDependenciesCompleted(graph, state, ref);
148
+ return ready && (block.type === "review" || !graph.parallelSafeByBlockRef.get(ref));
149
+ });
150
+ if (options.parallel) {
151
+ if (!manifest.execution.parallel.enabled) {
152
+ return { kind: "blocked", reason: "Parallel execution is disabled by the Plan Package." };
153
+ }
154
+ const selected = [];
155
+ for (const ref of graph.blockRefsInManifestOrder) {
156
+ if (!blockInScope(ref, graph, scope)) {
157
+ continue;
158
+ }
159
+ const taskId = graph.blockTaskByRef.get(ref);
160
+ const block = graph.blocksByRef.get(ref);
161
+ if (blockType && block?.type !== blockType) {
162
+ continue;
163
+ }
164
+ if (!taskId || !block || block.type === "review") {
165
+ continue;
166
+ }
167
+ if (selected.length >= manifest.execution.parallel.maxConcurrent) {
168
+ break;
169
+ }
170
+ if (!taskDependenciesSatisfied(graph, state, taskId) || !blockDependenciesCompleted(graph, state, ref)) {
171
+ continue;
172
+ }
173
+ if (!graph.parallelSafeByBlockRef.get(ref) || state.blocks[ref]?.status !== "ready") {
174
+ continue;
175
+ }
176
+ const locks = new Set(graph.locksByBlockRef.get(ref) ?? []);
177
+ const conflicts = selected.some((selectedRef) => {
178
+ const selectedTaskId = graph.blockTaskByRef.get(selectedRef);
179
+ if (selectedTaskId && (graph.taskReachable(taskId, selectedTaskId) || graph.taskReachable(selectedTaskId, taskId))) {
180
+ return true;
181
+ }
182
+ return (graph.locksByBlockRef.get(selectedRef) ?? []).some((lock) => locks.has(lock));
183
+ });
184
+ if (!conflicts) {
185
+ selected.push(ref);
186
+ }
187
+ }
188
+ if (selected.length === 0) {
189
+ const reviewClaim = await claimSequentialReviewBlock();
190
+ if (reviewClaim) {
191
+ if (dryRun && reviewClaim.kind === "block" && reviewClaim.blockType === "review") {
192
+ return {
193
+ ...reviewClaim,
194
+ requestedMode: "parallel",
195
+ parallelFallbackReason: "review_requires_sequential_claim",
196
+ nextParallelClaimable: []
197
+ };
198
+ }
199
+ return reviewClaim;
200
+ }
201
+ state.currentRefs = [];
202
+ if (!dryRun) {
203
+ await writeState(workspace.stateFile, refreshDerivedState(manifest, state));
204
+ }
205
+ return { kind: "none", reason: "no_parallel_blocks", nextSequentialClaimable: nextSequentialClaimableRefs() };
206
+ }
207
+ if (dryRun) {
208
+ return { kind: "batch", refs: selected };
209
+ }
210
+ for (const ref of selected) {
211
+ state.blocks[ref] = { ...state.blocks[ref], status: "in_progress" };
212
+ }
213
+ state.currentRefs = selected;
214
+ await writeState(workspace.stateFile, refreshDerivedState(manifest, state));
215
+ return { kind: "batch", refs: selected };
216
+ }
217
+ for (const ref of graph.blockRefsInManifestOrder) {
218
+ if (!blockInScope(ref, graph, scope)) {
219
+ continue;
220
+ }
221
+ const taskId = graph.blockTaskByRef.get(ref);
222
+ const block = graph.blocksByRef.get(ref);
223
+ if (blockType && block?.type !== blockType) {
224
+ continue;
225
+ }
226
+ if (!taskId || !block || block.type === "review") {
227
+ continue;
228
+ }
229
+ if (taskDependenciesSatisfied(graph, state, taskId) && blockDependenciesCompleted(graph, state, ref) && state.blocks[ref]?.status === "ready") {
230
+ if (dryRun) {
231
+ return claimResultForBlock(ref, graph, "claimed");
232
+ }
233
+ markClaimed(state, ref, graph);
234
+ await writeState(workspace.stateFile, refreshDerivedState(manifest, state));
235
+ return claimResultForBlock(ref, graph, "claimed");
236
+ }
237
+ }
238
+ const reviewClaim = await claimSequentialReviewBlock();
239
+ if (reviewClaim) {
240
+ return reviewClaim;
241
+ }
242
+ const blockedRef = graph.blockRefsInManifestOrder.find((ref) => blockInScope(ref, graph, scope) && state.blocks[ref]?.status === "blocked");
243
+ if (blockedRef) {
244
+ return {
245
+ kind: "blocked",
246
+ ref: blockedRef,
247
+ reason: state.blocks[blockedRef]?.blockedReason ?? `Block '${blockedRef}' is blocked.`
248
+ };
249
+ }
250
+ if (!dryRun) {
251
+ await writeState(workspace.stateFile, refreshDerivedState(manifest, state));
252
+ }
253
+ return { kind: "none", reason: "no_claimable_blocks" };
254
+ }
255
+ export async function claimBlock(options) {
256
+ if (options.dispatch) {
257
+ const context = await loadRuntime(options);
258
+ const { workspace, manifest, graph, state } = context;
259
+ const invalidScope = validateClaimScope({ kind: "block", blockRef: options.ref }, graph);
260
+ if (invalidScope) {
261
+ return invalidScope;
262
+ }
263
+ const block = graph.blocksByRef.get(options.ref);
264
+ if (block?.type !== "implementation") {
265
+ return { kind: "blocked", ref: options.ref, reason: "dispatch claims only support implementation blocks." };
266
+ }
267
+ if (!graph.parallelSafeByBlockRef.get(options.ref)) {
268
+ return { kind: "blocked", ref: options.ref, reason: `Block '${options.ref}' is not parallel-safe.` };
269
+ }
270
+ if (!canDispatchImplementationBlock(graph, state, options.ref)) {
271
+ return { kind: "blocked", ref: options.ref, reason: `Block '${options.ref}' is not dispatchable right now.` };
272
+ }
273
+ state.blocks[options.ref] = { ...state.blocks[options.ref], status: "in_progress" };
274
+ state.currentRefs = withCurrentRef(state.currentRefs, options.ref);
275
+ await writeState(workspace.stateFile, refreshDerivedState(manifest, state));
276
+ return claimResultForBlock(options.ref, graph, "dispatched");
277
+ }
278
+ return claimNext({ projectRoot: options.projectRoot, scope: { kind: "block", blockRef: options.ref }, session: options.session });
279
+ }
280
+ export async function claimTask(options) {
281
+ return claimNext({ projectRoot: options.projectRoot, scope: { kind: "task", taskId: options.taskId }, session: options.session });
282
+ }
283
+ export async function claimBlockType(options) {
284
+ return claimNext({ projectRoot: options.projectRoot, blockType: options.blockType, session: options.session });
285
+ }
286
+ //# sourceMappingURL=claimScheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claimScheduler.js","sourceRoot":"","sources":["../../src/taskManager/claimScheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DoctorReport, PackageWorkspaceRef } from "../types.js";
2
+ export declare function runDoctor(options: {
3
+ projectRoot: PackageWorkspaceRef;
4
+ repair?: boolean;
5
+ }): Promise<DoctorReport>;
6
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/taskManager/doctor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAe,YAAY,EAAE,mBAAmB,EAAkC,MAAM,aAAa,CAAC;AAoElH,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAgFtH"}
@@ -0,0 +1,141 @@
1
+ import { access } from "node:fs/promises";
2
+ import { constants } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { compileTaskGraph } from "../graph/compileTaskGraph.js";
5
+ import { readJsonFile } from "../json.js";
6
+ import { findOrphanResults } from "../package/orphans.js";
7
+ import { loadPackage } from "../package/loadPackage.js";
8
+ import { ensureStateForManifest, readState, writeState } from "../state.js";
9
+ import { readTaskIndex, updateTaskIndex } from "./resultIndex.js";
10
+ async function exists(path) {
11
+ try {
12
+ await access(path, constants.R_OK);
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ async function resultRunMatchesIndex(workspace, ref, taskId, runId) {
20
+ const blockId = ref.split("#")[1];
21
+ if (!blockId) {
22
+ return false;
23
+ }
24
+ const runDir = join(workspace.resultsDir, taskId, "blocks", blockId, "runs", runId);
25
+ const metadataPath = join(runDir, "metadata.json");
26
+ if (!(await exists(metadataPath)) || !(await exists(join(runDir, "report.md")))) {
27
+ return false;
28
+ }
29
+ const metadata = await readJsonFile(metadataPath);
30
+ return metadata.ref === ref && metadata.taskId === taskId && metadata.blockId === blockId && metadata.runId === runId;
31
+ }
32
+ function repairStaleCurrentRef(state, ref) {
33
+ const nextRefs = state.currentRefs.filter((currentRef) => currentRef !== ref);
34
+ if (nextRefs.length === state.currentRefs.length) {
35
+ return false;
36
+ }
37
+ state.currentRefs = nextRefs;
38
+ return true;
39
+ }
40
+ async function repairStateRunMismatch(options) {
41
+ if (!(await resultRunMatchesIndex(options.workspace, options.ref, options.taskId, options.indexRunId))) {
42
+ return false;
43
+ }
44
+ options.state.blocks[options.ref] = {
45
+ ...(options.state.blocks[options.ref] ?? {}),
46
+ status: "completed",
47
+ lastRunId: options.indexRunId
48
+ };
49
+ options.state.currentRefs = options.state.currentRefs.filter((ref) => ref !== options.ref);
50
+ return true;
51
+ }
52
+ async function repairIndexRunMismatch(options) {
53
+ if (!(await resultRunMatchesIndex(options.workspace, options.ref, options.taskId, options.stateRunId))) {
54
+ return false;
55
+ }
56
+ await updateTaskIndex(options.workspace, options.taskId, (index) => ({
57
+ ...index,
58
+ latestRunByBlock: {
59
+ ...(index.latestRunByBlock ?? {}),
60
+ [options.ref]: options.stateRunId
61
+ }
62
+ }));
63
+ return true;
64
+ }
65
+ export async function runDoctor(options) {
66
+ const { workspace, manifest } = await loadPackage(options.projectRoot);
67
+ const graph = compileTaskGraph(manifest);
68
+ let state = await readState(workspace.stateFile);
69
+ const issues = [];
70
+ let stateChanged = false;
71
+ for (const ref of state.currentRefs ?? []) {
72
+ if (!graph.blocksByRef.has(ref)) {
73
+ const repaired = options.repair ? repairStaleCurrentRef(state, ref) : false;
74
+ stateChanged = stateChanged || repaired;
75
+ issues.push({
76
+ code: "stale_current_ref",
77
+ ref,
78
+ repaired,
79
+ message: `Current ref '${ref}' does not exist in the manifest.`
80
+ });
81
+ }
82
+ }
83
+ for (const orphan of await findOrphanResults(workspace, manifest)) {
84
+ issues.push({
85
+ code: "orphan_result",
86
+ taskId: orphan.taskId,
87
+ path: orphan.path,
88
+ message: `Result directory '${orphan.taskId}' does not belong to a manifest task.`
89
+ });
90
+ }
91
+ for (const taskId of graph.taskNodesInManifestOrder) {
92
+ const index = await readTaskIndex(workspace, taskId);
93
+ const checkedRefs = new Set();
94
+ for (const [ref, indexRunId] of Object.entries(index.latestRunByBlock ?? {})) {
95
+ checkedRefs.add(ref);
96
+ const stateRunId = state.blocks?.[ref]?.lastRunId ?? null;
97
+ if (stateRunId !== indexRunId) {
98
+ const repaired = options.repair
99
+ ? await repairStateRunMismatch({ workspace, state, ref, taskId, indexRunId })
100
+ : false;
101
+ stateChanged = stateChanged || repaired;
102
+ issues.push({
103
+ code: "index_state_mismatch",
104
+ ref,
105
+ taskId,
106
+ path: join(workspace.resultsDir, taskId, "index.json"),
107
+ stateRunId,
108
+ indexRunId,
109
+ repaired,
110
+ message: `Task index points '${ref}' to '${indexRunId}', but state has '${stateRunId ?? "none"}'.`
111
+ });
112
+ }
113
+ }
114
+ for (const ref of graph.blocksByTask.get(taskId) ?? []) {
115
+ if (checkedRefs.has(ref)) {
116
+ continue;
117
+ }
118
+ const stateRunId = state.blocks?.[ref]?.lastRunId ?? null;
119
+ if (!stateRunId) {
120
+ continue;
121
+ }
122
+ const repaired = options.repair ? await repairIndexRunMismatch({ workspace, ref, taskId, stateRunId }) : false;
123
+ issues.push({
124
+ code: "index_state_mismatch",
125
+ ref,
126
+ taskId,
127
+ path: join(workspace.resultsDir, taskId, "index.json"),
128
+ stateRunId,
129
+ indexRunId: null,
130
+ repaired,
131
+ message: `State points '${ref}' to '${stateRunId}', but task index has no latest run for it.`
132
+ });
133
+ }
134
+ }
135
+ if (stateChanged) {
136
+ state = ensureStateForManifest(manifest, state);
137
+ await writeState(workspace.stateFile, state);
138
+ }
139
+ return { ok: issues.every((issue) => issue.repaired === true), issues };
140
+ }
141
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/taskManager/doctor.ts"],"names":[],"mappings":"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"}