@agimon-ai/doompi-task 0.0.1-alpha.9 → 0.0.1-alpha.91

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 (383) hide show
  1. package/README.md +123 -15
  2. package/dist/apiContracts.cjs +54 -0
  3. package/dist/apiContracts.cjs.map +1 -0
  4. package/dist/apiContracts.d.mts +53 -0
  5. package/dist/apiContracts.d.mts.map +1 -0
  6. package/dist/apiContracts.mjs +49 -0
  7. package/dist/apiContracts.mjs.map +1 -0
  8. package/dist/commands.cjs +4 -2
  9. package/dist/commands.d.mts +12 -6
  10. package/dist/commands.d.mts.map +1 -1
  11. package/dist/commands.mjs +2 -2
  12. package/dist/config-BPNE_wEU.cjs +173 -0
  13. package/dist/config-BPNE_wEU.cjs.map +1 -0
  14. package/dist/config-DmsCPDuF.mjs +72 -0
  15. package/dist/config-DmsCPDuF.mjs.map +1 -0
  16. package/dist/config.cjs +19 -2
  17. package/dist/config.d.mts +2 -38
  18. package/dist/config.mjs +2 -2
  19. package/dist/delegation-3hMdTFXF.cjs +661 -0
  20. package/dist/delegation-3hMdTFXF.cjs.map +1 -0
  21. package/dist/delegation-BiOy3_7g.mjs +7 -0
  22. package/dist/delegation-BiOy3_7g.mjs.map +1 -0
  23. package/dist/delegation-CkGbRaOl.mjs +626 -0
  24. package/dist/delegation-CkGbRaOl.mjs.map +1 -0
  25. package/dist/delegation-LDpHP2CC.cjs +12 -0
  26. package/dist/delegation-LDpHP2CC.cjs.map +1 -0
  27. package/dist/delegation-Ot2xltLi.d.mts +6 -0
  28. package/dist/delegation-Ot2xltLi.d.mts.map +1 -0
  29. package/dist/delegationManager.cjs +10 -0
  30. package/dist/delegationManager.d.mts +3 -0
  31. package/dist/delegationManager.mjs +3 -0
  32. package/dist/delegationPlatform-Cfn-Lqew.cjs +95 -0
  33. package/dist/delegationPlatform-Cfn-Lqew.cjs.map +1 -0
  34. package/dist/delegationPlatform-DZ4SZ8a5.mjs +64 -0
  35. package/dist/delegationPlatform-DZ4SZ8a5.mjs.map +1 -0
  36. package/dist/extensions/mcp-ui.mjs +23 -0
  37. package/dist/extensions/mcp-ui.mjs.map +1 -0
  38. package/dist/extensions/mcp.cjs +1876 -0
  39. package/dist/extensions/mcp.cjs.map +1 -0
  40. package/dist/extensions/mcp.d.mts +5 -0
  41. package/dist/extensions/mcp.d.mts.map +1 -0
  42. package/dist/extensions/mcp.mjs +1846 -0
  43. package/dist/extensions/mcp.mjs.map +1 -0
  44. package/dist/extensions/pi.cjs +437 -1
  45. package/dist/extensions/pi.cjs.map +1 -1
  46. package/dist/extensions/pi.d.mts +5 -2
  47. package/dist/extensions/pi.d.mts.map +1 -0
  48. package/dist/extensions/pi.mjs +432 -1
  49. package/dist/extensions/pi.mjs.map +1 -1
  50. package/dist/extensions/server.cjs +380 -0
  51. package/dist/extensions/server.cjs.map +1 -0
  52. package/dist/extensions/server.d.mts +5 -0
  53. package/dist/extensions/server.d.mts.map +1 -0
  54. package/dist/extensions/server.mjs +375 -0
  55. package/dist/extensions/server.mjs.map +1 -0
  56. package/dist/extensions/web.mjs +1013 -0
  57. package/dist/extensions/web.mjs.map +1 -0
  58. package/dist/format.cli-ChQsP1MQ.cjs +393 -0
  59. package/dist/format.cli-ChQsP1MQ.cjs.map +1 -0
  60. package/dist/format.cli-Cnc591eb.mjs +322 -0
  61. package/dist/format.cli-Cnc591eb.mjs.map +1 -0
  62. package/dist/{delegation/manager.d.cts → index-3-3ZJlaH.d.mts} +42 -39
  63. package/dist/index-3-3ZJlaH.d.mts.map +1 -0
  64. package/dist/{store/taskStore.d.cts → index-B7oVjSey.d.mts} +16 -23
  65. package/dist/index-B7oVjSey.d.mts.map +1 -0
  66. package/dist/{store/reconcile.d.cts → index-BNMm9g0K.d.mts} +4 -4
  67. package/dist/index-BNMm9g0K.d.mts.map +1 -0
  68. package/dist/{tool/responseEnvelope.d.cts → index-C3DgOhEm.d.mts} +17 -5
  69. package/dist/index-C3DgOhEm.d.mts.map +1 -0
  70. package/dist/{config.d.cts → index-D4goIk4Z.d.mts} +8 -3
  71. package/dist/index-D4goIk4Z.d.mts.map +1 -0
  72. package/dist/{store/reducer.d.mts → index-DIpc6_uJ.d.mts} +5 -5
  73. package/dist/index-DIpc6_uJ.d.mts.map +1 -0
  74. package/dist/{store/paths.d.cts → index-XY9VPmfm.d.mts} +9 -6
  75. package/dist/index-XY9VPmfm.d.mts.map +1 -0
  76. package/dist/index.cjs +106 -1
  77. package/dist/index.d.mts +16 -15
  78. package/dist/index.mjs +16 -1
  79. package/dist/invariants-DhjEjBPU.cjs +79 -0
  80. package/dist/invariants-DhjEjBPU.cjs.map +1 -0
  81. package/dist/invariants-q_UamF7D.mjs +62 -0
  82. package/dist/invariants-q_UamF7D.mjs.map +1 -0
  83. package/dist/logSinkTelemetry-C5QjZipw.mjs +41 -0
  84. package/dist/logSinkTelemetry-C5QjZipw.mjs.map +1 -0
  85. package/dist/logSinkTelemetry-CqiTuh3a.cjs +52 -0
  86. package/dist/logSinkTelemetry-CqiTuh3a.cjs.map +1 -0
  87. package/dist/logSinkTelemetry.cjs +6 -2
  88. package/dist/logSinkTelemetry.d.mts +7 -35
  89. package/dist/logSinkTelemetry.d.mts.map +1 -1
  90. package/dist/logSinkTelemetry.mjs +3 -2
  91. package/dist/paths-Bg8EEbk1.mjs +218 -0
  92. package/dist/paths-Bg8EEbk1.mjs.map +1 -0
  93. package/dist/paths-BsFVRulr.cjs +320 -0
  94. package/dist/paths-BsFVRulr.cjs.map +1 -0
  95. package/dist/processLiveness-Ccd9wenT.mjs +20 -0
  96. package/dist/processLiveness-Ccd9wenT.mjs.map +1 -0
  97. package/dist/processLiveness-umpNgsPR.cjs +25 -0
  98. package/dist/processLiveness-umpNgsPR.cjs.map +1 -0
  99. package/dist/promptGuidelines-DaxWrqud.d.mts +14 -0
  100. package/dist/promptGuidelines-DaxWrqud.d.mts.map +1 -0
  101. package/dist/promptGuidelines-g4QT8GNM.mjs +26 -0
  102. package/dist/promptGuidelines-g4QT8GNM.mjs.map +1 -0
  103. package/dist/promptGuidelines-j_SZTzlH.cjs +31 -0
  104. package/dist/promptGuidelines-j_SZTzlH.cjs.map +1 -0
  105. package/dist/reconcile-BcD-hTbd.mjs +63 -0
  106. package/dist/reconcile-BcD-hTbd.mjs.map +1 -0
  107. package/dist/reconcile-cRL0NjDr.cjs +80 -0
  108. package/dist/reconcile-cRL0NjDr.cjs.map +1 -0
  109. package/dist/reducer-BEfJFM5L.mjs +345 -0
  110. package/dist/reducer-BEfJFM5L.mjs.map +1 -0
  111. package/dist/reducer-BV0YIZ2o.cjs +380 -0
  112. package/dist/reducer-BV0YIZ2o.cjs.map +1 -0
  113. package/dist/root.cli-swHZqusx.d.mts +56 -0
  114. package/dist/root.cli-swHZqusx.d.mts.map +1 -0
  115. package/dist/selectors-BaS6dObz.mjs +142 -0
  116. package/dist/selectors-BaS6dObz.mjs.map +1 -0
  117. package/dist/{tui/selectors.d.cts → selectors-DPDPPjH3.d.mts} +11 -4
  118. package/dist/selectors-DPDPPjH3.d.mts.map +1 -0
  119. package/dist/selectors-b-69vb4W.cjs +189 -0
  120. package/dist/selectors-b-69vb4W.cjs.map +1 -0
  121. package/dist/storeInvariants.cjs +5 -0
  122. package/dist/storeInvariants.d.mts +23 -0
  123. package/dist/storeInvariants.d.mts.map +1 -0
  124. package/dist/storeInvariants.mjs +2 -0
  125. package/dist/storePaths.cjs +14 -0
  126. package/dist/storePaths.d.mts +2 -0
  127. package/dist/storePaths.mjs +2 -0
  128. package/dist/storeProcessLiveness.cjs +3 -0
  129. package/dist/{store/processLiveness.d.mts → storeProcessLiveness.d.mts} +3 -4
  130. package/dist/storeProcessLiveness.d.mts.map +1 -0
  131. package/dist/storeProcessLiveness.mjs +2 -0
  132. package/dist/storeReconcile.cjs +5 -0
  133. package/dist/storeReconcile.d.mts +2 -0
  134. package/dist/storeReconcile.mjs +2 -0
  135. package/dist/storeReducer.cjs +8 -0
  136. package/dist/storeReducer.d.mts +2 -0
  137. package/dist/storeReducer.mjs +2 -0
  138. package/dist/storeTaskGraph.cjs +7 -0
  139. package/dist/storeTaskGraph.d.mts +2 -0
  140. package/dist/storeTaskGraph.mjs +2 -0
  141. package/dist/storeTaskStore.cjs +3 -0
  142. package/dist/storeTaskStore.d.mts +2 -0
  143. package/dist/storeTaskStore.mjs +2 -0
  144. package/dist/storeTypes.cjs +6 -0
  145. package/dist/storeTypes.d.mts +2 -0
  146. package/dist/storeTypes.mjs +2 -0
  147. package/dist/task-B4aF5J9s.mjs +6 -0
  148. package/dist/task-B4aF5J9s.mjs.map +1 -0
  149. package/dist/task-CXF9VULl.cjs +49 -0
  150. package/dist/task-CXF9VULl.cjs.map +1 -0
  151. package/dist/task-CkFjC3Fo.d.mts +5 -0
  152. package/dist/task-CkFjC3Fo.d.mts.map +1 -0
  153. package/dist/{tool/schema.d.cts → task-DHSvdK6E.d.mts} +34 -18
  154. package/dist/task-DHSvdK6E.d.mts.map +1 -0
  155. package/dist/task-DKHKuems.mjs +116 -0
  156. package/dist/task-DKHKuems.mjs.map +1 -0
  157. package/dist/task-DaagqdPK.cjs +11 -0
  158. package/dist/task-DaagqdPK.cjs.map +1 -0
  159. package/dist/task-Dqy88_rr.cjs +193 -0
  160. package/dist/task-Dqy88_rr.cjs.map +1 -0
  161. package/dist/task-giCbpKzV.mjs +26 -0
  162. package/dist/task-giCbpKzV.mjs.map +1 -0
  163. package/dist/{store/types.d.mts → task-hLh4BOO7.d.mts} +37 -15
  164. package/dist/task-hLh4BOO7.d.mts.map +1 -0
  165. package/dist/task-space.cli-BH4Iy_7m.cjs +372 -0
  166. package/dist/task-space.cli-BH4Iy_7m.cjs.map +1 -0
  167. package/dist/task-space.cli-CMYNjgOW.mjs +355 -0
  168. package/dist/task-space.cli-CMYNjgOW.mjs.map +1 -0
  169. package/dist/task.cli-BM34E7GG.mjs +157 -0
  170. package/dist/task.cli-BM34E7GG.mjs.map +1 -0
  171. package/dist/task.cli-CiTkjUaX.cjs +174 -0
  172. package/dist/task.cli-CiTkjUaX.cjs.map +1 -0
  173. package/dist/taskGraph-BOQvT0-M.mjs +63 -0
  174. package/dist/taskGraph-BOQvT0-M.mjs.map +1 -0
  175. package/dist/taskGraph-BskRslrr.cjs +92 -0
  176. package/dist/taskGraph-BskRslrr.cjs.map +1 -0
  177. package/dist/{store/taskGraph.d.cts → taskGraph-YQXCfXTn.d.mts} +4 -4
  178. package/dist/taskGraph-YQXCfXTn.d.mts.map +1 -0
  179. package/dist/taskOverlay-B5wJHiml.cjs +175 -0
  180. package/dist/taskOverlay-B5wJHiml.cjs.map +1 -0
  181. package/dist/taskOverlay-CljDoTj_.mjs +164 -0
  182. package/dist/taskOverlay-CljDoTj_.mjs.map +1 -0
  183. package/dist/taskResult-D2G7b4w-.cjs +224 -0
  184. package/dist/taskResult-D2G7b4w-.cjs.map +1 -0
  185. package/dist/taskResult-edBAAKSH.mjs +165 -0
  186. package/dist/taskResult-edBAAKSH.mjs.map +1 -0
  187. package/dist/taskStore-CFx12KJk.mjs +213 -0
  188. package/dist/taskStore-CFx12KJk.mjs.map +1 -0
  189. package/dist/taskStore-T1pPy-UJ.cjs +220 -0
  190. package/dist/taskStore-T1pPy-UJ.cjs.map +1 -0
  191. package/dist/tasks.cli-8VvuN9YQ.cjs +40 -0
  192. package/dist/tasks.cli-8VvuN9YQ.cjs.map +1 -0
  193. package/dist/tasks.cli-BZj83YD_.mjs +29 -0
  194. package/dist/tasks.cli-BZj83YD_.mjs.map +1 -0
  195. package/dist/telemetry-DOyZLj8E.d.mts +36 -0
  196. package/dist/telemetry-DOyZLj8E.d.mts.map +1 -0
  197. package/dist/telemetry-I4md7Xzz.cjs +31 -0
  198. package/dist/telemetry-I4md7Xzz.cjs.map +1 -0
  199. package/dist/telemetry-PmX_1Y8a.mjs +26 -0
  200. package/dist/telemetry-PmX_1Y8a.mjs.map +1 -0
  201. package/dist/toolPromptGuidelines.cjs +3 -0
  202. package/dist/toolPromptGuidelines.d.mts +2 -0
  203. package/dist/toolPromptGuidelines.mjs +2 -0
  204. package/dist/toolResponseEnvelope.cjs +12 -0
  205. package/dist/toolResponseEnvelope.d.mts +2 -0
  206. package/dist/toolResponseEnvelope.mjs +2 -0
  207. package/dist/toolSchema.cjs +17 -0
  208. package/dist/toolSchema.d.mts +3 -0
  209. package/dist/toolSchema.mjs +3 -0
  210. package/dist/toolTaskTool.cjs +6 -0
  211. package/dist/toolTaskTool.d.mts +3 -0
  212. package/dist/toolTaskTool.mjs +3 -0
  213. package/dist/tuiFormat.cjs +14 -0
  214. package/dist/tuiFormat.d.mts +61 -0
  215. package/dist/tuiFormat.d.mts.map +1 -0
  216. package/dist/tuiFormat.mjs +2 -0
  217. package/dist/tuiSelectors.cjs +10 -0
  218. package/dist/tuiSelectors.d.mts +2 -0
  219. package/dist/tuiSelectors.mjs +2 -0
  220. package/dist/tuiTaskOverlay.cjs +4 -0
  221. package/dist/{tui/taskOverlay.d.cts → tuiTaskOverlay.d.mts} +9 -8
  222. package/dist/tuiTaskOverlay.d.mts.map +1 -0
  223. package/dist/tuiTaskOverlay.mjs +2 -0
  224. package/dist/tuiTaskSpace.cjs +5 -0
  225. package/dist/{tui/taskSpace.d.cts → tuiTaskSpace.d.mts} +11 -12
  226. package/dist/tuiTaskSpace.d.mts.map +1 -0
  227. package/dist/tuiTaskSpace.mjs +2 -0
  228. package/package.json +175 -109
  229. package/src/types/webTasks.ts +24 -0
  230. package/dist/_virtual/_rolldown/runtime.cjs +0 -1
  231. package/dist/commands.cjs.map +0 -1
  232. package/dist/commands.d.cts +0 -14
  233. package/dist/commands.d.cts.map +0 -1
  234. package/dist/commands.mjs.map +0 -1
  235. package/dist/config.cjs.map +0 -1
  236. package/dist/config.d.cts.map +0 -1
  237. package/dist/config.d.mts.map +0 -1
  238. package/dist/config.mjs.map +0 -1
  239. package/dist/delegation/manager.cjs +0 -6
  240. package/dist/delegation/manager.cjs.map +0 -1
  241. package/dist/delegation/manager.d.cts.map +0 -1
  242. package/dist/delegation/manager.d.mts +0 -189
  243. package/dist/delegation/manager.d.mts.map +0 -1
  244. package/dist/delegation/manager.mjs +0 -6
  245. package/dist/delegation/manager.mjs.map +0 -1
  246. package/dist/extension.cjs +0 -3
  247. package/dist/extension.cjs.map +0 -1
  248. package/dist/extension.d.cts +0 -12
  249. package/dist/extension.d.cts.map +0 -1
  250. package/dist/extension.d.mts +0 -12
  251. package/dist/extension.d.mts.map +0 -1
  252. package/dist/extension.mjs +0 -3
  253. package/dist/extension.mjs.map +0 -1
  254. package/dist/extensions/doom.cjs +0 -2
  255. package/dist/extensions/doom.cjs.map +0 -1
  256. package/dist/extensions/doom.d.cts +0 -6
  257. package/dist/extensions/doom.d.cts.map +0 -1
  258. package/dist/extensions/doom.d.mts +0 -7
  259. package/dist/extensions/doom.d.mts.map +0 -1
  260. package/dist/extensions/doom.mjs +0 -2
  261. package/dist/extensions/doom.mjs.map +0 -1
  262. package/dist/extensions/pi.d.cts +0 -2
  263. package/dist/index.d.cts +0 -15
  264. package/dist/logSinkTelemetry.cjs.map +0 -1
  265. package/dist/logSinkTelemetry.d.cts +0 -51
  266. package/dist/logSinkTelemetry.d.cts.map +0 -1
  267. package/dist/logSinkTelemetry.mjs.map +0 -1
  268. package/dist/store/invariants.cjs +0 -2
  269. package/dist/store/invariants.cjs.map +0 -1
  270. package/dist/store/invariants.d.cts +0 -14
  271. package/dist/store/invariants.d.cts.map +0 -1
  272. package/dist/store/invariants.d.mts +0 -14
  273. package/dist/store/invariants.d.mts.map +0 -1
  274. package/dist/store/invariants.mjs +0 -2
  275. package/dist/store/invariants.mjs.map +0 -1
  276. package/dist/store/paths.cjs +0 -2
  277. package/dist/store/paths.cjs.map +0 -1
  278. package/dist/store/paths.d.cts.map +0 -1
  279. package/dist/store/paths.d.mts +0 -23
  280. package/dist/store/paths.d.mts.map +0 -1
  281. package/dist/store/paths.mjs +0 -2
  282. package/dist/store/paths.mjs.map +0 -1
  283. package/dist/store/processLiveness.cjs +0 -2
  284. package/dist/store/processLiveness.cjs.map +0 -1
  285. package/dist/store/processLiveness.d.cts +0 -12
  286. package/dist/store/processLiveness.d.cts.map +0 -1
  287. package/dist/store/processLiveness.d.mts.map +0 -1
  288. package/dist/store/processLiveness.mjs +0 -2
  289. package/dist/store/processLiveness.mjs.map +0 -1
  290. package/dist/store/reconcile.cjs +0 -2
  291. package/dist/store/reconcile.cjs.map +0 -1
  292. package/dist/store/reconcile.d.cts.map +0 -1
  293. package/dist/store/reconcile.d.mts +0 -34
  294. package/dist/store/reconcile.d.mts.map +0 -1
  295. package/dist/store/reconcile.mjs +0 -2
  296. package/dist/store/reconcile.mjs.map +0 -1
  297. package/dist/store/reducer.cjs +0 -3
  298. package/dist/store/reducer.cjs.map +0 -1
  299. package/dist/store/reducer.d.cts +0 -72
  300. package/dist/store/reducer.d.cts.map +0 -1
  301. package/dist/store/reducer.d.mts.map +0 -1
  302. package/dist/store/reducer.mjs +0 -3
  303. package/dist/store/reducer.mjs.map +0 -1
  304. package/dist/store/taskGraph.cjs +0 -2
  305. package/dist/store/taskGraph.cjs.map +0 -1
  306. package/dist/store/taskGraph.d.cts.map +0 -1
  307. package/dist/store/taskGraph.d.mts +0 -25
  308. package/dist/store/taskGraph.d.mts.map +0 -1
  309. package/dist/store/taskGraph.mjs +0 -2
  310. package/dist/store/taskGraph.mjs.map +0 -1
  311. package/dist/store/taskStore.cjs +0 -2
  312. package/dist/store/taskStore.cjs.map +0 -1
  313. package/dist/store/taskStore.d.cts.map +0 -1
  314. package/dist/store/taskStore.d.mts +0 -77
  315. package/dist/store/taskStore.d.mts.map +0 -1
  316. package/dist/store/taskStore.mjs +0 -2
  317. package/dist/store/taskStore.mjs.map +0 -1
  318. package/dist/store/types.cjs +0 -2
  319. package/dist/store/types.cjs.map +0 -1
  320. package/dist/store/types.d.cts +0 -165
  321. package/dist/store/types.d.cts.map +0 -1
  322. package/dist/store/types.d.mts.map +0 -1
  323. package/dist/store/types.mjs +0 -2
  324. package/dist/store/types.mjs.map +0 -1
  325. package/dist/tool/promptGuidelines.cjs +0 -2
  326. package/dist/tool/promptGuidelines.cjs.map +0 -1
  327. package/dist/tool/promptGuidelines.d.cts +0 -5
  328. package/dist/tool/promptGuidelines.d.cts.map +0 -1
  329. package/dist/tool/promptGuidelines.d.mts +0 -5
  330. package/dist/tool/promptGuidelines.d.mts.map +0 -1
  331. package/dist/tool/promptGuidelines.mjs +0 -2
  332. package/dist/tool/promptGuidelines.mjs.map +0 -1
  333. package/dist/tool/responseEnvelope.cjs +0 -6
  334. package/dist/tool/responseEnvelope.cjs.map +0 -1
  335. package/dist/tool/responseEnvelope.d.cts.map +0 -1
  336. package/dist/tool/responseEnvelope.d.mts +0 -39
  337. package/dist/tool/responseEnvelope.d.mts.map +0 -1
  338. package/dist/tool/responseEnvelope.mjs +0 -6
  339. package/dist/tool/responseEnvelope.mjs.map +0 -1
  340. package/dist/tool/schema.cjs +0 -2
  341. package/dist/tool/schema.cjs.map +0 -1
  342. package/dist/tool/schema.d.cts.map +0 -1
  343. package/dist/tool/schema.d.mts +0 -86
  344. package/dist/tool/schema.d.mts.map +0 -1
  345. package/dist/tool/schema.mjs +0 -2
  346. package/dist/tool/schema.mjs.map +0 -1
  347. package/dist/tool/taskTool.cjs +0 -3
  348. package/dist/tool/taskTool.cjs.map +0 -1
  349. package/dist/tool/taskTool.d.cts +0 -17
  350. package/dist/tool/taskTool.d.cts.map +0 -1
  351. package/dist/tool/taskTool.d.mts +0 -17
  352. package/dist/tool/taskTool.d.mts.map +0 -1
  353. package/dist/tool/taskTool.mjs +0 -3
  354. package/dist/tool/taskTool.mjs.map +0 -1
  355. package/dist/tui/format.cjs +0 -4
  356. package/dist/tui/format.cjs.map +0 -1
  357. package/dist/tui/format.d.cts +0 -62
  358. package/dist/tui/format.d.cts.map +0 -1
  359. package/dist/tui/format.d.mts +0 -62
  360. package/dist/tui/format.d.mts.map +0 -1
  361. package/dist/tui/format.mjs +0 -4
  362. package/dist/tui/format.mjs.map +0 -1
  363. package/dist/tui/selectors.cjs +0 -2
  364. package/dist/tui/selectors.cjs.map +0 -1
  365. package/dist/tui/selectors.d.cts.map +0 -1
  366. package/dist/tui/selectors.d.mts +0 -53
  367. package/dist/tui/selectors.d.mts.map +0 -1
  368. package/dist/tui/selectors.mjs +0 -2
  369. package/dist/tui/selectors.mjs.map +0 -1
  370. package/dist/tui/taskOverlay.cjs +0 -2
  371. package/dist/tui/taskOverlay.cjs.map +0 -1
  372. package/dist/tui/taskOverlay.d.cts.map +0 -1
  373. package/dist/tui/taskOverlay.d.mts +0 -38
  374. package/dist/tui/taskOverlay.d.mts.map +0 -1
  375. package/dist/tui/taskOverlay.mjs +0 -2
  376. package/dist/tui/taskOverlay.mjs.map +0 -1
  377. package/dist/tui/taskSpace.cjs +0 -5
  378. package/dist/tui/taskSpace.cjs.map +0 -1
  379. package/dist/tui/taskSpace.d.cts.map +0 -1
  380. package/dist/tui/taskSpace.d.mts +0 -61
  381. package/dist/tui/taskSpace.d.mts.map +0 -1
  382. package/dist/tui/taskSpace.mjs +0 -5
  383. package/dist/tui/taskSpace.mjs.map +0 -1
@@ -0,0 +1,116 @@
1
+ import "./delegation-BiOy3_7g.mjs";
2
+ import { InlineAgentSchema } from "@agimon-ai/doompi-core/delegation";
3
+ import { Type } from "typebox";
4
+ //#region src/schemas/task.ts
5
+ const TASK_ACTIONS = [
6
+ "upsert",
7
+ "list",
8
+ "get",
9
+ "delete",
10
+ "clear",
11
+ "assign",
12
+ "cancel"
13
+ ];
14
+ const TASK_STATUSES = [
15
+ "pending",
16
+ "in_progress",
17
+ "completed",
18
+ "failed",
19
+ "deleted"
20
+ ];
21
+ const TASK_CONTEXTS = ["fresh", "fork"];
22
+ const TOOL_NAME = "task";
23
+ const TOOL_LABEL = "Task";
24
+ const ERR_REQUIRES_INTERACTIVE = "/tasks requires interactive mode";
25
+ const MSG_NO_TASKS = "No tasks yet. Ask the agent to add some!";
26
+ /**
27
+ * Which top-level fields each action accepts.
28
+ *
29
+ * The params object is flat and shared across every action, so the schema alone
30
+ * cannot express "upsert has no top-level id". That gap matters: a call like
31
+ * `{"action":"upsert","id":3,"tasks":[{"status":"completed"}]}` would otherwise
32
+ * silently create a duplicate task, because the entry itself carries no id.
33
+ */
34
+ const TASK_ACTION_FIELDS = {
35
+ upsert: ["action", "tasks"],
36
+ list: [
37
+ "action",
38
+ "status",
39
+ "includeDeleted"
40
+ ],
41
+ get: ["action", "id"],
42
+ delete: ["action", "id"],
43
+ clear: ["action"],
44
+ assign: ["action", "assignments"],
45
+ cancel: ["action", "id"]
46
+ };
47
+ function taskActionAcceptsField(action, field) {
48
+ return TASK_ACTION_FIELDS[action].includes(field);
49
+ }
50
+ /** Correction hint appended when a per-task field lands at the top level. */
51
+ const MSG_UPSERT_FIELD_MISPLACED = "Per-task fields belong inside each tasks[] entry, not at the top level: {\"action\":\"upsert\",\"tasks\":[{\"id\":3,\"status\":\"completed\"}]}.";
52
+ /**
53
+ * A dependency target: an existing task id, or the `ref` of a task created
54
+ * earlier in the same call.
55
+ */
56
+ const DepTokenSchema = Type.Union([Type.Integer(), Type.String()]);
57
+ /**
58
+ * One entry of an upsert. `additionalProperties: false` is load-bearing: pi
59
+ * validates tool arguments against this schema before `execute` runs, so a
60
+ * stray `{"action":"update"}` inside an entry is rejected at the boundary.
61
+ */
62
+ const TaskItemSchema = Type.Object({
63
+ id: Type.Optional(Type.Integer({ description: "Existing task id to change. Omit to create. An unknown id fails only that entry; it never creates." })),
64
+ ref: Type.Optional(Type.String({ description: "Temporary name for a task created by this entry, so a LATER entry in this array can list it in blockedBy. Must start with a letter; never stored." })),
65
+ subject: Type.Optional(Type.String({ description: "Short imperative subject. Required when the entry has no id; on an entry with an id it renames." })),
66
+ description: Type.Optional(Type.String({ description: "Long-form detail; becomes the brief handed to the subagent on assign." })),
67
+ activeForm: Type.Optional(Type.String({ description: "Present-continuous label shown while in_progress (e.g. 'writing tests')" })),
68
+ status: Type.Optional(Type.String({
69
+ enum: [...TASK_STATUSES],
70
+ description: "New entries default to pending and cannot start deleted; on an entry with an id the transition must be legal."
71
+ })),
72
+ blockedBy: Type.Optional(Type.Array(DepTokenSchema, { description: "Dependencies for a NEW entry: task ids, or refs of tasks created EARLIER in this array. On an entry with an id use addBlockedBy / removeBlockedBy instead." })),
73
+ addBlockedBy: Type.Optional(Type.Array(DepTokenSchema, { description: "Dependencies to add (ids or earlier refs). Additive; do not resend the full array." })),
74
+ removeBlockedBy: Type.Optional(Type.Array(DepTokenSchema, { description: "Dependencies to remove. Additive; do not resend the full array." })),
75
+ owner: Type.Optional(Type.String({ description: "Owner label; assign sets it to the subagent name." })),
76
+ metadata: Type.Optional(Type.Record(Type.String(), Type.Unknown(), { description: "Merged into the task; a null value deletes that key." }))
77
+ }, { additionalProperties: false });
78
+ /** One task-to-agent handoff in a native assignment batch. */
79
+ const TaskAssignmentSchema = Type.Object({
80
+ id: Type.Integer({ description: "Pending, unblocked task id to delegate" }),
81
+ agent: Type.String({ description: "Exact discovered subagent name" }),
82
+ inlineAgent: Type.Optional(InlineAgentSchema),
83
+ instructions: Type.Optional(Type.String({ description: "Extra instructions appended to this delegated brief" })),
84
+ relevantFiles: Type.Optional(Type.Array(Type.String(), { description: `Files already read or located, relative to the working directory; at most 12 are used.` })),
85
+ priorFindings: Type.Optional(Type.String({ description: "Established facts this child should consume rather than re-derive" })),
86
+ model: Type.Optional(Type.String({ description: "Model override for this delegated run" })),
87
+ context: Type.Optional(Type.String({
88
+ enum: [...TASK_CONTEXTS],
89
+ description: "Starting context for this child: 'fresh' or 'fork'"
90
+ }))
91
+ }, { additionalProperties: false });
92
+ /**
93
+ * Tool parameters. Every `description` doubles as LLM-facing prompt copy, so
94
+ * wording changes here change model behaviour.
95
+ */
96
+ const TaskParamsSchema = Type.Object({
97
+ action: Type.String({ enum: [...TASK_ACTIONS] }),
98
+ tasks: Type.Optional(Type.Array(TaskItemSchema, {
99
+ minItems: 1,
100
+ description: "upsert only. An entry with an id changes that task, an entry without an id creates one. Entries apply in array order, so a later entry can depend on an earlier one by ref."
101
+ })),
102
+ assignments: Type.Optional(Type.Array(TaskAssignmentSchema, {
103
+ minItems: 1,
104
+ description: "Required for assign, one entry per task, including when there is only one."
105
+ })),
106
+ id: Type.Optional(Type.Integer({ description: "Task id, for get, delete and cancel. Not accepted by upsert or assign: those carry ids inside tasks[] and assignments[] entries." })),
107
+ status: Type.Optional(Type.String({
108
+ enum: [...TASK_STATUSES],
109
+ description: "list only: return just the tasks in this status. To SET a status, upsert the task by id."
110
+ })),
111
+ includeDeleted: Type.Optional(Type.Boolean({ description: "list only: also return deleted tombstones. Default false." }))
112
+ });
113
+ //#endregion
114
+ export { TASK_ACTION_FIELDS as a, TOOL_LABEL as c, TaskItemSchema as d, TaskParamsSchema as f, TASK_ACTIONS as i, TOOL_NAME as l, MSG_NO_TASKS as n, TASK_CONTEXTS as o, taskActionAcceptsField as p, MSG_UPSERT_FIELD_MISPLACED as r, TASK_STATUSES as s, ERR_REQUIRES_INTERACTIVE as t, TaskAssignmentSchema as u };
115
+
116
+ //# sourceMappingURL=task-DKHKuems.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-DKHKuems.mjs","names":[],"sources":["../src/schemas/task.ts"],"sourcesContent":["export { COMMAND_NAME } from '../constants/task';\nimport { InlineAgentSchema } from '@agimon-ai/doompi-core/delegation';\nimport { type Static, Type } from 'typebox';\n\nimport type { TaskAction } from '../models/task';\nimport { MAX_BRIEF_FILES } from '../types/delegation';\n\nexport const TASK_ACTIONS = ['upsert', 'list', 'get', 'delete', 'clear', 'assign', 'cancel'] as const;\nexport const TASK_STATUSES = ['pending', 'in_progress', 'completed', 'failed', 'deleted'] as const;\nexport const TASK_CONTEXTS = ['fresh', 'fork'] as const;\n\nexport const TOOL_NAME = 'task';\nexport const TOOL_LABEL = 'Task';\n\nexport const ERR_REQUIRES_INTERACTIVE = '/tasks requires interactive mode';\nexport const MSG_NO_TASKS = 'No tasks yet. Ask the agent to add some!';\n\n/**\n * Which top-level fields each action accepts.\n *\n * The params object is flat and shared across every action, so the schema alone\n * cannot express \"upsert has no top-level id\". That gap matters: a call like\n * `{\"action\":\"upsert\",\"id\":3,\"tasks\":[{\"status\":\"completed\"}]}` would otherwise\n * silently create a duplicate task, because the entry itself carries no id.\n */\nexport const TASK_ACTION_FIELDS = {\n upsert: ['action', 'tasks'],\n list: ['action', 'status', 'includeDeleted'],\n get: ['action', 'id'],\n delete: ['action', 'id'],\n clear: ['action'],\n assign: ['action', 'assignments'],\n cancel: ['action', 'id'],\n} as const satisfies Record<TaskAction, readonly string[]>;\n\nexport function taskActionAcceptsField(action: TaskAction, field: string): boolean {\n return (TASK_ACTION_FIELDS[action] as readonly string[]).includes(field);\n}\n\n/** Correction hint appended when a per-task field lands at the top level. */\nexport const MSG_UPSERT_FIELD_MISPLACED =\n 'Per-task fields belong inside each tasks[] entry, not at the top level: {\"action\":\"upsert\",\"tasks\":[{\"id\":3,\"status\":\"completed\"}]}.';\n\n/**\n * A dependency target: an existing task id, or the `ref` of a task created\n * earlier in the same call.\n */\nconst DepTokenSchema = Type.Union([Type.Integer(), Type.String()]);\n\n/**\n * One entry of an upsert. `additionalProperties: false` is load-bearing: pi\n * validates tool arguments against this schema before `execute` runs, so a\n * stray `{\"action\":\"update\"}` inside an entry is rejected at the boundary.\n */\nexport const TaskItemSchema = Type.Object(\n {\n id: Type.Optional(\n Type.Integer({\n description:\n 'Existing task id to change. Omit to create. An unknown id fails only that entry; it never creates.',\n }),\n ),\n ref: Type.Optional(\n Type.String({\n description:\n 'Temporary name for a task created by this entry, so a LATER entry in this array can list it in blockedBy. Must start with a letter; never stored.',\n }),\n ),\n subject: Type.Optional(\n Type.String({\n description: 'Short imperative subject. Required when the entry has no id; on an entry with an id it renames.',\n }),\n ),\n description: Type.Optional(\n Type.String({ description: 'Long-form detail; becomes the brief handed to the subagent on assign.' }),\n ),\n activeForm: Type.Optional(\n Type.String({ description: \"Present-continuous label shown while in_progress (e.g. 'writing tests')\" }),\n ),\n status: Type.Optional(\n Type.String({\n enum: [...TASK_STATUSES],\n description:\n 'New entries default to pending and cannot start deleted; on an entry with an id the transition must be legal.',\n }),\n ),\n blockedBy: Type.Optional(\n Type.Array(DepTokenSchema, {\n description:\n 'Dependencies for a NEW entry: task ids, or refs of tasks created EARLIER in this array. On an entry with an id use addBlockedBy / removeBlockedBy instead.',\n }),\n ),\n addBlockedBy: Type.Optional(\n Type.Array(DepTokenSchema, {\n description: 'Dependencies to add (ids or earlier refs). Additive; do not resend the full array.',\n }),\n ),\n removeBlockedBy: Type.Optional(\n Type.Array(DepTokenSchema, {\n description: 'Dependencies to remove. Additive; do not resend the full array.',\n }),\n ),\n owner: Type.Optional(Type.String({ description: 'Owner label; assign sets it to the subagent name.' })),\n metadata: Type.Optional(\n Type.Record(Type.String(), Type.Unknown(), {\n description: 'Merged into the task; a null value deletes that key.',\n }),\n ),\n },\n { additionalProperties: false },\n);\n\n/** One task-to-agent handoff in a native assignment batch. */\nexport const TaskAssignmentSchema = Type.Object(\n {\n id: Type.Integer({ description: 'Pending, unblocked task id to delegate' }),\n agent: Type.String({ description: 'Exact discovered subagent name' }),\n inlineAgent: Type.Optional(InlineAgentSchema),\n instructions: Type.Optional(Type.String({ description: 'Extra instructions appended to this delegated brief' })),\n relevantFiles: Type.Optional(\n Type.Array(Type.String(), {\n description: `Files already read or located, relative to the working directory; at most ${MAX_BRIEF_FILES} are used.`,\n }),\n ),\n priorFindings: Type.Optional(\n Type.String({ description: 'Established facts this child should consume rather than re-derive' }),\n ),\n model: Type.Optional(Type.String({ description: 'Model override for this delegated run' })),\n context: Type.Optional(\n Type.String({\n enum: [...TASK_CONTEXTS],\n description: \"Starting context for this child: 'fresh' or 'fork'\",\n }),\n ),\n },\n { additionalProperties: false },\n);\n\n/**\n * Tool parameters. Every `description` doubles as LLM-facing prompt copy, so\n * wording changes here change model behaviour.\n */\nexport const TaskParamsSchema = Type.Object({\n action: Type.String({ enum: [...TASK_ACTIONS] }),\n tasks: Type.Optional(\n Type.Array(TaskItemSchema, {\n minItems: 1,\n description:\n 'upsert only. An entry with an id changes that task, an entry without an id creates one. Entries apply in array order, so a later entry can depend on an earlier one by ref.',\n }),\n ),\n assignments: Type.Optional(\n Type.Array(TaskAssignmentSchema, {\n minItems: 1,\n description: 'Required for assign, one entry per task, including when there is only one.',\n }),\n ),\n id: Type.Optional(\n Type.Integer({\n description:\n 'Task id, for get, delete and cancel. Not accepted by upsert or assign: those carry ids inside tasks[] and assignments[] entries.',\n }),\n ),\n status: Type.Optional(\n Type.String({\n enum: [...TASK_STATUSES],\n description: 'list only: return just the tasks in this status. To SET a status, upsert the task by id.',\n }),\n ),\n includeDeleted: Type.Optional(\n Type.Boolean({ description: 'list only: also return deleted tombstones. Default false.' }),\n ),\n});\n\nexport type TaskItemParams = Static<typeof TaskItemSchema>;\nexport type TaskAssignmentParams = Static<typeof TaskAssignmentSchema>;\nexport type TaskParams = Static<typeof TaskParamsSchema>;\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ //#region src/constants/task.ts
2
+ const COMMAND_NAME = "tasks";
3
+ //#endregion
4
+ Object.defineProperty(exports, "COMMAND_NAME", {
5
+ enumerable: true,
6
+ get: function() {
7
+ return COMMAND_NAME;
8
+ }
9
+ });
10
+
11
+ //# sourceMappingURL=task-DaagqdPK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-DaagqdPK.cjs","names":[],"sources":["../src/constants/task.ts"],"sourcesContent":["export const COMMAND_NAME = 'tasks';\n"],"mappings":";AAAA,MAAa,eAAe"}
@@ -0,0 +1,193 @@
1
+ require("./delegation-LDpHP2CC.cjs");
2
+ let _agimon_ai_doompi_core_delegation = require("@agimon-ai/doompi-core/delegation");
3
+ let typebox = require("typebox");
4
+ //#region src/schemas/task.ts
5
+ const TASK_ACTIONS = [
6
+ "upsert",
7
+ "list",
8
+ "get",
9
+ "delete",
10
+ "clear",
11
+ "assign",
12
+ "cancel"
13
+ ];
14
+ const TASK_STATUSES = [
15
+ "pending",
16
+ "in_progress",
17
+ "completed",
18
+ "failed",
19
+ "deleted"
20
+ ];
21
+ const TASK_CONTEXTS = ["fresh", "fork"];
22
+ const TOOL_NAME = "task";
23
+ const TOOL_LABEL = "Task";
24
+ const ERR_REQUIRES_INTERACTIVE = "/tasks requires interactive mode";
25
+ const MSG_NO_TASKS = "No tasks yet. Ask the agent to add some!";
26
+ /**
27
+ * Which top-level fields each action accepts.
28
+ *
29
+ * The params object is flat and shared across every action, so the schema alone
30
+ * cannot express "upsert has no top-level id". That gap matters: a call like
31
+ * `{"action":"upsert","id":3,"tasks":[{"status":"completed"}]}` would otherwise
32
+ * silently create a duplicate task, because the entry itself carries no id.
33
+ */
34
+ const TASK_ACTION_FIELDS = {
35
+ upsert: ["action", "tasks"],
36
+ list: [
37
+ "action",
38
+ "status",
39
+ "includeDeleted"
40
+ ],
41
+ get: ["action", "id"],
42
+ delete: ["action", "id"],
43
+ clear: ["action"],
44
+ assign: ["action", "assignments"],
45
+ cancel: ["action", "id"]
46
+ };
47
+ function taskActionAcceptsField(action, field) {
48
+ return TASK_ACTION_FIELDS[action].includes(field);
49
+ }
50
+ /** Correction hint appended when a per-task field lands at the top level. */
51
+ const MSG_UPSERT_FIELD_MISPLACED = "Per-task fields belong inside each tasks[] entry, not at the top level: {\"action\":\"upsert\",\"tasks\":[{\"id\":3,\"status\":\"completed\"}]}.";
52
+ /**
53
+ * A dependency target: an existing task id, or the `ref` of a task created
54
+ * earlier in the same call.
55
+ */
56
+ const DepTokenSchema = typebox.Type.Union([typebox.Type.Integer(), typebox.Type.String()]);
57
+ /**
58
+ * One entry of an upsert. `additionalProperties: false` is load-bearing: pi
59
+ * validates tool arguments against this schema before `execute` runs, so a
60
+ * stray `{"action":"update"}` inside an entry is rejected at the boundary.
61
+ */
62
+ const TaskItemSchema = typebox.Type.Object({
63
+ id: typebox.Type.Optional(typebox.Type.Integer({ description: "Existing task id to change. Omit to create. An unknown id fails only that entry; it never creates." })),
64
+ ref: typebox.Type.Optional(typebox.Type.String({ description: "Temporary name for a task created by this entry, so a LATER entry in this array can list it in blockedBy. Must start with a letter; never stored." })),
65
+ subject: typebox.Type.Optional(typebox.Type.String({ description: "Short imperative subject. Required when the entry has no id; on an entry with an id it renames." })),
66
+ description: typebox.Type.Optional(typebox.Type.String({ description: "Long-form detail; becomes the brief handed to the subagent on assign." })),
67
+ activeForm: typebox.Type.Optional(typebox.Type.String({ description: "Present-continuous label shown while in_progress (e.g. 'writing tests')" })),
68
+ status: typebox.Type.Optional(typebox.Type.String({
69
+ enum: [...TASK_STATUSES],
70
+ description: "New entries default to pending and cannot start deleted; on an entry with an id the transition must be legal."
71
+ })),
72
+ blockedBy: typebox.Type.Optional(typebox.Type.Array(DepTokenSchema, { description: "Dependencies for a NEW entry: task ids, or refs of tasks created EARLIER in this array. On an entry with an id use addBlockedBy / removeBlockedBy instead." })),
73
+ addBlockedBy: typebox.Type.Optional(typebox.Type.Array(DepTokenSchema, { description: "Dependencies to add (ids or earlier refs). Additive; do not resend the full array." })),
74
+ removeBlockedBy: typebox.Type.Optional(typebox.Type.Array(DepTokenSchema, { description: "Dependencies to remove. Additive; do not resend the full array." })),
75
+ owner: typebox.Type.Optional(typebox.Type.String({ description: "Owner label; assign sets it to the subagent name." })),
76
+ metadata: typebox.Type.Optional(typebox.Type.Record(typebox.Type.String(), typebox.Type.Unknown(), { description: "Merged into the task; a null value deletes that key." }))
77
+ }, { additionalProperties: false });
78
+ /** One task-to-agent handoff in a native assignment batch. */
79
+ const TaskAssignmentSchema = typebox.Type.Object({
80
+ id: typebox.Type.Integer({ description: "Pending, unblocked task id to delegate" }),
81
+ agent: typebox.Type.String({ description: "Exact discovered subagent name" }),
82
+ inlineAgent: typebox.Type.Optional(_agimon_ai_doompi_core_delegation.InlineAgentSchema),
83
+ instructions: typebox.Type.Optional(typebox.Type.String({ description: "Extra instructions appended to this delegated brief" })),
84
+ relevantFiles: typebox.Type.Optional(typebox.Type.Array(typebox.Type.String(), { description: `Files already read or located, relative to the working directory; at most 12 are used.` })),
85
+ priorFindings: typebox.Type.Optional(typebox.Type.String({ description: "Established facts this child should consume rather than re-derive" })),
86
+ model: typebox.Type.Optional(typebox.Type.String({ description: "Model override for this delegated run" })),
87
+ context: typebox.Type.Optional(typebox.Type.String({
88
+ enum: [...TASK_CONTEXTS],
89
+ description: "Starting context for this child: 'fresh' or 'fork'"
90
+ }))
91
+ }, { additionalProperties: false });
92
+ /**
93
+ * Tool parameters. Every `description` doubles as LLM-facing prompt copy, so
94
+ * wording changes here change model behaviour.
95
+ */
96
+ const TaskParamsSchema = typebox.Type.Object({
97
+ action: typebox.Type.String({ enum: [...TASK_ACTIONS] }),
98
+ tasks: typebox.Type.Optional(typebox.Type.Array(TaskItemSchema, {
99
+ minItems: 1,
100
+ description: "upsert only. An entry with an id changes that task, an entry without an id creates one. Entries apply in array order, so a later entry can depend on an earlier one by ref."
101
+ })),
102
+ assignments: typebox.Type.Optional(typebox.Type.Array(TaskAssignmentSchema, {
103
+ minItems: 1,
104
+ description: "Required for assign, one entry per task, including when there is only one."
105
+ })),
106
+ id: typebox.Type.Optional(typebox.Type.Integer({ description: "Task id, for get, delete and cancel. Not accepted by upsert or assign: those carry ids inside tasks[] and assignments[] entries." })),
107
+ status: typebox.Type.Optional(typebox.Type.String({
108
+ enum: [...TASK_STATUSES],
109
+ description: "list only: return just the tasks in this status. To SET a status, upsert the task by id."
110
+ })),
111
+ includeDeleted: typebox.Type.Optional(typebox.Type.Boolean({ description: "list only: also return deleted tombstones. Default false." }))
112
+ });
113
+ //#endregion
114
+ Object.defineProperty(exports, "ERR_REQUIRES_INTERACTIVE", {
115
+ enumerable: true,
116
+ get: function() {
117
+ return ERR_REQUIRES_INTERACTIVE;
118
+ }
119
+ });
120
+ Object.defineProperty(exports, "MSG_NO_TASKS", {
121
+ enumerable: true,
122
+ get: function() {
123
+ return MSG_NO_TASKS;
124
+ }
125
+ });
126
+ Object.defineProperty(exports, "MSG_UPSERT_FIELD_MISPLACED", {
127
+ enumerable: true,
128
+ get: function() {
129
+ return MSG_UPSERT_FIELD_MISPLACED;
130
+ }
131
+ });
132
+ Object.defineProperty(exports, "TASK_ACTIONS", {
133
+ enumerable: true,
134
+ get: function() {
135
+ return TASK_ACTIONS;
136
+ }
137
+ });
138
+ Object.defineProperty(exports, "TASK_ACTION_FIELDS", {
139
+ enumerable: true,
140
+ get: function() {
141
+ return TASK_ACTION_FIELDS;
142
+ }
143
+ });
144
+ Object.defineProperty(exports, "TASK_CONTEXTS", {
145
+ enumerable: true,
146
+ get: function() {
147
+ return TASK_CONTEXTS;
148
+ }
149
+ });
150
+ Object.defineProperty(exports, "TASK_STATUSES", {
151
+ enumerable: true,
152
+ get: function() {
153
+ return TASK_STATUSES;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, "TOOL_LABEL", {
157
+ enumerable: true,
158
+ get: function() {
159
+ return TOOL_LABEL;
160
+ }
161
+ });
162
+ Object.defineProperty(exports, "TOOL_NAME", {
163
+ enumerable: true,
164
+ get: function() {
165
+ return TOOL_NAME;
166
+ }
167
+ });
168
+ Object.defineProperty(exports, "TaskAssignmentSchema", {
169
+ enumerable: true,
170
+ get: function() {
171
+ return TaskAssignmentSchema;
172
+ }
173
+ });
174
+ Object.defineProperty(exports, "TaskItemSchema", {
175
+ enumerable: true,
176
+ get: function() {
177
+ return TaskItemSchema;
178
+ }
179
+ });
180
+ Object.defineProperty(exports, "TaskParamsSchema", {
181
+ enumerable: true,
182
+ get: function() {
183
+ return TaskParamsSchema;
184
+ }
185
+ });
186
+ Object.defineProperty(exports, "taskActionAcceptsField", {
187
+ enumerable: true,
188
+ get: function() {
189
+ return taskActionAcceptsField;
190
+ }
191
+ });
192
+
193
+ //# sourceMappingURL=task-Dqy88_rr.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-Dqy88_rr.cjs","names":["Type","InlineAgentSchema"],"sources":["../src/schemas/task.ts"],"sourcesContent":["export { COMMAND_NAME } from '../constants/task';\nimport { InlineAgentSchema } from '@agimon-ai/doompi-core/delegation';\nimport { type Static, Type } from 'typebox';\n\nimport type { TaskAction } from '../models/task';\nimport { MAX_BRIEF_FILES } from '../types/delegation';\n\nexport const TASK_ACTIONS = ['upsert', 'list', 'get', 'delete', 'clear', 'assign', 'cancel'] as const;\nexport const TASK_STATUSES = ['pending', 'in_progress', 'completed', 'failed', 'deleted'] as const;\nexport const TASK_CONTEXTS = ['fresh', 'fork'] as const;\n\nexport const TOOL_NAME = 'task';\nexport const TOOL_LABEL = 'Task';\n\nexport const ERR_REQUIRES_INTERACTIVE = '/tasks requires interactive mode';\nexport const MSG_NO_TASKS = 'No tasks yet. Ask the agent to add some!';\n\n/**\n * Which top-level fields each action accepts.\n *\n * The params object is flat and shared across every action, so the schema alone\n * cannot express \"upsert has no top-level id\". That gap matters: a call like\n * `{\"action\":\"upsert\",\"id\":3,\"tasks\":[{\"status\":\"completed\"}]}` would otherwise\n * silently create a duplicate task, because the entry itself carries no id.\n */\nexport const TASK_ACTION_FIELDS = {\n upsert: ['action', 'tasks'],\n list: ['action', 'status', 'includeDeleted'],\n get: ['action', 'id'],\n delete: ['action', 'id'],\n clear: ['action'],\n assign: ['action', 'assignments'],\n cancel: ['action', 'id'],\n} as const satisfies Record<TaskAction, readonly string[]>;\n\nexport function taskActionAcceptsField(action: TaskAction, field: string): boolean {\n return (TASK_ACTION_FIELDS[action] as readonly string[]).includes(field);\n}\n\n/** Correction hint appended when a per-task field lands at the top level. */\nexport const MSG_UPSERT_FIELD_MISPLACED =\n 'Per-task fields belong inside each tasks[] entry, not at the top level: {\"action\":\"upsert\",\"tasks\":[{\"id\":3,\"status\":\"completed\"}]}.';\n\n/**\n * A dependency target: an existing task id, or the `ref` of a task created\n * earlier in the same call.\n */\nconst DepTokenSchema = Type.Union([Type.Integer(), Type.String()]);\n\n/**\n * One entry of an upsert. `additionalProperties: false` is load-bearing: pi\n * validates tool arguments against this schema before `execute` runs, so a\n * stray `{\"action\":\"update\"}` inside an entry is rejected at the boundary.\n */\nexport const TaskItemSchema = Type.Object(\n {\n id: Type.Optional(\n Type.Integer({\n description:\n 'Existing task id to change. Omit to create. An unknown id fails only that entry; it never creates.',\n }),\n ),\n ref: Type.Optional(\n Type.String({\n description:\n 'Temporary name for a task created by this entry, so a LATER entry in this array can list it in blockedBy. Must start with a letter; never stored.',\n }),\n ),\n subject: Type.Optional(\n Type.String({\n description: 'Short imperative subject. Required when the entry has no id; on an entry with an id it renames.',\n }),\n ),\n description: Type.Optional(\n Type.String({ description: 'Long-form detail; becomes the brief handed to the subagent on assign.' }),\n ),\n activeForm: Type.Optional(\n Type.String({ description: \"Present-continuous label shown while in_progress (e.g. 'writing tests')\" }),\n ),\n status: Type.Optional(\n Type.String({\n enum: [...TASK_STATUSES],\n description:\n 'New entries default to pending and cannot start deleted; on an entry with an id the transition must be legal.',\n }),\n ),\n blockedBy: Type.Optional(\n Type.Array(DepTokenSchema, {\n description:\n 'Dependencies for a NEW entry: task ids, or refs of tasks created EARLIER in this array. On an entry with an id use addBlockedBy / removeBlockedBy instead.',\n }),\n ),\n addBlockedBy: Type.Optional(\n Type.Array(DepTokenSchema, {\n description: 'Dependencies to add (ids or earlier refs). Additive; do not resend the full array.',\n }),\n ),\n removeBlockedBy: Type.Optional(\n Type.Array(DepTokenSchema, {\n description: 'Dependencies to remove. Additive; do not resend the full array.',\n }),\n ),\n owner: Type.Optional(Type.String({ description: 'Owner label; assign sets it to the subagent name.' })),\n metadata: Type.Optional(\n Type.Record(Type.String(), Type.Unknown(), {\n description: 'Merged into the task; a null value deletes that key.',\n }),\n ),\n },\n { additionalProperties: false },\n);\n\n/** One task-to-agent handoff in a native assignment batch. */\nexport const TaskAssignmentSchema = Type.Object(\n {\n id: Type.Integer({ description: 'Pending, unblocked task id to delegate' }),\n agent: Type.String({ description: 'Exact discovered subagent name' }),\n inlineAgent: Type.Optional(InlineAgentSchema),\n instructions: Type.Optional(Type.String({ description: 'Extra instructions appended to this delegated brief' })),\n relevantFiles: Type.Optional(\n Type.Array(Type.String(), {\n description: `Files already read or located, relative to the working directory; at most ${MAX_BRIEF_FILES} are used.`,\n }),\n ),\n priorFindings: Type.Optional(\n Type.String({ description: 'Established facts this child should consume rather than re-derive' }),\n ),\n model: Type.Optional(Type.String({ description: 'Model override for this delegated run' })),\n context: Type.Optional(\n Type.String({\n enum: [...TASK_CONTEXTS],\n description: \"Starting context for this child: 'fresh' or 'fork'\",\n }),\n ),\n },\n { additionalProperties: false },\n);\n\n/**\n * Tool parameters. Every `description` doubles as LLM-facing prompt copy, so\n * wording changes here change model behaviour.\n */\nexport const TaskParamsSchema = Type.Object({\n action: Type.String({ enum: [...TASK_ACTIONS] }),\n tasks: Type.Optional(\n Type.Array(TaskItemSchema, {\n minItems: 1,\n description:\n 'upsert only. An entry with an id changes that task, an entry without an id creates one. Entries apply in array order, so a later entry can depend on an earlier one by ref.',\n }),\n ),\n assignments: Type.Optional(\n Type.Array(TaskAssignmentSchema, {\n minItems: 1,\n description: 'Required for assign, one entry per task, including when there is only one.',\n }),\n ),\n id: Type.Optional(\n Type.Integer({\n description:\n 'Task id, for get, delete and cancel. Not accepted by upsert or assign: those carry ids inside tasks[] and assignments[] entries.',\n }),\n ),\n status: Type.Optional(\n Type.String({\n enum: [...TASK_STATUSES],\n description: 'list only: return just the tasks in this status. To SET a status, upsert the task by id.',\n }),\n ),\n includeDeleted: Type.Optional(\n Type.Boolean({ description: 'list only: also return deleted tombstones. Default false.' }),\n ),\n});\n\nexport type TaskItemParams = Static<typeof TaskItemSchema>;\nexport type TaskAssignmentParams = Static<typeof TaskAssignmentSchema>;\nexport type TaskParams = Static<typeof TaskParamsSchema>;\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ //#region src/models/task.ts
2
+ const DELETED_STATUS = "deleted";
3
+ const STORE_SCHEMA_VERSION = 1;
4
+ function emptyDocument() {
5
+ return {
6
+ version: 1,
7
+ rev: 0,
8
+ nextId: 1,
9
+ tasks: []
10
+ };
11
+ }
12
+ /**
13
+ * A delegation is "live" while the owning run may still produce a response.
14
+ *
15
+ * Takes the delegation shape rather than `Task` so the cockpit's `WebTask`,
16
+ * which carries the state as a plain string, answers the question the same way
17
+ * the store does.
18
+ */
19
+ function isDelegationActive(task) {
20
+ const state = task.delegation?.state;
21
+ return state === "requested" || state === "running";
22
+ }
23
+ //#endregion
24
+ export { isDelegationActive as i, STORE_SCHEMA_VERSION as n, emptyDocument as r, DELETED_STATUS as t };
25
+
26
+ //# sourceMappingURL=task-giCbpKzV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-giCbpKzV.mjs","names":[],"sources":["../src/models/task.ts"],"sourcesContent":["/**\n * Domain types for the file-backed task store.\n *\n * The on-disk document is the durable source of truth (unlike rpiv-todo, which\n * replayed state from the transcript). Every field here round-trips through\n * JSON, so nothing may hold non-serializable values.\n */\n\nimport type { InlineAgent } from '@agimon-ai/doompi-core/delegation';\n\nexport type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'deleted';\n\nexport const DELETED_STATUS: TaskStatus = 'deleted';\n\nexport type TaskAction = 'upsert' | 'list' | 'get' | 'delete' | 'clear' | 'assign' | 'cancel';\n\nexport type DelegationState = 'requested' | 'running' | 'completed' | 'failed' | 'cancelled';\n\n/** Terminal result of a delegated subagent run, copied off the delegation response. */\nexport interface DelegationResult {\n status: string;\n output?: string;\n outputPath?: string;\n sessionFile?: string;\n error?: string;\n durationMs?: number;\n toolCount?: number;\n}\n\n/**\n * Delegation bookkeeping attached to a task that was handed to a subagent.\n *\n * `pid` is the harness process that owns the run: it is the only way to tell an\n * genuinely-running delegation from one orphaned by a harness crash, since the\n * child dies with its parent but the file survives.\n */\nexport interface TaskDelegation {\n requestId: string;\n agent: string;\n state: DelegationState;\n sessionId?: string;\n pid?: number;\n runId?: string;\n model?: string;\n startedAt?: string;\n endedAt?: string;\n result?: DelegationResult;\n}\n\nexport interface Task {\n id: number;\n subject: string;\n description?: string;\n activeForm?: string;\n status: TaskStatus;\n blockedBy?: number[];\n owner?: string;\n metadata?: Record<string, unknown>;\n createdAt?: string;\n updatedAt?: string;\n delegation?: TaskDelegation;\n}\n\nexport const STORE_SCHEMA_VERSION = 1;\n\n/** The complete on-disk document. `rev` increments on every committed write. */\nexport interface TaskDocument {\n version: number;\n rev: number;\n nextId: number;\n tasks: Task[];\n}\n\nexport function emptyDocument(): TaskDocument {\n return { version: STORE_SCHEMA_VERSION, rev: 0, nextId: 1, tasks: [] };\n}\n\n/**\n * A dependency target inside an upsert item: an existing task id, or the `ref`\n * of a task created earlier in the same call.\n *\n * Refs must start with a letter (see `REF_PATTERN`), so a ref is structurally\n * unconfusable with a stringified id and the discrimination is just `typeof`.\n */\nexport type DepToken = number | string;\n\n/**\n * One entry of an `upsert` call. No `id` creates a task; an `id` updates one.\n *\n * `blockedBy` (absolute set) is create-only and `addBlockedBy`/`removeBlockedBy`\n * (additive merge) are update-only, matching the split the two former actions\n * had. A field used against the wrong kind fails that item rather than being\n * silently ignored.\n */\nexport interface TaskItemMutation {\n id?: number;\n ref?: string;\n subject?: string;\n description?: string;\n activeForm?: string;\n status?: TaskStatus;\n blockedBy?: DepToken[];\n addBlockedBy?: DepToken[];\n removeBlockedBy?: DepToken[];\n owner?: string;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * What one upsert item did. `index` is its position in the request array, so a\n * model reading a partial result can tell which entries still need resending.\n *\n * `message` is unprefixed: the `item[N] failed:` framing belongs to the\n * formatter, because the Task Space overlay shows this text on its own.\n */\nexport type UpsertItemOutcome =\n | {\n index: number;\n kind: 'created';\n id: number;\n subject: string;\n status: TaskStatus;\n ref?: string;\n blockedBy?: number[];\n }\n | { index: number; kind: 'updated'; id: number; fromStatus: TaskStatus; toStatus: TaskStatus }\n | { index: number; kind: 'unchanged'; id: number; status: TaskStatus }\n | { index: number; kind: 'failed'; message: string; id?: number; ref?: string };\n\n/** Which tasks an upsert touched, so renderResult names them instead of guessing. */\nexport interface UpsertSummary {\n /** Ids of applied entries, in request order. A failed entry contributes nothing. */\n applied: number[];\n failed: number;\n}\n\n/** One task-to-agent handoff inside a native assignment batch. */\nexport interface TaskAssignment {\n id: number;\n agent: string;\n inlineAgent?: InlineAgent;\n instructions?: string;\n relevantFiles?: string[];\n priorFindings?: string;\n model?: string;\n context?: 'fresh' | 'fork';\n}\n\n/** Which assignment entries started, so renderResult can show one consolidated batch. */\nexport interface AssignmentSummary {\n /** Ids of successful entries, in request order. A failed entry contributes nothing. */\n assigned: number[];\n failed: number;\n}\n\n/**\n * Open-shape input bag the reducer accepts. The index signature lets the\n * runtime pass a TypeBox `Static<typeof TaskParamsSchema>` through without\n * casting each field.\n *\n * Per-task fields live on `tasks[]`, not here: a top-level `subject` or\n * `status` would be ambiguous once one call can carry many tasks.\n */\nexport interface TaskMutationParams {\n [key: string]: unknown;\n tasks?: TaskItemMutation[];\n /** `assign` only: independent task-to-agent handoffs dispatched by one tool call. */\n assignments?: TaskAssignment[];\n /** `list` filter only. To set a status, upsert the task by id. */\n status?: TaskStatus;\n /** `get`, `delete`, and `cancel` only. Assign ids live in `assignments[]`. */\n id?: number;\n includeDeleted?: boolean;\n}\n\n/** Snapshot returned under a tool result's `details` for renderResult. */\nexport interface TaskDetails {\n action: TaskAction;\n params: Record<string, unknown>;\n tasks: Task[];\n nextId: number;\n rev: number;\n error?: string;\n upsert?: UpsertSummary;\n assignment?: AssignmentSummary;\n}\n\n/**\n * A delegation is \"live\" while the owning run may still produce a response.\n *\n * Takes the delegation shape rather than `Task` so the cockpit's `WebTask`,\n * which carries the state as a plain string, answers the question the same way\n * the store does.\n */\nexport function isDelegationActive(task: { delegation?: { state?: string } }): boolean {\n const state = task.delegation?.state;\n return state === 'requested' || state === 'running';\n}\n"],"mappings":";AAYA,MAAa,iBAA6B;AAmD1C,MAAa,uBAAuB;AAUpC,SAAgB,gBAA8B;CAC5C,OAAO;EAAE,SAAA;EAA+B,KAAK;EAAG,QAAQ;EAAG,OAAO,CAAC;CAAE;AACvE;;;;;;;;AAuHA,SAAgB,mBAAmB,MAAoD;CACrF,MAAM,QAAQ,KAAK,YAAY;CAC/B,OAAO,UAAU,eAAe,UAAU;AAC5C"}
@@ -1,5 +1,5 @@
1
- import { InlineAgent } from "@agimon-ai/doompi-extension-contracts/subagent-tool";
2
- //#region src/store/types.d.ts
1
+ import { InlineAgent } from "@agimon-ai/doompi-core/delegation";
2
+ //#region src/models/task.d.ts
3
3
  type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'deleted';
4
4
  declare const DELETED_STATUS: TaskStatus;
5
5
  type TaskAction = 'upsert' | 'list' | 'get' | 'delete' | 'clear' | 'assign' | 'cancel';
@@ -123,6 +123,23 @@ interface UpsertSummary {
123
123
  applied: number[];
124
124
  failed: number;
125
125
  }
126
+ /** One task-to-agent handoff inside a native assignment batch. */
127
+ interface TaskAssignment {
128
+ id: number;
129
+ agent: string;
130
+ inlineAgent?: InlineAgent;
131
+ instructions?: string;
132
+ relevantFiles?: string[];
133
+ priorFindings?: string;
134
+ model?: string;
135
+ context?: 'fresh' | 'fork';
136
+ }
137
+ /** Which assignment entries started, so renderResult can show one consolidated batch. */
138
+ interface AssignmentSummary {
139
+ /** Ids of successful entries, in request order. A failed entry contributes nothing. */
140
+ assigned: number[];
141
+ failed: number;
142
+ }
126
143
  /**
127
144
  * Open-shape input bag the reducer accepts. The index signature lets the
128
145
  * runtime pass a TypeBox `Static<typeof TaskParamsSchema>` through without
@@ -134,19 +151,13 @@ interface UpsertSummary {
134
151
  interface TaskMutationParams {
135
152
  [key: string]: unknown;
136
153
  tasks?: TaskItemMutation[];
154
+ /** `assign` only: independent task-to-agent handoffs dispatched by one tool call. */
155
+ assignments?: TaskAssignment[];
137
156
  /** `list` filter only. To set a status, upsert the task by id. */
138
157
  status?: TaskStatus;
139
- /** `get`, `delete`, `assign` and `cancel` only. */
158
+ /** `get`, `delete`, and `cancel` only. Assign ids live in `assignments[]`. */
140
159
  id?: number;
141
160
  includeDeleted?: boolean;
142
- agent?: string;
143
- inlineAgent?: InlineAgent;
144
- instructions?: string;
145
- /** `assign` only: the context pack the parent hands to the child. */
146
- relevantFiles?: string[];
147
- priorFindings?: string;
148
- model?: string;
149
- context?: 'fresh' | 'fork';
150
161
  }
151
162
  /** Snapshot returned under a tool result's `details` for renderResult. */
152
163
  interface TaskDetails {
@@ -157,9 +168,20 @@ interface TaskDetails {
157
168
  rev: number;
158
169
  error?: string;
159
170
  upsert?: UpsertSummary;
171
+ assignment?: AssignmentSummary;
160
172
  }
161
- /** A delegation is "live" while the owning run may still produce a response. */
162
- declare function isDelegationActive(task: Task): boolean;
173
+ /**
174
+ * A delegation is "live" while the owning run may still produce a response.
175
+ *
176
+ * Takes the delegation shape rather than `Task` so the cockpit's `WebTask`,
177
+ * which carries the state as a plain string, answers the question the same way
178
+ * the store does.
179
+ */
180
+ declare function isDelegationActive(task: {
181
+ delegation?: {
182
+ state?: string;
183
+ };
184
+ }): boolean;
163
185
  //#endregion
164
- export { DELETED_STATUS, DelegationResult, DelegationState, DepToken, STORE_SCHEMA_VERSION, Task, TaskAction, TaskDelegation, TaskDetails, TaskDocument, TaskItemMutation, TaskMutationParams, TaskStatus, UpsertItemOutcome, UpsertSummary, emptyDocument, isDelegationActive };
165
- //# sourceMappingURL=types.d.mts.map
186
+ export { UpsertSummary as _, DepToken as a, TaskAction as c, TaskDetails as d, TaskDocument as f, UpsertItemOutcome as g, TaskStatus as h, DelegationState as i, TaskAssignment as l, TaskMutationParams as m, DELETED_STATUS as n, STORE_SCHEMA_VERSION as o, TaskItemMutation as p, DelegationResult as r, Task as s, AssignmentSummary as t, TaskDelegation as u, emptyDocument as v, isDelegationActive as y };
187
+ //# sourceMappingURL=task-hLh4BOO7.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-hLh4BOO7.d.mts","names":[],"sources":["../src/models/task.ts"],"mappings":";;KAUY;cAEC,gBAAgB;KAEjB;KAEA;;UAGK;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;;;;UAUe;EACf;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;EACA,WAAW;EACX;EACA;EACA,aAAa;;cAGF;;UAGI;EACf;EACA;EACA;EACA,OAAO;;iBAGO,iBAAiB;;;;;;;;KAWrB;;;;;;;;;UAUK;EACf;EACA;EACA;EACA;EACA;EACA,SAAS;EACT,YAAY;EACZ,eAAe;EACf,kBAAkB;EAClB;EACA,WAAW;;;;;;;;;KAUD;EAEN;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;;EAEA;EAAe;EAAiB;EAAY,YAAY;EAAY,UAAU;;EAC9E;EAAe;EAAmB;EAAY,QAAQ;;EACtD;EAAe;EAAgB;EAAiB;EAAa;;;UAGlD;;EAEf;EACA;;;UAIe;EACf;EACA;EACA,cAAc;EACd;EACA;EACA;EACA;EACA;;;UAIe;;EAEf;EACA;;;;;;;;;;UAWe;GACd;EACD,QAAQ;;EAER,cAAc;;EAEd,SAAS;;EAET;EACA;;;UAIe;EACf,QAAQ;EACR,QAAQ;EACR,OAAO;EACP;EACA;EACA;EACA,SAAS;EACT,aAAa;;;;;;;;;iBAUC,mBAAmB;EAAQ;IAAe"}