crewly 1.2.1 → 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 (642) 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/architect/prompt.md +7 -5
  6. package/config/roles/backend-developer/prompt.md +8 -4
  7. package/config/roles/content-strategist/prompt.md +12 -4
  8. package/config/roles/designer/prompt.md +8 -4
  9. package/config/roles/developer/prompt.md +7 -4
  10. package/config/roles/frontend-developer/prompt.md +8 -4
  11. package/config/roles/fullstack-dev/prompt.md +8 -4
  12. package/config/roles/generalist/prompt.md +7 -4
  13. package/config/roles/ops/prompt.md +7 -4
  14. package/config/roles/orchestrator/prompt.md +52 -3
  15. package/config/roles/product-manager/prompt.md +8 -4
  16. package/config/roles/qa/prompt.md +8 -4
  17. package/config/roles/qa-engineer/prompt.md +8 -4
  18. package/config/roles/sales/prompt.md +8 -4
  19. package/config/roles/support/prompt.md +8 -4
  20. package/config/roles/team-leader/prompt.md +169 -0
  21. package/config/roles/team-leader/role.json +13 -0
  22. package/config/roles/team-leader/tl-addon.md +142 -0
  23. package/config/roles/tpm/prompt.md +8 -4
  24. package/config/runtime_scripts/runtime-config.json +7 -0
  25. package/config/skills/_common/lib.sh +37 -0
  26. package/config/skills/agent/computer-use/execute.sh +228 -0
  27. package/config/skills/agent/computer-use/instructions.md +103 -0
  28. package/config/skills/agent/computer-use/lib/accessibility.sh +292 -0
  29. package/config/skills/agent/computer-use/lib/applescript.sh +117 -0
  30. package/config/skills/agent/computer-use/lib/discover.sh +122 -0
  31. package/config/skills/agent/computer-use/lib/playwright.sh +153 -0
  32. package/config/skills/agent/computer-use/lib/screenshot.sh +61 -0
  33. package/config/skills/agent/computer-use/skill.json +29 -0
  34. package/config/skills/agent/core/accept-task/execute.sh +7 -1
  35. package/config/skills/agent/core/complete-task/execute.sh +38 -1
  36. package/config/skills/agent/core/report-status/execute.sh +51 -2
  37. package/config/skills/agent/desktop-app-control/execute.sh +561 -0
  38. package/config/skills/agent/desktop-app-control/instructions.md +102 -0
  39. package/config/skills/agent/desktop-app-control/skill.json +33 -0
  40. package/config/skills/orchestrator/broadcast-to-org/execute.sh +88 -0
  41. package/config/skills/orchestrator/broadcast-to-org/instructions.md +51 -0
  42. package/config/skills/orchestrator/broadcast-to-org/skill.json +20 -0
  43. package/config/skills/orchestrator/delegate-task/execute.sh +76 -11
  44. package/config/skills/orchestrator/delegate-task/instructions.md +11 -1
  45. package/config/skills/orchestrator/handle-agent-failure/execute.sh +45 -0
  46. package/config/skills/orchestrator/handle-agent-failure/instructions.md +29 -0
  47. package/config/skills/orchestrator/handle-agent-failure/skill.json +20 -0
  48. package/config/skills/orchestrator/restart-crewly/instructions.md +9 -2
  49. package/config/skills/team-leader/_common/lib.sh +4 -0
  50. package/config/skills/team-leader/aggregate-results/execute.sh +168 -0
  51. package/config/skills/team-leader/aggregate-results/instructions.md +89 -0
  52. package/config/skills/team-leader/aggregate-results/skill.json +20 -0
  53. package/config/skills/team-leader/decompose-goal/execute.sh +86 -0
  54. package/config/skills/team-leader/decompose-goal/instructions.md +84 -0
  55. package/config/skills/team-leader/decompose-goal/skill.json +20 -0
  56. package/config/skills/team-leader/delegate-task/execute.sh +142 -0
  57. package/config/skills/team-leader/delegate-task/instructions.md +55 -0
  58. package/config/skills/team-leader/delegate-task/skill.json +20 -0
  59. package/config/skills/team-leader/handle-failure/execute.sh +119 -0
  60. package/config/skills/team-leader/handle-failure/instructions.md +93 -0
  61. package/config/skills/team-leader/handle-failure/skill.json +20 -0
  62. package/config/skills/team-leader/schedule-check/execute.sh +65 -0
  63. package/config/skills/team-leader/schedule-check/execute.test.sh +247 -0
  64. package/config/skills/team-leader/schedule-check/instructions.md +49 -0
  65. package/config/skills/team-leader/schedule-check/skill.json +20 -0
  66. package/config/skills/team-leader/start-agent/execute.sh +39 -0
  67. package/config/skills/team-leader/start-agent/instructions.md +48 -0
  68. package/config/skills/team-leader/start-agent/skill.json +20 -0
  69. package/config/skills/team-leader/stop-agent/execute.sh +39 -0
  70. package/config/skills/team-leader/stop-agent/instructions.md +49 -0
  71. package/config/skills/team-leader/stop-agent/skill.json +20 -0
  72. package/config/skills/team-leader/verify-output/execute.sh +296 -0
  73. package/config/skills/team-leader/verify-output/instructions.md +122 -0
  74. package/config/skills/team-leader/verify-output/skill.json +20 -0
  75. package/config/templates/agent-claude-md.md +10 -5
  76. package/config/templates/core-team/demo-script.md +41 -0
  77. package/config/templates/core-team/goals.md +20 -0
  78. package/config/templates/core-team/team.json +22 -0
  79. package/config/templates/dev-fullstack/template.json +115 -0
  80. package/config/templates/education-smb/README.md +27 -0
  81. package/config/templates/education-smb/goals.md +16 -0
  82. package/config/templates/education-smb/knowledge/docs/content-standards.md +24 -0
  83. package/config/templates/education-smb/knowledge/docs/education-industry-context.md +13 -0
  84. package/config/templates/education-smb/knowledge/index.json +24 -0
  85. package/config/templates/education-smb/learned-patterns.json +16 -0
  86. package/config/templates/education-smb/quality-gates.yaml +66 -0
  87. package/config/templates/education-smb/roles/analytics-specialist.md +6 -0
  88. package/config/templates/education-smb/roles/content-creator.md +6 -0
  89. package/config/templates/education-smb/roles/curriculum-designer.md +6 -0
  90. package/config/templates/education-smb/roles/engagement-manager.md +6 -0
  91. package/config/templates/education-smb/team.json +40 -0
  92. package/config/templates/education-smb/template.json +26 -0
  93. package/config/templates/education-smb/workflows/course-content-generation.yaml +44 -0
  94. package/config/templates/education-smb/workflows/reporting.yaml +31 -0
  95. package/config/templates/education-smb/workflows/student-communication.yaml +44 -0
  96. package/config/templates/education-smb/workflows.yaml +40 -0
  97. package/config/templates/insurance-smb/README.md +28 -0
  98. package/config/templates/insurance-smb/goals.md +21 -0
  99. package/config/templates/insurance-smb/knowledge/docs/compliance-checklist.md +28 -0
  100. package/config/templates/insurance-smb/knowledge/docs/insurance-industry-context.md +23 -0
  101. package/config/templates/insurance-smb/knowledge/index.json +24 -0
  102. package/config/templates/insurance-smb/learned-patterns.json +16 -0
  103. package/config/templates/insurance-smb/quality-gates.yaml +54 -0
  104. package/config/templates/insurance-smb/roles/claims-processor.md +6 -0
  105. package/config/templates/insurance-smb/roles/client-manager.md +6 -0
  106. package/config/templates/insurance-smb/roles/compliance-officer.md +6 -0
  107. package/config/templates/insurance-smb/roles/marketing-specialist.md +6 -0
  108. package/config/templates/insurance-smb/roles/policy-analyst.md +6 -0
  109. package/config/templates/insurance-smb/team.json +48 -0
  110. package/config/templates/insurance-smb/template.json +26 -0
  111. package/config/templates/insurance-smb/workflows/claims-processing.yaml +48 -0
  112. package/config/templates/insurance-smb/workflows.yaml +43 -0
  113. package/config/templates/research-analysis/template.json +88 -0
  114. package/config/templates/social-media-ops/template.json +85 -0
  115. package/config/templates/video-production/template.json +123 -0
  116. package/dist/backend/backend/src/constants.d.ts +310 -84
  117. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  118. package/dist/backend/backend/src/constants.js +303 -89
  119. package/dist/backend/backend/src/constants.js.map +1 -1
  120. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  121. package/dist/backend/backend/src/controllers/chat/chat.controller.js +86 -26
  122. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  123. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts +81 -0
  124. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.d.ts.map +1 -0
  125. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js +234 -0
  126. package/dist/backend/backend/src/controllers/cloud/auth/auth.controller.js.map +1 -0
  127. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts +25 -0
  128. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.d.ts.map +1 -0
  129. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js +38 -0
  130. package/dist/backend/backend/src/controllers/cloud/auth/auth.routes.js.map +1 -0
  131. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts +69 -0
  132. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.d.ts.map +1 -0
  133. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js +165 -0
  134. package/dist/backend/backend/src/controllers/cloud/cloud-auth.controller.js.map +1 -0
  135. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts +23 -0
  136. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.d.ts.map +1 -0
  137. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js +32 -0
  138. package/dist/backend/backend/src/controllers/cloud/cloud-auth.routes.js.map +1 -0
  139. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts +52 -0
  140. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -0
  141. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +122 -0
  142. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -0
  143. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts +21 -0
  144. package/dist/backend/backend/src/controllers/cloud/cloud.routes.d.ts.map +1 -0
  145. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js +32 -0
  146. package/dist/backend/backend/src/controllers/cloud/cloud.routes.js.map +1 -0
  147. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts +42 -0
  148. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.d.ts.map +1 -0
  149. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js +138 -0
  150. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.controller.js.map +1 -0
  151. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts +23 -0
  152. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.d.ts.map +1 -0
  153. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js +34 -0
  154. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.routes.js.map +1 -0
  155. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts +43 -0
  156. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.d.ts.map +1 -0
  157. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js +9 -0
  158. package/dist/backend/backend/src/controllers/cloud/files/cloud-file.types.js.map +1 -0
  159. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts +7 -0
  160. package/dist/backend/backend/src/controllers/cloud/files/index.d.ts.map +1 -0
  161. package/dist/backend/backend/src/controllers/cloud/files/index.js +7 -0
  162. package/dist/backend/backend/src/controllers/cloud/files/index.js.map +1 -0
  163. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts +47 -0
  164. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.d.ts.map +1 -0
  165. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js +131 -0
  166. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.controller.js.map +1 -0
  167. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts +23 -0
  168. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.d.ts.map +1 -0
  169. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js +30 -0
  170. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.routes.js.map +1 -0
  171. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts +81 -0
  172. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.d.ts.map +1 -0
  173. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js +85 -0
  174. package/dist/backend/backend/src/controllers/cloud/h5/h5-entry.types.js.map +1 -0
  175. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts +7 -0
  176. package/dist/backend/backend/src/controllers/cloud/h5/index.d.ts.map +1 -0
  177. package/dist/backend/backend/src/controllers/cloud/h5/index.js +7 -0
  178. package/dist/backend/backend/src/controllers/cloud/h5/index.js.map +1 -0
  179. package/dist/backend/backend/src/controllers/cloud/index.d.ts +14 -0
  180. package/dist/backend/backend/src/controllers/cloud/index.d.ts.map +1 -0
  181. package/dist/backend/backend/src/controllers/cloud/index.js +14 -0
  182. package/dist/backend/backend/src/controllers/cloud/index.js.map +1 -0
  183. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts +7 -0
  184. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.d.ts.map +1 -0
  185. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js +7 -0
  186. package/dist/backend/backend/src/controllers/cloud/magic-moment/index.js.map +1 -0
  187. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts +45 -0
  188. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.d.ts.map +1 -0
  189. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js +155 -0
  190. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.controller.js.map +1 -0
  191. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts +25 -0
  192. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.d.ts.map +1 -0
  193. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js +32 -0
  194. package/dist/backend/backend/src/controllers/cloud/magic-moment/magic-moment.routes.js.map +1 -0
  195. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts +101 -0
  196. package/dist/backend/backend/src/controllers/cloud/relay.controller.d.ts.map +1 -0
  197. package/dist/backend/backend/src/controllers/cloud/relay.controller.js +343 -0
  198. package/dist/backend/backend/src/controllers/cloud/relay.controller.js.map +1 -0
  199. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts +29 -0
  200. package/dist/backend/backend/src/controllers/cloud/relay.routes.d.ts.map +1 -0
  201. package/dist/backend/backend/src/controllers/cloud/relay.routes.js +44 -0
  202. package/dist/backend/backend/src/controllers/cloud/relay.routes.js.map +1 -0
  203. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts +49 -0
  204. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.d.ts.map +1 -0
  205. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js +152 -0
  206. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.controller.js.map +1 -0
  207. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts +24 -0
  208. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.d.ts.map +1 -0
  209. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js +34 -0
  210. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.routes.js.map +1 -0
  211. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts +90 -0
  212. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.d.ts.map +1 -0
  213. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js +48 -0
  214. package/dist/backend/backend/src/controllers/cloud/tasks/cloud-task.types.js.map +1 -0
  215. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts +7 -0
  216. package/dist/backend/backend/src/controllers/cloud/tasks/index.d.ts.map +1 -0
  217. package/dist/backend/backend/src/controllers/cloud/tasks/index.js +7 -0
  218. package/dist/backend/backend/src/controllers/cloud/tasks/index.js.map +1 -0
  219. package/dist/backend/backend/src/controllers/marketplace/index.d.ts +2 -0
  220. package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
  221. package/dist/backend/backend/src/controllers/marketplace/index.js +3 -0
  222. package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
  223. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +12 -12
  224. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
  225. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +1 -18
  226. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  227. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  228. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +3 -0
  229. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  230. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts +111 -0
  231. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.d.ts.map +1 -0
  232. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js +220 -0
  233. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.controller.js.map +1 -0
  234. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts +33 -0
  235. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.d.ts.map +1 -0
  236. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js +50 -0
  237. package/dist/backend/backend/src/controllers/marketplace/template-marketplace.routes.js.map +1 -0
  238. package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
  239. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +4 -1
  240. package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
  241. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  242. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -2
  243. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  244. package/dist/backend/backend/src/controllers/payment/index.d.ts +7 -0
  245. package/dist/backend/backend/src/controllers/payment/index.d.ts.map +1 -0
  246. package/dist/backend/backend/src/controllers/payment/index.js +7 -0
  247. package/dist/backend/backend/src/controllers/payment/index.js.map +1 -0
  248. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts +57 -0
  249. package/dist/backend/backend/src/controllers/payment/payment.controller.d.ts.map +1 -0
  250. package/dist/backend/backend/src/controllers/payment/payment.controller.js +136 -0
  251. package/dist/backend/backend/src/controllers/payment/payment.controller.js.map +1 -0
  252. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts +27 -0
  253. package/dist/backend/backend/src/controllers/payment/payment.routes.d.ts.map +1 -0
  254. package/dist/backend/backend/src/controllers/payment/payment.routes.js +38 -0
  255. package/dist/backend/backend/src/controllers/payment/payment.routes.js.map +1 -0
  256. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts +109 -0
  257. package/dist/backend/backend/src/controllers/payment/payment.types.d.ts.map +1 -0
  258. package/dist/backend/backend/src/controllers/payment/payment.types.js +54 -0
  259. package/dist/backend/backend/src/controllers/payment/payment.types.js.map +1 -0
  260. package/dist/backend/backend/src/controllers/request-types.d.ts +34 -5
  261. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  262. package/dist/backend/backend/src/controllers/session/session.controller.d.ts +14 -0
  263. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  264. package/dist/backend/backend/src/controllers/session/session.controller.js +48 -0
  265. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  266. package/dist/backend/backend/src/controllers/session/session.routes.d.ts.map +1 -1
  267. package/dist/backend/backend/src/controllers/session/session.routes.js +3 -1
  268. package/dist/backend/backend/src/controllers/session/session.routes.js.map +1 -1
  269. package/dist/backend/backend/src/controllers/system/scheduler.controller.d.ts.map +1 -1
  270. package/dist/backend/backend/src/controllers/system/scheduler.controller.js +4 -3
  271. package/dist/backend/backend/src/controllers/system/scheduler.controller.js.map +1 -1
  272. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  273. package/dist/backend/backend/src/controllers/system/system.controller.js +13 -15
  274. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  275. package/dist/backend/backend/src/controllers/task-management/assignments.controller.d.ts.map +1 -1
  276. package/dist/backend/backend/src/controllers/task-management/assignments.controller.js.map +1 -1
  277. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  278. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +40 -4
  279. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  280. package/dist/backend/backend/src/controllers/task-management/tasks.controller.js.map +1 -1
  281. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  282. package/dist/backend/backend/src/controllers/team/team.controller.js +259 -13
  283. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  284. package/dist/backend/backend/src/controllers/template/index.d.ts +8 -0
  285. package/dist/backend/backend/src/controllers/template/index.d.ts.map +1 -0
  286. package/dist/backend/backend/src/controllers/template/index.js +8 -0
  287. package/dist/backend/backend/src/controllers/template/index.js.map +1 -0
  288. package/dist/backend/backend/src/controllers/template/template.controller.d.ts +63 -0
  289. package/dist/backend/backend/src/controllers/template/template.controller.d.ts.map +1 -0
  290. package/dist/backend/backend/src/controllers/template/template.controller.js +112 -0
  291. package/dist/backend/backend/src/controllers/template/template.controller.js.map +1 -0
  292. package/dist/backend/backend/src/controllers/template/template.routes.d.ts +24 -0
  293. package/dist/backend/backend/src/controllers/template/template.routes.d.ts.map +1 -0
  294. package/dist/backend/backend/src/controllers/template/template.routes.js +33 -0
  295. package/dist/backend/backend/src/controllers/template/template.routes.js.map +1 -0
  296. package/dist/backend/backend/src/index.d.ts.map +1 -1
  297. package/dist/backend/backend/src/index.js +105 -13
  298. package/dist/backend/backend/src/index.js.map +1 -1
  299. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js +3 -3
  300. package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js.map +1 -1
  301. package/dist/backend/backend/src/models/Team.d.ts +5 -0
  302. package/dist/backend/backend/src/models/Team.d.ts.map +1 -1
  303. package/dist/backend/backend/src/models/Team.js +24 -0
  304. package/dist/backend/backend/src/models/Team.js.map +1 -1
  305. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  306. package/dist/backend/backend/src/routes/api.routes.js +21 -0
  307. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  308. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +3 -19
  309. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  310. package/dist/backend/backend/src/services/agent/agent-registration.service.js +274 -398
  311. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  312. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -1
  313. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  314. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +11 -2
  315. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  316. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +2 -1
  317. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  318. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +38 -51
  319. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  320. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
  321. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
  322. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +496 -0
  323. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
  324. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts +70 -0
  325. package/dist/backend/backend/src/services/agent/openhands-runtime.service.d.ts.map +1 -0
  326. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js +131 -0
  327. package/dist/backend/backend/src/services/agent/openhands-runtime.service.js.map +1 -0
  328. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +21 -1
  329. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  330. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +32 -1
  331. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  332. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +77 -3
  333. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  334. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +281 -30
  335. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  336. package/dist/backend/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
  337. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +9 -0
  338. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  339. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +49 -2
  340. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  341. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +124 -2
  342. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  343. package/dist/backend/backend/src/services/chat/chat.service.d.ts +10 -2
  344. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  345. package/dist/backend/backend/src/services/chat/chat.service.js +49 -8
  346. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  347. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts +174 -0
  348. package/dist/backend/backend/src/services/cloud/auth/auth.service.d.ts.map +1 -0
  349. package/dist/backend/backend/src/services/cloud/auth/auth.service.js +402 -0
  350. package/dist/backend/backend/src/services/cloud/auth/auth.service.js.map +1 -0
  351. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts +110 -0
  352. package/dist/backend/backend/src/services/cloud/auth/auth.types.d.ts.map +1 -0
  353. package/dist/backend/backend/src/services/cloud/auth/auth.types.js +54 -0
  354. package/dist/backend/backend/src/services/cloud/auth/auth.types.js.map +1 -0
  355. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts +36 -0
  356. package/dist/backend/backend/src/services/cloud/auth/auth.utils.d.ts.map +1 -0
  357. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js +31 -0
  358. package/dist/backend/backend/src/services/cloud/auth/auth.utils.js.map +1 -0
  359. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts +47 -0
  360. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.d.ts.map +1 -0
  361. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js +116 -0
  362. package/dist/backend/backend/src/services/cloud/auth/jwt-auth.middleware.js.map +1 -0
  363. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts +61 -0
  364. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.d.ts.map +1 -0
  365. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js +203 -0
  366. package/dist/backend/backend/src/services/cloud/auth/supabase-auth.middleware.js.map +1 -0
  367. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts +46 -0
  368. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.d.ts.map +1 -0
  369. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js +95 -0
  370. package/dist/backend/backend/src/services/cloud/cloud-auth.middleware.js.map +1 -0
  371. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts +136 -0
  372. package/dist/backend/backend/src/services/cloud/cloud-auth.service.d.ts.map +1 -0
  373. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js +204 -0
  374. package/dist/backend/backend/src/services/cloud/cloud-auth.service.js.map +1 -0
  375. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +179 -0
  376. package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -0
  377. package/dist/backend/backend/src/services/cloud/cloud-client.service.js +237 -0
  378. package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -0
  379. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts +97 -0
  380. package/dist/backend/backend/src/services/cloud/cloud-file.service.d.ts.map +1 -0
  381. package/dist/backend/backend/src/services/cloud/cloud-file.service.js +184 -0
  382. package/dist/backend/backend/src/services/cloud/cloud-file.service.js.map +1 -0
  383. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts +114 -0
  384. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.d.ts.map +1 -0
  385. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js +196 -0
  386. package/dist/backend/backend/src/services/cloud/cloud-image-analysis.service.js.map +1 -0
  387. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts +118 -0
  388. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.d.ts.map +1 -0
  389. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js +322 -0
  390. package/dist/backend/backend/src/services/cloud/cloud-task-processor.service.js.map +1 -0
  391. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts +115 -0
  392. package/dist/backend/backend/src/services/cloud/cloud-task.service.d.ts.map +1 -0
  393. package/dist/backend/backend/src/services/cloud/cloud-task.service.js +265 -0
  394. package/dist/backend/backend/src/services/cloud/cloud-task.service.js.map +1 -0
  395. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts +175 -0
  396. package/dist/backend/backend/src/services/cloud/relay-client.service.d.ts.map +1 -0
  397. package/dist/backend/backend/src/services/cloud/relay-client.service.js +392 -0
  398. package/dist/backend/backend/src/services/cloud/relay-client.service.js.map +1 -0
  399. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts +87 -0
  400. package/dist/backend/backend/src/services/cloud/relay-crypto.service.d.ts.map +1 -0
  401. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js +140 -0
  402. package/dist/backend/backend/src/services/cloud/relay-crypto.service.js.map +1 -0
  403. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts +183 -0
  404. package/dist/backend/backend/src/services/cloud/relay-server.service.d.ts.map +1 -0
  405. package/dist/backend/backend/src/services/cloud/relay-server.service.js +523 -0
  406. package/dist/backend/backend/src/services/cloud/relay-server.service.js.map +1 -0
  407. package/dist/backend/backend/src/services/cloud/relay.types.d.ts +170 -0
  408. package/dist/backend/backend/src/services/cloud/relay.types.d.ts.map +1 -0
  409. package/dist/backend/backend/src/services/cloud/relay.types.js +69 -0
  410. package/dist/backend/backend/src/services/cloud/relay.types.js.map +1 -0
  411. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts +9 -1
  412. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -1
  413. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js +18 -4
  414. package/dist/backend/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -1
  415. package/dist/backend/backend/src/services/core/env.config.d.ts +147 -0
  416. package/dist/backend/backend/src/services/core/env.config.d.ts.map +1 -0
  417. package/dist/backend/backend/src/services/core/env.config.js +226 -0
  418. package/dist/backend/backend/src/services/core/env.config.js.map +1 -0
  419. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  420. package/dist/backend/backend/src/services/core/storage.service.js +5 -0
  421. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  422. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +20 -7
  423. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  424. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +35 -31
  425. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  426. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts +160 -0
  427. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.d.ts.map +1 -0
  428. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js +261 -0
  429. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation.service.js.map +1 -0
  430. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts +161 -0
  431. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.d.ts.map +1 -0
  432. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js +276 -0
  433. package/dist/backend/backend/src/services/hierarchy/hierarchy-reporting.service.js.map +1 -0
  434. package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
  435. package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
  436. package/dist/backend/backend/src/services/marketplace/index.js +2 -0
  437. package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
  438. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +2 -2
  439. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts +149 -0
  440. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.d.ts.map +1 -0
  441. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js +500 -0
  442. package/dist/backend/backend/src/services/marketplace/template-marketplace.service.js.map +1 -0
  443. package/dist/backend/backend/src/services/mcp-server.js +1 -1
  444. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  445. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts +90 -0
  446. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.d.ts.map +1 -0
  447. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js +233 -0
  448. package/dist/backend/backend/src/services/messaging/adapters/google-chat-messenger.adapter.js.map +1 -0
  449. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts +1 -1
  450. package/dist/backend/backend/src/services/messaging/messenger-adapter.interface.d.ts.map +1 -1
  451. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +1 -1
  452. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  453. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +28 -4
  454. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  455. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +113 -60
  456. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  457. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  458. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +29 -8
  459. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  460. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts +69 -0
  461. package/dist/backend/backend/src/services/payment/magic-moment.service.d.ts.map +1 -0
  462. package/dist/backend/backend/src/services/payment/magic-moment.service.js +158 -0
  463. package/dist/backend/backend/src/services/payment/magic-moment.service.js.map +1 -0
  464. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts +95 -0
  465. package/dist/backend/backend/src/services/payment/magic-moment.types.d.ts.map +1 -0
  466. package/dist/backend/backend/src/services/payment/magic-moment.types.js +91 -0
  467. package/dist/backend/backend/src/services/payment/magic-moment.types.js.map +1 -0
  468. package/dist/backend/backend/src/services/payment/stripe.service.d.ts +122 -0
  469. package/dist/backend/backend/src/services/payment/stripe.service.d.ts.map +1 -0
  470. package/dist/backend/backend/src/services/payment/stripe.service.js +403 -0
  471. package/dist/backend/backend/src/services/payment/stripe.service.js.map +1 -0
  472. package/dist/backend/backend/src/services/plugin/index.d.ts +9 -0
  473. package/dist/backend/backend/src/services/plugin/index.d.ts.map +1 -0
  474. package/dist/backend/backend/src/services/plugin/index.js +8 -0
  475. package/dist/backend/backend/src/services/plugin/index.js.map +1 -0
  476. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts +102 -0
  477. package/dist/backend/backend/src/services/plugin/plugin.service.d.ts.map +1 -0
  478. package/dist/backend/backend/src/services/plugin/plugin.service.js +179 -0
  479. package/dist/backend/backend/src/services/plugin/plugin.service.js.map +1 -0
  480. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts +88 -0
  481. package/dist/backend/backend/src/services/plugin/plugin.types.d.ts.map +1 -0
  482. package/dist/backend/backend/src/services/plugin/plugin.types.js +17 -0
  483. package/dist/backend/backend/src/services/plugin/plugin.types.js.map +1 -0
  484. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +17 -0
  485. package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -1
  486. package/dist/backend/backend/src/services/project/task-tracking.service.js +63 -0
  487. package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -1
  488. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +1 -1
  489. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  490. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +14 -0
  491. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  492. package/dist/backend/backend/src/services/session/session-command-helper.js +70 -4
  493. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  494. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  495. package/dist/backend/backend/src/services/settings/settings.service.js +1 -0
  496. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  497. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  498. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +15 -5
  499. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  500. package/dist/backend/backend/src/services/template/template.service.d.ts +153 -0
  501. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -0
  502. package/dist/backend/backend/src/services/template/template.service.js +372 -0
  503. package/dist/backend/backend/src/services/template/template.service.js.map +1 -0
  504. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +51 -0
  505. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  506. package/dist/backend/backend/src/services/workflow/scheduler.service.js +118 -2
  507. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  508. package/dist/backend/backend/src/types/chat.types.d.ts +39 -1
  509. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  510. package/dist/backend/backend/src/types/chat.types.js +45 -2
  511. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  512. package/dist/backend/backend/src/types/event-bus.types.d.ts +14 -2
  513. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  514. package/dist/backend/backend/src/types/event-bus.types.js +15 -0
  515. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  516. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts +101 -0
  517. package/dist/backend/backend/src/types/hierarchy-message.types.d.ts.map +1 -0
  518. package/dist/backend/backend/src/types/hierarchy-message.types.js +15 -0
  519. package/dist/backend/backend/src/types/hierarchy-message.types.js.map +1 -0
  520. package/dist/backend/backend/src/types/index.d.ts +54 -4
  521. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  522. package/dist/backend/backend/src/types/index.js.map +1 -1
  523. package/dist/backend/backend/src/types/marketplace.types.d.ts +99 -0
  524. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  525. package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
  526. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  527. package/dist/backend/backend/src/types/settings.types.js +4 -0
  528. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  529. package/dist/backend/backend/src/types/task-tracking.types.d.ts +79 -1
  530. package/dist/backend/backend/src/types/task-tracking.types.d.ts.map +1 -1
  531. package/dist/backend/backend/src/types/task-tracking.types.js.map +1 -1
  532. package/dist/backend/backend/src/types/team-template.types.d.ts +166 -0
  533. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -0
  534. package/dist/backend/backend/src/types/team-template.types.js +139 -0
  535. package/dist/backend/backend/src/types/team-template.types.js.map +1 -0
  536. package/dist/backend/backend/src/utils/async-handler.d.ts +20 -0
  537. package/dist/backend/backend/src/utils/async-handler.d.ts.map +1 -0
  538. package/dist/backend/backend/src/utils/async-handler.js +29 -0
  539. package/dist/backend/backend/src/utils/async-handler.js.map +1 -0
  540. package/dist/backend/backend/src/utils/defaultPrompts.d.ts +4 -4
  541. package/dist/backend/backend/src/utils/defaultPrompts.d.ts.map +1 -1
  542. package/dist/backend/backend/src/utils/defaultPrompts.js +16 -0
  543. package/dist/backend/backend/src/utils/defaultPrompts.js.map +1 -1
  544. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  545. package/dist/backend/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  546. package/dist/backend/backend/src/utils/gemini-trusted-folders.js +94 -0
  547. package/dist/backend/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  548. package/dist/backend/backend/src/utils/message-serializer.d.ts +74 -0
  549. package/dist/backend/backend/src/utils/message-serializer.d.ts.map +1 -0
  550. package/dist/backend/backend/src/utils/message-serializer.js +380 -0
  551. package/dist/backend/backend/src/utils/message-serializer.js.map +1 -0
  552. package/dist/backend/backend/src/utils/terminal-output.utils.d.ts +2 -1
  553. package/dist/backend/backend/src/utils/terminal-output.utils.d.ts.map +1 -1
  554. package/dist/backend/backend/src/utils/terminal-output.utils.js +2 -28
  555. package/dist/backend/backend/src/utils/terminal-output.utils.js.map +1 -1
  556. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts +183 -0
  557. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -0
  558. package/dist/backend/backend/src/utils/terminal-string-ops.js +726 -0
  559. package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -0
  560. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  561. package/dist/backend/backend/src/websocket/terminal.gateway.js +22 -27
  562. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  563. package/dist/backend/config/constants.d.ts +40 -1
  564. package/dist/backend/config/constants.d.ts.map +1 -1
  565. package/dist/backend/config/constants.js +41 -1
  566. package/dist/backend/config/constants.js.map +1 -1
  567. package/dist/backend/config/index.d.ts +2 -2
  568. package/dist/backend/config/index.d.ts.map +1 -1
  569. package/dist/backend/config/index.js +2 -2
  570. package/dist/backend/config/index.js.map +1 -1
  571. package/dist/cli/backend/src/constants.d.ts +310 -84
  572. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  573. package/dist/cli/backend/src/constants.js +303 -89
  574. package/dist/cli/backend/src/constants.js.map +1 -1
  575. package/dist/cli/backend/src/models/Team.d.ts +5 -0
  576. package/dist/cli/backend/src/models/Team.d.ts.map +1 -1
  577. package/dist/cli/backend/src/models/Team.js +24 -0
  578. package/dist/cli/backend/src/models/Team.js.map +1 -1
  579. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  580. package/dist/cli/backend/src/services/core/storage.service.js +5 -0
  581. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  582. package/dist/cli/backend/src/services/mcp-server.js +1 -1
  583. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  584. package/dist/cli/backend/src/types/chat.types.d.ts +39 -1
  585. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  586. package/dist/cli/backend/src/types/chat.types.js +45 -2
  587. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  588. package/dist/cli/backend/src/types/index.d.ts +54 -4
  589. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  590. package/dist/cli/backend/src/types/index.js.map +1 -1
  591. package/dist/cli/backend/src/types/settings.types.d.ts +1 -1
  592. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  593. package/dist/cli/backend/src/types/settings.types.js +4 -0
  594. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  595. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts +43 -0
  596. package/dist/cli/backend/src/utils/gemini-trusted-folders.d.ts.map +1 -0
  597. package/dist/cli/backend/src/utils/gemini-trusted-folders.js +94 -0
  598. package/dist/cli/backend/src/utils/gemini-trusted-folders.js.map +1 -0
  599. package/dist/cli/backend/src/utils/terminal-output.utils.d.ts +2 -1
  600. package/dist/cli/backend/src/utils/terminal-output.utils.d.ts.map +1 -1
  601. package/dist/cli/backend/src/utils/terminal-output.utils.js +2 -28
  602. package/dist/cli/backend/src/utils/terminal-output.utils.js.map +1 -1
  603. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts +183 -0
  604. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -0
  605. package/dist/cli/backend/src/utils/terminal-string-ops.js +726 -0
  606. package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -0
  607. package/dist/cli/cli/src/commands/onboard.d.ts +2 -1
  608. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  609. package/dist/cli/cli/src/commands/onboard.js +21 -8
  610. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  611. package/dist/cli/cli/src/commands/start.d.ts +1 -0
  612. package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
  613. package/dist/cli/cli/src/commands/start.js +71 -23
  614. package/dist/cli/cli/src/commands/start.js.map +1 -1
  615. package/dist/cli/cli/src/constants.d.ts +1 -1
  616. package/dist/cli/cli/src/constants.d.ts.map +1 -1
  617. package/dist/cli/cli/src/constants.js +1 -1
  618. package/dist/cli/cli/src/constants.js.map +1 -1
  619. package/dist/cli/cli/src/index.js +1 -0
  620. package/dist/cli/cli/src/index.js.map +1 -1
  621. package/dist/cli/cli/src/utils/project-scaffold.d.ts +109 -0
  622. package/dist/cli/cli/src/utils/project-scaffold.d.ts.map +1 -0
  623. package/dist/cli/cli/src/utils/project-scaffold.js +346 -0
  624. package/dist/cli/cli/src/utils/project-scaffold.js.map +1 -0
  625. package/dist/cli/cli/src/utils/templates.d.ts +7 -2
  626. package/dist/cli/cli/src/utils/templates.d.ts.map +1 -1
  627. package/dist/cli/cli/src/utils/templates.js +76 -7
  628. package/dist/cli/cli/src/utils/templates.js.map +1 -1
  629. package/dist/cli/config/constants.d.ts +40 -1
  630. package/dist/cli/config/constants.d.ts.map +1 -1
  631. package/dist/cli/config/constants.js +41 -1
  632. package/dist/cli/config/constants.js.map +1 -1
  633. package/dist/cli/config/index.d.ts +2 -2
  634. package/dist/cli/config/index.d.ts.map +1 -1
  635. package/dist/cli/config/index.js +2 -2
  636. package/dist/cli/config/index.js.map +1 -1
  637. package/frontend/dist/assets/index-510ab719.css +33 -0
  638. package/frontend/dist/assets/index-935cd846.js +4961 -0
  639. package/frontend/dist/index.html +2 -2
  640. package/package.json +9 -4
  641. package/frontend/dist/assets/index-a23214ae.js +0 -4919
  642. package/frontend/dist/assets/index-c407fe13.css +0 -33
@@ -0,0 +1,726 @@
1
+ /**
2
+ * Terminal string operations — regex-free replacements for terminal processing.
3
+ *
4
+ * Every function in this module uses only string primitives (indexOf, includes,
5
+ * startsWith, charCodeAt, character iteration) — NO regex. This makes the
6
+ * codebase immune to ReDoS by construction.
7
+ *
8
+ * @module terminal-string-ops
9
+ */
10
+ import { RUNTIME_TYPES } from '../constants.js';
11
+ // ─── Character sets ───────────────────────────────────────────────────────────
12
+ /** Braille spinner characters used by Claude Code to indicate processing. */
13
+ const SPINNER_CHARS = new Set([
14
+ 0x280B, // ⠋
15
+ 0x2819, // ⠙
16
+ 0x2839, // ⠹
17
+ 0x2838, // ⠸
18
+ 0x283C, // ⠼
19
+ 0x2834, // ⠴
20
+ 0x2826, // ⠦
21
+ 0x2827, // ⠧
22
+ 0x2807, // ⠇
23
+ 0x280F, // ⠏
24
+ ]);
25
+ /** Filled circle (⏺ U+23FA) — Claude Code working indicator. */
26
+ const WORKING_INDICATOR_CODE = 0x23FA; // ⏺
27
+ /** Box-drawing codepoints (U+2500–U+257F) plus ASCII equivalents. */
28
+ const BOX_DRAWING_MIN = 0x2500;
29
+ const BOX_DRAWING_MAX = 0x257F;
30
+ const EXTRA_BOX_CHARS = new Set([
31
+ 0x7C, // |
32
+ 0x2B, // +
33
+ 0x2D, // -
34
+ 0x2550, // ═
35
+ 0x2551, // ║
36
+ 0x256D, // ╭
37
+ 0x256E, // ╮
38
+ 0x2570, // ╰
39
+ 0x256F, // ╯
40
+ ]);
41
+ /** TUI border characters (vertical lines). */
42
+ const TUI_BORDER_CHARS = new Set([
43
+ 0x2502, // │
44
+ 0x2503, // ┃
45
+ 0x2551, // ║
46
+ 0x7C, // |
47
+ ]);
48
+ /** Processing status keywords (lowercased). */
49
+ const PROCESSING_KEYWORDS = [
50
+ 'thinking', 'processing', 'analyzing', 'running', 'calling', 'frosting',
51
+ ];
52
+ /** Gemini CLI processing keywords (lowercased). */
53
+ const GEMINI_PROCESSING_KEYWORDS = [
54
+ 'reading', 'thinking', 'processing', 'analyzing', 'generating', 'searching',
55
+ ];
56
+ // ─── Helper predicates ────────────────────────────────────────────────────────
57
+ /**
58
+ * Check if a codepoint is a box-drawing character.
59
+ */
60
+ function isBoxDrawing(cp) {
61
+ return (cp >= BOX_DRAWING_MIN && cp <= BOX_DRAWING_MAX) || EXTRA_BOX_CHARS.has(cp);
62
+ }
63
+ /**
64
+ * Check if a codepoint is a TUI border character.
65
+ */
66
+ function isTuiBorder(cp) {
67
+ return TUI_BORDER_CHARS.has(cp);
68
+ }
69
+ /**
70
+ * Check if a codepoint is whitespace (space or tab).
71
+ */
72
+ function isWhitespace(cp) {
73
+ return cp === 0x20 || cp === 0x09; // space or tab
74
+ }
75
+ // ─── stripAnsiCodes ───────────────────────────────────────────────────────────
76
+ /**
77
+ * Strip ANSI escape codes from PTY output using a single-pass state machine.
78
+ *
79
+ * Handles CSI sequences, OSC sequences, single-char escapes, and orphaned
80
+ * CSI fragments from PTY buffer boundary splits. Cursor-forward (C) sequences
81
+ * are replaced with a space to preserve word boundaries.
82
+ *
83
+ * O(n) time, O(n) space. No regex.
84
+ *
85
+ * @param content - Raw PTY output containing ANSI codes
86
+ * @returns Clean text with ANSI codes removed
87
+ */
88
+ export function stripAnsiCodes(content) {
89
+ const len = content.length;
90
+ const out = [];
91
+ let i = 0;
92
+ while (i < len) {
93
+ const ch = content.charCodeAt(i);
94
+ // ESC character (0x1B)
95
+ if (ch === 0x1B) {
96
+ i++;
97
+ if (i >= len)
98
+ break;
99
+ const next = content.charCodeAt(i);
100
+ // CSI sequence: ESC [
101
+ if (next === 0x5B) { // [
102
+ i++;
103
+ // Parse CSI: optional ?, parameter bytes (0x30-0x3F), intermediate (0x20-0x2F), final (0x40-0x7E)
104
+ const hasQuestion = i < len && content.charCodeAt(i) === 0x3F; // ?
105
+ if (hasQuestion)
106
+ i++;
107
+ // Collect parameter + intermediate bytes
108
+ let paramStart = i;
109
+ while (i < len) {
110
+ const c = content.charCodeAt(i);
111
+ if (c >= 0x30 && c <= 0x3F) {
112
+ i++;
113
+ continue;
114
+ } // parameter bytes (digits, ;, <=>?)
115
+ if (c >= 0x20 && c <= 0x2F) {
116
+ i++;
117
+ continue;
118
+ } // intermediate bytes
119
+ break;
120
+ }
121
+ // Final byte
122
+ if (i < len) {
123
+ const final = content.charCodeAt(i);
124
+ if (final >= 0x40 && final <= 0x7E) {
125
+ // Cursor forward (C) → emit space
126
+ if (!hasQuestion && final === 0x43) { // 'C'
127
+ out.push(' ');
128
+ }
129
+ i++;
130
+ continue;
131
+ }
132
+ }
133
+ // Malformed CSI — skip what we consumed
134
+ continue;
135
+ }
136
+ // OSC sequence: ESC ]
137
+ if (next === 0x5D) { // ]
138
+ i++;
139
+ // Consume until BEL (0x07) or ST (ESC \)
140
+ while (i < len) {
141
+ const c = content.charCodeAt(i);
142
+ if (c === 0x07) {
143
+ i++;
144
+ break;
145
+ } // BEL
146
+ if (c === 0x1B && i + 1 < len && content.charCodeAt(i + 1) === 0x5C) {
147
+ i += 2; // ST = ESC backslash
148
+ break;
149
+ }
150
+ i++;
151
+ }
152
+ continue;
153
+ }
154
+ // Other escape sequences: ESC followed by one character
155
+ // Some are two bytes total (ESC + char), skip the next char
156
+ if (next >= 0x20 && next <= 0x7E) {
157
+ i++;
158
+ // Check if there's a trailing parameter byte
159
+ if (i < len) {
160
+ const trailing = content.charCodeAt(i);
161
+ if (trailing >= 0x20 && trailing <= 0x7E && trailing !== 0x5B && trailing !== 0x5D) {
162
+ // Single trailing param (e.g., ESC ( B)
163
+ i++;
164
+ }
165
+ }
166
+ }
167
+ continue;
168
+ }
169
+ // Orphaned CSI fragments: [ followed by digits then a CSI final byte
170
+ // These occur when ESC lands in one PTY chunk and [params... in the next
171
+ if (ch === 0x5B && i + 1 < len) { // [
172
+ const nextCh = content.charCodeAt(i + 1);
173
+ // [? private mode fragment
174
+ if (nextCh === 0x3F) { // ?
175
+ let j = i + 2;
176
+ while (j < len) {
177
+ const c = content.charCodeAt(j);
178
+ if ((c >= 0x30 && c <= 0x39) || c === 0x3B) {
179
+ j++;
180
+ continue;
181
+ } // digits or ;
182
+ break;
183
+ }
184
+ if (j > i + 2 && j < len) {
185
+ const final = content.charCodeAt(j);
186
+ if (final >= 0x41 && final <= 0x7A) { // A-z
187
+ i = j + 1;
188
+ continue;
189
+ }
190
+ }
191
+ }
192
+ // [digits... followed by CSI final byte
193
+ if (nextCh >= 0x30 && nextCh <= 0x39) { // digit
194
+ let j = i + 1;
195
+ let hasDigit = false;
196
+ while (j < len) {
197
+ const c = content.charCodeAt(j);
198
+ if ((c >= 0x30 && c <= 0x39) || c === 0x3B) { // digit or ;
199
+ if (c >= 0x30 && c <= 0x39)
200
+ hasDigit = true;
201
+ j++;
202
+ continue;
203
+ }
204
+ break;
205
+ }
206
+ if (hasDigit && j < len) {
207
+ const final = content.charCodeAt(j);
208
+ // A-B, J, K, H, f, m are common CSI finals
209
+ if ((final >= 0x41 && final <= 0x42) || // A-B
210
+ final === 0x43 || // C (cursor forward)
211
+ final === 0x4A || // J
212
+ final === 0x4B || // K
213
+ final === 0x48 || // H
214
+ final === 0x66 || // f
215
+ final === 0x6D // m
216
+ ) {
217
+ if (final === 0x43) { // C = cursor forward → space
218
+ out.push(' ');
219
+ }
220
+ i = j + 1;
221
+ continue;
222
+ }
223
+ }
224
+ }
225
+ }
226
+ // CR+LF normalization
227
+ if (ch === 0x0D) { // \r
228
+ if (i + 1 < len && content.charCodeAt(i + 1) === 0x0A) { // \r\n
229
+ out.push('\n');
230
+ i += 2;
231
+ }
232
+ else {
233
+ out.push('\n');
234
+ i++;
235
+ }
236
+ continue;
237
+ }
238
+ // Remove control characters except tab (0x09) and newline (0x0A)
239
+ if ((ch >= 0x00 && ch <= 0x08) ||
240
+ ch === 0x0B || ch === 0x0C ||
241
+ (ch >= 0x0E && ch <= 0x1F) ||
242
+ ch === 0x7F) {
243
+ i++;
244
+ continue;
245
+ }
246
+ // Normal character — emit
247
+ out.push(content[i]);
248
+ i++;
249
+ }
250
+ return out.join('');
251
+ }
252
+ // ─── stripBoxDrawing ──────────────────────────────────────────────────────────
253
+ /**
254
+ * Strip box-drawing characters and decorative borders from both ends of a line.
255
+ *
256
+ * @param line - A single terminal line
257
+ * @returns The line with leading/trailing box-drawing chars and whitespace removed
258
+ */
259
+ export function stripBoxDrawing(line) {
260
+ let start = 0;
261
+ let end = line.length;
262
+ // Strip from start
263
+ while (start < end) {
264
+ const cp = line.codePointAt(start);
265
+ if (isBoxDrawing(cp) || isWhitespace(cp)) {
266
+ start += cp > 0xFFFF ? 2 : 1;
267
+ }
268
+ else {
269
+ break;
270
+ }
271
+ }
272
+ // Strip from end
273
+ while (end > start) {
274
+ // Walk back one codepoint
275
+ const prevIdx = end - 1;
276
+ const cp = line.codePointAt(prevIdx);
277
+ // Handle surrogate pairs
278
+ if (prevIdx > start && cp >= 0xDC00 && cp <= 0xDFFF) {
279
+ const highIdx = prevIdx - 1;
280
+ const fullCp = line.codePointAt(highIdx);
281
+ if (isBoxDrawing(fullCp) || isWhitespace(fullCp)) {
282
+ end = highIdx;
283
+ continue;
284
+ }
285
+ break;
286
+ }
287
+ if (isBoxDrawing(cp) || isWhitespace(cp)) {
288
+ end = prevIdx;
289
+ }
290
+ else {
291
+ break;
292
+ }
293
+ }
294
+ return line.slice(start, end);
295
+ }
296
+ // ─── stripTuiLineBorders ──────────────────────────────────────────────────────
297
+ /**
298
+ * Strip TUI line border characters (│ ┃ ║ |) and surrounding whitespace
299
+ * from both ends of a line.
300
+ *
301
+ * @param line - A single terminal line
302
+ * @returns The line with leading/trailing border chars removed
303
+ */
304
+ export function stripTuiLineBorders(line) {
305
+ let start = 0;
306
+ let end = line.length;
307
+ // Strip from start
308
+ while (start < end) {
309
+ const cp = line.charCodeAt(start);
310
+ if (isTuiBorder(cp) || isWhitespace(cp)) {
311
+ start++;
312
+ }
313
+ else {
314
+ // Handle multi-byte border chars
315
+ const fullCp = line.codePointAt(start);
316
+ if (isTuiBorder(fullCp) || isWhitespace(fullCp)) {
317
+ start += fullCp > 0xFFFF ? 2 : 1;
318
+ }
319
+ else {
320
+ break;
321
+ }
322
+ }
323
+ }
324
+ // Strip from end
325
+ while (end > start) {
326
+ const cp = line.charCodeAt(end - 1);
327
+ if (isTuiBorder(cp) || isWhitespace(cp)) {
328
+ end--;
329
+ }
330
+ else {
331
+ break;
332
+ }
333
+ }
334
+ return line.slice(start, end);
335
+ }
336
+ // ─── matchTuiPromptLine ───────────────────────────────────────────────────────
337
+ /**
338
+ * Check if a line matches the pattern of a TUI prompt line: optional border
339
+ * chars, then > followed by content. Returns the content after > prompt or null.
340
+ *
341
+ * Replaces the prompt line regex.
342
+ *
343
+ * @param line - A single terminal line
344
+ * @returns The content after > prompt, or null if not a prompt line
345
+ */
346
+ export function matchTuiPromptLine(line) {
347
+ let i = 0;
348
+ const len = line.length;
349
+ // Skip leading border chars and whitespace
350
+ while (i < len) {
351
+ const cp = line.charCodeAt(i);
352
+ if (isTuiBorder(cp) || isWhitespace(cp)) {
353
+ i++;
354
+ }
355
+ else {
356
+ break;
357
+ }
358
+ }
359
+ // Check for prompt characters followed by space:
360
+ // > (0x3E greater-than), › (0x203A single right-pointing angle quotation),
361
+ // ❯ (0x276F heavy right-pointing angle quotation mark),
362
+ // ! (0x21 exclamation mark — Gemini CLI shell mode prompt)
363
+ if (i < len) {
364
+ const cp = line.codePointAt(i);
365
+ if (cp === 0x3E || cp === 0x203A || cp === 0x276F || cp === 0x21) {
366
+ i += cp > 0xFFFF ? 2 : 1;
367
+ if (i < len && isWhitespace(line.charCodeAt(i))) {
368
+ i++;
369
+ // Skip additional whitespace
370
+ while (i < len && isWhitespace(line.charCodeAt(i)))
371
+ i++;
372
+ if (i < len) {
373
+ return line.slice(i);
374
+ }
375
+ }
376
+ }
377
+ }
378
+ return null;
379
+ }
380
+ // ─── Prompt detection ─────────────────────────────────────────────────────────
381
+ /**
382
+ * Check if a single line looks like an agent prompt.
383
+ *
384
+ * Claude Code: ❯, ⏵, $ alone (or with box-drawing), or ❯❯
385
+ * Gemini CLI: > or ! or bordered │ >, or "Type your message" / "YOLO mode"
386
+ * Codex CLI: › or bordered │ ›
387
+ *
388
+ * @param line - A single non-empty terminal line (already stripped of ANSI)
389
+ * @param runtimeType - The agent runtime type
390
+ * @returns true if the line looks like a prompt
391
+ */
392
+ export function isPromptLine(line, runtimeType) {
393
+ const trimmed = line.trim();
394
+ if (trimmed.length === 0)
395
+ return false;
396
+ const stripped = stripBoxDrawing(trimmed);
397
+ const isGemini = runtimeType === RUNTIME_TYPES.GEMINI_CLI;
398
+ const isClaudeCode = runtimeType === RUNTIME_TYPES.CLAUDE_CODE;
399
+ const isCodex = runtimeType === RUNTIME_TYPES.CODEX_CLI;
400
+ // Claude Code prompts
401
+ if (!isGemini && !isCodex) {
402
+ if (trimmed === '❯' || trimmed === '⏵' || trimmed === '$' || trimmed === '›' ||
403
+ stripped === '❯' || stripped === '⏵' || stripped === '$' || stripped === '›') {
404
+ return true;
405
+ }
406
+ // ❯❯ bypass permissions prompt
407
+ if (trimmed.startsWith('❯❯'))
408
+ return true;
409
+ // › prompt with trailing text (e.g., "› some-text")
410
+ if (trimmed.startsWith('› ') || stripped.startsWith('› '))
411
+ return true;
412
+ }
413
+ // Codex CLI prompts
414
+ if (isCodex) {
415
+ if (trimmed === '›' || trimmed.startsWith('› ') ||
416
+ stripped === '›' || stripped.startsWith('› '))
417
+ return true;
418
+ // Bordered > prompt (only in TUI box-drawing context)
419
+ // stripped already has box-drawing chars removed, so if the original
420
+ // had borders and the stripped starts with > , that's a bordered prompt
421
+ if (trimmed !== stripped && (stripped.startsWith('> ') || stripped === '>'))
422
+ return true;
423
+ }
424
+ // Gemini CLI prompts (and fallback for unknown runtime)
425
+ if (!isClaudeCode && !isCodex) {
426
+ if (trimmed === '>' || trimmed === '!' ||
427
+ trimmed.startsWith('> ') || trimmed.startsWith('! ') ||
428
+ stripped === '>' || stripped === '!' ||
429
+ stripped.startsWith('> ') || stripped.startsWith('! ')) {
430
+ return true;
431
+ }
432
+ // Textual prompt placeholders
433
+ const lower = trimmed.toLowerCase();
434
+ if (lower.includes('type your message') || lower.includes('yolo mode')) {
435
+ return true;
436
+ }
437
+ }
438
+ return false;
439
+ }
440
+ /**
441
+ * Check if the agent appears to be at an input prompt by scanning terminal output.
442
+ *
443
+ * Scans the last 10 non-empty lines for prompt patterns, then checks for busy
444
+ * indicators to distinguish idle-at-prompt from actively-processing.
445
+ *
446
+ * @param output - Terminal output text (already stripped of ANSI codes)
447
+ * @param runtimeType - The agent runtime type
448
+ * @returns true if the agent appears idle at a prompt
449
+ */
450
+ export function isAgentAtPrompt(output, runtimeType) {
451
+ if (!output || typeof output !== 'string')
452
+ return false;
453
+ const tailSection = output.slice(-5000);
454
+ const lines = tailSection.split('\n').filter(l => l.trim().length > 0);
455
+ const linesToCheck = lines.slice(-10);
456
+ // Check for prompt indicators
457
+ const hasPrompt = linesToCheck.some(line => isPromptLine(line, runtimeType));
458
+ if (hasPrompt)
459
+ return true;
460
+ // No prompt found — check if agent is still processing
461
+ const recentText = linesToCheck.join('\n');
462
+ // Processing with text check
463
+ if (containsProcessingIndicator(recentText))
464
+ return false;
465
+ // Busy status bar check
466
+ if (containsBusyStatusBar(recentText))
467
+ return false;
468
+ return false;
469
+ }
470
+ // ─── Processing indicator detection ───────────────────────────────────────────
471
+ /**
472
+ * Check if text contains spinner characters or the working indicator (⏺).
473
+ * This is the "spinner-only" check (no keyword matching).
474
+ *
475
+ * Replaces TERMINAL_PATTERNS.PROCESSING regex.
476
+ *
477
+ * @param text - Text to check
478
+ * @returns true if any spinner/working indicator character is found
479
+ */
480
+ export function containsSpinnerOrWorkingIndicator(text) {
481
+ for (let i = 0; i < text.length; i++) {
482
+ const cp = text.codePointAt(i);
483
+ if (SPINNER_CHARS.has(cp) || cp === WORKING_INDICATOR_CODE)
484
+ return true;
485
+ if (cp > 0xFFFF)
486
+ i++; // skip surrogate pair
487
+ }
488
+ return false;
489
+ }
490
+ /**
491
+ * Check if text contains processing indicators including spinner chars,
492
+ * working indicator (⏺), AND status keywords.
493
+ *
494
+ * Replaces TERMINAL_PATTERNS.PROCESSING_WITH_TEXT regex.
495
+ *
496
+ * @param text - Text to check
497
+ * @returns true if any processing indicator is found
498
+ */
499
+ export function containsProcessingIndicator(text) {
500
+ // Check spinner/working indicator chars
501
+ if (containsSpinnerOrWorkingIndicator(text))
502
+ return true;
503
+ // Check keywords (case-insensitive)
504
+ const lower = text.toLowerCase();
505
+ for (const keyword of PROCESSING_KEYWORDS) {
506
+ if (lower.includes(keyword))
507
+ return true;
508
+ }
509
+ return false;
510
+ }
511
+ /**
512
+ * Check if text contains the "esc to interrupt" busy status bar.
513
+ *
514
+ * Replaces TERMINAL_PATTERNS.BUSY_STATUS_BAR regex.
515
+ * Manually matches "esc" then whitespace then "to" then whitespace then "interrupt".
516
+ *
517
+ * @param text - Text to check
518
+ * @returns true if the busy status bar text is found
519
+ */
520
+ export function containsBusyStatusBar(text) {
521
+ const lower = text.toLowerCase();
522
+ let idx = 0;
523
+ while (true) {
524
+ idx = lower.indexOf('esc', idx);
525
+ if (idx === -1)
526
+ return false;
527
+ let pos = idx + 3;
528
+ // Skip whitespace (at least one required)
529
+ if (pos >= lower.length || !isWhitespaceChar(lower.charCodeAt(pos))) {
530
+ idx++;
531
+ continue;
532
+ }
533
+ while (pos < lower.length && isWhitespaceChar(lower.charCodeAt(pos)))
534
+ pos++;
535
+ // Match "to"
536
+ if (pos + 2 > lower.length || lower[pos] !== 't' || lower[pos + 1] !== 'o') {
537
+ idx++;
538
+ continue;
539
+ }
540
+ pos += 2;
541
+ // Skip whitespace (at least one required)
542
+ if (pos >= lower.length || !isWhitespaceChar(lower.charCodeAt(pos))) {
543
+ idx++;
544
+ continue;
545
+ }
546
+ while (pos < lower.length && isWhitespaceChar(lower.charCodeAt(pos)))
547
+ pos++;
548
+ // Match "interrupt"
549
+ const target = 'interrupt';
550
+ if (pos + target.length > lower.length) {
551
+ idx++;
552
+ continue;
553
+ }
554
+ let matched = true;
555
+ for (let k = 0; k < target.length; k++) {
556
+ if (lower[pos + k] !== target[k]) {
557
+ matched = false;
558
+ break;
559
+ }
560
+ }
561
+ if (matched)
562
+ return true;
563
+ idx++;
564
+ }
565
+ }
566
+ /**
567
+ * Check if a character code is whitespace (space, tab, newline, carriage return).
568
+ */
569
+ function isWhitespaceChar(cp) {
570
+ return cp === 0x20 || cp === 0x09 || cp === 0x0A || cp === 0x0D;
571
+ }
572
+ /**
573
+ * Check if text contains Claude Code's Rewind mode.
574
+ *
575
+ * Replaces TERMINAL_PATTERNS.REWIND_MODE regex.
576
+ * Checks for "Rewind" then "Restore the code" appearing after it.
577
+ *
578
+ * @param text - Text to check
579
+ * @returns true if Rewind mode is detected
580
+ */
581
+ export function containsRewindMode(text) {
582
+ const rewindIdx = text.indexOf('Rewind');
583
+ if (rewindIdx === -1)
584
+ return false;
585
+ return text.indexOf('Restore the code', rewindIdx + 6) !== -1;
586
+ }
587
+ /**
588
+ * Check if text contains Gemini CLI processing keywords.
589
+ *
590
+ * Replaces inline Gemini keyword regex in sendMessageWithRetry.
591
+ *
592
+ * @param text - Text to check
593
+ * @returns true if any Gemini processing keyword is found
594
+ */
595
+ export function containsGeminiProcessingKeywords(text) {
596
+ const lower = text.toLowerCase();
597
+ for (const keyword of GEMINI_PROCESSING_KEYWORDS) {
598
+ if (lower.includes(keyword))
599
+ return true;
600
+ }
601
+ return false;
602
+ }
603
+ /**
604
+ * Extract all marker blocks bounded by open/close tag pairs from a buffer.
605
+ *
606
+ * Replaces NOTIFY/SLACK_NOTIFY marker regex patterns.
607
+ *
608
+ * @param buf - The text buffer to search
609
+ * @param openTag - Opening tag string (e.g., "[NOTIFY]")
610
+ * @param closeTag - Closing tag string (e.g., "[/NOTIFY]")
611
+ * @returns Array of extracted marker blocks
612
+ */
613
+ export function extractMarkerBlocks(buf, openTag, closeTag) {
614
+ const results = [];
615
+ let searchStart = 0;
616
+ while (true) {
617
+ const openIdx = buf.indexOf(openTag, searchStart);
618
+ if (openIdx === -1)
619
+ break;
620
+ const contentStart = openIdx + openTag.length;
621
+ const closeIdx = buf.indexOf(closeTag, contentStart);
622
+ if (closeIdx === -1)
623
+ break;
624
+ const content = buf.slice(contentStart, closeIdx).trim();
625
+ const endIndex = closeIdx + closeTag.length;
626
+ results.push({ content, startIndex: openIdx, endIndex });
627
+ searchStart = endIndex;
628
+ }
629
+ return results;
630
+ }
631
+ /**
632
+ * Extract all [CHAT_RESPONSE]...[/CHAT_RESPONSE] blocks from a buffer.
633
+ * Handles the optional :conversationId suffix: [CHAT_RESPONSE:abc123].
634
+ *
635
+ * Replaces the CHAT_RESPONSE regex pattern.
636
+ *
637
+ * @param buf - The text buffer to search
638
+ * @returns Array of extracted chat response blocks
639
+ */
640
+ export function extractChatResponseBlocks(buf) {
641
+ const results = [];
642
+ const openPrefix = '[CHAT_RESPONSE';
643
+ const closeTag = '[/CHAT_RESPONSE]';
644
+ let searchStart = 0;
645
+ while (true) {
646
+ const openIdx = buf.indexOf(openPrefix, searchStart);
647
+ if (openIdx === -1)
648
+ break;
649
+ let pos = openIdx + openPrefix.length;
650
+ // Parse optional :conversationId
651
+ let conversationId = null;
652
+ if (pos < buf.length && buf.charCodeAt(pos) === 0x3A) { // :
653
+ pos++;
654
+ const closeBracket = buf.indexOf(']', pos);
655
+ if (closeBracket === -1)
656
+ break;
657
+ conversationId = buf.slice(pos, closeBracket) || null;
658
+ pos = closeBracket + 1;
659
+ }
660
+ else if (pos < buf.length && buf.charCodeAt(pos) === 0x5D) { // ]
661
+ pos++;
662
+ }
663
+ else {
664
+ // Malformed — skip past this occurrence
665
+ searchStart = openIdx + openPrefix.length;
666
+ continue;
667
+ }
668
+ // Find close tag
669
+ const closeIdx = buf.indexOf(closeTag, pos);
670
+ if (closeIdx === -1)
671
+ break;
672
+ const content = buf.slice(pos, closeIdx).trim();
673
+ const endIndex = closeIdx + closeTag.length;
674
+ results.push({ conversationId, content, startIndex: openIdx, endIndex });
675
+ searchStart = endIndex;
676
+ }
677
+ return results;
678
+ }
679
+ // ─── Conversation ID extraction ───────────────────────────────────────────────
680
+ /**
681
+ * Extract conversation ID from a [CHAT:convId] marker in text.
682
+ *
683
+ * Replaces CHAT_ROUTING_CONSTANTS.CONVERSATION_ID_PATTERN regex.
684
+ *
685
+ * @param text - Text to search
686
+ * @returns The conversation ID or null if not found
687
+ */
688
+ export function extractConversationId(text) {
689
+ const marker = '[CHAT:';
690
+ const idx = text.indexOf(marker);
691
+ if (idx === -1)
692
+ return null;
693
+ const start = idx + marker.length;
694
+ const end = text.indexOf(']', start);
695
+ if (end === -1)
696
+ return null;
697
+ const id = text.slice(start, end);
698
+ return id.length > 0 ? id : null;
699
+ }
700
+ /**
701
+ * Extract and remove the [CHAT:convId] prefix from a message.
702
+ *
703
+ * Replaces the CHAT prefix regex.
704
+ *
705
+ * @param message - Message that may start with [CHAT:...]
706
+ * @returns Object with the prefix length (0 if no prefix) and the content after prefix
707
+ */
708
+ export function extractChatPrefix(message) {
709
+ if (!message.startsWith('[CHAT:')) {
710
+ return { prefixLength: 0, content: message };
711
+ }
712
+ const closeBracket = message.indexOf(']');
713
+ if (closeBracket === -1) {
714
+ return { prefixLength: 0, content: message };
715
+ }
716
+ let afterBracket = closeBracket + 1;
717
+ // Skip whitespace after ]
718
+ while (afterBracket < message.length && isWhitespaceChar(message.charCodeAt(afterBracket))) {
719
+ afterBracket++;
720
+ }
721
+ return {
722
+ prefixLength: afterBracket,
723
+ content: message.slice(afterBracket),
724
+ };
725
+ }
726
+ //# sourceMappingURL=terminal-string-ops.js.map