crewly 1.20.105 → 1.20.107

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 (580) hide show
  1. package/README.md +22 -12
  2. package/config/constants.ts +43 -0
  3. package/config/index.ts +2 -0
  4. package/config/skills/_common/lib.sh +55 -2
  5. package/config/skills/_common/lib.test.sh +58 -1
  6. package/config/skills/_common/task-pool-body-shape.test.sh +60 -0
  7. package/config/skills/agent/core/cancel-followup/execute.sh +18 -3
  8. package/config/skills/agent/core/cancel-followup/execute.test.sh +73 -0
  9. package/config/skills/agent/core/complete-task/execute.sh +1 -1
  10. package/config/skills/agent/core/create-intent-tasks/execute.sh +1 -1
  11. package/config/skills/agent/core/create-task/SKILL.md +1 -0
  12. package/config/skills/agent/core/create-task/execute.sh +10 -0
  13. package/config/skills/agent/core/decompose-intent/execute.sh +1 -1
  14. package/config/skills/agent/core/handoff-task/execute.sh +1 -1
  15. package/config/skills/agent/core/list-my-followups/SKILL.md +1 -1
  16. package/config/skills/agent/core/list-my-followups/execute.sh +25 -3
  17. package/config/skills/agent/core/list-my-followups/execute.test.sh +72 -0
  18. package/config/skills/agent/core/poll-tasks/execute.sh +3 -3
  19. package/config/skills/agent/core/reply-channel/SKILL.md +1 -1
  20. package/config/skills/agent/core/report-progress/execute.sh +1 -1
  21. package/config/skills/agent/core/report-status/execute.sh +1 -1
  22. package/config/skills/agent/core/slack-post/SKILL.md +1 -1
  23. package/config/skills/agent/core/todo-add/SKILL.md +64 -0
  24. package/config/skills/agent/core/todo-add/execute.sh +84 -0
  25. package/config/skills/agent/core/todo-add/execute.test.sh +76 -0
  26. package/config/skills/agent/core/todo-lists/SKILL.md +58 -0
  27. package/config/skills/agent/core/todo-lists/execute.sh +70 -0
  28. package/config/skills/agent/core/todo-lists/execute.test.sh +77 -0
  29. package/config/skills/agent/core/todo-tasks/SKILL.md +59 -0
  30. package/config/skills/agent/core/todo-tasks/execute.sh +78 -0
  31. package/config/skills/agent/core/todo-tasks/execute.test.sh +74 -0
  32. package/config/skills/agent/core/todo-update/SKILL.md +63 -0
  33. package/config/skills/agent/core/todo-update/execute.sh +115 -0
  34. package/config/skills/agent/core/todo-update/execute.test.sh +82 -0
  35. package/config/skills/agent/core/update-intent-task/execute.sh +1 -1
  36. package/config/skills/agent/marketing/brand-onboarding/execute.sh +1 -1
  37. package/config/skills/agent/marketing/submit-for-approval/execute.sh +1 -1
  38. package/config/skills/agent/remote-browser/SOP-google-flow-video.md +1 -1
  39. package/config/skills/agent/remote-browser/execute.sh +33 -1
  40. package/config/skills/agent/remote-browser/execute.test.sh +62 -0
  41. package/config/skills/agent/screenshot-compare/execute.sh +1 -1
  42. package/config/skills/agent/transcribe-audio/SKILL.md +1 -1
  43. package/config/skills/agent/transcribe-audio/execute.sh +1 -1
  44. package/config/skills/agent/transcribe-audio/instructions.md +1 -1
  45. package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
  46. package/config/skills/orchestrator/get-tasks/SKILL.md +7 -1
  47. package/config/skills/orchestrator/get-tasks/execute.sh +51 -28
  48. package/config/skills/orchestrator/get-tasks/execute.test.sh +67 -0
  49. package/config/skills/orchestrator/heartbeat/execute.sh +2 -2
  50. package/config/skills/orchestrator/list-missions/execute.sh +1 -1
  51. package/config/skills/orchestrator/list-missions/execute.test.sh +38 -11
  52. package/config/skills/team-leader/decompose-goal/SKILL.md +1 -0
  53. package/config/skills/team-leader/decompose-goal/execute.sh +17 -2
  54. package/config/skills/team-leader/delegate-task/SKILL.md +1 -0
  55. package/config/skills/team-leader/delegate-task/execute.sh +6 -2
  56. package/dist/backend/backend/src/constants.d.ts +264 -2
  57. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  58. package/dist/backend/backend/src/constants.js +255 -3
  59. package/dist/backend/backend/src/constants.js.map +1 -1
  60. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +33 -0
  61. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  62. package/dist/backend/backend/src/controllers/browser/browser.controller.js +176 -9
  63. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  64. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  65. package/dist/backend/backend/src/controllers/chat/chat.controller.js +38 -35
  66. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  67. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +10 -45
  68. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  69. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +40 -89
  70. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  71. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +51 -0
  72. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -0
  73. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +223 -0
  74. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -0
  75. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts +25 -0
  76. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -0
  77. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +42 -0
  78. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -0
  79. package/dist/backend/backend/src/controllers/session/session.controller.d.ts +2 -1
  80. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  81. package/dist/backend/backend/src/controllers/session/session.controller.js +21 -0
  82. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  83. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  84. package/dist/backend/backend/src/controllers/slack/slack.controller.js +51 -3
  85. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  86. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts +23 -0
  87. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.d.ts.map +1 -0
  88. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js +35 -0
  89. package/dist/backend/backend/src/controllers/system/restart-readiness.controller.js.map +1 -0
  90. package/dist/backend/backend/src/controllers/system/system.controller.d.ts +5 -3
  91. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  92. package/dist/backend/backend/src/controllers/system/system.controller.js +27 -6
  93. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  94. package/dist/backend/backend/src/controllers/system/system.routes.d.ts.map +1 -1
  95. package/dist/backend/backend/src/controllers/system/system.routes.js +3 -0
  96. package/dist/backend/backend/src/controllers/system/system.routes.js.map +1 -1
  97. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  98. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +29 -1
  99. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  100. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  101. package/dist/backend/backend/src/controllers/team/team.controller.js +86 -6
  102. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  103. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +41 -0
  104. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -0
  105. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +135 -0
  106. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -0
  107. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +18 -0
  108. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -0
  109. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +25 -0
  110. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -0
  111. package/dist/backend/backend/src/index.d.ts +70 -1
  112. package/dist/backend/backend/src/index.d.ts.map +1 -1
  113. package/dist/backend/backend/src/index.js +352 -71
  114. package/dist/backend/backend/src/index.js.map +1 -1
  115. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  116. package/dist/backend/backend/src/routes/api.routes.js +6 -0
  117. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  118. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +128 -0
  119. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -0
  120. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +200 -0
  121. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -0
  122. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
  123. package/dist/backend/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js +3 -1
  125. package/dist/backend/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
  126. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +4 -0
  127. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  128. package/dist/backend/backend/src/services/agent/agent-registration.service.js +61 -4
  129. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  130. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
  131. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  132. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +62 -1
  133. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  134. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
  136. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  137. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
  138. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  139. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +0 -2
  140. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  141. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
  142. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  143. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +113 -10
  144. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  145. package/dist/backend/backend/src/services/agent/restore-filter.d.ts +12 -0
  146. package/dist/backend/backend/src/services/agent/restore-filter.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/agent/restore-filter.js +19 -0
  148. package/dist/backend/backend/src/services/agent/restore-filter.js.map +1 -1
  149. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
  151. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  152. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
  153. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
  154. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
  155. package/dist/backend/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
  156. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +57 -5
  157. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  158. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +98 -18
  159. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  160. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +12 -1
  161. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
  162. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +25 -4
  163. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
  164. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +2 -1
  165. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -1
  166. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +5 -1
  167. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -1
  168. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +38 -0
  169. package/dist/backend/backend/src/services/browser/browser-session.service.d.ts.map +1 -1
  170. package/dist/backend/backend/src/services/browser/browser-session.service.js +34 -0
  171. package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
  172. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
  173. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
  175. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  176. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -1
  177. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +7 -2
  178. package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -1
  179. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
  180. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  181. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +58 -1
  182. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  183. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts +63 -0
  184. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.d.ts.map +1 -0
  185. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js +72 -0
  186. package/dist/backend/backend/src/services/chat-v2/owner-inbound.utils.js.map +1 -0
  187. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  188. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
  190. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  191. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  192. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +6 -1
  193. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  194. package/dist/backend/backend/src/services/connector/connector-access.service.d.ts +2 -2
  195. package/dist/backend/backend/src/services/connector/connector-access.service.d.ts.map +1 -1
  196. package/dist/backend/backend/src/services/connector/connector-access.service.js +2 -2
  197. package/dist/backend/backend/src/services/connector/connector-access.service.js.map +1 -1
  198. package/dist/backend/backend/src/services/core/retry.util.d.ts +5 -0
  199. package/dist/backend/backend/src/services/core/retry.util.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/core/retry.util.js +2 -2
  201. package/dist/backend/backend/src/services/core/retry.util.js.map +1 -1
  202. package/dist/backend/backend/src/services/factory.service.js +3 -3
  203. package/dist/backend/backend/src/services/factory.service.js.map +1 -1
  204. package/dist/backend/backend/src/services/messaging/google-chat-initializer.d.ts.map +1 -1
  205. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js +24 -1
  206. package/dist/backend/backend/src/services/messaging/google-chat-initializer.js.map +1 -1
  207. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +9 -0
  208. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  209. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +55 -0
  210. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  211. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
  212. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  213. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
  214. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  215. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
  216. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  217. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js +90 -2
  218. package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  219. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +250 -0
  220. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -0
  221. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +367 -0
  222. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -0
  223. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +116 -0
  224. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -0
  225. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +220 -0
  226. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -0
  227. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -1
  228. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js +22 -16
  229. package/dist/backend/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -1
  230. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +11 -1
  231. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js.map +1 -1
  232. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  233. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +9 -9
  234. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  235. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
  236. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
  237. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
  238. package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
  239. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +153 -0
  240. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -0
  241. package/dist/backend/backend/src/services/restart/interrupted-turns.js +279 -0
  242. package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -0
  243. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts +176 -0
  244. package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
  245. package/dist/backend/backend/src/services/restart/restart-drain.service.js +298 -0
  246. package/dist/backend/backend/src/services/restart/restart-drain.service.js.map +1 -0
  247. package/dist/backend/backend/src/services/restart/turn-probe.d.ts +52 -0
  248. package/dist/backend/backend/src/services/restart/turn-probe.d.ts.map +1 -0
  249. package/dist/backend/backend/src/services/restart/turn-probe.js +61 -0
  250. package/dist/backend/backend/src/services/restart/turn-probe.js.map +1 -0
  251. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
  252. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
  253. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
  254. package/dist/backend/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
  255. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +2 -0
  256. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  257. package/dist/backend/backend/src/services/session/pty/pty-session.js +53 -1
  258. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  259. package/dist/backend/backend/src/services/session/session-binding.d.ts +125 -0
  260. package/dist/backend/backend/src/services/session/session-binding.d.ts.map +1 -0
  261. package/dist/backend/backend/src/services/session/session-binding.js +183 -0
  262. package/dist/backend/backend/src/services/session/session-binding.js.map +1 -0
  263. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  264. package/dist/backend/backend/src/services/session/session-handoff.service.js +19 -0
  265. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  266. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
  267. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  268. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +37 -1
  269. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  270. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts +4 -3
  271. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.d.ts.map +1 -1
  272. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js +4 -3
  273. package/dist/backend/backend/src/services/slack/slack-cloud-config.service.js.map +1 -1
  274. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +72 -7
  275. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  276. package/dist/backend/backend/src/services/slack/slack-initializer.js +185 -23
  277. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  278. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
  279. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  280. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
  281. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  282. package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts +59 -0
  283. package/dist/backend/backend/src/services/slack/slack-source-preference.service.d.ts.map +1 -0
  284. package/dist/backend/backend/src/services/slack/slack-source-preference.service.js +69 -0
  285. package/dist/backend/backend/src/services/slack/slack-source-preference.service.js.map +1 -0
  286. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
  287. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  288. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +64 -3
  289. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  290. package/dist/backend/backend/src/services/slack/slack.service.d.ts +33 -1
  291. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/slack/slack.service.js +129 -4
  293. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  294. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts +108 -0
  295. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.d.ts.map +1 -0
  296. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js +193 -0
  297. package/dist/backend/backend/src/services/task-pool/pool-archive-migration.js.map +1 -0
  298. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts +15 -0
  299. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  300. package/dist/backend/backend/src/services/task-pool/pool-storage.js +30 -0
  301. package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
  302. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
  303. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  304. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +55 -1
  305. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  306. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts +7 -0
  307. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
  308. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +32 -1
  309. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
  310. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  311. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +4 -3
  312. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  313. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
  314. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +12 -0
  315. package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
  316. package/dist/backend/backend/src/services/v3/request.service.d.ts +7 -0
  317. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  318. package/dist/backend/backend/src/services/v3/request.service.js +17 -0
  319. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  320. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
  321. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
  322. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +458 -0
  323. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
  324. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
  325. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
  326. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +566 -0
  327. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -0
  328. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
  329. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +3 -3
  330. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
  331. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +28 -4
  332. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
  333. package/dist/backend/backend/src/services/v3/trigger-engine.service.js +40 -10
  334. package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
  335. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +1 -0
  336. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  337. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +3 -3
  338. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  339. package/dist/backend/backend/src/types/slack.types.d.ts +29 -0
  340. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  341. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  342. package/dist/backend/backend/src/types/thread-status.types.d.ts +26 -0
  343. package/dist/backend/backend/src/types/thread-status.types.d.ts.map +1 -1
  344. package/dist/backend/backend/src/types/thread-status.types.js +17 -0
  345. package/dist/backend/backend/src/types/thread-status.types.js.map +1 -1
  346. package/dist/backend/backend/src/types/v2/index.d.ts +3 -2
  347. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  348. package/dist/backend/backend/src/types/v2/index.js +1 -1
  349. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  350. package/dist/backend/backend/src/types/v2/request.types.d.ts +39 -3
  351. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  352. package/dist/backend/backend/src/types/v2/request.types.js +11 -2
  353. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  354. package/dist/backend/backend/src/types/v2/ticket.types.d.ts +173 -0
  355. package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -0
  356. package/dist/backend/backend/src/types/v2/ticket.types.js +203 -0
  357. package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -0
  358. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +26 -0
  359. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
  360. package/dist/backend/backend/src/utils/agent-caller.utils.js +40 -3
  361. package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
  362. package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts +62 -0
  363. package/dist/backend/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
  364. package/dist/backend/backend/src/utils/gemini-auth-settings.js +104 -0
  365. package/dist/backend/backend/src/utils/gemini-auth-settings.js.map +1 -0
  366. package/dist/backend/backend/src/utils/local-api-url.utils.d.ts +56 -0
  367. package/dist/backend/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
  368. package/dist/backend/backend/src/utils/local-api-url.utils.js +80 -0
  369. package/dist/backend/backend/src/utils/local-api-url.utils.js.map +1 -0
  370. package/dist/backend/build-info.json +2 -2
  371. package/dist/backend/config/constants.d.ts +40 -0
  372. package/dist/backend/config/constants.d.ts.map +1 -1
  373. package/dist/backend/config/constants.js +41 -0
  374. package/dist/backend/config/constants.js.map +1 -1
  375. package/dist/backend/config/index.d.ts +4 -2
  376. package/dist/backend/config/index.d.ts.map +1 -1
  377. package/dist/backend/config/index.js +2 -2
  378. package/dist/backend/config/index.js.map +1 -1
  379. package/dist/cli/backend/src/constants.d.ts +264 -2
  380. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  381. package/dist/cli/backend/src/constants.js +255 -3
  382. package/dist/cli/backend/src/constants.js.map +1 -1
  383. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +2 -2
  384. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -1
  385. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +3 -1
  386. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -1
  387. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +4 -0
  388. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  389. package/dist/cli/backend/src/services/agent/agent-registration.service.js +61 -4
  390. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  391. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +30 -0
  392. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  393. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +62 -1
  394. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  395. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  396. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +2 -1
  397. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  398. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +0 -2
  399. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  400. package/dist/cli/backend/src/services/agent/crewly-agent/types.js +0 -2
  401. package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  402. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +65 -1
  403. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  404. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +113 -10
  405. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  406. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  407. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +3 -2
  408. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  409. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts +28 -0
  410. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.d.ts.map +1 -0
  411. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js +34 -0
  412. package/dist/cli/backend/src/services/agent/runtime-startup-blocked.error.js.map +1 -0
  413. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +6 -0
  414. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  415. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +5 -0
  416. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  417. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -1
  418. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  419. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +58 -1
  420. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  421. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  422. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  423. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +15 -0
  424. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  425. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +7 -0
  426. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  427. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +12 -0
  428. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  429. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +36 -1
  430. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
  431. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +90 -2
  432. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
  433. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +189 -0
  434. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -0
  435. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js +246 -0
  436. package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -0
  437. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts +176 -0
  438. package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts.map +1 -0
  439. package/dist/cli/backend/src/services/restart/restart-drain.service.js +298 -0
  440. package/dist/cli/backend/src/services/restart/restart-drain.service.js.map +1 -0
  441. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts +70 -0
  442. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.d.ts.map +1 -0
  443. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js +105 -0
  444. package/dist/cli/backend/src/services/session/pty/node-pty-install.utils.js.map +1 -0
  445. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +2 -0
  446. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  447. package/dist/cli/backend/src/services/session/pty/pty-session.js +53 -1
  448. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  449. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  450. package/dist/cli/backend/src/services/session/session-handoff.service.js +19 -0
  451. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
  452. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +10 -0
  453. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  454. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +37 -1
  455. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  456. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +4 -45
  457. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  458. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +57 -190
  459. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  460. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +18 -0
  461. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  462. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +64 -3
  463. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  464. package/dist/cli/backend/src/services/slack/slack.service.d.ts +33 -1
  465. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  466. package/dist/cli/backend/src/services/slack/slack.service.js +129 -4
  467. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  468. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts +15 -0
  469. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  470. package/dist/cli/backend/src/services/task-pool/pool-storage.js +30 -0
  471. package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
  472. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +41 -1
  473. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  474. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +55 -1
  475. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  476. package/dist/cli/backend/src/services/v3/request.service.d.ts +7 -0
  477. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  478. package/dist/cli/backend/src/services/v3/request.service.js +17 -0
  479. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  480. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts +279 -0
  481. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -0
  482. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +458 -0
  483. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -0
  484. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +376 -0
  485. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -0
  486. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +566 -0
  487. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -0
  488. package/dist/cli/backend/src/types/slack.types.d.ts +29 -0
  489. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  490. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  491. package/dist/cli/backend/src/types/thread-status.types.d.ts +26 -0
  492. package/dist/cli/backend/src/types/thread-status.types.d.ts.map +1 -1
  493. package/dist/cli/backend/src/types/thread-status.types.js +17 -0
  494. package/dist/cli/backend/src/types/thread-status.types.js.map +1 -1
  495. package/dist/cli/backend/src/types/v2/index.d.ts +3 -2
  496. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  497. package/dist/cli/backend/src/types/v2/index.js +1 -1
  498. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  499. package/dist/cli/backend/src/types/v2/request.types.d.ts +39 -3
  500. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  501. package/dist/cli/backend/src/types/v2/request.types.js +11 -2
  502. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  503. package/dist/cli/backend/src/types/v2/ticket.types.d.ts +173 -0
  504. package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -0
  505. package/dist/cli/backend/src/types/v2/ticket.types.js +203 -0
  506. package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -0
  507. package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts +62 -0
  508. package/dist/cli/backend/src/utils/gemini-auth-settings.d.ts.map +1 -0
  509. package/dist/cli/backend/src/utils/gemini-auth-settings.js +104 -0
  510. package/dist/cli/backend/src/utils/gemini-auth-settings.js.map +1 -0
  511. package/dist/cli/backend/src/utils/local-api-url.utils.d.ts +56 -0
  512. package/dist/cli/backend/src/utils/local-api-url.utils.d.ts.map +1 -0
  513. package/dist/cli/backend/src/utils/local-api-url.utils.js +80 -0
  514. package/dist/cli/backend/src/utils/local-api-url.utils.js.map +1 -0
  515. package/dist/cli/cli/src/commands/doctor.d.ts +73 -2
  516. package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -1
  517. package/dist/cli/cli/src/commands/doctor.js +250 -8
  518. package/dist/cli/cli/src/commands/doctor.js.map +1 -1
  519. package/dist/cli/cli/src/commands/install.js +2 -0
  520. package/dist/cli/cli/src/commands/install.js.map +1 -1
  521. package/dist/cli/cli/src/commands/onboard.d.ts +68 -0
  522. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  523. package/dist/cli/cli/src/commands/onboard.js +149 -18
  524. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  525. package/dist/cli/cli/src/commands/service.d.ts +6 -0
  526. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  527. package/dist/cli/cli/src/commands/service.js +152 -50
  528. package/dist/cli/cli/src/commands/service.js.map +1 -1
  529. package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
  530. package/dist/cli/cli/src/commands/start.js +25 -80
  531. package/dist/cli/cli/src/commands/start.js.map +1 -1
  532. package/dist/cli/cli/src/commands/status.d.ts +17 -1
  533. package/dist/cli/cli/src/commands/status.d.ts.map +1 -1
  534. package/dist/cli/cli/src/commands/status.js +133 -68
  535. package/dist/cli/cli/src/commands/status.js.map +1 -1
  536. package/dist/cli/cli/src/commands/stop.d.ts +28 -1
  537. package/dist/cli/cli/src/commands/stop.d.ts.map +1 -1
  538. package/dist/cli/cli/src/commands/stop.js +260 -100
  539. package/dist/cli/cli/src/commands/stop.js.map +1 -1
  540. package/dist/cli/cli/src/index.js +3 -2
  541. package/dist/cli/cli/src/index.js.map +1 -1
  542. package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts +68 -0
  543. package/dist/cli/cli/src/scripts/ensure-node-pty.d.ts.map +1 -0
  544. package/dist/cli/cli/src/scripts/ensure-node-pty.js +167 -0
  545. package/dist/cli/cli/src/scripts/ensure-node-pty.js.map +1 -0
  546. package/dist/cli/cli/src/utils/backend-status.d.ts +175 -0
  547. package/dist/cli/cli/src/utils/backend-status.d.ts.map +1 -0
  548. package/dist/cli/cli/src/utils/backend-status.js +322 -0
  549. package/dist/cli/cli/src/utils/backend-status.js.map +1 -0
  550. package/dist/cli/cli/src/utils/marketplace.d.ts +31 -2
  551. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  552. package/dist/cli/cli/src/utils/marketplace.js +78 -20
  553. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  554. package/dist/cli/cli/src/utils/native-toolchain.d.ts +53 -8
  555. package/dist/cli/cli/src/utils/native-toolchain.d.ts.map +1 -1
  556. package/dist/cli/cli/src/utils/native-toolchain.js +107 -15
  557. package/dist/cli/cli/src/utils/native-toolchain.js.map +1 -1
  558. package/dist/cli/cli/src/utils/process-cleanup.d.ts +38 -6
  559. package/dist/cli/cli/src/utils/process-cleanup.d.ts.map +1 -1
  560. package/dist/cli/cli/src/utils/process-cleanup.js +83 -53
  561. package/dist/cli/cli/src/utils/process-cleanup.js.map +1 -1
  562. package/dist/cli/cli/src/utils/runtime-auth.d.ts +130 -0
  563. package/dist/cli/cli/src/utils/runtime-auth.d.ts.map +1 -0
  564. package/dist/cli/cli/src/utils/runtime-auth.js +248 -0
  565. package/dist/cli/cli/src/utils/runtime-auth.js.map +1 -0
  566. package/dist/cli/cli/src/utils/safe-shutdown.d.ts +137 -0
  567. package/dist/cli/cli/src/utils/safe-shutdown.d.ts.map +1 -0
  568. package/dist/cli/cli/src/utils/safe-shutdown.js +236 -0
  569. package/dist/cli/cli/src/utils/safe-shutdown.js.map +1 -0
  570. package/dist/cli/config/constants.d.ts +40 -0
  571. package/dist/cli/config/constants.d.ts.map +1 -1
  572. package/dist/cli/config/constants.js +41 -0
  573. package/dist/cli/config/constants.js.map +1 -1
  574. package/dist/cli/config/index.d.ts +4 -2
  575. package/dist/cli/config/index.d.ts.map +1 -1
  576. package/dist/cli/config/index.js +2 -2
  577. package/dist/cli/config/index.js.map +1 -1
  578. package/frontend/dist/assets/{index-1fd45a2a.js → index-f7b99e81.js} +262 -262
  579. package/frontend/dist/index.html +1 -1
  580. package/package.json +4 -4
@@ -0,0 +1,250 @@
1
+ /**
2
+ * MicrosoftTodoService — Microsoft To Do over Graph v1.0 on the owner's grant.
3
+ *
4
+ * What agents can do: list task lists (and create one), list the tasks of a
5
+ * list (open ones by default), add a task (note, due date, importance),
6
+ * update a task (complete / reopen, retitle, re-date) and delete one.
7
+ *
8
+ * Lists are named by id or by display name (case-insensitive); no name at
9
+ * all means the owner's default list ("Tasks", `wellknownListName:
10
+ * defaultList`). Every call resolves the name against `GET /me/todo/lists`
11
+ * so the answer can say which list it acted on.
12
+ *
13
+ * Graph failures map to stable codes: 401 refreshes the token once, 429 is
14
+ * waited out once when `Retry-After` is short and otherwise returned as
15
+ * `rate_limited` with the delay, 403 → `forbidden`, 404 → `not_found`.
16
+ *
17
+ * @module services/microsoft/microsoft-todo.service
18
+ */
19
+ /** Token provider slice. */
20
+ export interface MicrosoftTokenProvider {
21
+ getAccessToken(): Promise<string>;
22
+ clearCache(): void;
23
+ }
24
+ /** Service dependencies. */
25
+ export interface MicrosoftTodoDeps {
26
+ tokens: MicrosoftTokenProvider;
27
+ fetchImpl?: typeof fetch;
28
+ /** Wait before a 429 retry (injectable for tests). */
29
+ sleep?: (ms: number) => Promise<void>;
30
+ }
31
+ /** A task list, trimmed. */
32
+ export interface TodoList {
33
+ id: string;
34
+ name: string;
35
+ /** True for the owner's default list ("Tasks"). */
36
+ isDefault?: boolean;
37
+ isShared?: boolean;
38
+ }
39
+ /** A task, trimmed for agents. */
40
+ export interface TodoTask {
41
+ id: string;
42
+ title: string;
43
+ /** `notStarted` | `inProgress` | `completed` | `waitingOnOthers` | `deferred` */
44
+ status: string;
45
+ /** Present when not `normal`. */
46
+ importance?: string;
47
+ /** `YYYY-MM-DD` */
48
+ due?: string;
49
+ /** Note text (plain), truncated. */
50
+ note?: string;
51
+ /** `YYYY-MM-DD`, completed tasks only. */
52
+ completedAt?: string;
53
+ }
54
+ /** `listTasks` input. */
55
+ export interface TodoListTasksInput {
56
+ /** List id or name; empty = default list. */
57
+ list?: string;
58
+ /** Include completed tasks (default: open only). */
59
+ includeCompleted?: boolean;
60
+ limit?: number;
61
+ }
62
+ /** `addTask` input. */
63
+ export interface TodoAddTaskInput {
64
+ list?: string;
65
+ title: string;
66
+ note?: string;
67
+ /** `YYYY-MM-DD` */
68
+ due?: string;
69
+ importance?: string;
70
+ }
71
+ /** `updateTask` input. `due: null` clears the due date. */
72
+ export interface TodoUpdateTaskInput {
73
+ list?: string;
74
+ taskId: string;
75
+ title?: string;
76
+ note?: string;
77
+ due?: string | null;
78
+ importance?: string;
79
+ /** true → completed, false → reopened (notStarted). */
80
+ complete?: boolean;
81
+ }
82
+ /** Reference to the list an operation acted on. */
83
+ export interface TodoListRef {
84
+ id: string;
85
+ name: string;
86
+ }
87
+ interface WireDateTimeTimeZone {
88
+ dateTime?: string;
89
+ timeZone?: string;
90
+ }
91
+ interface WireList {
92
+ id?: string;
93
+ displayName?: string;
94
+ isShared?: boolean;
95
+ isOwner?: boolean;
96
+ wellknownListName?: string;
97
+ }
98
+ interface WireTask {
99
+ id?: string;
100
+ title?: string;
101
+ status?: string;
102
+ importance?: string;
103
+ body?: {
104
+ content?: string;
105
+ contentType?: string;
106
+ };
107
+ dueDateTime?: WireDateTimeTimeZone | null;
108
+ completedDateTime?: WireDateTimeTimeZone | null;
109
+ }
110
+ /**
111
+ * Trim a Graph `todoTaskList`.
112
+ *
113
+ * @param l - Wire list
114
+ * @returns Trimmed list
115
+ */
116
+ export declare function toList(l: WireList): TodoList;
117
+ /**
118
+ * Plain text of a task body (HTML bodies come from Outlook-created tasks).
119
+ *
120
+ * @param body - Wire body
121
+ * @returns Collapsed text, truncated to the preview length, or undefined
122
+ */
123
+ export declare function noteText(body: WireTask['body']): string | undefined;
124
+ /**
125
+ * Trim a Graph `todoTask`.
126
+ *
127
+ * @param t - Wire task
128
+ * @returns Trimmed task
129
+ */
130
+ export declare function toTask(t: WireTask): TodoTask;
131
+ /**
132
+ * Validate a `YYYY-MM-DD` date and turn it into Graph's `dueDateTime`.
133
+ *
134
+ * @param value - Date text
135
+ * @returns `{ dateTime, timeZone }`
136
+ * @throws MicrosoftError(400, validation) for a malformed or impossible date
137
+ */
138
+ export declare function toDueDateTime(value: string): {
139
+ dateTime: string;
140
+ timeZone: string;
141
+ };
142
+ /**
143
+ * Validate an importance value.
144
+ *
145
+ * @param value - Candidate
146
+ * @returns Lower-cased importance
147
+ * @throws MicrosoftError(400, validation) when unknown
148
+ */
149
+ export declare function toImportance(value: string): string;
150
+ /**
151
+ * Pick the list a reference names: exact id, then case-insensitive name,
152
+ * then `default` (or nothing) → the default list.
153
+ *
154
+ * @param lists - All lists
155
+ * @param ref - Id or name (may be empty)
156
+ * @returns The list
157
+ * @throws MicrosoftError(404, not_found) when nothing matches; (400, validation) when a name is ambiguous
158
+ */
159
+ export declare function pickList(lists: TodoList[], ref: string | undefined): TodoList;
160
+ /**
161
+ * Microsoft To Do calls.
162
+ */
163
+ export declare class MicrosoftTodoService {
164
+ private readonly deps;
165
+ private readonly base;
166
+ /**
167
+ * @param deps - Token provider, fetch, sleep
168
+ */
169
+ constructor(deps: MicrosoftTodoDeps);
170
+ /**
171
+ * `GET /me/todo/lists` (following `@odata.nextLink`).
172
+ *
173
+ * @returns Every list
174
+ */
175
+ listLists(): Promise<TodoList[]>;
176
+ /**
177
+ * `POST /me/todo/lists`.
178
+ *
179
+ * @param name - Display name
180
+ * @returns The new list
181
+ * @throws MicrosoftError(400, validation) for an empty name
182
+ */
183
+ createList(name: string): Promise<TodoList>;
184
+ /**
185
+ * Resolve a list reference (id, name, `default`, or empty).
186
+ *
187
+ * @param ref - Reference
188
+ * @returns The list
189
+ */
190
+ resolveList(ref: string | undefined): Promise<TodoList>;
191
+ /**
192
+ * `GET /me/todo/lists/{id}/tasks` — open tasks unless `includeCompleted`.
193
+ *
194
+ * @param input - List, completed flag, limit
195
+ * @returns The list, its tasks, and whether more exist
196
+ */
197
+ listTasks(input?: TodoListTasksInput): Promise<{
198
+ list: TodoListRef;
199
+ tasks: TodoTask[];
200
+ hasMore: boolean;
201
+ }>;
202
+ /**
203
+ * `POST /me/todo/lists/{id}/tasks`.
204
+ *
205
+ * @param input - List, title, note, due, importance
206
+ * @returns The list and the new task
207
+ * @throws MicrosoftError(400, validation) for a missing title / bad due / bad importance
208
+ */
209
+ addTask(input: TodoAddTaskInput): Promise<{
210
+ list: TodoListRef;
211
+ task: TodoTask;
212
+ }>;
213
+ /**
214
+ * `PATCH /me/todo/lists/{id}/tasks/{taskId}`.
215
+ *
216
+ * @param input - List, task id, and the fields to change
217
+ * @returns The list and the updated task
218
+ * @throws MicrosoftError(400, validation) when nothing is changed or a value is bad
219
+ */
220
+ updateTask(input: TodoUpdateTaskInput): Promise<{
221
+ list: TodoListRef;
222
+ task: TodoTask;
223
+ }>;
224
+ /**
225
+ * `DELETE /me/todo/lists/{id}/tasks/{taskId}`.
226
+ *
227
+ * @param listRef - List id or name
228
+ * @param taskId - Task id
229
+ * @returns What was deleted
230
+ */
231
+ deleteTask(listRef: string | undefined, taskId: string): Promise<{
232
+ list: TodoListRef;
233
+ taskId: string;
234
+ deleted: true;
235
+ }>;
236
+ /**
237
+ * Authenticated Graph call.
238
+ *
239
+ * 401 → drop the cached token and retry once; still 401 → `unauthorized`.
240
+ * 429 → wait out a short `Retry-After` once, else `rate_limited`.
241
+ * 400 → `validation`, 403 → `forbidden`, 404 → `not_found`, others → 502.
242
+ *
243
+ * @param url - Absolute URL
244
+ * @param init - Method / JSON body
245
+ * @returns Parsed JSON (`{}` for 204)
246
+ */
247
+ private request;
248
+ }
249
+ export {};
250
+ //# sourceMappingURL=microsoft-todo.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microsoft-todo.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/microsoft/microsoft-todo.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,367 @@
1
+ /**
2
+ * MicrosoftTodoService — Microsoft To Do over Graph v1.0 on the owner's grant.
3
+ *
4
+ * What agents can do: list task lists (and create one), list the tasks of a
5
+ * list (open ones by default), add a task (note, due date, importance),
6
+ * update a task (complete / reopen, retitle, re-date) and delete one.
7
+ *
8
+ * Lists are named by id or by display name (case-insensitive); no name at
9
+ * all means the owner's default list ("Tasks", `wellknownListName:
10
+ * defaultList`). Every call resolves the name against `GET /me/todo/lists`
11
+ * so the answer can say which list it acted on.
12
+ *
13
+ * Graph failures map to stable codes: 401 refreshes the token once, 429 is
14
+ * waited out once when `Retry-After` is short and otherwise returned as
15
+ * `rate_limited` with the delay, 403 → `forbidden`, 404 → `not_found`.
16
+ *
17
+ * @module services/microsoft/microsoft-todo.service
18
+ */
19
+ import { MICROSOFT_TODO_CONSTANTS } from '../../constants.js';
20
+ import { MicrosoftError } from './microsoft-token.service.js';
21
+ const CODES = MICROSOFT_TODO_CONSTANTS.ERROR_CODES;
22
+ /** Upper bound on `@odata.nextLink` pages followed when listing lists. */
23
+ const MAX_LIST_PAGES = 10;
24
+ const HTTP_NO_CONTENT = 204;
25
+ const MS_PER_SECOND = 1000;
26
+ /**
27
+ * Trim a Graph `todoTaskList`.
28
+ *
29
+ * @param l - Wire list
30
+ * @returns Trimmed list
31
+ */
32
+ export function toList(l) {
33
+ return {
34
+ id: l.id ?? '',
35
+ name: l.displayName ?? '',
36
+ ...(l.wellknownListName === MICROSOFT_TODO_CONSTANTS.DEFAULT_LIST_WELLKNOWN ? { isDefault: true } : {}),
37
+ ...(l.isShared ? { isShared: true } : {}),
38
+ };
39
+ }
40
+ /**
41
+ * Plain text of a task body (HTML bodies come from Outlook-created tasks).
42
+ *
43
+ * @param body - Wire body
44
+ * @returns Collapsed text, truncated to the preview length, or undefined
45
+ */
46
+ export function noteText(body) {
47
+ let text = body?.content ?? '';
48
+ if ((body?.contentType ?? '').toLowerCase() === 'html') {
49
+ text = text.replace(/<[^>]*>/g, ' ').replace(/&nbsp;/g, ' ').replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>');
50
+ }
51
+ text = text.replace(/\s+/g, ' ').trim();
52
+ if (!text)
53
+ return undefined;
54
+ const max = MICROSOFT_TODO_CONSTANTS.NOTE_PREVIEW_LENGTH;
55
+ return text.length > max ? `${text.slice(0, max)}…` : text;
56
+ }
57
+ /**
58
+ * Trim a Graph `todoTask`.
59
+ *
60
+ * @param t - Wire task
61
+ * @returns Trimmed task
62
+ */
63
+ export function toTask(t) {
64
+ const note = noteText(t.body);
65
+ const due = t.dueDateTime?.dateTime?.slice(0, 10);
66
+ const completedAt = t.status === 'completed' ? t.completedDateTime?.dateTime?.slice(0, 10) : undefined;
67
+ return {
68
+ id: t.id ?? '',
69
+ title: t.title ?? '',
70
+ status: t.status ?? 'notStarted',
71
+ ...(t.importance && t.importance !== 'normal' ? { importance: t.importance } : {}),
72
+ ...(due ? { due } : {}),
73
+ ...(note ? { note } : {}),
74
+ ...(completedAt ? { completedAt } : {}),
75
+ };
76
+ }
77
+ /**
78
+ * Validate a `YYYY-MM-DD` date and turn it into Graph's `dueDateTime`.
79
+ *
80
+ * @param value - Date text
81
+ * @returns `{ dateTime, timeZone }`
82
+ * @throws MicrosoftError(400, validation) for a malformed or impossible date
83
+ */
84
+ export function toDueDateTime(value) {
85
+ const text = value.trim();
86
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(text);
87
+ const parsed = match ? new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3]))) : null;
88
+ if (!match || !parsed || parsed.toISOString().slice(0, 10) !== text) {
89
+ throw new MicrosoftError(400, CODES.VALIDATION, `due must be a real date as YYYY-MM-DD (got "${value}")`);
90
+ }
91
+ return { dateTime: `${text}T00:00:00`, timeZone: MICROSOFT_TODO_CONSTANTS.DUE_TIME_ZONE };
92
+ }
93
+ /**
94
+ * Validate an importance value.
95
+ *
96
+ * @param value - Candidate
97
+ * @returns Lower-cased importance
98
+ * @throws MicrosoftError(400, validation) when unknown
99
+ */
100
+ export function toImportance(value) {
101
+ const v = value.trim().toLowerCase();
102
+ if (!MICROSOFT_TODO_CONSTANTS.IMPORTANCE_VALUES.includes(v)) {
103
+ throw new MicrosoftError(400, CODES.VALIDATION, `importance must be one of ${MICROSOFT_TODO_CONSTANTS.IMPORTANCE_VALUES.join(', ')}`);
104
+ }
105
+ return v;
106
+ }
107
+ /**
108
+ * Pick the list a reference names: exact id, then case-insensitive name,
109
+ * then `default` (or nothing) → the default list.
110
+ *
111
+ * @param lists - All lists
112
+ * @param ref - Id or name (may be empty)
113
+ * @returns The list
114
+ * @throws MicrosoftError(404, not_found) when nothing matches; (400, validation) when a name is ambiguous
115
+ */
116
+ export function pickList(lists, ref) {
117
+ const wanted = (ref ?? '').trim();
118
+ if (wanted) {
119
+ const byId = lists.find((l) => l.id === wanted);
120
+ if (byId)
121
+ return byId;
122
+ const byName = lists.filter((l) => l.name.trim().toLowerCase() === wanted.toLowerCase());
123
+ if (byName.length === 1)
124
+ return byName[0];
125
+ if (byName.length > 1) {
126
+ throw new MicrosoftError(400, CODES.VALIDATION, `Several lists are called "${wanted}"; pass the list id instead (${byName.map((l) => l.id).join(', ')})`);
127
+ }
128
+ if (wanted.toLowerCase() !== 'default') {
129
+ const names = lists.map((l) => l.name).join(', ');
130
+ throw new MicrosoftError(404, CODES.NOT_FOUND, `No To Do list called "${wanted}". Lists: ${names || '(none)'}`);
131
+ }
132
+ }
133
+ const fallback = lists.find((l) => l.isDefault) ?? lists[0];
134
+ if (!fallback)
135
+ throw new MicrosoftError(404, CODES.NOT_FOUND, 'This Microsoft account has no To Do lists.');
136
+ return fallback;
137
+ }
138
+ /**
139
+ * Microsoft To Do calls.
140
+ */
141
+ export class MicrosoftTodoService {
142
+ deps;
143
+ base = `${MICROSOFT_TODO_CONSTANTS.GRAPH_BASE}/me/todo/lists`;
144
+ /**
145
+ * @param deps - Token provider, fetch, sleep
146
+ */
147
+ constructor(deps) {
148
+ this.deps = {
149
+ ...deps,
150
+ fetchImpl: deps.fetchImpl ?? fetch,
151
+ sleep: deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms))),
152
+ };
153
+ }
154
+ /**
155
+ * `GET /me/todo/lists` (following `@odata.nextLink`).
156
+ *
157
+ * @returns Every list
158
+ */
159
+ async listLists() {
160
+ const out = [];
161
+ let url = this.base;
162
+ for (let page = 0; url && page < MAX_LIST_PAGES; page += 1) {
163
+ const data = await this.request(url);
164
+ out.push(...(data.value ?? []).map(toList));
165
+ url = data['@odata.nextLink'];
166
+ }
167
+ return out;
168
+ }
169
+ /**
170
+ * `POST /me/todo/lists`.
171
+ *
172
+ * @param name - Display name
173
+ * @returns The new list
174
+ * @throws MicrosoftError(400, validation) for an empty name
175
+ */
176
+ async createList(name) {
177
+ const displayName = (name ?? '').trim().slice(0, MICROSOFT_TODO_CONSTANTS.TITLE_MAX_LENGTH);
178
+ if (!displayName)
179
+ throw new MicrosoftError(400, CODES.VALIDATION, '"name" is required');
180
+ return toList(await this.request(this.base, { method: 'POST', body: { displayName } }));
181
+ }
182
+ /**
183
+ * Resolve a list reference (id, name, `default`, or empty).
184
+ *
185
+ * @param ref - Reference
186
+ * @returns The list
187
+ */
188
+ async resolveList(ref) {
189
+ return pickList(await this.listLists(), ref);
190
+ }
191
+ /**
192
+ * `GET /me/todo/lists/{id}/tasks` — open tasks unless `includeCompleted`.
193
+ *
194
+ * @param input - List, completed flag, limit
195
+ * @returns The list, its tasks, and whether more exist
196
+ */
197
+ async listTasks(input = {}) {
198
+ const list = await this.resolveList(input.list);
199
+ const limit = Math.min(Math.max(1, Math.floor(input.limit ?? MICROSOFT_TODO_CONSTANTS.TASKS_DEFAULT_LIMIT) || MICROSOFT_TODO_CONSTANTS.TASKS_DEFAULT_LIMIT), MICROSOFT_TODO_CONSTANTS.TASKS_LIMIT_CEILING);
200
+ const url = new URL(`${this.base}/${encodeURIComponent(list.id)}/tasks`);
201
+ url.searchParams.set('$top', String(limit));
202
+ if (!input.includeCompleted)
203
+ url.searchParams.set('$filter', "status ne 'completed'");
204
+ const data = await this.request(url.toString());
205
+ return { list: { id: list.id, name: list.name }, tasks: (data.value ?? []).map(toTask), hasMore: Boolean(data['@odata.nextLink']) };
206
+ }
207
+ /**
208
+ * `POST /me/todo/lists/{id}/tasks`.
209
+ *
210
+ * @param input - List, title, note, due, importance
211
+ * @returns The list and the new task
212
+ * @throws MicrosoftError(400, validation) for a missing title / bad due / bad importance
213
+ */
214
+ async addTask(input) {
215
+ const title = (input.title ?? '').trim().slice(0, MICROSOFT_TODO_CONSTANTS.TITLE_MAX_LENGTH);
216
+ if (!title)
217
+ throw new MicrosoftError(400, CODES.VALIDATION, '"title" is required');
218
+ const body = { title };
219
+ const note = (input.note ?? '').trim();
220
+ if (note)
221
+ body.body = { content: note.slice(0, MICROSOFT_TODO_CONSTANTS.NOTE_MAX_LENGTH), contentType: 'text' };
222
+ if (input.due?.trim())
223
+ body.dueDateTime = toDueDateTime(input.due);
224
+ if (input.importance?.trim())
225
+ body.importance = toImportance(input.importance);
226
+ const list = await this.resolveList(input.list);
227
+ const task = await this.request(`${this.base}/${encodeURIComponent(list.id)}/tasks`, { method: 'POST', body });
228
+ return { list: { id: list.id, name: list.name }, task: toTask(task) };
229
+ }
230
+ /**
231
+ * `PATCH /me/todo/lists/{id}/tasks/{taskId}`.
232
+ *
233
+ * @param input - List, task id, and the fields to change
234
+ * @returns The list and the updated task
235
+ * @throws MicrosoftError(400, validation) when nothing is changed or a value is bad
236
+ */
237
+ async updateTask(input) {
238
+ const taskId = (input.taskId ?? '').trim();
239
+ if (!taskId)
240
+ throw new MicrosoftError(400, CODES.VALIDATION, '"taskId" is required');
241
+ const body = {};
242
+ if (input.title !== undefined) {
243
+ const title = input.title.trim().slice(0, MICROSOFT_TODO_CONSTANTS.TITLE_MAX_LENGTH);
244
+ if (!title)
245
+ throw new MicrosoftError(400, CODES.VALIDATION, '"title" cannot be empty');
246
+ body.title = title;
247
+ }
248
+ if (input.note !== undefined)
249
+ body.body = { content: input.note.trim().slice(0, MICROSOFT_TODO_CONSTANTS.NOTE_MAX_LENGTH), contentType: 'text' };
250
+ if (input.due === null)
251
+ body.dueDateTime = null;
252
+ else if (input.due !== undefined)
253
+ body.dueDateTime = toDueDateTime(input.due);
254
+ if (input.importance !== undefined)
255
+ body.importance = toImportance(input.importance);
256
+ if (input.complete !== undefined)
257
+ body.status = input.complete ? 'completed' : 'notStarted';
258
+ if (Object.keys(body).length === 0) {
259
+ throw new MicrosoftError(400, CODES.VALIDATION, 'nothing to change: give complete, title, note, due or importance');
260
+ }
261
+ const list = await this.resolveList(input.list);
262
+ const task = await this.request(`${this.base}/${encodeURIComponent(list.id)}/tasks/${encodeURIComponent(taskId)}`, { method: 'PATCH', body });
263
+ return { list: { id: list.id, name: list.name }, task: toTask(task) };
264
+ }
265
+ /**
266
+ * `DELETE /me/todo/lists/{id}/tasks/{taskId}`.
267
+ *
268
+ * @param listRef - List id or name
269
+ * @param taskId - Task id
270
+ * @returns What was deleted
271
+ */
272
+ async deleteTask(listRef, taskId) {
273
+ const id = (taskId ?? '').trim();
274
+ if (!id)
275
+ throw new MicrosoftError(400, CODES.VALIDATION, '"taskId" is required');
276
+ const list = await this.resolveList(listRef);
277
+ await this.request(`${this.base}/${encodeURIComponent(list.id)}/tasks/${encodeURIComponent(id)}`, { method: 'DELETE' });
278
+ return { list: { id: list.id, name: list.name }, taskId: id, deleted: true };
279
+ }
280
+ // -------------------------------------------------------------------------
281
+ // Internals
282
+ // -------------------------------------------------------------------------
283
+ /**
284
+ * Authenticated Graph call.
285
+ *
286
+ * 401 → drop the cached token and retry once; still 401 → `unauthorized`.
287
+ * 429 → wait out a short `Retry-After` once, else `rate_limited`.
288
+ * 400 → `validation`, 403 → `forbidden`, 404 → `not_found`, others → 502.
289
+ *
290
+ * @param url - Absolute URL
291
+ * @param init - Method / JSON body
292
+ * @returns Parsed JSON (`{}` for 204)
293
+ */
294
+ async request(url, init = {}) {
295
+ let retriedAuth = false;
296
+ let retriedThrottle = false;
297
+ for (;;) {
298
+ const token = await this.deps.tokens.getAccessToken();
299
+ let res;
300
+ try {
301
+ res = await this.deps.fetchImpl(url, {
302
+ method: init.method ?? 'GET',
303
+ headers: {
304
+ Authorization: `Bearer ${token}`,
305
+ Accept: 'application/json',
306
+ ...(init.body !== undefined ? { 'Content-Type': 'application/json' } : {}),
307
+ },
308
+ body: init.body !== undefined ? JSON.stringify(init.body) : undefined,
309
+ signal: AbortSignal.timeout(MICROSOFT_TODO_CONSTANTS.REQUEST_TIMEOUT_MS),
310
+ });
311
+ }
312
+ catch (err) {
313
+ throw new MicrosoftError(502, CODES.NETWORK, `Microsoft Graph unreachable: ${err instanceof Error ? err.message : String(err)}`);
314
+ }
315
+ if (res.status === HTTP_NO_CONTENT)
316
+ return {};
317
+ const text = await res.text();
318
+ if (res.ok) {
319
+ if (!text)
320
+ return {};
321
+ try {
322
+ return JSON.parse(text);
323
+ }
324
+ catch {
325
+ throw new MicrosoftError(502, CODES.MICROSOFT_ERROR, 'Microsoft Graph returned a non-JSON response.');
326
+ }
327
+ }
328
+ let message = `Microsoft Graph request failed (${res.status})`;
329
+ let graphCode = '';
330
+ try {
331
+ const parsed = JSON.parse(text);
332
+ graphCode = parsed.error?.code ?? '';
333
+ message = parsed.error?.message || graphCode || message;
334
+ }
335
+ catch {
336
+ if (text)
337
+ message = text.slice(0, 200);
338
+ }
339
+ const detail = graphCode && !message.includes(graphCode) ? `${graphCode}: ${message}` : message;
340
+ if (res.status === 401) {
341
+ this.deps.tokens.clearCache();
342
+ if (!retriedAuth) {
343
+ retriedAuth = true;
344
+ continue;
345
+ }
346
+ throw new MicrosoftError(401, CODES.UNAUTHORIZED, `Microsoft rejected the access token: ${detail}`);
347
+ }
348
+ if (res.status === 429) {
349
+ const retryAfter = Math.max(1, Number.parseInt(res.headers?.get?.('Retry-After') ?? '', 10) || 1);
350
+ if (!retriedThrottle && retryAfter <= MICROSOFT_TODO_CONSTANTS.RETRY_AFTER_MAX_WAIT_S) {
351
+ retriedThrottle = true;
352
+ await this.deps.sleep(retryAfter * MS_PER_SECOND);
353
+ continue;
354
+ }
355
+ throw new MicrosoftError(429, CODES.RATE_LIMITED, `Microsoft Graph is throttling requests; retry after ${retryAfter}s`, retryAfter);
356
+ }
357
+ if (res.status === 400)
358
+ throw new MicrosoftError(400, CODES.VALIDATION, detail);
359
+ if (res.status === 403)
360
+ throw new MicrosoftError(403, CODES.FORBIDDEN, detail);
361
+ if (res.status === 404)
362
+ throw new MicrosoftError(404, CODES.NOT_FOUND, detail);
363
+ throw new MicrosoftError(502, CODES.MICROSOFT_ERROR, detail);
364
+ }
365
+ }
366
+ }
367
+ //# sourceMappingURL=microsoft-todo.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microsoft-todo.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/microsoft/microsoft-todo.service.ts"],"names":[],"mappings":"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"}