crewly 1.0.8 → 1.0.11

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 (249) hide show
  1. package/config/constants.ts +59 -0
  2. package/config/index.ts +2 -0
  3. package/config/roles/architect/prompt.md +8 -5
  4. package/config/roles/backend-developer/prompt.md +24 -5
  5. package/config/roles/designer/prompt.md +6 -5
  6. package/config/roles/developer/prompt.md +27 -5
  7. package/config/roles/frontend-developer/prompt.md +24 -5
  8. package/config/roles/fullstack-dev/prompt.md +24 -5
  9. package/config/roles/generalist/prompt.md +9 -5
  10. package/config/roles/orchestrator/prompt.md +126 -15
  11. package/config/roles/product-manager/prompt.md +6 -5
  12. package/config/roles/qa/prompt.md +24 -5
  13. package/config/roles/qa-engineer/prompt.md +24 -5
  14. package/config/roles/sales/prompt.md +6 -5
  15. package/config/roles/support/prompt.md +6 -5
  16. package/config/roles/tpm/prompt.md +6 -5
  17. package/config/skills/agent/_common/lib.sh +4 -0
  18. package/config/skills/agent/core/accept-task/execute.sh +21 -0
  19. package/config/skills/agent/core/accept-task/instructions.md +20 -0
  20. package/config/skills/agent/core/accept-task/skill.json +20 -0
  21. package/config/skills/agent/core/block-task/execute.sh +26 -0
  22. package/config/skills/agent/core/block-task/instructions.md +22 -0
  23. package/config/skills/agent/core/block-task/skill.json +20 -0
  24. package/config/skills/agent/core/check-quality-gates/execute.sh +20 -0
  25. package/config/skills/agent/core/check-quality-gates/instructions.md +23 -0
  26. package/config/skills/agent/core/check-quality-gates/skill.json +20 -0
  27. package/config/skills/agent/core/complete-task/execute.sh +29 -0
  28. package/config/skills/agent/core/complete-task/instructions.md +53 -0
  29. package/config/skills/agent/core/complete-task/skill.json +20 -0
  30. package/config/skills/agent/core/get-my-context/execute.sh +23 -0
  31. package/config/skills/agent/core/get-my-context/instructions.md +21 -0
  32. package/config/skills/agent/core/get-my-context/skill.json +20 -0
  33. package/config/skills/agent/core/get-sops/execute.sh +24 -0
  34. package/config/skills/agent/core/get-sops/instructions.md +21 -0
  35. package/config/skills/agent/core/get-sops/skill.json +20 -0
  36. package/config/skills/agent/core/get-team-status/execute.sh +8 -0
  37. package/config/skills/agent/core/get-team-status/instructions.md +17 -0
  38. package/config/skills/agent/core/get-team-status/skill.json +20 -0
  39. package/config/skills/agent/core/heartbeat/execute.sh +22 -0
  40. package/config/skills/agent/core/heartbeat/instructions.md +23 -0
  41. package/config/skills/agent/core/heartbeat/skill.json +20 -0
  42. package/config/skills/agent/core/manage-knowledge/execute.sh +60 -0
  43. package/config/skills/agent/core/manage-knowledge/instructions.md +46 -0
  44. package/config/skills/agent/core/marketplace-search/execute.sh +77 -0
  45. package/config/skills/agent/core/marketplace-search/instructions.md +59 -0
  46. package/config/skills/agent/core/marketplace-search/skill.json +20 -0
  47. package/config/skills/agent/core/query-knowledge/execute.sh +30 -0
  48. package/config/skills/agent/core/query-knowledge/instructions.md +47 -0
  49. package/config/skills/agent/core/query-knowledge/skill.json +20 -0
  50. package/config/skills/agent/core/read-task/execute.sh +15 -0
  51. package/config/skills/agent/core/read-task/instructions.md +19 -0
  52. package/config/skills/agent/core/read-task/skill.json +20 -0
  53. package/config/skills/agent/core/recall/execute.sh +24 -0
  54. package/config/skills/agent/core/recall/instructions.md +23 -0
  55. package/config/skills/agent/core/recall/skill.json +20 -0
  56. package/config/skills/agent/core/record-learning/execute.sh +29 -0
  57. package/config/skills/agent/core/record-learning/instructions.md +24 -0
  58. package/config/skills/agent/core/record-learning/skill.json +20 -0
  59. package/config/skills/agent/core/register-self/execute.sh +28 -0
  60. package/config/skills/agent/core/register-self/instructions.md +18 -0
  61. package/config/skills/agent/core/register-self/skill.json +20 -0
  62. package/config/skills/agent/core/remember/execute.sh +29 -0
  63. package/config/skills/agent/core/remember/instructions.md +24 -0
  64. package/config/skills/agent/core/remember/skill.json +20 -0
  65. package/config/skills/agent/core/report-progress/execute.sh +28 -0
  66. package/config/skills/agent/core/report-progress/instructions.md +25 -0
  67. package/config/skills/agent/core/report-progress/skill.json +20 -0
  68. package/config/skills/agent/core/report-status/execute.sh +35 -0
  69. package/config/skills/agent/core/report-status/instructions.md +36 -0
  70. package/config/skills/agent/core/report-status/skill.json +20 -0
  71. package/config/skills/agent/core/send-chat-response/execute.sh +26 -0
  72. package/config/skills/agent/core/send-chat-response/instructions.md +22 -0
  73. package/config/skills/agent/core/send-chat-response/skill.json +20 -0
  74. package/config/skills/agent/core/send-message/execute.sh +17 -0
  75. package/config/skills/agent/core/send-message/instructions.md +20 -0
  76. package/config/skills/agent/core/send-message/skill.json +20 -0
  77. package/config/skills/orchestrator/delegate-task/execute.sh +1 -1
  78. package/config/skills/orchestrator/schedule-check/instructions.md +6 -0
  79. package/config/skills/registry.json +850 -0
  80. package/config/templates/research-team.json +2 -2
  81. package/dist/backend/backend/src/constants.d.ts +89 -4
  82. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  83. package/dist/backend/backend/src/constants.js +84 -6
  84. package/dist/backend/backend/src/constants.js.map +1 -1
  85. package/dist/backend/backend/src/controllers/marketplace/index.d.ts +1 -1
  86. package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
  87. package/dist/backend/backend/src/controllers/marketplace/index.js +1 -1
  88. package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
  89. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +64 -8
  90. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
  91. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +194 -96
  92. package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
  93. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  94. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +7 -2
  95. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  96. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  97. package/dist/backend/backend/src/controllers/team/team.controller.js +30 -13
  98. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  99. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/agent/agent-registration.service.js +37 -0
  101. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  102. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +51 -8
  103. package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +201 -11
  105. package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +16 -1
  107. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +99 -9
  109. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  110. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  111. package/dist/backend/backend/src/services/agent/idle-detection.service.js +11 -4
  112. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  113. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +11 -0
  114. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +18 -0
  116. package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
  117. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  118. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +13 -0
  119. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  120. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +21 -0
  121. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  122. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +227 -91
  123. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  124. package/dist/backend/backend/src/services/chat/chat.service.d.ts +12 -0
  125. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  126. package/dist/backend/backend/src/services/chat/chat.service.js +23 -1
  127. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  128. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +6 -0
  129. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
  130. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +10 -0
  131. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
  132. package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
  133. package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
  134. package/dist/backend/backend/src/services/marketplace/index.js +2 -0
  135. package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
  136. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +10 -9
  137. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  138. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +262 -73
  139. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  140. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts +71 -0
  141. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts.map +1 -0
  142. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js +339 -0
  143. package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js.map +1 -0
  144. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts +4 -15
  145. package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
  146. package/dist/backend/backend/src/services/marketplace/marketplace.service.js +172 -27
  147. package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
  148. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +30 -2
  149. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  150. package/dist/backend/backend/src/services/messaging/message-queue.service.js +79 -3
  151. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  152. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +57 -4
  154. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  156. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +20 -1
  157. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  158. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +31 -0
  160. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  161. package/dist/backend/backend/src/services/runtime-adapter.d.ts +20 -0
  162. package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/runtime-adapter.js +22 -1
  164. package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
  165. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +19 -0
  166. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  167. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +31 -2
  168. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  169. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +14 -0
  170. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  171. package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
  172. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +9 -0
  173. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/session/session-command-helper.js +24 -1
  175. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  176. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +7 -13
  177. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +38 -47
  179. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  180. package/dist/backend/backend/src/services/skill/skill.service.d.ts +3 -0
  181. package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
  182. package/dist/backend/backend/src/services/skill/skill.service.js +17 -0
  183. package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
  184. package/dist/backend/backend/src/types/chat.types.d.ts +5 -5
  185. package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
  186. package/dist/backend/backend/src/types/chat.types.js +21 -1
  187. package/dist/backend/backend/src/types/chat.types.js.map +1 -1
  188. package/dist/backend/backend/src/types/marketplace.types.d.ts +37 -0
  189. package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
  190. package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
  191. package/dist/backend/backend/src/websocket/terminal.gateway.js +3 -5
  192. package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
  193. package/dist/backend/config/constants.d.ts +41 -0
  194. package/dist/backend/config/constants.d.ts.map +1 -1
  195. package/dist/backend/config/constants.js +57 -0
  196. package/dist/backend/config/constants.js.map +1 -1
  197. package/dist/backend/config/index.d.ts +2 -2
  198. package/dist/backend/config/index.d.ts.map +1 -1
  199. package/dist/backend/config/index.js +2 -2
  200. package/dist/backend/config/index.js.map +1 -1
  201. package/dist/cli/backend/src/constants.d.ts +89 -4
  202. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  203. package/dist/cli/backend/src/constants.js +84 -6
  204. package/dist/cli/backend/src/constants.js.map +1 -1
  205. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +40 -0
  206. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -0
  207. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +74 -0
  208. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -0
  209. package/dist/cli/backend/src/types/chat.types.d.ts +5 -5
  210. package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
  211. package/dist/cli/backend/src/types/chat.types.js +21 -1
  212. package/dist/cli/backend/src/types/chat.types.js.map +1 -1
  213. package/dist/cli/cli/src/commands/onboard.d.ts +11 -1
  214. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  215. package/dist/cli/cli/src/commands/onboard.js +118 -18
  216. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  217. package/dist/cli/cli/src/commands/publish.d.ts +14 -6
  218. package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
  219. package/dist/cli/cli/src/commands/publish.js +32 -8
  220. package/dist/cli/cli/src/commands/publish.js.map +1 -1
  221. package/dist/cli/cli/src/commands/seed-marketplace.d.ts +28 -0
  222. package/dist/cli/cli/src/commands/seed-marketplace.d.ts.map +1 -0
  223. package/dist/cli/cli/src/commands/seed-marketplace.js +148 -0
  224. package/dist/cli/cli/src/commands/seed-marketplace.js.map +1 -0
  225. package/dist/cli/cli/src/index.js +9 -0
  226. package/dist/cli/cli/src/index.js.map +1 -1
  227. package/dist/cli/cli/src/utils/marketplace.d.ts +17 -4
  228. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  229. package/dist/cli/cli/src/utils/marketplace.js +172 -58
  230. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  231. package/dist/cli/config/constants.d.ts +41 -0
  232. package/dist/cli/config/constants.d.ts.map +1 -1
  233. package/dist/cli/config/constants.js +57 -0
  234. package/dist/cli/config/constants.js.map +1 -1
  235. package/dist/cli/config/index.d.ts +2 -2
  236. package/dist/cli/config/index.d.ts.map +1 -1
  237. package/dist/cli/config/index.js +2 -2
  238. package/dist/cli/config/index.js.map +1 -1
  239. package/frontend/dist/assets/{index-68d1eb5a.js → index-0a245b0d.js} +242 -242
  240. package/frontend/dist/assets/{index-c5043a83.css → index-6972eeee.css} +1 -1
  241. package/frontend/dist/index.html +2 -2
  242. package/package.json +2 -2
  243. package/config/skills/chrome-browser/instructions.md +0 -42
  244. package/config/skills/chrome-browser/skill.json +0 -39
  245. package/config/skills/nano-banana-image/generate.sh +0 -73
  246. package/config/skills/nano-banana-image/instructions.md +0 -50
  247. package/config/skills/nano-banana-image/skill.json +0 -39
  248. package/config/skills/playwright-chrome-browser/instructions.md +0 -95
  249. package/config/skills/playwright-chrome-browser/skill.json +0 -44
@@ -8,7 +8,9 @@ import { SessionMemoryService } from '../memory/session-memory.service.js';
8
8
  import { getTerminalGateway } from '../../websocket/terminal.gateway.js';
9
9
  import { SHELL_PROMPT_PATTERNS } from '../continuation/patterns/idle-patterns.js';
10
10
  import { PtyActivityTrackerService } from './pty-activity-tracker.service.js';
11
- import { CREWLY_CONSTANTS, ORCHESTRATOR_SESSION_NAME, ORCHESTRATOR_ROLE, RUNTIME_EXIT_CONSTANTS, AGENT_SUSPEND_CONSTANTS, SESSION_COMMAND_DELAYS, } from '../../constants.js';
11
+ import { OrchestratorRestartService } from '../orchestrator/orchestrator-restart.service.js';
12
+ import { CREWLY_CONSTANTS, ORCHESTRATOR_SESSION_NAME, ORCHESTRATOR_ROLE, RUNTIME_EXIT_CONSTANTS, AGENT_SUSPEND_CONSTANTS, SESSION_COMMAND_DELAYS, RUNTIME_TYPES, GEMINI_FAILURE_PATTERNS, } from '../../constants.js';
13
+ import { delay } from '../../utils/async.utils.js';
12
14
  /**
13
15
  * Service that monitors PTY sessions for runtime exit patterns.
14
16
  *
@@ -21,6 +23,11 @@ import { CREWLY_CONSTANTS, ORCHESTRATOR_SESSION_NAME, ORCHESTRATOR_ROLE, RUNTIME
21
23
  * 3. Broadcasting WebSocket events to the frontend
22
24
  * 4. Cancelling pending registration operations
23
25
  *
26
+ * For Gemini CLI, the service also detects failure patterns (API errors,
27
+ * quota exhaustion, network issues) that indicate the CLI is stuck and
28
+ * needs recovery. These failure patterns bypass the shell prompt verification
29
+ * since the CLI may still be running but non-functional.
30
+ *
24
31
  * @example
25
32
  * ```typescript
26
33
  * const monitor = RuntimeExitMonitorService.getInstance();
@@ -116,6 +123,7 @@ export class RuntimeExitMonitorService {
116
123
  buffer: '',
117
124
  startedAt: Date.now(),
118
125
  exitDetected: false,
126
+ confirmationInFlight: false,
119
127
  unsubscribe: () => { },
120
128
  };
121
129
  // Get exit patterns for this runtime type
@@ -137,6 +145,12 @@ export class RuntimeExitMonitorService {
137
145
  this.handleData(sessionName, data, exitPatterns, helper);
138
146
  });
139
147
  monitored.unsubscribe = unsubscribe;
148
+ // Start periodic process-alive polling as a fallback.
149
+ // This catches exits that don't produce recognizable text patterns
150
+ // (e.g. context window exhaustion, SIGKILL, unexpected crashes).
151
+ monitored.processPollingInterval = setInterval(() => {
152
+ this.checkProcessAlive(sessionName, backend, helper);
153
+ }, RUNTIME_EXIT_CONSTANTS.PROCESS_POLL_INTERVAL_MS);
140
154
  this.sessions.set(sessionName, monitored);
141
155
  this.logger.info('Started runtime exit monitoring', {
142
156
  sessionName,
@@ -158,6 +172,9 @@ export class RuntimeExitMonitorService {
158
172
  if (monitored.debounceTimer) {
159
173
  clearTimeout(monitored.debounceTimer);
160
174
  }
175
+ if (monitored.processPollingInterval) {
176
+ clearInterval(monitored.processPollingInterval);
177
+ }
161
178
  monitored.unsubscribe();
162
179
  this.sessions.delete(sessionName);
163
180
  this.logger.debug('Stopped runtime exit monitoring', { sessionName });
@@ -172,7 +189,8 @@ export class RuntimeExitMonitorService {
172
189
  * Destroy all monitoring subscriptions.
173
190
  */
174
191
  destroy() {
175
- for (const [sessionName] of this.sessions) {
192
+ const sessionNames = [...this.sessions.keys()];
193
+ for (const sessionName of sessionNames) {
176
194
  this.stopMonitoring(sessionName);
177
195
  }
178
196
  this.logger.debug('All runtime exit monitors destroyed');
@@ -209,117 +227,190 @@ export class RuntimeExitMonitorService {
209
227
  }
210
228
  /**
211
229
  * Confirm exit by checking for a shell prompt, then react.
230
+ *
231
+ * For Gemini CLI failure patterns (API errors, quota exhaustion, etc.),
232
+ * the shell prompt check is bypassed because the CLI may be stuck in an
233
+ * error state without returning to the shell.
212
234
  */
213
235
  async confirmAndReact(sessionName, helper) {
214
236
  const monitored = this.sessions.get(sessionName);
215
- if (!monitored || monitored.exitDetected) {
216
- return;
217
- }
218
- // Verify shell prompt is visible (avoids false positives)
219
- if (!this.verifyExitWithShellPrompt(sessionName, helper)) {
220
- this.logger.debug('Exit pattern matched but shell prompt not confirmed, ignoring', { sessionName });
237
+ if (!monitored || monitored.exitDetected || monitored.confirmationInFlight) {
221
238
  return;
222
239
  }
223
- // Mark as detected to prevent double-processing
224
- monitored.exitDetected = true;
225
- this.logger.info('Runtime exit detected and confirmed', {
226
- sessionName,
227
- runtimeType: monitored.runtimeType,
228
- role: monitored.role,
229
- });
230
- // Fire the exit-detected callback (used to cancel pending registrations)
231
- if (this.onExitDetectedCallback) {
232
- try {
233
- this.onExitDetectedCallback(sessionName);
234
- }
235
- catch (error) {
236
- this.logger.warn('onExitDetected callback error', {
240
+ monitored.confirmationInFlight = true;
241
+ try {
242
+ // Verify shell prompt is visible (avoids false positives)
243
+ const shellPromptConfirmed = this.verifyExitWithShellPrompt(sessionName, helper);
244
+ if (!shellPromptConfirmed) {
245
+ // For Gemini CLI: check if a failure pattern is present in the buffer.
246
+ // Gemini failure patterns (RESOURCE_EXHAUSTED, Connection error, etc.)
247
+ // indicate the CLI is stuck/crashed but may not have exited to shell.
248
+ // In this case, proceed with recovery without requiring a shell prompt.
249
+ const isGeminiFailure = monitored.runtimeType === RUNTIME_TYPES.GEMINI_CLI
250
+ && GEMINI_FAILURE_PATTERNS.some((pattern) => pattern.test(monitored.buffer));
251
+ if (!isGeminiFailure) {
252
+ this.logger.debug('Exit pattern matched but shell prompt not confirmed, ignoring', { sessionName });
253
+ return;
254
+ }
255
+ this.logger.info('Gemini CLI failure pattern detected without shell prompt, proceeding with recovery', {
237
256
  sessionName,
238
- error: error instanceof Error ? error.message : String(error),
257
+ runtimeType: monitored.runtimeType,
258
+ detectedPattern: GEMINI_FAILURE_PATTERNS.find((p) => p.test(monitored.buffer))?.source,
239
259
  });
240
260
  }
241
- }
242
- // Check for in-progress tasks — restart agent if any exist (non-orchestrator only)
243
- if (monitored.role !== ORCHESTRATOR_ROLE && this.agentRegistrationService && this.taskTrackingService) {
244
- try {
245
- const tasks = await this.taskTrackingService.getTasksForTeamMember(monitored.memberId || '');
246
- const activeTasks = tasks.filter(t => t.status === 'assigned' || t.status === 'active');
247
- if (activeTasks.length > 0) {
248
- this.logger.info('Runtime exit with in-progress tasks, attempting restart', {
261
+ // Mark as detected to prevent double-processing
262
+ monitored.exitDetected = true;
263
+ this.logger.info('Runtime exit detected and confirmed', {
264
+ sessionName,
265
+ runtimeType: monitored.runtimeType,
266
+ role: monitored.role,
267
+ });
268
+ // Fire the exit-detected callback (used to cancel pending registrations)
269
+ if (this.onExitDetectedCallback) {
270
+ try {
271
+ this.onExitDetectedCallback(sessionName);
272
+ }
273
+ catch (error) {
274
+ this.logger.warn('onExitDetected callback error', {
249
275
  sessionName,
250
- activeTaskCount: activeTasks.length,
276
+ error: error instanceof Error ? error.message : String(error),
251
277
  });
252
- try {
253
- await this.restartAgentWithTasks(sessionName, monitored, activeTasks);
254
- // Cleanup this subscription (restart succeeded, skip inactive flow)
255
- this.stopMonitoring(sessionName);
256
- return;
257
- }
258
- catch (restartError) {
259
- this.logger.warn('Agent restart after runtime exit failed, falling back to inactive', {
278
+ }
279
+ }
280
+ // Check for in-progress tasks — restart agent if any exist (non-orchestrator only)
281
+ if (monitored.role !== ORCHESTRATOR_ROLE && this.agentRegistrationService && this.taskTrackingService) {
282
+ try {
283
+ const tasks = await this.taskTrackingService.getTasksForTeamMember(monitored.memberId || '');
284
+ const activeTasks = tasks.filter(t => t.status === 'assigned' || t.status === 'active');
285
+ if (activeTasks.length > 0) {
286
+ this.logger.info('Runtime exit with in-progress tasks, attempting restart', {
260
287
  sessionName,
261
- error: restartError instanceof Error ? restartError.message : String(restartError),
288
+ activeTaskCount: activeTasks.length,
262
289
  });
263
- // Fall through to normal inactive flow
290
+ try {
291
+ await this.restartAgentWithTasks(sessionName, monitored, activeTasks);
292
+ // Cleanup this subscription (restart succeeded, skip inactive flow)
293
+ this.stopMonitoring(sessionName);
294
+ return;
295
+ }
296
+ catch (restartError) {
297
+ this.logger.warn('Agent restart after runtime exit failed, falling back to inactive', {
298
+ sessionName,
299
+ error: restartError instanceof Error ? restartError.message : String(restartError),
300
+ });
301
+ // Fall through to normal inactive flow
302
+ }
264
303
  }
265
304
  }
305
+ catch (error) {
306
+ this.logger.warn('Failed to check in-progress tasks after runtime exit', {
307
+ sessionName,
308
+ error: error instanceof Error ? error.message : String(error),
309
+ });
310
+ // Fall through to normal inactive flow
311
+ }
312
+ }
313
+ // Orchestrator-specific restart: attempt auto-restart when runtime exits
314
+ if (sessionName === ORCHESTRATOR_SESSION_NAME) {
315
+ // Capture session memory before restart
316
+ try {
317
+ const sessionMemoryService = SessionMemoryService.getInstance();
318
+ await sessionMemoryService.onSessionEnd(sessionName, monitored.role, process.cwd());
319
+ }
320
+ catch (error) {
321
+ this.logger.warn('Failed to capture session memory before orchestrator restart', {
322
+ sessionName,
323
+ error: error instanceof Error ? error.message : String(error),
324
+ });
325
+ }
326
+ try {
327
+ const restartService = OrchestratorRestartService.getInstance();
328
+ const success = await restartService.attemptRestart();
329
+ if (success) {
330
+ this.logger.info('Orchestrator restarted after runtime exit', { sessionName });
331
+ // Broadcast restarted status
332
+ try {
333
+ const terminalGateway = getTerminalGateway();
334
+ if (terminalGateway) {
335
+ terminalGateway.broadcastOrchestratorStatus({
336
+ sessionName,
337
+ agentStatus: CREWLY_CONSTANTS.AGENT_STATUSES.ACTIVE,
338
+ reason: 'runtime_exit_restart',
339
+ });
340
+ }
341
+ }
342
+ catch {
343
+ // Best-effort broadcast
344
+ }
345
+ this.stopMonitoring(sessionName);
346
+ return;
347
+ }
348
+ this.logger.warn('Orchestrator restart after runtime exit failed or not allowed, falling back to inactive', {
349
+ sessionName,
350
+ });
351
+ }
352
+ catch (error) {
353
+ this.logger.warn('Orchestrator restart attempt threw error, falling back to inactive', {
354
+ sessionName,
355
+ error: error instanceof Error ? error.message : String(error),
356
+ });
357
+ }
358
+ // Fall through to normal inactive flow
359
+ }
360
+ // Update agent status to inactive
361
+ try {
362
+ const storageService = StorageService.getInstance();
363
+ await storageService.updateAgentStatus(sessionName, CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE);
364
+ this.logger.info('Agent status updated to inactive after runtime exit', { sessionName });
266
365
  }
267
366
  catch (error) {
268
- this.logger.warn('Failed to check in-progress tasks after runtime exit', {
367
+ this.logger.warn('Failed to update agent status after runtime exit', {
269
368
  sessionName,
270
369
  error: error instanceof Error ? error.message : String(error),
271
370
  });
272
- // Fall through to normal inactive flow
273
371
  }
274
- }
275
- // Update agent status to inactive
276
- try {
277
- const storageService = StorageService.getInstance();
278
- await storageService.updateAgentStatus(sessionName, CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE);
279
- this.logger.info('Agent status updated to inactive after runtime exit', { sessionName });
280
- }
281
- catch (error) {
282
- this.logger.warn('Failed to update agent status after runtime exit', {
283
- sessionName,
284
- error: error instanceof Error ? error.message : String(error),
285
- });
286
- }
287
- // Capture session memory
288
- try {
289
- const sessionMemoryService = SessionMemoryService.getInstance();
290
- await sessionMemoryService.onSessionEnd(sessionName, monitored.role, process.cwd());
291
- }
292
- catch (error) {
293
- this.logger.warn('Failed to capture session memory after runtime exit', {
294
- sessionName,
295
- error: error instanceof Error ? error.message : String(error),
296
- });
297
- }
298
- // Broadcast WebSocket event
299
- try {
300
- const terminalGateway = getTerminalGateway();
301
- if (terminalGateway) {
302
- const statusPayload = {
303
- sessionName,
304
- agentStatus: CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE,
305
- reason: 'runtime_exited',
306
- };
307
- if (sessionName === ORCHESTRATOR_SESSION_NAME) {
308
- terminalGateway.broadcastOrchestratorStatus(statusPayload);
372
+ // Capture session memory (skip for orchestrator — already captured above)
373
+ if (sessionName !== ORCHESTRATOR_SESSION_NAME) {
374
+ try {
375
+ const sessionMemoryService = SessionMemoryService.getInstance();
376
+ await sessionMemoryService.onSessionEnd(sessionName, monitored.role, process.cwd());
309
377
  }
310
- else {
311
- terminalGateway.broadcastTeamMemberStatus(statusPayload);
378
+ catch (error) {
379
+ this.logger.warn('Failed to capture session memory after runtime exit', {
380
+ sessionName,
381
+ error: error instanceof Error ? error.message : String(error),
382
+ });
312
383
  }
313
384
  }
385
+ // Broadcast WebSocket event
386
+ try {
387
+ const terminalGateway = getTerminalGateway();
388
+ if (terminalGateway) {
389
+ const statusPayload = {
390
+ sessionName,
391
+ agentStatus: CREWLY_CONSTANTS.AGENT_STATUSES.INACTIVE,
392
+ reason: 'runtime_exited',
393
+ };
394
+ if (sessionName === ORCHESTRATOR_SESSION_NAME) {
395
+ terminalGateway.broadcastOrchestratorStatus(statusPayload);
396
+ }
397
+ else {
398
+ terminalGateway.broadcastTeamMemberStatus(statusPayload);
399
+ }
400
+ }
401
+ }
402
+ catch (error) {
403
+ this.logger.warn('Failed to broadcast runtime exit event', {
404
+ sessionName,
405
+ error: error instanceof Error ? error.message : String(error),
406
+ });
407
+ }
408
+ // Cleanup this subscription
409
+ this.stopMonitoring(sessionName);
314
410
  }
315
- catch (error) {
316
- this.logger.warn('Failed to broadcast runtime exit event', {
317
- sessionName,
318
- error: error instanceof Error ? error.message : String(error),
319
- });
411
+ finally {
412
+ monitored.confirmationInFlight = false;
320
413
  }
321
- // Cleanup this subscription
322
- this.stopMonitoring(sessionName);
323
414
  }
324
415
  /**
325
416
  * Restart an agent that exited while it had in-progress tasks.
@@ -413,7 +504,7 @@ export class RuntimeExitMonitorService {
413
504
  */
414
505
  async redeliverTasks(sessionName, activeTasks) {
415
506
  // Wait for agent initialization
416
- await new Promise(resolve => setTimeout(resolve, AGENT_SUSPEND_CONSTANTS.REHYDRATION_TIMEOUT_MS));
507
+ await delay(AGENT_SUSPEND_CONSTANTS.REHYDRATION_TIMEOUT_MS);
417
508
  const backend = getSessionBackendSync();
418
509
  if (!backend || !backend.sessionExists(sessionName)) {
419
510
  this.logger.warn('Agent session not found after restart, skipping task re-delivery', { sessionName });
@@ -452,16 +543,61 @@ export class RuntimeExitMonitorService {
452
543
  session.write(message);
453
544
  // Delay to let the terminal finish processing the paste, then send Enter
454
545
  const pasteDelay = Math.min(SESSION_COMMAND_DELAYS.MESSAGE_DELAY + Math.ceil(message.length / 10), 5000);
455
- await new Promise(resolve => setTimeout(resolve, pasteDelay));
546
+ await delay(pasteDelay);
456
547
  session.write('\r');
457
548
  // Delay between tasks to avoid flooding
458
- await new Promise(resolve => setTimeout(resolve, 2000));
549
+ await delay(2000);
459
550
  }
460
551
  this.logger.info('Task re-delivery complete', {
461
552
  sessionName,
462
553
  tasksDelivered: activeTasks.length,
463
554
  });
464
555
  }
556
+ /**
557
+ * Periodic check: is the runtime child process still alive?
558
+ *
559
+ * Uses the session backend's isChildProcessAlive() (pgrep -P <pid>)
560
+ * to determine if the CLI process has exited. This is a version-agnostic
561
+ * fallback that doesn't depend on any text the CLI prints.
562
+ *
563
+ * @param sessionName - PTY session name
564
+ * @param backend - Session backend for process checks
565
+ * @param helper - Session command helper for shell prompt verification
566
+ */
567
+ checkProcessAlive(sessionName, backend, helper) {
568
+ const monitored = this.sessions.get(sessionName);
569
+ if (!monitored || monitored.exitDetected) {
570
+ return;
571
+ }
572
+ // Skip during startup grace period (CLI may not have spawned yet)
573
+ if (Date.now() - monitored.startedAt < RUNTIME_EXIT_CONSTANTS.PROCESS_POLL_GRACE_PERIOD_MS) {
574
+ return;
575
+ }
576
+ // Check if the backend supports process-alive checks
577
+ if (!backend.isChildProcessAlive) {
578
+ return;
579
+ }
580
+ const isAlive = backend.isChildProcessAlive(sessionName);
581
+ if (isAlive) {
582
+ return;
583
+ }
584
+ // Process is not alive — verify with shell prompt before confirming
585
+ if (!this.verifyExitWithShellPrompt(sessionName, helper)) {
586
+ this.logger.debug('Process not alive but shell prompt not confirmed, skipping', { sessionName });
587
+ return;
588
+ }
589
+ this.logger.info('Runtime exit detected via process check (no child process)', {
590
+ sessionName,
591
+ runtimeType: monitored.runtimeType,
592
+ });
593
+ // Trigger the same exit flow as pattern-based detection
594
+ this.confirmAndReact(sessionName, helper).catch((error) => {
595
+ this.logger.warn('confirmAndReact error from process check', {
596
+ sessionName,
597
+ error: error instanceof Error ? error.message : String(error),
598
+ });
599
+ });
600
+ }
465
601
  /**
466
602
  * Verify that a shell prompt is visible in the terminal, confirming
467
603
  * that the agent CLI has actually exited and returned to the shell.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-exit-monitor.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/runtime-exit-monitor.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-exit-monitor.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/runtime-exit-monitor.service.ts"],"names":[],"mappings":"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"}
@@ -290,6 +290,18 @@ export declare class ChatService extends EventEmitter {
290
290
  * @param isTyping - Whether the sender is typing
291
291
  */
292
292
  emitTypingIndicator(conversationId: string, sender: ChatSender, isTyping: boolean): void;
293
+ /**
294
+ * Emit a transient progress update to the frontend for a conversation.
295
+ *
296
+ * Unlike addSystemMessage, this does NOT persist the message to disk.
297
+ * It creates a temporary system chat message and emits it via the
298
+ * 'chat_message' WebSocket event so the UI can display a progress
299
+ * indicator during long-running orchestrator operations.
300
+ *
301
+ * @param conversationId - Conversation to emit progress for
302
+ * @param text - Progress text to display (e.g. "Processing... (still working)")
303
+ */
304
+ emitProgress(conversationId: string, text: string): void;
293
305
  /**
294
306
  * Emit a chat message event
295
307
  *
@@ -1 +1 @@
1
- {"version":3,"file":"chat.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat/chat.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat/chat.service.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { EventEmitter } from 'events';
11
11
  import { promises as fs } from 'fs';
12
+ import * as os from 'os';
12
13
  import * as path from 'path';
13
14
  import { atomicWriteJson, safeReadJson } from '../../utils/file-io.utils.js';
14
15
  import { LoggerService } from '../core/logger.service.js';
@@ -80,7 +81,7 @@ export class ChatService extends EventEmitter {
80
81
  constructor(options) {
81
82
  super();
82
83
  this.chatDir =
83
- options?.chatDir ?? path.join(process.env.HOME || '~', '.crewly', 'chat');
84
+ options?.chatDir ?? path.join(os.homedir(), '.crewly', 'chat');
84
85
  this.logger = LoggerService.getInstance().createComponentLogger('ChatService');
85
86
  }
86
87
  // ===========================================================================
@@ -567,6 +568,27 @@ export class ChatService extends EventEmitter {
567
568
  };
568
569
  this.emit('chat_typing', event);
569
570
  }
571
+ /**
572
+ * Emit a transient progress update to the frontend for a conversation.
573
+ *
574
+ * Unlike addSystemMessage, this does NOT persist the message to disk.
575
+ * It creates a temporary system chat message and emits it via the
576
+ * 'chat_message' WebSocket event so the UI can display a progress
577
+ * indicator during long-running orchestrator operations.
578
+ *
579
+ * @param conversationId - Conversation to emit progress for
580
+ * @param text - Progress text to display (e.g. "Processing... (still working)")
581
+ */
582
+ emitProgress(conversationId, text) {
583
+ const message = createChatMessage({
584
+ conversationId,
585
+ content: text,
586
+ from: { type: 'system', name: 'System' },
587
+ contentType: 'status',
588
+ status: 'delivered',
589
+ });
590
+ this.emitChatMessageEvent(message);
591
+ }
570
592
  /**
571
593
  * Emit a chat message event
572
594
  *