@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,444 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, readdir } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
+ import { z } from "zod";
5
+ import { parseBlockRef } from "../graph/compileTaskGraph.js";
6
+ import { readJsonFile, writeJsonFile } from "../json.js";
7
+ import { writeState } from "../state.js";
8
+ import { writeFeedbackArtifact } from "./feedbackArtifacts.js";
9
+ import { executeReviewHook } from "./reviewHook.js";
10
+ import { loadRuntime, refreshDerivedState } from "./runtimeContext.js";
11
+ import { incrementTaskIndexCount, listDirCount, nextId, recordReviewCompletionReason, updateTaskIndex } from "./resultIndex.js";
12
+ import { computeWorkRevision, getBlock, getTask, isActiveFeedbackStatus } from "./selectors.js";
13
+ const reviewResultSchema = z
14
+ .object({
15
+ reviewBlockRef: z.string().min(1),
16
+ taskId: z.string().min(1),
17
+ verdict: z.enum(["passed", "needs_changes"]),
18
+ content: z.string()
19
+ })
20
+ .strict();
21
+ function reviewResultHash(result) {
22
+ return createHash("sha256").update(JSON.stringify(result)).digest("hex");
23
+ }
24
+ async function recordReviewAttemptIndexes(options) {
25
+ const { taskId, blockId } = parseBlockRef(options.reviewBlockRef);
26
+ await writeJsonFile(join(options.workspace.resultsDir, taskId, "reviews", blockId, "index.json"), {
27
+ latestReviewAttemptId: options.attemptId,
28
+ latestVerdict: options.reviewResult.verdict,
29
+ reviewedWorkRevision: options.workRevision
30
+ });
31
+ await updateTaskIndex(options.workspace, taskId, (index) => ({
32
+ ...index,
33
+ latestReviewAttemptByBlock: {
34
+ ...(index.latestReviewAttemptByBlock ?? {}),
35
+ [options.reviewBlockRef]: options.attemptId
36
+ },
37
+ latestReviewVerdictByBlock: {
38
+ ...(index.latestReviewVerdictByBlock ?? {}),
39
+ [options.reviewBlockRef]: options.reviewResult.verdict
40
+ },
41
+ latestReviewedWorkRevisionByBlock: {
42
+ ...(index.latestReviewedWorkRevisionByBlock ?? {}),
43
+ [options.reviewBlockRef]: options.workRevision
44
+ },
45
+ counts: options.incrementCount ? incrementTaskIndexCount(index, "reviewAttempts") : index.counts
46
+ }));
47
+ }
48
+ async function writeReviewAttempt(options) {
49
+ const { taskId, blockId } = parseBlockRef(options.reviewBlockRef);
50
+ const attemptRoot = join(options.workspace.resultsDir, taskId, "reviews", blockId, "attempts");
51
+ const attemptId = nextId("REV", await listDirCount(attemptRoot));
52
+ const attemptDir = join(attemptRoot, attemptId);
53
+ await mkdir(attemptDir, { recursive: true });
54
+ await writeJsonFile(join(attemptDir, "review-result.json"), options.reviewResult);
55
+ await writeJsonFile(join(attemptDir, "metadata.json"), {
56
+ reviewBlockRef: options.reviewBlockRef,
57
+ attemptId,
58
+ reviewedWorkRevision: options.workRevision,
59
+ resultHash: options.resultHash,
60
+ sourceResultPath: resolve(options.resultPath),
61
+ reviewedAt: new Date().toISOString()
62
+ });
63
+ await recordReviewAttemptIndexes({ ...options, attemptId, incrementCount: true });
64
+ return attemptId;
65
+ }
66
+ async function readMatchingReviewAttempt(options) {
67
+ try {
68
+ const metadata = await readJsonFile(join(options.attemptDir, "metadata.json"));
69
+ if (metadata.reviewBlockRef !== options.reviewBlockRef || metadata.attemptId !== options.attemptId) {
70
+ return null;
71
+ }
72
+ if (reviewResultHash(reviewResultSchema.parse(await readJsonFile(join(options.attemptDir, "review-result.json")))) !== options.resultHash) {
73
+ return null;
74
+ }
75
+ return {
76
+ attemptId: options.attemptId,
77
+ reviewedWorkRevision: typeof metadata.reviewedWorkRevision === "string" ? metadata.reviewedWorkRevision : null,
78
+ sourceResultPath: typeof metadata.sourceResultPath === "string" ? metadata.sourceResultPath : null
79
+ };
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ async function findPersistedReviewAttempt(options) {
86
+ const { taskId, blockId } = parseBlockRef(options.reviewBlockRef);
87
+ const attemptRoot = join(options.workspace.resultsDir, taskId, "reviews", blockId, "attempts");
88
+ let entries;
89
+ try {
90
+ entries = await readdir(attemptRoot, { withFileTypes: true });
91
+ }
92
+ catch (error) {
93
+ if (error.code === "ENOENT") {
94
+ return null;
95
+ }
96
+ throw error;
97
+ }
98
+ const attemptIds = entries
99
+ .filter((entry) => entry.isDirectory() && /^REV-\d+$/.test(entry.name))
100
+ .map((entry) => entry.name)
101
+ .sort()
102
+ .reverse();
103
+ for (const attemptId of attemptIds) {
104
+ const attempt = await readMatchingReviewAttempt({
105
+ attemptDir: join(attemptRoot, attemptId),
106
+ reviewBlockRef: options.reviewBlockRef,
107
+ attemptId,
108
+ resultHash: options.resultHash
109
+ });
110
+ if (attempt) {
111
+ return attempt;
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+ async function recordFeedbackEnvelopeIndexes(options) {
117
+ await updateTaskIndex(options.workspace, options.taskId, (index) => ({
118
+ ...index,
119
+ latestFeedbackByReviewBlock: {
120
+ ...(index.latestFeedbackByReviewBlock ?? {}),
121
+ [options.reviewBlockRef]: options.feedbackId
122
+ },
123
+ feedbackStatusById: {
124
+ ...(index.feedbackStatusById ?? {}),
125
+ [options.feedbackId]: options.feedbackStatus
126
+ },
127
+ counts: options.incrementCount ? incrementTaskIndexCount(index, "feedbackEnvelopes") : index.counts
128
+ }));
129
+ }
130
+ async function findFeedbackForReviewAttempt(options) {
131
+ const feedbackRoot = join(options.workspace.resultsDir, options.taskId, "feedback");
132
+ let entries;
133
+ try {
134
+ entries = await readdir(feedbackRoot, { withFileTypes: true });
135
+ }
136
+ catch (error) {
137
+ if (error.code === "ENOENT") {
138
+ return null;
139
+ }
140
+ throw error;
141
+ }
142
+ const feedbackIds = entries
143
+ .filter((entry) => entry.isDirectory() && /^FE-\d+$/.test(entry.name))
144
+ .map((entry) => entry.name)
145
+ .sort();
146
+ for (const feedbackId of feedbackIds) {
147
+ try {
148
+ const artifact = await readJsonFile(join(feedbackRoot, feedbackId, "feedback.json"));
149
+ if (artifact.feedbackId === feedbackId &&
150
+ artifact.sourceReviewBlockRef === options.reviewBlockRef &&
151
+ artifact.sourceReviewAttemptId === options.attemptId) {
152
+ return artifact;
153
+ }
154
+ }
155
+ catch {
156
+ continue;
157
+ }
158
+ }
159
+ return null;
160
+ }
161
+ async function reviewCompletionReasonForAttempt(options) {
162
+ try {
163
+ const index = await readJsonFile(join(options.workspace.resultsDir, options.taskId, "index.json"));
164
+ if (index.latestReviewAttemptByBlock?.[options.reviewBlockRef] !== options.attemptId) {
165
+ return null;
166
+ }
167
+ return index.reviewCompletionReasonByBlock?.[options.reviewBlockRef] ?? null;
168
+ }
169
+ catch (error) {
170
+ if (error.code === "ENOENT") {
171
+ return null;
172
+ }
173
+ throw error;
174
+ }
175
+ }
176
+ async function nextFeedbackId(options) {
177
+ let count = Math.max(Object.keys(options.state.feedback).length, await listDirCount(join(options.workspace.resultsDir, options.taskId, "feedback")));
178
+ let feedbackId = nextId("FE", count);
179
+ while (options.state.feedback[feedbackId]) {
180
+ count += 1;
181
+ feedbackId = nextId("FE", count);
182
+ }
183
+ return feedbackId;
184
+ }
185
+ function maxFeedbackCyclesReached(previousFeedbackCount, maxFeedbackCycles) {
186
+ // maxFeedbackCycles counts re-review feedback cycles after the initial needs_changes envelope.
187
+ return maxFeedbackCycles === 0 || previousFeedbackCount > maxFeedbackCycles;
188
+ }
189
+ function withoutCurrentRef(currentRefs, ref) {
190
+ return currentRefs.filter((currentRef) => currentRef !== ref);
191
+ }
192
+ export async function submitReviewResult(options) {
193
+ const context = await loadRuntime(options);
194
+ const { workspace, manifest, graph } = context;
195
+ let { state } = context;
196
+ const { taskId } = parseBlockRef(options.ref);
197
+ const block = getBlock(graph, options.ref);
198
+ if (block.type !== "review") {
199
+ throw new Error("submit-review only accepts review blocks.");
200
+ }
201
+ const parsed = reviewResultSchema.parse(await readJsonFile(options.resultPath));
202
+ const resultHash = reviewResultHash(parsed);
203
+ if (parsed.reviewBlockRef !== options.ref || parsed.taskId !== taskId) {
204
+ throw new Error("review-result.json does not match the submitted review block ref.");
205
+ }
206
+ if (state.blocks[options.ref]?.status !== "in_progress") {
207
+ throw new Error(`Review block '${options.ref}' must be in_progress before submit-review.`);
208
+ }
209
+ const workRevision = computeWorkRevision(graph, state, options.ref);
210
+ const persistedAttempt = await findPersistedReviewAttempt({ workspace, reviewBlockRef: options.ref, resultHash });
211
+ const persistedAttemptId = persistedAttempt?.attemptId ?? null;
212
+ const persistedFeedback = persistedAttemptId && parsed.verdict === "needs_changes"
213
+ ? await findFeedbackForReviewAttempt({ workspace, taskId, reviewBlockRef: options.ref, attemptId: persistedAttemptId })
214
+ : null;
215
+ const persistedCompletionReason = persistedAttemptId && parsed.verdict === "needs_changes" && persistedFeedback === null
216
+ ? await reviewCompletionReasonForAttempt({ workspace, taskId, reviewBlockRef: options.ref, attemptId: persistedAttemptId })
217
+ : null;
218
+ const persistedFeedbackIsActive = persistedFeedback ? isActiveFeedbackStatus(persistedFeedback.status) : false;
219
+ const isSameWorkRevision = persistedAttempt?.reviewedWorkRevision === workRevision;
220
+ const isCurrentFeedbackRetry = parsed.verdict === "needs_changes" &&
221
+ persistedFeedback !== null &&
222
+ state.currentFeedbackId === persistedFeedback.feedbackId &&
223
+ state.currentReviewBlockRef === options.ref;
224
+ const isPendingResolvedFeedbackRetry = parsed.verdict === "needs_changes" &&
225
+ persistedFeedback !== null &&
226
+ persistedFeedback.status === "resolved" &&
227
+ state.blocks[options.ref]?.pendingFeedbackId === persistedFeedback.feedbackId;
228
+ const shouldReusePersistedAttempt = persistedAttemptId !== null && (isSameWorkRevision || isCurrentFeedbackRetry || isPendingResolvedFeedbackRetry);
229
+ const attemptId = shouldReusePersistedAttempt && persistedAttemptId
230
+ ? persistedAttemptId
231
+ : await writeReviewAttempt({
232
+ workspace,
233
+ reviewBlockRef: options.ref,
234
+ reviewResult: parsed,
235
+ workRevision,
236
+ resultHash,
237
+ resultPath: options.resultPath
238
+ });
239
+ if (shouldReusePersistedAttempt && persistedAttemptId) {
240
+ await recordReviewAttemptIndexes({
241
+ workspace,
242
+ reviewBlockRef: options.ref,
243
+ reviewResult: parsed,
244
+ workRevision: persistedAttempt?.reviewedWorkRevision ?? workRevision,
245
+ attemptId,
246
+ incrementCount: false
247
+ });
248
+ if (parsed.verdict === "needs_changes" && persistedFeedback) {
249
+ await recordFeedbackEnvelopeIndexes({
250
+ workspace,
251
+ taskId,
252
+ reviewBlockRef: options.ref,
253
+ feedbackId: persistedFeedback.feedbackId,
254
+ feedbackStatus: persistedFeedback.status,
255
+ incrementCount: false
256
+ });
257
+ state.feedback[persistedFeedback.feedbackId] = {
258
+ status: persistedFeedback.status,
259
+ sourceReviewBlockRef: options.ref,
260
+ latestSubmissionId: persistedFeedback.latestSubmissionId ?? null,
261
+ content: persistedFeedback.content
262
+ };
263
+ state.blocks[options.ref] = {
264
+ ...state.blocks[options.ref],
265
+ status: "in_progress",
266
+ latestReviewAttemptId: attemptId,
267
+ activeFeedbackId: persistedFeedbackIsActive ? persistedFeedback.feedbackId : null,
268
+ pendingFeedbackId: persistedFeedback.status === "resolved" ? persistedFeedback.feedbackId : null,
269
+ completionReason: null
270
+ };
271
+ state.currentReviewBlockRef = options.ref;
272
+ if (persistedFeedbackIsActive) {
273
+ state.currentFeedbackId = persistedFeedback.feedbackId;
274
+ state.currentRefs = withoutCurrentRef(state.currentRefs, options.ref);
275
+ }
276
+ else {
277
+ state.currentRefs = state.currentRefs.includes(options.ref) ? state.currentRefs : [...state.currentRefs, options.ref];
278
+ }
279
+ state = refreshDerivedState(manifest, state);
280
+ await writeState(workspace.stateFile, state);
281
+ return {
282
+ ref: options.ref,
283
+ reviewAttemptId: attemptId,
284
+ verdict: "needs_changes",
285
+ feedbackId: persistedFeedback.feedbackId,
286
+ status: "in_progress",
287
+ feedbackCreated: true
288
+ };
289
+ }
290
+ if (parsed.verdict === "needs_changes" && persistedCompletionReason === "max_cycles_reached") {
291
+ state.blocks[options.ref] = {
292
+ ...state.blocks[options.ref],
293
+ status: "completed",
294
+ latestReviewAttemptId: attemptId,
295
+ activeFeedbackId: null,
296
+ pendingFeedbackId: null,
297
+ blockedReason: null,
298
+ completionReason: "max_cycles_reached"
299
+ };
300
+ state.currentReviewBlockRef = state.currentReviewBlockRef === options.ref ? null : state.currentReviewBlockRef;
301
+ state.currentRefs = state.currentRefs.filter((ref) => ref !== options.ref);
302
+ state = refreshDerivedState(manifest, state);
303
+ await writeState(workspace.stateFile, state);
304
+ return {
305
+ ref: options.ref,
306
+ reviewAttemptId: attemptId,
307
+ verdict: "needs_changes",
308
+ status: "completed",
309
+ completionReason: "max_cycles_reached",
310
+ feedbackCreated: false,
311
+ message: "No feedback envelope was created because max feedback cycles were reached."
312
+ };
313
+ }
314
+ }
315
+ const task = getTask(graph, taskId);
316
+ const previousFeedbackCount = Object.values(state.feedback).filter((feedback) => feedback.sourceReviewBlockRef === options.ref).length;
317
+ if (parsed.verdict === "passed") {
318
+ state.blocks[options.ref] = {
319
+ ...state.blocks[options.ref],
320
+ status: "completed",
321
+ latestReviewAttemptId: attemptId,
322
+ activeFeedbackId: null,
323
+ pendingFeedbackId: null,
324
+ completionReason: "passed",
325
+ passedWorkRevision: workRevision
326
+ };
327
+ await recordReviewCompletionReason({
328
+ workspace,
329
+ taskId,
330
+ reviewBlockRef: options.ref,
331
+ completionReason: "passed"
332
+ });
333
+ state.currentReviewBlockRef = state.currentReviewBlockRef === options.ref ? null : state.currentReviewBlockRef;
334
+ state.currentRefs = state.currentRefs.filter((ref) => ref !== options.ref);
335
+ state = refreshDerivedState(manifest, state);
336
+ await writeState(workspace.stateFile, state);
337
+ return {
338
+ ref: options.ref,
339
+ reviewAttemptId: attemptId,
340
+ verdict: "passed",
341
+ status: "completed",
342
+ completionReason: "passed",
343
+ feedbackCreated: false
344
+ };
345
+ }
346
+ if (maxFeedbackCyclesReached(previousFeedbackCount, block.review.maxFeedbackCycles)) {
347
+ const warning = {
348
+ code: "review_max_cycles_reached",
349
+ message: `Review block '${options.ref}' reached max feedback cycles without passing.`,
350
+ path: options.ref
351
+ };
352
+ state.blocks[options.ref] = {
353
+ ...state.blocks[options.ref],
354
+ status: "completed",
355
+ latestReviewAttemptId: attemptId,
356
+ activeFeedbackId: null,
357
+ pendingFeedbackId: null,
358
+ completionReason: "max_cycles_reached"
359
+ };
360
+ await recordReviewCompletionReason({
361
+ workspace,
362
+ taskId,
363
+ reviewBlockRef: options.ref,
364
+ completionReason: "max_cycles_reached",
365
+ warning
366
+ });
367
+ state.currentReviewBlockRef = state.currentReviewBlockRef === options.ref ? null : state.currentReviewBlockRef;
368
+ state.currentRefs = state.currentRefs.filter((ref) => ref !== options.ref);
369
+ state = refreshDerivedState(manifest, state);
370
+ await writeState(workspace.stateFile, state);
371
+ return {
372
+ ref: options.ref,
373
+ reviewAttemptId: attemptId,
374
+ verdict: "needs_changes",
375
+ status: "completed",
376
+ completionReason: "max_cycles_reached",
377
+ feedbackCreated: false,
378
+ message: "No feedback envelope was created because max feedback cycles were reached."
379
+ };
380
+ }
381
+ let feedbackContent;
382
+ try {
383
+ const hookOutput = await executeReviewHook({
384
+ projectRoot: workspace.rootPath,
385
+ reviewBlock: block,
386
+ reviewResult: parsed,
387
+ task,
388
+ reviewBlockRef: options.ref,
389
+ feedbackCycleCount: previousFeedbackCount
390
+ });
391
+ feedbackContent = hookOutput.feedbackPrompt;
392
+ }
393
+ catch (error) {
394
+ state.blocks[options.ref] = {
395
+ ...state.blocks[options.ref],
396
+ status: "blocked",
397
+ latestReviewAttemptId: attemptId,
398
+ activeFeedbackId: null,
399
+ pendingFeedbackId: null,
400
+ blockedReason: `Review hook failed: ${error instanceof Error ? error.message : String(error)}`
401
+ };
402
+ state.currentRefs = state.currentRefs.filter((ref) => ref !== options.ref);
403
+ state = refreshDerivedState(manifest, state);
404
+ await writeState(workspace.stateFile, state);
405
+ return { ref: options.ref, reviewAttemptId: attemptId, verdict: "needs_changes", status: "blocked" };
406
+ }
407
+ const feedbackId = await nextFeedbackId({ workspace, taskId, state });
408
+ await writeFeedbackArtifact(workspace, taskId, {
409
+ feedbackId,
410
+ sourceReviewBlockRef: options.ref,
411
+ content: feedbackContent,
412
+ sourceReviewAttemptId: attemptId,
413
+ status: "open",
414
+ createdAt: new Date().toISOString()
415
+ });
416
+ await recordFeedbackEnvelopeIndexes({
417
+ workspace,
418
+ taskId,
419
+ reviewBlockRef: options.ref,
420
+ feedbackId,
421
+ feedbackStatus: "open",
422
+ incrementCount: true
423
+ });
424
+ state.feedback[feedbackId] = {
425
+ status: "open",
426
+ sourceReviewBlockRef: options.ref,
427
+ latestSubmissionId: null,
428
+ content: feedbackContent
429
+ };
430
+ state.blocks[options.ref] = {
431
+ ...state.blocks[options.ref],
432
+ status: "in_progress",
433
+ latestReviewAttemptId: attemptId,
434
+ activeFeedbackId: feedbackId,
435
+ pendingFeedbackId: null
436
+ };
437
+ state.currentFeedbackId = feedbackId;
438
+ state.currentReviewBlockRef = options.ref;
439
+ state.currentRefs = withoutCurrentRef(state.currentRefs, options.ref);
440
+ state = refreshDerivedState(manifest, state);
441
+ await writeState(workspace.stateFile, state);
442
+ return { ref: options.ref, reviewAttemptId: attemptId, verdict: "needs_changes", feedbackId, status: "in_progress", feedbackCreated: true };
443
+ }
444
+ //# sourceMappingURL=reviewSubmission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewSubmission.js","sourceRoot":"","sources":["../../src/taskManager/reviewSubmission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { CompiledExecutionGraph, ExecutionGraphSession, PackageWorkspaceRef, PlanPackageManifest, ProjectWorkspace, RuntimeState } from "../types.js";
2
+ export type RuntimeContext = {
3
+ workspace: ProjectWorkspace;
4
+ manifest: PlanPackageManifest;
5
+ graph: CompiledExecutionGraph;
6
+ state: RuntimeState;
7
+ };
8
+ export type RuntimeOptions = {
9
+ projectRoot: PackageWorkspaceRef;
10
+ session?: ExecutionGraphSession;
11
+ };
12
+ export declare function exists(path: string): Promise<boolean>;
13
+ export declare function readOptionalFile(path: string): Promise<string>;
14
+ export declare function loadRuntime(options: RuntimeOptions): Promise<RuntimeContext>;
15
+ export declare function refreshDerivedState(manifest: PlanPackageManifest, state: RuntimeState): RuntimeState;
16
+ //# sourceMappingURL=runtimeContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../../src/taskManager/runtimeContext.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3J,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,mBAAmB,CAAC;IACjC,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAEF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpE;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CASlF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAEpG"}
@@ -0,0 +1,31 @@
1
+ import { constants } from "node:fs";
2
+ import { access, readFile } from "node:fs/promises";
3
+ import { createExecutionGraphSession, drainGraphReadQueue } from "../graph/session.js";
4
+ import { loadPackage } from "../package/loadPackage.js";
5
+ import { ensureStateForManifest, readState, writeState } from "../state.js";
6
+ export async function exists(path) {
7
+ try {
8
+ await access(path, constants.R_OK);
9
+ return true;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ export async function readOptionalFile(path) {
16
+ return (await exists(path)) ? readFile(path, "utf8") : "";
17
+ }
18
+ export async function loadRuntime(options) {
19
+ const { workspace, manifest: packageManifest } = await loadPackage(options.projectRoot);
20
+ const session = options.session ?? (await createExecutionGraphSession(options.projectRoot));
21
+ await drainGraphReadQueue(session);
22
+ const manifest = options.session ? session.fileSnapshot.manifest : packageManifest;
23
+ const graph = session.graph;
24
+ const state = ensureStateForManifest(manifest, await readState(workspace.stateFile));
25
+ await writeState(workspace.stateFile, state);
26
+ return { workspace, manifest, graph, state };
27
+ }
28
+ export function refreshDerivedState(manifest, state) {
29
+ return ensureStateForManifest(manifest, state);
30
+ }
31
+ //# sourceMappingURL=runtimeContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../../src/taskManager/runtimeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAe5E,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,2BAA2B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5F,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,KAAK,GAAG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACrF,MAAM,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAA6B,EAAE,KAAmB;IACpF,OAAO,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ClaimResult, ClaimScope, CompiledExecutionGraph, FeedbackEnvelopeState, FeedbackStatus, ManifestBlock, ManifestTaskNode, RuntimeState } from "../types.js";
2
+ export declare function getTask(graph: CompiledExecutionGraph, taskId: string): ManifestTaskNode;
3
+ export declare function getBlock(graph: CompiledExecutionGraph, ref: string): ManifestBlock;
4
+ export declare function taskDependenciesSatisfied(graph: CompiledExecutionGraph, state: RuntimeState, taskId: string): boolean;
5
+ export declare function blockDependenciesCompleted(graph: CompiledExecutionGraph, state: RuntimeState, ref: string): boolean;
6
+ export declare function isActiveFeedbackStatus(status: FeedbackStatus | undefined): boolean;
7
+ export declare function activeOpenFeedback(state: RuntimeState): Array<[string, FeedbackEnvelopeState]>;
8
+ export declare function claimResultForBlock(ref: string, graph: CompiledExecutionGraph, reason: "claimed" | "current" | "feedback_resolved" | "dispatched"): ClaimResult;
9
+ export declare function normalizeClaimScope(scope?: ClaimScope): ClaimScope;
10
+ export declare function validateClaimScope(scope: ClaimScope, graph: CompiledExecutionGraph): ClaimResult | null;
11
+ export declare function blockInScope(ref: string, graph: CompiledExecutionGraph, scope: ClaimScope): boolean;
12
+ export declare function feedbackInScope(feedback: FeedbackEnvelopeState, graph: CompiledExecutionGraph, scope: ClaimScope): boolean;
13
+ export declare function requiredImplementationRefs(graph: CompiledExecutionGraph, taskId: string): string[];
14
+ export declare function requiredReviewRefs(graph: CompiledExecutionGraph, taskId: string): string[];
15
+ export declare function computeWorkRevision(graph: CompiledExecutionGraph, state: RuntimeState, reviewBlockRef: string): string;
16
+ export declare function canClaimReviewBlock(graph: CompiledExecutionGraph, state: RuntimeState, ref: string): boolean;
17
+ export declare function canDispatchImplementationBlock(graph: CompiledExecutionGraph, state: RuntimeState, ref: string): boolean;
18
+ export declare function markClaimed(state: RuntimeState, ref: string, graph: CompiledExecutionGraph): void;
19
+ export declare function openFeedbackForReview(state: RuntimeState, reviewBlockRef: string): [string, FeedbackEnvelopeState] | null;
20
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/taskManager/selectors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAC;AAErB,wBAAgB,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAMvF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAMlF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAErH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnH;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAElF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAE9F;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,GAAG,YAAY,GACjE,WAAW,CAWb;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAElE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB,GAAG,WAAW,GAAG,IAAI,CAQvG;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAQnG;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1H;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAKlG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1F;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAYtH;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAiB5G;AAkBD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAavH;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAOjG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,IAAI,CAMzH"}