@agimon-ai/doompi-task 0.0.1-alpha.6 → 0.0.1-alpha.64

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 (401) hide show
  1. package/README.md +112 -15
  2. package/dist/adapters/node/delegationPlatform.cjs +2 -0
  3. package/dist/adapters/node/delegationPlatform.cjs.map +1 -0
  4. package/dist/adapters/node/delegationPlatform.mjs +2 -0
  5. package/dist/adapters/node/delegationPlatform.mjs.map +1 -0
  6. package/dist/adapters/pi/extension.cjs +3 -0
  7. package/dist/adapters/pi/extension.cjs.map +1 -0
  8. package/dist/adapters/pi/extension.d.cts +10 -0
  9. package/dist/adapters/pi/extension.d.cts.map +1 -0
  10. package/dist/adapters/pi/extension.d.mts +10 -0
  11. package/dist/adapters/pi/extension.d.mts.map +1 -0
  12. package/dist/adapters/pi/extension.mjs +3 -0
  13. package/dist/adapters/pi/extension.mjs.map +1 -0
  14. package/dist/adapters/store/paths.cjs +2 -0
  15. package/dist/adapters/store/paths.cjs.map +1 -0
  16. package/dist/adapters/store/paths.d.cts +25 -0
  17. package/dist/adapters/store/paths.d.cts.map +1 -0
  18. package/dist/adapters/store/paths.d.mts +25 -0
  19. package/dist/adapters/store/paths.d.mts.map +1 -0
  20. package/dist/adapters/store/paths.mjs +2 -0
  21. package/dist/adapters/store/paths.mjs.map +1 -0
  22. package/dist/adapters/store/taskStore.cjs +2 -0
  23. package/dist/adapters/store/taskStore.cjs.map +1 -0
  24. package/dist/adapters/store/taskStore.d.cts +86 -0
  25. package/dist/adapters/store/taskStore.d.cts.map +1 -0
  26. package/dist/adapters/store/taskStore.d.mts +86 -0
  27. package/dist/adapters/store/taskStore.d.mts.map +1 -0
  28. package/dist/adapters/store/taskStore.mjs +2 -0
  29. package/dist/adapters/store/taskStore.mjs.map +1 -0
  30. package/dist/adapters/telemetry/logSinkTelemetry.cjs +2 -0
  31. package/dist/adapters/telemetry/logSinkTelemetry.cjs.map +1 -0
  32. package/dist/adapters/telemetry/logSinkTelemetry.d.cts +23 -0
  33. package/dist/adapters/telemetry/logSinkTelemetry.d.cts.map +1 -0
  34. package/dist/adapters/telemetry/logSinkTelemetry.d.mts +23 -0
  35. package/dist/adapters/telemetry/logSinkTelemetry.d.mts.map +1 -0
  36. package/dist/adapters/telemetry/logSinkTelemetry.mjs +2 -0
  37. package/dist/adapters/telemetry/logSinkTelemetry.mjs.map +1 -0
  38. package/dist/adapters/webTasksChannel.cjs +2 -0
  39. package/dist/adapters/webTasksChannel.cjs.map +1 -0
  40. package/dist/adapters/webTasksChannel.d.cts +19 -0
  41. package/dist/adapters/webTasksChannel.d.cts.map +1 -0
  42. package/dist/adapters/webTasksChannel.d.mts +19 -0
  43. package/dist/adapters/webTasksChannel.d.mts.map +1 -0
  44. package/dist/adapters/webTasksChannel.mjs +2 -0
  45. package/dist/adapters/webTasksChannel.mjs.map +1 -0
  46. package/dist/commands/index.cjs +2 -0
  47. package/dist/commands/index.cjs.map +1 -0
  48. package/dist/commands/index.d.cts +13 -0
  49. package/dist/commands/index.d.cts.map +1 -0
  50. package/dist/commands/index.d.mts +13 -0
  51. package/dist/commands/index.d.mts.map +1 -0
  52. package/dist/commands/index.mjs +2 -0
  53. package/dist/commands/index.mjs.map +1 -0
  54. package/dist/commands/task/promptGuidelines.cjs +2 -0
  55. package/dist/commands/task/promptGuidelines.cjs.map +1 -0
  56. package/dist/commands/task/promptGuidelines.d.cts +13 -0
  57. package/dist/commands/task/promptGuidelines.d.cts.map +1 -0
  58. package/dist/commands/task/promptGuidelines.d.mts +13 -0
  59. package/dist/commands/task/promptGuidelines.d.mts.map +1 -0
  60. package/dist/commands/task/promptGuidelines.mjs +2 -0
  61. package/dist/commands/task/promptGuidelines.mjs.map +1 -0
  62. package/dist/commands/task/responseEnvelope.cjs +7 -0
  63. package/dist/commands/task/responseEnvelope.cjs.map +1 -0
  64. package/dist/commands/task/responseEnvelope.d.cts +50 -0
  65. package/dist/commands/task/responseEnvelope.d.cts.map +1 -0
  66. package/dist/commands/task/responseEnvelope.d.mts +50 -0
  67. package/dist/commands/task/responseEnvelope.d.mts.map +1 -0
  68. package/dist/commands/task/responseEnvelope.mjs +7 -0
  69. package/dist/commands/task/responseEnvelope.mjs.map +1 -0
  70. package/dist/commands/task/taskTool.cjs +3 -0
  71. package/dist/commands/task/taskTool.cjs.map +1 -0
  72. package/dist/commands/task/taskTool.d.cts +20 -0
  73. package/dist/commands/task/taskTool.d.cts.map +1 -0
  74. package/dist/commands/task/taskTool.d.mts +20 -0
  75. package/dist/commands/task/taskTool.d.mts.map +1 -0
  76. package/dist/commands/task/taskTool.mjs +3 -0
  77. package/dist/commands/task/taskTool.mjs.map +1 -0
  78. package/dist/commands.cjs +1 -2
  79. package/dist/commands.d.cts +2 -14
  80. package/dist/commands.d.mts +2 -14
  81. package/dist/commands.mjs +1 -2
  82. package/dist/config.cjs +1 -2
  83. package/dist/config.d.cts +2 -38
  84. package/dist/config.d.mts +2 -38
  85. package/dist/config.mjs +1 -2
  86. package/dist/delegation/manager.cjs +1 -6
  87. package/dist/delegation/manager.d.cts +3 -189
  88. package/dist/delegation/manager.d.mts +3 -189
  89. package/dist/delegation/manager.mjs +1 -6
  90. package/dist/extension.cjs +1 -3
  91. package/dist/extension.d.cts +2 -12
  92. package/dist/extension.d.mts +2 -12
  93. package/dist/extension.mjs +1 -3
  94. package/dist/extensions/pi.cjs +1 -2
  95. package/dist/extensions/pi.d.cts +1 -1
  96. package/dist/extensions/pi.d.mts +1 -1
  97. package/dist/extensions/pi.mjs +1 -2
  98. package/dist/index.cjs +1 -1
  99. package/dist/index.d.cts +15 -14
  100. package/dist/index.d.mts +15 -14
  101. package/dist/index.mjs +1 -1
  102. package/dist/logSinkTelemetry.cjs +1 -2
  103. package/dist/logSinkTelemetry.d.cts +3 -51
  104. package/dist/logSinkTelemetry.d.mts +3 -51
  105. package/dist/logSinkTelemetry.mjs +1 -2
  106. package/dist/schemas/task.cjs +2 -0
  107. package/dist/schemas/task.cjs.map +1 -0
  108. package/dist/schemas/task.d.cts +102 -0
  109. package/dist/schemas/task.d.cts.map +1 -0
  110. package/dist/schemas/task.d.mts +102 -0
  111. package/dist/schemas/task.d.mts.map +1 -0
  112. package/dist/schemas/task.mjs +2 -0
  113. package/dist/schemas/task.mjs.map +1 -0
  114. package/dist/services/contextContribution.cjs +3 -0
  115. package/dist/services/contextContribution.cjs.map +1 -0
  116. package/dist/services/contextContribution.mjs +3 -0
  117. package/dist/services/contextContribution.mjs.map +1 -0
  118. package/dist/services/delegation/manager.cjs +6 -0
  119. package/dist/services/delegation/manager.cjs.map +1 -0
  120. package/dist/services/delegation/manager.d.cts +193 -0
  121. package/dist/services/delegation/manager.d.cts.map +1 -0
  122. package/dist/services/delegation/manager.d.mts +193 -0
  123. package/dist/services/delegation/manager.d.mts.map +1 -0
  124. package/dist/services/delegation/manager.mjs +6 -0
  125. package/dist/services/delegation/manager.mjs.map +1 -0
  126. package/dist/services/narration/taskNarration.cjs +2 -0
  127. package/dist/services/narration/taskNarration.cjs.map +1 -0
  128. package/dist/services/narration/taskNarration.mjs +2 -0
  129. package/dist/services/narration/taskNarration.mjs.map +1 -0
  130. package/dist/services/store/invariants.cjs +2 -0
  131. package/dist/services/store/invariants.cjs.map +1 -0
  132. package/dist/services/store/invariants.d.cts +23 -0
  133. package/dist/services/store/invariants.d.cts.map +1 -0
  134. package/dist/services/store/invariants.d.mts +23 -0
  135. package/dist/services/store/invariants.d.mts.map +1 -0
  136. package/dist/services/store/invariants.mjs +2 -0
  137. package/dist/services/store/invariants.mjs.map +1 -0
  138. package/dist/services/store/processLiveness.cjs +2 -0
  139. package/dist/services/store/processLiveness.cjs.map +1 -0
  140. package/dist/services/store/processLiveness.d.cts +11 -0
  141. package/dist/services/store/processLiveness.d.cts.map +1 -0
  142. package/dist/services/store/processLiveness.d.mts +11 -0
  143. package/dist/services/store/processLiveness.d.mts.map +1 -0
  144. package/dist/services/store/processLiveness.mjs +2 -0
  145. package/dist/services/store/processLiveness.mjs.map +1 -0
  146. package/dist/services/store/reconcile.cjs +2 -0
  147. package/dist/services/store/reconcile.cjs.map +1 -0
  148. package/dist/services/store/reconcile.d.cts +33 -0
  149. package/dist/services/store/reconcile.d.cts.map +1 -0
  150. package/dist/services/store/reconcile.d.mts +33 -0
  151. package/dist/services/store/reconcile.d.mts.map +1 -0
  152. package/dist/services/store/reconcile.mjs +2 -0
  153. package/dist/services/store/reconcile.mjs.map +1 -0
  154. package/dist/services/store/reducer.cjs +3 -0
  155. package/dist/services/store/reducer.cjs.map +1 -0
  156. package/dist/services/store/reducer.d.cts +71 -0
  157. package/dist/services/store/reducer.d.cts.map +1 -0
  158. package/dist/services/store/reducer.d.mts +71 -0
  159. package/dist/services/store/reducer.d.mts.map +1 -0
  160. package/dist/services/store/reducer.mjs +3 -0
  161. package/dist/services/store/reducer.mjs.map +1 -0
  162. package/dist/services/store/taskGraph.cjs +2 -0
  163. package/dist/services/store/taskGraph.cjs.map +1 -0
  164. package/dist/services/store/taskGraph.d.cts +24 -0
  165. package/dist/services/store/taskGraph.d.cts.map +1 -0
  166. package/dist/services/store/taskGraph.d.mts +24 -0
  167. package/dist/services/store/taskGraph.d.mts.map +1 -0
  168. package/dist/services/store/taskGraph.mjs +2 -0
  169. package/dist/services/store/taskGraph.mjs.map +1 -0
  170. package/dist/services/store/types.cjs +2 -0
  171. package/dist/services/store/types.cjs.map +1 -0
  172. package/dist/services/store/types.d.cts +176 -0
  173. package/dist/services/store/types.d.cts.map +1 -0
  174. package/dist/services/store/types.d.mts +176 -0
  175. package/dist/services/store/types.d.mts.map +1 -0
  176. package/dist/services/store/types.mjs +2 -0
  177. package/dist/services/store/types.mjs.map +1 -0
  178. package/dist/store/invariants.cjs +1 -2
  179. package/dist/store/invariants.d.cts +2 -14
  180. package/dist/store/invariants.d.mts +2 -14
  181. package/dist/store/invariants.mjs +1 -2
  182. package/dist/store/paths.cjs +1 -2
  183. package/dist/store/paths.d.cts +2 -23
  184. package/dist/store/paths.d.mts +2 -23
  185. package/dist/store/paths.mjs +1 -2
  186. package/dist/store/processLiveness.cjs +1 -2
  187. package/dist/store/processLiveness.d.cts +2 -12
  188. package/dist/store/processLiveness.d.mts +2 -12
  189. package/dist/store/processLiveness.mjs +1 -2
  190. package/dist/store/reconcile.cjs +1 -2
  191. package/dist/store/reconcile.d.cts +2 -34
  192. package/dist/store/reconcile.d.mts +2 -34
  193. package/dist/store/reconcile.mjs +1 -2
  194. package/dist/store/reducer.cjs +1 -3
  195. package/dist/store/reducer.d.cts +2 -72
  196. package/dist/store/reducer.d.mts +2 -72
  197. package/dist/store/reducer.mjs +1 -3
  198. package/dist/store/taskGraph.cjs +1 -2
  199. package/dist/store/taskGraph.d.cts +2 -25
  200. package/dist/store/taskGraph.d.mts +2 -25
  201. package/dist/store/taskGraph.mjs +1 -2
  202. package/dist/store/taskStore.cjs +1 -2
  203. package/dist/store/taskStore.d.cts +2 -77
  204. package/dist/store/taskStore.d.mts +2 -77
  205. package/dist/store/taskStore.mjs +1 -2
  206. package/dist/store/types.cjs +1 -2
  207. package/dist/store/types.d.cts +2 -165
  208. package/dist/store/types.d.mts +2 -165
  209. package/dist/store/types.mjs +1 -2
  210. package/dist/tool/promptGuidelines.cjs +1 -2
  211. package/dist/tool/promptGuidelines.d.cts +2 -5
  212. package/dist/tool/promptGuidelines.d.mts +2 -5
  213. package/dist/tool/promptGuidelines.mjs +1 -2
  214. package/dist/tool/responseEnvelope.cjs +1 -6
  215. package/dist/tool/responseEnvelope.d.cts +2 -39
  216. package/dist/tool/responseEnvelope.d.mts +2 -39
  217. package/dist/tool/responseEnvelope.mjs +1 -6
  218. package/dist/tool/schema.cjs +1 -2
  219. package/dist/tool/schema.d.cts +2 -86
  220. package/dist/tool/schema.d.mts +2 -86
  221. package/dist/tool/schema.mjs +1 -2
  222. package/dist/tool/taskTool.cjs +1 -3
  223. package/dist/tool/taskTool.d.cts +3 -17
  224. package/dist/tool/taskTool.d.mts +3 -17
  225. package/dist/tool/taskTool.mjs +1 -3
  226. package/dist/tui/format.cjs +1 -4
  227. package/dist/tui/format.d.cts +19 -20
  228. package/dist/tui/format.d.cts.map +1 -1
  229. package/dist/tui/format.d.mts +19 -20
  230. package/dist/tui/format.d.mts.map +1 -1
  231. package/dist/tui/format.mjs +1 -4
  232. package/dist/tui/format2.cjs +4 -0
  233. package/dist/tui/format2.cjs.map +1 -0
  234. package/dist/tui/format2.d.cts +2 -0
  235. package/dist/tui/format2.d.mts +2 -0
  236. package/dist/tui/format2.mjs +4 -0
  237. package/dist/tui/format2.mjs.map +1 -0
  238. package/dist/tui/selectors.cjs +1 -2
  239. package/dist/tui/selectors.d.cts +20 -14
  240. package/dist/tui/selectors.d.cts.map +1 -1
  241. package/dist/tui/selectors.d.mts +20 -14
  242. package/dist/tui/selectors.d.mts.map +1 -1
  243. package/dist/tui/selectors.mjs +1 -2
  244. package/dist/tui/selectors2.cjs +2 -0
  245. package/dist/tui/selectors2.cjs.map +1 -0
  246. package/dist/tui/selectors2.d.cts +2 -0
  247. package/dist/tui/selectors2.d.mts +2 -0
  248. package/dist/tui/selectors2.mjs +2 -0
  249. package/dist/tui/selectors2.mjs.map +1 -0
  250. package/dist/tui/taskOverlay.cjs +1 -2
  251. package/dist/tui/taskOverlay.d.cts +4 -5
  252. package/dist/tui/taskOverlay.d.cts.map +1 -1
  253. package/dist/tui/taskOverlay.d.mts +4 -5
  254. package/dist/tui/taskOverlay.d.mts.map +1 -1
  255. package/dist/tui/taskOverlay.mjs +1 -2
  256. package/dist/tui/taskOverlay2.cjs +2 -0
  257. package/dist/tui/taskOverlay2.cjs.map +1 -0
  258. package/dist/tui/taskOverlay2.d.cts +2 -0
  259. package/dist/tui/taskOverlay2.d.mts +2 -0
  260. package/dist/tui/taskOverlay2.mjs +2 -0
  261. package/dist/tui/taskOverlay2.mjs.map +1 -0
  262. package/dist/tui/taskSpace.cjs +1 -5
  263. package/dist/tui/taskSpace.d.cts +8 -9
  264. package/dist/tui/taskSpace.d.cts.map +1 -1
  265. package/dist/tui/taskSpace.d.mts +8 -9
  266. package/dist/tui/taskSpace.d.mts.map +1 -1
  267. package/dist/tui/taskSpace.mjs +1 -5
  268. package/dist/tui/taskSpace2.cjs +5 -0
  269. package/dist/tui/taskSpace2.cjs.map +1 -0
  270. package/dist/tui/taskSpace2.d.cts +2 -0
  271. package/dist/tui/taskSpace2.d.mts +2 -0
  272. package/dist/tui/taskSpace2.mjs +5 -0
  273. package/dist/tui/taskSpace2.mjs.map +1 -0
  274. package/dist/types/config.cjs +2 -0
  275. package/dist/types/config.cjs.map +1 -0
  276. package/dist/types/config.d.cts +42 -0
  277. package/dist/types/config.d.cts.map +1 -0
  278. package/dist/types/config.d.mts +42 -0
  279. package/dist/types/config.d.mts.map +1 -0
  280. package/dist/types/config.mjs +2 -0
  281. package/dist/types/config.mjs.map +1 -0
  282. package/dist/types/delegation.cjs +2 -0
  283. package/dist/types/delegation.cjs.map +1 -0
  284. package/dist/types/delegation.d.cts +5 -0
  285. package/dist/types/delegation.d.cts.map +1 -0
  286. package/dist/types/delegation.d.mts +5 -0
  287. package/dist/types/delegation.d.mts.map +1 -0
  288. package/dist/types/delegation.mjs +2 -0
  289. package/dist/types/delegation.mjs.map +1 -0
  290. package/dist/types/telemetry.cjs +2 -0
  291. package/dist/types/telemetry.cjs.map +1 -0
  292. package/dist/types/telemetry.d.cts +35 -0
  293. package/dist/types/telemetry.d.cts.map +1 -0
  294. package/dist/types/telemetry.d.mts +35 -0
  295. package/dist/types/telemetry.d.mts.map +1 -0
  296. package/dist/types/telemetry.mjs +2 -0
  297. package/dist/types/telemetry.mjs.map +1 -0
  298. package/dist/types/webTasks.cjs +2 -0
  299. package/dist/types/webTasks.cjs.map +1 -0
  300. package/dist/types/webTasks.mjs +2 -0
  301. package/dist/types/webTasks.mjs.map +1 -0
  302. package/dist/webHub.cjs +1 -0
  303. package/dist/webHub.d.cts +2 -0
  304. package/dist/webHub.d.mts +2 -0
  305. package/dist/webHub.mjs +1 -0
  306. package/package.json +62 -21
  307. package/src/exports/webClient.ts +1 -0
  308. package/src/types/webTasks.ts +24 -0
  309. package/src/web/components/TaskDetailDialog.tsx +250 -0
  310. package/src/web/components/TaskToolMessage.tsx +119 -0
  311. package/src/web/components/TasksActivitySection.tsx +201 -0
  312. package/src/web/index.ts +15 -0
  313. package/src/web/lib/taskToolFormat.ts +330 -0
  314. package/src/web/stores/tasksStore.ts +113 -0
  315. package/src/web/tsconfig.json +23 -0
  316. package/dist/commands.cjs.map +0 -1
  317. package/dist/commands.d.cts.map +0 -1
  318. package/dist/commands.d.mts.map +0 -1
  319. package/dist/commands.mjs.map +0 -1
  320. package/dist/config.cjs.map +0 -1
  321. package/dist/config.d.cts.map +0 -1
  322. package/dist/config.d.mts.map +0 -1
  323. package/dist/config.mjs.map +0 -1
  324. package/dist/delegation/manager.cjs.map +0 -1
  325. package/dist/delegation/manager.d.cts.map +0 -1
  326. package/dist/delegation/manager.d.mts.map +0 -1
  327. package/dist/delegation/manager.mjs.map +0 -1
  328. package/dist/extension.cjs.map +0 -1
  329. package/dist/extension.d.cts.map +0 -1
  330. package/dist/extension.d.mts.map +0 -1
  331. package/dist/extension.mjs.map +0 -1
  332. package/dist/extensions/doom.cjs +0 -2
  333. package/dist/extensions/doom.cjs.map +0 -1
  334. package/dist/extensions/doom.d.cts +0 -6
  335. package/dist/extensions/doom.d.cts.map +0 -1
  336. package/dist/extensions/doom.d.mts +0 -7
  337. package/dist/extensions/doom.d.mts.map +0 -1
  338. package/dist/extensions/doom.mjs +0 -2
  339. package/dist/extensions/doom.mjs.map +0 -1
  340. package/dist/extensions/pi.cjs.map +0 -1
  341. package/dist/extensions/pi.mjs.map +0 -1
  342. package/dist/logSinkTelemetry.cjs.map +0 -1
  343. package/dist/logSinkTelemetry.d.cts.map +0 -1
  344. package/dist/logSinkTelemetry.d.mts.map +0 -1
  345. package/dist/logSinkTelemetry.mjs.map +0 -1
  346. package/dist/store/invariants.cjs.map +0 -1
  347. package/dist/store/invariants.d.cts.map +0 -1
  348. package/dist/store/invariants.d.mts.map +0 -1
  349. package/dist/store/invariants.mjs.map +0 -1
  350. package/dist/store/paths.cjs.map +0 -1
  351. package/dist/store/paths.d.cts.map +0 -1
  352. package/dist/store/paths.d.mts.map +0 -1
  353. package/dist/store/paths.mjs.map +0 -1
  354. package/dist/store/processLiveness.cjs.map +0 -1
  355. package/dist/store/processLiveness.d.cts.map +0 -1
  356. package/dist/store/processLiveness.d.mts.map +0 -1
  357. package/dist/store/processLiveness.mjs.map +0 -1
  358. package/dist/store/reconcile.cjs.map +0 -1
  359. package/dist/store/reconcile.d.cts.map +0 -1
  360. package/dist/store/reconcile.d.mts.map +0 -1
  361. package/dist/store/reconcile.mjs.map +0 -1
  362. package/dist/store/reducer.cjs.map +0 -1
  363. package/dist/store/reducer.d.cts.map +0 -1
  364. package/dist/store/reducer.d.mts.map +0 -1
  365. package/dist/store/reducer.mjs.map +0 -1
  366. package/dist/store/taskGraph.cjs.map +0 -1
  367. package/dist/store/taskGraph.d.cts.map +0 -1
  368. package/dist/store/taskGraph.d.mts.map +0 -1
  369. package/dist/store/taskGraph.mjs.map +0 -1
  370. package/dist/store/taskStore.cjs.map +0 -1
  371. package/dist/store/taskStore.d.cts.map +0 -1
  372. package/dist/store/taskStore.d.mts.map +0 -1
  373. package/dist/store/taskStore.mjs.map +0 -1
  374. package/dist/store/types.cjs.map +0 -1
  375. package/dist/store/types.d.cts.map +0 -1
  376. package/dist/store/types.d.mts.map +0 -1
  377. package/dist/store/types.mjs.map +0 -1
  378. package/dist/tool/promptGuidelines.cjs.map +0 -1
  379. package/dist/tool/promptGuidelines.d.cts.map +0 -1
  380. package/dist/tool/promptGuidelines.d.mts.map +0 -1
  381. package/dist/tool/promptGuidelines.mjs.map +0 -1
  382. package/dist/tool/responseEnvelope.cjs.map +0 -1
  383. package/dist/tool/responseEnvelope.d.cts.map +0 -1
  384. package/dist/tool/responseEnvelope.d.mts.map +0 -1
  385. package/dist/tool/responseEnvelope.mjs.map +0 -1
  386. package/dist/tool/schema.cjs.map +0 -1
  387. package/dist/tool/schema.d.cts.map +0 -1
  388. package/dist/tool/schema.d.mts.map +0 -1
  389. package/dist/tool/schema.mjs.map +0 -1
  390. package/dist/tool/taskTool.cjs.map +0 -1
  391. package/dist/tool/taskTool.d.cts.map +0 -1
  392. package/dist/tool/taskTool.d.mts.map +0 -1
  393. package/dist/tool/taskTool.mjs.map +0 -1
  394. package/dist/tui/format.cjs.map +0 -1
  395. package/dist/tui/format.mjs.map +0 -1
  396. package/dist/tui/selectors.cjs.map +0 -1
  397. package/dist/tui/selectors.mjs.map +0 -1
  398. package/dist/tui/taskOverlay.cjs.map +0 -1
  399. package/dist/tui/taskOverlay.mjs.map +0 -1
  400. package/dist/tui/taskSpace.cjs.map +0 -1
  401. package/dist/tui/taskSpace.mjs.map +0 -1
package/package.json CHANGED
@@ -1,12 +1,35 @@
1
1
  {
2
2
  "name": "@agimon-ai/doompi-task",
3
- "version": "0.0.1-alpha.6",
4
- "description": "Pi task tracking extension with file-backed tasks and subagent delegation",
3
+ "version": "0.0.1-alpha.64",
4
+ "description": "Persistent, dependency-aware task graphs and subagent delegation for Pi coding sessions.",
5
+ "keywords": [
6
+ "ai",
7
+ "coding-agent",
8
+ "delegation",
9
+ "developer-tools",
10
+ "doompi",
11
+ "pi-coding-agent",
12
+ "pi-package",
13
+ "subagents",
14
+ "task-graph",
15
+ "task-management"
16
+ ],
5
17
  "homepage": "https://agimon.ai",
18
+ "bugs": {
19
+ "url": "https://github.com/AgiFlow/doompi/issues"
20
+ },
6
21
  "license": "MIT",
7
22
  "author": "Vuong Ngo",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/AgiFlow/doompi.git",
26
+ "directory": "layers/task/doompi-task"
27
+ },
8
28
  "files": [
9
29
  "dist",
30
+ "src/web",
31
+ "src/exports/webClient.ts",
32
+ "src/types/webTasks.ts",
10
33
  "package.json"
11
34
  ],
12
35
  "type": "module",
@@ -44,11 +67,6 @@
44
67
  "import": "./dist/extensions/pi.mjs",
45
68
  "require": "./dist/extensions/pi.cjs"
46
69
  },
47
- "./extensions/doom": {
48
- "types": "./dist/extensions/doom.d.mts",
49
- "import": "./dist/extensions/doom.mjs",
50
- "require": "./dist/extensions/doom.cjs"
51
- },
52
70
  "./logSinkTelemetry": {
53
71
  "types": "./dist/logSinkTelemetry.d.mts",
54
72
  "import": "./dist/logSinkTelemetry.mjs",
@@ -114,6 +132,11 @@
114
132
  "import": "./dist/tool/taskTool.mjs",
115
133
  "require": "./dist/tool/taskTool.cjs"
116
134
  },
135
+ "./web-hub": {
136
+ "types": "./dist/webHub.d.mts",
137
+ "import": "./dist/webHub.mjs",
138
+ "require": "./dist/webHub.cjs"
139
+ },
117
140
  "./tui/format": {
118
141
  "types": "./dist/tui/format.d.mts",
119
142
  "import": "./dist/tui/format.mjs",
@@ -141,23 +164,30 @@
141
164
  "registry": "https://registry.npmjs.org/"
142
165
  },
143
166
  "dependencies": {
144
- "typebox": "1.1.38",
145
- "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.6",
146
- "@agimon-ai/doompi-telemetry": "0.0.1-alpha.6",
147
- "@agimon-ai/doompi-ui": "0.0.1-alpha.6"
167
+ "@deepseek-ai/cordis": "4.0.2",
168
+ "typebox": "1.3.25",
169
+ "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.63",
170
+ "@agimon-ai/doompi-telemetry": "0.0.1-alpha.62",
171
+ "@agimon-ai/doompi-ui": "0.0.1-alpha.64",
172
+ "@agimon-ai/doompi-web-contracts": "0.0.1-alpha.26",
173
+ "@agimon-ai/doompi-web-components": "0.0.1-alpha.23"
148
174
  },
149
175
  "devDependencies": {
150
- "@earendil-works/pi-coding-agent": "0.84.1",
151
- "@earendil-works/pi-tui": "0.84.1",
152
- "@types/node": "26.1.1",
153
- "@vitest/coverage-v8": "4.1.10",
154
- "tsdown": "0.22.14",
155
- "typescript": "6.0.3",
156
- "vitest": "4.1.10"
176
+ "@earendil-works/pi-coding-agent": "0.85.1",
177
+ "@earendil-works/pi-tui": "0.85.1",
178
+ "@tanstack/react-store": "0.11.1",
179
+ "@tanstack/store": "0.11.1",
180
+ "@types/node": "26.4.1",
181
+ "@types/react": "19.2.18",
182
+ "@vitest/coverage-v8": "5.0.0",
183
+ "react": "19.2.8",
184
+ "tsdown": "0.23.0",
185
+ "typescript": "7.0.2",
186
+ "vitest": "5.0.0"
157
187
  },
158
188
  "peerDependencies": {
159
- "@earendil-works/pi-coding-agent": "0.84.1",
160
- "@earendil-works/pi-tui": "0.84.1"
189
+ "@earendil-works/pi-coding-agent": "0.85.1",
190
+ "@earendil-works/pi-tui": "0.85.1"
161
191
  },
162
192
  "peerDependenciesMeta": {
163
193
  "@earendil-works/pi-coding-agent": {
@@ -170,6 +200,17 @@
170
200
  "engines": {
171
201
  "node": ">=22.19.0"
172
202
  },
203
+ "doompiWeb": {
204
+ "pluginId": "task",
205
+ "channels": [
206
+ "task_graph"
207
+ ],
208
+ "client": "./src/exports/webClient.ts",
209
+ "hub": {
210
+ "entry": "./src/exports/webHub.ts",
211
+ "dist": "./dist/webHub.mjs"
212
+ }
213
+ },
173
214
  "pi": {
174
215
  "extensions": [
175
216
  "./dist/extensions/pi.mjs"
@@ -178,7 +219,7 @@
178
219
  "scripts": {
179
220
  "build": "tsdown",
180
221
  "test": "vitest --run",
181
- "typecheck": "tsc --noEmit",
222
+ "typecheck": "tsc --noEmit && tsc --noEmit -p src/web/tsconfig.json",
182
223
  "lint": "oxlint . && oxfmt . --check",
183
224
  "fixcode": "oxlint . --fix && oxfmt ."
184
225
  }
@@ -0,0 +1 @@
1
+ export { webPlugin } from '../web/index.ts';
@@ -0,0 +1,24 @@
1
+ /** Browser-safe task view published by the cockpit hub channel. */
2
+ export const TASKS_CHANNEL_TYPE = 'task_graph';
3
+
4
+ export type WebTaskStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'deleted';
5
+
6
+ export interface WebTask {
7
+ id: number;
8
+ subject: string;
9
+ description?: string;
10
+ activeForm?: string;
11
+ status: WebTaskStatus;
12
+ blockedBy: number[];
13
+ owner?: string;
14
+ updatedAt?: string;
15
+ delegation?: {
16
+ agent?: string;
17
+ state?: string;
18
+ };
19
+ }
20
+
21
+ export interface WebTasksPayload {
22
+ tasks: WebTask[];
23
+ rev: number;
24
+ }
@@ -0,0 +1,250 @@
1
+ import {
2
+ Button,
3
+ Dialog,
4
+ DialogBody,
5
+ DialogContent,
6
+ DialogFooter,
7
+ DialogHeader,
8
+ DialogTitle,
9
+ Input,
10
+ Select,
11
+ SelectContent,
12
+ SelectItem,
13
+ SelectTrigger,
14
+ SelectValue,
15
+ Textarea,
16
+ } from '@agimon-ai/doompi-web-components';
17
+ import type { SessionFrameSender } from '@agimon-ai/doompi-web-contracts';
18
+ import { type ReactNode, useState } from 'react';
19
+ import type { WebTask, WebTaskStatus } from '../../types/webTasks.ts';
20
+ import { requestTaskEdit, requestTaskMessage, taskEditDraft, type TaskEditDraft } from '../stores/tasksStore.ts';
21
+
22
+ /** How the one task dialog is opened: reading it, changing it, or steering its run. */
23
+ export type TaskDialogMode = 'view' | 'edit' | 'message';
24
+
25
+ const STATUS_CHOICES: readonly WebTaskStatus[] = ['pending', 'in_progress', 'completed', 'failed'];
26
+ const DESCRIPTION_ROWS = 5;
27
+ const MESSAGE_ROWS = 4;
28
+
29
+ function FieldLabel({ children }: { children: string }) {
30
+ return <span className="text-[9px] font-bold tracking-[0.18em] text-doom-faint">{children}</span>;
31
+ }
32
+
33
+ function Field({ label, children }: { label: string; children: ReactNode }) {
34
+ return (
35
+ <div className="flex flex-col gap-1.5">
36
+ <FieldLabel>{label}</FieldLabel>
37
+ {children}
38
+ </div>
39
+ );
40
+ }
41
+
42
+ function ReadOnlyValue({ value, testId }: { value: string; testId: string }) {
43
+ return (
44
+ <span data-testid={testId} className="whitespace-pre-wrap break-words text-[11px] leading-relaxed text-doom-dim">
45
+ {value}
46
+ </span>
47
+ );
48
+ }
49
+
50
+ function TaskFacts({ task }: { task: WebTask }) {
51
+ return (
52
+ <div className="flex flex-wrap gap-5">
53
+ <Field label="STATUS">
54
+ <ReadOnlyValue testId="task-detail-status" value={task.status.replace('_', ' ')} />
55
+ </Field>
56
+ {task.activeForm ? (
57
+ <Field label="ACTIVE FORM">
58
+ <ReadOnlyValue testId="task-detail-active-form" value={task.activeForm} />
59
+ </Field>
60
+ ) : null}
61
+ {task.owner ? (
62
+ <Field label="OWNER">
63
+ <ReadOnlyValue testId="task-detail-owner" value={task.owner} />
64
+ </Field>
65
+ ) : null}
66
+ {task.delegation?.agent ? (
67
+ <Field label="DELEGATED TO">
68
+ <ReadOnlyValue
69
+ testId="task-detail-agent"
70
+ value={
71
+ task.delegation.state ? `${task.delegation.agent} · ${task.delegation.state}` : task.delegation.agent
72
+ }
73
+ />
74
+ </Field>
75
+ ) : null}
76
+ {task.blockedBy.length > 0 ? (
77
+ <Field label="BLOCKED BY">
78
+ <ReadOnlyValue testId="task-detail-blocked-by" value={task.blockedBy.map((id) => `#${id}`).join(', ')} />
79
+ </Field>
80
+ ) : null}
81
+ {task.updatedAt ? (
82
+ <Field label="UPDATED">
83
+ <ReadOnlyValue testId="task-detail-updated" value={task.updatedAt} />
84
+ </Field>
85
+ ) : null}
86
+ </div>
87
+ );
88
+ }
89
+
90
+ /**
91
+ * One task, read first and changed second. Every change leaves as a prompt the
92
+ * session can see, so the agent remains the only writer of task state.
93
+ */
94
+ export function TaskDetailDialog({
95
+ task,
96
+ sessionId,
97
+ mode: initialMode,
98
+ send,
99
+ onClose,
100
+ }: {
101
+ task: WebTask;
102
+ sessionId: string;
103
+ mode: TaskDialogMode;
104
+ send: SessionFrameSender;
105
+ onClose: () => void;
106
+ }) {
107
+ const [mode, setMode] = useState<TaskDialogMode>(initialMode);
108
+ const [draft, setDraft] = useState<TaskEditDraft>(() => taskEditDraft(task));
109
+ const [message, setMessage] = useState('');
110
+ const agent = task.delegation?.agent;
111
+
112
+ const submitEdit = (): void => {
113
+ if (requestTaskEdit(send, sessionId, task, draft)) onClose();
114
+ };
115
+ const submitMessage = (): void => {
116
+ if (!message.trim() || !agent) return;
117
+ requestTaskMessage(send, sessionId, task.id, agent, message);
118
+ onClose();
119
+ };
120
+
121
+ return (
122
+ <Dialog
123
+ open
124
+ onOpenChange={(open) => {
125
+ if (!open) onClose();
126
+ }}
127
+ >
128
+ <DialogContent width="lg" data-testid="task-detail-dialog" data-mode={mode} aria-describedby={undefined}>
129
+ <DialogHeader>
130
+ <div className="flex min-w-0 flex-col items-start gap-1 sm:flex-row sm:items-center sm:gap-2.5">
131
+ <span className="text-[9px] text-doom-faint">task #{task.id}</span>
132
+ <DialogTitle data-testid="task-detail-title" className="max-w-full break-words">
133
+ {task.subject}
134
+ </DialogTitle>
135
+ </div>
136
+ </DialogHeader>
137
+ <DialogBody>
138
+ {mode === 'view' ? (
139
+ <>
140
+ <Field label="DESCRIPTION">
141
+ <ReadOnlyValue
142
+ testId="task-detail-description"
143
+ value={task.description ?? 'no description on this task'}
144
+ />
145
+ </Field>
146
+ <TaskFacts task={task} />
147
+ <DialogFooter>
148
+ <span className="min-w-0 flex-1" />
149
+ {agent ? (
150
+ <Button
151
+ variant="outline"
152
+ size="xs"
153
+ data-testid="task-detail-open-message"
154
+ onClick={() => setMode('message')}
155
+ >
156
+ message agent
157
+ </Button>
158
+ ) : null}
159
+ <Button variant="primary" size="xs" data-testid="task-detail-open-edit" onClick={() => setMode('edit')}>
160
+ edit
161
+ </Button>
162
+ </DialogFooter>
163
+ </>
164
+ ) : null}
165
+
166
+ {mode === 'edit' ? (
167
+ <>
168
+ <Field label="SUBJECT">
169
+ <Input
170
+ data-testid="task-detail-subject-input"
171
+ autoFocus
172
+ value={draft.subject}
173
+ onChange={(event) => setDraft({ ...draft, subject: event.target.value })}
174
+ />
175
+ </Field>
176
+ <Field label="DESCRIPTION">
177
+ <Textarea
178
+ data-testid="task-detail-description-input"
179
+ rows={DESCRIPTION_ROWS}
180
+ value={draft.description}
181
+ placeholder="what this task covers"
182
+ onChange={(event) => setDraft({ ...draft, description: event.target.value })}
183
+ />
184
+ </Field>
185
+ <Field label="STATUS">
186
+ <Select
187
+ value={draft.status}
188
+ onValueChange={(value) => setDraft({ ...draft, status: value as WebTaskStatus })}
189
+ >
190
+ <SelectTrigger
191
+ data-testid="task-detail-status-input"
192
+ className="h-7 w-full min-w-0 text-[10px] sm:min-w-[200px]"
193
+ >
194
+ <SelectValue />
195
+ </SelectTrigger>
196
+ <SelectContent>
197
+ {STATUS_CHOICES.map((status) => (
198
+ <SelectItem key={status} value={status}>
199
+ {status.replace('_', ' ')}
200
+ </SelectItem>
201
+ ))}
202
+ </SelectContent>
203
+ </Select>
204
+ </Field>
205
+ <DialogFooter className="flex-wrap sm:flex-nowrap">
206
+ <span className="w-full text-[9px] text-doom-faint sm:w-auto">
207
+ saved as one prompt naming only the fields you changed
208
+ </span>
209
+ <span className="min-w-0 flex-1" />
210
+ <Button variant="outline" size="xs" data-testid="task-detail-cancel" onClick={onClose}>
211
+ cancel
212
+ </Button>
213
+ <Button variant="primary" size="xs" data-testid="task-detail-save" onClick={submitEdit}>
214
+ save
215
+ </Button>
216
+ </DialogFooter>
217
+ </>
218
+ ) : null}
219
+
220
+ {mode === 'message' && agent ? (
221
+ <>
222
+ <Field label={`MESSAGE TO ${agent.toUpperCase()}`}>
223
+ <Textarea
224
+ data-testid="task-detail-message-input"
225
+ autoFocus
226
+ rows={MESSAGE_ROWS}
227
+ value={message}
228
+ placeholder="guidance for the run working on this task"
229
+ onChange={(event) => setMessage(event.target.value)}
230
+ />
231
+ </Field>
232
+ <DialogFooter className="flex-wrap sm:flex-nowrap">
233
+ <span className="w-full text-[9px] text-doom-faint sm:w-auto">
234
+ steers the run, it does not edit the task
235
+ </span>
236
+ <span className="min-w-0 flex-1" />
237
+ <Button variant="outline" size="xs" data-testid="task-detail-cancel" onClick={onClose}>
238
+ cancel
239
+ </Button>
240
+ <Button variant="primary" size="xs" data-testid="task-detail-send" onClick={submitMessage}>
241
+ send
242
+ </Button>
243
+ </DialogFooter>
244
+ </>
245
+ ) : null}
246
+ </DialogBody>
247
+ </DialogContent>
248
+ </Dialog>
249
+ );
250
+ }
@@ -0,0 +1,119 @@
1
+ import {
2
+ MessageItem,
3
+ MessageItemBody,
4
+ MessageItemHeader,
5
+ MessageItemStatus,
6
+ type StatusTone,
7
+ toolTone,
8
+ } from '@agimon-ai/doompi-web-components';
9
+ import type { ToolMessageRenderProps } from '@agimon-ai/doompi-web-contracts';
10
+ import {
11
+ STATUS_LABEL,
12
+ type TaskResultTone,
13
+ type TaskRow,
14
+ type TaskStatus,
15
+ taskCallView,
16
+ taskResultView,
17
+ } from '../lib/taskToolFormat.ts';
18
+
19
+ const STATUS_TONE: Record<TaskStatus, string> = {
20
+ pending: 'text-doom-dim',
21
+ in_progress: 'text-doom-yellow',
22
+ completed: 'text-doom-green',
23
+ failed: 'text-doom-red',
24
+ deleted: 'text-doom-faint',
25
+ };
26
+
27
+ const RESULT_TONE: Record<TaskResultTone, StatusTone> = {
28
+ running: 'running',
29
+ ok: 'ok',
30
+ error: 'error',
31
+ warning: 'running',
32
+ };
33
+
34
+ /** One task row: status glyph, id, subject and chips on the left, the status label flushed right. */
35
+ function TaskRowLine({ row }: { row: TaskRow }) {
36
+ return (
37
+ <li data-testid="tool-result-task-row" data-task-id={row.id} className="flex items-baseline gap-2">
38
+ <span className={`shrink-0 ${STATUS_TONE[row.status]}`}>{row.glyph}</span>
39
+ <span className="shrink-0 text-doom-faint">#{row.id}</span>
40
+ <span
41
+ className={`min-w-0 flex-1 truncate ${row.closed ? 'text-doom-faint line-through' : row.status === 'in_progress' ? 'text-doom-blue' : 'text-doom-text'}`}
42
+ >
43
+ {row.subject}
44
+ {row.agent ? <span className="text-doom-faint"> [{row.agent}]</span> : null}
45
+ {row.activeForm ? <span className="text-doom-faint"> ({row.activeForm})</span> : null}
46
+ {row.blockedBy.length > 0 ? (
47
+ <span className="text-doom-faint"> ⛓ {row.blockedBy.map((id) => `#${id}`).join(',')}</span>
48
+ ) : null}
49
+ </span>
50
+ <span className={`shrink-0 ${STATUS_TONE[row.status]}`}>{STATUS_LABEL[row.status]}</span>
51
+ </li>
52
+ );
53
+ }
54
+
55
+ /**
56
+ * The task tool's timeline item: `glyph action subject` with the assignee or
57
+ * list filter in the header, as renderTaskCall shows it; the rows the action
58
+ * touched, then the batch or list summary, in the body, as renderTaskResult
59
+ * lays it out.
60
+ */
61
+ export function TaskToolMessage({ args, result, output, running, isError }: ToolMessageRenderProps) {
62
+ const call = taskCallView(args);
63
+ const collapsed = taskResultView({ details: result?.details, output, expanded: false, isPartial: running, isError });
64
+ const full = taskResultView({ details: result?.details, output, expanded: true, isPartial: running, isError });
65
+ const hidden = full.rows.length - collapsed.rows.length + (full.errorLines.length - collapsed.errorLines.length);
66
+ return (
67
+ <MessageItem tone={toolTone({ running, isError })} expandable={hidden > 0}>
68
+ {({ expanded }) => {
69
+ const view = expanded ? full : collapsed;
70
+ const empty = view.rows.length === 0 && view.errorLines.length === 0 && view.status === null;
71
+ return (
72
+ <>
73
+ <MessageItemHeader title="task">
74
+ <span data-testid="tool-call-task" className="flex min-w-0 flex-1 items-center gap-1.5">
75
+ <span className="shrink-0 text-doom-text">
76
+ {call.glyph} {call.action}
77
+ </span>
78
+ {call.subject ? (
79
+ <span
80
+ className={`min-w-0 truncate ${call.subjectTone === 'accent' ? 'text-doom-blue' : 'text-doom-dim'}`}
81
+ >
82
+ {call.subject}
83
+ </span>
84
+ ) : null}
85
+ {call.detail ? <span className="shrink-0 text-doom-faint">{call.detail}</span> : null}
86
+ </span>
87
+ </MessageItemHeader>
88
+ {empty ? null : (
89
+ <MessageItemBody data-testid="tool-result-task" className="flex flex-col gap-1">
90
+ {view.rows.length > 0 ? (
91
+ <ul className="flex flex-col gap-0.5">
92
+ {view.rows.map((row) => (
93
+ <TaskRowLine key={row.id} row={row} />
94
+ ))}
95
+ </ul>
96
+ ) : null}
97
+ {view.errorLines.length > 0 ? (
98
+ <pre className="whitespace-pre-wrap break-words font-mono text-doom-dim">
99
+ {view.errorLines.join('\n')}
100
+ </pre>
101
+ ) : null}
102
+ {!expanded && hidden > 0 ? <MessageItemStatus expands>{hidden} more</MessageItemStatus> : null}
103
+ {view.status ? (
104
+ <MessageItemStatus
105
+ data-testid="tool-result-task-status"
106
+ tone={RESULT_TONE[view.status.tone]}
107
+ glyph={view.status.glyph}
108
+ >
109
+ {view.status.text}
110
+ </MessageItemStatus>
111
+ ) : null}
112
+ </MessageItemBody>
113
+ )}
114
+ </>
115
+ );
116
+ }}
117
+ </MessageItem>
118
+ );
119
+ }