crewly 1.2.3 → 1.2.4

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 (610) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/config/constants.ts +44 -1
  4. package/config/index.ts +4 -0
  5. package/config/roles/orchestrator/prompt.md +30 -2
  6. package/config/roles/team-leader/prompt.md +169 -0
  7. package/config/roles/team-leader/role.json +13 -0
  8. package/config/roles/team-leader/tl-addon.md +142 -0
  9. package/config/runtime_scripts/runtime-config.json +7 -0
  10. package/config/skills/_common/lib.sh +37 -0
  11. package/config/skills/agent/computer-use/execute.sh +228 -0
  12. package/config/skills/agent/computer-use/instructions.md +103 -0
  13. package/config/skills/agent/computer-use/lib/accessibility.sh +292 -0
  14. package/config/skills/agent/computer-use/lib/applescript.sh +117 -0
  15. package/config/skills/agent/computer-use/lib/discover.sh +122 -0
  16. package/config/skills/agent/computer-use/lib/playwright.sh +153 -0
  17. package/config/skills/agent/computer-use/lib/screenshot.sh +61 -0
  18. package/config/skills/agent/computer-use/skill.json +29 -0
  19. package/config/skills/agent/core/accept-task/execute.sh +7 -1
  20. package/config/skills/agent/core/complete-task/execute.sh +38 -1
  21. package/config/skills/agent/core/report-status/execute.sh +51 -2
  22. package/config/skills/agent/desktop-app-control/execute.sh +561 -0
  23. package/config/skills/agent/desktop-app-control/instructions.md +102 -0
  24. package/config/skills/agent/desktop-app-control/skill.json +33 -0
  25. package/config/skills/orchestrator/broadcast-to-org/execute.sh +88 -0
  26. package/config/skills/orchestrator/broadcast-to-org/instructions.md +51 -0
  27. package/config/skills/orchestrator/broadcast-to-org/skill.json +20 -0
  28. package/config/skills/orchestrator/delegate-task/execute.sh +75 -10
  29. package/config/skills/orchestrator/delegate-task/instructions.md +11 -1
  30. package/config/skills/orchestrator/handle-agent-failure/execute.sh +45 -0
  31. package/config/skills/orchestrator/handle-agent-failure/instructions.md +29 -0
  32. package/config/skills/orchestrator/handle-agent-failure/skill.json +20 -0
  33. package/config/skills/orchestrator/restart-crewly/instructions.md +9 -2
  34. package/config/skills/team-leader/_common/lib.sh +4 -0
  35. package/config/skills/team-leader/aggregate-results/execute.sh +168 -0
  36. package/config/skills/team-leader/aggregate-results/instructions.md +89 -0
  37. package/config/skills/team-leader/aggregate-results/skill.json +20 -0
  38. package/config/skills/team-leader/decompose-goal/execute.sh +86 -0
  39. package/config/skills/team-leader/decompose-goal/instructions.md +84 -0
  40. package/config/skills/team-leader/decompose-goal/skill.json +20 -0
  41. package/config/skills/team-leader/delegate-task/execute.sh +142 -0
  42. package/config/skills/team-leader/delegate-task/instructions.md +55 -0
  43. package/config/skills/team-leader/delegate-task/skill.json +20 -0
  44. package/config/skills/team-leader/handle-failure/execute.sh +119 -0
  45. package/config/skills/team-leader/handle-failure/instructions.md +93 -0
  46. package/config/skills/team-leader/handle-failure/skill.json +20 -0
  47. package/config/skills/team-leader/schedule-check/execute.sh +65 -0
  48. package/config/skills/team-leader/schedule-check/execute.test.sh +247 -0
  49. package/config/skills/team-leader/schedule-check/instructions.md +49 -0
  50. package/config/skills/team-leader/schedule-check/skill.json +20 -0
  51. package/config/skills/team-leader/start-agent/execute.sh +39 -0
  52. package/config/skills/team-leader/start-agent/instructions.md +48 -0
  53. package/config/skills/team-leader/start-agent/skill.json +20 -0
  54. package/config/skills/team-leader/stop-agent/execute.sh +39 -0
  55. package/config/skills/team-leader/stop-agent/instructions.md +49 -0
  56. package/config/skills/team-leader/stop-agent/skill.json +20 -0
  57. package/config/skills/team-leader/verify-output/execute.sh +296 -0
  58. package/config/skills/team-leader/verify-output/instructions.md +122 -0
  59. package/config/skills/team-leader/verify-output/skill.json +20 -0
  60. package/config/templates/core-team/demo-script.md +41 -0
  61. package/config/templates/core-team/goals.md +20 -0
  62. package/config/templates/core-team/team.json +22 -0
  63. package/config/templates/dev-fullstack/template.json +115 -0
  64. package/config/templates/education-smb/README.md +27 -0
  65. package/config/templates/education-smb/goals.md +16 -0
  66. package/config/templates/education-smb/knowledge/docs/content-standards.md +24 -0
  67. package/config/templates/education-smb/knowledge/docs/education-industry-context.md +13 -0
  68. package/config/templates/education-smb/knowledge/index.json +24 -0
  69. package/config/templates/education-smb/learned-patterns.json +16 -0
  70. package/config/templates/education-smb/quality-gates.yaml +66 -0
  71. package/config/templates/education-smb/roles/analytics-specialist.md +6 -0
  72. package/config/templates/education-smb/roles/content-creator.md +6 -0
  73. package/config/templates/education-smb/roles/curriculum-designer.md +6 -0
  74. package/config/templates/education-smb/roles/engagement-manager.md +6 -0
  75. package/config/templates/education-smb/team.json +40 -0
  76. package/config/templates/education-smb/template.json +26 -0
  77. package/config/templates/education-smb/workflows/course-content-generation.yaml +44 -0
  78. package/config/templates/education-smb/workflows/reporting.yaml +31 -0
  79. package/config/templates/education-smb/workflows/student-communication.yaml +44 -0
  80. package/config/templates/education-smb/workflows.yaml +40 -0
  81. package/config/templates/insurance-smb/README.md +28 -0
  82. package/config/templates/insurance-smb/goals.md +21 -0
  83. package/config/templates/insurance-smb/knowledge/docs/compliance-checklist.md +28 -0
  84. package/config/templates/insurance-smb/knowledge/docs/insurance-industry-context.md +23 -0
  85. package/config/templates/insurance-smb/knowledge/index.json +24 -0
  86. package/config/templates/insurance-smb/learned-patterns.json +16 -0
  87. package/config/templates/insurance-smb/quality-gates.yaml +54 -0
  88. package/config/templates/insurance-smb/roles/claims-processor.md +6 -0
  89. package/config/templates/insurance-smb/roles/client-manager.md +6 -0
  90. package/config/templates/insurance-smb/roles/compliance-officer.md +6 -0
  91. package/config/templates/insurance-smb/roles/marketing-specialist.md +6 -0
  92. package/config/templates/insurance-smb/roles/policy-analyst.md +6 -0
  93. package/config/templates/insurance-smb/team.json +48 -0
  94. package/config/templates/insurance-smb/template.json +26 -0
  95. package/config/templates/insurance-smb/workflows/claims-processing.yaml +48 -0
  96. package/config/templates/insurance-smb/workflows.yaml +43 -0
  97. package/config/templates/research-analysis/template.json +88 -0
  98. package/config/templates/social-media-ops/template.json +85 -0
  99. package/config/templates/video-production/template.json +123 -0
  100. package/dist/backend/backend/src/constants.d.ts +303 -15
  101. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  102. package/dist/backend/backend/src/constants.js +296 -15
  103. package/dist/backend/backend/src/constants.js.map +1 -1
  104. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  105. package/dist/backend/backend/src/controllers/chat/chat.controller.js +69 -48
  106. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  107. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts +81 -0
  108. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts.map +1 -0
  109. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js +234 -0
  110. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js.map +1 -0
  111. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts +25 -0
  112. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts.map +1 -0
  113. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js +38 -0
  114. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js.map +1 -0
  115. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts +69 -0
  116. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts.map +1 -0
  117. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js +165 -0
  118. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js.map +1 -0
  119. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts +23 -0
  120. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts.map +1 -0
  121. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js +32 -0
  122. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js.map +1 -0
  123. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +52 -0
  124. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -0
  125. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +122 -0
  126. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -0
  127. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +21 -0
  128. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -0
  129. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +32 -0
  130. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -0
  131. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts +42 -0
  132. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts.map +1 -0
  133. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js +138 -0
  134. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js.map +1 -0
  135. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts +23 -0
  136. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts.map +1 -0
  137. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js +34 -0
  138. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js.map +1 -0
  139. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts +43 -0
  140. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts.map +1 -0
  141. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js +9 -0
  142. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js.map +1 -0
  143. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts +7 -0
  144. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts.map +1 -0
  145. package/dist/backend/backend/src/controllers/cloud/files/index.js +7 -0
  146. package/dist/backend/backend/src/controllers/cloud/files/index.js.map +1 -0
  147. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts +47 -0
  148. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts.map +1 -0
  149. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js +131 -0
  150. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js.map +1 -0
  151. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts +23 -0
  152. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts.map +1 -0
  153. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js +30 -0
  154. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js.map +1 -0
  155. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts +81 -0
  156. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts.map +1 -0
  157. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js +85 -0
  158. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js.map +1 -0
  159. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts +7 -0
  160. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts.map +1 -0
  161. package/dist/backend/backend/src/controllers/cloud/h5/index.js +7 -0
  162. package/dist/backend/backend/src/controllers/cloud/h5/index.js.map +1 -0
  163. package/dist/backend/backend/src/controllers/cloud/index.d.ts +14 -0
  164. package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -0
  165. package/dist/backend/backend/src/controllers/cloud/index.js +14 -0
  166. package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -0
  167. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts +7 -0
  168. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts.map +1 -0
  169. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js +7 -0
  170. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js.map +1 -0
  171. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts +45 -0
  172. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts.map +1 -0
  173. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js +155 -0
  174. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js.map +1 -0
  175. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts +25 -0
  176. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts.map +1 -0
  177. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js +32 -0
  178. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js.map +1 -0
  179. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts +101 -0
  180. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -0
  181. package/dist/backend/backend/src/controllers/cloud/relay.controller.js +343 -0
  182. package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -0
  183. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts +29 -0
  184. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts.map +1 -0
  185. package/dist/backend/backend/src/controllers/cloud/relay.routes.js +44 -0
  186. package/dist/backend/backend/src/controllers/cloud/relay.routes.js.map +1 -0
  187. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts +49 -0
  188. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts.map +1 -0
  189. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js +152 -0
  190. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js.map +1 -0
  191. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts +24 -0
  192. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts.map +1 -0
  193. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js +34 -0
  194. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js.map +1 -0
  195. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts +90 -0
  196. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts.map +1 -0
  197. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js +48 -0
  198. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js.map +1 -0
  199. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts +7 -0
  200. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts.map +1 -0
  201. package/dist/backend/backend/src/controllers/cloud/tasks/index.js +7 -0
  202. package/dist/backend/backend/src/controllers/cloud/tasks/index.js.map +1 -0
  203. package/dist/backend/backend/src/controllers/marketplace/index.d.ts +2 -0
  204. package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
  205. package/dist/backend/backend/src/controllers/marketplace/index.js +3 -0
  206. package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
  207. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +12 -12
  208. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
  209. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +1 -18
  210. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  211. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  212. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +3 -0
  213. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  214. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts +111 -0
  215. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts.map +1 -0
  216. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js +220 -0
  217. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js.map +1 -0
  218. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +33 -0
  219. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts.map +1 -0
  220. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +50 -0
  221. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -0
  222. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  223. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +4 -1
  224. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  225. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  226. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -2
  227. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  228. package/dist/backend/backend/src/controllers/payment/index.d.ts +7 -0
  229. package/dist/backend/backend/src/controllers/payment/index.d.ts.map +1 -0
  230. package/dist/backend/backend/src/controllers/payment/index.js +7 -0
  231. package/dist/backend/backend/src/controllers/payment/index.js.map +1 -0
  232. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts +57 -0
  233. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts.map +1 -0
  234. package/dist/backend/backend/src/controllers/payment/payment.controller.js +136 -0
  235. package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -0
  236. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +27 -0
  237. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -0
  238. package/dist/backend/backend/src/controllers/payment/payment.routes.js +38 -0
  239. package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -0
  240. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +109 -0
  241. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -0
  242. package/dist/backend/backend/src/controllers/payment/payment.types.js +54 -0
  243. package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -0
  244. package/dist/backend/backend/src/controllers/request-types.d.ts +34 -5
  245. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  246. package/dist/backend/backend/src/controllers/session/session.controller.d.ts +14 -0
  247. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  248. package/dist/backend/backend/src/controllers/session/session.controller.js +48 -0
  249. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  250. package/dist/backend/backend/src/controllers/session/session.routes.d.ts.map +1 -1
  251. package/dist/backend/backend/src/controllers/session/session.routes.js +3 -1
  252. package/dist/backend/backend/src/controllers/session/session.routes.js.map +1 -1
  253. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
  254. package/dist/backend/backend/src/controllers/system/scheduler.controller.js +4 -3
  255. package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
  256. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  257. package/dist/backend/backend/src/controllers/system/system.controller.js +13 -15
  258. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  259. package/dist/backend/backend/src/controllers/task-management/assignments.controller.d.ts.map +1 -1
  260. package/dist/backend/backend/src/controllers/task-management/assignments.controller.js.map +1 -1
  261. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  262. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +40 -4
  263. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  264. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
  265. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  266. package/dist/backend/backend/src/controllers/team/team.controller.js +259 -13
  267. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  268. package/dist/backend/backend/src/controllers/template/index.d.ts +8 -0
  269. package/dist/backend/backend/src/controllers/template/index.d.ts.map +1 -0
  270. package/dist/backend/backend/src/controllers/template/index.js +8 -0
  271. package/dist/backend/backend/src/controllers/template/index.js.map +1 -0
  272. package/dist/backend/backend/src/controllers/template/template.controller.d.ts +63 -0
  273. package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -0
  274. package/dist/backend/backend/src/controllers/template/template.controller.js +112 -0
  275. package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -0
  276. package/dist/backend/backend/src/controllers/template/template.routes.d.ts +24 -0
  277. package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -0
  278. package/dist/backend/backend/src/controllers/template/template.routes.js +33 -0
  279. package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -0
  280. package/dist/backend/backend/src/index.d.ts.map +1 -1
  281. package/dist/backend/backend/src/index.js +105 -13
  282. package/dist/backend/backend/src/index.js.map +1 -1
  283. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js +3 -3
  284. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js.map +1 -1
  285. package/dist/backend/backend/src/models/Team.d.ts +5 -0
  286. package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
  287. package/dist/backend/backend/src/models/Team.js +24 -0
  288. package/dist/backend/backend/src/models/Team.js.map +1 -1
  289. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  290. package/dist/backend/backend/src/routes/api.routes.js +21 -0
  291. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  292. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +1 -6
  293. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  294. package/dist/backend/backend/src/services/agent/agent-registration.service.js +211 -287
  295. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  296. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -1
  297. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  298. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +11 -2
  299. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  300. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +1 -0
  301. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  302. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +30 -43
  303. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  304. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
  305. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
  306. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +496 -0
  307. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
  308. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts +70 -0
  309. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts.map +1 -0
  310. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js +131 -0
  311. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js.map +1 -0
  312. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +21 -1
  313. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  314. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +32 -1
  315. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  316. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +77 -3
  317. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  318. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +281 -30
  319. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  320. package/dist/backend/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
  321. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +9 -0
  322. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  323. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +49 -2
  324. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  325. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +124 -2
  326. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  327. package/dist/backend/backend/src/services/chat/chat.service.d.ts +10 -2
  328. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  329. package/dist/backend/backend/src/services/chat/chat.service.js +49 -8
  330. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  331. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts +174 -0
  332. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts.map +1 -0
  333. package/dist/backend/backend/src/services/cloud/auth/auth.service.js +402 -0
  334. package/dist/backend/backend/src/services/cloud/auth/auth.service.js.map +1 -0
  335. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts +110 -0
  336. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts.map +1 -0
  337. package/dist/backend/backend/src/services/cloud/auth/auth.types.js +54 -0
  338. package/dist/backend/backend/src/services/cloud/auth/auth.types.js.map +1 -0
  339. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts +36 -0
  340. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts.map +1 -0
  341. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js +31 -0
  342. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js.map +1 -0
  343. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts +47 -0
  344. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts.map +1 -0
  345. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js +116 -0
  346. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js.map +1 -0
  347. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts +61 -0
  348. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts.map +1 -0
  349. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js +203 -0
  350. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js.map +1 -0
  351. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts +46 -0
  352. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts.map +1 -0
  353. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +95 -0
  354. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -0
  355. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts +136 -0
  356. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts.map +1 -0
  357. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js +204 -0
  358. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js.map +1 -0
  359. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +179 -0
  360. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -0
  361. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +237 -0
  362. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -0
  363. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts +97 -0
  364. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts.map +1 -0
  365. package/dist/backend/backend/src/services/cloud/cloud-file.service.js +184 -0
  366. package/dist/backend/backend/src/services/cloud/cloud-file.service.js.map +1 -0
  367. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts +114 -0
  368. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts.map +1 -0
  369. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js +196 -0
  370. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js.map +1 -0
  371. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts +118 -0
  372. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts.map +1 -0
  373. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js +322 -0
  374. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js.map +1 -0
  375. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts +115 -0
  376. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts.map +1 -0
  377. package/dist/backend/backend/src/services/cloud/cloud-task.service.js +265 -0
  378. package/dist/backend/backend/src/services/cloud/cloud-task.service.js.map +1 -0
  379. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts +175 -0
  380. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts.map +1 -0
  381. package/dist/backend/backend/src/services/cloud/relay-client.service.js +392 -0
  382. package/dist/backend/backend/src/services/cloud/relay-client.service.js.map +1 -0
  383. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts +87 -0
  384. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts.map +1 -0
  385. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js +140 -0
  386. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js.map +1 -0
  387. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts +183 -0
  388. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts.map +1 -0
  389. package/dist/backend/backend/src/services/cloud/relay-server.service.js +523 -0
  390. package/dist/backend/backend/src/services/cloud/relay-server.service.js.map +1 -0
  391. package/dist/backend/backend/src/services/cloud/relay.types.d.ts +170 -0
  392. package/dist/backend/backend/src/services/cloud/relay.types.d.ts.map +1 -0
  393. package/dist/backend/backend/src/services/cloud/relay.types.js +69 -0
  394. package/dist/backend/backend/src/services/cloud/relay.types.js.map +1 -0
  395. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts +9 -1
  396. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -1
  397. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js +18 -4
  398. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -1
  399. package/dist/backend/backend/src/services/core/env.config.d.ts +147 -0
  400. package/dist/backend/backend/src/services/core/env.config.d.ts.map +1 -0
  401. package/dist/backend/backend/src/services/core/env.config.js +226 -0
  402. package/dist/backend/backend/src/services/core/env.config.js.map +1 -0
  403. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  404. package/dist/backend/backend/src/services/core/storage.service.js +5 -0
  405. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  406. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +20 -0
  407. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  408. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +35 -0
  409. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  410. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts +160 -0
  411. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts.map +1 -0
  412. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js +261 -0
  413. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js.map +1 -0
  414. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts +161 -0
  415. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts.map +1 -0
  416. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js +276 -0
  417. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js.map +1 -0
  418. package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
  419. package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
  420. package/dist/backend/backend/src/services/marketplace/index.js +2 -0
  421. package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
  422. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +2 -2
  423. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts +149 -0
  424. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts.map +1 -0
  425. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js +500 -0
  426. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js.map +1 -0
  427. package/dist/backend/backend/src/services/mcp-server.js +1 -1
  428. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  429. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +90 -0
  430. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -0
  431. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +233 -0
  432. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -0
  433. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +1 -1
  434. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
  435. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +1 -1
  436. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  437. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  438. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +3 -3
  439. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  440. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  441. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +29 -5
  442. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  443. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts +69 -0
  444. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts.map +1 -0
  445. package/dist/backend/backend/src/services/payment/magic-moment.service.js +158 -0
  446. package/dist/backend/backend/src/services/payment/magic-moment.service.js.map +1 -0
  447. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts +95 -0
  448. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts.map +1 -0
  449. package/dist/backend/backend/src/services/payment/magic-moment.types.js +91 -0
  450. package/dist/backend/backend/src/services/payment/magic-moment.types.js.map +1 -0
  451. package/dist/backend/backend/src/services/payment/stripe.service.d.ts +122 -0
  452. package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -0
  453. package/dist/backend/backend/src/services/payment/stripe.service.js +403 -0
  454. package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -0
  455. package/dist/backend/backend/src/services/plugin/index.d.ts +9 -0
  456. package/dist/backend/backend/src/services/plugin/index.d.ts.map +1 -0
  457. package/dist/backend/backend/src/services/plugin/index.js +8 -0
  458. package/dist/backend/backend/src/services/plugin/index.js.map +1 -0
  459. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts +102 -0
  460. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts.map +1 -0
  461. package/dist/backend/backend/src/services/plugin/plugin.service.js +179 -0
  462. package/dist/backend/backend/src/services/plugin/plugin.service.js.map +1 -0
  463. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts +88 -0
  464. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts.map +1 -0
  465. package/dist/backend/backend/src/services/plugin/plugin.types.js +17 -0
  466. package/dist/backend/backend/src/services/plugin/plugin.types.js.map +1 -0
  467. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +17 -0
  468. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  469. package/dist/backend/backend/src/services/project/task-tracking.service.js +63 -0
  470. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
  471. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +14 -0
  472. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  473. package/dist/backend/backend/src/services/session/session-command-helper.js +54 -0
  474. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  475. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  476. package/dist/backend/backend/src/services/settings/settings.service.js +1 -0
  477. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  478. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  479. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +15 -5
  480. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  481. package/dist/backend/backend/src/services/template/template.service.d.ts +153 -0
  482. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -0
  483. package/dist/backend/backend/src/services/template/template.service.js +372 -0
  484. package/dist/backend/backend/src/services/template/template.service.js.map +1 -0
  485. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +51 -0
  486. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  487. package/dist/backend/backend/src/services/workflow/scheduler.service.js +118 -2
  488. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  489. package/dist/backend/backend/src/types/chat.types.d.ts +39 -1
  490. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  491. package/dist/backend/backend/src/types/chat.types.js +45 -2
  492. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  493. package/dist/backend/backend/src/types/event-bus.types.d.ts +14 -2
  494. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  495. package/dist/backend/backend/src/types/event-bus.types.js +15 -0
  496. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  497. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts +101 -0
  498. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts.map +1 -0
  499. package/dist/backend/backend/src/types/hierarchy-message.types.js +15 -0
  500. package/dist/backend/backend/src/types/hierarchy-message.types.js.map +1 -0
  501. package/dist/backend/backend/src/types/index.d.ts +54 -4
  502. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  503. package/dist/backend/backend/src/types/index.js.map +1 -1
  504. package/dist/backend/backend/src/types/marketplace.types.d.ts +99 -0
  505. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  506. package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
  507. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  508. package/dist/backend/backend/src/types/settings.types.js +4 -0
  509. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  510. package/dist/backend/backend/src/types/task-tracking.types.d.ts +79 -1
  511. package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
  512. package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
  513. package/dist/backend/backend/src/types/team-template.types.d.ts +166 -0
  514. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -0
  515. package/dist/backend/backend/src/types/team-template.types.js +139 -0
  516. package/dist/backend/backend/src/types/team-template.types.js.map +1 -0
  517. package/dist/backend/backend/src/utils/async-handler.d.ts +20 -0
  518. package/dist/backend/backend/src/utils/async-handler.d.ts.map +1 -0
  519. package/dist/backend/backend/src/utils/async-handler.js +29 -0
  520. package/dist/backend/backend/src/utils/async-handler.js.map +1 -0
  521. package/dist/backend/backend/src/utils/defaultPrompts.d.ts +4 -4
  522. package/dist/backend/backend/src/utils/defaultPrompts.d.ts.map +1 -1
  523. package/dist/backend/backend/src/utils/defaultPrompts.js +16 -0
  524. package/dist/backend/backend/src/utils/defaultPrompts.js.map +1 -1
  525. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  526. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  527. package/dist/backend/backend/src/utils/gemini-trusted-folders.js +94 -0
  528. package/dist/backend/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  529. package/dist/backend/backend/src/utils/message-serializer.d.ts +74 -0
  530. package/dist/backend/backend/src/utils/message-serializer.d.ts.map +1 -0
  531. package/dist/backend/backend/src/utils/message-serializer.js +380 -0
  532. package/dist/backend/backend/src/utils/message-serializer.js.map +1 -0
  533. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  534. package/dist/backend/backend/src/utils/terminal-string-ops.js +20 -11
  535. package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -1
  536. package/dist/backend/config/constants.d.ts +40 -1
  537. package/dist/backend/config/constants.d.ts.map +1 -1
  538. package/dist/backend/config/constants.js +41 -1
  539. package/dist/backend/config/constants.js.map +1 -1
  540. package/dist/backend/config/index.d.ts +2 -2
  541. package/dist/backend/config/index.d.ts.map +1 -1
  542. package/dist/backend/config/index.js +2 -2
  543. package/dist/backend/config/index.js.map +1 -1
  544. package/dist/cli/backend/src/constants.d.ts +303 -15
  545. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  546. package/dist/cli/backend/src/constants.js +296 -15
  547. package/dist/cli/backend/src/constants.js.map +1 -1
  548. package/dist/cli/backend/src/models/Team.d.ts +5 -0
  549. package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
  550. package/dist/cli/backend/src/models/Team.js +24 -0
  551. package/dist/cli/backend/src/models/Team.js.map +1 -1
  552. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  553. package/dist/cli/backend/src/services/core/storage.service.js +5 -0
  554. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  555. package/dist/cli/backend/src/services/mcp-server.js +1 -1
  556. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  557. package/dist/cli/backend/src/types/chat.types.d.ts +39 -1
  558. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  559. package/dist/cli/backend/src/types/chat.types.js +45 -2
  560. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  561. package/dist/cli/backend/src/types/index.d.ts +54 -4
  562. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  563. package/dist/cli/backend/src/types/index.js.map +1 -1
  564. package/dist/cli/backend/src/types/settings.types.d.ts +1 -1
  565. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  566. package/dist/cli/backend/src/types/settings.types.js +4 -0
  567. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  568. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  569. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  570. package/dist/cli/backend/src/utils/gemini-trusted-folders.js +94 -0
  571. package/dist/cli/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  572. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  573. package/dist/cli/backend/src/utils/terminal-string-ops.js +20 -11
  574. package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -1
  575. package/dist/cli/cli/src/commands/onboard.d.ts +2 -1
  576. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  577. package/dist/cli/cli/src/commands/onboard.js +21 -8
  578. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  579. package/dist/cli/cli/src/commands/start.d.ts +1 -0
  580. package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
  581. package/dist/cli/cli/src/commands/start.js +71 -23
  582. package/dist/cli/cli/src/commands/start.js.map +1 -1
  583. package/dist/cli/cli/src/constants.d.ts +1 -1
  584. package/dist/cli/cli/src/constants.d.ts.map +1 -1
  585. package/dist/cli/cli/src/constants.js +1 -1
  586. package/dist/cli/cli/src/constants.js.map +1 -1
  587. package/dist/cli/cli/src/index.js +1 -0
  588. package/dist/cli/cli/src/index.js.map +1 -1
  589. package/dist/cli/cli/src/utils/project-scaffold.d.ts +109 -0
  590. package/dist/cli/cli/src/utils/project-scaffold.d.ts.map +1 -0
  591. package/dist/cli/cli/src/utils/project-scaffold.js +346 -0
  592. package/dist/cli/cli/src/utils/project-scaffold.js.map +1 -0
  593. package/dist/cli/cli/src/utils/templates.d.ts +7 -2
  594. package/dist/cli/cli/src/utils/templates.d.ts.map +1 -1
  595. package/dist/cli/cli/src/utils/templates.js +76 -7
  596. package/dist/cli/cli/src/utils/templates.js.map +1 -1
  597. package/dist/cli/config/constants.d.ts +40 -1
  598. package/dist/cli/config/constants.d.ts.map +1 -1
  599. package/dist/cli/config/constants.js +41 -1
  600. package/dist/cli/config/constants.js.map +1 -1
  601. package/dist/cli/config/index.d.ts +2 -2
  602. package/dist/cli/config/index.d.ts.map +1 -1
  603. package/dist/cli/config/index.js +2 -2
  604. package/dist/cli/config/index.js.map +1 -1
  605. package/frontend/dist/assets/index-510ab719.css +33 -0
  606. package/frontend/dist/assets/index-935cd846.js +4961 -0
  607. package/frontend/dist/index.html +2 -2
  608. package/package.json +9 -4
  609. package/frontend/dist/assets/index-a23214ae.js +0 -4919
  610. package/frontend/dist/assets/index-c407fe13.css +0 -33
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Cloud File Service
3
+ *
4
+ * Handles file uploads for cloud AI employee tasks.
5
+ * MVP implementation: local file storage under ~/.crewly/cloud/uploads/.
6
+ * Future: migrate to DigitalOcean Spaces (S3-compatible).
7
+ *
8
+ * Files are organized by userId to enforce tenant isolation.
9
+ *
10
+ * @module services/cloud/cloud-file.service
11
+ */
12
+ /** Cloud file service configuration. */
13
+ export declare const CLOUD_FILE_CONSTANTS: {
14
+ /** Upload directory under ~/.crewly/ */
15
+ readonly UPLOAD_DIR: "cloud/uploads";
16
+ /** Maximum file size in bytes (20 MB) */
17
+ readonly MAX_FILE_SIZE: number;
18
+ /** Allowed MIME types for upload */
19
+ readonly ALLOWED_MIME_TYPES: readonly string[];
20
+ /** Allowed file extensions */
21
+ readonly ALLOWED_EXTENSIONS: readonly string[];
22
+ };
23
+ /** Result of a file upload operation. */
24
+ export interface FileUploadResult {
25
+ /** Whether the upload succeeded */
26
+ success: boolean;
27
+ /** File key (path relative to upload root) — use this to reference the file */
28
+ fileKey?: string;
29
+ /** Original filename */
30
+ originalName?: string;
31
+ /** File size in bytes */
32
+ size?: number;
33
+ /** Error message on failure */
34
+ error?: string;
35
+ }
36
+ /** Metadata about an uploaded file. */
37
+ export interface UploadedFileInfo {
38
+ /** File key (path relative to upload root) */
39
+ fileKey: string;
40
+ /** Absolute filesystem path */
41
+ absolutePath: string;
42
+ /** Original filename */
43
+ originalName: string;
44
+ /** File size in bytes */
45
+ size: number;
46
+ /** Upload timestamp */
47
+ uploadedAt: string;
48
+ }
49
+ /**
50
+ * Manages file uploads and retrieval for cloud tasks.
51
+ *
52
+ * Singleton — access via `CloudFileService.getInstance()`.
53
+ */
54
+ export declare class CloudFileService {
55
+ private static instance;
56
+ private readonly logger;
57
+ private readonly uploadRoot;
58
+ private constructor();
59
+ /** Get singleton instance. */
60
+ static getInstance(): CloudFileService;
61
+ /** Reset singleton (for testing). */
62
+ static resetInstance(): void;
63
+ /**
64
+ * Save an uploaded file to the user's upload directory.
65
+ *
66
+ * @param userId - Authenticated user ID (tenant isolation)
67
+ * @param originalName - Original filename from the client
68
+ * @param buffer - File content as a Buffer
69
+ * @param mimeType - MIME type of the file
70
+ * @returns Upload result with file key
71
+ */
72
+ saveFile(userId: string, originalName: string, buffer: Buffer, mimeType: string): Promise<FileUploadResult>;
73
+ /**
74
+ * Read a file by its key.
75
+ *
76
+ * @param fileKey - File key (userId/filename)
77
+ * @returns File buffer or null if not found
78
+ */
79
+ readFile(fileKey: string): Promise<Buffer | null>;
80
+ /**
81
+ * Get metadata about an uploaded file.
82
+ *
83
+ * @param fileKey - File key (userId/filename)
84
+ * @returns File info or null if not found
85
+ */
86
+ getFileInfo(fileKey: string): Promise<UploadedFileInfo | null>;
87
+ /**
88
+ * Delete a file by its key.
89
+ *
90
+ * @param fileKey - File key (userId/filename)
91
+ * @returns True if deleted, false if not found
92
+ */
93
+ deleteFile(fileKey: string): Promise<boolean>;
94
+ /** Get the absolute path for a file key. */
95
+ getAbsolutePath(fileKey: string): string;
96
+ }
97
+ //# sourceMappingURL=cloud-file.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-file.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-file.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,wCAAwC;AACxC,eAAO,MAAM,oBAAoB;IAChC,wCAAwC;;IAExC,yCAAyC;;IAEzC,oCAAoC;iCAU/B,SAAS,MAAM,EAAE;IACtB,8BAA8B;iCAIzB,SAAS,MAAM,EAAE;CACb,CAAC;AAMX,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAChC,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAChC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;CACnB;AAMD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IAExD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO;IAKP,8BAA8B;IAC9B,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC,qCAAqC;IACrC,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;OAQG;IACG,QAAQ,CACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAqD5B;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASvD;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAgBpE;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWnD,4CAA4C;IAC5C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAGxC"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Cloud File Service
3
+ *
4
+ * Handles file uploads for cloud AI employee tasks.
5
+ * MVP implementation: local file storage under ~/.crewly/cloud/uploads/.
6
+ * Future: migrate to DigitalOcean Spaces (S3-compatible).
7
+ *
8
+ * Files are organized by userId to enforce tenant isolation.
9
+ *
10
+ * @module services/cloud/cloud-file.service
11
+ */
12
+ import { randomUUID } from 'node:crypto';
13
+ import { readFile, writeFile, mkdir, stat, unlink } from 'node:fs/promises';
14
+ import { join, extname } from 'node:path';
15
+ import { homedir } from 'node:os';
16
+ import { LoggerService } from '../core/logger.service.js';
17
+ // ---------------------------------------------------------------------------
18
+ // Constants
19
+ // ---------------------------------------------------------------------------
20
+ /** Cloud file service configuration. */
21
+ export const CLOUD_FILE_CONSTANTS = {
22
+ /** Upload directory under ~/.crewly/ */
23
+ UPLOAD_DIR: 'cloud/uploads',
24
+ /** Maximum file size in bytes (20 MB) */
25
+ MAX_FILE_SIZE: 20 * 1024 * 1024,
26
+ /** Allowed MIME types for upload */
27
+ ALLOWED_MIME_TYPES: [
28
+ 'image/png',
29
+ 'image/jpeg',
30
+ 'image/gif',
31
+ 'image/webp',
32
+ 'application/pdf',
33
+ 'text/plain',
34
+ 'text/csv',
35
+ 'application/json',
36
+ ],
37
+ /** Allowed file extensions */
38
+ ALLOWED_EXTENSIONS: [
39
+ '.png', '.jpg', '.jpeg', '.gif', '.webp',
40
+ '.pdf', '.txt', '.csv', '.json',
41
+ ],
42
+ };
43
+ // ---------------------------------------------------------------------------
44
+ // Service
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Manages file uploads and retrieval for cloud tasks.
48
+ *
49
+ * Singleton — access via `CloudFileService.getInstance()`.
50
+ */
51
+ export class CloudFileService {
52
+ static instance = null;
53
+ logger;
54
+ uploadRoot;
55
+ constructor() {
56
+ this.logger = LoggerService.getInstance().createComponentLogger('CloudFileService');
57
+ this.uploadRoot = join(homedir(), '.crewly', CLOUD_FILE_CONSTANTS.UPLOAD_DIR);
58
+ }
59
+ /** Get singleton instance. */
60
+ static getInstance() {
61
+ if (!CloudFileService.instance) {
62
+ CloudFileService.instance = new CloudFileService();
63
+ }
64
+ return CloudFileService.instance;
65
+ }
66
+ /** Reset singleton (for testing). */
67
+ static resetInstance() {
68
+ CloudFileService.instance = null;
69
+ }
70
+ /**
71
+ * Save an uploaded file to the user's upload directory.
72
+ *
73
+ * @param userId - Authenticated user ID (tenant isolation)
74
+ * @param originalName - Original filename from the client
75
+ * @param buffer - File content as a Buffer
76
+ * @param mimeType - MIME type of the file
77
+ * @returns Upload result with file key
78
+ */
79
+ async saveFile(userId, originalName, buffer, mimeType) {
80
+ // Validate file size
81
+ if (buffer.length > CLOUD_FILE_CONSTANTS.MAX_FILE_SIZE) {
82
+ return {
83
+ success: false,
84
+ error: `File too large: ${buffer.length} bytes. Maximum is ${CLOUD_FILE_CONSTANTS.MAX_FILE_SIZE} bytes (20 MB).`,
85
+ };
86
+ }
87
+ // Validate MIME type
88
+ if (!CLOUD_FILE_CONSTANTS.ALLOWED_MIME_TYPES.includes(mimeType)) {
89
+ return {
90
+ success: false,
91
+ error: `Unsupported file type: ${mimeType}. Allowed: ${CLOUD_FILE_CONSTANTS.ALLOWED_MIME_TYPES.join(', ')}`,
92
+ };
93
+ }
94
+ // Validate extension
95
+ const ext = extname(originalName).toLowerCase();
96
+ if (!CLOUD_FILE_CONSTANTS.ALLOWED_EXTENSIONS.includes(ext)) {
97
+ return {
98
+ success: false,
99
+ error: `Unsupported file extension: ${ext}. Allowed: ${CLOUD_FILE_CONSTANTS.ALLOWED_EXTENSIONS.join(', ')}`,
100
+ };
101
+ }
102
+ try {
103
+ // Create user-scoped upload directory
104
+ const userDir = join(this.uploadRoot, userId);
105
+ await mkdir(userDir, { recursive: true });
106
+ // Generate unique filename to prevent collisions
107
+ const uniqueName = `${randomUUID()}${ext}`;
108
+ const filePath = join(userDir, uniqueName);
109
+ const fileKey = `${userId}/${uniqueName}`;
110
+ await writeFile(filePath, buffer);
111
+ this.logger.info('File saved', { fileKey, originalName, size: buffer.length, mimeType });
112
+ return {
113
+ success: true,
114
+ fileKey,
115
+ originalName,
116
+ size: buffer.length,
117
+ };
118
+ }
119
+ catch (err) {
120
+ const msg = err instanceof Error ? err.message : String(err);
121
+ this.logger.error('Failed to save file', { error: msg, userId, originalName });
122
+ return { success: false, error: `Failed to save file: ${msg}` };
123
+ }
124
+ }
125
+ /**
126
+ * Read a file by its key.
127
+ *
128
+ * @param fileKey - File key (userId/filename)
129
+ * @returns File buffer or null if not found
130
+ */
131
+ async readFile(fileKey) {
132
+ try {
133
+ const filePath = join(this.uploadRoot, fileKey);
134
+ return await readFile(filePath);
135
+ }
136
+ catch {
137
+ return null;
138
+ }
139
+ }
140
+ /**
141
+ * Get metadata about an uploaded file.
142
+ *
143
+ * @param fileKey - File key (userId/filename)
144
+ * @returns File info or null if not found
145
+ */
146
+ async getFileInfo(fileKey) {
147
+ try {
148
+ const filePath = join(this.uploadRoot, fileKey);
149
+ const stats = await stat(filePath);
150
+ return {
151
+ fileKey,
152
+ absolutePath: filePath,
153
+ originalName: fileKey.split('/').pop() ?? fileKey,
154
+ size: stats.size,
155
+ uploadedAt: stats.birthtime.toISOString(),
156
+ };
157
+ }
158
+ catch {
159
+ return null;
160
+ }
161
+ }
162
+ /**
163
+ * Delete a file by its key.
164
+ *
165
+ * @param fileKey - File key (userId/filename)
166
+ * @returns True if deleted, false if not found
167
+ */
168
+ async deleteFile(fileKey) {
169
+ try {
170
+ const filePath = join(this.uploadRoot, fileKey);
171
+ await unlink(filePath);
172
+ this.logger.info('File deleted', { fileKey });
173
+ return true;
174
+ }
175
+ catch {
176
+ return false;
177
+ }
178
+ }
179
+ /** Get the absolute path for a file key. */
180
+ getAbsolutePath(fileKey) {
181
+ return join(this.uploadRoot, fileKey);
182
+ }
183
+ }
184
+ //# sourceMappingURL=cloud-file.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-file.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-file.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Cloud Image Analysis Service
3
+ *
4
+ * Processes images (especially WeChat screenshots) using multimodal AI.
5
+ * Extracts structured information: participants, timestamps, key messages,
6
+ * action items, and summaries.
7
+ *
8
+ * MVP: Uses a prompt template approach — the AI runtime receives the image
9
+ * along with a structured prompt and returns a parsed result.
10
+ *
11
+ * @module services/cloud/cloud-image-analysis.service
12
+ */
13
+ /** Image analysis service configuration. */
14
+ export declare const IMAGE_ANALYSIS_CONSTANTS: {
15
+ /** Maximum image file size for analysis (10 MB) */
16
+ readonly MAX_IMAGE_SIZE: number;
17
+ /** Supported image MIME types for analysis */
18
+ readonly SUPPORTED_MIMES: readonly string[];
19
+ };
20
+ /** Structured result from WeChat screenshot analysis. */
21
+ export interface WeChatAnalysisResult {
22
+ /** Identified chat participants */
23
+ participants: string[];
24
+ /** Extracted messages with attribution */
25
+ messages: WeChatMessage[];
26
+ /** High-level summary of the conversation */
27
+ summary: string;
28
+ /** Action items / to-dos extracted from the conversation */
29
+ actionItems: string[];
30
+ /** Key information or decisions identified */
31
+ keyPoints: string[];
32
+ }
33
+ /** A single message extracted from a WeChat screenshot. */
34
+ export interface WeChatMessage {
35
+ /** Message sender name */
36
+ sender: string;
37
+ /** Message content */
38
+ content: string;
39
+ /** Approximate timestamp if visible */
40
+ timestamp: string | null;
41
+ }
42
+ /** Result of an image analysis operation. */
43
+ export interface ImageAnalysisResult {
44
+ /** Whether the analysis succeeded */
45
+ success: boolean;
46
+ /** Analysis type performed */
47
+ analysisType?: string;
48
+ /** Structured analysis result */
49
+ data?: WeChatAnalysisResult;
50
+ /** Raw text output (fallback when structured parsing fails) */
51
+ rawOutput?: string;
52
+ /** Error message on failure */
53
+ error?: string;
54
+ }
55
+ /**
56
+ * Prompt template for WeChat screenshot analysis.
57
+ * Instructs the AI to extract structured information from a chat screenshot.
58
+ */
59
+ export declare const WECHAT_ANALYSIS_PROMPT = "You are analyzing a WeChat (\u5FAE\u4FE1) chat screenshot. Extract the following information in a structured JSON format:\n\n{\n \"participants\": [\"list of people in the chat\"],\n \"messages\": [\n {\n \"sender\": \"person name\",\n \"content\": \"message text\",\n \"timestamp\": \"time if visible, or null\"\n }\n ],\n \"summary\": \"Brief summary of the conversation (2-3 sentences)\",\n \"actionItems\": [\"List of action items or to-dos mentioned\"],\n \"keyPoints\": [\"Key information, decisions, or important details\"]\n}\n\nRules:\n- If the screenshot is in Chinese, keep the original Chinese text in messages but provide the summary in the same language as the user's prompt.\n- If a participant name is not visible, use a descriptive label like \"Person A\", \"Person B\".\n- If no action items are found, return an empty array.\n- If timestamps are not visible, set them to null.\n- Focus on accuracy \u2014 only include information clearly visible in the image.\n\nReturn ONLY the JSON object, no markdown formatting or extra text.";
60
+ /**
61
+ * Generic image analysis prompt for non-WeChat images.
62
+ */
63
+ export declare const GENERIC_IMAGE_ANALYSIS_PROMPT = "Analyze this image and provide a detailed description. Include:\n1. What the image shows\n2. Any text visible in the image\n3. Key details or notable elements\n4. If it's a document or form, extract the structured data\n\nProvide your analysis as clear, organized text.";
64
+ /**
65
+ * Processes images using multimodal AI for structured analysis.
66
+ *
67
+ * Singleton — access via `CloudImageAnalysisService.getInstance()`.
68
+ */
69
+ export declare class CloudImageAnalysisService {
70
+ private static instance;
71
+ private readonly logger;
72
+ private constructor();
73
+ /** Get singleton instance. */
74
+ static getInstance(): CloudImageAnalysisService;
75
+ /** Reset singleton (for testing). */
76
+ static resetInstance(): void;
77
+ /**
78
+ * Build the analysis prompt for a given image and optional user instruction.
79
+ *
80
+ * @param userPrompt - User's original task prompt / instruction
81
+ * @param isWeChatScreenshot - Whether to use WeChat-specific analysis
82
+ * @returns The complete prompt to send to the AI runtime
83
+ */
84
+ buildAnalysisPrompt(userPrompt: string, isWeChatScreenshot?: boolean): string;
85
+ /**
86
+ * Detect whether a user prompt likely refers to a WeChat screenshot.
87
+ *
88
+ * @param prompt - User's task prompt
89
+ * @returns True if the prompt suggests WeChat content
90
+ */
91
+ isLikelyWeChatScreenshot(prompt: string): boolean;
92
+ /**
93
+ * Parse a WeChat analysis result from AI output text.
94
+ *
95
+ * Attempts to extract structured JSON from the AI response.
96
+ * Falls back to raw text if JSON parsing fails.
97
+ *
98
+ * @param aiOutput - Raw text output from the AI runtime
99
+ * @returns Parsed analysis result
100
+ */
101
+ parseAnalysisResult(aiOutput: string): ImageAnalysisResult;
102
+ /**
103
+ * Validate that a file is suitable for image analysis.
104
+ *
105
+ * @param mimeType - File MIME type
106
+ * @param size - File size in bytes
107
+ * @returns Validation result with error message if invalid
108
+ */
109
+ validateImage(mimeType: string, size: number): {
110
+ valid: boolean;
111
+ error?: string;
112
+ };
113
+ }
114
+ //# sourceMappingURL=cloud-image-analysis.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-image-analysis.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-image-analysis.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB;IACpC,mDAAmD;;IAEnD,8CAA8C;8BAC6B,SAAS,MAAM,EAAE;CACnF,CAAC;AAMX,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACpC,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC7B,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IACnC,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAMD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,wjCAuBgC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,6BAA6B,kRAMM,CAAC;AAMjD;;;;GAIG;AACH,qBAAa,yBAAyB;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0C;IAEjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO;IAIP,8BAA8B;IAC9B,MAAM,CAAC,WAAW,IAAI,yBAAyB;IAO/C,qCAAqC;IACrC,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;OAMG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,GAAE,OAAe,GAAG,MAAM;IAYpF;;;;;OAKG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAajD;;;;;;;;OAQG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IA4C1D;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAiBjF"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Cloud Image Analysis Service
3
+ *
4
+ * Processes images (especially WeChat screenshots) using multimodal AI.
5
+ * Extracts structured information: participants, timestamps, key messages,
6
+ * action items, and summaries.
7
+ *
8
+ * MVP: Uses a prompt template approach — the AI runtime receives the image
9
+ * along with a structured prompt and returns a parsed result.
10
+ *
11
+ * @module services/cloud/cloud-image-analysis.service
12
+ */
13
+ import { LoggerService } from '../core/logger.service.js';
14
+ // ---------------------------------------------------------------------------
15
+ // Constants
16
+ // ---------------------------------------------------------------------------
17
+ /** Image analysis service configuration. */
18
+ export const IMAGE_ANALYSIS_CONSTANTS = {
19
+ /** Maximum image file size for analysis (10 MB) */
20
+ MAX_IMAGE_SIZE: 10 * 1024 * 1024,
21
+ /** Supported image MIME types for analysis */
22
+ SUPPORTED_MIMES: ['image/png', 'image/jpeg', 'image/gif', 'image/webp'],
23
+ };
24
+ // ---------------------------------------------------------------------------
25
+ // Prompt Templates
26
+ // ---------------------------------------------------------------------------
27
+ /**
28
+ * Prompt template for WeChat screenshot analysis.
29
+ * Instructs the AI to extract structured information from a chat screenshot.
30
+ */
31
+ export const WECHAT_ANALYSIS_PROMPT = `You are analyzing a WeChat (微信) chat screenshot. Extract the following information in a structured JSON format:
32
+
33
+ {
34
+ "participants": ["list of people in the chat"],
35
+ "messages": [
36
+ {
37
+ "sender": "person name",
38
+ "content": "message text",
39
+ "timestamp": "time if visible, or null"
40
+ }
41
+ ],
42
+ "summary": "Brief summary of the conversation (2-3 sentences)",
43
+ "actionItems": ["List of action items or to-dos mentioned"],
44
+ "keyPoints": ["Key information, decisions, or important details"]
45
+ }
46
+
47
+ Rules:
48
+ - If the screenshot is in Chinese, keep the original Chinese text in messages but provide the summary in the same language as the user's prompt.
49
+ - If a participant name is not visible, use a descriptive label like "Person A", "Person B".
50
+ - If no action items are found, return an empty array.
51
+ - If timestamps are not visible, set them to null.
52
+ - Focus on accuracy — only include information clearly visible in the image.
53
+
54
+ Return ONLY the JSON object, no markdown formatting or extra text.`;
55
+ /**
56
+ * Generic image analysis prompt for non-WeChat images.
57
+ */
58
+ export const GENERIC_IMAGE_ANALYSIS_PROMPT = `Analyze this image and provide a detailed description. Include:
59
+ 1. What the image shows
60
+ 2. Any text visible in the image
61
+ 3. Key details or notable elements
62
+ 4. If it's a document or form, extract the structured data
63
+
64
+ Provide your analysis as clear, organized text.`;
65
+ // ---------------------------------------------------------------------------
66
+ // Service
67
+ // ---------------------------------------------------------------------------
68
+ /**
69
+ * Processes images using multimodal AI for structured analysis.
70
+ *
71
+ * Singleton — access via `CloudImageAnalysisService.getInstance()`.
72
+ */
73
+ export class CloudImageAnalysisService {
74
+ static instance = null;
75
+ logger;
76
+ constructor() {
77
+ this.logger = LoggerService.getInstance().createComponentLogger('CloudImageAnalysisService');
78
+ }
79
+ /** Get singleton instance. */
80
+ static getInstance() {
81
+ if (!CloudImageAnalysisService.instance) {
82
+ CloudImageAnalysisService.instance = new CloudImageAnalysisService();
83
+ }
84
+ return CloudImageAnalysisService.instance;
85
+ }
86
+ /** Reset singleton (for testing). */
87
+ static resetInstance() {
88
+ CloudImageAnalysisService.instance = null;
89
+ }
90
+ /**
91
+ * Build the analysis prompt for a given image and optional user instruction.
92
+ *
93
+ * @param userPrompt - User's original task prompt / instruction
94
+ * @param isWeChatScreenshot - Whether to use WeChat-specific analysis
95
+ * @returns The complete prompt to send to the AI runtime
96
+ */
97
+ buildAnalysisPrompt(userPrompt, isWeChatScreenshot = false) {
98
+ const systemPrompt = isWeChatScreenshot
99
+ ? WECHAT_ANALYSIS_PROMPT
100
+ : GENERIC_IMAGE_ANALYSIS_PROMPT;
101
+ if (userPrompt.trim()) {
102
+ return `${systemPrompt}\n\nUser's additional instruction: ${userPrompt}`;
103
+ }
104
+ return systemPrompt;
105
+ }
106
+ /**
107
+ * Detect whether a user prompt likely refers to a WeChat screenshot.
108
+ *
109
+ * @param prompt - User's task prompt
110
+ * @returns True if the prompt suggests WeChat content
111
+ */
112
+ isLikelyWeChatScreenshot(prompt) {
113
+ const wechatPatterns = [
114
+ '微信', 'wechat', 'weixin',
115
+ '聊天记录', 'chat history', 'chat record',
116
+ '群聊', 'group chat',
117
+ '截图', 'screenshot',
118
+ '对话', 'conversation',
119
+ ];
120
+ const lowerPrompt = prompt.toLowerCase();
121
+ return wechatPatterns.some((pattern) => lowerPrompt.includes(pattern));
122
+ }
123
+ /**
124
+ * Parse a WeChat analysis result from AI output text.
125
+ *
126
+ * Attempts to extract structured JSON from the AI response.
127
+ * Falls back to raw text if JSON parsing fails.
128
+ *
129
+ * @param aiOutput - Raw text output from the AI runtime
130
+ * @returns Parsed analysis result
131
+ */
132
+ parseAnalysisResult(aiOutput) {
133
+ try {
134
+ // Try to extract JSON from the AI response
135
+ const jsonMatch = aiOutput.match(/\{[\s\S]*\}/);
136
+ if (!jsonMatch) {
137
+ return {
138
+ success: true,
139
+ analysisType: 'generic',
140
+ rawOutput: aiOutput,
141
+ };
142
+ }
143
+ const parsed = JSON.parse(jsonMatch[0]);
144
+ // Validate required fields
145
+ if (!parsed.participants || !parsed.messages || !parsed.summary) {
146
+ return {
147
+ success: true,
148
+ analysisType: 'generic',
149
+ rawOutput: aiOutput,
150
+ };
151
+ }
152
+ return {
153
+ success: true,
154
+ analysisType: 'wechat',
155
+ data: {
156
+ participants: Array.isArray(parsed.participants) ? parsed.participants : [],
157
+ messages: Array.isArray(parsed.messages) ? parsed.messages : [],
158
+ summary: String(parsed.summary),
159
+ actionItems: Array.isArray(parsed.actionItems) ? parsed.actionItems : [],
160
+ keyPoints: Array.isArray(parsed.keyPoints) ? parsed.keyPoints : [],
161
+ },
162
+ };
163
+ }
164
+ catch {
165
+ // JSON parsing failed — return raw output
166
+ return {
167
+ success: true,
168
+ analysisType: 'generic',
169
+ rawOutput: aiOutput,
170
+ };
171
+ }
172
+ }
173
+ /**
174
+ * Validate that a file is suitable for image analysis.
175
+ *
176
+ * @param mimeType - File MIME type
177
+ * @param size - File size in bytes
178
+ * @returns Validation result with error message if invalid
179
+ */
180
+ validateImage(mimeType, size) {
181
+ if (!IMAGE_ANALYSIS_CONSTANTS.SUPPORTED_MIMES.includes(mimeType)) {
182
+ return {
183
+ valid: false,
184
+ error: `Unsupported image type: ${mimeType}. Supported: ${IMAGE_ANALYSIS_CONSTANTS.SUPPORTED_MIMES.join(', ')}`,
185
+ };
186
+ }
187
+ if (size > IMAGE_ANALYSIS_CONSTANTS.MAX_IMAGE_SIZE) {
188
+ return {
189
+ valid: false,
190
+ error: `Image too large: ${size} bytes. Maximum: ${IMAGE_ANALYSIS_CONSTANTS.MAX_IMAGE_SIZE} bytes (10 MB)`,
191
+ };
192
+ }
193
+ return { valid: true };
194
+ }
195
+ }
196
+ //# sourceMappingURL=cloud-image-analysis.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-image-analysis.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-image-analysis.service.ts"],"names":[],"mappings":"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"}