@agimon-ai/doompi-task 0.0.1-alpha.73 → 0.0.1-alpha.75

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 (420) hide show
  1. package/package.json +6 -6
  2. package/dist/_virtual/_rolldown/runtime.cjs +0 -23
  3. package/dist/api-contracts.cjs +0 -7
  4. package/dist/api-contracts.d.cts +0 -2
  5. package/dist/api-contracts.d.mts +0 -2
  6. package/dist/api-contracts.mjs +0 -2
  7. package/dist/commands.cjs +0 -4
  8. package/dist/commands.d.cts +0 -2
  9. package/dist/commands.d.mts +0 -2
  10. package/dist/commands.mjs +0 -2
  11. package/dist/config.cjs +0 -19
  12. package/dist/config.d.cts +0 -2
  13. package/dist/config.d.mts +0 -2
  14. package/dist/config.mjs +0 -2
  15. package/dist/delegation-manager.cjs +0 -10
  16. package/dist/delegation-manager.d.cts +0 -3
  17. package/dist/delegation-manager.d.mts +0 -3
  18. package/dist/delegation-manager.mjs +0 -3
  19. package/dist/extensions/pi.cjs +0 -50
  20. package/dist/extensions/pi.cjs.map +0 -1
  21. package/dist/extensions/pi.d.cts +0 -5
  22. package/dist/extensions/pi.d.cts.map +0 -1
  23. package/dist/extensions/pi.d.mts +0 -5
  24. package/dist/extensions/pi.d.mts.map +0 -1
  25. package/dist/extensions/pi.mjs +0 -45
  26. package/dist/extensions/pi.mjs.map +0 -1
  27. package/dist/extensions/server.cjs +0 -57
  28. package/dist/extensions/server.cjs.map +0 -1
  29. package/dist/extensions/server.d.cts +0 -5
  30. package/dist/extensions/server.d.cts.map +0 -1
  31. package/dist/extensions/server.d.mts +0 -5
  32. package/dist/extensions/server.d.mts.map +0 -1
  33. package/dist/extensions/server.mjs +0 -52
  34. package/dist/extensions/server.mjs.map +0 -1
  35. package/dist/extensions/web.mjs +0 -1013
  36. package/dist/extensions/web.mjs.map +0 -1
  37. package/dist/index.cjs +0 -106
  38. package/dist/index.d.cts +0 -16
  39. package/dist/index.d.mts +0 -16
  40. package/dist/index.mjs +0 -16
  41. package/dist/logSinkTelemetry.cjs +0 -6
  42. package/dist/logSinkTelemetry.d.cts +0 -3
  43. package/dist/logSinkTelemetry.d.mts +0 -3
  44. package/dist/logSinkTelemetry.mjs +0 -3
  45. package/dist/src/constants/promptGuidelines.cjs +0 -26
  46. package/dist/src/constants/promptGuidelines.cjs.map +0 -1
  47. package/dist/src/constants/promptGuidelines.d.cts +0 -13
  48. package/dist/src/constants/promptGuidelines.d.cts.map +0 -1
  49. package/dist/src/constants/promptGuidelines.d.mts +0 -13
  50. package/dist/src/constants/promptGuidelines.d.mts.map +0 -1
  51. package/dist/src/constants/promptGuidelines.mjs +0 -26
  52. package/dist/src/constants/promptGuidelines.mjs.map +0 -1
  53. package/dist/src/constants/task.cjs +0 -6
  54. package/dist/src/constants/task.cjs.map +0 -1
  55. package/dist/src/constants/task.d.cts +0 -4
  56. package/dist/src/constants/task.d.cts.map +0 -1
  57. package/dist/src/constants/task.d.mts +0 -4
  58. package/dist/src/constants/task.d.mts.map +0 -1
  59. package/dist/src/constants/task.mjs +0 -6
  60. package/dist/src/constants/task.mjs.map +0 -1
  61. package/dist/src/extensions/(backend)/channel/_lib/task-graph.cjs +0 -90
  62. package/dist/src/extensions/(backend)/channel/_lib/task-graph.cjs.map +0 -1
  63. package/dist/src/extensions/(backend)/channel/_lib/task-graph.mjs +0 -89
  64. package/dist/src/extensions/(backend)/channel/_lib/task-graph.mjs.map +0 -1
  65. package/dist/src/extensions/(backend)/channel/task-graph.server.cjs +0 -7
  66. package/dist/src/extensions/(backend)/channel/task-graph.server.cjs.map +0 -1
  67. package/dist/src/extensions/(backend)/channel/task-graph.server.mjs +0 -8
  68. package/dist/src/extensions/(backend)/channel/task-graph.server.mjs.map +0 -1
  69. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.cjs +0 -317
  70. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.cjs.map +0 -1
  71. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.cts +0 -39
  72. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.cts.map +0 -1
  73. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.mts +0 -39
  74. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.mts.map +0 -1
  75. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.mjs +0 -317
  76. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.mjs.map +0 -1
  77. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.cjs +0 -95
  78. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.cjs.map +0 -1
  79. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.mjs +0 -95
  80. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.mjs.map +0 -1
  81. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.cjs +0 -30
  82. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.cjs.map +0 -1
  83. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.cts +0 -20
  84. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.cts.map +0 -1
  85. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.mts +0 -20
  86. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.mts.map +0 -1
  87. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.mjs +0 -29
  88. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.mjs.map +0 -1
  89. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.cjs +0 -19
  90. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.cjs.map +0 -1
  91. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.mjs +0 -19
  92. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.mjs.map +0 -1
  93. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.cjs +0 -8
  94. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.cjs.map +0 -1
  95. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.mjs +0 -9
  96. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.mjs.map +0 -1
  97. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.cjs +0 -7
  98. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.cjs.map +0 -1
  99. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.mjs +0 -8
  100. package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.mjs.map +0 -1
  101. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.cjs +0 -6
  102. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.cjs.map +0 -1
  103. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.mjs +0 -6
  104. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.mjs.map +0 -1
  105. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.cjs +0 -6
  106. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.cjs.map +0 -1
  107. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.mjs +0 -6
  108. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.mjs.map +0 -1
  109. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.cjs +0 -6
  110. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.cjs.map +0 -1
  111. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.mjs +0 -6
  112. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.mjs.map +0 -1
  113. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.cjs +0 -6
  114. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.cjs.map +0 -1
  115. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.mjs +0 -6
  116. package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.mjs.map +0 -1
  117. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.cjs +0 -7
  118. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.cjs.map +0 -1
  119. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.mjs +0 -8
  120. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.mjs.map +0 -1
  121. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs +0 -7
  122. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs.map +0 -1
  123. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs +0 -8
  124. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs.map +0 -1
  125. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.cjs +0 -7
  126. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.cjs.map +0 -1
  127. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.mjs +0 -8
  128. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.mjs.map +0 -1
  129. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.cjs +0 -7
  130. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.cjs.map +0 -1
  131. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.mjs +0 -8
  132. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.mjs.map +0 -1
  133. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.cjs +0 -20
  134. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.cjs.map +0 -1
  135. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.mjs +0 -20
  136. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.mjs.map +0 -1
  137. package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.cjs +0 -7
  138. package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.cjs.map +0 -1
  139. package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.mjs +0 -8
  140. package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.mjs.map +0 -1
  141. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +0 -11
  142. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +0 -1
  143. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +0 -12
  144. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +0 -1
  145. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +0 -7
  146. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +0 -1
  147. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +0 -8
  148. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +0 -1
  149. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.cjs +0 -160
  150. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.cjs.map +0 -1
  151. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.cts +0 -25
  152. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.cts.map +0 -1
  153. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.mts +0 -25
  154. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.mts.map +0 -1
  155. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.mjs +0 -157
  156. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.mjs.map +0 -1
  157. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.cjs +0 -109
  158. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.cjs.map +0 -1
  159. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.mjs +0 -107
  160. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.mjs.map +0 -1
  161. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.cjs +0 -7
  162. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.cjs.map +0 -1
  163. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.mjs +0 -8
  164. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.mjs.map +0 -1
  165. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.cjs +0 -7
  166. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.cjs.map +0 -1
  167. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.mjs +0 -8
  168. package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.mjs.map +0 -1
  169. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.cjs +0 -333
  170. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.cjs.map +0 -1
  171. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.cts +0 -61
  172. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.cts.map +0 -1
  173. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.mts +0 -61
  174. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.mts.map +0 -1
  175. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.mjs +0 -322
  176. package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.mjs.map +0 -1
  177. package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.cjs +0 -9
  178. package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.cjs.map +0 -1
  179. package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.mjs +0 -9
  180. package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.mjs.map +0 -1
  181. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.cjs +0 -149
  182. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.cjs.map +0 -1
  183. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.cts +0 -59
  184. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.cts.map +0 -1
  185. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.mts +0 -59
  186. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.mts.map +0 -1
  187. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.mjs +0 -142
  188. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.mjs.map +0 -1
  189. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.cjs +0 -358
  190. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.cjs.map +0 -1
  191. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.cts +0 -61
  192. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.cts.map +0 -1
  193. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.mts +0 -61
  194. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.mts.map +0 -1
  195. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.mjs +0 -355
  196. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.mjs.map +0 -1
  197. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.cjs +0 -165
  198. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.cjs.map +0 -1
  199. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.cts +0 -39
  200. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.cts.map +0 -1
  201. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.mts +0 -39
  202. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.mts.map +0 -1
  203. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.mjs +0 -164
  204. package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.mjs.map +0 -1
  205. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.cjs +0 -13
  206. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.cjs.map +0 -1
  207. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.mjs +0 -13
  208. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.mjs.map +0 -1
  209. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.cjs +0 -7
  210. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.cjs.map +0 -1
  211. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.mjs +0 -8
  212. package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.mjs.map +0 -1
  213. package/dist/src/models/task.cjs +0 -29
  214. package/dist/src/models/task.cjs.map +0 -1
  215. package/dist/src/models/task.d.cts +0 -186
  216. package/dist/src/models/task.d.cts.map +0 -1
  217. package/dist/src/models/task.d.mts +0 -186
  218. package/dist/src/models/task.d.mts.map +0 -1
  219. package/dist/src/models/task.mjs +0 -26
  220. package/dist/src/models/task.mjs.map +0 -1
  221. package/dist/src/models/taskGraph.cjs +0 -67
  222. package/dist/src/models/taskGraph.cjs.map +0 -1
  223. package/dist/src/models/taskGraph.d.cts +0 -24
  224. package/dist/src/models/taskGraph.d.cts.map +0 -1
  225. package/dist/src/models/taskGraph.d.mts +0 -24
  226. package/dist/src/models/taskGraph.d.mts.map +0 -1
  227. package/dist/src/models/taskGraph.mjs +0 -63
  228. package/dist/src/models/taskGraph.mjs.map +0 -1
  229. package/dist/src/schemas/apiContracts.cjs +0 -51
  230. package/dist/src/schemas/apiContracts.cjs.map +0 -1
  231. package/dist/src/schemas/apiContracts.d.cts +0 -53
  232. package/dist/src/schemas/apiContracts.d.cts.map +0 -1
  233. package/dist/src/schemas/apiContracts.d.mts +0 -53
  234. package/dist/src/schemas/apiContracts.d.mts.map +0 -1
  235. package/dist/src/schemas/apiContracts.mjs +0 -49
  236. package/dist/src/schemas/apiContracts.mjs.map +0 -1
  237. package/dist/src/schemas/task.cjs +0 -130
  238. package/dist/src/schemas/task.cjs.map +0 -1
  239. package/dist/src/schemas/task.d.cts +0 -103
  240. package/dist/src/schemas/task.d.cts.map +0 -1
  241. package/dist/src/schemas/task.d.mts +0 -103
  242. package/dist/src/schemas/task.d.mts.map +0 -1
  243. package/dist/src/schemas/task.mjs +0 -117
  244. package/dist/src/schemas/task.mjs.map +0 -1
  245. package/dist/src/services/config/index.cjs +0 -88
  246. package/dist/src/services/config/index.cjs.map +0 -1
  247. package/dist/src/services/config/index.d.cts +0 -42
  248. package/dist/src/services/config/index.d.cts.map +0 -1
  249. package/dist/src/services/config/index.d.mts +0 -42
  250. package/dist/src/services/config/index.d.mts.map +0 -1
  251. package/dist/src/services/config/index.mjs +0 -72
  252. package/dist/src/services/config/index.mjs.map +0 -1
  253. package/dist/src/services/contextContribution/index.cjs +0 -51
  254. package/dist/src/services/contextContribution/index.cjs.map +0 -1
  255. package/dist/src/services/contextContribution/index.mjs +0 -46
  256. package/dist/src/services/contextContribution/index.mjs.map +0 -1
  257. package/dist/src/services/delegation/index.cjs +0 -629
  258. package/dist/src/services/delegation/index.cjs.map +0 -1
  259. package/dist/src/services/delegation/index.d.cts +0 -192
  260. package/dist/src/services/delegation/index.d.cts.map +0 -1
  261. package/dist/src/services/delegation/index.d.mts +0 -192
  262. package/dist/src/services/delegation/index.d.mts.map +0 -1
  263. package/dist/src/services/delegation/index.mjs +0 -623
  264. package/dist/src/services/delegation/index.mjs.map +0 -1
  265. package/dist/src/services/delegationPlatform/index.cjs +0 -23
  266. package/dist/src/services/delegationPlatform/index.cjs.map +0 -1
  267. package/dist/src/services/delegationPlatform/index.mjs +0 -21
  268. package/dist/src/services/delegationPlatform/index.mjs.map +0 -1
  269. package/dist/src/services/invariants/index.cjs +0 -64
  270. package/dist/src/services/invariants/index.cjs.map +0 -1
  271. package/dist/src/services/invariants/index.d.cts +0 -23
  272. package/dist/src/services/invariants/index.d.cts.map +0 -1
  273. package/dist/src/services/invariants/index.d.mts +0 -23
  274. package/dist/src/services/invariants/index.d.mts.map +0 -1
  275. package/dist/src/services/invariants/index.mjs +0 -62
  276. package/dist/src/services/invariants/index.mjs.map +0 -1
  277. package/dist/src/services/logSinkTelemetry/index.cjs +0 -43
  278. package/dist/src/services/logSinkTelemetry/index.cjs.map +0 -1
  279. package/dist/src/services/logSinkTelemetry/index.d.cts +0 -23
  280. package/dist/src/services/logSinkTelemetry/index.d.cts.map +0 -1
  281. package/dist/src/services/logSinkTelemetry/index.d.mts +0 -23
  282. package/dist/src/services/logSinkTelemetry/index.d.mts.map +0 -1
  283. package/dist/src/services/logSinkTelemetry/index.mjs +0 -41
  284. package/dist/src/services/logSinkTelemetry/index.mjs.map +0 -1
  285. package/dist/src/services/paths/index.cjs +0 -233
  286. package/dist/src/services/paths/index.cjs.map +0 -1
  287. package/dist/src/services/paths/index.d.cts +0 -25
  288. package/dist/src/services/paths/index.d.cts.map +0 -1
  289. package/dist/src/services/paths/index.d.mts +0 -25
  290. package/dist/src/services/paths/index.d.mts.map +0 -1
  291. package/dist/src/services/paths/index.mjs +0 -218
  292. package/dist/src/services/paths/index.mjs.map +0 -1
  293. package/dist/src/services/processLiveness/index.cjs +0 -20
  294. package/dist/src/services/processLiveness/index.cjs.map +0 -1
  295. package/dist/src/services/processLiveness/index.d.cts +0 -11
  296. package/dist/src/services/processLiveness/index.d.cts.map +0 -1
  297. package/dist/src/services/processLiveness/index.d.mts +0 -11
  298. package/dist/src/services/processLiveness/index.d.mts.map +0 -1
  299. package/dist/src/services/processLiveness/index.mjs +0 -20
  300. package/dist/src/services/processLiveness/index.mjs.map +0 -1
  301. package/dist/src/services/reconcile/index.cjs +0 -65
  302. package/dist/src/services/reconcile/index.cjs.map +0 -1
  303. package/dist/src/services/reconcile/index.d.cts +0 -33
  304. package/dist/src/services/reconcile/index.d.cts.map +0 -1
  305. package/dist/src/services/reconcile/index.d.mts +0 -33
  306. package/dist/src/services/reconcile/index.d.mts.map +0 -1
  307. package/dist/src/services/reconcile/index.mjs +0 -63
  308. package/dist/src/services/reconcile/index.mjs.map +0 -1
  309. package/dist/src/services/reducer/index.cjs +0 -350
  310. package/dist/src/services/reducer/index.cjs.map +0 -1
  311. package/dist/src/services/reducer/index.d.cts +0 -71
  312. package/dist/src/services/reducer/index.d.cts.map +0 -1
  313. package/dist/src/services/reducer/index.d.mts +0 -71
  314. package/dist/src/services/reducer/index.d.mts.map +0 -1
  315. package/dist/src/services/reducer/index.mjs +0 -345
  316. package/dist/src/services/reducer/index.mjs.map +0 -1
  317. package/dist/src/services/taskNarration/index.cjs +0 -32
  318. package/dist/src/services/taskNarration/index.cjs.map +0 -1
  319. package/dist/src/services/taskNarration/index.mjs +0 -32
  320. package/dist/src/services/taskNarration/index.mjs.map +0 -1
  321. package/dist/src/services/taskResult/index.cjs +0 -174
  322. package/dist/src/services/taskResult/index.cjs.map +0 -1
  323. package/dist/src/services/taskResult/index.d.cts +0 -50
  324. package/dist/src/services/taskResult/index.d.cts.map +0 -1
  325. package/dist/src/services/taskResult/index.d.mts +0 -50
  326. package/dist/src/services/taskResult/index.d.mts.map +0 -1
  327. package/dist/src/services/taskResult/index.mjs +0 -165
  328. package/dist/src/services/taskResult/index.mjs.map +0 -1
  329. package/dist/src/services/taskStore/index.cjs +0 -216
  330. package/dist/src/services/taskStore/index.cjs.map +0 -1
  331. package/dist/src/services/taskStore/index.d.cts +0 -69
  332. package/dist/src/services/taskStore/index.d.cts.map +0 -1
  333. package/dist/src/services/taskStore/index.d.mts +0 -69
  334. package/dist/src/services/taskStore/index.d.mts.map +0 -1
  335. package/dist/src/services/taskStore/index.mjs +0 -213
  336. package/dist/src/services/taskStore/index.mjs.map +0 -1
  337. package/dist/src/types/delegation.cjs +0 -7
  338. package/dist/src/types/delegation.cjs.map +0 -1
  339. package/dist/src/types/delegation.d.cts +0 -5
  340. package/dist/src/types/delegation.d.cts.map +0 -1
  341. package/dist/src/types/delegation.d.mts +0 -5
  342. package/dist/src/types/delegation.d.mts.map +0 -1
  343. package/dist/src/types/delegation.mjs +0 -7
  344. package/dist/src/types/delegation.mjs.map +0 -1
  345. package/dist/src/types/telemetry.cjs +0 -26
  346. package/dist/src/types/telemetry.cjs.map +0 -1
  347. package/dist/src/types/telemetry.d.cts +0 -35
  348. package/dist/src/types/telemetry.d.cts.map +0 -1
  349. package/dist/src/types/telemetry.d.mts +0 -35
  350. package/dist/src/types/telemetry.d.mts.map +0 -1
  351. package/dist/src/types/telemetry.mjs +0 -26
  352. package/dist/src/types/telemetry.mjs.map +0 -1
  353. package/dist/src/types/webTasks.cjs +0 -7
  354. package/dist/src/types/webTasks.cjs.map +0 -1
  355. package/dist/src/types/webTasks.mjs +0 -7
  356. package/dist/src/types/webTasks.mjs.map +0 -1
  357. package/dist/store-invariants.cjs +0 -5
  358. package/dist/store-invariants.d.cts +0 -2
  359. package/dist/store-invariants.d.mts +0 -2
  360. package/dist/store-invariants.mjs +0 -2
  361. package/dist/store-paths.cjs +0 -14
  362. package/dist/store-paths.d.cts +0 -2
  363. package/dist/store-paths.d.mts +0 -2
  364. package/dist/store-paths.mjs +0 -2
  365. package/dist/store-process-liveness.cjs +0 -3
  366. package/dist/store-process-liveness.d.cts +0 -2
  367. package/dist/store-process-liveness.d.mts +0 -2
  368. package/dist/store-process-liveness.mjs +0 -2
  369. package/dist/store-reconcile.cjs +0 -5
  370. package/dist/store-reconcile.d.cts +0 -2
  371. package/dist/store-reconcile.d.mts +0 -2
  372. package/dist/store-reconcile.mjs +0 -2
  373. package/dist/store-reducer.cjs +0 -8
  374. package/dist/store-reducer.d.cts +0 -2
  375. package/dist/store-reducer.d.mts +0 -2
  376. package/dist/store-reducer.mjs +0 -2
  377. package/dist/store-task-graph.cjs +0 -7
  378. package/dist/store-task-graph.d.cts +0 -2
  379. package/dist/store-task-graph.d.mts +0 -2
  380. package/dist/store-task-graph.mjs +0 -2
  381. package/dist/store-task-store.cjs +0 -3
  382. package/dist/store-task-store.d.cts +0 -2
  383. package/dist/store-task-store.d.mts +0 -2
  384. package/dist/store-task-store.mjs +0 -2
  385. package/dist/store-types.cjs +0 -6
  386. package/dist/store-types.d.cts +0 -2
  387. package/dist/store-types.d.mts +0 -2
  388. package/dist/store-types.mjs +0 -2
  389. package/dist/tool-prompt-guidelines.cjs +0 -3
  390. package/dist/tool-prompt-guidelines.d.cts +0 -2
  391. package/dist/tool-prompt-guidelines.d.mts +0 -2
  392. package/dist/tool-prompt-guidelines.mjs +0 -2
  393. package/dist/tool-response-envelope.cjs +0 -12
  394. package/dist/tool-response-envelope.d.cts +0 -2
  395. package/dist/tool-response-envelope.d.mts +0 -2
  396. package/dist/tool-response-envelope.mjs +0 -2
  397. package/dist/tool-schema.cjs +0 -17
  398. package/dist/tool-schema.d.cts +0 -3
  399. package/dist/tool-schema.d.mts +0 -3
  400. package/dist/tool-schema.mjs +0 -3
  401. package/dist/tool-task-tool.cjs +0 -6
  402. package/dist/tool-task-tool.d.cts +0 -3
  403. package/dist/tool-task-tool.d.mts +0 -3
  404. package/dist/tool-task-tool.mjs +0 -3
  405. package/dist/tui-format.cjs +0 -14
  406. package/dist/tui-format.d.cts +0 -2
  407. package/dist/tui-format.d.mts +0 -2
  408. package/dist/tui-format.mjs +0 -2
  409. package/dist/tui-selectors.cjs +0 -10
  410. package/dist/tui-selectors.d.cts +0 -2
  411. package/dist/tui-selectors.d.mts +0 -2
  412. package/dist/tui-selectors.mjs +0 -2
  413. package/dist/tui-task-overlay.cjs +0 -4
  414. package/dist/tui-task-overlay.d.cts +0 -2
  415. package/dist/tui-task-overlay.d.mts +0 -2
  416. package/dist/tui-task-overlay.mjs +0 -2
  417. package/dist/tui-task-space.cjs +0 -5
  418. package/dist/tui-task-space.d.cts +0 -2
  419. package/dist/tui-task-space.d.mts +0 -2
  420. package/dist/tui-task-space.mjs +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"root.server.cjs","names":["defineRoot","contribution"],"sources":["../../../../../../src/extensions/workspaces/sessions/(backend)/root.server.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\n\nimport contribution from './_lib/root.server';\n\nexport default defineRoot(contribution);\n"],"mappings":";;AAIA,IAAA,uBAAA,kDAAeA,CAAAA,CAAAA,WAAAA,CAAWC,oBAAAA,OAAY"}
@@ -1,8 +0,0 @@
1
- import root from "./_lib/root.server.mjs";
2
- import { defineRoot } from "@agimon-ai/doompi-core/extension-file";
3
- //#region src/extensions/workspaces/sessions/(backend)/root.server.ts
4
- var root_server_default = defineRoot(root);
5
- //#endregion
6
- export { root_server_default as default };
7
-
8
- //# sourceMappingURL=root.server.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"root.server.mjs","names":["contribution"],"sources":["../../../../../../src/extensions/workspaces/sessions/(backend)/root.server.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\n\nimport contribution from './_lib/root.server';\n\nexport default defineRoot(contribution);\n"],"mappings":";;;AAIA,IAAA,sBAAe,WAAWA,IAAY"}
@@ -1,160 +0,0 @@
1
- require("../../../../../../services/config/index.cjs");
2
- const require_telemetry = require("../../../../../../types/telemetry.cjs");
3
- const require_task = require("../../../../../../schemas/task.cjs");
4
- const require_index$1 = require("../../../../../../services/reducer/index.cjs");
5
- const require_promptGuidelines = require("../../../../../../constants/promptGuidelines.cjs");
6
- const require_index$2 = require("../../../../../../services/taskResult/index.cjs");
7
- let _agimon_ai_doompi_core_pi_extension = require("@agimon-ai/doompi-core/pi-extension");
8
- let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
9
- //#region src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.ts
10
- /** @deprecated Task usage policy now lives only in the tool description. */
11
- const DEFAULT_PROMPT_SNIPPET = "Track only complex, multi-step jobs that benefit from persistent progress or delegation; skip simple work";
12
- var task_cli_default = (0, _agimon_ai_doompi_core_extension_file.defineCliTool)((context) => (0, _agimon_ai_doompi_core_pi_extension.definePiTool)(createTaskTool(context.root.toolDependencies)));
13
- const ACTION_ATTRIBUTE = "tool.action";
14
- const TASK_ID_ATTRIBUTE = "task.id";
15
- const REDUCER_ACTIONS = /* @__PURE__ */ new Set([
16
- "upsert",
17
- "list",
18
- "get",
19
- "delete",
20
- "clear"
21
- ]);
22
- var TaskToolExecutionError = class extends Error {};
23
- function actionableTaskError(action, message) {
24
- return new TaskToolExecutionError([
25
- `Task ${action} failed: ${message}`,
26
- "",
27
- "Options:",
28
- "- List the task board and inspect the current ids, states, and blockers.",
29
- "- Correct the arguments or state conflict, then retry once.",
30
- "- Ask the user before cancelling work or changing dependencies to recover."
31
- ].join("\n"));
32
- }
33
- /**
34
- * Reject a field that belongs to a different action.
35
- *
36
- * The params schema is flat and shared across every action, so this is the only
37
- * place `{"action":"upsert","id":3}` can be caught — and it must be, because
38
- * the entry it carries has no id and would silently create a duplicate task.
39
- */
40
- function rejectStrayFields(action, params) {
41
- const stray = Object.keys(params).filter((key) => params[key] !== void 0 && !require_task.taskActionAcceptsField(action, key));
42
- if (stray.length === 0) return;
43
- const hint = action === "upsert" ? ` ${require_task.MSG_UPSERT_FIELD_MISPLACED}` : "";
44
- throw actionableTaskError(action, `${action} does not accept ${stray.join(", ")}.${hint}`);
45
- }
46
- /** assignments[] is the only assign contract, even when it contains one task. */
47
- function resolveAssignments(params) {
48
- const assignments = params.assignments;
49
- if (!assignments || assignments.length === 0) throw actionableTaskError("assign", "assign requires a non-empty assignments[] array");
50
- return assignments;
51
- }
52
- function assignOptions(request, signal) {
53
- return {
54
- agent: request.agent,
55
- inlineAgent: request.inlineAgent,
56
- instructions: request.instructions,
57
- relevantFiles: request.relevantFiles,
58
- priorFindings: request.priorFindings,
59
- model: request.model,
60
- context: request.context,
61
- signal
62
- };
63
- }
64
- async function executeAssignmentBatch(delegation, assignments, signal, report) {
65
- const results = [];
66
- for (const [index, assignment] of assignments.entries()) {
67
- let outcome;
68
- try {
69
- outcome = await delegation.assign(assignment.id, assignOptions(assignment, signal));
70
- } catch (error) {
71
- report?.error(require_telemetry.TASK_EVENT.toolFailed, error, {
72
- [ACTION_ATTRIBUTE]: "assign",
73
- [TASK_ID_ATTRIBUTE]: assignment.id
74
- });
75
- outcome = {
76
- ok: false,
77
- message: error instanceof Error ? error.message : String(error)
78
- };
79
- }
80
- results.push({
81
- index,
82
- id: assignment.id,
83
- agent: assignment.agent,
84
- ...outcome
85
- });
86
- }
87
- return results;
88
- }
89
- /** Run an action through the reducer, persisting only when it produced a change. */
90
- async function executeReducerAction(store, action, params, maxTasks) {
91
- const { document, value } = await store.mutate((current) => {
92
- const result = require_index$1.applyTaskMutation(current, action, params, void 0, maxTasks);
93
- return {
94
- ...require_index$1.isCommittingOp(result.op) ? { document: result.document } : {},
95
- value: result
96
- };
97
- });
98
- if (value.op.kind === "error") throw actionableTaskError(action, value.op.message);
99
- if (value.op.kind === "upsert" && value.op.applied === 0) throw actionableTaskError(action, require_index$2.formatUpsertFailureText(value.op));
100
- return require_index$2.buildToolResult(action, params, document, value.op);
101
- }
102
- function createTaskTool(dependencies, renderers = {}) {
103
- const { store, delegation, maxTasks = 15 } = dependencies;
104
- return {
105
- name: require_task.TOOL_NAME,
106
- label: require_task.TOOL_LABEL,
107
- description: "Shared task list for complex jobs, plus delegation of tracked tasks to background subagents. Use it only when persistent coordination pays off: dependencies, parallel workstreams, or a long-running plan. Do not use it for simple requests, routine edits, straightforward command sequences, or merely because the user listed multiple steps. Actions: upsert (create and change tasks), list, get, delete (tombstone), clear (close the list), assign (delegate through assignments[]), cancel (stop a delegated run). The list is shared across the current session tree, including delegated subagents, while unrelated sessions start empty and stores persist until retention cleanup.",
108
- promptGuidelines: require_promptGuidelines.DEFAULT_PROMPT_GUIDELINES,
109
- parameters: require_task.TaskParamsSchema,
110
- renderShell: "self",
111
- async execute(_toolCallId, params, signal, onUpdate, ctx) {
112
- const action = params.action;
113
- const mutationParams = params;
114
- try {
115
- await dependencies.waitUntilReady?.(ctx, signal);
116
- rejectStrayFields(action, mutationParams);
117
- if (REDUCER_ACTIONS.has(action)) {
118
- const result = await executeReducerAction(store, action, mutationParams, maxTasks);
119
- dependencies.onChange?.();
120
- return result;
121
- }
122
- if (action === "assign") {
123
- const assignments = resolveAssignments(mutationParams);
124
- const first = assignments[0];
125
- const progress = assignments.length === 1 && first ? `Delegating task #${first.id}...` : `Delegating ${assignments.length} tasks...`;
126
- onUpdate?.(require_index$2.buildTextResult(action, mutationParams, store.snapshot, progress));
127
- const results = await executeAssignmentBatch(delegation, assignments, signal, dependencies.report);
128
- dependencies.onChange?.();
129
- const text = require_index$2.formatAssignmentResults(results);
130
- const assigned = results.flatMap((item) => item.ok ? [item.id] : []);
131
- if (assigned.length === 0) throw actionableTaskError(action, text);
132
- return require_index$2.buildAssignmentResult(mutationParams, store.snapshot, text, {
133
- assigned,
134
- failed: results.length - assigned.length
135
- });
136
- }
137
- onUpdate?.(require_index$2.buildTextResult(action, mutationParams, store.snapshot, `Requesting cancellation for task #${mutationParams.id ?? "unknown"}...`));
138
- const outcome = await delegation.cancel(mutationParams.id ?? NaN);
139
- dependencies.onChange?.();
140
- if (!outcome.ok) throw actionableTaskError(action, outcome.message);
141
- return require_index$2.buildTextResult(action, mutationParams, store.snapshot, outcome.message, void 0);
142
- } catch (error) {
143
- dependencies.report?.error(require_telemetry.TASK_EVENT.toolFailed, error, {
144
- [ACTION_ATTRIBUTE]: action,
145
- ...mutationParams.id === void 0 ? {} : { [TASK_ID_ATTRIBUTE]: mutationParams.id }
146
- });
147
- if (error instanceof TaskToolExecutionError) throw error;
148
- throw actionableTaskError(action, error instanceof Error ? error.message : String(error));
149
- }
150
- },
151
- ...renderers
152
- };
153
- }
154
- //#endregion
155
- exports.DEFAULT_PROMPT_GUIDELINES = require_promptGuidelines.DEFAULT_PROMPT_GUIDELINES;
156
- exports.DEFAULT_PROMPT_SNIPPET = DEFAULT_PROMPT_SNIPPET;
157
- exports.createTaskTool = createTaskTool;
158
- exports.default = task_cli_default;
159
-
160
- //# sourceMappingURL=task.cli.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.cli.cjs","names":["defineCliTool","definePiTool","taskActionAcceptsField","MSG_UPSERT_FIELD_MISPLACED","TASK_EVENT","applyTaskMutation","isCommittingOp","formatUpsertFailureText","buildToolResult","TOOL_NAME","TOOL_LABEL","DEFAULT_PROMPT_GUIDELINES","TaskParamsSchema","buildTextResult","formatAssignmentResults","buildAssignmentResult"],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.ts"],"sourcesContent":["import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport { definePiTool, type PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\nimport type { ToolDefinition, ExtensionContext } from '@earendil-works/pi-coding-agent';\n\nimport { DEFAULT_PROMPT_GUIDELINES } from '../../../../../../constants/promptGuidelines';\nimport type { TaskAction, TaskAssignment, TaskMutationParams } from '../../../../../../models/task';\nimport {\n MSG_UPSERT_FIELD_MISPLACED,\n TaskParamsSchema,\n TOOL_LABEL,\n TOOL_NAME,\n taskActionAcceptsField,\n} from '../../../../../../schemas/task';\nimport { DEFAULT_MAX_TASKS } from '../../../../../../services/config';\nimport type { AssignOptions, DelegationManager, DelegationOutcome } from '../../../../../../services/delegation';\nimport { applyTaskMutation, isCommittingOp, type ReducerAction } from '../../../../../../services/reducer';\nimport {\n type AssignmentItemResult,\n buildAssignmentResult,\n buildTextResult,\n buildToolResult,\n formatAssignmentResults,\n formatUpsertFailureText,\n type ToolResult,\n} from '../../../../../../services/taskResult';\nimport type { TaskStore } from '../../../../../../services/taskStore';\nimport { TASK_EVENT, type TaskFailureReporter } from '../../../../../../types/telemetry';\nimport type { TaskPiScope } from '../../_lib/root.cli';\n\nexport { DEFAULT_PROMPT_GUIDELINES } from '../../../../../../constants/promptGuidelines';\n\n/** @deprecated Task usage policy now lives only in the tool description. */\nexport const DEFAULT_PROMPT_SNIPPET =\n 'Track only complex, multi-step jobs that benefit from persistent progress or delegation; skip simple work';\n\nexport interface TaskToolDependencies {\n store: TaskStore;\n delegation: DelegationManager;\n maxTasks?: number;\n onChange?: () => void;\n report?: TaskFailureReporter;\n waitUntilReady?: (context: ExtensionContext, signal?: AbortSignal) => Promise<void>;\n}\n\nexport default defineCliTool((context: WithRoot<PiPluginContext, TaskPiScope>) =>\n definePiTool(createTaskTool(context.root.toolDependencies)),\n);\n\nconst ACTION_ATTRIBUTE = 'tool.action';\nconst TASK_ID_ATTRIBUTE = 'task.id';\nconst REDUCER_ACTIONS = new Set<TaskAction>(['upsert', 'list', 'get', 'delete', 'clear']);\n\nclass TaskToolExecutionError extends Error {}\n\nfunction actionableTaskError(action: TaskAction, message: string): TaskToolExecutionError {\n return new TaskToolExecutionError(\n [\n `Task ${action} failed: ${message}`,\n '',\n 'Options:',\n '- List the task board and inspect the current ids, states, and blockers.',\n '- Correct the arguments or state conflict, then retry once.',\n '- Ask the user before cancelling work or changing dependencies to recover.',\n ].join('\\n'),\n );\n}\n\n/**\n * Reject a field that belongs to a different action.\n *\n * The params schema is flat and shared across every action, so this is the only\n * place `{\"action\":\"upsert\",\"id\":3}` can be caught — and it must be, because\n * the entry it carries has no id and would silently create a duplicate task.\n */\nfunction rejectStrayFields(action: TaskAction, params: TaskMutationParams): void {\n const stray = Object.keys(params).filter((key) => params[key] !== undefined && !taskActionAcceptsField(action, key));\n if (stray.length === 0) return;\n const hint = action === 'upsert' ? ` ${MSG_UPSERT_FIELD_MISPLACED}` : '';\n throw actionableTaskError(action, `${action} does not accept ${stray.join(', ')}.${hint}`);\n}\n\n/** assignments[] is the only assign contract, even when it contains one task. */\nfunction resolveAssignments(params: TaskMutationParams): TaskAssignment[] {\n const assignments = params.assignments;\n if (!assignments || assignments.length === 0) {\n throw actionableTaskError('assign', 'assign requires a non-empty assignments[] array');\n }\n return assignments;\n}\n\nfunction assignOptions(request: TaskAssignment, signal: AbortSignal | undefined): AssignOptions {\n return {\n agent: request.agent,\n inlineAgent: request.inlineAgent,\n instructions: request.instructions,\n relevantFiles: request.relevantFiles,\n priorFindings: request.priorFindings,\n model: request.model,\n context: request.context,\n signal,\n };\n}\n\nasync function executeAssignmentBatch(\n delegation: DelegationManager,\n assignments: readonly TaskAssignment[],\n signal: AbortSignal | undefined,\n report: TaskFailureReporter | undefined,\n): Promise<AssignmentItemResult[]> {\n const results: AssignmentItemResult[] = [];\n for (const [index, assignment] of assignments.entries()) {\n let outcome: DelegationOutcome;\n try {\n outcome = await delegation.assign(assignment.id, assignOptions(assignment, signal));\n } catch (error) {\n report?.error(TASK_EVENT.toolFailed, error, {\n [ACTION_ATTRIBUTE]: 'assign',\n [TASK_ID_ATTRIBUTE]: assignment.id,\n });\n outcome = { ok: false, message: error instanceof Error ? error.message : String(error) };\n }\n results.push({ index, id: assignment.id, agent: assignment.agent, ...outcome });\n }\n return results;\n}\n\n/** Run an action through the reducer, persisting only when it produced a change. */\nasync function executeReducerAction(\n store: TaskStore,\n action: ReducerAction,\n params: TaskMutationParams,\n maxTasks: number,\n): Promise<ToolResult> {\n const { document, value } = await store.mutate((current) => {\n const result = applyTaskMutation(current, action, params, undefined, maxTasks);\n return {\n ...(isCommittingOp(result.op) ? { document: result.document } : {}),\n value: result,\n };\n });\n if (value.op.kind === 'error') throw actionableTaskError(action, value.op.message);\n // An upsert that applied nothing is a failed call: it wrote nothing and left\n // `rev` alone, so it must not read to the model as a success. A batch where\n // some entries landed returns normally — that is what partial apply means.\n if (value.op.kind === 'upsert' && value.op.applied === 0) {\n throw actionableTaskError(action, formatUpsertFailureText(value.op));\n }\n // `document` is the committed document, so `details.rev` matches what landed\n // on disk; `value.document` is the pre-write copy and lags by one.\n return buildToolResult(action, params, document, value.op);\n}\n\nexport function createTaskTool(\n dependencies: TaskToolDependencies,\n renderers: Pick<ToolDefinition<typeof TaskParamsSchema, ToolResult['details']>, 'renderCall' | 'renderResult'> = {},\n): ToolDefinition<typeof TaskParamsSchema, ToolResult['details']> {\n const { store, delegation, maxTasks = DEFAULT_MAX_TASKS } = dependencies;\n\n return {\n name: TOOL_NAME,\n label: TOOL_LABEL,\n description:\n 'Shared task list for complex jobs, plus delegation of tracked tasks to background subagents. Use it only when persistent coordination pays off: dependencies, parallel workstreams, or a long-running plan. Do not use it for simple requests, routine edits, straightforward command sequences, or merely because the user listed multiple steps. Actions: upsert (create and change tasks), list, get, delete (tombstone), clear (close the list), assign (delegate through assignments[]), cancel (stop a delegated run). The list is shared across the current session tree, including delegated subagents, while unrelated sessions start empty and stores persist until retention cleanup.',\n promptGuidelines: DEFAULT_PROMPT_GUIDELINES,\n parameters: TaskParamsSchema,\n // Task rows carry their own status colors. Owning the shell prevents Pi's\n // pending/success/error background fill from obscuring those row states.\n renderShell: 'self',\n\n async execute(_toolCallId, params, signal, onUpdate, ctx) {\n const action = params.action as TaskAction;\n const mutationParams = params as TaskMutationParams;\n\n try {\n await dependencies.waitUntilReady?.(ctx, signal);\n rejectStrayFields(action, mutationParams);\n if (REDUCER_ACTIONS.has(action)) {\n const result = await executeReducerAction(store, action as ReducerAction, mutationParams, maxTasks);\n dependencies.onChange?.();\n return result;\n }\n\n if (action === 'assign') {\n const assignments = resolveAssignments(mutationParams);\n const first = assignments[0];\n const progress =\n assignments.length === 1 && first\n ? `Delegating task #${first.id}...`\n : `Delegating ${assignments.length} tasks...`;\n onUpdate?.(buildTextResult(action, mutationParams, store.snapshot, progress));\n const results = await executeAssignmentBatch(delegation, assignments, signal, dependencies.report);\n dependencies.onChange?.();\n const text = formatAssignmentResults(results);\n const assigned = results.flatMap((item) => (item.ok ? [item.id] : []));\n if (assigned.length === 0) throw actionableTaskError(action, text);\n return buildAssignmentResult(mutationParams, store.snapshot, text, {\n assigned,\n failed: results.length - assigned.length,\n });\n }\n\n onUpdate?.(\n buildTextResult(\n action,\n mutationParams,\n store.snapshot,\n `Requesting cancellation for task #${mutationParams.id ?? 'unknown'}...`,\n ),\n );\n const outcome = await delegation.cancel(mutationParams.id ?? Number.NaN);\n dependencies.onChange?.();\n if (!outcome.ok) throw actionableTaskError(action, outcome.message);\n return buildTextResult(action, mutationParams, store.snapshot, outcome.message, undefined);\n } catch (error) {\n // Rethrown so pi still renders the failure to the model; recorded\n // because this is where a store fault becomes visible to the user.\n dependencies.report?.error(TASK_EVENT.toolFailed, error, {\n [ACTION_ATTRIBUTE]: action,\n ...(mutationParams.id === undefined ? {} : { [TASK_ID_ATTRIBUTE]: mutationParams.id }),\n });\n if (error instanceof TaskToolExecutionError) throw error;\n throw actionableTaskError(action, error instanceof Error ? error.message : String(error));\n }\n },\n\n ...renderers,\n };\n}\n"],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import { TaskFailureReporter } from "../../../../../../types/telemetry.cjs";
2
- import { TaskStore } from "../../../../../../services/taskStore/index.cjs";
3
- import { DelegationManager } from "../../../../../../services/delegation/index.cjs";
4
- import { TaskParamsSchema } from "../../../../../../schemas/task.cjs";
5
- import { ToolResult } from "../../../../../../services/taskResult/index.cjs";
6
- import { DEFAULT_PROMPT_GUIDELINES } from "../../../../../../constants/promptGuidelines.cjs";
7
- import "../../_lib/root.cli.cjs";
8
- import { WithRoot } from "@agimon-ai/doompi-core/extension-file";
9
- import { PiPluginContext } from "@agimon-ai/doompi-core/pi-extension";
10
- import { ExtensionContext, ToolDefinition } from "@earendil-works/pi-coding-agent";
11
- //#region src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.ts
12
- /** @deprecated Task usage policy now lives only in the tool description. */
13
- export declare const DEFAULT_PROMPT_SNIPPET = "Track only complex, multi-step jobs that benefit from persistent progress or delegation; skip simple work";
14
- export interface TaskToolDependencies {
15
- store: TaskStore;
16
- delegation: DelegationManager;
17
- maxTasks?: number;
18
- onChange?: () => void;
19
- report?: TaskFailureReporter;
20
- waitUntilReady?: (context: ExtensionContext, signal?: AbortSignal) => Promise<void>;
21
- }
22
- export declare function createTaskTool(dependencies: TaskToolDependencies, renderers?: Pick<ToolDefinition<typeof TaskParamsSchema, ToolResult['details']>, 'renderCall' | 'renderResult'>): ToolDefinition<typeof TaskParamsSchema, ToolResult['details']>;
23
- //#endregion
24
- export { DEFAULT_PROMPT_GUIDELINES };
25
- //# sourceMappingURL=task.cli.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.cli.d.cts","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.ts"],"mappings":";;;;;;;;;;;;qBAgCa;iBAGI;EACf,OAAO;EACP,YAAY;EACZ;EACA;EACA,SAAS;EACT,kBAAkB,SAAS,kBAAkB,SAAS,gBAAgB;;wBA+GxD,eACd,cAAc,sBACd,YAAW,KAAK,sBAAsB,kBAAkB,yDACvD,sBAAsB,kBAAkB"}
@@ -1,25 +0,0 @@
1
- import { TaskFailureReporter } from "../../../../../../types/telemetry.mjs";
2
- import { TaskStore } from "../../../../../../services/taskStore/index.mjs";
3
- import { DelegationManager } from "../../../../../../services/delegation/index.mjs";
4
- import { TaskParamsSchema } from "../../../../../../schemas/task.mjs";
5
- import { ToolResult } from "../../../../../../services/taskResult/index.mjs";
6
- import { DEFAULT_PROMPT_GUIDELINES } from "../../../../../../constants/promptGuidelines.mjs";
7
- import "../../_lib/root.cli.mjs";
8
- import { PiPluginContext } from "@agimon-ai/doompi-core/pi-extension";
9
- import { WithRoot } from "@agimon-ai/doompi-core/extension-file";
10
- import { ExtensionContext, ToolDefinition } from "@earendil-works/pi-coding-agent";
11
- //#region src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.ts
12
- /** @deprecated Task usage policy now lives only in the tool description. */
13
- export declare const DEFAULT_PROMPT_SNIPPET = "Track only complex, multi-step jobs that benefit from persistent progress or delegation; skip simple work";
14
- export interface TaskToolDependencies {
15
- store: TaskStore;
16
- delegation: DelegationManager;
17
- maxTasks?: number;
18
- onChange?: () => void;
19
- report?: TaskFailureReporter;
20
- waitUntilReady?: (context: ExtensionContext, signal?: AbortSignal) => Promise<void>;
21
- }
22
- export declare function createTaskTool(dependencies: TaskToolDependencies, renderers?: Pick<ToolDefinition<typeof TaskParamsSchema, ToolResult['details']>, 'renderCall' | 'renderResult'>): ToolDefinition<typeof TaskParamsSchema, ToolResult['details']>;
23
- //#endregion
24
- export { DEFAULT_PROMPT_GUIDELINES };
25
- //# sourceMappingURL=task.cli.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.cli.d.mts","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.ts"],"mappings":";;;;;;;;;;;;qBAgCa;iBAGI;EACf,OAAO;EACP,YAAY;EACZ;EACA;EACA,SAAS;EACT,kBAAkB,SAAS,kBAAkB,SAAS,gBAAgB;;wBA+GxD,eACd,cAAc,sBACd,YAAW,KAAK,sBAAsB,kBAAkB,yDACvD,sBAAsB,kBAAkB"}
@@ -1,157 +0,0 @@
1
- import "../../../../../../services/config/index.mjs";
2
- import { TASK_EVENT } from "../../../../../../types/telemetry.mjs";
3
- import { MSG_UPSERT_FIELD_MISPLACED, TOOL_LABEL, TOOL_NAME, TaskParamsSchema, taskActionAcceptsField } from "../../../../../../schemas/task.mjs";
4
- import { applyTaskMutation, isCommittingOp } from "../../../../../../services/reducer/index.mjs";
5
- import { DEFAULT_PROMPT_GUIDELINES } from "../../../../../../constants/promptGuidelines.mjs";
6
- import { buildAssignmentResult, buildTextResult, buildToolResult, formatAssignmentResults, formatUpsertFailureText } from "../../../../../../services/taskResult/index.mjs";
7
- import { definePiTool } from "@agimon-ai/doompi-core/pi-extension";
8
- import { defineCliTool } from "@agimon-ai/doompi-core/extension-file";
9
- //#region src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.ts
10
- /** @deprecated Task usage policy now lives only in the tool description. */
11
- const DEFAULT_PROMPT_SNIPPET = "Track only complex, multi-step jobs that benefit from persistent progress or delegation; skip simple work";
12
- var task_cli_default = defineCliTool((context) => definePiTool(createTaskTool(context.root.toolDependencies)));
13
- const ACTION_ATTRIBUTE = "tool.action";
14
- const TASK_ID_ATTRIBUTE = "task.id";
15
- const REDUCER_ACTIONS = /* @__PURE__ */ new Set([
16
- "upsert",
17
- "list",
18
- "get",
19
- "delete",
20
- "clear"
21
- ]);
22
- var TaskToolExecutionError = class extends Error {};
23
- function actionableTaskError(action, message) {
24
- return new TaskToolExecutionError([
25
- `Task ${action} failed: ${message}`,
26
- "",
27
- "Options:",
28
- "- List the task board and inspect the current ids, states, and blockers.",
29
- "- Correct the arguments or state conflict, then retry once.",
30
- "- Ask the user before cancelling work or changing dependencies to recover."
31
- ].join("\n"));
32
- }
33
- /**
34
- * Reject a field that belongs to a different action.
35
- *
36
- * The params schema is flat and shared across every action, so this is the only
37
- * place `{"action":"upsert","id":3}` can be caught — and it must be, because
38
- * the entry it carries has no id and would silently create a duplicate task.
39
- */
40
- function rejectStrayFields(action, params) {
41
- const stray = Object.keys(params).filter((key) => params[key] !== void 0 && !taskActionAcceptsField(action, key));
42
- if (stray.length === 0) return;
43
- const hint = action === "upsert" ? ` ${MSG_UPSERT_FIELD_MISPLACED}` : "";
44
- throw actionableTaskError(action, `${action} does not accept ${stray.join(", ")}.${hint}`);
45
- }
46
- /** assignments[] is the only assign contract, even when it contains one task. */
47
- function resolveAssignments(params) {
48
- const assignments = params.assignments;
49
- if (!assignments || assignments.length === 0) throw actionableTaskError("assign", "assign requires a non-empty assignments[] array");
50
- return assignments;
51
- }
52
- function assignOptions(request, signal) {
53
- return {
54
- agent: request.agent,
55
- inlineAgent: request.inlineAgent,
56
- instructions: request.instructions,
57
- relevantFiles: request.relevantFiles,
58
- priorFindings: request.priorFindings,
59
- model: request.model,
60
- context: request.context,
61
- signal
62
- };
63
- }
64
- async function executeAssignmentBatch(delegation, assignments, signal, report) {
65
- const results = [];
66
- for (const [index, assignment] of assignments.entries()) {
67
- let outcome;
68
- try {
69
- outcome = await delegation.assign(assignment.id, assignOptions(assignment, signal));
70
- } catch (error) {
71
- report?.error(TASK_EVENT.toolFailed, error, {
72
- [ACTION_ATTRIBUTE]: "assign",
73
- [TASK_ID_ATTRIBUTE]: assignment.id
74
- });
75
- outcome = {
76
- ok: false,
77
- message: error instanceof Error ? error.message : String(error)
78
- };
79
- }
80
- results.push({
81
- index,
82
- id: assignment.id,
83
- agent: assignment.agent,
84
- ...outcome
85
- });
86
- }
87
- return results;
88
- }
89
- /** Run an action through the reducer, persisting only when it produced a change. */
90
- async function executeReducerAction(store, action, params, maxTasks) {
91
- const { document, value } = await store.mutate((current) => {
92
- const result = applyTaskMutation(current, action, params, void 0, maxTasks);
93
- return {
94
- ...isCommittingOp(result.op) ? { document: result.document } : {},
95
- value: result
96
- };
97
- });
98
- if (value.op.kind === "error") throw actionableTaskError(action, value.op.message);
99
- if (value.op.kind === "upsert" && value.op.applied === 0) throw actionableTaskError(action, formatUpsertFailureText(value.op));
100
- return buildToolResult(action, params, document, value.op);
101
- }
102
- function createTaskTool(dependencies, renderers = {}) {
103
- const { store, delegation, maxTasks = 15 } = dependencies;
104
- return {
105
- name: TOOL_NAME,
106
- label: TOOL_LABEL,
107
- description: "Shared task list for complex jobs, plus delegation of tracked tasks to background subagents. Use it only when persistent coordination pays off: dependencies, parallel workstreams, or a long-running plan. Do not use it for simple requests, routine edits, straightforward command sequences, or merely because the user listed multiple steps. Actions: upsert (create and change tasks), list, get, delete (tombstone), clear (close the list), assign (delegate through assignments[]), cancel (stop a delegated run). The list is shared across the current session tree, including delegated subagents, while unrelated sessions start empty and stores persist until retention cleanup.",
108
- promptGuidelines: DEFAULT_PROMPT_GUIDELINES,
109
- parameters: TaskParamsSchema,
110
- renderShell: "self",
111
- async execute(_toolCallId, params, signal, onUpdate, ctx) {
112
- const action = params.action;
113
- const mutationParams = params;
114
- try {
115
- await dependencies.waitUntilReady?.(ctx, signal);
116
- rejectStrayFields(action, mutationParams);
117
- if (REDUCER_ACTIONS.has(action)) {
118
- const result = await executeReducerAction(store, action, mutationParams, maxTasks);
119
- dependencies.onChange?.();
120
- return result;
121
- }
122
- if (action === "assign") {
123
- const assignments = resolveAssignments(mutationParams);
124
- const first = assignments[0];
125
- const progress = assignments.length === 1 && first ? `Delegating task #${first.id}...` : `Delegating ${assignments.length} tasks...`;
126
- onUpdate?.(buildTextResult(action, mutationParams, store.snapshot, progress));
127
- const results = await executeAssignmentBatch(delegation, assignments, signal, dependencies.report);
128
- dependencies.onChange?.();
129
- const text = formatAssignmentResults(results);
130
- const assigned = results.flatMap((item) => item.ok ? [item.id] : []);
131
- if (assigned.length === 0) throw actionableTaskError(action, text);
132
- return buildAssignmentResult(mutationParams, store.snapshot, text, {
133
- assigned,
134
- failed: results.length - assigned.length
135
- });
136
- }
137
- onUpdate?.(buildTextResult(action, mutationParams, store.snapshot, `Requesting cancellation for task #${mutationParams.id ?? "unknown"}...`));
138
- const outcome = await delegation.cancel(mutationParams.id ?? NaN);
139
- dependencies.onChange?.();
140
- if (!outcome.ok) throw actionableTaskError(action, outcome.message);
141
- return buildTextResult(action, mutationParams, store.snapshot, outcome.message, void 0);
142
- } catch (error) {
143
- dependencies.report?.error(TASK_EVENT.toolFailed, error, {
144
- [ACTION_ATTRIBUTE]: action,
145
- ...mutationParams.id === void 0 ? {} : { [TASK_ID_ATTRIBUTE]: mutationParams.id }
146
- });
147
- if (error instanceof TaskToolExecutionError) throw error;
148
- throw actionableTaskError(action, error instanceof Error ? error.message : String(error));
149
- }
150
- },
151
- ...renderers
152
- };
153
- }
154
- //#endregion
155
- export { DEFAULT_PROMPT_GUIDELINES, DEFAULT_PROMPT_SNIPPET, createTaskTool, task_cli_default as default };
156
-
157
- //# sourceMappingURL=task.cli.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.cli.mjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.ts"],"sourcesContent":["import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport { definePiTool, type PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\nimport type { ToolDefinition, ExtensionContext } from '@earendil-works/pi-coding-agent';\n\nimport { DEFAULT_PROMPT_GUIDELINES } from '../../../../../../constants/promptGuidelines';\nimport type { TaskAction, TaskAssignment, TaskMutationParams } from '../../../../../../models/task';\nimport {\n MSG_UPSERT_FIELD_MISPLACED,\n TaskParamsSchema,\n TOOL_LABEL,\n TOOL_NAME,\n taskActionAcceptsField,\n} from '../../../../../../schemas/task';\nimport { DEFAULT_MAX_TASKS } from '../../../../../../services/config';\nimport type { AssignOptions, DelegationManager, DelegationOutcome } from '../../../../../../services/delegation';\nimport { applyTaskMutation, isCommittingOp, type ReducerAction } from '../../../../../../services/reducer';\nimport {\n type AssignmentItemResult,\n buildAssignmentResult,\n buildTextResult,\n buildToolResult,\n formatAssignmentResults,\n formatUpsertFailureText,\n type ToolResult,\n} from '../../../../../../services/taskResult';\nimport type { TaskStore } from '../../../../../../services/taskStore';\nimport { TASK_EVENT, type TaskFailureReporter } from '../../../../../../types/telemetry';\nimport type { TaskPiScope } from '../../_lib/root.cli';\n\nexport { DEFAULT_PROMPT_GUIDELINES } from '../../../../../../constants/promptGuidelines';\n\n/** @deprecated Task usage policy now lives only in the tool description. */\nexport const DEFAULT_PROMPT_SNIPPET =\n 'Track only complex, multi-step jobs that benefit from persistent progress or delegation; skip simple work';\n\nexport interface TaskToolDependencies {\n store: TaskStore;\n delegation: DelegationManager;\n maxTasks?: number;\n onChange?: () => void;\n report?: TaskFailureReporter;\n waitUntilReady?: (context: ExtensionContext, signal?: AbortSignal) => Promise<void>;\n}\n\nexport default defineCliTool((context: WithRoot<PiPluginContext, TaskPiScope>) =>\n definePiTool(createTaskTool(context.root.toolDependencies)),\n);\n\nconst ACTION_ATTRIBUTE = 'tool.action';\nconst TASK_ID_ATTRIBUTE = 'task.id';\nconst REDUCER_ACTIONS = new Set<TaskAction>(['upsert', 'list', 'get', 'delete', 'clear']);\n\nclass TaskToolExecutionError extends Error {}\n\nfunction actionableTaskError(action: TaskAction, message: string): TaskToolExecutionError {\n return new TaskToolExecutionError(\n [\n `Task ${action} failed: ${message}`,\n '',\n 'Options:',\n '- List the task board and inspect the current ids, states, and blockers.',\n '- Correct the arguments or state conflict, then retry once.',\n '- Ask the user before cancelling work or changing dependencies to recover.',\n ].join('\\n'),\n );\n}\n\n/**\n * Reject a field that belongs to a different action.\n *\n * The params schema is flat and shared across every action, so this is the only\n * place `{\"action\":\"upsert\",\"id\":3}` can be caught — and it must be, because\n * the entry it carries has no id and would silently create a duplicate task.\n */\nfunction rejectStrayFields(action: TaskAction, params: TaskMutationParams): void {\n const stray = Object.keys(params).filter((key) => params[key] !== undefined && !taskActionAcceptsField(action, key));\n if (stray.length === 0) return;\n const hint = action === 'upsert' ? ` ${MSG_UPSERT_FIELD_MISPLACED}` : '';\n throw actionableTaskError(action, `${action} does not accept ${stray.join(', ')}.${hint}`);\n}\n\n/** assignments[] is the only assign contract, even when it contains one task. */\nfunction resolveAssignments(params: TaskMutationParams): TaskAssignment[] {\n const assignments = params.assignments;\n if (!assignments || assignments.length === 0) {\n throw actionableTaskError('assign', 'assign requires a non-empty assignments[] array');\n }\n return assignments;\n}\n\nfunction assignOptions(request: TaskAssignment, signal: AbortSignal | undefined): AssignOptions {\n return {\n agent: request.agent,\n inlineAgent: request.inlineAgent,\n instructions: request.instructions,\n relevantFiles: request.relevantFiles,\n priorFindings: request.priorFindings,\n model: request.model,\n context: request.context,\n signal,\n };\n}\n\nasync function executeAssignmentBatch(\n delegation: DelegationManager,\n assignments: readonly TaskAssignment[],\n signal: AbortSignal | undefined,\n report: TaskFailureReporter | undefined,\n): Promise<AssignmentItemResult[]> {\n const results: AssignmentItemResult[] = [];\n for (const [index, assignment] of assignments.entries()) {\n let outcome: DelegationOutcome;\n try {\n outcome = await delegation.assign(assignment.id, assignOptions(assignment, signal));\n } catch (error) {\n report?.error(TASK_EVENT.toolFailed, error, {\n [ACTION_ATTRIBUTE]: 'assign',\n [TASK_ID_ATTRIBUTE]: assignment.id,\n });\n outcome = { ok: false, message: error instanceof Error ? error.message : String(error) };\n }\n results.push({ index, id: assignment.id, agent: assignment.agent, ...outcome });\n }\n return results;\n}\n\n/** Run an action through the reducer, persisting only when it produced a change. */\nasync function executeReducerAction(\n store: TaskStore,\n action: ReducerAction,\n params: TaskMutationParams,\n maxTasks: number,\n): Promise<ToolResult> {\n const { document, value } = await store.mutate((current) => {\n const result = applyTaskMutation(current, action, params, undefined, maxTasks);\n return {\n ...(isCommittingOp(result.op) ? { document: result.document } : {}),\n value: result,\n };\n });\n if (value.op.kind === 'error') throw actionableTaskError(action, value.op.message);\n // An upsert that applied nothing is a failed call: it wrote nothing and left\n // `rev` alone, so it must not read to the model as a success. A batch where\n // some entries landed returns normally — that is what partial apply means.\n if (value.op.kind === 'upsert' && value.op.applied === 0) {\n throw actionableTaskError(action, formatUpsertFailureText(value.op));\n }\n // `document` is the committed document, so `details.rev` matches what landed\n // on disk; `value.document` is the pre-write copy and lags by one.\n return buildToolResult(action, params, document, value.op);\n}\n\nexport function createTaskTool(\n dependencies: TaskToolDependencies,\n renderers: Pick<ToolDefinition<typeof TaskParamsSchema, ToolResult['details']>, 'renderCall' | 'renderResult'> = {},\n): ToolDefinition<typeof TaskParamsSchema, ToolResult['details']> {\n const { store, delegation, maxTasks = DEFAULT_MAX_TASKS } = dependencies;\n\n return {\n name: TOOL_NAME,\n label: TOOL_LABEL,\n description:\n 'Shared task list for complex jobs, plus delegation of tracked tasks to background subagents. Use it only when persistent coordination pays off: dependencies, parallel workstreams, or a long-running plan. Do not use it for simple requests, routine edits, straightforward command sequences, or merely because the user listed multiple steps. Actions: upsert (create and change tasks), list, get, delete (tombstone), clear (close the list), assign (delegate through assignments[]), cancel (stop a delegated run). The list is shared across the current session tree, including delegated subagents, while unrelated sessions start empty and stores persist until retention cleanup.',\n promptGuidelines: DEFAULT_PROMPT_GUIDELINES,\n parameters: TaskParamsSchema,\n // Task rows carry their own status colors. Owning the shell prevents Pi's\n // pending/success/error background fill from obscuring those row states.\n renderShell: 'self',\n\n async execute(_toolCallId, params, signal, onUpdate, ctx) {\n const action = params.action as TaskAction;\n const mutationParams = params as TaskMutationParams;\n\n try {\n await dependencies.waitUntilReady?.(ctx, signal);\n rejectStrayFields(action, mutationParams);\n if (REDUCER_ACTIONS.has(action)) {\n const result = await executeReducerAction(store, action as ReducerAction, mutationParams, maxTasks);\n dependencies.onChange?.();\n return result;\n }\n\n if (action === 'assign') {\n const assignments = resolveAssignments(mutationParams);\n const first = assignments[0];\n const progress =\n assignments.length === 1 && first\n ? `Delegating task #${first.id}...`\n : `Delegating ${assignments.length} tasks...`;\n onUpdate?.(buildTextResult(action, mutationParams, store.snapshot, progress));\n const results = await executeAssignmentBatch(delegation, assignments, signal, dependencies.report);\n dependencies.onChange?.();\n const text = formatAssignmentResults(results);\n const assigned = results.flatMap((item) => (item.ok ? [item.id] : []));\n if (assigned.length === 0) throw actionableTaskError(action, text);\n return buildAssignmentResult(mutationParams, store.snapshot, text, {\n assigned,\n failed: results.length - assigned.length,\n });\n }\n\n onUpdate?.(\n buildTextResult(\n action,\n mutationParams,\n store.snapshot,\n `Requesting cancellation for task #${mutationParams.id ?? 'unknown'}...`,\n ),\n );\n const outcome = await delegation.cancel(mutationParams.id ?? Number.NaN);\n dependencies.onChange?.();\n if (!outcome.ok) throw actionableTaskError(action, outcome.message);\n return buildTextResult(action, mutationParams, store.snapshot, outcome.message, undefined);\n } catch (error) {\n // Rethrown so pi still renders the failure to the model; recorded\n // because this is where a store fault becomes visible to the user.\n dependencies.report?.error(TASK_EVENT.toolFailed, error, {\n [ACTION_ATTRIBUTE]: action,\n ...(mutationParams.id === undefined ? {} : { [TASK_ID_ATTRIBUTE]: mutationParams.id }),\n });\n if (error instanceof TaskToolExecutionError) throw error;\n throw actionableTaskError(action, error instanceof Error ? error.message : String(error));\n }\n },\n\n ...renderers,\n };\n}\n"],"mappings":"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"}
@@ -1,109 +0,0 @@
1
- const require_task = require("../../../../../../schemas/task.cjs");
2
- const require_index = require("../../../../../../services/reducer/index.cjs");
3
- const require_index$1 = require("../../../../../../services/taskResult/index.cjs");
4
- let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
5
- let typebox_value = require("typebox/value");
6
- //#region src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.ts
7
- function output(value) {
8
- if (typeof value === "object" && value !== null && "content" in value) return value;
9
- return {
10
- content: [{
11
- type: "text",
12
- text: typeof value === "string" ? value : JSON.stringify(value, null, 2)
13
- }],
14
- details: value
15
- };
16
- }
17
- function failure(error) {
18
- return {
19
- content: [{
20
- type: "text",
21
- text: error instanceof Error ? error.message : String(error)
22
- }],
23
- isError: true
24
- };
25
- }
26
- async function reducerAction(store, action, params, maxTasks) {
27
- const { document, value } = await store.mutate((current) => {
28
- const result = require_index.applyTaskMutation(current, action, params, void 0, maxTasks);
29
- return {
30
- ...require_index.isCommittingOp(result.op) ? { document: result.document } : {},
31
- value: result
32
- };
33
- });
34
- if (value.op.kind === "error") throw new Error(value.op.message);
35
- return require_index$1.buildToolResult(action, params, document, value.op);
36
- }
37
- async function assignmentBatch(manager, assignments, signal) {
38
- const result = [];
39
- for (const [index, assignment] of assignments.entries()) try {
40
- const outcome = await manager.assign(assignment.id, {
41
- agent: assignment.agent,
42
- inlineAgent: assignment.inlineAgent,
43
- instructions: assignment.instructions,
44
- relevantFiles: assignment.relevantFiles,
45
- priorFindings: assignment.priorFindings,
46
- model: assignment.model,
47
- ...assignment.context === "fork" || assignment.context === "fresh" ? { context: assignment.context } : {},
48
- signal
49
- });
50
- result.push({
51
- index,
52
- id: assignment.id,
53
- agent: assignment.agent,
54
- ...outcome
55
- });
56
- } catch (error) {
57
- result.push({
58
- index,
59
- id: assignment.id,
60
- agent: assignment.agent,
61
- ok: false,
62
- message: String(error)
63
- });
64
- }
65
- return result;
66
- }
67
- function createHeadlessTaskTool(store, manager, maxTasks) {
68
- return {
69
- name: "task",
70
- label: "Task",
71
- description: "Maintain a persistent task graph and delegate ready tasks to background agents.",
72
- parameters: require_task.TaskParamsSchema,
73
- promptSnippet: "Track complex work persistently and delegate ready tasks",
74
- executionMode: "serial",
75
- async execute(_toolCallId, rawParams, signal, onUpdate) {
76
- if (!(0, typebox_value.Check)(require_task.TaskParamsSchema, rawParams)) return failure("Invalid task parameters.");
77
- const params = rawParams;
78
- try {
79
- if (params.action === "assign") {
80
- if (!params.assignments?.length) throw new Error("assign requires a non-empty assignments[] array");
81
- onUpdate?.(output(`Delegating ${params.assignments.length} task${params.assignments.length === 1 ? "" : "s"}...`));
82
- const items = await assignmentBatch(manager, params.assignments, signal);
83
- const assigned = items.filter((item) => item.ok).map((item) => item.id);
84
- const text = require_index$1.formatAssignmentResults(items);
85
- if (assigned.length === 0) throw new Error(text);
86
- return require_index$1.buildAssignmentResult(params, store.snapshot, text, {
87
- assigned,
88
- failed: items.length - assigned.length
89
- });
90
- }
91
- if (params.action === "cancel") {
92
- const outcome = await manager.cancel(params.id ?? NaN);
93
- if (!outcome.ok) throw new Error(outcome.message);
94
- return require_index$1.buildTextResult("cancel", params, store.snapshot, outcome.message);
95
- }
96
- return reducerAction(store, params.action, params, maxTasks);
97
- } catch (error) {
98
- return failure(error);
99
- }
100
- }
101
- };
102
- }
103
- var task_server_default = (0, _agimon_ai_doompi_core_extension_file.defineServerTool)((context) => createHeadlessTaskTool(context.root.store, context.root.manager, context.root.maxTasks));
104
- //#endregion
105
- exports.createHeadlessTaskTool = createHeadlessTaskTool;
106
- exports.default = task_server_default;
107
- exports.reducerAction = reducerAction;
108
-
109
- //# sourceMappingURL=task.server.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.server.cjs","names":["applyTaskMutation","isCommittingOp","buildToolResult","TaskParamsSchema","Check","formatAssignmentResults","buildAssignmentResult","buildTextResult","defineServerTool"],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.ts"],"sourcesContent":["import { defineServerTool, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomHeadlessTool, DoomHeadlessToolResult } from '@agimon-ai/doompi-core/headless';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\nimport { Check } from 'typebox/value';\n\nimport type { TaskMutationParams } from '../../../../../../models/task';\nimport { TaskParamsSchema, type TaskParams, type TaskAssignmentParams } from '../../../../../../schemas/task';\nimport type { DelegationManager } from '../../../../../../services/delegation';\nimport { applyTaskMutation, isCommittingOp, type ReducerAction } from '../../../../../../services/reducer';\nimport {\n buildAssignmentResult,\n buildTextResult,\n buildToolResult,\n formatAssignmentResults,\n} from '../../../../../../services/taskResult';\nimport type { TaskStore } from '../../../../../../services/taskStore';\nimport type { TaskServerScope } from '../../_lib/root.server';\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\nexport async 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\nexport function createHeadlessTaskTool(\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 default defineServerTool((context: WithRoot<DoomServerPluginContext, TaskServerScope>) =>\n createHeadlessTaskTool(context.root.store, context.root.manager, context.root.maxTasks),\n);\n"],"mappings":";;;;;;AAkBA,SAAS,OAAO,OAAwC;CACtD,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,aAAa,OAAO,OAAO;CAE9E,OAAO;EAAE,SAAS,CAAC;GAAE,MAAM;GAAQ,MADtB,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,OAAO,MAAM,CAAC;EACtC,CAAC;EAAG,SAAS;CAAM;AAC7D;AAEA,SAAS,QAAQ,OAAwC;CACvD,OAAO;EAAE,SAAS,CAAC;GAAE,MAAM;GAAQ,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EAAE,CAAC;EAAG,SAAS;CAAK;AACpH;AAEA,eAAsB,cACpB,OACA,QACA,QACA,UACiC;CACjC,MAAM,EAAE,UAAU,UAAU,MAAM,MAAM,QAAQ,YAAY;EAC1D,MAAM,SAASA,cAAAA,kBAAkB,SAAS,QAAQ,QAAQ,KAAA,GAAW,QAAQ;EAC7E,OAAO;GAAE,GAAIC,cAAAA,eAAe,OAAO,EAAE,IAAI,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;GAAI,OAAO;EAAO;CAC9F,CAAC;CACD,IAAI,MAAM,GAAG,SAAS,SAAS,MAAM,IAAI,MAAM,MAAM,GAAG,OAAO;CAC/D,OAAOC,gBAAAA,gBAAgB,QAAQ,QAAQ,UAAU,MAAM,EAAE;AAC3D;AAUA,eAAe,gBACb,SACA,aACA,QACiC;CACjC,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,OAAO,eAAe,YAAY,QAAQ,GACpD,IAAI;EACF,MAAM,UAAU,MAAM,QAAQ,OAAO,WAAW,IAAI;GAClD,OAAO,WAAW;GAClB,aAAa,WAAW;GACxB,cAAc,WAAW;GACzB,eAAe,WAAW;GAC1B,eAAe,WAAW;GAC1B,OAAO,WAAW;GAClB,GAAI,WAAW,YAAY,UAAU,WAAW,YAAY,UAAU,EAAE,SAAS,WAAW,QAAQ,IAAI,CAAC;GACzG;EACF,CAAC;EACD,OAAO,KAAK;GAAE;GAAO,IAAI,WAAW;GAAI,OAAO,WAAW;GAAO,GAAG;EAAQ,CAAC;CAC/E,SAAS,OAAO;EACd,OAAO,KAAK;GAAE;GAAO,IAAI,WAAW;GAAI,OAAO,WAAW;GAAO,IAAI;GAAO,SAAS,OAAO,KAAK;EAAE,CAAC;CACtG;CAEF,OAAO;AACT;AAEA,SAAgB,uBACd,OACA,SACA,UAC2C;CAC3C,OAAO;EACL,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAYC,aAAAA;EACZ,eAAe;EACf,eAAe;EACf,MAAM,QAAQ,aAAa,WAAW,QAAQ,UAAU;GACtD,IAAI,EAAA,GAACC,cAAAA,MAAAA,CAAMD,aAAAA,kBAAkB,SAAS,GAAG,OAAO,QAAQ,0BAA0B;GAClF,MAAM,SAAS;GACf,IAAI;IACF,IAAI,OAAO,WAAW,UAAU;KAC9B,IAAI,CAAC,OAAO,aAAa,QAAQ,MAAM,IAAI,MAAM,iDAAiD;KAClG,WACE,OAAO,cAAc,OAAO,YAAY,OAAO,OAAO,OAAO,YAAY,WAAW,IAAI,KAAK,IAAI,IAAI,CACvG;KACA,MAAM,QAAQ,MAAM,gBAAgB,SAAS,OAAO,aAAa,MAAM;KACvE,MAAM,WAAW,MAAM,QAAQ,SAAS,KAAK,EAAE,CAAC,CAAC,KAAK,SAAS,KAAK,EAAE;KACtE,MAAM,OAAOE,gBAAAA,wBAAwB,KAAK;KAC1C,IAAI,SAAS,WAAW,GAAG,MAAM,IAAI,MAAM,IAAI;KAC/C,OAAOC,gBAAAA,sBAAsB,QAA8B,MAAM,UAAU,MAAM;MAC/E;MACA,QAAQ,MAAM,SAAS,SAAS;KAClC,CAAC;IACH;IACA,IAAI,OAAO,WAAW,UAAU;KAC9B,MAAM,UAAU,MAAM,QAAQ,OAAO,OAAO,MAAM,GAAU;KAC5D,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI,MAAM,QAAQ,OAAO;KAChD,OAAOC,gBAAAA,gBAAgB,UAAU,QAA8B,MAAM,UAAU,QAAQ,OAAO;IAChG;IACA,OAAO,cAAc,OAAO,OAAO,QAAyB,QAA8B,QAAQ;GACpG,SAAS,OAAO;IACd,OAAO,QAAQ,KAAK;GACtB;EACF;CACF;AACF;AAEA,IAAA,uBAAA,GAAeC,sCAAAA,iBAAAA,EAAkB,YAC/B,uBAAuB,QAAQ,KAAK,OAAO,QAAQ,KAAK,SAAS,QAAQ,KAAK,QAAQ,CACxF"}