yepanywhere 0.5.2 → 0.6.0

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 (858) hide show
  1. package/README.md +21 -5
  2. package/bundled/@yep-anywhere/shared/dist/agent-context.d.ts +9 -0
  3. package/bundled/@yep-anywhere/shared/dist/agent-context.d.ts.map +1 -0
  4. package/bundled/@yep-anywhere/shared/dist/agent-context.js +18 -0
  5. package/bundled/@yep-anywhere/shared/dist/agent-context.js.map +1 -0
  6. package/bundled/@yep-anywhere/shared/dist/app-types.d.ts +104 -1
  7. package/bundled/@yep-anywhere/shared/dist/app-types.d.ts.map +1 -1
  8. package/bundled/@yep-anywhere/shared/dist/app-types.js +4 -0
  9. package/bundled/@yep-anywhere/shared/dist/app-types.js.map +1 -1
  10. package/bundled/@yep-anywhere/shared/dist/binary-framing.d.ts +4 -1
  11. package/bundled/@yep-anywhere/shared/dist/binary-framing.d.ts.map +1 -1
  12. package/bundled/@yep-anywhere/shared/dist/binary-framing.js +8 -3
  13. package/bundled/@yep-anywhere/shared/dist/binary-framing.js.map +1 -1
  14. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts +4 -0
  15. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts.map +1 -1
  16. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts +4 -0
  17. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts.map +1 -1
  18. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js +7 -0
  19. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js.map +1 -1
  20. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/ProgressEntrySchema.d.ts +4 -0
  21. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/ProgressEntrySchema.d.ts.map +1 -1
  22. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts +64 -1
  23. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts.map +1 -1
  24. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js +9 -0
  25. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js.map +1 -1
  26. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts +4 -0
  27. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts.map +1 -1
  28. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.d.ts.map +1 -1
  29. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js +45 -1
  30. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js.map +1 -1
  31. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts +144 -2
  32. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts.map +1 -1
  33. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts +6 -4
  34. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts.map +1 -1
  35. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js +8 -1
  36. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js.map +1 -1
  37. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts +3 -2
  38. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts.map +1 -1
  39. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js +3 -2
  40. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js.map +1 -1
  41. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts +87 -3
  42. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts.map +1 -1
  43. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js +39 -1
  44. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js.map +1 -1
  45. package/bundled/@yep-anywhere/shared/dist/dag.d.ts +31 -11
  46. package/bundled/@yep-anywhere/shared/dist/dag.d.ts.map +1 -1
  47. package/bundled/@yep-anywhere/shared/dist/dag.js +77 -33
  48. package/bundled/@yep-anywhere/shared/dist/dag.js.map +1 -1
  49. package/bundled/@yep-anywhere/shared/dist/git-status.d.ts +70 -1
  50. package/bundled/@yep-anywhere/shared/dist/git-status.d.ts.map +1 -1
  51. package/bundled/@yep-anywhere/shared/dist/git-status.js +6 -1
  52. package/bundled/@yep-anywhere/shared/dist/git-status.js.map +1 -1
  53. package/bundled/@yep-anywhere/shared/dist/ideMetadata.js +1 -1
  54. package/bundled/@yep-anywhere/shared/dist/ideMetadata.js.map +1 -1
  55. package/bundled/@yep-anywhere/shared/dist/index.d.ts +20 -11
  56. package/bundled/@yep-anywhere/shared/dist/index.d.ts.map +1 -1
  57. package/bundled/@yep-anywhere/shared/dist/index.js +8 -3
  58. package/bundled/@yep-anywhere/shared/dist/index.js.map +1 -1
  59. package/bundled/@yep-anywhere/shared/dist/local-resource.d.ts +1 -0
  60. package/bundled/@yep-anywhere/shared/dist/local-resource.d.ts.map +1 -1
  61. package/bundled/@yep-anywhere/shared/dist/local-resource.js +4 -0
  62. package/bundled/@yep-anywhere/shared/dist/local-resource.js.map +1 -1
  63. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts +136 -0
  64. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts.map +1 -1
  65. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js +65 -3
  66. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js.map +1 -1
  67. package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts +1 -1
  68. package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts.map +1 -1
  69. package/bundled/@yep-anywhere/shared/dist/project-queue.d.ts +153 -0
  70. package/bundled/@yep-anywhere/shared/dist/project-queue.d.ts.map +1 -0
  71. package/bundled/@yep-anywhere/shared/dist/project-queue.js +8 -0
  72. package/bundled/@yep-anywhere/shared/dist/project-queue.js.map +1 -0
  73. package/bundled/@yep-anywhere/shared/dist/relay-protocol.d.ts +26 -2
  74. package/bundled/@yep-anywhere/shared/dist/relay-protocol.d.ts.map +1 -1
  75. package/bundled/@yep-anywhere/shared/dist/relay-protocol.js +33 -0
  76. package/bundled/@yep-anywhere/shared/dist/relay-protocol.js.map +1 -1
  77. package/bundled/@yep-anywhere/shared/dist/relay.d.ts +45 -5
  78. package/bundled/@yep-anywhere/shared/dist/relay.d.ts.map +1 -1
  79. package/bundled/@yep-anywhere/shared/dist/relay.js.map +1 -1
  80. package/bundled/@yep-anywhere/shared/dist/safe-restart.d.ts +25 -0
  81. package/bundled/@yep-anywhere/shared/dist/safe-restart.d.ts.map +1 -0
  82. package/bundled/@yep-anywhere/shared/dist/safe-restart.js +2 -0
  83. package/bundled/@yep-anywhere/shared/dist/safe-restart.js.map +1 -0
  84. package/bundled/@yep-anywhere/shared/dist/session/SessionView.d.ts +2 -2
  85. package/bundled/@yep-anywhere/shared/dist/session/SessionView.js +3 -3
  86. package/bundled/@yep-anywhere/shared/dist/session/SessionView.js.map +1 -1
  87. package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts +10 -0
  88. package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts.map +1 -1
  89. package/bundled/@yep-anywhere/shared/dist/session-liveness.d.ts +18 -0
  90. package/bundled/@yep-anywhere/shared/dist/session-liveness.d.ts.map +1 -1
  91. package/bundled/@yep-anywhere/shared/dist/types.d.ts +253 -8
  92. package/bundled/@yep-anywhere/shared/dist/types.d.ts.map +1 -1
  93. package/bundled/@yep-anywhere/shared/dist/types.js +48 -5
  94. package/bundled/@yep-anywhere/shared/dist/types.js.map +1 -1
  95. package/bundled/@yep-anywhere/shared/dist/upload.d.ts +34 -2
  96. package/bundled/@yep-anywhere/shared/dist/upload.d.ts.map +1 -1
  97. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.d.ts +47 -0
  98. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.d.ts.map +1 -1
  99. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.js +59 -1
  100. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.js.map +1 -1
  101. package/bundled/@yep-anywhere/shared/dist/workstreams.d.ts +54 -0
  102. package/bundled/@yep-anywhere/shared/dist/workstreams.d.ts.map +1 -0
  103. package/bundled/@yep-anywhere/shared/dist/workstreams.js +8 -0
  104. package/bundled/@yep-anywhere/shared/dist/workstreams.js.map +1 -0
  105. package/bundled/@yep-anywhere/shared/package.json +1 -1
  106. package/client-dist/assets/alegreya-sans-latin-400-italic-BQIUBrX-.woff2 +0 -0
  107. package/client-dist/assets/alegreya-sans-latin-400-normal-BxeZdXas.woff2 +0 -0
  108. package/client-dist/assets/alegreya-sans-latin-500-normal-uodOEoAl.woff2 +0 -0
  109. package/client-dist/assets/alegreya-sans-latin-700-normal-DFYOGfC8.woff2 +0 -0
  110. package/client-dist/assets/de-CHMDbVD5.js +6 -0
  111. package/client-dist/assets/es-CK8MPF_C.js +6 -0
  112. package/client-dist/assets/fira-mono-latin-400-normal-DVTTRLHv.woff2 +0 -0
  113. package/client-dist/assets/fira-mono-latin-ext-400-normal-B2gPvaNr.woff2 +0 -0
  114. package/client-dist/assets/fira-mono-symbols2-400-normal-C6JptOil.woff2 +0 -0
  115. package/client-dist/assets/fr-49PXQiUL.js +6 -0
  116. package/client-dist/assets/index-B-09fVut.js +557 -0
  117. package/client-dist/assets/index-uJnfvD1f.css +1 -0
  118. package/client-dist/assets/inter-latin-400-italic-D1l0FflY.woff2 +0 -0
  119. package/client-dist/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  120. package/client-dist/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  121. package/client-dist/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
  122. package/client-dist/assets/ja-CrCGPmoH.js +6 -0
  123. package/client-dist/assets/zh-CN-AFJxv5ke.js +6 -0
  124. package/client-dist/index.html +3 -3
  125. package/client-dist/sw.js +96 -9
  126. package/dist/app.d.ts +25 -0
  127. package/dist/app.d.ts.map +1 -1
  128. package/dist/app.js +350 -35
  129. package/dist/app.js.map +1 -1
  130. package/dist/augments/augment-generator.d.ts +1 -1
  131. package/dist/augments/augment-generator.d.ts.map +1 -1
  132. package/dist/augments/augment-generator.js +2 -2
  133. package/dist/augments/augment-generator.js.map +1 -1
  134. package/dist/augments/markdown-augments.d.ts +1 -1
  135. package/dist/augments/markdown-augments.d.ts.map +1 -1
  136. package/dist/augments/markdown-augments.js +5 -5
  137. package/dist/augments/markdown-augments.js.map +1 -1
  138. package/dist/augments/safe-markdown.d.ts +10 -0
  139. package/dist/augments/safe-markdown.d.ts.map +1 -1
  140. package/dist/augments/safe-markdown.js +146 -3
  141. package/dist/augments/safe-markdown.js.map +1 -1
  142. package/dist/augments/stream-augmenter.d.ts +3 -0
  143. package/dist/augments/stream-augmenter.d.ts.map +1 -1
  144. package/dist/augments/stream-augmenter.js +6 -3
  145. package/dist/augments/stream-augmenter.js.map +1 -1
  146. package/dist/augments/stream-coordinator.d.ts +5 -1
  147. package/dist/augments/stream-coordinator.d.ts.map +1 -1
  148. package/dist/augments/stream-coordinator.js +6 -4
  149. package/dist/augments/stream-coordinator.js.map +1 -1
  150. package/dist/augments/task-list-augments.d.ts +27 -0
  151. package/dist/augments/task-list-augments.d.ts.map +1 -0
  152. package/dist/augments/task-list-augments.js +360 -0
  153. package/dist/augments/task-list-augments.js.map +1 -0
  154. package/dist/cli.d.ts +1 -17
  155. package/dist/cli.d.ts.map +1 -1
  156. package/dist/cli.js +22 -8
  157. package/dist/cli.js.map +1 -1
  158. package/dist/codex/correlationDebugLogger.d.ts.map +1 -1
  159. package/dist/codex/correlationDebugLogger.js +36 -8
  160. package/dist/codex/correlationDebugLogger.js.map +1 -1
  161. package/dist/codex/normalization.d.ts +1 -0
  162. package/dist/codex/normalization.d.ts.map +1 -1
  163. package/dist/codex/normalization.js +262 -7
  164. package/dist/codex/normalization.js.map +1 -1
  165. package/dist/config.d.ts +49 -6
  166. package/dist/config.d.ts.map +1 -1
  167. package/dist/config.js +55 -14
  168. package/dist/config.js.map +1 -1
  169. package/dist/defaults.d.ts +3 -0
  170. package/dist/defaults.d.ts.map +1 -0
  171. package/dist/defaults.js +3 -0
  172. package/dist/defaults.js.map +1 -0
  173. package/dist/device/DeviceBridgeService.js +1 -1
  174. package/dist/device/DeviceBridgeService.js.map +1 -1
  175. package/dist/envSettings.d.ts +64 -0
  176. package/dist/envSettings.d.ts.map +1 -0
  177. package/dist/envSettings.js +553 -0
  178. package/dist/envSettings.js.map +1 -0
  179. package/dist/frontend/static.d.ts.map +1 -1
  180. package/dist/frontend/static.js +3 -1
  181. package/dist/frontend/static.js.map +1 -1
  182. package/dist/index.d.ts +1 -1
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.js +190 -14
  185. package/dist/index.js.map +1 -1
  186. package/dist/indexes/SessionDiscoveryIndex.d.ts +78 -0
  187. package/dist/indexes/SessionDiscoveryIndex.d.ts.map +1 -0
  188. package/dist/indexes/SessionDiscoveryIndex.js +223 -0
  189. package/dist/indexes/SessionDiscoveryIndex.js.map +1 -0
  190. package/dist/indexes/SessionIndexService.d.ts +114 -1
  191. package/dist/indexes/SessionIndexService.d.ts.map +1 -1
  192. package/dist/indexes/SessionIndexService.js +875 -105
  193. package/dist/indexes/SessionIndexService.js.map +1 -1
  194. package/dist/indexes/index.d.ts +2 -1
  195. package/dist/indexes/index.d.ts.map +1 -1
  196. package/dist/indexes/index.js +1 -0
  197. package/dist/indexes/index.js.map +1 -1
  198. package/dist/indexes/types.d.ts +26 -0
  199. package/dist/indexes/types.d.ts.map +1 -1
  200. package/dist/logging/logger.d.ts.map +1 -1
  201. package/dist/logging/logger.js +2 -3
  202. package/dist/logging/logger.js.map +1 -1
  203. package/dist/maintenance/server.d.ts.map +1 -1
  204. package/dist/maintenance/server.js +8 -11
  205. package/dist/maintenance/server.js.map +1 -1
  206. package/dist/metadata/ProjectMetadataService.d.ts +7 -0
  207. package/dist/metadata/ProjectMetadataService.d.ts.map +1 -1
  208. package/dist/metadata/ProjectMetadataService.js +63 -19
  209. package/dist/metadata/ProjectMetadataService.js.map +1 -1
  210. package/dist/metadata/SessionMetadataService.d.ts +82 -3
  211. package/dist/metadata/SessionMetadataService.d.ts.map +1 -1
  212. package/dist/metadata/SessionMetadataService.js +233 -17
  213. package/dist/metadata/SessionMetadataService.js.map +1 -1
  214. package/dist/middleware/file-access.d.ts +66 -0
  215. package/dist/middleware/file-access.d.ts.map +1 -0
  216. package/dist/middleware/file-access.js +112 -0
  217. package/dist/middleware/file-access.js.map +1 -0
  218. package/dist/projects/codex-scanner.d.ts +28 -1
  219. package/dist/projects/codex-scanner.d.ts.map +1 -1
  220. package/dist/projects/codex-scanner.js +149 -39
  221. package/dist/projects/codex-scanner.js.map +1 -1
  222. package/dist/projects/gemini-scanner.d.ts.map +1 -1
  223. package/dist/projects/gemini-scanner.js +59 -6
  224. package/dist/projects/gemini-scanner.js.map +1 -1
  225. package/dist/projects/paths.d.ts +15 -1
  226. package/dist/projects/paths.d.ts.map +1 -1
  227. package/dist/projects/paths.js +69 -23
  228. package/dist/projects/paths.js.map +1 -1
  229. package/dist/projects/scanner.d.ts +5 -0
  230. package/dist/projects/scanner.d.ts.map +1 -1
  231. package/dist/projects/scanner.js +136 -28
  232. package/dist/projects/scanner.js.map +1 -1
  233. package/dist/push/InactivityPushNotifier.d.ts +61 -0
  234. package/dist/push/InactivityPushNotifier.d.ts.map +1 -0
  235. package/dist/push/InactivityPushNotifier.js +305 -0
  236. package/dist/push/InactivityPushNotifier.js.map +1 -0
  237. package/dist/push/PushNotifier.d.ts.map +1 -1
  238. package/dist/push/PushNotifier.js.map +1 -1
  239. package/dist/push/PushService.d.ts +7 -4
  240. package/dist/push/PushService.d.ts.map +1 -1
  241. package/dist/push/PushService.js +27 -7
  242. package/dist/push/PushService.js.map +1 -1
  243. package/dist/push/index.d.ts +2 -1
  244. package/dist/push/index.d.ts.map +1 -1
  245. package/dist/push/index.js +1 -0
  246. package/dist/push/index.js.map +1 -1
  247. package/dist/push/routes.d.ts.map +1 -1
  248. package/dist/push/routes.js +28 -1
  249. package/dist/push/routes.js.map +1 -1
  250. package/dist/push/types.d.ts +21 -3
  251. package/dist/push/types.d.ts.map +1 -1
  252. package/dist/push/types.js +2 -0
  253. package/dist/push/types.js.map +1 -1
  254. package/dist/routes/dev.d.ts +2 -0
  255. package/dist/routes/dev.d.ts.map +1 -1
  256. package/dist/routes/dev.js +25 -0
  257. package/dist/routes/dev.js.map +1 -1
  258. package/dist/routes/env-settings.d.ts +20 -0
  259. package/dist/routes/env-settings.d.ts.map +1 -0
  260. package/dist/routes/env-settings.js +25 -0
  261. package/dist/routes/env-settings.js.map +1 -0
  262. package/dist/routes/files.d.ts +9 -0
  263. package/dist/routes/files.d.ts.map +1 -1
  264. package/dist/routes/files.js +98 -10
  265. package/dist/routes/files.js.map +1 -1
  266. package/dist/routes/git-status.d.ts.map +1 -1
  267. package/dist/routes/git-status.js +621 -23
  268. package/dist/routes/git-status.js.map +1 -1
  269. package/dist/routes/global-sessions.d.ts +11 -1
  270. package/dist/routes/global-sessions.d.ts.map +1 -1
  271. package/dist/routes/global-sessions.js +53 -33
  272. package/dist/routes/global-sessions.js.map +1 -1
  273. package/dist/routes/inbox.d.ts +10 -1
  274. package/dist/routes/inbox.d.ts.map +1 -1
  275. package/dist/routes/inbox.js +30 -3
  276. package/dist/routes/inbox.js.map +1 -1
  277. package/dist/routes/local-file.d.ts +6 -2
  278. package/dist/routes/local-file.d.ts.map +1 -1
  279. package/dist/routes/local-file.js +13 -4
  280. package/dist/routes/local-file.js.map +1 -1
  281. package/dist/routes/local-image.d.ts +2 -1
  282. package/dist/routes/local-image.d.ts.map +1 -1
  283. package/dist/routes/local-image.js.map +1 -1
  284. package/dist/routes/local-resource-policy.d.ts +7 -1
  285. package/dist/routes/local-resource-policy.d.ts.map +1 -1
  286. package/dist/routes/local-resource-policy.js +0 -0
  287. package/dist/routes/local-resource-policy.js.map +1 -1
  288. package/dist/routes/processes.d.ts.map +1 -1
  289. package/dist/routes/processes.js +49 -11
  290. package/dist/routes/processes.js.map +1 -1
  291. package/dist/routes/project-queue-response.d.ts +26 -0
  292. package/dist/routes/project-queue-response.d.ts.map +1 -0
  293. package/dist/routes/project-queue-response.js +188 -0
  294. package/dist/routes/project-queue-response.js.map +1 -0
  295. package/dist/routes/project-queue.d.ts +5 -0
  296. package/dist/routes/project-queue.d.ts.map +1 -0
  297. package/dist/routes/project-queue.js +219 -0
  298. package/dist/routes/project-queue.js.map +1 -0
  299. package/dist/routes/projects.d.ts +6 -0
  300. package/dist/routes/projects.d.ts.map +1 -1
  301. package/dist/routes/projects.js +116 -28
  302. package/dist/routes/projects.js.map +1 -1
  303. package/dist/routes/providers.d.ts +5 -0
  304. package/dist/routes/providers.d.ts.map +1 -1
  305. package/dist/routes/providers.js +52 -33
  306. package/dist/routes/providers.js.map +1 -1
  307. package/dist/routes/public-shares.d.ts.map +1 -1
  308. package/dist/routes/public-shares.js +46 -17
  309. package/dist/routes/public-shares.js.map +1 -1
  310. package/dist/routes/recents.d.ts +3 -0
  311. package/dist/routes/recents.d.ts.map +1 -1
  312. package/dist/routes/recents.js +3 -1
  313. package/dist/routes/recents.js.map +1 -1
  314. package/dist/routes/server-admin.d.ts +9 -0
  315. package/dist/routes/server-admin.d.ts.map +1 -1
  316. package/dist/routes/server-admin.js +45 -7
  317. package/dist/routes/server-admin.js.map +1 -1
  318. package/dist/routes/session-claude-resume-guard.d.ts +16 -0
  319. package/dist/routes/session-claude-resume-guard.d.ts.map +1 -0
  320. package/dist/routes/session-claude-resume-guard.js +50 -0
  321. package/dist/routes/session-claude-resume-guard.js.map +1 -0
  322. package/dist/routes/session-compact-thresholds.d.ts +22 -0
  323. package/dist/routes/session-compact-thresholds.d.ts.map +1 -0
  324. package/dist/routes/session-compact-thresholds.js +35 -0
  325. package/dist/routes/session-compact-thresholds.js.map +1 -0
  326. package/dist/routes/session-index.d.ts +7 -0
  327. package/dist/routes/session-index.d.ts.map +1 -0
  328. package/dist/routes/session-index.js +9 -0
  329. package/dist/routes/session-index.js.map +1 -0
  330. package/dist/routes/session-list-options.d.ts +1 -1
  331. package/dist/routes/session-list-options.d.ts.map +1 -1
  332. package/dist/routes/session-list-options.js +1 -1
  333. package/dist/routes/session-list-options.js.map +1 -1
  334. package/dist/routes/session-request-helpers.d.ts +31 -0
  335. package/dist/routes/session-request-helpers.d.ts.map +1 -0
  336. package/dist/routes/session-request-helpers.js +212 -0
  337. package/dist/routes/session-request-helpers.js.map +1 -0
  338. package/dist/routes/sessions.d.ts +14 -1
  339. package/dist/routes/sessions.d.ts.map +1 -1
  340. package/dist/routes/sessions.js +2141 -551
  341. package/dist/routes/sessions.js.map +1 -1
  342. package/dist/routes/settings.d.ts +7 -1
  343. package/dist/routes/settings.d.ts.map +1 -1
  344. package/dist/routes/settings.js +771 -25
  345. package/dist/routes/settings.js.map +1 -1
  346. package/dist/routes/speech.d.ts +24 -2
  347. package/dist/routes/speech.d.ts.map +1 -1
  348. package/dist/routes/speech.js +539 -10
  349. package/dist/routes/speech.js.map +1 -1
  350. package/dist/routes/supervisor-queue.d.ts +6 -0
  351. package/dist/routes/supervisor-queue.d.ts.map +1 -0
  352. package/dist/routes/supervisor-queue.js +35 -0
  353. package/dist/routes/supervisor-queue.js.map +1 -0
  354. package/dist/routes/upload.d.ts +2 -0
  355. package/dist/routes/upload.d.ts.map +1 -1
  356. package/dist/routes/upload.js +190 -38
  357. package/dist/routes/upload.js.map +1 -1
  358. package/dist/routes/version.d.ts +18 -1
  359. package/dist/routes/version.d.ts.map +1 -1
  360. package/dist/routes/version.js +22 -1
  361. package/dist/routes/version.js.map +1 -1
  362. package/dist/routes/workstreams.d.ts +11 -0
  363. package/dist/routes/workstreams.d.ts.map +1 -0
  364. package/dist/routes/workstreams.js +144 -0
  365. package/dist/routes/workstreams.js.map +1 -0
  366. package/dist/routes/ws-message-router.d.ts +10 -1
  367. package/dist/routes/ws-message-router.d.ts.map +1 -1
  368. package/dist/routes/ws-message-router.js +43 -4
  369. package/dist/routes/ws-message-router.js.map +1 -1
  370. package/dist/routes/ws-relay-handlers.d.ts +27 -5
  371. package/dist/routes/ws-relay-handlers.d.ts.map +1 -1
  372. package/dist/routes/ws-relay-handlers.js +177 -19
  373. package/dist/routes/ws-relay-handlers.js.map +1 -1
  374. package/dist/routes/ws-relay.d.ts +19 -0
  375. package/dist/routes/ws-relay.d.ts.map +1 -1
  376. package/dist/routes/ws-relay.js +21 -7
  377. package/dist/routes/ws-relay.js.map +1 -1
  378. package/dist/sdk/cli-detection.d.ts +1 -1
  379. package/dist/sdk/cli-detection.d.ts.map +1 -1
  380. package/dist/sdk/cli-detection.js +47 -7
  381. package/dist/sdk/cli-detection.js.map +1 -1
  382. package/dist/sdk/messageLogger.d.ts.map +1 -1
  383. package/dist/sdk/messageLogger.js +38 -10
  384. package/dist/sdk/messageLogger.js.map +1 -1
  385. package/dist/sdk/messageQueue.d.ts.map +1 -1
  386. package/dist/sdk/messageQueue.js +26 -0
  387. package/dist/sdk/messageQueue.js.map +1 -1
  388. package/dist/sdk/providers/__mocks__/grok.d.ts +1 -1
  389. package/dist/sdk/providers/__mocks__/grok.d.ts.map +1 -1
  390. package/dist/sdk/providers/__mocks__/grok.js +1 -1
  391. package/dist/sdk/providers/__mocks__/grok.js.map +1 -1
  392. package/dist/sdk/providers/agentctl-session-env.d.ts +8 -0
  393. package/dist/sdk/providers/agentctl-session-env.d.ts.map +1 -0
  394. package/dist/sdk/providers/agentctl-session-env.js +52 -0
  395. package/dist/sdk/providers/agentctl-session-env.js.map +1 -0
  396. package/dist/sdk/providers/claude-ollama.d.ts +2 -1
  397. package/dist/sdk/providers/claude-ollama.d.ts.map +1 -1
  398. package/dist/sdk/providers/claude-ollama.js +1 -0
  399. package/dist/sdk/providers/claude-ollama.js.map +1 -1
  400. package/dist/sdk/providers/claude-retention.d.ts +19 -0
  401. package/dist/sdk/providers/claude-retention.d.ts.map +1 -0
  402. package/dist/sdk/providers/claude-retention.js +169 -0
  403. package/dist/sdk/providers/claude-retention.js.map +1 -0
  404. package/dist/sdk/providers/claude.d.ts +52 -5
  405. package/dist/sdk/providers/claude.d.ts.map +1 -1
  406. package/dist/sdk/providers/claude.js +593 -71
  407. package/dist/sdk/providers/claude.js.map +1 -1
  408. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.d.ts +8 -0
  409. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.d.ts.map +1 -0
  410. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.js +3 -0
  411. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.js.map +1 -0
  412. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.d.ts +10 -0
  413. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.d.ts.map +1 -0
  414. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.js +3 -0
  415. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.js.map +1 -0
  416. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.d.ts +23 -0
  417. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.d.ts.map +1 -0
  418. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.js +3 -0
  419. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.js.map +1 -0
  420. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.d.ts +8 -0
  421. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.d.ts.map +1 -0
  422. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.js +3 -0
  423. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.js.map +1 -0
  424. package/dist/sdk/providers/codex-protocol/generated/ReasoningEffort.d.ts +1 -1
  425. package/dist/sdk/providers/codex-protocol/generated/ReasoningEffort.d.ts.map +1 -1
  426. package/dist/sdk/providers/codex-protocol/generated/ResponseItem.d.ts +38 -1
  427. package/dist/sdk/providers/codex-protocol/generated/ResponseItem.d.ts.map +1 -1
  428. package/dist/sdk/providers/codex-protocol/generated/v2/AdditionalFileSystemPermissions.d.ts +3 -3
  429. package/dist/sdk/providers/codex-protocol/generated/v2/AdditionalFileSystemPermissions.d.ts.map +1 -1
  430. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.d.ts +9 -0
  431. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.d.ts.map +1 -0
  432. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.js +3 -0
  433. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.js.map +1 -0
  434. package/dist/sdk/providers/codex-protocol/generated/v2/CommandExecutionRequestApprovalParams.d.ts +6 -2
  435. package/dist/sdk/providers/codex-protocol/generated/v2/CommandExecutionRequestApprovalParams.d.ts.map +1 -1
  436. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.d.ts +8 -0
  437. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.d.ts.map +1 -0
  438. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.js +3 -0
  439. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.js.map +1 -0
  440. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.d.ts +7 -0
  441. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.d.ts.map +1 -0
  442. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.js +3 -0
  443. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.js.map +1 -0
  444. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.d.ts +5 -0
  445. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.d.ts.map +1 -0
  446. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.js +3 -0
  447. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.js.map +1 -0
  448. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolSpec.d.ts +6 -7
  449. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolSpec.d.ts.map +1 -1
  450. package/dist/sdk/providers/codex-protocol/generated/v2/FileSystemPath.d.ts +2 -2
  451. package/dist/sdk/providers/codex-protocol/generated/v2/FileSystemPath.d.ts.map +1 -1
  452. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.d.ts +6 -0
  453. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.d.ts.map +1 -0
  454. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.js +3 -0
  455. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.js.map +1 -0
  456. package/dist/sdk/providers/codex-protocol/generated/v2/PermissionsRequestApprovalParams.d.ts +1 -0
  457. package/dist/sdk/providers/codex-protocol/generated/v2/PermissionsRequestApprovalParams.d.ts.map +1 -1
  458. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.d.ts +15 -0
  459. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.d.ts.map +1 -0
  460. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.js +3 -0
  461. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.js.map +1 -0
  462. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.d.ts +2 -0
  463. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.d.ts.map +1 -0
  464. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.js +3 -0
  465. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.js.map +1 -0
  466. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.d.ts +2 -0
  467. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.d.ts.map +1 -0
  468. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.js +3 -0
  469. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.js.map +1 -0
  470. package/dist/sdk/providers/codex-protocol/generated/v2/Thread.d.ts +8 -0
  471. package/dist/sdk/providers/codex-protocol/generated/v2/Thread.d.ts.map +1 -1
  472. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.d.ts +4 -0
  473. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.d.ts.map +1 -0
  474. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.js +3 -0
  475. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.js.map +1 -0
  476. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.d.ts +2 -0
  477. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.d.ts.map +1 -0
  478. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.js +3 -0
  479. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.js.map +1 -0
  480. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.d.ts +64 -0
  481. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.d.ts.map +1 -0
  482. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.js +3 -0
  483. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.js.map +1 -0
  484. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.d.ts +46 -0
  485. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.d.ts.map +1 -0
  486. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.js +3 -0
  487. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.js.map +1 -0
  488. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadItem.d.ts +19 -1
  489. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadItem.d.ts.map +1 -1
  490. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.d.ts +5 -0
  491. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.d.ts.map +1 -0
  492. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.js +3 -0
  493. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.js.map +1 -0
  494. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.d.ts +17 -0
  495. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.d.ts.map +1 -0
  496. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.js +3 -0
  497. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.js.map +1 -0
  498. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeParams.d.ts +7 -7
  499. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeParams.d.ts.map +1 -1
  500. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeResponse.d.ts +13 -2
  501. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeResponse.d.ts.map +1 -1
  502. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.d.ts +11 -0
  503. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.d.ts.map +1 -0
  504. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.js +3 -0
  505. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.js.map +1 -0
  506. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.d.ts +12 -0
  507. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.d.ts.map +1 -0
  508. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.js +3 -0
  509. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.js.map +1 -0
  510. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadSource.d.ts +1 -1
  511. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadSource.d.ts.map +1 -1
  512. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartParams.d.ts +13 -9
  513. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartParams.d.ts.map +1 -1
  514. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartResponse.d.ts +8 -2
  515. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartResponse.d.ts.map +1 -1
  516. package/dist/sdk/providers/codex-protocol/generated/v2/ToolRequestUserInputParams.d.ts +1 -0
  517. package/dist/sdk/providers/codex-protocol/generated/v2/ToolRequestUserInputParams.d.ts.map +1 -1
  518. package/dist/sdk/providers/codex-protocol/generated/v2/TurnEnvironmentParams.d.ts +2 -2
  519. package/dist/sdk/providers/codex-protocol/generated/v2/TurnEnvironmentParams.d.ts.map +1 -1
  520. package/dist/sdk/providers/codex-protocol/generated/v2/TurnStartParams.d.ts +17 -5
  521. package/dist/sdk/providers/codex-protocol/generated/v2/TurnStartParams.d.ts.map +1 -1
  522. package/dist/sdk/providers/codex-protocol/generated/v2/TurnSteerParams.d.ts +8 -1
  523. package/dist/sdk/providers/codex-protocol/generated/v2/TurnSteerParams.d.ts.map +1 -1
  524. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.d.ts +7 -0
  525. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.d.ts.map +1 -0
  526. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.js +3 -0
  527. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.js.map +1 -0
  528. package/dist/sdk/providers/codex-protocol/index.d.ts +7 -0
  529. package/dist/sdk/providers/codex-protocol/index.d.ts.map +1 -1
  530. package/dist/sdk/providers/codex.d.ts +26 -4
  531. package/dist/sdk/providers/codex.d.ts.map +1 -1
  532. package/dist/sdk/providers/codex.js +457 -37
  533. package/dist/sdk/providers/codex.js.map +1 -1
  534. package/dist/sdk/providers/env-filter.d.ts.map +1 -1
  535. package/dist/sdk/providers/env-filter.js +19 -1
  536. package/dist/sdk/providers/env-filter.js.map +1 -1
  537. package/dist/sdk/providers/gemini-tools.d.ts +28 -0
  538. package/dist/sdk/providers/gemini-tools.d.ts.map +1 -0
  539. package/dist/sdk/providers/gemini-tools.js +57 -0
  540. package/dist/sdk/providers/gemini-tools.js.map +1 -0
  541. package/dist/sdk/providers/gemini.d.ts.map +1 -1
  542. package/dist/sdk/providers/gemini.js +4 -2
  543. package/dist/sdk/providers/gemini.js.map +1 -1
  544. package/dist/sdk/providers/grok-acp.d.ts +1 -1
  545. package/dist/sdk/providers/grok-acp.d.ts.map +1 -1
  546. package/dist/sdk/providers/grok-acp.js +1 -1
  547. package/dist/sdk/providers/grok-acp.js.map +1 -1
  548. package/dist/sdk/providers/index.d.ts +1 -0
  549. package/dist/sdk/providers/index.d.ts.map +1 -1
  550. package/dist/sdk/providers/index.js +6 -0
  551. package/dist/sdk/providers/index.js.map +1 -1
  552. package/dist/sdk/providers/opencode-tools.d.ts +36 -0
  553. package/dist/sdk/providers/opencode-tools.d.ts.map +1 -0
  554. package/dist/sdk/providers/opencode-tools.js +78 -0
  555. package/dist/sdk/providers/opencode-tools.js.map +1 -0
  556. package/dist/sdk/providers/opencode.d.ts +53 -5
  557. package/dist/sdk/providers/opencode.d.ts.map +1 -1
  558. package/dist/sdk/providers/opencode.js +379 -71
  559. package/dist/sdk/providers/opencode.js.map +1 -1
  560. package/dist/sdk/providers/pi-rpc-client.d.ts +90 -0
  561. package/dist/sdk/providers/pi-rpc-client.d.ts.map +1 -0
  562. package/dist/sdk/providers/pi-rpc-client.js +168 -0
  563. package/dist/sdk/providers/pi-rpc-client.js.map +1 -0
  564. package/dist/sdk/providers/pi-tools.d.ts +38 -0
  565. package/dist/sdk/providers/pi-tools.d.ts.map +1 -0
  566. package/dist/sdk/providers/pi-tools.js +214 -0
  567. package/dist/sdk/providers/pi-tools.js.map +1 -0
  568. package/dist/sdk/providers/pi.d.ts +84 -0
  569. package/dist/sdk/providers/pi.d.ts.map +1 -0
  570. package/dist/sdk/providers/pi.js +686 -0
  571. package/dist/sdk/providers/pi.js.map +1 -0
  572. package/dist/sdk/providers/staticSlashCommands.d.ts +4 -0
  573. package/dist/sdk/providers/staticSlashCommands.d.ts.map +1 -0
  574. package/dist/sdk/providers/staticSlashCommands.js +14 -0
  575. package/dist/sdk/providers/staticSlashCommands.js.map +1 -0
  576. package/dist/sdk/providers/types.d.ts +144 -17
  577. package/dist/sdk/providers/types.d.ts.map +1 -1
  578. package/dist/sdk/remote-spawn.d.ts.map +1 -1
  579. package/dist/sdk/remote-spawn.js.map +1 -1
  580. package/dist/sdk/slashCommandEmulation.d.ts +9 -0
  581. package/dist/sdk/slashCommandEmulation.d.ts.map +1 -1
  582. package/dist/sdk/slashCommandEmulation.js +15 -0
  583. package/dist/sdk/slashCommandEmulation.js.map +1 -1
  584. package/dist/sdk/types.d.ts +40 -0
  585. package/dist/sdk/types.d.ts.map +1 -1
  586. package/dist/security/approvalAuditLog.d.ts +3 -2
  587. package/dist/security/approvalAuditLog.d.ts.map +1 -1
  588. package/dist/security/approvalAuditLog.js +62 -2
  589. package/dist/security/approvalAuditLog.js.map +1 -1
  590. package/dist/services/BrowserProfileService.d.ts +21 -0
  591. package/dist/services/BrowserProfileService.d.ts.map +1 -1
  592. package/dist/services/BrowserProfileService.js +74 -1
  593. package/dist/services/BrowserProfileService.js.map +1 -1
  594. package/dist/services/CacheMissBillingMonitor.d.ts +25 -0
  595. package/dist/services/CacheMissBillingMonitor.d.ts.map +1 -0
  596. package/dist/services/CacheMissBillingMonitor.js +179 -0
  597. package/dist/services/CacheMissBillingMonitor.js.map +1 -0
  598. package/dist/services/CodexUpdateChecker.d.ts.map +1 -1
  599. package/dist/services/CodexUpdateChecker.js +3 -2
  600. package/dist/services/CodexUpdateChecker.js.map +1 -1
  601. package/dist/services/ModelInfoService.d.ts +58 -9
  602. package/dist/services/ModelInfoService.d.ts.map +1 -1
  603. package/dist/services/ModelInfoService.js +127 -14
  604. package/dist/services/ModelInfoService.js.map +1 -1
  605. package/dist/services/ProjectQueueScheduler.d.ts +91 -0
  606. package/dist/services/ProjectQueueScheduler.d.ts.map +1 -0
  607. package/dist/services/ProjectQueueScheduler.js +404 -0
  608. package/dist/services/ProjectQueueScheduler.js.map +1 -0
  609. package/dist/services/ProjectQueueService.d.ts +60 -0
  610. package/dist/services/ProjectQueueService.d.ts.map +1 -0
  611. package/dist/services/ProjectQueueService.js +804 -0
  612. package/dist/services/ProjectQueueService.js.map +1 -0
  613. package/dist/services/RelayClientService.d.ts +5 -0
  614. package/dist/services/RelayClientService.d.ts.map +1 -1
  615. package/dist/services/RelayClientService.js +26 -12
  616. package/dist/services/RelayClientService.js.map +1 -1
  617. package/dist/services/SafeRestartService.d.ts +48 -0
  618. package/dist/services/SafeRestartService.d.ts.map +1 -0
  619. package/dist/services/SafeRestartService.js +173 -0
  620. package/dist/services/SafeRestartService.js.map +1 -0
  621. package/dist/services/ServerSettingsService.d.ts +41 -1
  622. package/dist/services/ServerSettingsService.d.ts.map +1 -1
  623. package/dist/services/ServerSettingsService.js +110 -1
  624. package/dist/services/ServerSettingsService.js.map +1 -1
  625. package/dist/services/SessionQueuePersistenceService.d.ts +55 -0
  626. package/dist/services/SessionQueuePersistenceService.d.ts.map +1 -0
  627. package/dist/services/SessionQueuePersistenceService.js +264 -0
  628. package/dist/services/SessionQueuePersistenceService.js.map +1 -0
  629. package/dist/services/WorkstreamService.d.ts +92 -0
  630. package/dist/services/WorkstreamService.d.ts.map +1 -0
  631. package/dist/services/WorkstreamService.js +627 -0
  632. package/dist/services/WorkstreamService.js.map +1 -0
  633. package/dist/services/index.d.ts +4 -0
  634. package/dist/services/index.d.ts.map +1 -1
  635. package/dist/services/index.js +4 -0
  636. package/dist/services/index.js.map +1 -1
  637. package/dist/services/projectWorkIdle.d.ts +42 -0
  638. package/dist/services/projectWorkIdle.d.ts.map +1 -0
  639. package/dist/services/projectWorkIdle.js +50 -0
  640. package/dist/services/projectWorkIdle.js.map +1 -0
  641. package/dist/services/voice/SpeechBackend.d.ts +18 -1
  642. package/dist/services/voice/SpeechBackend.d.ts.map +1 -1
  643. package/dist/services/voice/SpeechBackend.js +3 -0
  644. package/dist/services/voice/SpeechBackend.js.map +1 -1
  645. package/dist/services/voice/audioRetention.d.ts +20 -0
  646. package/dist/services/voice/audioRetention.d.ts.map +1 -1
  647. package/dist/services/voice/audioRetention.js +2 -0
  648. package/dist/services/voice/audioRetention.js.map +1 -1
  649. package/dist/services/voice/deepgramBackend.d.ts.map +1 -1
  650. package/dist/services/voice/deepgramBackend.js +4 -1
  651. package/dist/services/voice/deepgramBackend.js.map +1 -1
  652. package/dist/services/voice/localNemoBackend.d.ts +31 -0
  653. package/dist/services/voice/localNemoBackend.d.ts.map +1 -0
  654. package/dist/services/voice/localNemoBackend.js +181 -0
  655. package/dist/services/voice/localNemoBackend.js.map +1 -0
  656. package/dist/services/voice/localParakeetBackend.d.ts +31 -0
  657. package/dist/services/voice/localParakeetBackend.d.ts.map +1 -0
  658. package/dist/services/voice/localParakeetBackend.js +180 -0
  659. package/dist/services/voice/localParakeetBackend.js.map +1 -0
  660. package/dist/services/voice/localSttRuntime.d.ts +21 -0
  661. package/dist/services/voice/localSttRuntime.d.ts.map +1 -0
  662. package/dist/services/voice/localSttRuntime.js +87 -0
  663. package/dist/services/voice/localSttRuntime.js.map +1 -0
  664. package/dist/services/voice/localWhisperBackend.d.ts +2 -1
  665. package/dist/services/voice/localWhisperBackend.d.ts.map +1 -1
  666. package/dist/services/voice/localWhisperBackend.js +47 -34
  667. package/dist/services/voice/localWhisperBackend.js.map +1 -1
  668. package/dist/services/voice/nemo_worker.py +232 -0
  669. package/dist/services/voice/parakeet_worker.py +151 -0
  670. package/dist/services/voice/registry.d.ts +19 -4
  671. package/dist/services/voice/registry.d.ts.map +1 -1
  672. package/dist/services/voice/registry.js +72 -22
  673. package/dist/services/voice/registry.js.map +1 -1
  674. package/dist/services/voice/serialQueue.d.ts +17 -0
  675. package/dist/services/voice/serialQueue.d.ts.map +1 -0
  676. package/dist/services/voice/serialQueue.js +24 -0
  677. package/dist/services/voice/serialQueue.js.map +1 -0
  678. package/dist/services/voice/whisper_worker.py +94 -0
  679. package/dist/services/voice/xaiSttBackend.d.ts +1 -1
  680. package/dist/services/voice/xaiSttBackend.d.ts.map +1 -1
  681. package/dist/services/voice/xaiSttBackend.js +15 -3
  682. package/dist/services/voice/xaiSttBackend.js.map +1 -1
  683. package/dist/sessions/agent-excerpt.d.ts +29 -0
  684. package/dist/sessions/agent-excerpt.d.ts.map +1 -0
  685. package/dist/sessions/agent-excerpt.js +128 -0
  686. package/dist/sessions/agent-excerpt.js.map +1 -0
  687. package/dist/sessions/claude-messages.d.ts.map +1 -1
  688. package/dist/sessions/claude-messages.js +75 -4
  689. package/dist/sessions/claude-messages.js.map +1 -1
  690. package/dist/sessions/claude-summary.d.ts +33 -0
  691. package/dist/sessions/claude-summary.d.ts.map +1 -0
  692. package/dist/sessions/claude-summary.js +461 -0
  693. package/dist/sessions/claude-summary.js.map +1 -0
  694. package/dist/sessions/codex-discovery.d.ts +46 -0
  695. package/dist/sessions/codex-discovery.d.ts.map +1 -0
  696. package/dist/sessions/codex-discovery.js +269 -0
  697. package/dist/sessions/codex-discovery.js.map +1 -0
  698. package/dist/sessions/codex-reader.d.ts +96 -13
  699. package/dist/sessions/codex-reader.d.ts.map +1 -1
  700. package/dist/sessions/codex-reader.js +1069 -141
  701. package/dist/sessions/codex-reader.js.map +1 -1
  702. package/dist/sessions/dag.d.ts +25 -4
  703. package/dist/sessions/dag.d.ts.map +1 -1
  704. package/dist/sessions/dag.js +37 -4
  705. package/dist/sessions/dag.js.map +1 -1
  706. package/dist/sessions/gemini-reader.d.ts +3 -1
  707. package/dist/sessions/gemini-reader.d.ts.map +1 -1
  708. package/dist/sessions/gemini-reader.js +17 -8
  709. package/dist/sessions/gemini-reader.js.map +1 -1
  710. package/dist/sessions/grok-reader.d.ts +1 -0
  711. package/dist/sessions/grok-reader.d.ts.map +1 -1
  712. package/dist/sessions/grok-reader.js +11 -5
  713. package/dist/sessions/grok-reader.js.map +1 -1
  714. package/dist/sessions/normalization.d.ts +3 -1
  715. package/dist/sessions/normalization.d.ts.map +1 -1
  716. package/dist/sessions/normalization.js +72 -16
  717. package/dist/sessions/normalization.js.map +1 -1
  718. package/dist/sessions/null-reader.d.ts +31 -0
  719. package/dist/sessions/null-reader.d.ts.map +1 -0
  720. package/dist/sessions/null-reader.js +30 -0
  721. package/dist/sessions/null-reader.js.map +1 -0
  722. package/dist/sessions/opencode-db-reader.d.ts +66 -0
  723. package/dist/sessions/opencode-db-reader.d.ts.map +1 -0
  724. package/dist/sessions/opencode-db-reader.js +333 -0
  725. package/dist/sessions/opencode-db-reader.js.map +1 -0
  726. package/dist/sessions/opencode-reader.d.ts +50 -0
  727. package/dist/sessions/opencode-reader.d.ts.map +1 -1
  728. package/dist/sessions/opencode-reader.js +375 -71
  729. package/dist/sessions/opencode-reader.js.map +1 -1
  730. package/dist/sessions/pagination.d.ts.map +1 -1
  731. package/dist/sessions/pagination.js +119 -3
  732. package/dist/sessions/pagination.js.map +1 -1
  733. package/dist/sessions/persisted-augments.d.ts +2 -1
  734. package/dist/sessions/persisted-augments.d.ts.map +1 -1
  735. package/dist/sessions/persisted-augments.js +2 -2
  736. package/dist/sessions/persisted-augments.js.map +1 -1
  737. package/dist/sessions/pi-fork.d.ts +12 -0
  738. package/dist/sessions/pi-fork.d.ts.map +1 -0
  739. package/dist/sessions/pi-fork.js +125 -0
  740. package/dist/sessions/pi-fork.js.map +1 -0
  741. package/dist/sessions/pi-reader.d.ts +81 -0
  742. package/dist/sessions/pi-reader.d.ts.map +1 -0
  743. package/dist/sessions/pi-reader.js +413 -0
  744. package/dist/sessions/pi-reader.js.map +1 -0
  745. package/dist/sessions/provider-resolution.d.ts +10 -3
  746. package/dist/sessions/provider-resolution.d.ts.map +1 -1
  747. package/dist/sessions/provider-resolution.js +62 -6
  748. package/dist/sessions/provider-resolution.js.map +1 -1
  749. package/dist/sessions/reader.d.ts +17 -24
  750. package/dist/sessions/reader.d.ts.map +1 -1
  751. package/dist/sessions/reader.js +86 -157
  752. package/dist/sessions/reader.js.map +1 -1
  753. package/dist/sessions/recap-overlays.d.ts +38 -0
  754. package/dist/sessions/recap-overlays.d.ts.map +1 -0
  755. package/dist/sessions/recap-overlays.js +176 -0
  756. package/dist/sessions/recap-overlays.js.map +1 -0
  757. package/dist/sessions/summary-parser-worker-client.d.ts +80 -0
  758. package/dist/sessions/summary-parser-worker-client.d.ts.map +1 -0
  759. package/dist/sessions/summary-parser-worker-client.js +539 -0
  760. package/dist/sessions/summary-parser-worker-client.js.map +1 -0
  761. package/dist/sessions/summary-parser-worker-entry.d.ts +2 -0
  762. package/dist/sessions/summary-parser-worker-entry.d.ts.map +1 -0
  763. package/dist/sessions/summary-parser-worker-entry.js +29 -0
  764. package/dist/sessions/summary-parser-worker-entry.js.map +1 -0
  765. package/dist/sessions/summary-parser-worker-protocol.d.ts +105 -0
  766. package/dist/sessions/summary-parser-worker-protocol.d.ts.map +1 -0
  767. package/dist/sessions/summary-parser-worker-protocol.js +35 -0
  768. package/dist/sessions/summary-parser-worker-protocol.js.map +1 -0
  769. package/dist/sessions/summary-parser-worker-runner.d.ts +3 -0
  770. package/dist/sessions/summary-parser-worker-runner.d.ts.map +1 -0
  771. package/dist/sessions/summary-parser-worker-runner.js +158 -0
  772. package/dist/sessions/summary-parser-worker-runner.js.map +1 -0
  773. package/dist/sessions/types.d.ts +30 -1
  774. package/dist/sessions/types.d.ts.map +1 -1
  775. package/dist/startupEnv.d.ts +2 -0
  776. package/dist/startupEnv.d.ts.map +1 -0
  777. package/dist/startupEnv.js +97 -0
  778. package/dist/startupEnv.js.map +1 -0
  779. package/dist/subscriptions.d.ts.map +1 -1
  780. package/dist/subscriptions.js +28 -18
  781. package/dist/subscriptions.js.map +1 -1
  782. package/dist/supervisor/ExternalSessionTracker.d.ts +5 -1
  783. package/dist/supervisor/ExternalSessionTracker.d.ts.map +1 -1
  784. package/dist/supervisor/ExternalSessionTracker.js +98 -6
  785. package/dist/supervisor/ExternalSessionTracker.js.map +1 -1
  786. package/dist/supervisor/Process.d.ts +252 -32
  787. package/dist/supervisor/Process.d.ts.map +1 -1
  788. package/dist/supervisor/Process.js +1233 -219
  789. package/dist/supervisor/Process.js.map +1 -1
  790. package/dist/supervisor/Supervisor.d.ts +201 -5
  791. package/dist/supervisor/Supervisor.d.ts.map +1 -1
  792. package/dist/supervisor/Supervisor.js +1074 -55
  793. package/dist/supervisor/Supervisor.js.map +1 -1
  794. package/dist/supervisor/WorkerQueue.d.ts +3 -1
  795. package/dist/supervisor/WorkerQueue.d.ts.map +1 -1
  796. package/dist/supervisor/WorkerQueue.js +1 -0
  797. package/dist/supervisor/WorkerQueue.js.map +1 -1
  798. package/dist/supervisor/composeTimeAnchor.d.ts +36 -0
  799. package/dist/supervisor/composeTimeAnchor.d.ts.map +1 -0
  800. package/dist/supervisor/composeTimeAnchor.js +51 -0
  801. package/dist/supervisor/composeTimeAnchor.js.map +1 -0
  802. package/dist/supervisor/deferredDeliverySettings.d.ts +23 -0
  803. package/dist/supervisor/deferredDeliverySettings.d.ts.map +1 -0
  804. package/dist/supervisor/deferredDeliverySettings.js +40 -0
  805. package/dist/supervisor/deferredDeliverySettings.js.map +1 -0
  806. package/dist/supervisor/liveness.d.ts +5 -2
  807. package/dist/supervisor/liveness.d.ts.map +1 -1
  808. package/dist/supervisor/liveness.js +40 -2
  809. package/dist/supervisor/liveness.js.map +1 -1
  810. package/dist/supervisor/types.d.ts +56 -5
  811. package/dist/supervisor/types.d.ts.map +1 -1
  812. package/dist/supervisor/types.js +0 -2
  813. package/dist/supervisor/types.js.map +1 -1
  814. package/dist/uploads/AttachmentStagingService.d.ts +94 -0
  815. package/dist/uploads/AttachmentStagingService.d.ts.map +1 -0
  816. package/dist/uploads/AttachmentStagingService.js +673 -0
  817. package/dist/uploads/AttachmentStagingService.js.map +1 -0
  818. package/dist/uploads/index.d.ts +2 -0
  819. package/dist/uploads/index.d.ts.map +1 -1
  820. package/dist/uploads/index.js +1 -0
  821. package/dist/uploads/index.js.map +1 -1
  822. package/dist/uploads/manager.d.ts +1 -0
  823. package/dist/uploads/manager.d.ts.map +1 -1
  824. package/dist/uploads/manager.js +72 -12
  825. package/dist/uploads/manager.js.map +1 -1
  826. package/dist/utils/codexRolloutFiles.d.ts +16 -0
  827. package/dist/utils/codexRolloutFiles.d.ts.map +1 -0
  828. package/dist/utils/codexRolloutFiles.js +45 -0
  829. package/dist/utils/codexRolloutFiles.js.map +1 -0
  830. package/dist/utils/jsonl.d.ts +8 -0
  831. package/dist/utils/jsonl.d.ts.map +1 -1
  832. package/dist/utils/jsonl.js +158 -5
  833. package/dist/utils/jsonl.js.map +1 -1
  834. package/dist/utils/publicShareViewerUrl.d.ts.map +1 -1
  835. package/dist/utils/publicShareViewerUrl.js +2 -15
  836. package/dist/utils/publicShareViewerUrl.js.map +1 -1
  837. package/dist/watcher/EventBus.d.ts +42 -4
  838. package/dist/watcher/EventBus.d.ts.map +1 -1
  839. package/dist/watcher/EventBus.js.map +1 -1
  840. package/dist/watcher/FileWatcher.d.ts +47 -0
  841. package/dist/watcher/FileWatcher.d.ts.map +1 -1
  842. package/dist/watcher/FileWatcher.js +185 -14
  843. package/dist/watcher/FileWatcher.js.map +1 -1
  844. package/dist/watcher/index.d.ts +2 -2
  845. package/dist/watcher/index.d.ts.map +1 -1
  846. package/dist/watcher/index.js.map +1 -1
  847. package/dist/yaModuleEnv.d.ts +6 -6
  848. package/dist/yaModuleEnv.d.ts.map +1 -1
  849. package/dist/yaModuleEnv.js +12 -12
  850. package/dist/yaModuleEnv.js.map +1 -1
  851. package/package.json +5 -6
  852. package/client-dist/assets/de-BuEb60Yc.js +0 -6
  853. package/client-dist/assets/es-CRlmPKnE.js +0 -6
  854. package/client-dist/assets/fr-Cglgjc2X.js +0 -6
  855. package/client-dist/assets/index-BNj7ibmq.js +0 -524
  856. package/client-dist/assets/index-CAmsUazi.css +0 -1
  857. package/client-dist/assets/ja-DMb9mFPv.js +0 -6
  858. package/client-dist/assets/zh-CN-D1tbfamz.js +0 -6
@@ -0,0 +1,804 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { ALL_PERMISSION_MODES, ALL_PROVIDERS, isUrlProjectId, } from "../../bundled/@yep-anywhere/shared/dist/index.js";
5
+ const CURRENT_VERSION = 2;
6
+ const MAX_MESSAGE_PREVIEW_LENGTH = 180;
7
+ const RUNNING_DISPATCH_STATE = { status: "running" };
8
+ export class ProjectQueueValidationError extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = "ProjectQueueValidationError";
12
+ }
13
+ }
14
+ function isRecord(value) {
15
+ return value !== null && typeof value === "object" && !Array.isArray(value);
16
+ }
17
+ function optionalString(value, field) {
18
+ if (value === undefined)
19
+ return undefined;
20
+ if (typeof value !== "string") {
21
+ throw new ProjectQueueValidationError(`${field} must be a string`);
22
+ }
23
+ const trimmed = value.trim();
24
+ return trimmed || undefined;
25
+ }
26
+ function errorMessage(error) {
27
+ return error instanceof Error ? error.message : String(error);
28
+ }
29
+ function dispatchStatesEqual(a, b) {
30
+ return JSON.stringify(a ?? RUNNING_DISPATCH_STATE) === JSON.stringify(b);
31
+ }
32
+ function normalizeDispatchState(raw, hasItems) {
33
+ if (!hasItems)
34
+ return RUNNING_DISPATCH_STATE;
35
+ if (isRecord(raw) && raw.status === "paused") {
36
+ const reason = raw.reason === "manual" || raw.reason === "restart"
37
+ ? raw.reason
38
+ : undefined;
39
+ const pausedAt = typeof raw.pausedAt === "string" && raw.pausedAt.trim()
40
+ ? raw.pausedAt
41
+ : undefined;
42
+ if (reason && pausedAt) {
43
+ return { status: "paused", reason, pausedAt };
44
+ }
45
+ }
46
+ return {
47
+ status: "paused",
48
+ reason: "restart",
49
+ pausedAt: new Date().toISOString(),
50
+ };
51
+ }
52
+ function optionalProvider(value) {
53
+ if (value === undefined)
54
+ return undefined;
55
+ if (typeof value !== "string" ||
56
+ !ALL_PROVIDERS.includes(value)) {
57
+ throw new ProjectQueueValidationError("target.provider is invalid");
58
+ }
59
+ return value;
60
+ }
61
+ function optionalPermissionMode(value) {
62
+ if (value === undefined)
63
+ return undefined;
64
+ if (typeof value !== "string" ||
65
+ !ALL_PERMISSION_MODES.includes(value)) {
66
+ throw new ProjectQueueValidationError("mode is invalid");
67
+ }
68
+ return value;
69
+ }
70
+ function optionalThinking(value) {
71
+ if (value === undefined)
72
+ return undefined;
73
+ if (typeof value !== "string" || !value.trim()) {
74
+ throw new ProjectQueueValidationError("target.thinking is invalid");
75
+ }
76
+ return value.trim();
77
+ }
78
+ function optionalShowThinking(value) {
79
+ if (value === undefined)
80
+ return undefined;
81
+ if (value !== "default" && value !== "on" && value !== "off") {
82
+ throw new ProjectQueueValidationError("target.showThinking is invalid");
83
+ }
84
+ return value;
85
+ }
86
+ function normalizeUploadedFile(value, index) {
87
+ if (!isRecord(value)) {
88
+ throw new ProjectQueueValidationError(`message.attachments[${index}] must be an object`);
89
+ }
90
+ const id = optionalString(value.id, `message.attachments[${index}].id`);
91
+ const originalName = optionalString(value.originalName, `message.attachments[${index}].originalName`);
92
+ const name = optionalString(value.name, `message.attachments[${index}].name`);
93
+ const filePath = optionalString(value.path, `message.attachments[${index}].path`);
94
+ const mimeType = optionalString(value.mimeType, `message.attachments[${index}].mimeType`);
95
+ if (!id || !originalName || !name || !filePath || !mimeType) {
96
+ throw new ProjectQueueValidationError(`message.attachments[${index}] is missing required fields`);
97
+ }
98
+ if (typeof value.size !== "number" || !Number.isFinite(value.size)) {
99
+ throw new ProjectQueueValidationError(`message.attachments[${index}].size must be a number`);
100
+ }
101
+ const width = typeof value.width === "number" && Number.isFinite(value.width)
102
+ ? value.width
103
+ : undefined;
104
+ const height = typeof value.height === "number" && Number.isFinite(value.height)
105
+ ? value.height
106
+ : undefined;
107
+ return {
108
+ id,
109
+ originalName,
110
+ name,
111
+ path: filePath,
112
+ size: value.size,
113
+ mimeType,
114
+ ...(width !== undefined ? { width } : {}),
115
+ ...(height !== undefined ? { height } : {}),
116
+ };
117
+ }
118
+ function normalizeStagedAttachmentRef(value, index, batchId) {
119
+ if (!isRecord(value)) {
120
+ throw new ProjectQueueValidationError(`message.stagedAttachments.refs[${index}] must be an object`);
121
+ }
122
+ const id = optionalString(value.id, `message.stagedAttachments.refs[${index}].id`);
123
+ const refBatchId = optionalString(value.batchId, `message.stagedAttachments.refs[${index}].batchId`);
124
+ const originalName = optionalString(value.originalName, `message.stagedAttachments.refs[${index}].originalName`);
125
+ const name = optionalString(value.name, `message.stagedAttachments.refs[${index}].name`);
126
+ const mimeType = optionalString(value.mimeType, `message.stagedAttachments.refs[${index}].mimeType`);
127
+ const createdAt = optionalString(value.createdAt, `message.stagedAttachments.refs[${index}].createdAt`);
128
+ const updatedAt = optionalString(value.updatedAt, `message.stagedAttachments.refs[${index}].updatedAt`);
129
+ if (!id ||
130
+ !refBatchId ||
131
+ refBatchId !== batchId ||
132
+ !originalName ||
133
+ !name ||
134
+ !mimeType ||
135
+ !createdAt ||
136
+ !updatedAt) {
137
+ throw new ProjectQueueValidationError(`message.stagedAttachments.refs[${index}] is missing required fields`);
138
+ }
139
+ if (typeof value.size !== "number" || !Number.isFinite(value.size)) {
140
+ throw new ProjectQueueValidationError(`message.stagedAttachments.refs[${index}].size must be a number`);
141
+ }
142
+ const width = typeof value.width === "number" && Number.isFinite(value.width)
143
+ ? value.width
144
+ : undefined;
145
+ const height = typeof value.height === "number" && Number.isFinite(value.height)
146
+ ? value.height
147
+ : undefined;
148
+ return {
149
+ id,
150
+ batchId: refBatchId,
151
+ originalName,
152
+ name,
153
+ size: value.size,
154
+ mimeType,
155
+ ...(width !== undefined ? { width } : {}),
156
+ ...(height !== undefined ? { height } : {}),
157
+ createdAt,
158
+ updatedAt,
159
+ };
160
+ }
161
+ function normalizeStagedAttachments(value) {
162
+ if (!isRecord(value)) {
163
+ throw new ProjectQueueValidationError("message.stagedAttachments must be an object");
164
+ }
165
+ const batchId = optionalString(value.batchId, "message.stagedAttachments.batchId");
166
+ const updatedAt = optionalString(value.updatedAt, "message.stagedAttachments.updatedAt");
167
+ if (!batchId || !updatedAt) {
168
+ throw new ProjectQueueValidationError("message.stagedAttachments is missing required fields");
169
+ }
170
+ if (!Array.isArray(value.refs)) {
171
+ throw new ProjectQueueValidationError("message.stagedAttachments.refs must be an array");
172
+ }
173
+ const refs = value.refs.map((ref, index) => normalizeStagedAttachmentRef(ref, index, batchId));
174
+ if (refs.length === 0) {
175
+ throw new ProjectQueueValidationError("message.stagedAttachments.refs must not be empty");
176
+ }
177
+ return { batchId, refs, updatedAt };
178
+ }
179
+ function normalizeMessage(raw) {
180
+ if (!isRecord(raw)) {
181
+ throw new ProjectQueueValidationError("message must be an object");
182
+ }
183
+ if (typeof raw.text !== "string") {
184
+ throw new ProjectQueueValidationError("message.text is required");
185
+ }
186
+ const text = raw.text;
187
+ const mode = optionalPermissionMode(raw.mode);
188
+ const attachments = raw.attachments === undefined
189
+ ? undefined
190
+ : Array.isArray(raw.attachments)
191
+ ? raw.attachments.map(normalizeUploadedFile)
192
+ : (() => {
193
+ throw new ProjectQueueValidationError("message.attachments must be an array");
194
+ })();
195
+ const stagedAttachments = raw.stagedAttachments === undefined
196
+ ? undefined
197
+ : normalizeStagedAttachments(raw.stagedAttachments);
198
+ if (!text.trim() && !attachments?.length && !stagedAttachments?.refs.length) {
199
+ throw new ProjectQueueValidationError("message.text, message.attachments, or message.stagedAttachments is required");
200
+ }
201
+ return {
202
+ text,
203
+ ...(attachments?.length ? { attachments } : {}),
204
+ ...(stagedAttachments ? { stagedAttachments } : {}),
205
+ ...(mode ? { mode } : {}),
206
+ ...(isRecord(raw.metadata) ? { metadata: raw.metadata } : {}),
207
+ };
208
+ }
209
+ function normalizeTarget(raw) {
210
+ if (!isRecord(raw)) {
211
+ throw new ProjectQueueValidationError("target must be an object");
212
+ }
213
+ const common = {
214
+ provider: optionalProvider(raw.provider),
215
+ mode: optionalPermissionMode(raw.mode),
216
+ model: optionalString(raw.model, "target.model"),
217
+ serviceTier: optionalString(raw.serviceTier, "target.serviceTier"),
218
+ executor: optionalString(raw.executor, "target.executor"),
219
+ thinking: optionalThinking(raw.thinking),
220
+ showThinking: optionalShowThinking(raw.showThinking),
221
+ };
222
+ if (raw.type === "existing-session") {
223
+ const sessionId = optionalString(raw.sessionId, "target.sessionId");
224
+ if (!sessionId) {
225
+ throw new ProjectQueueValidationError("target.sessionId is required");
226
+ }
227
+ return {
228
+ type: "existing-session",
229
+ sessionId,
230
+ ...common,
231
+ };
232
+ }
233
+ if (raw.type === "new-session") {
234
+ return {
235
+ type: "new-session",
236
+ title: optionalString(raw.title, "target.title"),
237
+ ...common,
238
+ };
239
+ }
240
+ throw new ProjectQueueValidationError("target.type is invalid");
241
+ }
242
+ function normalizeCreatedFrom(raw) {
243
+ if (raw === undefined)
244
+ return undefined;
245
+ if (!isRecord(raw)) {
246
+ throw new ProjectQueueValidationError("createdFrom must be an object");
247
+ }
248
+ const sessionId = optionalString(raw.sessionId, "createdFrom.sessionId");
249
+ const client = optionalString(raw.client, "createdFrom.client");
250
+ if (client !== undefined &&
251
+ client !== "toolbar" &&
252
+ client !== "projects-page" &&
253
+ client !== "new-session") {
254
+ throw new ProjectQueueValidationError("createdFrom.client is invalid");
255
+ }
256
+ if (!sessionId && !client)
257
+ return undefined;
258
+ return {
259
+ ...(sessionId ? { sessionId } : {}),
260
+ ...(client ? { client } : {}),
261
+ };
262
+ }
263
+ function normalizeProjectQueueItem(raw) {
264
+ if (!isRecord(raw))
265
+ return null;
266
+ try {
267
+ const id = optionalString(raw.id, "id") ?? randomUUID();
268
+ const projectId = optionalString(raw.projectId, "projectId");
269
+ const projectPath = optionalString(raw.projectPath, "projectPath");
270
+ if (!projectId || !isUrlProjectId(projectId) || !projectPath) {
271
+ return null;
272
+ }
273
+ const createdAt = optionalString(raw.createdAt, "createdAt") ?? new Date().toISOString();
274
+ const updatedAt = optionalString(raw.updatedAt, "updatedAt") ?? createdAt;
275
+ const rawStatus = optionalString(raw.status, "status");
276
+ const status = rawStatus === "failed"
277
+ ? "failed"
278
+ : // A restart means no dispatch is in progress anymore.
279
+ "queued";
280
+ return {
281
+ id,
282
+ projectId,
283
+ projectPath,
284
+ target: normalizeTarget(raw.target),
285
+ message: normalizeMessage(raw.message),
286
+ createdAt,
287
+ updatedAt,
288
+ createdFrom: normalizeCreatedFrom(raw.createdFrom),
289
+ status,
290
+ lastError: optionalString(raw.lastError, "lastError"),
291
+ lastAttemptAt: optionalString(raw.lastAttemptAt, "lastAttemptAt"),
292
+ };
293
+ }
294
+ catch {
295
+ return null;
296
+ }
297
+ }
298
+ function summarizeItem(item) {
299
+ const attachmentCount = (item.message.attachments?.length ?? 0) +
300
+ (item.message.stagedAttachments?.refs.length ?? 0);
301
+ const previewText = item.message.text.trim();
302
+ return {
303
+ id: item.id,
304
+ projectId: item.projectId,
305
+ target: item.target,
306
+ messagePreview: previewText.length > MAX_MESSAGE_PREVIEW_LENGTH
307
+ ? `${previewText.slice(0, MAX_MESSAGE_PREVIEW_LENGTH - 3)}...`
308
+ : previewText,
309
+ message: item.message,
310
+ createdAt: item.createdAt,
311
+ updatedAt: item.updatedAt,
312
+ createdFrom: item.createdFrom,
313
+ status: item.status,
314
+ attachmentCount,
315
+ lastError: item.lastError,
316
+ lastAttemptAt: item.lastAttemptAt,
317
+ };
318
+ }
319
+ function cloneItem(item) {
320
+ return {
321
+ ...item,
322
+ target: { ...item.target },
323
+ message: {
324
+ ...item.message,
325
+ ...(item.message.attachments
326
+ ? { attachments: item.message.attachments.map((file) => ({ ...file })) }
327
+ : {}),
328
+ ...(item.message.stagedAttachments
329
+ ? {
330
+ stagedAttachments: {
331
+ ...item.message.stagedAttachments,
332
+ refs: item.message.stagedAttachments.refs.map((ref) => ({
333
+ ...ref,
334
+ })),
335
+ },
336
+ }
337
+ : {}),
338
+ ...(item.message.metadata ? { metadata: { ...item.message.metadata } } : {}),
339
+ },
340
+ ...(item.createdFrom ? { createdFrom: { ...item.createdFrom } } : {}),
341
+ };
342
+ }
343
+ export class ProjectQueueService {
344
+ options;
345
+ dataDir;
346
+ filePath;
347
+ state = {
348
+ version: CURRENT_VERSION,
349
+ items: [],
350
+ dispatchState: RUNNING_DISPATCH_STATE,
351
+ };
352
+ initialized = false;
353
+ mutationQueue = Promise.resolve();
354
+ attachmentStagingService;
355
+ constructor(options) {
356
+ this.options = options;
357
+ this.dataDir = options.dataDir;
358
+ this.filePath = path.join(this.dataDir, "project-queues.json");
359
+ this.attachmentStagingService = options.attachmentStagingService;
360
+ }
361
+ setAttachmentStagingService(attachmentStagingService) {
362
+ this.attachmentStagingService = attachmentStagingService;
363
+ }
364
+ async initialize() {
365
+ if (this.initialized)
366
+ return;
367
+ await fs.mkdir(this.dataDir, { recursive: true });
368
+ try {
369
+ const content = await fs.readFile(this.filePath, "utf-8");
370
+ const parsed = JSON.parse(content);
371
+ const rawItems = Array.isArray(parsed.items) ? parsed.items : [];
372
+ const items = rawItems
373
+ .map(normalizeProjectQueueItem)
374
+ .filter((item) => item !== null);
375
+ const dispatchState = normalizeDispatchState(parsed.dispatchState, items.length > 0);
376
+ this.state = {
377
+ version: CURRENT_VERSION,
378
+ items,
379
+ dispatchState,
380
+ };
381
+ const needsSave = parsed.version !== CURRENT_VERSION ||
382
+ items.length !== rawItems.length ||
383
+ !dispatchStatesEqual(dispatchState, parsed.dispatchState) ||
384
+ rawItems.some((item) => isRecord(item) &&
385
+ item.status !== undefined &&
386
+ item.status !== "queued" &&
387
+ item.status !== "failed");
388
+ if (needsSave) {
389
+ await this.save();
390
+ }
391
+ }
392
+ catch (error) {
393
+ if (error.code !== "ENOENT") {
394
+ console.warn("[ProjectQueueService] Failed to load project queues, starting fresh:", error);
395
+ }
396
+ this.state = {
397
+ version: CURRENT_VERSION,
398
+ items: [],
399
+ dispatchState: RUNNING_DISPATCH_STATE,
400
+ };
401
+ }
402
+ this.initialized = true;
403
+ }
404
+ listProject(projectId) {
405
+ this.ensureInitialized();
406
+ return {
407
+ projectId,
408
+ items: this.state.items
409
+ .filter((item) => item.projectId === projectId)
410
+ .map(summarizeItem),
411
+ dispatchState: this.state.dispatchState,
412
+ };
413
+ }
414
+ listAll() {
415
+ this.ensureInitialized();
416
+ return this.state.items.map(summarizeItem);
417
+ }
418
+ getDispatchState() {
419
+ this.ensureInitialized();
420
+ return this.state.dispatchState;
421
+ }
422
+ isDispatchPaused() {
423
+ this.ensureInitialized();
424
+ return this.state.dispatchState.status === "paused";
425
+ }
426
+ getProjectIdsWithDispatchableItems() {
427
+ this.ensureInitialized();
428
+ if (this.isDispatchPaused())
429
+ return [];
430
+ const projectIds = new Set();
431
+ for (const item of this.state.items) {
432
+ if (projectIds.has(item.projectId))
433
+ continue;
434
+ const first = this.state.items.find((candidate) => candidate.projectId === item.projectId);
435
+ if (first?.status === "queued") {
436
+ projectIds.add(item.projectId);
437
+ }
438
+ }
439
+ return [...projectIds];
440
+ }
441
+ hasDispatchableItem(projectId) {
442
+ this.ensureInitialized();
443
+ if (this.isDispatchPaused())
444
+ return false;
445
+ return (this.state.items.find((item) => item.projectId === projectId)?.status ===
446
+ "queued");
447
+ }
448
+ async pauseDispatch(reason = "manual") {
449
+ return this.withMutation(async () => {
450
+ this.ensureInitialized();
451
+ if (this.state.items.length === 0) {
452
+ throw new ProjectQueueValidationError("Cannot pause an empty Project Queue");
453
+ }
454
+ this.state.dispatchState = {
455
+ status: "paused",
456
+ reason,
457
+ pausedAt: new Date().toISOString(),
458
+ };
459
+ await this.save();
460
+ this.emitAllProjectChanges("paused");
461
+ return this.state.dispatchState;
462
+ });
463
+ }
464
+ async resumeDispatch() {
465
+ return this.withMutation(async () => {
466
+ this.ensureInitialized();
467
+ this.state.dispatchState = RUNNING_DISPATCH_STATE;
468
+ await this.save();
469
+ this.emitAllProjectChanges("resumed");
470
+ return this.state.dispatchState;
471
+ });
472
+ }
473
+ async createItem(params) {
474
+ return this.withMutation(async () => {
475
+ this.ensureInitialized();
476
+ const now = new Date().toISOString();
477
+ const itemId = randomUUID();
478
+ const message = await this.prepareMessageForItem(itemId, normalizeMessage(params.request.message));
479
+ const item = {
480
+ id: itemId,
481
+ projectId: params.projectId,
482
+ projectPath: params.projectPath,
483
+ target: normalizeTarget(params.request.target),
484
+ message,
485
+ createdAt: now,
486
+ updatedAt: now,
487
+ createdFrom: normalizeCreatedFrom(params.request.createdFrom),
488
+ status: "queued",
489
+ };
490
+ this.state.items.push(item);
491
+ await this.save();
492
+ this.emitChange(params.projectId, "created", item.id);
493
+ return summarizeItem(item);
494
+ });
495
+ }
496
+ async updateItem(projectId, itemId, request) {
497
+ return this.withMutation(async () => {
498
+ this.ensureInitialized();
499
+ const index = this.findProjectItemIndex(projectId, itemId);
500
+ if (index === -1)
501
+ return null;
502
+ const existing = this.state.items[index];
503
+ if (existing.status === "dispatching") {
504
+ throw new ProjectQueueValidationError("Cannot update an item while it is dispatching");
505
+ }
506
+ const updated = {
507
+ ...existing,
508
+ ...(request.target !== undefined
509
+ ? { target: normalizeTarget(request.target) }
510
+ : {}),
511
+ ...(request.message !== undefined
512
+ ? {
513
+ message: await this.prepareMessageForItem(existing.id, normalizeMessage(request.message), existing.message.stagedAttachments),
514
+ }
515
+ : {}),
516
+ status: existing.status === "failed" ? "queued" : existing.status,
517
+ lastError: undefined,
518
+ updatedAt: new Date().toISOString(),
519
+ };
520
+ this.state.items[index] = updated;
521
+ await this.save();
522
+ if (request.message !== undefined) {
523
+ await this.cleanupReplacedQueueAttachments(existing.id, existing.message.stagedAttachments, updated.message.stagedAttachments);
524
+ }
525
+ this.emitChange(projectId, "updated", itemId);
526
+ return summarizeItem(updated);
527
+ });
528
+ }
529
+ async deleteItem(projectId, itemId) {
530
+ return this.withMutation(async () => {
531
+ this.ensureInitialized();
532
+ const index = this.findProjectItemIndex(projectId, itemId);
533
+ if (index === -1)
534
+ return false;
535
+ if (this.state.items[index]?.status === "dispatching") {
536
+ throw new ProjectQueueValidationError("Cannot delete an item while it is dispatching");
537
+ }
538
+ const [deleted] = this.state.items.splice(index, 1);
539
+ this.clearDispatchPauseIfEmpty();
540
+ await this.save();
541
+ await this.cleanupQueueAttachments(deleted);
542
+ this.emitChange(projectId, "deleted", itemId);
543
+ return true;
544
+ });
545
+ }
546
+ async retryItem(projectId, itemId) {
547
+ return this.withMutation(async () => {
548
+ this.ensureInitialized();
549
+ const index = this.findProjectItemIndex(projectId, itemId);
550
+ if (index === -1)
551
+ return null;
552
+ const existing = this.state.items[index];
553
+ if (existing.status === "dispatching") {
554
+ throw new ProjectQueueValidationError("Cannot retry an item while it is dispatching");
555
+ }
556
+ const updated = {
557
+ ...existing,
558
+ status: "queued",
559
+ lastError: undefined,
560
+ updatedAt: new Date().toISOString(),
561
+ };
562
+ this.state.items[index] = updated;
563
+ await this.save();
564
+ this.emitChange(projectId, "retry", itemId);
565
+ return summarizeItem(updated);
566
+ });
567
+ }
568
+ async moveItemToTop(projectId, itemId) {
569
+ return this.withMutation(async () => {
570
+ this.ensureInitialized();
571
+ const index = this.findProjectItemIndex(projectId, itemId);
572
+ if (index === -1)
573
+ return null;
574
+ const existing = this.state.items[index];
575
+ if (existing.status === "dispatching") {
576
+ throw new ProjectQueueValidationError("Cannot reorder an item while it is dispatching");
577
+ }
578
+ const projectIndexes = this.getProjectItemIndexes(projectId);
579
+ const projectItems = projectIndexes.map((projectIndex) => this.state.items[projectIndex]);
580
+ const originalIds = projectItems.map((item) => item.id);
581
+ const projectItemIndex = projectItems.findIndex((item) => item.id === itemId);
582
+ if (projectItemIndex === -1)
583
+ return null;
584
+ const [removed] = projectItems.splice(projectItemIndex, 1);
585
+ const moved = {
586
+ ...removed,
587
+ updatedAt: new Date().toISOString(),
588
+ };
589
+ const firstMovableIndex = projectItems.findIndex((item) => item.status !== "dispatching");
590
+ projectItems.splice(firstMovableIndex === -1 ? projectItems.length : firstMovableIndex, 0, moved);
591
+ const reordered = projectItems.some((item, position) => item.id !== originalIds[position]);
592
+ if (!reordered) {
593
+ return summarizeItem(existing);
594
+ }
595
+ for (const [position, projectIndex] of projectIndexes.entries()) {
596
+ this.state.items[projectIndex] = projectItems[position];
597
+ }
598
+ await this.save();
599
+ this.emitChange(projectId, "reordered", itemId);
600
+ return summarizeItem(moved);
601
+ });
602
+ }
603
+ async claimNextDispatchableItem(projectId) {
604
+ return this.claimDispatchableItem(projectId);
605
+ }
606
+ async claimDispatchableItem(projectId, itemId) {
607
+ return this.withMutation(async () => {
608
+ this.ensureInitialized();
609
+ if (this.isDispatchPaused())
610
+ return null;
611
+ const index = itemId
612
+ ? this.findProjectItemIndex(projectId, itemId)
613
+ : this.state.items.findIndex((item) => item.projectId === projectId);
614
+ if (index === -1)
615
+ return null;
616
+ const existing = this.state.items[index];
617
+ if (existing.status !== "queued")
618
+ return null;
619
+ const now = new Date().toISOString();
620
+ const updated = {
621
+ ...existing,
622
+ status: "dispatching",
623
+ lastError: undefined,
624
+ lastAttemptAt: now,
625
+ updatedAt: now,
626
+ };
627
+ this.state.items[index] = updated;
628
+ await this.save();
629
+ this.emitChange(projectId, "dispatching", updated.id);
630
+ return cloneItem(updated);
631
+ });
632
+ }
633
+ async releaseDispatchingItem(projectId, itemId) {
634
+ return this.withMutation(async () => {
635
+ this.ensureInitialized();
636
+ const index = this.findProjectItemIndex(projectId, itemId);
637
+ if (index === -1)
638
+ return null;
639
+ const existing = this.state.items[index];
640
+ if (existing.status !== "dispatching")
641
+ return null;
642
+ const updated = {
643
+ ...existing,
644
+ status: "queued",
645
+ lastError: undefined,
646
+ updatedAt: new Date().toISOString(),
647
+ };
648
+ this.state.items[index] = updated;
649
+ await this.save();
650
+ this.emitChange(projectId, "released", itemId);
651
+ return summarizeItem(updated);
652
+ });
653
+ }
654
+ async completeDispatch(projectId, itemId) {
655
+ return this.withMutation(async () => {
656
+ this.ensureInitialized();
657
+ const index = this.findProjectItemIndex(projectId, itemId);
658
+ if (index === -1)
659
+ return false;
660
+ const [completed] = this.state.items.splice(index, 1);
661
+ this.clearDispatchPauseIfEmpty();
662
+ await this.save();
663
+ await this.cleanupQueueAttachments(completed);
664
+ this.emitChange(projectId, "promoted", itemId);
665
+ return true;
666
+ });
667
+ }
668
+ async failDispatch(projectId, itemId, error) {
669
+ return this.withMutation(async () => {
670
+ this.ensureInitialized();
671
+ const index = this.findProjectItemIndex(projectId, itemId);
672
+ if (index === -1)
673
+ return null;
674
+ const existing = this.state.items[index];
675
+ const now = new Date().toISOString();
676
+ const updated = {
677
+ ...existing,
678
+ status: "failed",
679
+ lastError: error,
680
+ lastAttemptAt: now,
681
+ updatedAt: now,
682
+ };
683
+ this.state.items[index] = updated;
684
+ await this.save();
685
+ this.emitChange(projectId, "failed", itemId);
686
+ return summarizeItem(updated);
687
+ });
688
+ }
689
+ getFilePath() {
690
+ return this.filePath;
691
+ }
692
+ findProjectItemIndex(projectId, itemId) {
693
+ return this.state.items.findIndex((item) => item.projectId === projectId && item.id === itemId);
694
+ }
695
+ getProjectItemIndexes(projectId) {
696
+ const indexes = [];
697
+ for (const [index, item] of this.state.items.entries()) {
698
+ if (item.projectId === projectId)
699
+ indexes.push(index);
700
+ }
701
+ return indexes;
702
+ }
703
+ clearDispatchPauseIfEmpty() {
704
+ if (this.state.items.length > 0)
705
+ return;
706
+ this.state.dispatchState = RUNNING_DISPATCH_STATE;
707
+ }
708
+ getProjectIdsWithItems() {
709
+ return [...new Set(this.state.items.map((item) => item.projectId))];
710
+ }
711
+ ensureInitialized() {
712
+ if (!this.initialized) {
713
+ throw new Error("ProjectQueueService not initialized. Call initialize() first.");
714
+ }
715
+ }
716
+ async withMutation(fn) {
717
+ const run = this.mutationQueue.then(fn, fn);
718
+ this.mutationQueue = run.then(() => undefined, () => undefined);
719
+ return run;
720
+ }
721
+ async save() {
722
+ const tmpPath = `${this.filePath}.tmp`;
723
+ await fs.mkdir(this.dataDir, { recursive: true });
724
+ await fs.writeFile(tmpPath, JSON.stringify(this.state, null, 2));
725
+ await fs.rename(tmpPath, this.filePath);
726
+ }
727
+ async prepareMessageForItem(itemId, message, existingStagedAttachments) {
728
+ if (!message.stagedAttachments) {
729
+ return message;
730
+ }
731
+ const stagedAttachments = await this.prepareStagedAttachmentsForItem(itemId, message.stagedAttachments, existingStagedAttachments);
732
+ return {
733
+ ...message,
734
+ stagedAttachments,
735
+ };
736
+ }
737
+ async prepareStagedAttachmentsForItem(itemId, stagedAttachments, existingStagedAttachments) {
738
+ const staging = this.attachmentStagingService;
739
+ if (!staging) {
740
+ throw new ProjectQueueValidationError("message.stagedAttachments is not supported");
741
+ }
742
+ const refsMatchExisting = existingStagedAttachments !== undefined &&
743
+ existingStagedAttachments.batchId === stagedAttachments.batchId &&
744
+ existingStagedAttachments.refs.length === stagedAttachments.refs.length &&
745
+ existingStagedAttachments.refs.every((ref, index) => ref.id === stagedAttachments.refs[index]?.id);
746
+ try {
747
+ const refs = refsMatchExisting
748
+ ? await staging.validateQueueRefs(itemId, stagedAttachments.refs)
749
+ : await staging.transferDraftAttachmentsToQueue({
750
+ batchId: stagedAttachments.batchId,
751
+ queueItemId: itemId,
752
+ refs: stagedAttachments.refs,
753
+ });
754
+ const batchId = refs[0]?.batchId ?? stagedAttachments.batchId;
755
+ return {
756
+ batchId,
757
+ refs,
758
+ updatedAt: new Date().toISOString(),
759
+ };
760
+ }
761
+ catch (error) {
762
+ throw new ProjectQueueValidationError(`message.stagedAttachments is invalid: ${errorMessage(error)}`);
763
+ }
764
+ }
765
+ async cleanupQueueAttachments(item) {
766
+ if (!item?.message.stagedAttachments || !this.attachmentStagingService) {
767
+ return;
768
+ }
769
+ await this.attachmentStagingService.deleteQueueAttachments(item.id);
770
+ }
771
+ async cleanupReplacedQueueAttachments(itemId, previous, next) {
772
+ if (!previous || !this.attachmentStagingService) {
773
+ return;
774
+ }
775
+ const keptIds = new Set(next?.refs.map((ref) => ref.id) ?? []);
776
+ for (const ref of previous.refs) {
777
+ if (keptIds.has(ref.id))
778
+ continue;
779
+ const record = this.attachmentStagingService.getRecord(ref.id);
780
+ if (record?.owner.type === "project-queue" &&
781
+ record.owner.queueItemId === itemId) {
782
+ await this.attachmentStagingService.deleteAttachment(ref.id);
783
+ }
784
+ }
785
+ }
786
+ emitChange(projectId, reason, itemId) {
787
+ const event = {
788
+ type: "project-queue-changed",
789
+ projectId,
790
+ items: this.listProject(projectId).items,
791
+ reason,
792
+ ...(itemId ? { itemId } : {}),
793
+ dispatchState: this.state.dispatchState,
794
+ timestamp: new Date().toISOString(),
795
+ };
796
+ this.options.eventBus?.emit(event);
797
+ }
798
+ emitAllProjectChanges(reason) {
799
+ for (const projectId of this.getProjectIdsWithItems()) {
800
+ this.emitChange(projectId, reason);
801
+ }
802
+ }
803
+ }
804
+ //# sourceMappingURL=ProjectQueueService.js.map