@agimon-ai/doompi-task 0.0.1-alpha.7 → 0.0.1-alpha.70

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 (439) hide show
  1. package/README.md +114 -15
  2. package/dist/api-contracts.cjs +1 -0
  3. package/dist/api-contracts.d.cts +2 -0
  4. package/dist/api-contracts.d.mts +2 -0
  5. package/dist/api-contracts.mjs +1 -0
  6. package/dist/commands.cjs +1 -2
  7. package/dist/commands.d.cts +2 -14
  8. package/dist/commands.d.mts +2 -14
  9. package/dist/commands.mjs +1 -2
  10. package/dist/config.cjs +1 -2
  11. package/dist/config.d.cts +2 -38
  12. package/dist/config.d.mts +2 -38
  13. package/dist/config.mjs +1 -2
  14. package/dist/constants/promptGuidelines.cjs +2 -0
  15. package/dist/constants/promptGuidelines.cjs.map +1 -0
  16. package/dist/constants/promptGuidelines.d.cts +13 -0
  17. package/dist/constants/promptGuidelines.d.cts.map +1 -0
  18. package/dist/constants/promptGuidelines.d.mts +13 -0
  19. package/dist/constants/promptGuidelines.d.mts.map +1 -0
  20. package/dist/constants/promptGuidelines.mjs +2 -0
  21. package/dist/constants/promptGuidelines.mjs.map +1 -0
  22. package/dist/constants/task.cjs +2 -0
  23. package/dist/constants/task.cjs.map +1 -0
  24. package/dist/constants/task.d.cts +4 -0
  25. package/dist/constants/task.d.cts.map +1 -0
  26. package/dist/constants/task.d.mts +4 -0
  27. package/dist/constants/task.d.mts.map +1 -0
  28. package/dist/constants/task.mjs +2 -0
  29. package/dist/constants/task.mjs.map +1 -0
  30. package/dist/controllers/tasksCommand.cjs +2 -0
  31. package/dist/controllers/tasksCommand.cjs.map +1 -0
  32. package/dist/controllers/tasksCommand.d.cts +15 -0
  33. package/dist/controllers/tasksCommand.d.cts.map +1 -0
  34. package/dist/controllers/tasksCommand.d.mts +15 -0
  35. package/dist/controllers/tasksCommand.d.mts.map +1 -0
  36. package/dist/controllers/tasksCommand.mjs +2 -0
  37. package/dist/controllers/tasksCommand.mjs.map +1 -0
  38. package/dist/controllers/webTasksChannel.cjs +2 -0
  39. package/dist/controllers/webTasksChannel.cjs.map +1 -0
  40. package/dist/controllers/webTasksChannel.mjs +2 -0
  41. package/dist/controllers/webTasksChannel.mjs.map +1 -0
  42. package/dist/delegation-manager.cjs +1 -0
  43. package/dist/delegation-manager.d.cts +3 -0
  44. package/dist/delegation-manager.d.mts +3 -0
  45. package/dist/delegation-manager.mjs +1 -0
  46. package/dist/extensions/pi.cjs +2 -1
  47. package/dist/extensions/pi.cjs.map +1 -1
  48. package/dist/extensions/pi.d.cts +6 -2
  49. package/dist/extensions/pi.d.cts.map +1 -0
  50. package/dist/extensions/pi.d.mts +6 -2
  51. package/dist/extensions/pi.d.mts.map +1 -0
  52. package/dist/extensions/pi.mjs +2 -1
  53. package/dist/extensions/pi.mjs.map +1 -1
  54. package/dist/extensions/server.cjs +2 -0
  55. package/dist/extensions/server.cjs.map +1 -0
  56. package/dist/extensions/server.d.cts +5 -0
  57. package/dist/extensions/server.d.cts.map +1 -0
  58. package/dist/extensions/server.d.mts +5 -0
  59. package/dist/extensions/server.d.mts.map +1 -0
  60. package/dist/extensions/server.mjs +2 -0
  61. package/dist/extensions/server.mjs.map +1 -0
  62. package/dist/index.cjs +1 -1
  63. package/dist/index.d.cts +15 -14
  64. package/dist/index.d.mts +15 -14
  65. package/dist/index.mjs +1 -1
  66. package/dist/logSinkTelemetry.cjs +1 -2
  67. package/dist/logSinkTelemetry.d.cts +3 -51
  68. package/dist/logSinkTelemetry.d.mts +3 -51
  69. package/dist/logSinkTelemetry.mjs +1 -2
  70. package/dist/models/task.cjs +2 -0
  71. package/dist/models/task.cjs.map +1 -0
  72. package/dist/{store/types.d.cts → models/task.d.cts} +41 -30
  73. package/dist/models/task.d.cts.map +1 -0
  74. package/dist/{store/types.d.mts → models/task.d.mts} +41 -30
  75. package/dist/models/task.d.mts.map +1 -0
  76. package/dist/{store/types.mjs → models/task.mjs} +1 -1
  77. package/dist/models/task.mjs.map +1 -0
  78. package/dist/models/taskGraph.cjs +2 -0
  79. package/dist/models/taskGraph.cjs.map +1 -0
  80. package/dist/{store → models}/taskGraph.d.cts +7 -8
  81. package/dist/models/taskGraph.d.cts.map +1 -0
  82. package/dist/{store → models}/taskGraph.d.mts +7 -8
  83. package/dist/models/taskGraph.d.mts.map +1 -0
  84. package/dist/models/taskGraph.mjs.map +1 -0
  85. package/dist/schemas/apiContracts.cjs +2 -0
  86. package/dist/schemas/apiContracts.cjs.map +1 -0
  87. package/dist/schemas/apiContracts.d.cts +53 -0
  88. package/dist/schemas/apiContracts.d.cts.map +1 -0
  89. package/dist/schemas/apiContracts.d.mts +53 -0
  90. package/dist/schemas/apiContracts.d.mts.map +1 -0
  91. package/dist/schemas/apiContracts.mjs +2 -0
  92. package/dist/schemas/apiContracts.mjs.map +1 -0
  93. package/dist/schemas/task.cjs +2 -0
  94. package/dist/schemas/task.cjs.map +1 -0
  95. package/dist/{tool/schema.d.cts → schemas/task.d.cts} +46 -29
  96. package/dist/schemas/task.d.cts.map +1 -0
  97. package/dist/{tool/schema.d.mts → schemas/task.d.mts} +46 -29
  98. package/dist/schemas/task.d.mts.map +1 -0
  99. package/dist/schemas/task.mjs +2 -0
  100. package/dist/schemas/task.mjs.map +1 -0
  101. package/dist/services/config/index.cjs +2 -0
  102. package/dist/services/config/index.cjs.map +1 -0
  103. package/dist/services/config/index.d.cts +42 -0
  104. package/dist/services/config/index.d.cts.map +1 -0
  105. package/dist/services/config/index.d.mts +42 -0
  106. package/dist/services/config/index.d.mts.map +1 -0
  107. package/dist/services/config/index.mjs +2 -0
  108. package/dist/services/config/index.mjs.map +1 -0
  109. package/dist/services/contextContribution/index.cjs +3 -0
  110. package/dist/services/contextContribution/index.cjs.map +1 -0
  111. package/dist/services/contextContribution/index.mjs +3 -0
  112. package/dist/services/contextContribution/index.mjs.map +1 -0
  113. package/dist/services/delegation/index.cjs +6 -0
  114. package/dist/services/delegation/index.cjs.map +1 -0
  115. package/dist/{delegation/manager.d.cts → services/delegation/index.d.cts} +52 -49
  116. package/dist/services/delegation/index.d.cts.map +1 -0
  117. package/dist/{delegation/manager.d.mts → services/delegation/index.d.mts} +52 -49
  118. package/dist/services/delegation/index.d.mts.map +1 -0
  119. package/dist/services/delegation/index.mjs +6 -0
  120. package/dist/services/delegation/index.mjs.map +1 -0
  121. package/dist/services/delegationPlatform/index.cjs +2 -0
  122. package/dist/services/delegationPlatform/index.cjs.map +1 -0
  123. package/dist/services/delegationPlatform/index.mjs +2 -0
  124. package/dist/services/delegationPlatform/index.mjs.map +1 -0
  125. package/dist/services/invariants/index.cjs +2 -0
  126. package/dist/services/invariants/index.cjs.map +1 -0
  127. package/dist/services/invariants/index.d.cts +23 -0
  128. package/dist/services/invariants/index.d.cts.map +1 -0
  129. package/dist/services/invariants/index.d.mts +23 -0
  130. package/dist/services/invariants/index.d.mts.map +1 -0
  131. package/dist/services/invariants/index.mjs +2 -0
  132. package/dist/services/invariants/index.mjs.map +1 -0
  133. package/dist/services/logSinkTelemetry/index.cjs +2 -0
  134. package/dist/services/logSinkTelemetry/index.cjs.map +1 -0
  135. package/dist/services/logSinkTelemetry/index.d.cts +23 -0
  136. package/dist/services/logSinkTelemetry/index.d.cts.map +1 -0
  137. package/dist/services/logSinkTelemetry/index.d.mts +23 -0
  138. package/dist/services/logSinkTelemetry/index.d.mts.map +1 -0
  139. package/dist/services/logSinkTelemetry/index.mjs +2 -0
  140. package/dist/services/logSinkTelemetry/index.mjs.map +1 -0
  141. package/dist/services/paths/index.cjs +2 -0
  142. package/dist/services/paths/index.cjs.map +1 -0
  143. package/dist/services/paths/index.d.cts +25 -0
  144. package/dist/services/paths/index.d.cts.map +1 -0
  145. package/dist/services/paths/index.d.mts +25 -0
  146. package/dist/services/paths/index.d.mts.map +1 -0
  147. package/dist/services/paths/index.mjs +2 -0
  148. package/dist/services/paths/index.mjs.map +1 -0
  149. package/dist/services/processLiveness/index.cjs +2 -0
  150. package/dist/services/processLiveness/index.cjs.map +1 -0
  151. package/dist/{store/processLiveness.d.cts → services/processLiveness/index.d.cts} +3 -4
  152. package/dist/services/processLiveness/index.d.cts.map +1 -0
  153. package/dist/{store/processLiveness.d.mts → services/processLiveness/index.d.mts} +3 -4
  154. package/dist/services/processLiveness/index.d.mts.map +1 -0
  155. package/dist/{store/processLiveness.mjs → services/processLiveness/index.mjs} +1 -1
  156. package/dist/services/processLiveness/index.mjs.map +1 -0
  157. package/dist/services/reconcile/index.cjs +2 -0
  158. package/dist/services/reconcile/index.cjs.map +1 -0
  159. package/dist/{store/reconcile.d.cts → services/reconcile/index.d.cts} +8 -9
  160. package/dist/services/reconcile/index.d.cts.map +1 -0
  161. package/dist/{store/reconcile.d.mts → services/reconcile/index.d.mts} +8 -9
  162. package/dist/services/reconcile/index.d.mts.map +1 -0
  163. package/dist/services/reconcile/index.mjs +2 -0
  164. package/dist/services/reconcile/index.mjs.map +1 -0
  165. package/dist/services/reducer/index.cjs +3 -0
  166. package/dist/services/reducer/index.cjs.map +1 -0
  167. package/dist/{store/reducer.d.cts → services/reducer/index.d.cts} +12 -13
  168. package/dist/services/reducer/index.d.cts.map +1 -0
  169. package/dist/{store/reducer.d.mts → services/reducer/index.d.mts} +12 -13
  170. package/dist/services/reducer/index.d.mts.map +1 -0
  171. package/dist/services/reducer/index.mjs +3 -0
  172. package/dist/services/reducer/index.mjs.map +1 -0
  173. package/dist/services/taskNarration/index.cjs +2 -0
  174. package/dist/services/taskNarration/index.cjs.map +1 -0
  175. package/dist/services/taskNarration/index.mjs +2 -0
  176. package/dist/services/taskNarration/index.mjs.map +1 -0
  177. package/dist/services/taskResult/index.cjs +7 -0
  178. package/dist/services/taskResult/index.cjs.map +1 -0
  179. package/dist/services/taskResult/index.d.cts +50 -0
  180. package/dist/services/taskResult/index.d.cts.map +1 -0
  181. package/dist/services/taskResult/index.d.mts +50 -0
  182. package/dist/services/taskResult/index.d.mts.map +1 -0
  183. package/dist/services/taskResult/index.mjs +7 -0
  184. package/dist/services/taskResult/index.mjs.map +1 -0
  185. package/dist/services/taskStore/index.cjs +2 -0
  186. package/dist/services/taskStore/index.cjs.map +1 -0
  187. package/dist/{store/taskStore.d.cts → services/taskStore/index.d.cts} +17 -25
  188. package/dist/services/taskStore/index.d.cts.map +1 -0
  189. package/dist/{store/taskStore.d.mts → services/taskStore/index.d.mts} +17 -25
  190. package/dist/services/taskStore/index.d.mts.map +1 -0
  191. package/dist/services/taskStore/index.mjs +2 -0
  192. package/dist/services/taskStore/index.mjs.map +1 -0
  193. package/dist/store-invariants.cjs +1 -0
  194. package/dist/store-invariants.d.cts +2 -0
  195. package/dist/store-invariants.d.mts +2 -0
  196. package/dist/store-invariants.mjs +1 -0
  197. package/dist/store-paths.cjs +1 -0
  198. package/dist/store-paths.d.cts +2 -0
  199. package/dist/store-paths.d.mts +2 -0
  200. package/dist/store-paths.mjs +1 -0
  201. package/dist/store-process-liveness.cjs +1 -0
  202. package/dist/store-process-liveness.d.cts +2 -0
  203. package/dist/store-process-liveness.d.mts +2 -0
  204. package/dist/store-process-liveness.mjs +1 -0
  205. package/dist/store-reconcile.cjs +1 -0
  206. package/dist/store-reconcile.d.cts +2 -0
  207. package/dist/store-reconcile.d.mts +2 -0
  208. package/dist/store-reconcile.mjs +1 -0
  209. package/dist/store-reducer.cjs +1 -0
  210. package/dist/store-reducer.d.cts +2 -0
  211. package/dist/store-reducer.d.mts +2 -0
  212. package/dist/store-reducer.mjs +1 -0
  213. package/dist/store-task-graph.cjs +1 -0
  214. package/dist/store-task-graph.d.cts +2 -0
  215. package/dist/store-task-graph.d.mts +2 -0
  216. package/dist/store-task-graph.mjs +1 -0
  217. package/dist/store-task-store.cjs +1 -0
  218. package/dist/store-task-store.d.cts +2 -0
  219. package/dist/store-task-store.d.mts +2 -0
  220. package/dist/store-task-store.mjs +1 -0
  221. package/dist/store-types.cjs +1 -0
  222. package/dist/store-types.d.cts +2 -0
  223. package/dist/store-types.d.mts +2 -0
  224. package/dist/store-types.mjs +1 -0
  225. package/dist/tool-prompt-guidelines.cjs +1 -0
  226. package/dist/tool-prompt-guidelines.d.cts +2 -0
  227. package/dist/tool-prompt-guidelines.d.mts +2 -0
  228. package/dist/tool-prompt-guidelines.mjs +1 -0
  229. package/dist/tool-response-envelope.cjs +1 -0
  230. package/dist/tool-response-envelope.d.cts +2 -0
  231. package/dist/tool-response-envelope.d.mts +2 -0
  232. package/dist/tool-response-envelope.mjs +1 -0
  233. package/dist/tool-schema.cjs +1 -0
  234. package/dist/tool-schema.d.cts +3 -0
  235. package/dist/tool-schema.d.mts +3 -0
  236. package/dist/tool-schema.mjs +1 -0
  237. package/dist/tool-task-tool.cjs +1 -0
  238. package/dist/tool-task-tool.d.cts +3 -0
  239. package/dist/tool-task-tool.d.mts +3 -0
  240. package/dist/tool-task-tool.mjs +1 -0
  241. package/dist/tools/task.cjs +3 -0
  242. package/dist/tools/task.cjs.map +1 -0
  243. package/dist/tools/task.d.cts +22 -0
  244. package/dist/tools/task.d.cts.map +1 -0
  245. package/dist/tools/task.d.mts +22 -0
  246. package/dist/tools/task.d.mts.map +1 -0
  247. package/dist/tools/task.mjs +3 -0
  248. package/dist/tools/task.mjs.map +1 -0
  249. package/dist/tui/format.cjs +3 -3
  250. package/dist/tui/format.cjs.map +1 -1
  251. package/dist/tui/format.d.cts +19 -20
  252. package/dist/tui/format.d.cts.map +1 -1
  253. package/dist/tui/format.d.mts +19 -20
  254. package/dist/tui/format.d.mts.map +1 -1
  255. package/dist/tui/format.mjs +3 -3
  256. package/dist/tui/format.mjs.map +1 -1
  257. package/dist/tui/selectors.cjs +1 -1
  258. package/dist/tui/selectors.cjs.map +1 -1
  259. package/dist/tui/selectors.d.cts +20 -14
  260. package/dist/tui/selectors.d.cts.map +1 -1
  261. package/dist/tui/selectors.d.mts +20 -14
  262. package/dist/tui/selectors.d.mts.map +1 -1
  263. package/dist/tui/selectors.mjs +1 -1
  264. package/dist/tui/selectors.mjs.map +1 -1
  265. package/dist/tui/taskOverlay.cjs +1 -1
  266. package/dist/tui/taskOverlay.cjs.map +1 -1
  267. package/dist/tui/taskOverlay.d.cts +4 -5
  268. package/dist/tui/taskOverlay.d.cts.map +1 -1
  269. package/dist/tui/taskOverlay.d.mts +4 -5
  270. package/dist/tui/taskOverlay.d.mts.map +1 -1
  271. package/dist/tui/taskOverlay.mjs +1 -1
  272. package/dist/tui/taskOverlay.mjs.map +1 -1
  273. package/dist/tui/taskSpace.cjs +3 -3
  274. package/dist/tui/taskSpace.cjs.map +1 -1
  275. package/dist/tui/taskSpace.d.cts +9 -10
  276. package/dist/tui/taskSpace.d.cts.map +1 -1
  277. package/dist/tui/taskSpace.d.mts +9 -10
  278. package/dist/tui/taskSpace.d.mts.map +1 -1
  279. package/dist/tui/taskSpace.mjs +3 -3
  280. package/dist/tui/taskSpace.mjs.map +1 -1
  281. package/dist/tui-format.cjs +1 -0
  282. package/dist/tui-format.d.cts +2 -0
  283. package/dist/tui-format.d.mts +2 -0
  284. package/dist/tui-format.mjs +1 -0
  285. package/dist/tui-selectors.cjs +1 -0
  286. package/dist/tui-selectors.d.cts +2 -0
  287. package/dist/tui-selectors.d.mts +2 -0
  288. package/dist/tui-selectors.mjs +1 -0
  289. package/dist/tui-task-overlay.cjs +1 -0
  290. package/dist/tui-task-overlay.d.cts +2 -0
  291. package/dist/tui-task-overlay.d.mts +2 -0
  292. package/dist/tui-task-overlay.mjs +1 -0
  293. package/dist/tui-task-space.cjs +1 -0
  294. package/dist/tui-task-space.d.cts +2 -0
  295. package/dist/tui-task-space.d.mts +2 -0
  296. package/dist/tui-task-space.mjs +1 -0
  297. package/dist/types/delegation.cjs +2 -0
  298. package/dist/types/delegation.cjs.map +1 -0
  299. package/dist/types/delegation.d.cts +5 -0
  300. package/dist/types/delegation.d.cts.map +1 -0
  301. package/dist/types/delegation.d.mts +5 -0
  302. package/dist/types/delegation.d.mts.map +1 -0
  303. package/dist/types/delegation.mjs +2 -0
  304. package/dist/types/delegation.mjs.map +1 -0
  305. package/dist/types/telemetry.cjs +2 -0
  306. package/dist/types/telemetry.cjs.map +1 -0
  307. package/dist/types/telemetry.d.cts +35 -0
  308. package/dist/types/telemetry.d.cts.map +1 -0
  309. package/dist/types/telemetry.d.mts +35 -0
  310. package/dist/types/telemetry.d.mts.map +1 -0
  311. package/dist/types/telemetry.mjs +2 -0
  312. package/dist/types/telemetry.mjs.map +1 -0
  313. package/dist/types/webTasks.cjs +2 -0
  314. package/dist/types/webTasks.cjs.map +1 -0
  315. package/dist/types/webTasks.mjs +2 -0
  316. package/dist/types/webTasks.mjs.map +1 -0
  317. package/package.json +158 -109
  318. package/src/extensions/web.ts +18 -0
  319. package/src/types/webTasks.ts +24 -0
  320. package/src/web/components/TaskDetailDialog.tsx +251 -0
  321. package/src/web/components/TaskToolMessage.tsx +120 -0
  322. package/src/web/components/TasksActivitySection.tsx +200 -0
  323. package/src/web/lib/taskToolFormat.ts +330 -0
  324. package/src/web/stores/tasksStore.ts +114 -0
  325. package/src/web/tsconfig.json +23 -0
  326. package/dist/commands.cjs.map +0 -1
  327. package/dist/commands.d.cts.map +0 -1
  328. package/dist/commands.d.mts.map +0 -1
  329. package/dist/commands.mjs.map +0 -1
  330. package/dist/config.cjs.map +0 -1
  331. package/dist/config.d.cts.map +0 -1
  332. package/dist/config.d.mts.map +0 -1
  333. package/dist/config.mjs.map +0 -1
  334. package/dist/delegation/manager.cjs +0 -6
  335. package/dist/delegation/manager.cjs.map +0 -1
  336. package/dist/delegation/manager.d.cts.map +0 -1
  337. package/dist/delegation/manager.d.mts.map +0 -1
  338. package/dist/delegation/manager.mjs +0 -6
  339. package/dist/delegation/manager.mjs.map +0 -1
  340. package/dist/extension.cjs +0 -3
  341. package/dist/extension.cjs.map +0 -1
  342. package/dist/extension.d.cts +0 -12
  343. package/dist/extension.d.cts.map +0 -1
  344. package/dist/extension.d.mts +0 -12
  345. package/dist/extension.d.mts.map +0 -1
  346. package/dist/extension.mjs +0 -3
  347. package/dist/extension.mjs.map +0 -1
  348. package/dist/extensions/doom.cjs +0 -2
  349. package/dist/extensions/doom.cjs.map +0 -1
  350. package/dist/extensions/doom.d.cts +0 -6
  351. package/dist/extensions/doom.d.cts.map +0 -1
  352. package/dist/extensions/doom.d.mts +0 -7
  353. package/dist/extensions/doom.d.mts.map +0 -1
  354. package/dist/extensions/doom.mjs +0 -2
  355. package/dist/extensions/doom.mjs.map +0 -1
  356. package/dist/logSinkTelemetry.cjs.map +0 -1
  357. package/dist/logSinkTelemetry.d.cts.map +0 -1
  358. package/dist/logSinkTelemetry.d.mts.map +0 -1
  359. package/dist/logSinkTelemetry.mjs.map +0 -1
  360. package/dist/store/invariants.cjs +0 -2
  361. package/dist/store/invariants.cjs.map +0 -1
  362. package/dist/store/invariants.d.cts +0 -14
  363. package/dist/store/invariants.d.cts.map +0 -1
  364. package/dist/store/invariants.d.mts +0 -14
  365. package/dist/store/invariants.d.mts.map +0 -1
  366. package/dist/store/invariants.mjs +0 -2
  367. package/dist/store/invariants.mjs.map +0 -1
  368. package/dist/store/paths.cjs +0 -2
  369. package/dist/store/paths.cjs.map +0 -1
  370. package/dist/store/paths.d.cts +0 -23
  371. package/dist/store/paths.d.cts.map +0 -1
  372. package/dist/store/paths.d.mts +0 -23
  373. package/dist/store/paths.d.mts.map +0 -1
  374. package/dist/store/paths.mjs +0 -2
  375. package/dist/store/paths.mjs.map +0 -1
  376. package/dist/store/processLiveness.cjs +0 -2
  377. package/dist/store/processLiveness.cjs.map +0 -1
  378. package/dist/store/processLiveness.d.cts.map +0 -1
  379. package/dist/store/processLiveness.d.mts.map +0 -1
  380. package/dist/store/processLiveness.mjs.map +0 -1
  381. package/dist/store/reconcile.cjs +0 -2
  382. package/dist/store/reconcile.cjs.map +0 -1
  383. package/dist/store/reconcile.d.cts.map +0 -1
  384. package/dist/store/reconcile.d.mts.map +0 -1
  385. package/dist/store/reconcile.mjs +0 -2
  386. package/dist/store/reconcile.mjs.map +0 -1
  387. package/dist/store/reducer.cjs +0 -3
  388. package/dist/store/reducer.cjs.map +0 -1
  389. package/dist/store/reducer.d.cts.map +0 -1
  390. package/dist/store/reducer.d.mts.map +0 -1
  391. package/dist/store/reducer.mjs +0 -3
  392. package/dist/store/reducer.mjs.map +0 -1
  393. package/dist/store/taskGraph.cjs +0 -2
  394. package/dist/store/taskGraph.cjs.map +0 -1
  395. package/dist/store/taskGraph.d.cts.map +0 -1
  396. package/dist/store/taskGraph.d.mts.map +0 -1
  397. package/dist/store/taskGraph.mjs.map +0 -1
  398. package/dist/store/taskStore.cjs +0 -2
  399. package/dist/store/taskStore.cjs.map +0 -1
  400. package/dist/store/taskStore.d.cts.map +0 -1
  401. package/dist/store/taskStore.d.mts.map +0 -1
  402. package/dist/store/taskStore.mjs +0 -2
  403. package/dist/store/taskStore.mjs.map +0 -1
  404. package/dist/store/types.cjs +0 -2
  405. package/dist/store/types.cjs.map +0 -1
  406. package/dist/store/types.d.cts.map +0 -1
  407. package/dist/store/types.d.mts.map +0 -1
  408. package/dist/store/types.mjs.map +0 -1
  409. package/dist/tool/promptGuidelines.cjs +0 -2
  410. package/dist/tool/promptGuidelines.cjs.map +0 -1
  411. package/dist/tool/promptGuidelines.d.cts +0 -5
  412. package/dist/tool/promptGuidelines.d.cts.map +0 -1
  413. package/dist/tool/promptGuidelines.d.mts +0 -5
  414. package/dist/tool/promptGuidelines.d.mts.map +0 -1
  415. package/dist/tool/promptGuidelines.mjs +0 -2
  416. package/dist/tool/promptGuidelines.mjs.map +0 -1
  417. package/dist/tool/responseEnvelope.cjs +0 -6
  418. package/dist/tool/responseEnvelope.cjs.map +0 -1
  419. package/dist/tool/responseEnvelope.d.cts +0 -39
  420. package/dist/tool/responseEnvelope.d.cts.map +0 -1
  421. package/dist/tool/responseEnvelope.d.mts +0 -39
  422. package/dist/tool/responseEnvelope.d.mts.map +0 -1
  423. package/dist/tool/responseEnvelope.mjs +0 -6
  424. package/dist/tool/responseEnvelope.mjs.map +0 -1
  425. package/dist/tool/schema.cjs +0 -2
  426. package/dist/tool/schema.cjs.map +0 -1
  427. package/dist/tool/schema.d.cts.map +0 -1
  428. package/dist/tool/schema.d.mts.map +0 -1
  429. package/dist/tool/schema.mjs +0 -2
  430. package/dist/tool/schema.mjs.map +0 -1
  431. package/dist/tool/taskTool.cjs +0 -3
  432. package/dist/tool/taskTool.cjs.map +0 -1
  433. package/dist/tool/taskTool.d.cts +0 -17
  434. package/dist/tool/taskTool.d.cts.map +0 -1
  435. package/dist/tool/taskTool.d.mts +0 -17
  436. package/dist/tool/taskTool.d.mts.map +0 -1
  437. package/dist/tool/taskTool.mjs +0 -3
  438. package/dist/tool/taskTool.mjs.map +0 -1
  439. /package/dist/{store → models}/taskGraph.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pi.cjs","names":["taskExtension"],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { taskExtension } from '../extension.ts';\n\nexport default taskExtension;\n"],"mappings":"AAEA,IAAA,4BAAeA,CAAAA,CAAAA"}
1
+ {"version":3,"file":"pi.cjs","names":["TASK_CONTEXT_CONTRIBUTION_SOURCE","definePiExtension","createTaskErrorReporter","toFailureReporter","createNarrationRequest","TaskStore","narrateTaskCommit","DelegationManager","createNodeDelegationPlatform","getDelegationTimeoutMs","TaskOverlay","getMaxTasks","TASK_EVENT","resolveSessionKey","removeLegacyStoreDirectoryAsync","hasStorePathOverride","sweepStoreFilesAsync","getStoreTtlMs","readDoomReadinessCoordinator","resolveCollapseKey","DOOM_NARRATION_SERVICE","requireDoomNarrationService","DOOM_CONTEXT_CONTRIBUTIONS_SERVICE","requireDoomContextContributions","createTaskContextContribution","DOOM_DELEGATION_SERVICE","readDoomDelegationService","DOOM_BACKGROUND_WORK_SERVICE","readDoomBackgroundWorkService","BACKGROUND_WORK_PROVIDER","DOOM_UI_HUB_SERVICE","requireDoomUiHub","COMMAND_NAME","definePiTool","createTaskTool","renderTaskCall","renderTaskResult","createTasksCommand","openTaskSpace","NOTIFY_CUSTOM_TYPE","Text"],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import {\n DOOM_BACKGROUND_WORK_SERVICE,\n type BackgroundWorkProviderHandle,\n readDoomBackgroundWorkService,\n} from '@agimon-ai/doompi-core/background-work';\nimport {\n DOOM_CONTEXT_CONTRIBUTIONS_SERVICE,\n requireDoomContextContributions,\n} from '@agimon-ai/doompi-core/context-contributions';\nimport { DOOM_DELEGATION_SERVICE, readDoomDelegationService } from '@agimon-ai/doompi-core/delegation';\nimport {\n createNarrationRequest,\n DOOM_NARRATION_SERVICE,\n type DoomNarrationService,\n requireDoomNarrationService,\n} from '@agimon-ai/doompi-core/narration';\nimport { definePiExtension, definePiTool } from '@agimon-ai/doompi-core/pi-extension';\nimport { readDoomReadinessCoordinator } from '@agimon-ai/doompi-core/readiness';\nimport { DOOM_UI_HUB_SERVICE, requireDoomUiHub } from '@agimon-ai/doompi-core/ui-hub';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI, ExtensionContext } from '@earendil-works/pi-coding-agent';\nimport type { KeyId } from '@earendil-works/pi-tui';\nimport { Text } from '@earendil-works/pi-tui';\n\nimport { createTasksCommand } from '../controllers/tasksCommand';\nimport { COMMAND_NAME, TOOL_NAME } from '../schemas/task';\nimport {\n COLLAPSE_KEY_OFF,\n getDelegationTimeoutMs,\n getMaxTasks,\n getStoreTtlMs,\n resolveCollapseKey,\n} from '../services/config';\nimport { createTaskContextContribution, TASK_CONTEXT_CONTRIBUTION_SOURCE } from '../services/contextContribution';\nimport { BACKGROUND_WORK_PROVIDER, DelegationManager, NOTIFY_CUSTOM_TYPE } from '../services/delegation';\nimport { createNodeDelegationPlatform } from '../services/delegationPlatform';\nimport { createTaskErrorReporter, TASK_EVENT, toFailureReporter } from '../services/logSinkTelemetry';\nimport {\n hasStorePathOverride,\n removeLegacyStoreDirectoryAsync,\n resolveSessionKey,\n sweepStoreFilesAsync,\n} from '../services/paths';\nimport { narrateTaskCommit, type TaskNarrationSink } from '../services/taskNarration';\nimport { TaskStore } from '../services/taskStore';\nimport { createTaskTool } from '../tools/task';\nimport { renderTaskCall, renderTaskResult } from '../tui/format';\nimport { TaskOverlay } from '../tui/taskOverlay';\nimport { openTaskSpace } from '../tui/taskSpace';\n\ninterface SessionContextLike {\n hasUI: boolean;\n ui: Parameters<TaskOverlay['setUICtx']>[0];\n sessionManager?: { getSessionId(): string };\n}\n\nconst LEADER_SOURCE = TASK_CONTEXT_CONTRIBUTION_SOURCE;\nconst NARRATION_FAILED_EVENT = 'doom_task.narration_failed';\n/** Between doom-plan's 60 and the core help group's 70, so `t` sits after `p`. */\nconst LEADER_GROUP_ORDER = 65;\nconst ERROR_TYPE_ATTRIBUTE = 'error.type';\n/**\n * Which part of session start ran. The telemetry sanitizer drops free text, so\n * the failing branch has to travel as a stable low-cardinality token.\n */\nconst SESSION_START_STAGE_ATTRIBUTE = 'task.stage';\nconst SESSION_START_STAGE = {\n sessionId: 'session_id',\n storeCleanup: 'store_cleanup',\n storeSweep: 'store_sweep',\n storeRead: 'store_read',\n reconcile: 'reconcile',\n refresh: 'refresh',\n} as const;\ntype SessionStartStage = (typeof SESSION_START_STAGE)[keyof typeof SESSION_START_STAGE];\n\n/**\n * Mirror of the telemetry sink's own `error.type` token. The sink overwrites it\n * for any defined error, so this only guarantees the attribute exists when the\n * thrown value is `undefined`.\n */\nfunction errorTypeToken(error: unknown): string {\n if (error instanceof Error) return error.name || 'Error';\n if (typeof error === 'string') return 'StringError';\n if (error && typeof error === 'object') return 'ObjectError';\n return 'UnknownError';\n}\n/** Install Task state and external resources into its host-owned Cordis plugin fiber. */\nexport const taskExtension = definePiExtension(LEADER_SOURCE, ({ context: cordis, pi, signal: pluginSignal }) => {\n const errorReporter = createTaskErrorReporter();\n const report = toFailureReporter(errorReporter);\n let active = true;\n let sessionGeneration = 0;\n let narrationService: DoomNarrationService | undefined;\n let store: TaskStore | undefined;\n let delegation: DelegationManager | undefined;\n let overlay: TaskOverlay | undefined;\n let unwatch: (() => void) | undefined;\n let backgroundWork: BackgroundWorkProviderHandle | undefined;\n let disposeLeader: (() => void) | undefined;\n let sessionId: string | undefined;\n let sessionInitialization:\n | {\n readonly sessionManager: object;\n readonly operation: Promise<void>;\n }\n | undefined;\n\n const reportNarrationFailure = (error: unknown): void => {\n void errorReporter.recordWarning(NARRATION_FAILED_EVENT, error).catch((telemetryError: unknown) => {\n process.emitWarning(`Doom-task could not record a narration failure: ${String(telemetryError)}`);\n });\n };\n const narrationSink: TaskNarrationSink = {\n narrate(text) {\n const service = narrationService;\n const request = createNarrationRequest(text);\n if (!service || !request) return;\n try {\n void Promise.resolve(service.request(request)).catch(reportNarrationFailure);\n } catch (error) {\n reportNarrationFailure(error);\n }\n },\n };\n\n const waitForSessionReadiness = async (\n context: { readonly sessionManager: object },\n signal?: AbortSignal,\n ): Promise<void> => {\n signal?.throwIfAborted();\n const current = sessionInitialization;\n if (!current) throw new Error('doom-task session initialization has not started');\n if (current.sessionManager !== context.sessionManager) {\n throw new Error('doom-task readiness belongs to a stale Pi session');\n }\n await current.operation;\n signal?.throwIfAborted();\n if (!active || pluginSignal.aborted || current !== sessionInitialization || !sessionId) {\n throw new Error('doom-task readiness belongs to a stale extension generation');\n }\n };\n\n const clearSessionResources = (): void => {\n unwatch?.();\n unwatch = undefined;\n delegation?.reset();\n overlay?.dispose();\n sessionId = undefined;\n };\n\n const taskStore = new TaskStore({\n report,\n onCommitted: (previous, committed) => narrateTaskCommit(narrationSink, previous, committed),\n });\n store = taskStore;\n\n const refresh = (): void => {\n if (!active || pluginSignal.aborted) return;\n overlay?.update();\n backgroundWork?.update();\n };\n\n const delegationManager = new DelegationManager({\n store: taskStore,\n cwd: process.cwd(),\n platform: createNodeDelegationPlatform(),\n notify: (message, options) => pi.sendMessage(message, options),\n getSessionId: () => sessionId,\n onChange: refresh,\n runTimeoutMs: getDelegationTimeoutMs(),\n report,\n onNotifyError: (error, taskId) => {\n void errorReporter.recordNotificationError(error, taskId);\n },\n });\n delegation = delegationManager;\n\n const taskOverlay = new TaskOverlay({ getTasks: () => taskStore.snapshot.tasks, delegation: delegationManager });\n overlay = taskOverlay;\n\n const toolDependencies: Parameters<typeof createTaskTool>[0] = {\n store: taskStore,\n delegation: delegationManager,\n maxTasks: getMaxTasks(),\n onChange: refresh,\n report,\n waitUntilReady: waitForSessionReadiness,\n };\n\n const sessionStart = async (_event: unknown, ctx: ExtensionContext) => {\n if (!active || pluginSignal.aborted) return;\n const ownGeneration = ++sessionGeneration;\n if (sessionId !== undefined) clearSessionResources();\n const context = ctx as unknown as SessionContextLike;\n const initialize = async (signal?: AbortSignal): Promise<void> => {\n const isCurrent = (): boolean =>\n !signal?.aborted && active && !pluginSignal.aborted && ownGeneration === sessionGeneration;\n let stage: SessionStartStage = SESSION_START_STAGE.sessionId;\n /**\n * Run a stage whose failure only degrades task visibility. The session\n * still starts, and the warning keeps the degraded state from being silent.\n */\n const degrade = async (next: SessionStartStage, operation: () => Promise<void>): Promise<void> => {\n stage = next;\n try {\n await operation();\n } catch (error) {\n report.warn(TASK_EVENT.sessionStartDegraded, error, {\n [SESSION_START_STAGE_ATTRIBUTE]: next,\n [ERROR_TYPE_ATTRIBUTE]: errorTypeToken(error),\n });\n }\n };\n try {\n const currentSessionId = context.sessionManager?.getSessionId();\n if (!currentSessionId) throw new Error('doom-task requires a session id');\n sessionId = currentSessionId;\n taskStore.configureSession(resolveSessionKey(currentSessionId));\n stage = SESSION_START_STAGE.storeCleanup;\n const cleanup = await removeLegacyStoreDirectoryAsync(taskStore.storePath);\n if (!isCurrent()) return;\n stage = SESSION_START_STAGE.storeSweep;\n const sweep = hasStorePathOverride()\n ? { removed: [], errors: [] }\n : await sweepStoreFilesAsync(taskStore.storePath, getStoreTtlMs());\n if (!isCurrent()) return;\n const storeErrors = [...cleanup.errors, ...sweep.errors];\n for (const failure of storeErrors) report.warn(TASK_EVENT.storeSweepFailed, new Error(failure));\n if (storeErrors.length > 0 && context.hasUI) context.ui.notify(storeErrors.join('\\n'), 'warning');\n if (context.hasUI) taskOverlay.setUICtx(context.ui);\n await degrade(SESSION_START_STAGE.storeRead, async () => {\n await taskStore.readAsync(isCurrent);\n });\n if (!isCurrent()) return;\n unwatch = taskStore.onExternalChange(refresh);\n await degrade(SESSION_START_STAGE.reconcile, async () => {\n await delegationManager.reconcile(isCurrent);\n });\n if (!isCurrent()) return;\n stage = SESSION_START_STAGE.refresh;\n refresh();\n } catch (error) {\n if (!isCurrent()) return;\n clearSessionResources();\n report.error(TASK_EVENT.sessionStartFailed, error, {\n [SESSION_START_STAGE_ATTRIBUTE]: stage,\n [ERROR_TYPE_ATTRIBUTE]: errorTypeToken(error),\n });\n throw error;\n }\n };\n\n const coordinator = readDoomReadinessCoordinator(cordis);\n if (!coordinator) {\n const operation = initialize();\n sessionInitialization = { sessionManager: ctx.sessionManager, operation };\n return operation;\n }\n\n const previous = sessionInitialization?.operation;\n const operation = (async (): Promise<void> => {\n if (previous) await Promise.allSettled([previous]);\n if (!active || pluginSignal.aborted || ownGeneration !== sessionGeneration) return;\n const handle = coordinator.start(\n LEADER_SOURCE,\n `${ctx.sessionManager.getSessionId()}:${ownGeneration}`,\n async (signal) => {\n await initialize(signal);\n return { value: undefined };\n },\n );\n await handle.wait();\n })();\n sessionInitialization = { sessionManager: ctx.sessionManager, operation };\n // Config's coordinator owns the single failure notification. This detached\n // observer only keeps a failed background generation from going unhandled.\n void Promise.allSettled([operation]);\n return undefined;\n };\n\n const toolExecutionEnd = (event: { toolName: string }) => {\n if (active && !pluginSignal.aborted && event.toolName === TOOL_NAME) refresh();\n };\n const shortcutOptions: Parameters<ExtensionAPI['registerShortcut']>[1] = {\n description: 'Collapse or expand the task overlay',\n handler: async (ctx: ExtensionContext) => {\n if (!active || pluginSignal.aborted || !ctx.hasUI) return;\n await waitForSessionReadiness(ctx);\n if (!active || pluginSignal.aborted || !taskOverlay.isRegistered()) return;\n taskOverlay.toggleCollapse();\n },\n };\n const dispose = async () => {\n if (!active) return;\n active = false;\n sessionGeneration += 1;\n const pendingInitialization = sessionInitialization?.operation;\n sessionInitialization = undefined;\n try {\n if (pendingInitialization) await Promise.allSettled([pendingInitialization]);\n clearSessionResources();\n delegation?.dispose();\n disposeLeader?.();\n disposeLeader = undefined;\n store?.dispose();\n } finally {\n await errorReporter.shutdown();\n }\n };\n const collapseKey = resolveCollapseKey();\n return {\n services: [\n (cordis: Context) => {\n cordis.inject([DOOM_NARRATION_SERVICE], (serviceContext) => {\n const service = requireDoomNarrationService(serviceContext);\n narrationService = service;\n return () => {\n if (narrationService === service) narrationService = undefined;\n };\n });\n cordis.inject([DOOM_CONTEXT_CONTRIBUTIONS_SERVICE], (contextContributionsContext) => {\n const registration = requireDoomContextContributions(contextContributionsContext).register(\n createTaskContextContribution(() => taskStore.snapshot.tasks),\n );\n return () => registration.dispose();\n });\n cordis.inject([DOOM_DELEGATION_SERVICE], (serviceContext) => {\n const service = readDoomDelegationService(serviceContext);\n if (!service) return undefined;\n return delegationManager.bind(serviceContext, service);\n });\n cordis.inject([DOOM_BACKGROUND_WORK_SERVICE], (serviceContext) => {\n const service = readDoomBackgroundWorkService(serviceContext);\n if (!service) return undefined;\n const handle = service.register({\n provider: BACKGROUND_WORK_PROVIDER,\n listActiveWork: () => delegationManager.listActiveWork(),\n });\n backgroundWork = handle;\n return () => {\n handle.dispose();\n if (backgroundWork === handle) backgroundWork = undefined;\n };\n });\n cordis.inject([DOOM_UI_HUB_SERVICE], (uiContext) => {\n const contribution = requireDoomUiHub(uiContext).registerLeader({\n source: LEADER_SOURCE,\n bindings: [\n {\n id: 'tasks.open',\n path: [\n { key: 't', label: 'tasks', detail: 'session task list', order: LEADER_GROUP_ORDER },\n { key: 'l', label: 'list', detail: 'tasks in this session' },\n ],\n command: { name: COMMAND_NAME },\n },\n ],\n });\n const dispose = (): void => contribution.dispose();\n disposeLeader = dispose;\n return () => {\n dispose();\n if (disposeLeader === dispose) disposeLeader = undefined;\n };\n });\n },\n ],\n onStop: dispose,\n onDispose: dispose,\n tools: [\n definePiTool(\n createTaskTool(toolDependencies, {\n renderCall: (args, theme) => renderTaskCall(args as never, theme, taskStore.snapshot.tasks),\n renderResult: renderTaskResult,\n }),\n ),\n ],\n commands: [createTasksCommand(taskStore, openTaskSpace, waitForSessionReadiness)],\n messageRenderers: [\n [\n NOTIFY_CUSTOM_TYPE,\n (message, _options, theme) =>\n new Text(theme.fg('muted', typeof message.content === 'string' ? message.content : ''), 0, 0),\n ],\n ],\n shortcuts: collapseKey === COLLAPSE_KEY_OFF ? [] : [[collapseKey as KeyId, shortcutOptions]],\n events: {\n session_start: sessionStart,\n session_compact: refresh,\n session_tree: refresh,\n tool_execution_end: toolExecutionEnd,\n },\n };\n});\nexport default taskExtension;\n"],"mappings":"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"}
@@ -1,2 +1,6 @@
1
- import taskExtension from "../extension.cjs";
2
- export = taskExtension;
1
+ //#region src/extensions/pi.d.ts
2
+ /** Install Task state and external resources into its host-owned Cordis plugin fiber. */
3
+ export declare const taskExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
4
+ //#endregion
5
+ export { taskExtension as default };
6
+ //# sourceMappingURL=pi.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.cts","names":[],"sources":["../../src/extensions/pi.ts"],"mappings":";;qBAwFa,qEAAa"}
@@ -1,2 +1,6 @@
1
- import taskExtension from "../extension.mjs";
2
- export { taskExtension as default };
1
+ //#region src/extensions/pi.d.ts
2
+ /** Install Task state and external resources into its host-owned Cordis plugin fiber. */
3
+ export declare const taskExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
4
+ //#endregion
5
+ export { taskExtension as default };
6
+ //# sourceMappingURL=pi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.mts","names":[],"sources":["../../src/extensions/pi.ts"],"mappings":";;qBAwFa,qEAAa"}
@@ -1,2 +1,3 @@
1
- import e from"../extension.mjs";var t=e;export{t as default};
1
+ import{TASK_EVENT as e}from"../types/telemetry.mjs";import{BACKGROUND_WORK_PROVIDER as t,DelegationManager as n,NOTIFY_CUSTOM_TYPE as r}from"../services/delegation/index.mjs";import{createTaskErrorReporter as i,toFailureReporter as a}from"../services/logSinkTelemetry/index.mjs";import{COMMAND_NAME as o}from"../constants/task.mjs";import"../schemas/task.mjs";import{createTasksCommand as s}from"../controllers/tasksCommand.mjs";import{getDelegationTimeoutMs as c,getMaxTasks as l,getStoreTtlMs as u,resolveCollapseKey as d}from"../services/config/index.mjs";import{renderTaskCall as f,renderTaskResult as p}from"../tui/format.mjs";import{TaskOverlay as m}from"../tui/taskOverlay.mjs";import{hasStorePathOverride as h,removeLegacyStoreDirectoryAsync as ee,resolveSessionKey as te,sweepStoreFilesAsync as ne}from"../services/paths/index.mjs";import{TaskStore as re}from"../services/taskStore/index.mjs";import{openTaskSpace as ie}from"../tui/taskSpace.mjs";import{createTaskTool as ae}from"../tools/task.mjs";import{TASK_CONTEXT_CONTRIBUTION_SOURCE as g,createTaskContextContribution as oe}from"../services/contextContribution/index.mjs";import{createNodeDelegationPlatform as se}from"../services/delegationPlatform/index.mjs";import{narrateTaskCommit as _}from"../services/taskNarration/index.mjs";import{DOOM_DELEGATION_SERVICE as ce,readDoomDelegationService as le}from"@agimon-ai/doompi-core/delegation";import{Text as v}from"@earendil-works/pi-tui";import{DOOM_BACKGROUND_WORK_SERVICE as y,readDoomBackgroundWorkService as b}from"@agimon-ai/doompi-core/background-work";import{DOOM_CONTEXT_CONTRIBUTIONS_SERVICE as x,requireDoomContextContributions as S}from"@agimon-ai/doompi-core/context-contributions";import{DOOM_NARRATION_SERVICE as C,createNarrationRequest as w,requireDoomNarrationService as ue}from"@agimon-ai/doompi-core/narration";import{definePiExtension as T,definePiTool as de}from"@agimon-ai/doompi-core/pi-extension";import{readDoomReadinessCoordinator as fe}from"@agimon-ai/doompi-core/readiness";import{DOOM_UI_HUB_SERVICE as pe,requireDoomUiHub as me}from"@agimon-ai/doompi-core/ui-hub";const E=g,D=`error.type`,O=`task.stage`,k={sessionId:`session_id`,storeCleanup:`store_cleanup`,storeSweep:`store_sweep`,storeRead:`store_read`,reconcile:`reconcile`,refresh:`refresh`};function A(e){return e instanceof Error?e.name||`Error`:typeof e==`string`?`StringError`:e&&typeof e==`object`?`ObjectError`:`UnknownError`}const j=T(E,({context:g,pi:T,signal:j})=>{let M=i(),N=a(M),P=!0,F=0,I,L,R,z,B,V,H,U,W,G=e=>{M.recordWarning(`doom_task.narration_failed`,e).catch(e=>{process.emitWarning(`Doom-task could not record a narration failure: ${String(e)}`)})},he={narrate(e){let t=I,n=w(e);if(t&&n)try{Promise.resolve(t.request(n)).catch(G)}catch(e){G(e)}}},K=async(e,t)=>{t?.throwIfAborted();let n=W;if(!n)throw Error(`doom-task session initialization has not started`);if(n.sessionManager!==e.sessionManager)throw Error(`doom-task readiness belongs to a stale Pi session`);if(await n.operation,t?.throwIfAborted(),!P||j.aborted||n!==W||!U)throw Error(`doom-task readiness belongs to a stale extension generation`)},q=()=>{B?.(),B=void 0,R?.reset(),z?.dispose(),U=void 0},J=new re({report:N,onCommitted:(e,t)=>_(he,e,t)});L=J;let Y=()=>{P&&!j.aborted&&(z?.update(),V?.update())},X=new n({store:J,cwd:process.cwd(),platform:se(),notify:(e,t)=>T.sendMessage(e,t),getSessionId:()=>U,onChange:Y,runTimeoutMs:c(),report:N,onNotifyError:(e,t)=>{M.recordNotificationError(e,t)}});R=X;let Z=new m({getTasks:()=>J.snapshot.tasks,delegation:X});z=Z;let ge={store:J,delegation:X,maxTasks:l(),onChange:Y,report:N,waitUntilReady:K},_e=async(t,n)=>{if(!P||j.aborted)return;let r=++F;U!==void 0&&q();let i=n,a=async t=>{let n=()=>!t?.aborted&&P&&!j.aborted&&r===F,a=k.sessionId,o=async(t,n)=>{a=t;try{await n()}catch(n){N.warn(e.sessionStartDegraded,n,{[O]:t,[D]:A(n)})}};try{let t=i.sessionManager?.getSessionId();if(!t)throw Error(`doom-task requires a session id`);U=t,J.configureSession(te(t)),a=k.storeCleanup;let r=await ee(J.storePath);if(!n())return;a=k.storeSweep;let s=h()?{removed:[],errors:[]}:await ne(J.storePath,u());if(!n())return;let c=[...r.errors,...s.errors];for(let t of c)N.warn(e.storeSweepFailed,Error(t));if(c.length>0&&i.hasUI&&i.ui.notify(c.join(`
2
+ `),`warning`),i.hasUI&&Z.setUICtx(i.ui),await o(k.storeRead,async()=>{await J.readAsync(n)}),!n()||(B=J.onExternalChange(Y),await o(k.reconcile,async()=>{await X.reconcile(n)}),!n()))return;a=k.refresh,Y()}catch(t){if(!n())return;throw q(),N.error(e.sessionStartFailed,t,{[O]:a,[D]:A(t)}),t}},o=fe(g);if(!o){let e=a();return W={sessionManager:n.sessionManager,operation:e},e}let s=W?.operation,c=(async()=>{s&&await Promise.allSettled([s]),P&&!j.aborted&&r===F&&await o.start(E,`${n.sessionManager.getSessionId()}:${r}`,async e=>(await a(e),{value:void 0})).wait()})();W={sessionManager:n.sessionManager,operation:c},Promise.allSettled([c])},ve=e=>{P&&!j.aborted&&e.toolName===`task`&&Y()},ye={description:`Collapse or expand the task overlay`,handler:async e=>{P&&!j.aborted&&e.hasUI&&(await K(e),P&&!j.aborted&&Z.isRegistered()&&Z.toggleCollapse())}},Q=async()=>{if(!P)return;P=!1,F+=1;let e=W?.operation;W=void 0;try{e&&await Promise.allSettled([e]),q(),R?.dispose(),H?.(),H=void 0,L?.dispose()}finally{await M.shutdown()}},$=d();return{services:[e=>{e.inject([C],e=>{let t=ue(e);return I=t,()=>{I===t&&(I=void 0)}}),e.inject([x],e=>{let t=S(e).register(oe(()=>J.snapshot.tasks));return()=>t.dispose()}),e.inject([ce],e=>{let t=le(e);if(t)return X.bind(e,t)}),e.inject([y],e=>{let n=b(e);if(!n)return;let r=n.register({provider:t,listActiveWork:()=>X.listActiveWork()});return V=r,()=>{r.dispose(),V===r&&(V=void 0)}}),e.inject([pe],e=>{let t=me(e).registerLeader({source:E,bindings:[{id:`tasks.open`,path:[{key:`t`,label:`tasks`,detail:`session task list`,order:65},{key:`l`,label:`list`,detail:`tasks in this session`}],command:{name:o}}]}),n=()=>t.dispose();return H=n,()=>{n(),H===n&&(H=void 0)}})}],onStop:Q,onDispose:Q,tools:[de(ae(ge,{renderCall:(e,t)=>f(e,t,J.snapshot.tasks),renderResult:p}))],commands:[s(J,ie,K)],messageRenderers:[[r,(e,t,n)=>new v(n.fg(`muted`,typeof e.content==`string`?e.content:``),0,0)]],shortcuts:$===`off`?[]:[[$,ye]],events:{session_start:_e,session_compact:Y,session_tree:Y,tool_execution_end:ve}}});export{j as default,j as taskExtension};
2
3
  //# sourceMappingURL=pi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.mjs","names":[],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { taskExtension } from '../extension.ts';\n\nexport default taskExtension;\n"],"mappings":"gCAEA,IAAA,EAAe"}
1
+ {"version":3,"file":"pi.mjs","names":[],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import {\n DOOM_BACKGROUND_WORK_SERVICE,\n type BackgroundWorkProviderHandle,\n readDoomBackgroundWorkService,\n} from '@agimon-ai/doompi-core/background-work';\nimport {\n DOOM_CONTEXT_CONTRIBUTIONS_SERVICE,\n requireDoomContextContributions,\n} from '@agimon-ai/doompi-core/context-contributions';\nimport { DOOM_DELEGATION_SERVICE, readDoomDelegationService } from '@agimon-ai/doompi-core/delegation';\nimport {\n createNarrationRequest,\n DOOM_NARRATION_SERVICE,\n type DoomNarrationService,\n requireDoomNarrationService,\n} from '@agimon-ai/doompi-core/narration';\nimport { definePiExtension, definePiTool } from '@agimon-ai/doompi-core/pi-extension';\nimport { readDoomReadinessCoordinator } from '@agimon-ai/doompi-core/readiness';\nimport { DOOM_UI_HUB_SERVICE, requireDoomUiHub } from '@agimon-ai/doompi-core/ui-hub';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI, ExtensionContext } from '@earendil-works/pi-coding-agent';\nimport type { KeyId } from '@earendil-works/pi-tui';\nimport { Text } from '@earendil-works/pi-tui';\n\nimport { createTasksCommand } from '../controllers/tasksCommand';\nimport { COMMAND_NAME, TOOL_NAME } from '../schemas/task';\nimport {\n COLLAPSE_KEY_OFF,\n getDelegationTimeoutMs,\n getMaxTasks,\n getStoreTtlMs,\n resolveCollapseKey,\n} from '../services/config';\nimport { createTaskContextContribution, TASK_CONTEXT_CONTRIBUTION_SOURCE } from '../services/contextContribution';\nimport { BACKGROUND_WORK_PROVIDER, DelegationManager, NOTIFY_CUSTOM_TYPE } from '../services/delegation';\nimport { createNodeDelegationPlatform } from '../services/delegationPlatform';\nimport { createTaskErrorReporter, TASK_EVENT, toFailureReporter } from '../services/logSinkTelemetry';\nimport {\n hasStorePathOverride,\n removeLegacyStoreDirectoryAsync,\n resolveSessionKey,\n sweepStoreFilesAsync,\n} from '../services/paths';\nimport { narrateTaskCommit, type TaskNarrationSink } from '../services/taskNarration';\nimport { TaskStore } from '../services/taskStore';\nimport { createTaskTool } from '../tools/task';\nimport { renderTaskCall, renderTaskResult } from '../tui/format';\nimport { TaskOverlay } from '../tui/taskOverlay';\nimport { openTaskSpace } from '../tui/taskSpace';\n\ninterface SessionContextLike {\n hasUI: boolean;\n ui: Parameters<TaskOverlay['setUICtx']>[0];\n sessionManager?: { getSessionId(): string };\n}\n\nconst LEADER_SOURCE = TASK_CONTEXT_CONTRIBUTION_SOURCE;\nconst NARRATION_FAILED_EVENT = 'doom_task.narration_failed';\n/** Between doom-plan's 60 and the core help group's 70, so `t` sits after `p`. */\nconst LEADER_GROUP_ORDER = 65;\nconst ERROR_TYPE_ATTRIBUTE = 'error.type';\n/**\n * Which part of session start ran. The telemetry sanitizer drops free text, so\n * the failing branch has to travel as a stable low-cardinality token.\n */\nconst SESSION_START_STAGE_ATTRIBUTE = 'task.stage';\nconst SESSION_START_STAGE = {\n sessionId: 'session_id',\n storeCleanup: 'store_cleanup',\n storeSweep: 'store_sweep',\n storeRead: 'store_read',\n reconcile: 'reconcile',\n refresh: 'refresh',\n} as const;\ntype SessionStartStage = (typeof SESSION_START_STAGE)[keyof typeof SESSION_START_STAGE];\n\n/**\n * Mirror of the telemetry sink's own `error.type` token. The sink overwrites it\n * for any defined error, so this only guarantees the attribute exists when the\n * thrown value is `undefined`.\n */\nfunction errorTypeToken(error: unknown): string {\n if (error instanceof Error) return error.name || 'Error';\n if (typeof error === 'string') return 'StringError';\n if (error && typeof error === 'object') return 'ObjectError';\n return 'UnknownError';\n}\n/** Install Task state and external resources into its host-owned Cordis plugin fiber. */\nexport const taskExtension = definePiExtension(LEADER_SOURCE, ({ context: cordis, pi, signal: pluginSignal }) => {\n const errorReporter = createTaskErrorReporter();\n const report = toFailureReporter(errorReporter);\n let active = true;\n let sessionGeneration = 0;\n let narrationService: DoomNarrationService | undefined;\n let store: TaskStore | undefined;\n let delegation: DelegationManager | undefined;\n let overlay: TaskOverlay | undefined;\n let unwatch: (() => void) | undefined;\n let backgroundWork: BackgroundWorkProviderHandle | undefined;\n let disposeLeader: (() => void) | undefined;\n let sessionId: string | undefined;\n let sessionInitialization:\n | {\n readonly sessionManager: object;\n readonly operation: Promise<void>;\n }\n | undefined;\n\n const reportNarrationFailure = (error: unknown): void => {\n void errorReporter.recordWarning(NARRATION_FAILED_EVENT, error).catch((telemetryError: unknown) => {\n process.emitWarning(`Doom-task could not record a narration failure: ${String(telemetryError)}`);\n });\n };\n const narrationSink: TaskNarrationSink = {\n narrate(text) {\n const service = narrationService;\n const request = createNarrationRequest(text);\n if (!service || !request) return;\n try {\n void Promise.resolve(service.request(request)).catch(reportNarrationFailure);\n } catch (error) {\n reportNarrationFailure(error);\n }\n },\n };\n\n const waitForSessionReadiness = async (\n context: { readonly sessionManager: object },\n signal?: AbortSignal,\n ): Promise<void> => {\n signal?.throwIfAborted();\n const current = sessionInitialization;\n if (!current) throw new Error('doom-task session initialization has not started');\n if (current.sessionManager !== context.sessionManager) {\n throw new Error('doom-task readiness belongs to a stale Pi session');\n }\n await current.operation;\n signal?.throwIfAborted();\n if (!active || pluginSignal.aborted || current !== sessionInitialization || !sessionId) {\n throw new Error('doom-task readiness belongs to a stale extension generation');\n }\n };\n\n const clearSessionResources = (): void => {\n unwatch?.();\n unwatch = undefined;\n delegation?.reset();\n overlay?.dispose();\n sessionId = undefined;\n };\n\n const taskStore = new TaskStore({\n report,\n onCommitted: (previous, committed) => narrateTaskCommit(narrationSink, previous, committed),\n });\n store = taskStore;\n\n const refresh = (): void => {\n if (!active || pluginSignal.aborted) return;\n overlay?.update();\n backgroundWork?.update();\n };\n\n const delegationManager = new DelegationManager({\n store: taskStore,\n cwd: process.cwd(),\n platform: createNodeDelegationPlatform(),\n notify: (message, options) => pi.sendMessage(message, options),\n getSessionId: () => sessionId,\n onChange: refresh,\n runTimeoutMs: getDelegationTimeoutMs(),\n report,\n onNotifyError: (error, taskId) => {\n void errorReporter.recordNotificationError(error, taskId);\n },\n });\n delegation = delegationManager;\n\n const taskOverlay = new TaskOverlay({ getTasks: () => taskStore.snapshot.tasks, delegation: delegationManager });\n overlay = taskOverlay;\n\n const toolDependencies: Parameters<typeof createTaskTool>[0] = {\n store: taskStore,\n delegation: delegationManager,\n maxTasks: getMaxTasks(),\n onChange: refresh,\n report,\n waitUntilReady: waitForSessionReadiness,\n };\n\n const sessionStart = async (_event: unknown, ctx: ExtensionContext) => {\n if (!active || pluginSignal.aborted) return;\n const ownGeneration = ++sessionGeneration;\n if (sessionId !== undefined) clearSessionResources();\n const context = ctx as unknown as SessionContextLike;\n const initialize = async (signal?: AbortSignal): Promise<void> => {\n const isCurrent = (): boolean =>\n !signal?.aborted && active && !pluginSignal.aborted && ownGeneration === sessionGeneration;\n let stage: SessionStartStage = SESSION_START_STAGE.sessionId;\n /**\n * Run a stage whose failure only degrades task visibility. The session\n * still starts, and the warning keeps the degraded state from being silent.\n */\n const degrade = async (next: SessionStartStage, operation: () => Promise<void>): Promise<void> => {\n stage = next;\n try {\n await operation();\n } catch (error) {\n report.warn(TASK_EVENT.sessionStartDegraded, error, {\n [SESSION_START_STAGE_ATTRIBUTE]: next,\n [ERROR_TYPE_ATTRIBUTE]: errorTypeToken(error),\n });\n }\n };\n try {\n const currentSessionId = context.sessionManager?.getSessionId();\n if (!currentSessionId) throw new Error('doom-task requires a session id');\n sessionId = currentSessionId;\n taskStore.configureSession(resolveSessionKey(currentSessionId));\n stage = SESSION_START_STAGE.storeCleanup;\n const cleanup = await removeLegacyStoreDirectoryAsync(taskStore.storePath);\n if (!isCurrent()) return;\n stage = SESSION_START_STAGE.storeSweep;\n const sweep = hasStorePathOverride()\n ? { removed: [], errors: [] }\n : await sweepStoreFilesAsync(taskStore.storePath, getStoreTtlMs());\n if (!isCurrent()) return;\n const storeErrors = [...cleanup.errors, ...sweep.errors];\n for (const failure of storeErrors) report.warn(TASK_EVENT.storeSweepFailed, new Error(failure));\n if (storeErrors.length > 0 && context.hasUI) context.ui.notify(storeErrors.join('\\n'), 'warning');\n if (context.hasUI) taskOverlay.setUICtx(context.ui);\n await degrade(SESSION_START_STAGE.storeRead, async () => {\n await taskStore.readAsync(isCurrent);\n });\n if (!isCurrent()) return;\n unwatch = taskStore.onExternalChange(refresh);\n await degrade(SESSION_START_STAGE.reconcile, async () => {\n await delegationManager.reconcile(isCurrent);\n });\n if (!isCurrent()) return;\n stage = SESSION_START_STAGE.refresh;\n refresh();\n } catch (error) {\n if (!isCurrent()) return;\n clearSessionResources();\n report.error(TASK_EVENT.sessionStartFailed, error, {\n [SESSION_START_STAGE_ATTRIBUTE]: stage,\n [ERROR_TYPE_ATTRIBUTE]: errorTypeToken(error),\n });\n throw error;\n }\n };\n\n const coordinator = readDoomReadinessCoordinator(cordis);\n if (!coordinator) {\n const operation = initialize();\n sessionInitialization = { sessionManager: ctx.sessionManager, operation };\n return operation;\n }\n\n const previous = sessionInitialization?.operation;\n const operation = (async (): Promise<void> => {\n if (previous) await Promise.allSettled([previous]);\n if (!active || pluginSignal.aborted || ownGeneration !== sessionGeneration) return;\n const handle = coordinator.start(\n LEADER_SOURCE,\n `${ctx.sessionManager.getSessionId()}:${ownGeneration}`,\n async (signal) => {\n await initialize(signal);\n return { value: undefined };\n },\n );\n await handle.wait();\n })();\n sessionInitialization = { sessionManager: ctx.sessionManager, operation };\n // Config's coordinator owns the single failure notification. This detached\n // observer only keeps a failed background generation from going unhandled.\n void Promise.allSettled([operation]);\n return undefined;\n };\n\n const toolExecutionEnd = (event: { toolName: string }) => {\n if (active && !pluginSignal.aborted && event.toolName === TOOL_NAME) refresh();\n };\n const shortcutOptions: Parameters<ExtensionAPI['registerShortcut']>[1] = {\n description: 'Collapse or expand the task overlay',\n handler: async (ctx: ExtensionContext) => {\n if (!active || pluginSignal.aborted || !ctx.hasUI) return;\n await waitForSessionReadiness(ctx);\n if (!active || pluginSignal.aborted || !taskOverlay.isRegistered()) return;\n taskOverlay.toggleCollapse();\n },\n };\n const dispose = async () => {\n if (!active) return;\n active = false;\n sessionGeneration += 1;\n const pendingInitialization = sessionInitialization?.operation;\n sessionInitialization = undefined;\n try {\n if (pendingInitialization) await Promise.allSettled([pendingInitialization]);\n clearSessionResources();\n delegation?.dispose();\n disposeLeader?.();\n disposeLeader = undefined;\n store?.dispose();\n } finally {\n await errorReporter.shutdown();\n }\n };\n const collapseKey = resolveCollapseKey();\n return {\n services: [\n (cordis: Context) => {\n cordis.inject([DOOM_NARRATION_SERVICE], (serviceContext) => {\n const service = requireDoomNarrationService(serviceContext);\n narrationService = service;\n return () => {\n if (narrationService === service) narrationService = undefined;\n };\n });\n cordis.inject([DOOM_CONTEXT_CONTRIBUTIONS_SERVICE], (contextContributionsContext) => {\n const registration = requireDoomContextContributions(contextContributionsContext).register(\n createTaskContextContribution(() => taskStore.snapshot.tasks),\n );\n return () => registration.dispose();\n });\n cordis.inject([DOOM_DELEGATION_SERVICE], (serviceContext) => {\n const service = readDoomDelegationService(serviceContext);\n if (!service) return undefined;\n return delegationManager.bind(serviceContext, service);\n });\n cordis.inject([DOOM_BACKGROUND_WORK_SERVICE], (serviceContext) => {\n const service = readDoomBackgroundWorkService(serviceContext);\n if (!service) return undefined;\n const handle = service.register({\n provider: BACKGROUND_WORK_PROVIDER,\n listActiveWork: () => delegationManager.listActiveWork(),\n });\n backgroundWork = handle;\n return () => {\n handle.dispose();\n if (backgroundWork === handle) backgroundWork = undefined;\n };\n });\n cordis.inject([DOOM_UI_HUB_SERVICE], (uiContext) => {\n const contribution = requireDoomUiHub(uiContext).registerLeader({\n source: LEADER_SOURCE,\n bindings: [\n {\n id: 'tasks.open',\n path: [\n { key: 't', label: 'tasks', detail: 'session task list', order: LEADER_GROUP_ORDER },\n { key: 'l', label: 'list', detail: 'tasks in this session' },\n ],\n command: { name: COMMAND_NAME },\n },\n ],\n });\n const dispose = (): void => contribution.dispose();\n disposeLeader = dispose;\n return () => {\n dispose();\n if (disposeLeader === dispose) disposeLeader = undefined;\n };\n });\n },\n ],\n onStop: dispose,\n onDispose: dispose,\n tools: [\n definePiTool(\n createTaskTool(toolDependencies, {\n renderCall: (args, theme) => renderTaskCall(args as never, theme, taskStore.snapshot.tasks),\n renderResult: renderTaskResult,\n }),\n ),\n ],\n commands: [createTasksCommand(taskStore, openTaskSpace, waitForSessionReadiness)],\n messageRenderers: [\n [\n NOTIFY_CUSTOM_TYPE,\n (message, _options, theme) =>\n new Text(theme.fg('muted', typeof message.content === 'string' ? message.content : ''), 0, 0),\n ],\n ],\n shortcuts: collapseKey === COLLAPSE_KEY_OFF ? [] : [[collapseKey as KeyId, shortcutOptions]],\n events: {\n session_start: sessionStart,\n session_compact: refresh,\n session_tree: refresh,\n tool_execution_end: toolExecutionEnd,\n },\n };\n});\nexport default taskExtension;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../services/delegation/index.cjs"),t=require("../constants/task.cjs"),n=require("../schemas/task.cjs"),r=require("../services/taskResult/index.cjs"),i=require("../services/config/index.cjs"),a=require("../services/paths/index.cjs"),o=require("../services/taskStore/index.cjs"),s=require("../services/reducer/index.cjs"),c=require("../services/delegationPlatform/index.cjs"),l=require("../types/webTasks.cjs"),u=require("../controllers/webTasksChannel.cjs");let d=require("@agimon-ai/doompi-core/delegation"),f=require("@agimon-ai/doompi-core/server-facet"),p=require("typebox/value");const m=`@agimon-ai/doompi-task`;function h(e){return typeof e==`object`&&e&&`content`in e?e:{content:[{type:`text`,text:typeof e==`string`?e:JSON.stringify(e,null,2)}],details:e}}function g(e){return{content:[{type:`text`,text:e instanceof Error?e.message:String(e)}],isError:!0}}async function _(e,t,n,i){let{document:a,value:o}=await e.mutate(e=>{let r=s.applyTaskMutation(e,t,n,void 0,i);return{...s.isCommittingOp(r.op)?{document:r.document}:{},value:r}});if(o.op.kind===`error`)throw Error(o.op.message);return r.buildToolResult(t,n,a,o.op)}async function v(e,t,n){let r=[];for(let[i,a]of t.entries())try{let t=await e.assign(a.id,{agent:a.agent,inlineAgent:a.inlineAgent,instructions:a.instructions,relevantFiles:a.relevantFiles,priorFindings:a.priorFindings,model:a.model,...a.context===`fork`||a.context===`fresh`?{context:a.context}:{},signal:n});r.push({index:i,id:a.id,agent:a.agent,...t})}catch(e){r.push({index:i,id:a.id,agent:a.agent,ok:!1,message:String(e)})}return r}function y(e,t,i){return{name:`task`,label:`Task`,description:`Maintain a persistent task graph and delegate ready tasks to background agents.`,parameters:n.TaskParamsSchema,promptSnippet:`Track complex work persistently and delegate ready tasks`,executionMode:`serial`,async execute(a,o,s,c){if(!(0,p.Check)(n.TaskParamsSchema,o))return g(`Invalid task parameters.`);let l=o;try{if(l.action===`assign`){if(!l.assignments?.length)throw Error(`assign requires a non-empty assignments[] array`);c?.(h(`Delegating ${l.assignments.length} task${l.assignments.length===1?``:`s`}...`));let n=await v(t,l.assignments,s),i=n.filter(e=>e.ok).map(e=>e.id),a=r.formatAssignmentResults(n);if(i.length===0)throw Error(a);return r.buildAssignmentResult(l,e.snapshot,a,{assigned:i,failed:n.length-i.length})}if(l.action===`cancel`){let n=await t.cancel(l.id??NaN);if(!n.ok)throw Error(n.message);return r.buildTextResult(`cancel`,l,e.snapshot,n.message)}return _(e,l.action,l,i)}catch(e){return g(e)}}}}const b=(0,f.defineServerPlugin)({name:m,global:{channels:[u.createTasksChannel]},workspace:{channels:[u.createTasksChannel]},session:({host:n,agent:r})=>{if(!r)throw Error(`Task session requires the headless host.`);let s=r.context;if(n.context.directEvents===void 0)throw Error(`Task headless facet requires the session direct event bus.`);let u=n.context.directEvents,f=i.getMaxTasks(s.environment),p=new o.TaskStore({env:s.environment,onCommitted:(e,t)=>{s.client.setStatus(m,`tasks: ${t.tasks.length}`),u.publish(l.TASKS_CHANNEL_TYPE,s.sessionId,t)}});p.configureSession(a.resolveSessionKey(s.sessionId,s.environment));let h=new e.DelegationManager({store:p,cwd:s.cwd,platform:c.createNodeDelegationPlatform(s.environment),getSessionId:()=>s.sessionId,notify:e=>void s.client.notify({body:e.content,level:`info`}),onChange:()=>s.client.setStatus(m,`tasks: ${p.snapshot.tasks.length}`),runTimeoutMs:i.getDelegationTimeoutMs(s.environment),onNotifyError:e=>void s.client.notify({body:String(e),level:`warning`})});return{services:[e=>{e.inject([d.DOOM_DELEGATION_SERVICE],e=>{let t=(0,d.readDoomDelegationService)(e);t&&h.bind(e,t)})}],onDispose(){h.dispose(),p.dispose()},tools:[y(p,h,f)],commands:[{name:t.COMMAND_NAME,description:`List or clear the persistent task graph.`,async execute(e,t){let n=e.trim()===`clear`?`clear`:`list`,r=(await _(p,n,{action:n},f)).content[0];await t.client.notify({body:r?.type===`text`?r.text:`No tasks`,level:`info`})}}],resources:[{name:`doompi/task-board`,kind:`context`,read:()=>JSON.stringify(p.snapshot,null,2)}],activities:[{name:m,async start(e){return p.configureSession(a.resolveSessionKey(e.sessionId,e.environment)),await a.removeLegacyStoreDirectoryAsync(p.storePath,e.cwd),e.environment.DOOM_TASK_STORE_PATH||await a.sweepStoreFilesAsync(p.storePath,i.getStoreTtlMs(e.environment)),await p.readAsync(),await h.reconcile(),r.context.client.setStatus(m,`tasks: ${p.snapshot.tasks.length}`),()=>{h.reset(),r.context.client.setStatus(m,void 0)}}}]}}});exports.default=b,exports.taskServerFacet=b;
2
+ //# sourceMappingURL=server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.cjs","names":["applyTaskMutation","isCommittingOp","buildToolResult","TaskParamsSchema","Check","formatAssignmentResults","buildAssignmentResult","buildTextResult","defineServerPlugin","createTasksChannel","getMaxTasks","TaskStore","TASKS_CHANNEL_TYPE","resolveSessionKey","DelegationManager","createNodeDelegationPlatform","getDelegationTimeoutMs","DOOM_DELEGATION_SERVICE","readDoomDelegationService","COMMAND_NAME","removeLegacyStoreDirectoryAsync","sweepStoreFilesAsync","getStoreTtlMs"],"sources":["../../src/extensions/server.ts"],"sourcesContent":["import { DOOM_DELEGATION_SERVICE, readDoomDelegationService } from '@agimon-ai/doompi-core/delegation';\nimport { type DoomHeadlessExecutionContext, type DoomHeadlessToolResult } from '@agimon-ai/doompi-core/headless';\nimport type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport { defineServerPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport type { Context } from '@deepseek-ai/cordis';\nimport { Check } from 'typebox/value';\n\nimport { COMMAND_NAME } from '../constants/task';\nimport { createTasksChannel } from '../controllers/webTasksChannel';\nimport type { TaskMutationParams } from '../models/task';\nimport { TaskParamsSchema, type TaskParams, type TaskAssignmentParams } from '../schemas/task';\nimport { getMaxTasks, getDelegationTimeoutMs, getStoreTtlMs } from '../services/config';\nimport { DelegationManager } from '../services/delegation';\nimport { createNodeDelegationPlatform } from '../services/delegationPlatform';\nimport { resolveSessionKey } from '../services/paths';\nimport { removeLegacyStoreDirectoryAsync, sweepStoreFilesAsync } from '../services/paths';\nimport { applyTaskMutation, isCommittingOp, type ReducerAction } from '../services/reducer';\nimport {\n buildAssignmentResult,\n buildTextResult,\n buildToolResult,\n formatAssignmentResults,\n} from '../services/taskResult';\nimport { TaskStore } from '../services/taskStore';\nimport { TASKS_CHANNEL_TYPE } from '../types/webTasks';\n\nconst SOURCE = '@agimon-ai/doompi-task';\n\nfunction output(value: unknown): DoomHeadlessToolResult {\n if (typeof value === 'object' && value !== null && 'content' in value) return value as DoomHeadlessToolResult;\n const text = typeof value === 'string' ? value : JSON.stringify(value, null, 2);\n return { content: [{ type: 'text', text }], details: value };\n}\n\nfunction failure(error: unknown): DoomHeadlessToolResult {\n return { content: [{ type: 'text', text: error instanceof Error ? error.message : String(error) }], isError: true };\n}\n\nasync function reducerAction(\n store: TaskStore,\n action: ReducerAction,\n params: TaskMutationParams,\n maxTasks: number,\n): Promise<DoomHeadlessToolResult> {\n const { document, value } = await store.mutate((current) => {\n const result = applyTaskMutation(current, action, params, undefined, maxTasks);\n return { ...(isCommittingOp(result.op) ? { document: result.document } : {}), value: result };\n });\n if (value.op.kind === 'error') throw new Error(value.op.message);\n return buildToolResult(action, params, document, value.op);\n}\n\ninterface AssignmentItemResult {\n index: number;\n id: number;\n agent: string;\n ok: boolean;\n message: string;\n}\n\nasync function assignmentBatch(\n manager: DelegationManager,\n assignments: readonly TaskAssignmentParams[],\n signal?: AbortSignal,\n): Promise<AssignmentItemResult[]> {\n const result: AssignmentItemResult[] = [];\n for (const [index, assignment] of assignments.entries()) {\n try {\n const outcome = await manager.assign(assignment.id, {\n agent: assignment.agent,\n inlineAgent: assignment.inlineAgent,\n instructions: assignment.instructions,\n relevantFiles: assignment.relevantFiles,\n priorFindings: assignment.priorFindings,\n model: assignment.model,\n ...(assignment.context === 'fork' || assignment.context === 'fresh' ? { context: assignment.context } : {}),\n signal,\n });\n result.push({ index, id: assignment.id, agent: assignment.agent, ...outcome });\n } catch (error) {\n result.push({ index, id: assignment.id, agent: assignment.agent, ok: false, message: String(error) });\n }\n }\n return result;\n}\n\nfunction createTaskTool(\n store: TaskStore,\n manager: DelegationManager,\n maxTasks: number,\n): DoomHeadlessTool<typeof TaskParamsSchema> {\n return {\n name: 'task',\n label: 'Task',\n description: 'Maintain a persistent task graph and delegate ready tasks to background agents.',\n parameters: TaskParamsSchema,\n promptSnippet: 'Track complex work persistently and delegate ready tasks',\n executionMode: 'serial',\n async execute(_toolCallId, rawParams, signal, onUpdate) {\n if (!Check(TaskParamsSchema, rawParams)) return failure('Invalid task parameters.');\n const params = rawParams as TaskParams;\n try {\n if (params.action === 'assign') {\n if (!params.assignments?.length) throw new Error('assign requires a non-empty assignments[] array');\n onUpdate?.(\n output(`Delegating ${params.assignments.length} task${params.assignments.length === 1 ? '' : 's'}...`),\n );\n const items = await assignmentBatch(manager, params.assignments, signal);\n const assigned = items.filter((item) => item.ok).map((item) => item.id);\n const text = formatAssignmentResults(items);\n if (assigned.length === 0) throw new Error(text);\n return buildAssignmentResult(params as TaskMutationParams, store.snapshot, text, {\n assigned,\n failed: items.length - assigned.length,\n });\n }\n if (params.action === 'cancel') {\n const outcome = await manager.cancel(params.id ?? Number.NaN);\n if (!outcome.ok) throw new Error(outcome.message);\n return buildTextResult('cancel', params as TaskMutationParams, store.snapshot, outcome.message);\n }\n return reducerAction(store, params.action as ReducerAction, params as TaskMutationParams, maxTasks);\n } catch (error) {\n return failure(error);\n }\n },\n };\n}\n\nexport const taskServerFacet = defineServerPlugin({\n name: SOURCE,\n global: { channels: [createTasksChannel] },\n workspace: { channels: [createTasksChannel] },\n session: ({ host: serverHost, agent: host }) => {\n if (!host) throw new Error('Task session requires the headless host.');\n const execution = host.context;\n if (serverHost.context.directEvents === undefined)\n throw new Error('Task headless facet requires the session direct event bus.');\n const directEvents = serverHost.context.directEvents;\n const maxTasks = getMaxTasks(execution.environment);\n const store = new TaskStore({\n env: execution.environment,\n onCommitted: (_previous, committed) => {\n execution.client.setStatus(SOURCE, `tasks: ${committed.tasks.length}`);\n directEvents.publish(TASKS_CHANNEL_TYPE, execution.sessionId, committed);\n },\n });\n store.configureSession(resolveSessionKey(execution.sessionId, execution.environment));\n const manager = new DelegationManager({\n store,\n cwd: execution.cwd,\n platform: createNodeDelegationPlatform(execution.environment),\n getSessionId: () => execution.sessionId,\n notify: (message) => void execution.client.notify({ body: message.content, level: 'info' }),\n onChange: () => execution.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`),\n runTimeoutMs: getDelegationTimeoutMs(execution.environment),\n onNotifyError: (error) => void execution.client.notify({ body: String(error), level: 'warning' }),\n });\n return {\n services: [\n (serviceContextOwner: Context) => {\n serviceContextOwner.inject([DOOM_DELEGATION_SERVICE], (serviceContext) => {\n const service = readDoomDelegationService(serviceContext);\n if (service) manager.bind(serviceContext, service);\n });\n },\n ],\n onDispose() {\n manager.dispose();\n store.dispose();\n },\n tools: [createTaskTool(store, manager, maxTasks)],\n commands: [\n {\n name: COMMAND_NAME,\n description: 'List or clear the persistent task graph.',\n async execute(args: string, commandContext: DoomHeadlessExecutionContext) {\n const action = args.trim() === 'clear' ? 'clear' : 'list';\n const response = await reducerAction(store, action, { action }, maxTasks);\n const content = response.content[0];\n await commandContext.client.notify({\n body: content?.type === 'text' ? content.text : 'No tasks',\n level: 'info',\n });\n },\n },\n ],\n resources: [\n {\n name: 'doompi/task-board',\n kind: 'context',\n read: () => JSON.stringify(store.snapshot, null, 2),\n },\n ],\n activities: [\n {\n name: SOURCE,\n async start(activityContext) {\n store.configureSession(resolveSessionKey(activityContext.sessionId, activityContext.environment));\n await removeLegacyStoreDirectoryAsync(store.storePath, activityContext.cwd);\n if (!activityContext.environment.DOOM_TASK_STORE_PATH)\n await sweepStoreFilesAsync(store.storePath, getStoreTtlMs(activityContext.environment));\n await store.readAsync();\n await manager.reconcile();\n host.context.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`);\n return () => {\n manager.reset();\n host.context.client.setStatus(SOURCE, undefined);\n };\n },\n },\n ],\n };\n },\n});\n\nexport default taskServerFacet;\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ //#region src/extensions/server.d.ts
2
+ export declare const taskServerFacet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
3
+ //#endregion
4
+ export { taskServerFacet as default };
5
+ //# sourceMappingURL=server.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.cts","names":[],"sources":["../../src/extensions/server.ts"],"mappings":";qBAiIa,+DAAe"}
@@ -0,0 +1,5 @@
1
+ //#region src/extensions/server.d.ts
2
+ export declare const taskServerFacet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
3
+ //#endregion
4
+ export { taskServerFacet as default };
5
+ //# sourceMappingURL=server.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.mts","names":[],"sources":["../../src/extensions/server.ts"],"mappings":";qBAiIa,+DAAe"}
@@ -0,0 +1,2 @@
1
+ import{DelegationManager as e}from"../services/delegation/index.mjs";import{COMMAND_NAME as t}from"../constants/task.mjs";import{TaskParamsSchema as n}from"../schemas/task.mjs";import{buildAssignmentResult as r,buildTextResult as i,buildToolResult as a,formatAssignmentResults as o}from"../services/taskResult/index.mjs";import{getDelegationTimeoutMs as s,getMaxTasks as c,getStoreTtlMs as l}from"../services/config/index.mjs";import{removeLegacyStoreDirectoryAsync as u,resolveSessionKey as d,sweepStoreFilesAsync as f}from"../services/paths/index.mjs";import{TaskStore as p}from"../services/taskStore/index.mjs";import{applyTaskMutation as m,isCommittingOp as h}from"../services/reducer/index.mjs";import{createNodeDelegationPlatform as g}from"../services/delegationPlatform/index.mjs";import{TASKS_CHANNEL_TYPE as _}from"../types/webTasks.mjs";import{createTasksChannel as v}from"../controllers/webTasksChannel.mjs";import{DOOM_DELEGATION_SERVICE as y,readDoomDelegationService as b}from"@agimon-ai/doompi-core/delegation";import{defineServerPlugin as x}from"@agimon-ai/doompi-core/server-facet";import{Check as S}from"typebox/value";const C=`@agimon-ai/doompi-task`;function w(e){return typeof e==`object`&&e&&`content`in e?e:{content:[{type:`text`,text:typeof e==`string`?e:JSON.stringify(e,null,2)}],details:e}}function T(e){return{content:[{type:`text`,text:e instanceof Error?e.message:String(e)}],isError:!0}}async function E(e,t,n,r){let{document:i,value:o}=await e.mutate(e=>{let i=m(e,t,n,void 0,r);return{...h(i.op)?{document:i.document}:{},value:i}});if(o.op.kind===`error`)throw Error(o.op.message);return a(t,n,i,o.op)}async function D(e,t,n){let r=[];for(let[i,a]of t.entries())try{let t=await e.assign(a.id,{agent:a.agent,inlineAgent:a.inlineAgent,instructions:a.instructions,relevantFiles:a.relevantFiles,priorFindings:a.priorFindings,model:a.model,...a.context===`fork`||a.context===`fresh`?{context:a.context}:{},signal:n});r.push({index:i,id:a.id,agent:a.agent,...t})}catch(e){r.push({index:i,id:a.id,agent:a.agent,ok:!1,message:String(e)})}return r}function O(e,t,a){return{name:`task`,label:`Task`,description:`Maintain a persistent task graph and delegate ready tasks to background agents.`,parameters:n,promptSnippet:`Track complex work persistently and delegate ready tasks`,executionMode:`serial`,async execute(s,c,l,u){if(!S(n,c))return T(`Invalid task parameters.`);let d=c;try{if(d.action===`assign`){if(!d.assignments?.length)throw Error(`assign requires a non-empty assignments[] array`);u?.(w(`Delegating ${d.assignments.length} task${d.assignments.length===1?``:`s`}...`));let n=await D(t,d.assignments,l),i=n.filter(e=>e.ok).map(e=>e.id),a=o(n);if(i.length===0)throw Error(a);return r(d,e.snapshot,a,{assigned:i,failed:n.length-i.length})}if(d.action===`cancel`){let n=await t.cancel(d.id??NaN);if(!n.ok)throw Error(n.message);return i(`cancel`,d,e.snapshot,n.message)}return E(e,d.action,d,a)}catch(e){return T(e)}}}}const k=x({name:C,global:{channels:[v]},workspace:{channels:[v]},session:({host:n,agent:r})=>{if(!r)throw Error(`Task session requires the headless host.`);let i=r.context;if(n.context.directEvents===void 0)throw Error(`Task headless facet requires the session direct event bus.`);let a=n.context.directEvents,o=c(i.environment),m=new p({env:i.environment,onCommitted:(e,t)=>{i.client.setStatus(C,`tasks: ${t.tasks.length}`),a.publish(_,i.sessionId,t)}});m.configureSession(d(i.sessionId,i.environment));let h=new e({store:m,cwd:i.cwd,platform:g(i.environment),getSessionId:()=>i.sessionId,notify:e=>void i.client.notify({body:e.content,level:`info`}),onChange:()=>i.client.setStatus(C,`tasks: ${m.snapshot.tasks.length}`),runTimeoutMs:s(i.environment),onNotifyError:e=>void i.client.notify({body:String(e),level:`warning`})});return{services:[e=>{e.inject([y],e=>{let t=b(e);t&&h.bind(e,t)})}],onDispose(){h.dispose(),m.dispose()},tools:[O(m,h,o)],commands:[{name:t,description:`List or clear the persistent task graph.`,async execute(e,t){let n=e.trim()===`clear`?`clear`:`list`,r=(await E(m,n,{action:n},o)).content[0];await t.client.notify({body:r?.type===`text`?r.text:`No tasks`,level:`info`})}}],resources:[{name:`doompi/task-board`,kind:`context`,read:()=>JSON.stringify(m.snapshot,null,2)}],activities:[{name:C,async start(e){return m.configureSession(d(e.sessionId,e.environment)),await u(m.storePath,e.cwd),e.environment.DOOM_TASK_STORE_PATH||await f(m.storePath,l(e.environment)),await m.readAsync(),await h.reconcile(),r.context.client.setStatus(C,`tasks: ${m.snapshot.tasks.length}`),()=>{h.reset(),r.context.client.setStatus(C,void 0)}}}]}}});export{k as default,k as taskServerFacet};
2
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.mjs","names":[],"sources":["../../src/extensions/server.ts"],"sourcesContent":["import { DOOM_DELEGATION_SERVICE, readDoomDelegationService } from '@agimon-ai/doompi-core/delegation';\nimport { type DoomHeadlessExecutionContext, type DoomHeadlessToolResult } from '@agimon-ai/doompi-core/headless';\nimport type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport { defineServerPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport type { Context } from '@deepseek-ai/cordis';\nimport { Check } from 'typebox/value';\n\nimport { COMMAND_NAME } from '../constants/task';\nimport { createTasksChannel } from '../controllers/webTasksChannel';\nimport type { TaskMutationParams } from '../models/task';\nimport { TaskParamsSchema, type TaskParams, type TaskAssignmentParams } from '../schemas/task';\nimport { getMaxTasks, getDelegationTimeoutMs, getStoreTtlMs } from '../services/config';\nimport { DelegationManager } from '../services/delegation';\nimport { createNodeDelegationPlatform } from '../services/delegationPlatform';\nimport { resolveSessionKey } from '../services/paths';\nimport { removeLegacyStoreDirectoryAsync, sweepStoreFilesAsync } from '../services/paths';\nimport { applyTaskMutation, isCommittingOp, type ReducerAction } from '../services/reducer';\nimport {\n buildAssignmentResult,\n buildTextResult,\n buildToolResult,\n formatAssignmentResults,\n} from '../services/taskResult';\nimport { TaskStore } from '../services/taskStore';\nimport { TASKS_CHANNEL_TYPE } from '../types/webTasks';\n\nconst SOURCE = '@agimon-ai/doompi-task';\n\nfunction output(value: unknown): DoomHeadlessToolResult {\n if (typeof value === 'object' && value !== null && 'content' in value) return value as DoomHeadlessToolResult;\n const text = typeof value === 'string' ? value : JSON.stringify(value, null, 2);\n return { content: [{ type: 'text', text }], details: value };\n}\n\nfunction failure(error: unknown): DoomHeadlessToolResult {\n return { content: [{ type: 'text', text: error instanceof Error ? error.message : String(error) }], isError: true };\n}\n\nasync function reducerAction(\n store: TaskStore,\n action: ReducerAction,\n params: TaskMutationParams,\n maxTasks: number,\n): Promise<DoomHeadlessToolResult> {\n const { document, value } = await store.mutate((current) => {\n const result = applyTaskMutation(current, action, params, undefined, maxTasks);\n return { ...(isCommittingOp(result.op) ? { document: result.document } : {}), value: result };\n });\n if (value.op.kind === 'error') throw new Error(value.op.message);\n return buildToolResult(action, params, document, value.op);\n}\n\ninterface AssignmentItemResult {\n index: number;\n id: number;\n agent: string;\n ok: boolean;\n message: string;\n}\n\nasync function assignmentBatch(\n manager: DelegationManager,\n assignments: readonly TaskAssignmentParams[],\n signal?: AbortSignal,\n): Promise<AssignmentItemResult[]> {\n const result: AssignmentItemResult[] = [];\n for (const [index, assignment] of assignments.entries()) {\n try {\n const outcome = await manager.assign(assignment.id, {\n agent: assignment.agent,\n inlineAgent: assignment.inlineAgent,\n instructions: assignment.instructions,\n relevantFiles: assignment.relevantFiles,\n priorFindings: assignment.priorFindings,\n model: assignment.model,\n ...(assignment.context === 'fork' || assignment.context === 'fresh' ? { context: assignment.context } : {}),\n signal,\n });\n result.push({ index, id: assignment.id, agent: assignment.agent, ...outcome });\n } catch (error) {\n result.push({ index, id: assignment.id, agent: assignment.agent, ok: false, message: String(error) });\n }\n }\n return result;\n}\n\nfunction createTaskTool(\n store: TaskStore,\n manager: DelegationManager,\n maxTasks: number,\n): DoomHeadlessTool<typeof TaskParamsSchema> {\n return {\n name: 'task',\n label: 'Task',\n description: 'Maintain a persistent task graph and delegate ready tasks to background agents.',\n parameters: TaskParamsSchema,\n promptSnippet: 'Track complex work persistently and delegate ready tasks',\n executionMode: 'serial',\n async execute(_toolCallId, rawParams, signal, onUpdate) {\n if (!Check(TaskParamsSchema, rawParams)) return failure('Invalid task parameters.');\n const params = rawParams as TaskParams;\n try {\n if (params.action === 'assign') {\n if (!params.assignments?.length) throw new Error('assign requires a non-empty assignments[] array');\n onUpdate?.(\n output(`Delegating ${params.assignments.length} task${params.assignments.length === 1 ? '' : 's'}...`),\n );\n const items = await assignmentBatch(manager, params.assignments, signal);\n const assigned = items.filter((item) => item.ok).map((item) => item.id);\n const text = formatAssignmentResults(items);\n if (assigned.length === 0) throw new Error(text);\n return buildAssignmentResult(params as TaskMutationParams, store.snapshot, text, {\n assigned,\n failed: items.length - assigned.length,\n });\n }\n if (params.action === 'cancel') {\n const outcome = await manager.cancel(params.id ?? Number.NaN);\n if (!outcome.ok) throw new Error(outcome.message);\n return buildTextResult('cancel', params as TaskMutationParams, store.snapshot, outcome.message);\n }\n return reducerAction(store, params.action as ReducerAction, params as TaskMutationParams, maxTasks);\n } catch (error) {\n return failure(error);\n }\n },\n };\n}\n\nexport const taskServerFacet = defineServerPlugin({\n name: SOURCE,\n global: { channels: [createTasksChannel] },\n workspace: { channels: [createTasksChannel] },\n session: ({ host: serverHost, agent: host }) => {\n if (!host) throw new Error('Task session requires the headless host.');\n const execution = host.context;\n if (serverHost.context.directEvents === undefined)\n throw new Error('Task headless facet requires the session direct event bus.');\n const directEvents = serverHost.context.directEvents;\n const maxTasks = getMaxTasks(execution.environment);\n const store = new TaskStore({\n env: execution.environment,\n onCommitted: (_previous, committed) => {\n execution.client.setStatus(SOURCE, `tasks: ${committed.tasks.length}`);\n directEvents.publish(TASKS_CHANNEL_TYPE, execution.sessionId, committed);\n },\n });\n store.configureSession(resolveSessionKey(execution.sessionId, execution.environment));\n const manager = new DelegationManager({\n store,\n cwd: execution.cwd,\n platform: createNodeDelegationPlatform(execution.environment),\n getSessionId: () => execution.sessionId,\n notify: (message) => void execution.client.notify({ body: message.content, level: 'info' }),\n onChange: () => execution.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`),\n runTimeoutMs: getDelegationTimeoutMs(execution.environment),\n onNotifyError: (error) => void execution.client.notify({ body: String(error), level: 'warning' }),\n });\n return {\n services: [\n (serviceContextOwner: Context) => {\n serviceContextOwner.inject([DOOM_DELEGATION_SERVICE], (serviceContext) => {\n const service = readDoomDelegationService(serviceContext);\n if (service) manager.bind(serviceContext, service);\n });\n },\n ],\n onDispose() {\n manager.dispose();\n store.dispose();\n },\n tools: [createTaskTool(store, manager, maxTasks)],\n commands: [\n {\n name: COMMAND_NAME,\n description: 'List or clear the persistent task graph.',\n async execute(args: string, commandContext: DoomHeadlessExecutionContext) {\n const action = args.trim() === 'clear' ? 'clear' : 'list';\n const response = await reducerAction(store, action, { action }, maxTasks);\n const content = response.content[0];\n await commandContext.client.notify({\n body: content?.type === 'text' ? content.text : 'No tasks',\n level: 'info',\n });\n },\n },\n ],\n resources: [\n {\n name: 'doompi/task-board',\n kind: 'context',\n read: () => JSON.stringify(store.snapshot, null, 2),\n },\n ],\n activities: [\n {\n name: SOURCE,\n async start(activityContext) {\n store.configureSession(resolveSessionKey(activityContext.sessionId, activityContext.environment));\n await removeLegacyStoreDirectoryAsync(store.storePath, activityContext.cwd);\n if (!activityContext.environment.DOOM_TASK_STORE_PATH)\n await sweepStoreFilesAsync(store.storePath, getStoreTtlMs(activityContext.environment));\n await store.readAsync();\n await manager.reconcile();\n host.context.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`);\n return () => {\n manager.reset();\n host.context.client.setStatus(SOURCE, undefined);\n };\n },\n },\n ],\n };\n },\n});\n\nexport default taskServerFacet;\n"],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./config.cjs"),t=require("./store/types.cjs"),n=require("./store/reconcile.cjs"),r=require("./store/taskGraph.cjs"),i=require("./delegation/manager.cjs"),a=require("./tool/schema.cjs"),o=require("./store/reducer.cjs"),s=require("./tui/selectors.cjs"),c=require("./store/paths.cjs"),l=require("./store/taskStore.cjs"),u=require("./tool/responseEnvelope.cjs"),d=require("./tool/promptGuidelines.cjs"),f=require("./tool/taskTool.cjs"),p=require("./extension.cjs");exports.BACKGROUND_WORK_PROVIDER=i.BACKGROUND_WORK_PROVIDER,exports.COLLAPSE_KEY_ENV=e.COLLAPSE_KEY_ENV,exports.COLLAPSE_KEY_OFF=e.COLLAPSE_KEY_OFF,exports.COMMAND_NAME=a.COMMAND_NAME,exports.DEFAULT_COLLAPSE_KEY=e.DEFAULT_COLLAPSE_KEY,exports.DEFAULT_DELEGATION_TIMEOUT_MS=e.DEFAULT_DELEGATION_TIMEOUT_MS,exports.DEFAULT_MAX_WIDGET_LINES=e.DEFAULT_MAX_WIDGET_LINES,exports.DEFAULT_PROMPT_GUIDELINES=d.DEFAULT_PROMPT_GUIDELINES,exports.DEFAULT_PROMPT_SNIPPET=f.DEFAULT_PROMPT_SNIPPET,exports.DEFAULT_STORE_TTL_MS=e.DEFAULT_STORE_TTL_MS,exports.DELEGATION_TIMEOUT_MS_ENV=e.DELEGATION_TIMEOUT_MS_ENV,exports.DELETED_STATUS=t.DELETED_STATUS,exports.DelegationManager=i.DelegationManager,exports.ERR_CANCEL_UNACKNOWLEDGED=i.ERR_CANCEL_UNACKNOWLEDGED,exports.ERR_CHILD_SESSION=i.ERR_CHILD_SESSION,exports.ERR_NO_RUNTIME=i.ERR_NO_RUNTIME,exports.ERR_ORPHANED_BY_RESTART=n.ERR_ORPHANED_BY_RESTART,exports.ERR_ORPHANED_BY_SESSION=n.ERR_ORPHANED_BY_SESSION,exports.ERR_REQUIRES_INTERACTIVE=a.ERR_REQUIRES_INTERACTIVE,exports.MAX_BRIEF_FILES=i.MAX_BRIEF_FILES,exports.MAX_UPSERT_ITEMS=o.MAX_UPSERT_ITEMS,exports.MAX_WIDGET_LINES_ENV=e.MAX_WIDGET_LINES_ENV,exports.MSG_ALL_COMPLETE_CLEAR=u.MSG_ALL_COMPLETE_CLEAR,exports.MSG_NO_TASKS=a.MSG_NO_TASKS,exports.MSG_UPSERT_FIELD_MISPLACED=a.MSG_UPSERT_FIELD_MISPLACED,exports.MSG_UPSERT_NONE_APPLIED=u.MSG_UPSERT_NONE_APPLIED,exports.MSG_UPSERT_PARTIAL=u.MSG_UPSERT_PARTIAL,exports.NOTIFY_CUSTOM_TYPE=i.NOTIFY_CUSTOM_TYPE,exports.REF_PATTERN=o.REF_PATTERN,exports.STORE_PATH_ENV=c.STORE_PATH_ENV,exports.STORE_SCHEMA_VERSION=t.STORE_SCHEMA_VERSION,exports.STORE_TTL_MS_ENV=e.STORE_TTL_MS_ENV,exports.TASK_ACTIONS=a.TASK_ACTIONS,exports.TASK_ACTION_FIELDS=a.TASK_ACTION_FIELDS,exports.TASK_CONTEXTS=a.TASK_CONTEXTS,exports.TASK_STATUSES=a.TASK_STATUSES,exports.TOOL_LABEL=a.TOOL_LABEL,exports.TOOL_NAME=a.TOOL_NAME,exports.TaskItemSchema=a.TaskItemSchema,exports.TaskParamsSchema=a.TaskParamsSchema,exports.TaskStore=l.TaskStore,exports.applyTaskMutation=o.applyTaskMutation,exports.buildTextResult=u.buildTextResult,exports.buildToolResult=u.buildToolResult,exports.countTasks=s.countTasks,exports.deriveBlocks=r.deriveBlocks,exports.deriveTaskProjection=s.deriveTaskProjection,exports.detectCycle=r.detectCycle,exports.emptyDocument=t.emptyDocument,exports.formatContent=u.formatContent,exports.formatUpsertFailure=o.formatUpsertFailure,exports.formatUpsertFailureText=u.formatUpsertFailureText,exports.getDelegationTimeoutMs=e.getDelegationTimeoutMs,exports.getMaxWidgetLines=e.getMaxWidgetLines,exports.getStoreTtlMs=e.getStoreTtlMs,exports.groupTasks=s.groupTasks,exports.hasActiveWork=s.hasActiveWork,exports.hasStorePathOverride=c.hasStorePathOverride,exports.isBlocked=r.isBlocked,exports.isCommittingOp=o.isCommittingOp,exports.isDelegationActive=t.isDelegationActive,exports.isTaskListComplete=r.isTaskListComplete,exports.lockPathFor=c.lockPathFor,exports.parsePiTaskConfig=e.parsePiTaskConfig,exports.reconcileOrphanedDelegations=n.reconcileOrphanedDelegations,exports.registerTaskTool=f.registerTaskTool,exports.removeLegacyStoreDirectory=c.removeLegacyStoreDirectory,exports.resolveCollapseKey=e.resolveCollapseKey,exports.resolveLegacyStoreDirectory=c.resolveLegacyStoreDirectory,exports.resolveSessionKey=c.resolveSessionKey,exports.resolveStorePath=c.resolveStorePath,exports.selectOverlayLayout=s.selectOverlayLayout,exports.selectOverlayLayoutFromProjection=s.selectOverlayLayoutFromProjection,exports.shouldShowIds=s.shouldShowIds,exports.singleItemOutcome=o.singleItemOutcome,exports.sweepStoreFiles=c.sweepStoreFiles,exports.taskActionAcceptsField=a.taskActionAcceptsField,exports.taskExtension=p.default,exports.tempPathFor=c.tempPathFor,exports.unresolvedBlockers=r.unresolvedBlockers,exports.visibleTasks=s.visibleTasks;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./models/taskGraph.cjs"),t=require("./types/delegation.cjs"),n=require("./models/task.cjs"),r=require("./services/reconcile/index.cjs"),i=require("./services/delegation/index.cjs"),a=require("./constants/task.cjs"),o=require("./schemas/task.cjs"),s=require("./services/taskResult/index.cjs"),c=require("./services/config/index.cjs"),l=require("./tui/selectors.cjs"),u=require("./constants/promptGuidelines.cjs"),d=require("./services/paths/index.cjs"),f=require("./services/taskStore/index.cjs"),p=require("./services/reducer/index.cjs"),m=require("./tools/task.cjs");exports.BACKGROUND_WORK_PROVIDER=i.BACKGROUND_WORK_PROVIDER,exports.COLLAPSE_KEY_ENV=c.COLLAPSE_KEY_ENV,exports.COLLAPSE_KEY_OFF=c.COLLAPSE_KEY_OFF,exports.COMMAND_NAME=a.COMMAND_NAME,exports.DEFAULT_COLLAPSE_KEY=c.DEFAULT_COLLAPSE_KEY,exports.DEFAULT_DELEGATION_TIMEOUT_MS=c.DEFAULT_DELEGATION_TIMEOUT_MS,exports.DEFAULT_MAX_TASKS=c.DEFAULT_MAX_TASKS,exports.DEFAULT_MAX_WIDGET_LINES=c.DEFAULT_MAX_WIDGET_LINES,exports.DEFAULT_PROMPT_GUIDELINES=u.DEFAULT_PROMPT_GUIDELINES,exports.DEFAULT_PROMPT_SNIPPET=m.DEFAULT_PROMPT_SNIPPET,exports.DEFAULT_STORE_TTL_MS=c.DEFAULT_STORE_TTL_MS,exports.DELEGATION_TIMEOUT_MS_ENV=c.DELEGATION_TIMEOUT_MS_ENV,exports.DELETED_STATUS=n.DELETED_STATUS,exports.DelegationManager=i.DelegationManager,exports.ERR_CANCEL_UNACKNOWLEDGED=i.ERR_CANCEL_UNACKNOWLEDGED,exports.ERR_CHILD_SESSION=i.ERR_CHILD_SESSION,exports.ERR_NO_RUNTIME=i.ERR_NO_RUNTIME,exports.ERR_ORPHANED_BY_RESTART=r.ERR_ORPHANED_BY_RESTART,exports.ERR_ORPHANED_BY_SESSION=r.ERR_ORPHANED_BY_SESSION,exports.ERR_REQUIRES_INTERACTIVE=o.ERR_REQUIRES_INTERACTIVE,exports.MAX_BRIEF_FILES=t.MAX_BRIEF_FILES,exports.MAX_TASKS_ENV=c.MAX_TASKS_ENV,exports.MAX_UPSERT_ITEMS=p.MAX_UPSERT_ITEMS,exports.MAX_WIDGET_LINES_ENV=c.MAX_WIDGET_LINES_ENV,exports.MSG_ALL_COMPLETE_CLEAR=s.MSG_ALL_COMPLETE_CLEAR,exports.MSG_ASSIGN_PARTIAL=s.MSG_ASSIGN_PARTIAL,exports.MSG_NO_TASKS=o.MSG_NO_TASKS,exports.MSG_UPSERT_FIELD_MISPLACED=o.MSG_UPSERT_FIELD_MISPLACED,exports.MSG_UPSERT_NONE_APPLIED=s.MSG_UPSERT_NONE_APPLIED,exports.MSG_UPSERT_PARTIAL=s.MSG_UPSERT_PARTIAL,exports.NOTIFY_CUSTOM_TYPE=i.NOTIFY_CUSTOM_TYPE,exports.REF_PATTERN=p.REF_PATTERN,exports.STORE_PATH_ENV=d.STORE_PATH_ENV,exports.STORE_SCHEMA_VERSION=n.STORE_SCHEMA_VERSION,exports.STORE_TTL_MS_ENV=c.STORE_TTL_MS_ENV,exports.TASK_ACTIONS=o.TASK_ACTIONS,exports.TASK_ACTION_FIELDS=o.TASK_ACTION_FIELDS,exports.TASK_CONTEXTS=o.TASK_CONTEXTS,exports.TASK_STATUSES=o.TASK_STATUSES,exports.TOOL_LABEL=o.TOOL_LABEL,exports.TOOL_NAME=o.TOOL_NAME,exports.TaskAssignmentSchema=o.TaskAssignmentSchema,exports.TaskItemSchema=o.TaskItemSchema,exports.TaskParamsSchema=o.TaskParamsSchema,exports.TaskStore=f.TaskStore,exports.applyTaskMutation=p.applyTaskMutation,exports.buildAssignmentResult=s.buildAssignmentResult,exports.buildTextResult=s.buildTextResult,exports.buildToolResult=s.buildToolResult,exports.countTasks=l.countTasks,exports.createTaskTool=m.createTaskTool,exports.deriveBlocks=e.deriveBlocks,exports.deriveTaskProjection=l.deriveTaskProjection,exports.detectCycle=e.detectCycle,exports.emptyDocument=n.emptyDocument,exports.formatAssignmentResults=s.formatAssignmentResults,exports.formatContent=s.formatContent,exports.formatUpsertFailure=p.formatUpsertFailure,exports.formatUpsertFailureText=s.formatUpsertFailureText,exports.getDelegationTimeoutMs=c.getDelegationTimeoutMs,exports.getMaxTasks=c.getMaxTasks,exports.getMaxWidgetLines=c.getMaxWidgetLines,exports.getStoreTtlMs=c.getStoreTtlMs,exports.groupTasks=l.groupTasks,exports.hasActiveWork=l.hasActiveWork,exports.hasStorePathOverride=d.hasStorePathOverride,exports.isBlocked=e.isBlocked,exports.isCommittingOp=p.isCommittingOp,exports.isDelegationActive=n.isDelegationActive,exports.isTaskListComplete=e.isTaskListComplete,exports.lockPathFor=d.lockPathFor,exports.parsePiTaskConfig=c.parsePiTaskConfig,exports.reconcileOrphanedDelegations=r.reconcileOrphanedDelegations,exports.removeLegacyStoreDirectory=d.removeLegacyStoreDirectory,exports.removeLegacyStoreDirectoryAsync=d.removeLegacyStoreDirectoryAsync,exports.resolveCollapseKey=c.resolveCollapseKey,exports.resolveLegacyStoreDirectory=d.resolveLegacyStoreDirectory,exports.resolveLegacyStoreDirectoryAsync=d.resolveLegacyStoreDirectoryAsync,exports.resolveSessionKey=d.resolveSessionKey,exports.resolveStorePath=d.resolveStorePath,exports.selectOverlayLayout=l.selectOverlayLayout,exports.selectOverlayLayoutFromProjection=l.selectOverlayLayoutFromProjection,exports.shouldShowIds=l.shouldShowIds,exports.singleItemOutcome=p.singleItemOutcome,exports.sweepStoreFiles=d.sweepStoreFiles,exports.sweepStoreFilesAsync=d.sweepStoreFilesAsync,exports.taskActionAcceptsField=o.taskActionAcceptsField,exports.tempPathFor=d.tempPathFor,exports.unresolvedBlockers=e.unresolvedBlockers,exports.visibleTasks=l.visibleTasks;
package/dist/index.d.cts CHANGED
@@ -1,15 +1,16 @@
1
- import { DELETED_STATUS, DelegationResult, DelegationState, DepToken, STORE_SCHEMA_VERSION, Task, TaskAction, TaskDelegation, TaskDetails, TaskDocument, TaskItemMutation, TaskMutationParams, TaskStatus, UpsertItemOutcome, UpsertSummary, emptyDocument, isDelegationActive } from "./store/types.cjs";
2
- import { TaskStore, TaskStoreOptions } from "./store/taskStore.cjs";
3
- import { COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, MAX_WIDGET_LINES_ENV, PiTaskConfig, STORE_TTL_MS_ENV, getDelegationTimeoutMs, getMaxWidgetLines, getStoreTtlMs, parsePiTaskConfig, resolveCollapseKey } from "./config.cjs";
4
- import { AssignOptions, BACKGROUND_WORK_PROVIDER, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationProgress, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, MAX_BRIEF_FILES, NOTIFY_CUSTOM_TYPE } from "./delegation/manager.cjs";
5
- import taskExtension from "./extension.cjs";
6
- import { STORE_PATH_ENV, StoreSweepResult, hasStorePathOverride, lockPathFor, removeLegacyStoreDirectory, resolveLegacyStoreDirectory, resolveSessionKey, resolveStorePath, sweepStoreFiles, tempPathFor } from "./store/paths.cjs";
7
- import { ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ReconcileResult, ReconcileSelf, reconcileOrphanedDelegations } from "./store/reconcile.cjs";
8
- import { ApplyResult, MAX_UPSERT_ITEMS, Op, REF_PATTERN, ReducerAction, applyTaskMutation, formatUpsertFailure, isCommittingOp, singleItemOutcome } from "./store/reducer.cjs";
9
- import { deriveBlocks, detectCycle, isBlocked, isTaskListComplete, unresolvedBlockers } from "./store/taskGraph.cjs";
10
- import { MSG_ALL_COMPLETE_CLEAR, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, ToolResult, buildTextResult, buildToolResult, formatContent, formatUpsertFailureText } from "./tool/responseEnvelope.cjs";
11
- import { COMMAND_NAME, ERR_REQUIRES_INTERACTIVE, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, TaskItemParams, TaskItemSchema, TaskParams, TaskParamsSchema, taskActionAcceptsField } from "./tool/schema.cjs";
12
- import { DEFAULT_PROMPT_GUIDELINES } from "./tool/promptGuidelines.cjs";
13
- import { DEFAULT_PROMPT_SNIPPET, TaskToolDependencies, registerTaskTool } from "./tool/taskTool.cjs";
1
+ import { AssignmentSummary, DELETED_STATUS, DelegationResult, DelegationState, DepToken, STORE_SCHEMA_VERSION, Task, TaskAction, TaskAssignment, TaskDelegation, TaskDetails, TaskDocument, TaskItemMutation, TaskMutationParams, TaskStatus, UpsertItemOutcome, UpsertSummary, emptyDocument, isDelegationActive } from "./models/task.cjs";
2
+ import { TaskStore, TaskStoreCommitListener, TaskStoreOptions } from "./services/taskStore/index.cjs";
3
+ import { COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_TASKS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, MAX_TASKS_ENV, MAX_WIDGET_LINES_ENV, PiTaskConfig, STORE_TTL_MS_ENV, getDelegationTimeoutMs, getMaxTasks, getMaxWidgetLines, getStoreTtlMs, parsePiTaskConfig, resolveCollapseKey } from "./services/config/index.cjs";
4
+ import { MAX_BRIEF_FILES } from "./types/delegation.cjs";
5
+ import { AssignOptions, BACKGROUND_WORK_PROVIDER, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationPlatform, DelegationProgress, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, NOTIFY_CUSTOM_TYPE } from "./services/delegation/index.cjs";
6
+ import { ApplyResult, MAX_UPSERT_ITEMS, Op, REF_PATTERN, ReducerAction, applyTaskMutation, formatUpsertFailure, isCommittingOp, singleItemOutcome } from "./services/reducer/index.cjs";
7
+ import { AssignmentItemResult, MSG_ALL_COMPLETE_CLEAR, MSG_ASSIGN_PARTIAL, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, ToolResult, buildAssignmentResult, buildTextResult, buildToolResult, formatAssignmentResults, formatContent, formatUpsertFailureText } from "./services/taskResult/index.cjs";
8
+ import { COMMAND_NAME } from "./constants/task.cjs";
9
+ import { ERR_REQUIRES_INTERACTIVE, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, TaskAssignmentParams, TaskAssignmentSchema, TaskItemParams, TaskItemSchema, TaskParams, TaskParamsSchema, taskActionAcceptsField } from "./schemas/task.cjs";
10
+ import { DEFAULT_PROMPT_GUIDELINES } from "./constants/promptGuidelines.cjs";
11
+ import { DEFAULT_PROMPT_SNIPPET, TaskToolDependencies, createTaskTool } from "./tools/task.cjs";
12
+ import { STORE_PATH_ENV, StoreSweepResult, hasStorePathOverride, lockPathFor, removeLegacyStoreDirectory, removeLegacyStoreDirectoryAsync, resolveLegacyStoreDirectory, resolveLegacyStoreDirectoryAsync, resolveSessionKey, resolveStorePath, sweepStoreFiles, sweepStoreFilesAsync, tempPathFor } from "./services/paths/index.cjs";
13
+ import { ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ReconcileResult, ReconcileSelf, reconcileOrphanedDelegations } from "./services/reconcile/index.cjs";
14
+ import { deriveBlocks, detectCycle, isBlocked, isTaskListComplete, unresolvedBlockers } from "./models/taskGraph.cjs";
14
15
  import { OverlayLayout, TaskCounts, TaskGroups, TaskProjection, countTasks, deriveTaskProjection, groupTasks, hasActiveWork, selectOverlayLayout, selectOverlayLayoutFromProjection, shouldShowIds, visibleTasks } from "./tui/selectors.cjs";
15
- export { ApplyResult, AssignOptions, BACKGROUND_WORK_PROVIDER, COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, COMMAND_NAME, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_PROMPT_GUIDELINES, DEFAULT_PROMPT_SNIPPET, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, DELETED_STATUS, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationProgress, DelegationResult, DelegationState, DepToken, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ERR_REQUIRES_INTERACTIVE, MAX_BRIEF_FILES, MAX_UPSERT_ITEMS, MAX_WIDGET_LINES_ENV, MSG_ALL_COMPLETE_CLEAR, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, NOTIFY_CUSTOM_TYPE, Op, OverlayLayout, PiTaskConfig, REF_PATTERN, ReconcileResult, ReconcileSelf, ReducerAction, STORE_PATH_ENV, STORE_SCHEMA_VERSION, STORE_TTL_MS_ENV, StoreSweepResult, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, Task, TaskAction, TaskCounts, TaskDelegation, TaskDetails, TaskDocument, TaskGroups, TaskItemMutation, TaskItemParams, TaskItemSchema, TaskMutationParams, TaskParams, TaskParamsSchema, TaskProjection, TaskStatus, TaskStore, TaskStoreOptions, TaskToolDependencies, ToolResult, UpsertItemOutcome, UpsertSummary, applyTaskMutation, buildTextResult, buildToolResult, countTasks, deriveBlocks, deriveTaskProjection, detectCycle, emptyDocument, formatContent, formatUpsertFailure, formatUpsertFailureText, getDelegationTimeoutMs, getMaxWidgetLines, getStoreTtlMs, groupTasks, hasActiveWork, hasStorePathOverride, isBlocked, isCommittingOp, isDelegationActive, isTaskListComplete, lockPathFor, parsePiTaskConfig, reconcileOrphanedDelegations, registerTaskTool, removeLegacyStoreDirectory, resolveCollapseKey, resolveLegacyStoreDirectory, resolveSessionKey, resolveStorePath, selectOverlayLayout, selectOverlayLayoutFromProjection, shouldShowIds, singleItemOutcome, sweepStoreFiles, taskActionAcceptsField, taskExtension, tempPathFor, unresolvedBlockers, visibleTasks };
16
+ export { ApplyResult, AssignOptions, AssignmentItemResult, AssignmentSummary, BACKGROUND_WORK_PROVIDER, COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, COMMAND_NAME, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_TASKS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_PROMPT_GUIDELINES, DEFAULT_PROMPT_SNIPPET, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, DELETED_STATUS, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationPlatform, DelegationProgress, DelegationResult, DelegationState, DepToken, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ERR_REQUIRES_INTERACTIVE, MAX_BRIEF_FILES, MAX_TASKS_ENV, MAX_UPSERT_ITEMS, MAX_WIDGET_LINES_ENV, MSG_ALL_COMPLETE_CLEAR, MSG_ASSIGN_PARTIAL, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, NOTIFY_CUSTOM_TYPE, Op, OverlayLayout, PiTaskConfig, REF_PATTERN, ReconcileResult, ReconcileSelf, ReducerAction, STORE_PATH_ENV, STORE_SCHEMA_VERSION, STORE_TTL_MS_ENV, StoreSweepResult, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, Task, TaskAction, TaskAssignment, TaskAssignmentParams, TaskAssignmentSchema, TaskCounts, TaskDelegation, TaskDetails, TaskDocument, TaskGroups, TaskItemMutation, TaskItemParams, TaskItemSchema, TaskMutationParams, TaskParams, TaskParamsSchema, TaskProjection, TaskStatus, TaskStore, TaskStoreCommitListener, TaskStoreOptions, TaskToolDependencies, ToolResult, UpsertItemOutcome, UpsertSummary, applyTaskMutation, buildAssignmentResult, buildTextResult, buildToolResult, countTasks, createTaskTool, deriveBlocks, deriveTaskProjection, detectCycle, emptyDocument, formatAssignmentResults, formatContent, formatUpsertFailure, formatUpsertFailureText, getDelegationTimeoutMs, getMaxTasks, getMaxWidgetLines, getStoreTtlMs, groupTasks, hasActiveWork, hasStorePathOverride, isBlocked, isCommittingOp, isDelegationActive, isTaskListComplete, lockPathFor, parsePiTaskConfig, reconcileOrphanedDelegations, removeLegacyStoreDirectory, removeLegacyStoreDirectoryAsync, resolveCollapseKey, resolveLegacyStoreDirectory, resolveLegacyStoreDirectoryAsync, resolveSessionKey, resolveStorePath, selectOverlayLayout, selectOverlayLayoutFromProjection, shouldShowIds, singleItemOutcome, sweepStoreFiles, sweepStoreFilesAsync, taskActionAcceptsField, tempPathFor, unresolvedBlockers, visibleTasks };
package/dist/index.d.mts CHANGED
@@ -1,15 +1,16 @@
1
- import { DELETED_STATUS, DelegationResult, DelegationState, DepToken, STORE_SCHEMA_VERSION, Task, TaskAction, TaskDelegation, TaskDetails, TaskDocument, TaskItemMutation, TaskMutationParams, TaskStatus, UpsertItemOutcome, UpsertSummary, emptyDocument, isDelegationActive } from "./store/types.mjs";
2
- import { TaskStore, TaskStoreOptions } from "./store/taskStore.mjs";
3
- import { COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, MAX_WIDGET_LINES_ENV, PiTaskConfig, STORE_TTL_MS_ENV, getDelegationTimeoutMs, getMaxWidgetLines, getStoreTtlMs, parsePiTaskConfig, resolveCollapseKey } from "./config.mjs";
4
- import { AssignOptions, BACKGROUND_WORK_PROVIDER, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationProgress, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, MAX_BRIEF_FILES, NOTIFY_CUSTOM_TYPE } from "./delegation/manager.mjs";
5
- import taskExtension from "./extension.mjs";
6
- import { STORE_PATH_ENV, StoreSweepResult, hasStorePathOverride, lockPathFor, removeLegacyStoreDirectory, resolveLegacyStoreDirectory, resolveSessionKey, resolveStorePath, sweepStoreFiles, tempPathFor } from "./store/paths.mjs";
7
- import { ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ReconcileResult, ReconcileSelf, reconcileOrphanedDelegations } from "./store/reconcile.mjs";
8
- import { ApplyResult, MAX_UPSERT_ITEMS, Op, REF_PATTERN, ReducerAction, applyTaskMutation, formatUpsertFailure, isCommittingOp, singleItemOutcome } from "./store/reducer.mjs";
9
- import { deriveBlocks, detectCycle, isBlocked, isTaskListComplete, unresolvedBlockers } from "./store/taskGraph.mjs";
10
- import { MSG_ALL_COMPLETE_CLEAR, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, ToolResult, buildTextResult, buildToolResult, formatContent, formatUpsertFailureText } from "./tool/responseEnvelope.mjs";
11
- import { COMMAND_NAME, ERR_REQUIRES_INTERACTIVE, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, TaskItemParams, TaskItemSchema, TaskParams, TaskParamsSchema, taskActionAcceptsField } from "./tool/schema.mjs";
12
- import { DEFAULT_PROMPT_GUIDELINES } from "./tool/promptGuidelines.mjs";
13
- import { DEFAULT_PROMPT_SNIPPET, TaskToolDependencies, registerTaskTool } from "./tool/taskTool.mjs";
1
+ import { AssignmentSummary, DELETED_STATUS, DelegationResult, DelegationState, DepToken, STORE_SCHEMA_VERSION, Task, TaskAction, TaskAssignment, TaskDelegation, TaskDetails, TaskDocument, TaskItemMutation, TaskMutationParams, TaskStatus, UpsertItemOutcome, UpsertSummary, emptyDocument, isDelegationActive } from "./models/task.mjs";
2
+ import { TaskStore, TaskStoreCommitListener, TaskStoreOptions } from "./services/taskStore/index.mjs";
3
+ import { COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_TASKS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, MAX_TASKS_ENV, MAX_WIDGET_LINES_ENV, PiTaskConfig, STORE_TTL_MS_ENV, getDelegationTimeoutMs, getMaxTasks, getMaxWidgetLines, getStoreTtlMs, parsePiTaskConfig, resolveCollapseKey } from "./services/config/index.mjs";
4
+ import { MAX_BRIEF_FILES } from "./types/delegation.mjs";
5
+ import { AssignOptions, BACKGROUND_WORK_PROVIDER, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationPlatform, DelegationProgress, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, NOTIFY_CUSTOM_TYPE } from "./services/delegation/index.mjs";
6
+ import { ApplyResult, MAX_UPSERT_ITEMS, Op, REF_PATTERN, ReducerAction, applyTaskMutation, formatUpsertFailure, isCommittingOp, singleItemOutcome } from "./services/reducer/index.mjs";
7
+ import { AssignmentItemResult, MSG_ALL_COMPLETE_CLEAR, MSG_ASSIGN_PARTIAL, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, ToolResult, buildAssignmentResult, buildTextResult, buildToolResult, formatAssignmentResults, formatContent, formatUpsertFailureText } from "./services/taskResult/index.mjs";
8
+ import { COMMAND_NAME } from "./constants/task.mjs";
9
+ import { ERR_REQUIRES_INTERACTIVE, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, TaskAssignmentParams, TaskAssignmentSchema, TaskItemParams, TaskItemSchema, TaskParams, TaskParamsSchema, taskActionAcceptsField } from "./schemas/task.mjs";
10
+ import { DEFAULT_PROMPT_GUIDELINES } from "./constants/promptGuidelines.mjs";
11
+ import { DEFAULT_PROMPT_SNIPPET, TaskToolDependencies, createTaskTool } from "./tools/task.mjs";
12
+ import { STORE_PATH_ENV, StoreSweepResult, hasStorePathOverride, lockPathFor, removeLegacyStoreDirectory, removeLegacyStoreDirectoryAsync, resolveLegacyStoreDirectory, resolveLegacyStoreDirectoryAsync, resolveSessionKey, resolveStorePath, sweepStoreFiles, sweepStoreFilesAsync, tempPathFor } from "./services/paths/index.mjs";
13
+ import { ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ReconcileResult, ReconcileSelf, reconcileOrphanedDelegations } from "./services/reconcile/index.mjs";
14
+ import { deriveBlocks, detectCycle, isBlocked, isTaskListComplete, unresolvedBlockers } from "./models/taskGraph.mjs";
14
15
  import { OverlayLayout, TaskCounts, TaskGroups, TaskProjection, countTasks, deriveTaskProjection, groupTasks, hasActiveWork, selectOverlayLayout, selectOverlayLayoutFromProjection, shouldShowIds, visibleTasks } from "./tui/selectors.mjs";
15
- export { ApplyResult, AssignOptions, BACKGROUND_WORK_PROVIDER, COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, COMMAND_NAME, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_PROMPT_GUIDELINES, DEFAULT_PROMPT_SNIPPET, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, DELETED_STATUS, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationProgress, DelegationResult, DelegationState, DepToken, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ERR_REQUIRES_INTERACTIVE, MAX_BRIEF_FILES, MAX_UPSERT_ITEMS, MAX_WIDGET_LINES_ENV, MSG_ALL_COMPLETE_CLEAR, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, NOTIFY_CUSTOM_TYPE, Op, OverlayLayout, PiTaskConfig, REF_PATTERN, ReconcileResult, ReconcileSelf, ReducerAction, STORE_PATH_ENV, STORE_SCHEMA_VERSION, STORE_TTL_MS_ENV, StoreSweepResult, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, Task, TaskAction, TaskCounts, TaskDelegation, TaskDetails, TaskDocument, TaskGroups, TaskItemMutation, TaskItemParams, TaskItemSchema, TaskMutationParams, TaskParams, TaskParamsSchema, TaskProjection, TaskStatus, TaskStore, TaskStoreOptions, TaskToolDependencies, ToolResult, UpsertItemOutcome, UpsertSummary, applyTaskMutation, buildTextResult, buildToolResult, countTasks, deriveBlocks, deriveTaskProjection, detectCycle, emptyDocument, formatContent, formatUpsertFailure, formatUpsertFailureText, getDelegationTimeoutMs, getMaxWidgetLines, getStoreTtlMs, groupTasks, hasActiveWork, hasStorePathOverride, isBlocked, isCommittingOp, isDelegationActive, isTaskListComplete, lockPathFor, parsePiTaskConfig, reconcileOrphanedDelegations, registerTaskTool, removeLegacyStoreDirectory, resolveCollapseKey, resolveLegacyStoreDirectory, resolveSessionKey, resolveStorePath, selectOverlayLayout, selectOverlayLayoutFromProjection, shouldShowIds, singleItemOutcome, sweepStoreFiles, taskActionAcceptsField, taskExtension, tempPathFor, unresolvedBlockers, visibleTasks };
16
+ export { ApplyResult, AssignOptions, AssignmentItemResult, AssignmentSummary, BACKGROUND_WORK_PROVIDER, COLLAPSE_KEY_ENV, COLLAPSE_KEY_OFF, COMMAND_NAME, DEFAULT_COLLAPSE_KEY, DEFAULT_DELEGATION_TIMEOUT_MS, DEFAULT_MAX_TASKS, DEFAULT_MAX_WIDGET_LINES, DEFAULT_PROMPT_GUIDELINES, DEFAULT_PROMPT_SNIPPET, DEFAULT_STORE_TTL_MS, DELEGATION_TIMEOUT_MS_ENV, DELETED_STATUS, DelegationManager, DelegationManagerOptions, DelegationNotifier, DelegationOutcome, DelegationPlatform, DelegationProgress, DelegationResult, DelegationState, DepToken, ERR_CANCEL_UNACKNOWLEDGED, ERR_CHILD_SESSION, ERR_NO_RUNTIME, ERR_ORPHANED_BY_RESTART, ERR_ORPHANED_BY_SESSION, ERR_REQUIRES_INTERACTIVE, MAX_BRIEF_FILES, MAX_TASKS_ENV, MAX_UPSERT_ITEMS, MAX_WIDGET_LINES_ENV, MSG_ALL_COMPLETE_CLEAR, MSG_ASSIGN_PARTIAL, MSG_NO_TASKS, MSG_UPSERT_FIELD_MISPLACED, MSG_UPSERT_NONE_APPLIED, MSG_UPSERT_PARTIAL, NOTIFY_CUSTOM_TYPE, Op, OverlayLayout, PiTaskConfig, REF_PATTERN, ReconcileResult, ReconcileSelf, ReducerAction, STORE_PATH_ENV, STORE_SCHEMA_VERSION, STORE_TTL_MS_ENV, StoreSweepResult, TASK_ACTIONS, TASK_ACTION_FIELDS, TASK_CONTEXTS, TASK_STATUSES, TOOL_LABEL, TOOL_NAME, Task, TaskAction, TaskAssignment, TaskAssignmentParams, TaskAssignmentSchema, TaskCounts, TaskDelegation, TaskDetails, TaskDocument, TaskGroups, TaskItemMutation, TaskItemParams, TaskItemSchema, TaskMutationParams, TaskParams, TaskParamsSchema, TaskProjection, TaskStatus, TaskStore, TaskStoreCommitListener, TaskStoreOptions, TaskToolDependencies, ToolResult, UpsertItemOutcome, UpsertSummary, applyTaskMutation, buildAssignmentResult, buildTextResult, buildToolResult, countTasks, createTaskTool, deriveBlocks, deriveTaskProjection, detectCycle, emptyDocument, formatAssignmentResults, formatContent, formatUpsertFailure, formatUpsertFailureText, getDelegationTimeoutMs, getMaxTasks, getMaxWidgetLines, getStoreTtlMs, groupTasks, hasActiveWork, hasStorePathOverride, isBlocked, isCommittingOp, isDelegationActive, isTaskListComplete, lockPathFor, parsePiTaskConfig, reconcileOrphanedDelegations, removeLegacyStoreDirectory, removeLegacyStoreDirectoryAsync, resolveCollapseKey, resolveLegacyStoreDirectory, resolveLegacyStoreDirectoryAsync, resolveSessionKey, resolveStorePath, selectOverlayLayout, selectOverlayLayoutFromProjection, shouldShowIds, singleItemOutcome, sweepStoreFiles, sweepStoreFilesAsync, taskActionAcceptsField, tempPathFor, unresolvedBlockers, visibleTasks };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{COLLAPSE_KEY_ENV as e,COLLAPSE_KEY_OFF as t,DEFAULT_COLLAPSE_KEY as n,DEFAULT_DELEGATION_TIMEOUT_MS as r,DEFAULT_MAX_WIDGET_LINES as i,DEFAULT_STORE_TTL_MS as a,DELEGATION_TIMEOUT_MS_ENV as o,MAX_WIDGET_LINES_ENV as s,STORE_TTL_MS_ENV as c,getDelegationTimeoutMs as l,getMaxWidgetLines as u,getStoreTtlMs as d,parsePiTaskConfig as f,resolveCollapseKey as p}from"./config.mjs";import{DELETED_STATUS as m,STORE_SCHEMA_VERSION as h,emptyDocument as g,isDelegationActive as _}from"./store/types.mjs";import{ERR_ORPHANED_BY_RESTART as v,ERR_ORPHANED_BY_SESSION as y,reconcileOrphanedDelegations as b}from"./store/reconcile.mjs";import{deriveBlocks as x,detectCycle as S,isBlocked as C,isTaskListComplete as w,unresolvedBlockers as T}from"./store/taskGraph.mjs";import{BACKGROUND_WORK_PROVIDER as E,DelegationManager as D,ERR_CANCEL_UNACKNOWLEDGED as O,ERR_CHILD_SESSION as k,ERR_NO_RUNTIME as A,MAX_BRIEF_FILES as j,NOTIFY_CUSTOM_TYPE as M}from"./delegation/manager.mjs";import{COMMAND_NAME as N,ERR_REQUIRES_INTERACTIVE as P,MSG_NO_TASKS as F,MSG_UPSERT_FIELD_MISPLACED as I,TASK_ACTIONS as L,TASK_ACTION_FIELDS as R,TASK_CONTEXTS as z,TASK_STATUSES as B,TOOL_LABEL as V,TOOL_NAME as H,TaskItemSchema as U,TaskParamsSchema as W,taskActionAcceptsField as G}from"./tool/schema.mjs";import{MAX_UPSERT_ITEMS as K,REF_PATTERN as q,applyTaskMutation as J,formatUpsertFailure as Y,isCommittingOp as X,singleItemOutcome as Z}from"./store/reducer.mjs";import{countTasks as Q,deriveTaskProjection as $,groupTasks as ee,hasActiveWork as te,selectOverlayLayout as ne,selectOverlayLayoutFromProjection as re,shouldShowIds as ie,visibleTasks as ae}from"./tui/selectors.mjs";import{STORE_PATH_ENV as oe,hasStorePathOverride as se,lockPathFor as ce,removeLegacyStoreDirectory as le,resolveLegacyStoreDirectory as ue,resolveSessionKey as de,resolveStorePath as fe,sweepStoreFiles as pe,tempPathFor as me}from"./store/paths.mjs";import{TaskStore as he}from"./store/taskStore.mjs";import{MSG_ALL_COMPLETE_CLEAR as ge,MSG_UPSERT_NONE_APPLIED as _e,MSG_UPSERT_PARTIAL as ve,buildTextResult as ye,buildToolResult as be,formatContent as xe,formatUpsertFailureText as Se}from"./tool/responseEnvelope.mjs";import{DEFAULT_PROMPT_GUIDELINES as Ce}from"./tool/promptGuidelines.mjs";import{DEFAULT_PROMPT_SNIPPET as we,registerTaskTool as Te}from"./tool/taskTool.mjs";import Ee from"./extension.mjs";export{E as BACKGROUND_WORK_PROVIDER,e as COLLAPSE_KEY_ENV,t as COLLAPSE_KEY_OFF,N as COMMAND_NAME,n as DEFAULT_COLLAPSE_KEY,r as DEFAULT_DELEGATION_TIMEOUT_MS,i as DEFAULT_MAX_WIDGET_LINES,Ce as DEFAULT_PROMPT_GUIDELINES,we as DEFAULT_PROMPT_SNIPPET,a as DEFAULT_STORE_TTL_MS,o as DELEGATION_TIMEOUT_MS_ENV,m as DELETED_STATUS,D as DelegationManager,O as ERR_CANCEL_UNACKNOWLEDGED,k as ERR_CHILD_SESSION,A as ERR_NO_RUNTIME,v as ERR_ORPHANED_BY_RESTART,y as ERR_ORPHANED_BY_SESSION,P as ERR_REQUIRES_INTERACTIVE,j as MAX_BRIEF_FILES,K as MAX_UPSERT_ITEMS,s as MAX_WIDGET_LINES_ENV,ge as MSG_ALL_COMPLETE_CLEAR,F as MSG_NO_TASKS,I as MSG_UPSERT_FIELD_MISPLACED,_e as MSG_UPSERT_NONE_APPLIED,ve as MSG_UPSERT_PARTIAL,M as NOTIFY_CUSTOM_TYPE,q as REF_PATTERN,oe as STORE_PATH_ENV,h as STORE_SCHEMA_VERSION,c as STORE_TTL_MS_ENV,L as TASK_ACTIONS,R as TASK_ACTION_FIELDS,z as TASK_CONTEXTS,B as TASK_STATUSES,V as TOOL_LABEL,H as TOOL_NAME,U as TaskItemSchema,W as TaskParamsSchema,he as TaskStore,J as applyTaskMutation,ye as buildTextResult,be as buildToolResult,Q as countTasks,x as deriveBlocks,$ as deriveTaskProjection,S as detectCycle,g as emptyDocument,xe as formatContent,Y as formatUpsertFailure,Se as formatUpsertFailureText,l as getDelegationTimeoutMs,u as getMaxWidgetLines,d as getStoreTtlMs,ee as groupTasks,te as hasActiveWork,se as hasStorePathOverride,C as isBlocked,X as isCommittingOp,_ as isDelegationActive,w as isTaskListComplete,ce as lockPathFor,f as parsePiTaskConfig,b as reconcileOrphanedDelegations,Te as registerTaskTool,le as removeLegacyStoreDirectory,p as resolveCollapseKey,ue as resolveLegacyStoreDirectory,de as resolveSessionKey,fe as resolveStorePath,ne as selectOverlayLayout,re as selectOverlayLayoutFromProjection,ie as shouldShowIds,Z as singleItemOutcome,pe as sweepStoreFiles,G as taskActionAcceptsField,Ee as taskExtension,me as tempPathFor,T as unresolvedBlockers,ae as visibleTasks};
1
+ import{deriveBlocks as e,detectCycle as t,isBlocked as n,isTaskListComplete as r,unresolvedBlockers as i}from"./models/taskGraph.mjs";import{MAX_BRIEF_FILES as a}from"./types/delegation.mjs";import{DELETED_STATUS as o,STORE_SCHEMA_VERSION as s,emptyDocument as c,isDelegationActive as l}from"./models/task.mjs";import{ERR_ORPHANED_BY_RESTART as u,ERR_ORPHANED_BY_SESSION as d,reconcileOrphanedDelegations as f}from"./services/reconcile/index.mjs";import{BACKGROUND_WORK_PROVIDER as p,DelegationManager as m,ERR_CANCEL_UNACKNOWLEDGED as h,ERR_CHILD_SESSION as g,ERR_NO_RUNTIME as _,NOTIFY_CUSTOM_TYPE as v}from"./services/delegation/index.mjs";import{COMMAND_NAME as y}from"./constants/task.mjs";import{ERR_REQUIRES_INTERACTIVE as b,MSG_NO_TASKS as x,MSG_UPSERT_FIELD_MISPLACED as S,TASK_ACTIONS as C,TASK_ACTION_FIELDS as w,TASK_CONTEXTS as T,TASK_STATUSES as E,TOOL_LABEL as D,TOOL_NAME as O,TaskAssignmentSchema as k,TaskItemSchema as A,TaskParamsSchema as j,taskActionAcceptsField as M}from"./schemas/task.mjs";import{MSG_ALL_COMPLETE_CLEAR as N,MSG_ASSIGN_PARTIAL as P,MSG_UPSERT_NONE_APPLIED as F,MSG_UPSERT_PARTIAL as I,buildAssignmentResult as L,buildTextResult as R,buildToolResult as z,formatAssignmentResults as B,formatContent as V,formatUpsertFailureText as H}from"./services/taskResult/index.mjs";import{COLLAPSE_KEY_ENV as U,COLLAPSE_KEY_OFF as W,DEFAULT_COLLAPSE_KEY as G,DEFAULT_DELEGATION_TIMEOUT_MS as K,DEFAULT_MAX_TASKS as q,DEFAULT_MAX_WIDGET_LINES as J,DEFAULT_STORE_TTL_MS as Y,DELEGATION_TIMEOUT_MS_ENV as X,MAX_TASKS_ENV as Z,MAX_WIDGET_LINES_ENV as Q,STORE_TTL_MS_ENV as $,getDelegationTimeoutMs as ee,getMaxTasks as te,getMaxWidgetLines as ne,getStoreTtlMs as re,parsePiTaskConfig as ie,resolveCollapseKey as ae}from"./services/config/index.mjs";import{countTasks as oe,deriveTaskProjection as se,groupTasks as ce,hasActiveWork as le,selectOverlayLayout as ue,selectOverlayLayoutFromProjection as de,shouldShowIds as fe,visibleTasks as pe}from"./tui/selectors.mjs";import{DEFAULT_PROMPT_GUIDELINES as me}from"./constants/promptGuidelines.mjs";import{STORE_PATH_ENV as he,hasStorePathOverride as ge,lockPathFor as _e,removeLegacyStoreDirectory as ve,removeLegacyStoreDirectoryAsync as ye,resolveLegacyStoreDirectory as be,resolveLegacyStoreDirectoryAsync as xe,resolveSessionKey as Se,resolveStorePath as Ce,sweepStoreFiles as we,sweepStoreFilesAsync as Te,tempPathFor as Ee}from"./services/paths/index.mjs";import{TaskStore as De}from"./services/taskStore/index.mjs";import{MAX_UPSERT_ITEMS as Oe,REF_PATTERN as ke,applyTaskMutation as Ae,formatUpsertFailure as je,isCommittingOp as Me,singleItemOutcome as Ne}from"./services/reducer/index.mjs";import{DEFAULT_PROMPT_SNIPPET as Pe,createTaskTool as Fe}from"./tools/task.mjs";export{p as BACKGROUND_WORK_PROVIDER,U as COLLAPSE_KEY_ENV,W as COLLAPSE_KEY_OFF,y as COMMAND_NAME,G as DEFAULT_COLLAPSE_KEY,K as DEFAULT_DELEGATION_TIMEOUT_MS,q as DEFAULT_MAX_TASKS,J as DEFAULT_MAX_WIDGET_LINES,me as DEFAULT_PROMPT_GUIDELINES,Pe as DEFAULT_PROMPT_SNIPPET,Y as DEFAULT_STORE_TTL_MS,X as DELEGATION_TIMEOUT_MS_ENV,o as DELETED_STATUS,m as DelegationManager,h as ERR_CANCEL_UNACKNOWLEDGED,g as ERR_CHILD_SESSION,_ as ERR_NO_RUNTIME,u as ERR_ORPHANED_BY_RESTART,d as ERR_ORPHANED_BY_SESSION,b as ERR_REQUIRES_INTERACTIVE,a as MAX_BRIEF_FILES,Z as MAX_TASKS_ENV,Oe as MAX_UPSERT_ITEMS,Q as MAX_WIDGET_LINES_ENV,N as MSG_ALL_COMPLETE_CLEAR,P as MSG_ASSIGN_PARTIAL,x as MSG_NO_TASKS,S as MSG_UPSERT_FIELD_MISPLACED,F as MSG_UPSERT_NONE_APPLIED,I as MSG_UPSERT_PARTIAL,v as NOTIFY_CUSTOM_TYPE,ke as REF_PATTERN,he as STORE_PATH_ENV,s as STORE_SCHEMA_VERSION,$ as STORE_TTL_MS_ENV,C as TASK_ACTIONS,w as TASK_ACTION_FIELDS,T as TASK_CONTEXTS,E as TASK_STATUSES,D as TOOL_LABEL,O as TOOL_NAME,k as TaskAssignmentSchema,A as TaskItemSchema,j as TaskParamsSchema,De as TaskStore,Ae as applyTaskMutation,L as buildAssignmentResult,R as buildTextResult,z as buildToolResult,oe as countTasks,Fe as createTaskTool,e as deriveBlocks,se as deriveTaskProjection,t as detectCycle,c as emptyDocument,B as formatAssignmentResults,V as formatContent,je as formatUpsertFailure,H as formatUpsertFailureText,ee as getDelegationTimeoutMs,te as getMaxTasks,ne as getMaxWidgetLines,re as getStoreTtlMs,ce as groupTasks,le as hasActiveWork,ge as hasStorePathOverride,n as isBlocked,Me as isCommittingOp,l as isDelegationActive,r as isTaskListComplete,_e as lockPathFor,ie as parsePiTaskConfig,f as reconcileOrphanedDelegations,ve as removeLegacyStoreDirectory,ye as removeLegacyStoreDirectoryAsync,ae as resolveCollapseKey,be as resolveLegacyStoreDirectory,xe as resolveLegacyStoreDirectoryAsync,Se as resolveSessionKey,Ce as resolveStorePath,ue as selectOverlayLayout,de as selectOverlayLayoutFromProjection,fe as shouldShowIds,Ne as singleItemOutcome,we as sweepStoreFiles,Te as sweepStoreFilesAsync,M as taskActionAcceptsField,Ee as tempPathFor,i as unresolvedBlockers,pe as visibleTasks};
@@ -1,2 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@agimon-ai/doompi-telemetry");const t={notificationFailed:`doom_task.notification_failed`,storeReadFailed:`doom_task.store_read_failed`,storeLockTimeout:`doom_task.store_lock_timeout`,storeLockBreakFailed:`doom_task.store_lock_break_failed`,storeWatchFailed:`doom_task.store_watch_failed`,storeListenerFailed:`doom_task.store_listener_failed`,storeSweepFailed:`doom_task.store_sweep_failed`,sessionStartFailed:`doom_task.session_start_failed`,toolFailed:`doom_task.tool_failed`,delegationRequestFailed:`doom_task.delegation_request_failed`,delegationStartFailed:`doom_task.delegation_start_failed`,delegationResponseFailed:`doom_task.delegation_response_failed`,delegationSettleFailed:`doom_task.delegation_settle_failed`,delegationTimedOut:`doom_task.delegation_timed_out`,delegationOrphaned:`doom_task.delegation_orphaned`,delegationAssigned:`doom_task.delegation_assigned`,delegationCompleted:`doom_task.delegation_completed`};function n(n={}){let r=(0,e.createDoomTelemetry)({serviceName:`doom-task`,packageName:`@agimon-ai/doompi-task`,cwd:n.cwd,workspaceRoot:n.workspaceRoot,env:n.env,telemetryFactory:n.telemetryFactory,warn:n.warn,enableLogs:!0,enableTraces:!0});return{recordError:(e,t,n)=>r.recordError(e,t,n),recordWarning:(e,t,n)=>r.recordWarning(e,t,n),recordEvent:(e,t)=>r.recordEvent(e,t),recordNotificationError:(e,n)=>r.recordError(t.notificationFailed,e,{"task.id":n,"task.operation":`completion_notification`}),flush:()=>r.flush(),shutdown:()=>r.shutdown()}}function r(e){return{error:(t,n,r)=>void e.recordError(t,n,r),warn:(t,n,r)=>void e.recordWarning(t,n,r),event:(t,n)=>void e.recordEvent(t,n)}}exports.TASK_EVENT=t,exports.createTaskErrorReporter=n,exports.toFailureReporter=r;
2
- //# sourceMappingURL=logSinkTelemetry.cjs.map
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./types/telemetry.cjs"),t=require("./services/logSinkTelemetry/index.cjs");exports.TASK_EVENT=e.TASK_EVENT,exports.createTaskErrorReporter=t.createTaskErrorReporter,exports.toFailureReporter=t.toFailureReporter;
@@ -1,51 +1,3 @@
1
- import { DoomTelemetryOptions } from "@agimon-ai/doompi-telemetry";
2
- //#region src/logSinkTelemetry.d.ts
3
- declare const TASK_EVENT: {
4
- readonly notificationFailed: "doom_task.notification_failed";
5
- readonly storeReadFailed: "doom_task.store_read_failed";
6
- readonly storeLockTimeout: "doom_task.store_lock_timeout";
7
- readonly storeLockBreakFailed: "doom_task.store_lock_break_failed";
8
- readonly storeWatchFailed: "doom_task.store_watch_failed";
9
- readonly storeListenerFailed: "doom_task.store_listener_failed";
10
- readonly storeSweepFailed: "doom_task.store_sweep_failed";
11
- readonly sessionStartFailed: "doom_task.session_start_failed";
12
- readonly toolFailed: "doom_task.tool_failed";
13
- readonly delegationRequestFailed: "doom_task.delegation_request_failed";
14
- readonly delegationStartFailed: "doom_task.delegation_start_failed";
15
- readonly delegationResponseFailed: "doom_task.delegation_response_failed";
16
- readonly delegationSettleFailed: "doom_task.delegation_settle_failed";
17
- readonly delegationTimedOut: "doom_task.delegation_timed_out";
18
- readonly delegationOrphaned: "doom_task.delegation_orphaned";
19
- readonly delegationAssigned: "doom_task.delegation_assigned";
20
- readonly delegationCompleted: "doom_task.delegation_completed";
21
- };
22
- type TaskEventName = (typeof TASK_EVENT)[keyof typeof TASK_EVENT];
23
- type TaskErrorAttributes = Record<string, string | number | boolean>;
24
- type TaskErrorSink = (event: TaskEventName, error: unknown, attributes?: TaskErrorAttributes) => void;
25
- type TaskEventSink = (event: TaskEventName, attributes?: TaskErrorAttributes) => void;
26
- interface TaskFailureReporter {
27
- error: TaskErrorSink;
28
- warn: TaskErrorSink;
29
- /** Info-level event sink. Required so an unwired reporter fails to compile. */
30
- event: TaskEventSink;
31
- }
32
- interface TaskErrorReporterOptions {
33
- cwd?: string;
34
- workspaceRoot?: string;
35
- env?: NodeJS.ProcessEnv;
36
- telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;
37
- warn?: (message: string) => void;
38
- }
39
- interface TaskErrorReporter {
40
- recordError(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;
41
- recordWarning(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;
42
- recordEvent(event: string, attributes?: TaskErrorAttributes): Promise<void>;
43
- recordNotificationError(error: unknown, taskId: number): Promise<void>;
44
- flush(): Promise<void>;
45
- shutdown(): Promise<void>;
46
- }
47
- declare function createTaskErrorReporter(options?: TaskErrorReporterOptions): TaskErrorReporter;
48
- declare function toFailureReporter(reporter: TaskErrorReporter): TaskFailureReporter;
49
- //#endregion
50
- export { TASK_EVENT, TaskErrorAttributes, TaskErrorReporter, TaskErrorReporterOptions, TaskErrorSink, TaskEventName, TaskEventSink, TaskFailureReporter, createTaskErrorReporter, toFailureReporter };
51
- //# sourceMappingURL=logSinkTelemetry.d.cts.map
1
+ import { TASK_EVENT, TaskErrorAttributes, TaskErrorSink, TaskEventName, TaskEventSink, TaskFailureReporter } from "./types/telemetry.cjs";
2
+ import { TaskErrorReporter, TaskErrorReporterOptions, createTaskErrorReporter, toFailureReporter } from "./services/logSinkTelemetry/index.cjs";
3
+ export { TASK_EVENT, type TaskErrorAttributes, TaskErrorReporter, TaskErrorReporterOptions, type TaskErrorSink, type TaskEventName, type TaskEventSink, type TaskFailureReporter, createTaskErrorReporter, toFailureReporter };
@@ -1,51 +1,3 @@
1
- import { DoomTelemetryOptions } from "@agimon-ai/doompi-telemetry";
2
- //#region src/logSinkTelemetry.d.ts
3
- declare const TASK_EVENT: {
4
- readonly notificationFailed: "doom_task.notification_failed";
5
- readonly storeReadFailed: "doom_task.store_read_failed";
6
- readonly storeLockTimeout: "doom_task.store_lock_timeout";
7
- readonly storeLockBreakFailed: "doom_task.store_lock_break_failed";
8
- readonly storeWatchFailed: "doom_task.store_watch_failed";
9
- readonly storeListenerFailed: "doom_task.store_listener_failed";
10
- readonly storeSweepFailed: "doom_task.store_sweep_failed";
11
- readonly sessionStartFailed: "doom_task.session_start_failed";
12
- readonly toolFailed: "doom_task.tool_failed";
13
- readonly delegationRequestFailed: "doom_task.delegation_request_failed";
14
- readonly delegationStartFailed: "doom_task.delegation_start_failed";
15
- readonly delegationResponseFailed: "doom_task.delegation_response_failed";
16
- readonly delegationSettleFailed: "doom_task.delegation_settle_failed";
17
- readonly delegationTimedOut: "doom_task.delegation_timed_out";
18
- readonly delegationOrphaned: "doom_task.delegation_orphaned";
19
- readonly delegationAssigned: "doom_task.delegation_assigned";
20
- readonly delegationCompleted: "doom_task.delegation_completed";
21
- };
22
- type TaskEventName = (typeof TASK_EVENT)[keyof typeof TASK_EVENT];
23
- type TaskErrorAttributes = Record<string, string | number | boolean>;
24
- type TaskErrorSink = (event: TaskEventName, error: unknown, attributes?: TaskErrorAttributes) => void;
25
- type TaskEventSink = (event: TaskEventName, attributes?: TaskErrorAttributes) => void;
26
- interface TaskFailureReporter {
27
- error: TaskErrorSink;
28
- warn: TaskErrorSink;
29
- /** Info-level event sink. Required so an unwired reporter fails to compile. */
30
- event: TaskEventSink;
31
- }
32
- interface TaskErrorReporterOptions {
33
- cwd?: string;
34
- workspaceRoot?: string;
35
- env?: NodeJS.ProcessEnv;
36
- telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;
37
- warn?: (message: string) => void;
38
- }
39
- interface TaskErrorReporter {
40
- recordError(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;
41
- recordWarning(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;
42
- recordEvent(event: string, attributes?: TaskErrorAttributes): Promise<void>;
43
- recordNotificationError(error: unknown, taskId: number): Promise<void>;
44
- flush(): Promise<void>;
45
- shutdown(): Promise<void>;
46
- }
47
- declare function createTaskErrorReporter(options?: TaskErrorReporterOptions): TaskErrorReporter;
48
- declare function toFailureReporter(reporter: TaskErrorReporter): TaskFailureReporter;
49
- //#endregion
50
- export { TASK_EVENT, TaskErrorAttributes, TaskErrorReporter, TaskErrorReporterOptions, TaskErrorSink, TaskEventName, TaskEventSink, TaskFailureReporter, createTaskErrorReporter, toFailureReporter };
51
- //# sourceMappingURL=logSinkTelemetry.d.mts.map
1
+ import { TASK_EVENT, TaskErrorAttributes, TaskErrorSink, TaskEventName, TaskEventSink, TaskFailureReporter } from "./types/telemetry.mjs";
2
+ import { TaskErrorReporter, TaskErrorReporterOptions, createTaskErrorReporter, toFailureReporter } from "./services/logSinkTelemetry/index.mjs";
3
+ export { TASK_EVENT, type TaskErrorAttributes, TaskErrorReporter, TaskErrorReporterOptions, type TaskErrorSink, type TaskEventName, type TaskEventSink, type TaskFailureReporter, createTaskErrorReporter, toFailureReporter };