@agimon-ai/doompi-task 0.0.1-alpha.12 → 0.0.1-alpha.121

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 (463) hide show
  1. package/README.md +123 -15
  2. package/dist/apiContracts.cjs +54 -0
  3. package/dist/apiContracts.cjs.map +1 -0
  4. package/dist/apiContracts.d.mts +53 -0
  5. package/dist/apiContracts.d.mts.map +1 -0
  6. package/dist/apiContracts.mjs +49 -0
  7. package/dist/apiContracts.mjs.map +1 -0
  8. package/dist/commands.cjs +4 -1
  9. package/dist/commands.d.mts +20 -2
  10. package/dist/commands.d.mts.map +1 -0
  11. package/dist/commands.mjs +2 -1
  12. package/dist/config-BPNE_wEU.cjs +173 -0
  13. package/dist/config-BPNE_wEU.cjs.map +1 -0
  14. package/dist/config-DmsCPDuF.mjs +72 -0
  15. package/dist/config-DmsCPDuF.mjs.map +1 -0
  16. package/dist/config.cjs +19 -1
  17. package/dist/config.d.mts +2 -2
  18. package/dist/config.mjs +2 -1
  19. package/dist/delegation-3hMdTFXF.cjs +661 -0
  20. package/dist/delegation-3hMdTFXF.cjs.map +1 -0
  21. package/dist/delegation-BiOy3_7g.mjs +7 -0
  22. package/dist/delegation-BiOy3_7g.mjs.map +1 -0
  23. package/dist/delegation-CkGbRaOl.mjs +626 -0
  24. package/dist/delegation-CkGbRaOl.mjs.map +1 -0
  25. package/dist/delegation-LDpHP2CC.cjs +12 -0
  26. package/dist/delegation-LDpHP2CC.cjs.map +1 -0
  27. package/dist/delegation-Ot2xltLi.d.mts +6 -0
  28. package/dist/delegation-Ot2xltLi.d.mts.map +1 -0
  29. package/dist/delegationManager.cjs +10 -0
  30. package/dist/delegationManager.d.mts +3 -0
  31. package/dist/delegationManager.mjs +3 -0
  32. package/dist/delegationPlatform-Cfn-Lqew.cjs +95 -0
  33. package/dist/delegationPlatform-Cfn-Lqew.cjs.map +1 -0
  34. package/dist/delegationPlatform-DZ4SZ8a5.mjs +64 -0
  35. package/dist/delegationPlatform-DZ4SZ8a5.mjs.map +1 -0
  36. package/dist/extensions/mcp-ui.mjs +23 -0
  37. package/dist/extensions/mcp-ui.mjs.map +1 -0
  38. package/dist/extensions/mcp.cjs +1876 -0
  39. package/dist/extensions/mcp.cjs.map +1 -0
  40. package/dist/extensions/mcp.d.mts +5 -0
  41. package/dist/extensions/mcp.d.mts.map +1 -0
  42. package/dist/extensions/mcp.mjs +1846 -0
  43. package/dist/extensions/mcp.mjs.map +1 -0
  44. package/dist/extensions/pi.cjs +437 -1
  45. package/dist/extensions/pi.cjs.map +1 -1
  46. package/dist/extensions/pi.d.mts +5 -2
  47. package/dist/extensions/pi.d.mts.map +1 -0
  48. package/dist/extensions/pi.mjs +432 -1
  49. package/dist/extensions/pi.mjs.map +1 -1
  50. package/dist/extensions/server.cjs +380 -0
  51. package/dist/extensions/server.cjs.map +1 -0
  52. package/dist/extensions/server.d.mts +5 -0
  53. package/dist/extensions/server.d.mts.map +1 -0
  54. package/dist/extensions/server.mjs +375 -0
  55. package/dist/extensions/server.mjs.map +1 -0
  56. package/dist/extensions/web.mjs +1013 -0
  57. package/dist/extensions/web.mjs.map +1 -0
  58. package/dist/format.cli-ChQsP1MQ.cjs +393 -0
  59. package/dist/format.cli-ChQsP1MQ.cjs.map +1 -0
  60. package/dist/format.cli-Cnc591eb.mjs +322 -0
  61. package/dist/format.cli-Cnc591eb.mjs.map +1 -0
  62. package/dist/{services/delegation/manager.d.mts → index-3-3ZJlaH.d.mts} +35 -31
  63. package/dist/index-3-3ZJlaH.d.mts.map +1 -0
  64. package/dist/{adapters/store/taskStore.d.cts → index-B7oVjSey.d.mts} +11 -28
  65. package/dist/index-B7oVjSey.d.mts.map +1 -0
  66. package/dist/{services/store/reconcile.d.cts → index-BNMm9g0K.d.mts} +4 -4
  67. package/dist/index-BNMm9g0K.d.mts.map +1 -0
  68. package/dist/{commands/task/responseEnvelope.d.cts → index-C3DgOhEm.d.mts} +17 -5
  69. package/dist/index-C3DgOhEm.d.mts.map +1 -0
  70. package/dist/{types/config.d.cts → index-D4goIk4Z.d.mts} +8 -3
  71. package/dist/index-D4goIk4Z.d.mts.map +1 -0
  72. package/dist/{services/store/reducer.d.cts → index-DIpc6_uJ.d.mts} +5 -5
  73. package/dist/index-DIpc6_uJ.d.mts.map +1 -0
  74. package/dist/{adapters/store/paths.d.cts → index-XY9VPmfm.d.mts} +6 -6
  75. package/dist/index-XY9VPmfm.d.mts.map +1 -0
  76. package/dist/index.cjs +106 -1
  77. package/dist/index.d.mts +16 -16
  78. package/dist/index.mjs +16 -1
  79. package/dist/invariants-DhjEjBPU.cjs +79 -0
  80. package/dist/invariants-DhjEjBPU.cjs.map +1 -0
  81. package/dist/invariants-q_UamF7D.mjs +62 -0
  82. package/dist/invariants-q_UamF7D.mjs.map +1 -0
  83. package/dist/logSinkTelemetry-C5QjZipw.mjs +41 -0
  84. package/dist/logSinkTelemetry-C5QjZipw.mjs.map +1 -0
  85. package/dist/logSinkTelemetry-CqiTuh3a.cjs +52 -0
  86. package/dist/logSinkTelemetry-CqiTuh3a.cjs.map +1 -0
  87. package/dist/logSinkTelemetry.cjs +6 -1
  88. package/dist/logSinkTelemetry.d.mts +23 -2
  89. package/dist/logSinkTelemetry.d.mts.map +1 -0
  90. package/dist/logSinkTelemetry.mjs +3 -1
  91. package/dist/paths-Bg8EEbk1.mjs +218 -0
  92. package/dist/paths-Bg8EEbk1.mjs.map +1 -0
  93. package/dist/paths-BsFVRulr.cjs +320 -0
  94. package/dist/paths-BsFVRulr.cjs.map +1 -0
  95. package/dist/processLiveness-Ccd9wenT.mjs +20 -0
  96. package/dist/processLiveness-Ccd9wenT.mjs.map +1 -0
  97. package/dist/processLiveness-umpNgsPR.cjs +25 -0
  98. package/dist/processLiveness-umpNgsPR.cjs.map +1 -0
  99. package/dist/promptGuidelines-DaxWrqud.d.mts +14 -0
  100. package/dist/promptGuidelines-DaxWrqud.d.mts.map +1 -0
  101. package/dist/promptGuidelines-g4QT8GNM.mjs +26 -0
  102. package/dist/promptGuidelines-g4QT8GNM.mjs.map +1 -0
  103. package/dist/promptGuidelines-j_SZTzlH.cjs +31 -0
  104. package/dist/promptGuidelines-j_SZTzlH.cjs.map +1 -0
  105. package/dist/reconcile-BcD-hTbd.mjs +63 -0
  106. package/dist/reconcile-BcD-hTbd.mjs.map +1 -0
  107. package/dist/reconcile-cRL0NjDr.cjs +80 -0
  108. package/dist/reconcile-cRL0NjDr.cjs.map +1 -0
  109. package/dist/reducer-BEfJFM5L.mjs +345 -0
  110. package/dist/reducer-BEfJFM5L.mjs.map +1 -0
  111. package/dist/reducer-BV0YIZ2o.cjs +380 -0
  112. package/dist/reducer-BV0YIZ2o.cjs.map +1 -0
  113. package/dist/root.cli-swHZqusx.d.mts +56 -0
  114. package/dist/root.cli-swHZqusx.d.mts.map +1 -0
  115. package/dist/selectors-BaS6dObz.mjs +142 -0
  116. package/dist/selectors-BaS6dObz.mjs.map +1 -0
  117. package/dist/{tui/selectors.d.cts → selectors-DPDPPjH3.d.mts} +11 -4
  118. package/dist/selectors-DPDPPjH3.d.mts.map +1 -0
  119. package/dist/selectors-b-69vb4W.cjs +189 -0
  120. package/dist/selectors-b-69vb4W.cjs.map +1 -0
  121. package/dist/storeInvariants.cjs +5 -0
  122. package/dist/storeInvariants.d.mts +23 -0
  123. package/dist/storeInvariants.d.mts.map +1 -0
  124. package/dist/storeInvariants.mjs +2 -0
  125. package/dist/storePaths.cjs +14 -0
  126. package/dist/storePaths.d.mts +2 -0
  127. package/dist/storePaths.mjs +2 -0
  128. package/dist/storeProcessLiveness.cjs +3 -0
  129. package/dist/{services/store/processLiveness.d.cts → storeProcessLiveness.d.mts} +3 -4
  130. package/dist/storeProcessLiveness.d.mts.map +1 -0
  131. package/dist/storeProcessLiveness.mjs +2 -0
  132. package/dist/storeReconcile.cjs +5 -0
  133. package/dist/storeReconcile.d.mts +2 -0
  134. package/dist/storeReconcile.mjs +2 -0
  135. package/dist/storeReducer.cjs +8 -0
  136. package/dist/storeReducer.d.mts +2 -0
  137. package/dist/storeReducer.mjs +2 -0
  138. package/dist/storeTaskGraph.cjs +7 -0
  139. package/dist/storeTaskGraph.d.mts +2 -0
  140. package/dist/storeTaskGraph.mjs +2 -0
  141. package/dist/storeTaskStore.cjs +3 -0
  142. package/dist/storeTaskStore.d.mts +2 -0
  143. package/dist/storeTaskStore.mjs +2 -0
  144. package/dist/storeTypes.cjs +6 -0
  145. package/dist/storeTypes.d.mts +2 -0
  146. package/dist/storeTypes.mjs +2 -0
  147. package/dist/task-B4aF5J9s.mjs +6 -0
  148. package/dist/task-B4aF5J9s.mjs.map +1 -0
  149. package/dist/task-CXF9VULl.cjs +49 -0
  150. package/dist/task-CXF9VULl.cjs.map +1 -0
  151. package/dist/task-CkFjC3Fo.d.mts +5 -0
  152. package/dist/task-CkFjC3Fo.d.mts.map +1 -0
  153. package/dist/{schemas/task.d.mts → task-DHSvdK6E.d.mts} +33 -17
  154. package/dist/task-DHSvdK6E.d.mts.map +1 -0
  155. package/dist/task-DKHKuems.mjs +116 -0
  156. package/dist/task-DKHKuems.mjs.map +1 -0
  157. package/dist/task-DaagqdPK.cjs +11 -0
  158. package/dist/task-DaagqdPK.cjs.map +1 -0
  159. package/dist/task-Dqy88_rr.cjs +193 -0
  160. package/dist/task-Dqy88_rr.cjs.map +1 -0
  161. package/dist/task-giCbpKzV.mjs +26 -0
  162. package/dist/task-giCbpKzV.mjs.map +1 -0
  163. package/dist/{services/store/types.d.mts → task-hLh4BOO7.d.mts} +37 -15
  164. package/dist/task-hLh4BOO7.d.mts.map +1 -0
  165. package/dist/task-space.cli-BH4Iy_7m.cjs +372 -0
  166. package/dist/task-space.cli-BH4Iy_7m.cjs.map +1 -0
  167. package/dist/task-space.cli-CMYNjgOW.mjs +355 -0
  168. package/dist/task-space.cli-CMYNjgOW.mjs.map +1 -0
  169. package/dist/task.cli-BM34E7GG.mjs +157 -0
  170. package/dist/task.cli-BM34E7GG.mjs.map +1 -0
  171. package/dist/task.cli-CiTkjUaX.cjs +174 -0
  172. package/dist/task.cli-CiTkjUaX.cjs.map +1 -0
  173. package/dist/taskGraph-BOQvT0-M.mjs +63 -0
  174. package/dist/taskGraph-BOQvT0-M.mjs.map +1 -0
  175. package/dist/taskGraph-BskRslrr.cjs +92 -0
  176. package/dist/taskGraph-BskRslrr.cjs.map +1 -0
  177. package/dist/{services/store/taskGraph.d.cts → taskGraph-YQXCfXTn.d.mts} +4 -4
  178. package/dist/taskGraph-YQXCfXTn.d.mts.map +1 -0
  179. package/dist/taskOverlay-B5wJHiml.cjs +175 -0
  180. package/dist/taskOverlay-B5wJHiml.cjs.map +1 -0
  181. package/dist/taskOverlay-CljDoTj_.mjs +164 -0
  182. package/dist/taskOverlay-CljDoTj_.mjs.map +1 -0
  183. package/dist/taskResult-D2G7b4w-.cjs +224 -0
  184. package/dist/taskResult-D2G7b4w-.cjs.map +1 -0
  185. package/dist/taskResult-edBAAKSH.mjs +165 -0
  186. package/dist/taskResult-edBAAKSH.mjs.map +1 -0
  187. package/dist/taskStore-CFx12KJk.mjs +213 -0
  188. package/dist/taskStore-CFx12KJk.mjs.map +1 -0
  189. package/dist/taskStore-T1pPy-UJ.cjs +220 -0
  190. package/dist/taskStore-T1pPy-UJ.cjs.map +1 -0
  191. package/dist/tasks.cli-8VvuN9YQ.cjs +40 -0
  192. package/dist/tasks.cli-8VvuN9YQ.cjs.map +1 -0
  193. package/dist/tasks.cli-BZj83YD_.mjs +29 -0
  194. package/dist/tasks.cli-BZj83YD_.mjs.map +1 -0
  195. package/dist/telemetry-DOyZLj8E.d.mts +36 -0
  196. package/dist/telemetry-DOyZLj8E.d.mts.map +1 -0
  197. package/dist/telemetry-I4md7Xzz.cjs +31 -0
  198. package/dist/telemetry-I4md7Xzz.cjs.map +1 -0
  199. package/dist/telemetry-PmX_1Y8a.mjs +26 -0
  200. package/dist/telemetry-PmX_1Y8a.mjs.map +1 -0
  201. package/dist/toolPromptGuidelines.cjs +3 -0
  202. package/dist/toolPromptGuidelines.d.mts +2 -0
  203. package/dist/toolPromptGuidelines.mjs +2 -0
  204. package/dist/toolResponseEnvelope.cjs +12 -0
  205. package/dist/toolResponseEnvelope.d.mts +2 -0
  206. package/dist/toolResponseEnvelope.mjs +2 -0
  207. package/dist/toolSchema.cjs +17 -0
  208. package/dist/toolSchema.d.mts +3 -0
  209. package/dist/toolSchema.mjs +3 -0
  210. package/dist/toolTaskTool.cjs +6 -0
  211. package/dist/toolTaskTool.d.mts +3 -0
  212. package/dist/toolTaskTool.mjs +3 -0
  213. package/dist/tuiFormat.cjs +14 -0
  214. package/dist/tuiFormat.d.mts +61 -0
  215. package/dist/tuiFormat.d.mts.map +1 -0
  216. package/dist/tuiFormat.mjs +2 -0
  217. package/dist/tuiSelectors.cjs +10 -0
  218. package/dist/tuiSelectors.d.mts +2 -0
  219. package/dist/tuiSelectors.mjs +2 -0
  220. package/dist/tuiTaskOverlay.cjs +4 -0
  221. package/dist/{tui/taskOverlay.d.cts → tuiTaskOverlay.d.mts} +9 -8
  222. package/dist/tuiTaskOverlay.d.mts.map +1 -0
  223. package/dist/tuiTaskOverlay.mjs +2 -0
  224. package/dist/tuiTaskSpace.cjs +5 -0
  225. package/dist/{tui/taskSpace.d.cts → tuiTaskSpace.d.mts} +11 -13
  226. package/dist/tuiTaskSpace.d.mts.map +1 -0
  227. package/dist/tuiTaskSpace.mjs +2 -0
  228. package/package.json +175 -109
  229. package/src/types/webTasks.ts +24 -0
  230. package/dist/_virtual/_rolldown/runtime.cjs +0 -1
  231. package/dist/adapters/pi/extension.cjs +0 -3
  232. package/dist/adapters/pi/extension.cjs.map +0 -1
  233. package/dist/adapters/pi/extension.d.cts +0 -12
  234. package/dist/adapters/pi/extension.d.cts.map +0 -1
  235. package/dist/adapters/pi/extension.d.mts +0 -12
  236. package/dist/adapters/pi/extension.d.mts.map +0 -1
  237. package/dist/adapters/pi/extension.mjs +0 -3
  238. package/dist/adapters/pi/extension.mjs.map +0 -1
  239. package/dist/adapters/store/paths.cjs +0 -2
  240. package/dist/adapters/store/paths.cjs.map +0 -1
  241. package/dist/adapters/store/paths.d.cts.map +0 -1
  242. package/dist/adapters/store/paths.d.mts +0 -26
  243. package/dist/adapters/store/paths.d.mts.map +0 -1
  244. package/dist/adapters/store/paths.mjs +0 -2
  245. package/dist/adapters/store/paths.mjs.map +0 -1
  246. package/dist/adapters/store/taskStore.cjs +0 -2
  247. package/dist/adapters/store/taskStore.cjs.map +0 -1
  248. package/dist/adapters/store/taskStore.d.cts.map +0 -1
  249. package/dist/adapters/store/taskStore.d.mts +0 -87
  250. package/dist/adapters/store/taskStore.d.mts.map +0 -1
  251. package/dist/adapters/store/taskStore.mjs +0 -2
  252. package/dist/adapters/store/taskStore.mjs.map +0 -1
  253. package/dist/adapters/telemetry/logSinkTelemetry.cjs +0 -2
  254. package/dist/adapters/telemetry/logSinkTelemetry.cjs.map +0 -1
  255. package/dist/adapters/telemetry/logSinkTelemetry.d.cts +0 -52
  256. package/dist/adapters/telemetry/logSinkTelemetry.d.cts.map +0 -1
  257. package/dist/adapters/telemetry/logSinkTelemetry.d.mts +0 -52
  258. package/dist/adapters/telemetry/logSinkTelemetry.d.mts.map +0 -1
  259. package/dist/adapters/telemetry/logSinkTelemetry.mjs +0 -2
  260. package/dist/adapters/telemetry/logSinkTelemetry.mjs.map +0 -1
  261. package/dist/commands/index.cjs +0 -2
  262. package/dist/commands/index.cjs.map +0 -1
  263. package/dist/commands/index.d.cts +0 -15
  264. package/dist/commands/index.d.cts.map +0 -1
  265. package/dist/commands/index.d.mts +0 -15
  266. package/dist/commands/index.d.mts.map +0 -1
  267. package/dist/commands/index.mjs +0 -2
  268. package/dist/commands/index.mjs.map +0 -1
  269. package/dist/commands/task/promptGuidelines.cjs +0 -2
  270. package/dist/commands/task/promptGuidelines.cjs.map +0 -1
  271. package/dist/commands/task/promptGuidelines.d.cts +0 -5
  272. package/dist/commands/task/promptGuidelines.d.cts.map +0 -1
  273. package/dist/commands/task/promptGuidelines.d.mts +0 -5
  274. package/dist/commands/task/promptGuidelines.d.mts.map +0 -1
  275. package/dist/commands/task/promptGuidelines.mjs +0 -2
  276. package/dist/commands/task/promptGuidelines.mjs.map +0 -1
  277. package/dist/commands/task/responseEnvelope.cjs +0 -6
  278. package/dist/commands/task/responseEnvelope.cjs.map +0 -1
  279. package/dist/commands/task/responseEnvelope.d.cts.map +0 -1
  280. package/dist/commands/task/responseEnvelope.d.mts +0 -39
  281. package/dist/commands/task/responseEnvelope.d.mts.map +0 -1
  282. package/dist/commands/task/responseEnvelope.mjs +0 -6
  283. package/dist/commands/task/responseEnvelope.mjs.map +0 -1
  284. package/dist/commands/task/taskTool.cjs +0 -3
  285. package/dist/commands/task/taskTool.cjs.map +0 -1
  286. package/dist/commands/task/taskTool.d.cts +0 -18
  287. package/dist/commands/task/taskTool.d.cts.map +0 -1
  288. package/dist/commands/task/taskTool.d.mts +0 -18
  289. package/dist/commands/task/taskTool.d.mts.map +0 -1
  290. package/dist/commands/task/taskTool.mjs +0 -3
  291. package/dist/commands/task/taskTool.mjs.map +0 -1
  292. package/dist/commands.d.cts +0 -2
  293. package/dist/config.d.cts +0 -2
  294. package/dist/delegation/manager.cjs +0 -1
  295. package/dist/delegation/manager.d.cts +0 -2
  296. package/dist/delegation/manager.d.mts +0 -2
  297. package/dist/delegation/manager.mjs +0 -1
  298. package/dist/extension.cjs +0 -1
  299. package/dist/extension.d.cts +0 -2
  300. package/dist/extension.d.mts +0 -2
  301. package/dist/extension.mjs +0 -1
  302. package/dist/extensions/doom.cjs +0 -2
  303. package/dist/extensions/doom.cjs.map +0 -1
  304. package/dist/extensions/doom.d.cts +0 -6
  305. package/dist/extensions/doom.d.cts.map +0 -1
  306. package/dist/extensions/doom.d.mts +0 -7
  307. package/dist/extensions/doom.d.mts.map +0 -1
  308. package/dist/extensions/doom.mjs +0 -2
  309. package/dist/extensions/doom.mjs.map +0 -1
  310. package/dist/extensions/pi.d.cts +0 -2
  311. package/dist/index.d.cts +0 -16
  312. package/dist/logSinkTelemetry.d.cts +0 -2
  313. package/dist/schemas/task.cjs +0 -2
  314. package/dist/schemas/task.cjs.map +0 -1
  315. package/dist/schemas/task.d.cts +0 -86
  316. package/dist/schemas/task.d.cts.map +0 -1
  317. package/dist/schemas/task.d.mts.map +0 -1
  318. package/dist/schemas/task.mjs +0 -2
  319. package/dist/schemas/task.mjs.map +0 -1
  320. package/dist/services/delegation/manager.cjs +0 -6
  321. package/dist/services/delegation/manager.cjs.map +0 -1
  322. package/dist/services/delegation/manager.d.cts +0 -188
  323. package/dist/services/delegation/manager.d.cts.map +0 -1
  324. package/dist/services/delegation/manager.d.mts.map +0 -1
  325. package/dist/services/delegation/manager.mjs +0 -6
  326. package/dist/services/delegation/manager.mjs.map +0 -1
  327. package/dist/services/narration/taskNarration.cjs +0 -2
  328. package/dist/services/narration/taskNarration.cjs.map +0 -1
  329. package/dist/services/narration/taskNarration.mjs +0 -2
  330. package/dist/services/narration/taskNarration.mjs.map +0 -1
  331. package/dist/services/store/invariants.cjs +0 -2
  332. package/dist/services/store/invariants.cjs.map +0 -1
  333. package/dist/services/store/invariants.d.cts +0 -14
  334. package/dist/services/store/invariants.d.cts.map +0 -1
  335. package/dist/services/store/invariants.d.mts +0 -14
  336. package/dist/services/store/invariants.d.mts.map +0 -1
  337. package/dist/services/store/invariants.mjs +0 -2
  338. package/dist/services/store/invariants.mjs.map +0 -1
  339. package/dist/services/store/paths.cjs +0 -1
  340. package/dist/services/store/paths.mjs +0 -1
  341. package/dist/services/store/processLiveness.cjs +0 -2
  342. package/dist/services/store/processLiveness.cjs.map +0 -1
  343. package/dist/services/store/processLiveness.d.cts.map +0 -1
  344. package/dist/services/store/processLiveness.d.mts +0 -12
  345. package/dist/services/store/processLiveness.d.mts.map +0 -1
  346. package/dist/services/store/processLiveness.mjs +0 -2
  347. package/dist/services/store/processLiveness.mjs.map +0 -1
  348. package/dist/services/store/reconcile.cjs +0 -2
  349. package/dist/services/store/reconcile.cjs.map +0 -1
  350. package/dist/services/store/reconcile.d.cts.map +0 -1
  351. package/dist/services/store/reconcile.d.mts +0 -34
  352. package/dist/services/store/reconcile.d.mts.map +0 -1
  353. package/dist/services/store/reconcile.mjs +0 -2
  354. package/dist/services/store/reconcile.mjs.map +0 -1
  355. package/dist/services/store/reducer.cjs +0 -3
  356. package/dist/services/store/reducer.cjs.map +0 -1
  357. package/dist/services/store/reducer.d.cts.map +0 -1
  358. package/dist/services/store/reducer.d.mts +0 -72
  359. package/dist/services/store/reducer.d.mts.map +0 -1
  360. package/dist/services/store/reducer.mjs +0 -3
  361. package/dist/services/store/reducer.mjs.map +0 -1
  362. package/dist/services/store/taskGraph.cjs +0 -2
  363. package/dist/services/store/taskGraph.cjs.map +0 -1
  364. package/dist/services/store/taskGraph.d.cts.map +0 -1
  365. package/dist/services/store/taskGraph.d.mts +0 -25
  366. package/dist/services/store/taskGraph.d.mts.map +0 -1
  367. package/dist/services/store/taskGraph.mjs +0 -2
  368. package/dist/services/store/taskGraph.mjs.map +0 -1
  369. package/dist/services/store/taskStore.cjs +0 -1
  370. package/dist/services/store/taskStore.d.cts +0 -2
  371. package/dist/services/store/taskStore.d.mts +0 -2
  372. package/dist/services/store/taskStore.mjs +0 -1
  373. package/dist/services/store/types.cjs +0 -2
  374. package/dist/services/store/types.cjs.map +0 -1
  375. package/dist/services/store/types.d.cts +0 -165
  376. package/dist/services/store/types.d.cts.map +0 -1
  377. package/dist/services/store/types.d.mts.map +0 -1
  378. package/dist/services/store/types.mjs +0 -2
  379. package/dist/services/store/types.mjs.map +0 -1
  380. package/dist/store/invariants.cjs +0 -1
  381. package/dist/store/invariants.d.cts +0 -2
  382. package/dist/store/invariants.d.mts +0 -2
  383. package/dist/store/invariants.mjs +0 -1
  384. package/dist/store/paths.cjs +0 -1
  385. package/dist/store/paths.d.cts +0 -2
  386. package/dist/store/paths.d.mts +0 -2
  387. package/dist/store/paths.mjs +0 -1
  388. package/dist/store/processLiveness.cjs +0 -1
  389. package/dist/store/processLiveness.d.cts +0 -2
  390. package/dist/store/processLiveness.d.mts +0 -2
  391. package/dist/store/processLiveness.mjs +0 -1
  392. package/dist/store/reconcile.cjs +0 -1
  393. package/dist/store/reconcile.d.cts +0 -2
  394. package/dist/store/reconcile.d.mts +0 -2
  395. package/dist/store/reconcile.mjs +0 -1
  396. package/dist/store/reducer.cjs +0 -1
  397. package/dist/store/reducer.d.cts +0 -2
  398. package/dist/store/reducer.d.mts +0 -2
  399. package/dist/store/reducer.mjs +0 -1
  400. package/dist/store/taskGraph.cjs +0 -1
  401. package/dist/store/taskGraph.d.cts +0 -2
  402. package/dist/store/taskGraph.d.mts +0 -2
  403. package/dist/store/taskGraph.mjs +0 -1
  404. package/dist/store/taskStore.cjs +0 -1
  405. package/dist/store/taskStore.d.cts +0 -3
  406. package/dist/store/taskStore.d.mts +0 -3
  407. package/dist/store/taskStore.mjs +0 -1
  408. package/dist/store/types.cjs +0 -1
  409. package/dist/store/types.d.cts +0 -2
  410. package/dist/store/types.d.mts +0 -2
  411. package/dist/store/types.mjs +0 -1
  412. package/dist/tool/promptGuidelines.cjs +0 -1
  413. package/dist/tool/promptGuidelines.d.cts +0 -2
  414. package/dist/tool/promptGuidelines.d.mts +0 -2
  415. package/dist/tool/promptGuidelines.mjs +0 -1
  416. package/dist/tool/responseEnvelope.cjs +0 -1
  417. package/dist/tool/responseEnvelope.d.cts +0 -2
  418. package/dist/tool/responseEnvelope.d.mts +0 -2
  419. package/dist/tool/responseEnvelope.mjs +0 -1
  420. package/dist/tool/schema.cjs +0 -1
  421. package/dist/tool/schema.d.cts +0 -2
  422. package/dist/tool/schema.d.mts +0 -2
  423. package/dist/tool/schema.mjs +0 -1
  424. package/dist/tool/taskTool.cjs +0 -1
  425. package/dist/tool/taskTool.d.cts +0 -3
  426. package/dist/tool/taskTool.d.mts +0 -3
  427. package/dist/tool/taskTool.mjs +0 -1
  428. package/dist/tui/format.cjs +0 -4
  429. package/dist/tui/format.cjs.map +0 -1
  430. package/dist/tui/format.d.cts +0 -62
  431. package/dist/tui/format.d.cts.map +0 -1
  432. package/dist/tui/format.d.mts +0 -62
  433. package/dist/tui/format.d.mts.map +0 -1
  434. package/dist/tui/format.mjs +0 -4
  435. package/dist/tui/format.mjs.map +0 -1
  436. package/dist/tui/selectors.cjs +0 -2
  437. package/dist/tui/selectors.cjs.map +0 -1
  438. package/dist/tui/selectors.d.cts.map +0 -1
  439. package/dist/tui/selectors.d.mts +0 -53
  440. package/dist/tui/selectors.d.mts.map +0 -1
  441. package/dist/tui/selectors.mjs +0 -2
  442. package/dist/tui/selectors.mjs.map +0 -1
  443. package/dist/tui/taskOverlay.cjs +0 -2
  444. package/dist/tui/taskOverlay.cjs.map +0 -1
  445. package/dist/tui/taskOverlay.d.cts.map +0 -1
  446. package/dist/tui/taskOverlay.d.mts +0 -38
  447. package/dist/tui/taskOverlay.d.mts.map +0 -1
  448. package/dist/tui/taskOverlay.mjs +0 -2
  449. package/dist/tui/taskOverlay.mjs.map +0 -1
  450. package/dist/tui/taskSpace.cjs +0 -5
  451. package/dist/tui/taskSpace.cjs.map +0 -1
  452. package/dist/tui/taskSpace.d.cts.map +0 -1
  453. package/dist/tui/taskSpace.d.mts +0 -62
  454. package/dist/tui/taskSpace.d.mts.map +0 -1
  455. package/dist/tui/taskSpace.mjs +0 -5
  456. package/dist/tui/taskSpace.mjs.map +0 -1
  457. package/dist/types/config.cjs +0 -2
  458. package/dist/types/config.cjs.map +0 -1
  459. package/dist/types/config.d.cts.map +0 -1
  460. package/dist/types/config.d.mts +0 -38
  461. package/dist/types/config.d.mts.map +0 -1
  462. package/dist/types/config.mjs +0 -2
  463. package/dist/types/config.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSinkTelemetry-CqiTuh3a.cjs","names":["createDoomTelemetry","TASK_EVENT"],"sources":["../src/services/logSinkTelemetry/index.ts"],"sourcesContent":["import { createDoomTelemetry, type DoomTelemetry, type DoomTelemetryOptions } from '@agimon-ai/doompi-telemetry';\n\nimport { TASK_EVENT, type TaskErrorAttributes, type TaskFailureReporter } from '../../types/telemetry';\n\nexport {\n TASK_EVENT,\n type TaskErrorAttributes,\n type TaskErrorSink,\n type TaskEventName,\n type TaskEventSink,\n type TaskFailureReporter,\n} from '../../types/telemetry';\n\nconst SERVICE_NAME = 'doom-task';\nconst PACKAGE_NAME = '@agimon-ai/doompi-task';\nconst NOTIFICATION_OPERATION = 'completion_notification';\n\nexport interface TaskErrorReporterOptions {\n cwd?: string;\n workspaceRoot?: string;\n env?: NodeJS.ProcessEnv;\n telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;\n warn?: (message: string) => void;\n}\n\nexport interface TaskErrorReporter {\n recordError(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;\n recordWarning(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;\n recordEvent(event: string, attributes?: TaskErrorAttributes): Promise<void>;\n recordNotificationError(error: unknown, taskId: number): Promise<void>;\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\nexport function createTaskErrorReporter(options: TaskErrorReporterOptions = {}): TaskErrorReporter {\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: SERVICE_NAME,\n packageName: PACKAGE_NAME,\n cwd: options.cwd,\n workspaceRoot: options.workspaceRoot,\n env: options.env,\n telemetryFactory: options.telemetryFactory,\n warn: options.warn,\n enableLogs: true,\n enableTraces: true,\n });\n return {\n recordError: (event, error, attributes) => telemetry.recordError(event, error, attributes),\n recordWarning: (event, error, attributes) => telemetry.recordWarning(event, error, attributes),\n recordEvent: (event, attributes) => telemetry.recordEvent(event, attributes),\n recordNotificationError: (error, taskId) =>\n telemetry.recordError(TASK_EVENT.notificationFailed, error, {\n 'task.id': taskId,\n 'task.operation': NOTIFICATION_OPERATION,\n }),\n flush: () => telemetry.flush(),\n shutdown: () => telemetry.shutdown(),\n };\n}\n\nexport function toFailureReporter(reporter: TaskErrorReporter): TaskFailureReporter {\n return {\n error: (event, error, attributes) => void reporter.recordError(event, error, attributes),\n warn: (event, error, attributes) => void reporter.recordWarning(event, error, attributes),\n event: (event, attributes) => void reporter.recordEvent(event, attributes),\n };\n}\n"],"mappings":";;;AAaA,MAAM,eAAe;AACrB,MAAM,eAAe;AACrB,MAAM,yBAAyB;AAmB/B,SAAgB,wBAAwB,UAAoC,CAAC,GAAsB;CACjG,MAAM,aAAA,GAA2BA,4BAAAA,oBAAAA,CAAoB;EACnD,aAAa;EACb,aAAa;EACb,KAAK,QAAQ;EACb,eAAe,QAAQ;EACvB,KAAK,QAAQ;EACb,kBAAkB,QAAQ;EAC1B,MAAM,QAAQ;EACd,YAAY;EACZ,cAAc;CAChB,CAAC;CACD,OAAO;EACL,cAAc,OAAO,OAAO,eAAe,UAAU,YAAY,OAAO,OAAO,UAAU;EACzF,gBAAgB,OAAO,OAAO,eAAe,UAAU,cAAc,OAAO,OAAO,UAAU;EAC7F,cAAc,OAAO,eAAe,UAAU,YAAY,OAAO,UAAU;EAC3E,0BAA0B,OAAO,WAC/B,UAAU,YAAYC,kBAAAA,WAAW,oBAAoB,OAAO;GAC1D,WAAW;GACX,kBAAkB;EACpB,CAAC;EACH,aAAa,UAAU,MAAM;EAC7B,gBAAgB,UAAU,SAAS;CACrC;AACF;AAEA,SAAgB,kBAAkB,UAAkD;CAClF,OAAO;EACL,QAAQ,OAAO,OAAO,eAAe,KAAK,SAAS,YAAY,OAAO,OAAO,UAAU;EACvF,OAAO,OAAO,OAAO,eAAe,KAAK,SAAS,cAAc,OAAO,OAAO,UAAU;EACxF,QAAQ,OAAO,eAAe,KAAK,SAAS,YAAY,OAAO,UAAU;CAC3E;AACF"}
@@ -1 +1,6 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/telemetry/logSinkTelemetry.cjs");exports.TASK_EVENT=e.TASK_EVENT,exports.createTaskErrorReporter=e.createTaskErrorReporter,exports.toFailureReporter=e.toFailureReporter;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_telemetry = require("./telemetry-I4md7Xzz.cjs");
3
+ const require_logSinkTelemetry = require("./logSinkTelemetry-CqiTuh3a.cjs");
4
+ exports.TASK_EVENT = require_telemetry.TASK_EVENT;
5
+ exports.createTaskErrorReporter = require_logSinkTelemetry.createTaskErrorReporter;
6
+ exports.toFailureReporter = require_logSinkTelemetry.toFailureReporter;
@@ -1,2 +1,23 @@
1
- import { TASK_EVENT, TaskErrorAttributes, TaskErrorReporter, TaskErrorReporterOptions, TaskErrorSink, TaskEventName, TaskEventSink, TaskFailureReporter, createTaskErrorReporter, toFailureReporter } from "./adapters/telemetry/logSinkTelemetry.mjs";
2
- export { TASK_EVENT, TaskErrorAttributes, TaskErrorReporter, TaskErrorReporterOptions, TaskErrorSink, TaskEventName, TaskEventSink, TaskFailureReporter, createTaskErrorReporter, toFailureReporter };
1
+ import { a as TaskEventSink, i as TaskEventName, n as TaskErrorAttributes, o as TaskFailureReporter, r as TaskErrorSink, t as TASK_EVENT } from "./telemetry-DOyZLj8E.mjs";
2
+ import { DoomTelemetryOptions } from "@agimon-ai/doompi-telemetry";
3
+ //#region src/services/logSinkTelemetry/index.d.ts
4
+ export interface TaskErrorReporterOptions {
5
+ cwd?: string;
6
+ workspaceRoot?: string;
7
+ env?: NodeJS.ProcessEnv;
8
+ telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;
9
+ warn?: (message: string) => void;
10
+ }
11
+ export interface TaskErrorReporter {
12
+ recordError(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;
13
+ recordWarning(event: string, error: unknown, attributes?: TaskErrorAttributes): Promise<void>;
14
+ recordEvent(event: string, attributes?: TaskErrorAttributes): Promise<void>;
15
+ recordNotificationError(error: unknown, taskId: number): Promise<void>;
16
+ flush(): Promise<void>;
17
+ shutdown(): Promise<void>;
18
+ }
19
+ export declare function createTaskErrorReporter(options?: TaskErrorReporterOptions): TaskErrorReporter;
20
+ export declare function toFailureReporter(reporter: TaskErrorReporter): TaskFailureReporter;
21
+ //#endregion
22
+ export { TASK_EVENT, type TaskErrorAttributes, type TaskErrorSink, type TaskEventName, type TaskEventSink, type TaskFailureReporter };
23
+ //# sourceMappingURL=logSinkTelemetry.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSinkTelemetry.d.mts","names":[],"sources":["../src/services/logSinkTelemetry/index.ts"],"mappings":";;;iBAiBiB;EACf;EACA;EACA,MAAM,OAAO;EACb,mBAAmB,YAAY;EAC/B,QAAQ;;iBAGO;EACf,YAAY,eAAe,gBAAgB,aAAa,sBAAsB;EAC9E,cAAc,eAAe,gBAAgB,aAAa,sBAAsB;EAChF,YAAY,eAAe,aAAa,sBAAsB;EAC9D,wBAAwB,gBAAgB,iBAAiB;EACzD,SAAS;EACT,YAAY;;wBAGE,wBAAwB,UAAS,2BAAgC;wBA0BjE,kBAAkB,UAAU,oBAAoB"}
@@ -1 +1,3 @@
1
- import{TASK_EVENT as e,createTaskErrorReporter as t,toFailureReporter as n}from"./adapters/telemetry/logSinkTelemetry.mjs";export{e as TASK_EVENT,t as createTaskErrorReporter,n as toFailureReporter};
1
+ import { t as TASK_EVENT } from "./telemetry-PmX_1Y8a.mjs";
2
+ import { n as toFailureReporter, t as createTaskErrorReporter } from "./logSinkTelemetry-C5QjZipw.mjs";
3
+ export { TASK_EVENT, createTaskErrorReporter, toFailureReporter };
@@ -0,0 +1,218 @@
1
+ import { execFile, execFileSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from "@agimon-ai/doompi-core/childProcess";
6
+ //#region src/services/paths/index.ts
7
+ const STORE_PATH_ENV = "DOOM_TASK_STORE";
8
+ const STORE_DIR_NAME = "doom-task";
9
+ const STORE_FILE_NAME = "tasks.json";
10
+ const DEFAULT_CONFIG_DIR_NAME = ".pi";
11
+ const AGENT_DIR_NAME = "agent";
12
+ const PI_CODING_AGENT_DIR_ENV = "PI_CODING_AGENT_DIR";
13
+ const HOME_ALIAS = "~";
14
+ const HOME_ALIAS_PREFIX = "~/";
15
+ const FILE_ENCODING = "utf8";
16
+ const NOT_FOUND_ERROR_CODE = "ENOENT";
17
+ function git(args, cwd) {
18
+ try {
19
+ const trimmed = execFileSync("git", args, {
20
+ cwd,
21
+ encoding: FILE_ENCODING,
22
+ stdio: [
23
+ "ignore",
24
+ "pipe",
25
+ "ignore"
26
+ ]
27
+ }).trim();
28
+ return trimmed.length > 0 ? trimmed : void 0;
29
+ } catch {
30
+ return;
31
+ }
32
+ }
33
+ async function gitAsync(args, cwd) {
34
+ return new Promise((resolve) => {
35
+ execFile("git", args, {
36
+ cwd,
37
+ encoding: FILE_ENCODING
38
+ }, (error, stdout) => {
39
+ if (error) {
40
+ resolve(void 0);
41
+ return;
42
+ }
43
+ const trimmed = stdout.trim();
44
+ resolve(trimmed.length > 0 ? trimmed : void 0);
45
+ });
46
+ });
47
+ }
48
+ function resolveAgentDirectory(env) {
49
+ const configured = env[PI_CODING_AGENT_DIR_ENV]?.trim();
50
+ if (configured === HOME_ALIAS) return os.homedir();
51
+ if (configured?.startsWith(HOME_ALIAS_PREFIX)) return path.join(os.homedir(), configured.slice(2));
52
+ return configured ? path.resolve(configured) : path.join(os.homedir(), DEFAULT_CONFIG_DIR_NAME, AGENT_DIR_NAME);
53
+ }
54
+ function isWithin(root, candidate) {
55
+ const relative = path.relative(path.resolve(root), path.resolve(candidate));
56
+ return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
57
+ }
58
+ /** Resolve the tree root without relying on extension startup order. */
59
+ function resolveSessionKey(rootSessionId, env = process.env) {
60
+ if (!env[SUBAGENT_CHILD_ENV]) return rootSessionId;
61
+ const parentSessionId = env[SUBAGENT_PARENT_SESSION_ENV]?.trim();
62
+ if (!parentSessionId) throw new Error(`${SUBAGENT_PARENT_SESSION_ENV} is required in a subagent child`);
63
+ return parentSessionId;
64
+ }
65
+ /** Resolve one root session tree to a task document under the Pi agent directory. */
66
+ function resolveStorePath(_cwd = process.cwd(), env = process.env, sessionKey = "standalone") {
67
+ const override = env[STORE_PATH_ENV]?.trim();
68
+ if (override) return path.resolve(override);
69
+ const trimmedSessionKey = sessionKey.trim();
70
+ if (!trimmedSessionKey) throw new Error("doom-task session id cannot be blank");
71
+ return path.join(resolveAgentDirectory(env), STORE_DIR_NAME, trimmedSessionKey, STORE_FILE_NAME);
72
+ }
73
+ /** Whether a deliberate unscoped task-store override is active. */
74
+ function hasStorePathOverride(env = process.env) {
75
+ return Boolean(env[STORE_PATH_ENV]?.trim());
76
+ }
77
+ /** Exact legacy Git-directory store, if the current working tree has one. */
78
+ function resolveLegacyStoreDirectory(cwd = process.cwd()) {
79
+ const commonDirectory = git([
80
+ "rev-parse",
81
+ "--path-format=absolute",
82
+ "--git-common-dir"
83
+ ], cwd);
84
+ return commonDirectory ? path.join(commonDirectory, STORE_DIR_NAME) : void 0;
85
+ }
86
+ async function resolveLegacyStoreDirectoryAsync(cwd = process.cwd()) {
87
+ const commonDirectory = await gitAsync([
88
+ "rev-parse",
89
+ "--path-format=absolute",
90
+ "--git-common-dir"
91
+ ], cwd);
92
+ return commonDirectory ? path.join(commonDirectory, STORE_DIR_NAME) : void 0;
93
+ }
94
+ /** Remove only the validated legacy Git store unless it contains the active override. */
95
+ function removeLegacyStoreDirectory(currentStorePath, cwd = process.cwd()) {
96
+ const result = {
97
+ removed: [],
98
+ errors: []
99
+ };
100
+ const target = resolveLegacyStoreDirectory(cwd);
101
+ if (!target || path.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;
102
+ try {
103
+ if (!fs.existsSync(target)) return result;
104
+ fs.rmSync(target, {
105
+ recursive: true,
106
+ force: true
107
+ });
108
+ result.removed.push(target);
109
+ } catch (error) {
110
+ result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);
111
+ }
112
+ return result;
113
+ }
114
+ async function removeLegacyStoreDirectoryAsync(currentStorePath, cwd = process.cwd()) {
115
+ const result = {
116
+ removed: [],
117
+ errors: []
118
+ };
119
+ const target = await resolveLegacyStoreDirectoryAsync(cwd);
120
+ if (!target || path.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;
121
+ try {
122
+ await fs.promises.access(target);
123
+ await fs.promises.rm(target, {
124
+ recursive: true,
125
+ force: true
126
+ });
127
+ result.removed.push(target);
128
+ } catch (error) {
129
+ if (error.code !== NOT_FOUND_ERROR_CODE) result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);
130
+ }
131
+ return result;
132
+ }
133
+ /** Delete expired sibling session stores while preserving active or unreadable stores. */
134
+ function sweepStoreFiles(currentStorePath, ttlMs, now = Date.now()) {
135
+ const result = {
136
+ removed: [],
137
+ errors: []
138
+ };
139
+ const currentSessionDirectory = path.dirname(currentStorePath);
140
+ const storeDirectory = path.dirname(currentSessionDirectory);
141
+ let entries;
142
+ try {
143
+ entries = fs.readdirSync(storeDirectory);
144
+ } catch (error) {
145
+ if (error.code === NOT_FOUND_ERROR_CODE) return result;
146
+ result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);
147
+ return result;
148
+ }
149
+ for (const entry of entries) {
150
+ const sessionDirectory = path.join(storeDirectory, entry);
151
+ const candidate = path.join(sessionDirectory, STORE_FILE_NAME);
152
+ if (sessionDirectory === currentSessionDirectory || !fs.existsSync(candidate)) continue;
153
+ try {
154
+ if (fs.existsSync(lockPathFor(candidate))) continue;
155
+ JSON.parse(fs.readFileSync(candidate, FILE_ENCODING));
156
+ if (now - fs.statSync(candidate).mtimeMs <= ttlMs) continue;
157
+ fs.rmSync(sessionDirectory, {
158
+ recursive: true,
159
+ force: true
160
+ });
161
+ result.removed.push(sessionDirectory);
162
+ } catch (error) {
163
+ result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);
164
+ }
165
+ }
166
+ return result;
167
+ }
168
+ async function sweepStoreFilesAsync(currentStorePath, ttlMs, now = Date.now()) {
169
+ const result = {
170
+ removed: [],
171
+ errors: []
172
+ };
173
+ const currentSessionDirectory = path.dirname(currentStorePath);
174
+ const storeDirectory = path.dirname(currentSessionDirectory);
175
+ let entries;
176
+ try {
177
+ entries = await fs.promises.readdir(storeDirectory);
178
+ } catch (error) {
179
+ if (error.code === NOT_FOUND_ERROR_CODE) return result;
180
+ result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);
181
+ return result;
182
+ }
183
+ for (const entry of entries) {
184
+ const sessionDirectory = path.join(storeDirectory, entry);
185
+ const candidate = path.join(sessionDirectory, STORE_FILE_NAME);
186
+ if (sessionDirectory === currentSessionDirectory) continue;
187
+ try {
188
+ await fs.promises.access(candidate);
189
+ try {
190
+ await fs.promises.access(lockPathFor(candidate));
191
+ continue;
192
+ } catch (error) {
193
+ if (error.code !== NOT_FOUND_ERROR_CODE) throw error;
194
+ }
195
+ JSON.parse(await fs.promises.readFile(candidate, FILE_ENCODING));
196
+ if (now - (await fs.promises.stat(candidate)).mtimeMs <= ttlMs) continue;
197
+ await fs.promises.rm(sessionDirectory, {
198
+ recursive: true,
199
+ force: true
200
+ });
201
+ result.removed.push(sessionDirectory);
202
+ } catch (error) {
203
+ if (error.code === NOT_FOUND_ERROR_CODE) continue;
204
+ result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);
205
+ }
206
+ }
207
+ return result;
208
+ }
209
+ function lockPathFor(storePath) {
210
+ return `${storePath}.lock`;
211
+ }
212
+ function tempPathFor(storePath, pid = process.pid) {
213
+ return `${storePath}.tmp.${pid}`;
214
+ }
215
+ //#endregion
216
+ export { removeLegacyStoreDirectoryAsync as a, resolveSessionKey as c, sweepStoreFilesAsync as d, tempPathFor as f, removeLegacyStoreDirectory as i, resolveStorePath as l, hasStorePathOverride as n, resolveLegacyStoreDirectory as o, lockPathFor as r, resolveLegacyStoreDirectoryAsync as s, STORE_PATH_ENV as t, sweepStoreFiles as u };
217
+
218
+ //# sourceMappingURL=paths-Bg8EEbk1.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths-Bg8EEbk1.mjs","names":[],"sources":["../src/services/paths/index.ts"],"sourcesContent":["import { execFile, execFileSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from '@agimon-ai/doompi-core/childProcess';\n\nexport const STORE_PATH_ENV = 'DOOM_TASK_STORE';\n\nconst STORE_DIR_NAME = 'doom-task';\nconst STORE_FILE_NAME = 'tasks.json';\nconst DEFAULT_CONFIG_DIR_NAME = '.pi';\nconst AGENT_DIR_NAME = 'agent';\nconst PI_CODING_AGENT_DIR_ENV = 'PI_CODING_AGENT_DIR';\nconst HOME_ALIAS = '~';\nconst HOME_ALIAS_PREFIX = '~/';\nconst FILE_ENCODING = 'utf8';\nconst NOT_FOUND_ERROR_CODE = 'ENOENT';\n\nfunction git(args: string[], cwd: string): string | undefined {\n try {\n const output = execFileSync('git', args, {\n cwd,\n encoding: FILE_ENCODING,\n stdio: ['ignore', 'pipe', 'ignore'],\n });\n const trimmed = output.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function gitAsync(args: string[], cwd: string): Promise<string | undefined> {\n return new Promise((resolve) => {\n execFile('git', args, { cwd, encoding: FILE_ENCODING }, (error, stdout) => {\n if (error) {\n resolve(undefined);\n return;\n }\n const trimmed = stdout.trim();\n resolve(trimmed.length > 0 ? trimmed : undefined);\n });\n });\n}\n\nfunction resolveAgentDirectory(env: Readonly<Record<string, string | undefined>>): string {\n const configured = env[PI_CODING_AGENT_DIR_ENV]?.trim();\n if (configured === HOME_ALIAS) return os.homedir();\n if (configured?.startsWith(HOME_ALIAS_PREFIX)) {\n return path.join(os.homedir(), configured.slice(HOME_ALIAS_PREFIX.length));\n }\n return configured ? path.resolve(configured) : path.join(os.homedir(), DEFAULT_CONFIG_DIR_NAME, AGENT_DIR_NAME);\n}\n\nfunction isWithin(root: string, candidate: string): boolean {\n const relative = path.relative(path.resolve(root), path.resolve(candidate));\n return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));\n}\n\n/** Resolve the tree root without relying on extension startup order. */\nexport function resolveSessionKey(\n rootSessionId: string,\n env: Readonly<Record<string, string | undefined>> = process.env,\n): string {\n if (!env[SUBAGENT_CHILD_ENV]) return rootSessionId;\n const parentSessionId = env[SUBAGENT_PARENT_SESSION_ENV]?.trim();\n if (!parentSessionId) throw new Error(`${SUBAGENT_PARENT_SESSION_ENV} is required in a subagent child`);\n return parentSessionId;\n}\n\n/** Resolve one root session tree to a task document under the Pi agent directory. */\nexport function resolveStorePath(\n _cwd: string = process.cwd(),\n env: Readonly<Record<string, string | undefined>> = process.env,\n sessionKey: string = 'standalone',\n): string {\n const override = env[STORE_PATH_ENV]?.trim();\n if (override) return path.resolve(override);\n\n const trimmedSessionKey = sessionKey.trim();\n if (!trimmedSessionKey) throw new Error('doom-task session id cannot be blank');\n return path.join(resolveAgentDirectory(env), STORE_DIR_NAME, trimmedSessionKey, STORE_FILE_NAME);\n}\n\n/** Whether a deliberate unscoped task-store override is active. */\nexport function hasStorePathOverride(env: Readonly<Record<string, string | undefined>> = process.env): boolean {\n return Boolean(env[STORE_PATH_ENV]?.trim());\n}\n\n/** Exact legacy Git-directory store, if the current working tree has one. */\nexport function resolveLegacyStoreDirectory(cwd: string = process.cwd()): string | undefined {\n const commonDirectory = git(['rev-parse', '--path-format=absolute', '--git-common-dir'], cwd);\n return commonDirectory ? path.join(commonDirectory, STORE_DIR_NAME) : undefined;\n}\n\nexport async function resolveLegacyStoreDirectoryAsync(cwd: string = process.cwd()): Promise<string | undefined> {\n const commonDirectory = await gitAsync(['rev-parse', '--path-format=absolute', '--git-common-dir'], cwd);\n return commonDirectory ? path.join(commonDirectory, STORE_DIR_NAME) : undefined;\n}\n\nexport interface StoreSweepResult {\n removed: string[];\n errors: string[];\n}\n\n/** Remove only the validated legacy Git store unless it contains the active override. */\nexport function removeLegacyStoreDirectory(currentStorePath: string, cwd: string = process.cwd()): StoreSweepResult {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const target = resolveLegacyStoreDirectory(cwd);\n if (!target || path.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;\n\n try {\n if (!fs.existsSync(target)) return result;\n fs.rmSync(target, { recursive: true, force: true });\n result.removed.push(target);\n } catch (error) {\n result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);\n }\n return result;\n}\n\nexport async function removeLegacyStoreDirectoryAsync(\n currentStorePath: string,\n cwd: string = process.cwd(),\n): Promise<StoreSweepResult> {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const target = await resolveLegacyStoreDirectoryAsync(cwd);\n if (!target || path.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;\n\n try {\n await fs.promises.access(target);\n await fs.promises.rm(target, { recursive: true, force: true });\n result.removed.push(target);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== NOT_FOUND_ERROR_CODE) {\n result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);\n }\n }\n return result;\n}\n\n/** Delete expired sibling session stores while preserving active or unreadable stores. */\nexport function sweepStoreFiles(currentStorePath: string, ttlMs: number, now: number = Date.now()): StoreSweepResult {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const currentSessionDirectory = path.dirname(currentStorePath);\n const storeDirectory = path.dirname(currentSessionDirectory);\n let entries: string[];\n try {\n entries = fs.readdirSync(storeDirectory);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === NOT_FOUND_ERROR_CODE) return result;\n result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);\n return result;\n }\n\n for (const entry of entries) {\n const sessionDirectory = path.join(storeDirectory, entry);\n const candidate = path.join(sessionDirectory, STORE_FILE_NAME);\n if (sessionDirectory === currentSessionDirectory || !fs.existsSync(candidate)) continue;\n try {\n if (fs.existsSync(lockPathFor(candidate))) continue;\n JSON.parse(fs.readFileSync(candidate, FILE_ENCODING));\n if (now - fs.statSync(candidate).mtimeMs <= ttlMs) continue;\n fs.rmSync(sessionDirectory, { recursive: true, force: true });\n result.removed.push(sessionDirectory);\n } catch (error) {\n result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);\n }\n }\n return result;\n}\n\nexport async function sweepStoreFilesAsync(\n currentStorePath: string,\n ttlMs: number,\n now: number = Date.now(),\n): Promise<StoreSweepResult> {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const currentSessionDirectory = path.dirname(currentStorePath);\n const storeDirectory = path.dirname(currentSessionDirectory);\n let entries: string[];\n try {\n entries = await fs.promises.readdir(storeDirectory);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === NOT_FOUND_ERROR_CODE) return result;\n result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);\n return result;\n }\n\n for (const entry of entries) {\n const sessionDirectory = path.join(storeDirectory, entry);\n const candidate = path.join(sessionDirectory, STORE_FILE_NAME);\n if (sessionDirectory === currentSessionDirectory) continue;\n try {\n await fs.promises.access(candidate);\n try {\n await fs.promises.access(lockPathFor(candidate));\n continue;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== NOT_FOUND_ERROR_CODE) throw error;\n }\n JSON.parse(await fs.promises.readFile(candidate, FILE_ENCODING));\n if (now - (await fs.promises.stat(candidate)).mtimeMs <= ttlMs) continue;\n await fs.promises.rm(sessionDirectory, { recursive: true, force: true });\n result.removed.push(sessionDirectory);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === NOT_FOUND_ERROR_CODE) continue;\n result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);\n }\n }\n return result;\n}\n\nexport function lockPathFor(storePath: string): string {\n return `${storePath}.lock`;\n}\n\nexport function tempPathFor(storePath: string, pid: number = process.pid): string {\n return `${storePath}.tmp.${pid}`;\n}\n"],"mappings":"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"}
@@ -0,0 +1,320 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ let node_child_process = require("node:child_process");
24
+ let node_fs = require("node:fs");
25
+ node_fs = __toESM(node_fs, 1);
26
+ let node_os = require("node:os");
27
+ node_os = __toESM(node_os, 1);
28
+ let node_path = require("node:path");
29
+ node_path = __toESM(node_path, 1);
30
+ let _agimon_ai_doompi_core_childProcess = require("@agimon-ai/doompi-core/childProcess");
31
+ //#region src/services/paths/index.ts
32
+ const STORE_PATH_ENV = "DOOM_TASK_STORE";
33
+ const STORE_DIR_NAME = "doom-task";
34
+ const STORE_FILE_NAME = "tasks.json";
35
+ const DEFAULT_CONFIG_DIR_NAME = ".pi";
36
+ const AGENT_DIR_NAME = "agent";
37
+ const PI_CODING_AGENT_DIR_ENV = "PI_CODING_AGENT_DIR";
38
+ const HOME_ALIAS = "~";
39
+ const HOME_ALIAS_PREFIX = "~/";
40
+ const FILE_ENCODING = "utf8";
41
+ const NOT_FOUND_ERROR_CODE = "ENOENT";
42
+ function git(args, cwd) {
43
+ try {
44
+ const trimmed = (0, node_child_process.execFileSync)("git", args, {
45
+ cwd,
46
+ encoding: FILE_ENCODING,
47
+ stdio: [
48
+ "ignore",
49
+ "pipe",
50
+ "ignore"
51
+ ]
52
+ }).trim();
53
+ return trimmed.length > 0 ? trimmed : void 0;
54
+ } catch {
55
+ return;
56
+ }
57
+ }
58
+ async function gitAsync(args, cwd) {
59
+ return new Promise((resolve) => {
60
+ (0, node_child_process.execFile)("git", args, {
61
+ cwd,
62
+ encoding: FILE_ENCODING
63
+ }, (error, stdout) => {
64
+ if (error) {
65
+ resolve(void 0);
66
+ return;
67
+ }
68
+ const trimmed = stdout.trim();
69
+ resolve(trimmed.length > 0 ? trimmed : void 0);
70
+ });
71
+ });
72
+ }
73
+ function resolveAgentDirectory(env) {
74
+ const configured = env[PI_CODING_AGENT_DIR_ENV]?.trim();
75
+ if (configured === HOME_ALIAS) return node_os.default.homedir();
76
+ if (configured?.startsWith(HOME_ALIAS_PREFIX)) return node_path.default.join(node_os.default.homedir(), configured.slice(2));
77
+ return configured ? node_path.default.resolve(configured) : node_path.default.join(node_os.default.homedir(), DEFAULT_CONFIG_DIR_NAME, AGENT_DIR_NAME);
78
+ }
79
+ function isWithin(root, candidate) {
80
+ const relative = node_path.default.relative(node_path.default.resolve(root), node_path.default.resolve(candidate));
81
+ return relative === "" || !relative.startsWith("..") && !node_path.default.isAbsolute(relative);
82
+ }
83
+ /** Resolve the tree root without relying on extension startup order. */
84
+ function resolveSessionKey(rootSessionId, env = process.env) {
85
+ if (!env[_agimon_ai_doompi_core_childProcess.SUBAGENT_CHILD_ENV]) return rootSessionId;
86
+ const parentSessionId = env[_agimon_ai_doompi_core_childProcess.SUBAGENT_PARENT_SESSION_ENV]?.trim();
87
+ if (!parentSessionId) throw new Error(`${_agimon_ai_doompi_core_childProcess.SUBAGENT_PARENT_SESSION_ENV} is required in a subagent child`);
88
+ return parentSessionId;
89
+ }
90
+ /** Resolve one root session tree to a task document under the Pi agent directory. */
91
+ function resolveStorePath(_cwd = process.cwd(), env = process.env, sessionKey = "standalone") {
92
+ const override = env[STORE_PATH_ENV]?.trim();
93
+ if (override) return node_path.default.resolve(override);
94
+ const trimmedSessionKey = sessionKey.trim();
95
+ if (!trimmedSessionKey) throw new Error("doom-task session id cannot be blank");
96
+ return node_path.default.join(resolveAgentDirectory(env), STORE_DIR_NAME, trimmedSessionKey, STORE_FILE_NAME);
97
+ }
98
+ /** Whether a deliberate unscoped task-store override is active. */
99
+ function hasStorePathOverride(env = process.env) {
100
+ return Boolean(env[STORE_PATH_ENV]?.trim());
101
+ }
102
+ /** Exact legacy Git-directory store, if the current working tree has one. */
103
+ function resolveLegacyStoreDirectory(cwd = process.cwd()) {
104
+ const commonDirectory = git([
105
+ "rev-parse",
106
+ "--path-format=absolute",
107
+ "--git-common-dir"
108
+ ], cwd);
109
+ return commonDirectory ? node_path.default.join(commonDirectory, STORE_DIR_NAME) : void 0;
110
+ }
111
+ async function resolveLegacyStoreDirectoryAsync(cwd = process.cwd()) {
112
+ const commonDirectory = await gitAsync([
113
+ "rev-parse",
114
+ "--path-format=absolute",
115
+ "--git-common-dir"
116
+ ], cwd);
117
+ return commonDirectory ? node_path.default.join(commonDirectory, STORE_DIR_NAME) : void 0;
118
+ }
119
+ /** Remove only the validated legacy Git store unless it contains the active override. */
120
+ function removeLegacyStoreDirectory(currentStorePath, cwd = process.cwd()) {
121
+ const result = {
122
+ removed: [],
123
+ errors: []
124
+ };
125
+ const target = resolveLegacyStoreDirectory(cwd);
126
+ if (!target || node_path.default.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;
127
+ try {
128
+ if (!node_fs.default.existsSync(target)) return result;
129
+ node_fs.default.rmSync(target, {
130
+ recursive: true,
131
+ force: true
132
+ });
133
+ result.removed.push(target);
134
+ } catch (error) {
135
+ result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);
136
+ }
137
+ return result;
138
+ }
139
+ async function removeLegacyStoreDirectoryAsync(currentStorePath, cwd = process.cwd()) {
140
+ const result = {
141
+ removed: [],
142
+ errors: []
143
+ };
144
+ const target = await resolveLegacyStoreDirectoryAsync(cwd);
145
+ if (!target || node_path.default.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;
146
+ try {
147
+ await node_fs.default.promises.access(target);
148
+ await node_fs.default.promises.rm(target, {
149
+ recursive: true,
150
+ force: true
151
+ });
152
+ result.removed.push(target);
153
+ } catch (error) {
154
+ if (error.code !== NOT_FOUND_ERROR_CODE) result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);
155
+ }
156
+ return result;
157
+ }
158
+ /** Delete expired sibling session stores while preserving active or unreadable stores. */
159
+ function sweepStoreFiles(currentStorePath, ttlMs, now = Date.now()) {
160
+ const result = {
161
+ removed: [],
162
+ errors: []
163
+ };
164
+ const currentSessionDirectory = node_path.default.dirname(currentStorePath);
165
+ const storeDirectory = node_path.default.dirname(currentSessionDirectory);
166
+ let entries;
167
+ try {
168
+ entries = node_fs.default.readdirSync(storeDirectory);
169
+ } catch (error) {
170
+ if (error.code === NOT_FOUND_ERROR_CODE) return result;
171
+ result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);
172
+ return result;
173
+ }
174
+ for (const entry of entries) {
175
+ const sessionDirectory = node_path.default.join(storeDirectory, entry);
176
+ const candidate = node_path.default.join(sessionDirectory, STORE_FILE_NAME);
177
+ if (sessionDirectory === currentSessionDirectory || !node_fs.default.existsSync(candidate)) continue;
178
+ try {
179
+ if (node_fs.default.existsSync(lockPathFor(candidate))) continue;
180
+ JSON.parse(node_fs.default.readFileSync(candidate, FILE_ENCODING));
181
+ if (now - node_fs.default.statSync(candidate).mtimeMs <= ttlMs) continue;
182
+ node_fs.default.rmSync(sessionDirectory, {
183
+ recursive: true,
184
+ force: true
185
+ });
186
+ result.removed.push(sessionDirectory);
187
+ } catch (error) {
188
+ result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);
189
+ }
190
+ }
191
+ return result;
192
+ }
193
+ async function sweepStoreFilesAsync(currentStorePath, ttlMs, now = Date.now()) {
194
+ const result = {
195
+ removed: [],
196
+ errors: []
197
+ };
198
+ const currentSessionDirectory = node_path.default.dirname(currentStorePath);
199
+ const storeDirectory = node_path.default.dirname(currentSessionDirectory);
200
+ let entries;
201
+ try {
202
+ entries = await node_fs.default.promises.readdir(storeDirectory);
203
+ } catch (error) {
204
+ if (error.code === NOT_FOUND_ERROR_CODE) return result;
205
+ result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);
206
+ return result;
207
+ }
208
+ for (const entry of entries) {
209
+ const sessionDirectory = node_path.default.join(storeDirectory, entry);
210
+ const candidate = node_path.default.join(sessionDirectory, STORE_FILE_NAME);
211
+ if (sessionDirectory === currentSessionDirectory) continue;
212
+ try {
213
+ await node_fs.default.promises.access(candidate);
214
+ try {
215
+ await node_fs.default.promises.access(lockPathFor(candidate));
216
+ continue;
217
+ } catch (error) {
218
+ if (error.code !== NOT_FOUND_ERROR_CODE) throw error;
219
+ }
220
+ JSON.parse(await node_fs.default.promises.readFile(candidate, FILE_ENCODING));
221
+ if (now - (await node_fs.default.promises.stat(candidate)).mtimeMs <= ttlMs) continue;
222
+ await node_fs.default.promises.rm(sessionDirectory, {
223
+ recursive: true,
224
+ force: true
225
+ });
226
+ result.removed.push(sessionDirectory);
227
+ } catch (error) {
228
+ if (error.code === NOT_FOUND_ERROR_CODE) continue;
229
+ result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);
230
+ }
231
+ }
232
+ return result;
233
+ }
234
+ function lockPathFor(storePath) {
235
+ return `${storePath}.lock`;
236
+ }
237
+ function tempPathFor(storePath, pid = process.pid) {
238
+ return `${storePath}.tmp.${pid}`;
239
+ }
240
+ //#endregion
241
+ Object.defineProperty(exports, "STORE_PATH_ENV", {
242
+ enumerable: true,
243
+ get: function() {
244
+ return STORE_PATH_ENV;
245
+ }
246
+ });
247
+ Object.defineProperty(exports, "__toESM", {
248
+ enumerable: true,
249
+ get: function() {
250
+ return __toESM;
251
+ }
252
+ });
253
+ Object.defineProperty(exports, "hasStorePathOverride", {
254
+ enumerable: true,
255
+ get: function() {
256
+ return hasStorePathOverride;
257
+ }
258
+ });
259
+ Object.defineProperty(exports, "lockPathFor", {
260
+ enumerable: true,
261
+ get: function() {
262
+ return lockPathFor;
263
+ }
264
+ });
265
+ Object.defineProperty(exports, "removeLegacyStoreDirectory", {
266
+ enumerable: true,
267
+ get: function() {
268
+ return removeLegacyStoreDirectory;
269
+ }
270
+ });
271
+ Object.defineProperty(exports, "removeLegacyStoreDirectoryAsync", {
272
+ enumerable: true,
273
+ get: function() {
274
+ return removeLegacyStoreDirectoryAsync;
275
+ }
276
+ });
277
+ Object.defineProperty(exports, "resolveLegacyStoreDirectory", {
278
+ enumerable: true,
279
+ get: function() {
280
+ return resolveLegacyStoreDirectory;
281
+ }
282
+ });
283
+ Object.defineProperty(exports, "resolveLegacyStoreDirectoryAsync", {
284
+ enumerable: true,
285
+ get: function() {
286
+ return resolveLegacyStoreDirectoryAsync;
287
+ }
288
+ });
289
+ Object.defineProperty(exports, "resolveSessionKey", {
290
+ enumerable: true,
291
+ get: function() {
292
+ return resolveSessionKey;
293
+ }
294
+ });
295
+ Object.defineProperty(exports, "resolveStorePath", {
296
+ enumerable: true,
297
+ get: function() {
298
+ return resolveStorePath;
299
+ }
300
+ });
301
+ Object.defineProperty(exports, "sweepStoreFiles", {
302
+ enumerable: true,
303
+ get: function() {
304
+ return sweepStoreFiles;
305
+ }
306
+ });
307
+ Object.defineProperty(exports, "sweepStoreFilesAsync", {
308
+ enumerable: true,
309
+ get: function() {
310
+ return sweepStoreFilesAsync;
311
+ }
312
+ });
313
+ Object.defineProperty(exports, "tempPathFor", {
314
+ enumerable: true,
315
+ get: function() {
316
+ return tempPathFor;
317
+ }
318
+ });
319
+
320
+ //# sourceMappingURL=paths-BsFVRulr.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths-BsFVRulr.cjs","names":["execFileSync","os","path","SUBAGENT_CHILD_ENV","SUBAGENT_PARENT_SESSION_ENV","fs"],"sources":["../src/services/paths/index.ts"],"sourcesContent":["import { execFile, execFileSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from '@agimon-ai/doompi-core/childProcess';\n\nexport const STORE_PATH_ENV = 'DOOM_TASK_STORE';\n\nconst STORE_DIR_NAME = 'doom-task';\nconst STORE_FILE_NAME = 'tasks.json';\nconst DEFAULT_CONFIG_DIR_NAME = '.pi';\nconst AGENT_DIR_NAME = 'agent';\nconst PI_CODING_AGENT_DIR_ENV = 'PI_CODING_AGENT_DIR';\nconst HOME_ALIAS = '~';\nconst HOME_ALIAS_PREFIX = '~/';\nconst FILE_ENCODING = 'utf8';\nconst NOT_FOUND_ERROR_CODE = 'ENOENT';\n\nfunction git(args: string[], cwd: string): string | undefined {\n try {\n const output = execFileSync('git', args, {\n cwd,\n encoding: FILE_ENCODING,\n stdio: ['ignore', 'pipe', 'ignore'],\n });\n const trimmed = output.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function gitAsync(args: string[], cwd: string): Promise<string | undefined> {\n return new Promise((resolve) => {\n execFile('git', args, { cwd, encoding: FILE_ENCODING }, (error, stdout) => {\n if (error) {\n resolve(undefined);\n return;\n }\n const trimmed = stdout.trim();\n resolve(trimmed.length > 0 ? trimmed : undefined);\n });\n });\n}\n\nfunction resolveAgentDirectory(env: Readonly<Record<string, string | undefined>>): string {\n const configured = env[PI_CODING_AGENT_DIR_ENV]?.trim();\n if (configured === HOME_ALIAS) return os.homedir();\n if (configured?.startsWith(HOME_ALIAS_PREFIX)) {\n return path.join(os.homedir(), configured.slice(HOME_ALIAS_PREFIX.length));\n }\n return configured ? path.resolve(configured) : path.join(os.homedir(), DEFAULT_CONFIG_DIR_NAME, AGENT_DIR_NAME);\n}\n\nfunction isWithin(root: string, candidate: string): boolean {\n const relative = path.relative(path.resolve(root), path.resolve(candidate));\n return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));\n}\n\n/** Resolve the tree root without relying on extension startup order. */\nexport function resolveSessionKey(\n rootSessionId: string,\n env: Readonly<Record<string, string | undefined>> = process.env,\n): string {\n if (!env[SUBAGENT_CHILD_ENV]) return rootSessionId;\n const parentSessionId = env[SUBAGENT_PARENT_SESSION_ENV]?.trim();\n if (!parentSessionId) throw new Error(`${SUBAGENT_PARENT_SESSION_ENV} is required in a subagent child`);\n return parentSessionId;\n}\n\n/** Resolve one root session tree to a task document under the Pi agent directory. */\nexport function resolveStorePath(\n _cwd: string = process.cwd(),\n env: Readonly<Record<string, string | undefined>> = process.env,\n sessionKey: string = 'standalone',\n): string {\n const override = env[STORE_PATH_ENV]?.trim();\n if (override) return path.resolve(override);\n\n const trimmedSessionKey = sessionKey.trim();\n if (!trimmedSessionKey) throw new Error('doom-task session id cannot be blank');\n return path.join(resolveAgentDirectory(env), STORE_DIR_NAME, trimmedSessionKey, STORE_FILE_NAME);\n}\n\n/** Whether a deliberate unscoped task-store override is active. */\nexport function hasStorePathOverride(env: Readonly<Record<string, string | undefined>> = process.env): boolean {\n return Boolean(env[STORE_PATH_ENV]?.trim());\n}\n\n/** Exact legacy Git-directory store, if the current working tree has one. */\nexport function resolveLegacyStoreDirectory(cwd: string = process.cwd()): string | undefined {\n const commonDirectory = git(['rev-parse', '--path-format=absolute', '--git-common-dir'], cwd);\n return commonDirectory ? path.join(commonDirectory, STORE_DIR_NAME) : undefined;\n}\n\nexport async function resolveLegacyStoreDirectoryAsync(cwd: string = process.cwd()): Promise<string | undefined> {\n const commonDirectory = await gitAsync(['rev-parse', '--path-format=absolute', '--git-common-dir'], cwd);\n return commonDirectory ? path.join(commonDirectory, STORE_DIR_NAME) : undefined;\n}\n\nexport interface StoreSweepResult {\n removed: string[];\n errors: string[];\n}\n\n/** Remove only the validated legacy Git store unless it contains the active override. */\nexport function removeLegacyStoreDirectory(currentStorePath: string, cwd: string = process.cwd()): StoreSweepResult {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const target = resolveLegacyStoreDirectory(cwd);\n if (!target || path.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;\n\n try {\n if (!fs.existsSync(target)) return result;\n fs.rmSync(target, { recursive: true, force: true });\n result.removed.push(target);\n } catch (error) {\n result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);\n }\n return result;\n}\n\nexport async function removeLegacyStoreDirectoryAsync(\n currentStorePath: string,\n cwd: string = process.cwd(),\n): Promise<StoreSweepResult> {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const target = await resolveLegacyStoreDirectoryAsync(cwd);\n if (!target || path.basename(target) !== STORE_DIR_NAME || isWithin(target, currentStorePath)) return result;\n\n try {\n await fs.promises.access(target);\n await fs.promises.rm(target, { recursive: true, force: true });\n result.removed.push(target);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== NOT_FOUND_ERROR_CODE) {\n result.errors.push(`Could not remove legacy task store ${target}: ${String(error)}`);\n }\n }\n return result;\n}\n\n/** Delete expired sibling session stores while preserving active or unreadable stores. */\nexport function sweepStoreFiles(currentStorePath: string, ttlMs: number, now: number = Date.now()): StoreSweepResult {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const currentSessionDirectory = path.dirname(currentStorePath);\n const storeDirectory = path.dirname(currentSessionDirectory);\n let entries: string[];\n try {\n entries = fs.readdirSync(storeDirectory);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === NOT_FOUND_ERROR_CODE) return result;\n result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);\n return result;\n }\n\n for (const entry of entries) {\n const sessionDirectory = path.join(storeDirectory, entry);\n const candidate = path.join(sessionDirectory, STORE_FILE_NAME);\n if (sessionDirectory === currentSessionDirectory || !fs.existsSync(candidate)) continue;\n try {\n if (fs.existsSync(lockPathFor(candidate))) continue;\n JSON.parse(fs.readFileSync(candidate, FILE_ENCODING));\n if (now - fs.statSync(candidate).mtimeMs <= ttlMs) continue;\n fs.rmSync(sessionDirectory, { recursive: true, force: true });\n result.removed.push(sessionDirectory);\n } catch (error) {\n result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);\n }\n }\n return result;\n}\n\nexport async function sweepStoreFilesAsync(\n currentStorePath: string,\n ttlMs: number,\n now: number = Date.now(),\n): Promise<StoreSweepResult> {\n const result: StoreSweepResult = { removed: [], errors: [] };\n const currentSessionDirectory = path.dirname(currentStorePath);\n const storeDirectory = path.dirname(currentSessionDirectory);\n let entries: string[];\n try {\n entries = await fs.promises.readdir(storeDirectory);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === NOT_FOUND_ERROR_CODE) return result;\n result.errors.push(`Could not read task store directory ${storeDirectory}: ${String(error)}`);\n return result;\n }\n\n for (const entry of entries) {\n const sessionDirectory = path.join(storeDirectory, entry);\n const candidate = path.join(sessionDirectory, STORE_FILE_NAME);\n if (sessionDirectory === currentSessionDirectory) continue;\n try {\n await fs.promises.access(candidate);\n try {\n await fs.promises.access(lockPathFor(candidate));\n continue;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== NOT_FOUND_ERROR_CODE) throw error;\n }\n JSON.parse(await fs.promises.readFile(candidate, FILE_ENCODING));\n if (now - (await fs.promises.stat(candidate)).mtimeMs <= ttlMs) continue;\n await fs.promises.rm(sessionDirectory, { recursive: true, force: true });\n result.removed.push(sessionDirectory);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === NOT_FOUND_ERROR_CODE) continue;\n result.errors.push(`Could not sweep task store ${candidate}: ${String(error)}`);\n }\n }\n return result;\n}\n\nexport function lockPathFor(storePath: string): string {\n return `${storePath}.lock`;\n}\n\nexport function tempPathFor(storePath: string, pid: number = process.pid): string {\n return `${storePath}.tmp.${pid}`;\n}\n"],"mappings":"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"}