crewly 1.5.11 → 1.5.12

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 (172) hide show
  1. package/config/constants.ts +3 -3
  2. package/config/orchestrator_tasks/prompts/orchestrator-prompt.md +73 -0
  3. package/config/roles/architect/prompt.md +9 -0
  4. package/config/roles/backend-developer/prompt.md +9 -0
  5. package/config/roles/content-strategist/prompt.md +10 -0
  6. package/config/roles/designer/prompt.md +9 -0
  7. package/config/roles/developer/prompt.md +9 -0
  8. package/config/roles/frontend-developer/prompt.md +9 -0
  9. package/config/roles/fullstack-dev/prompt.md +9 -0
  10. package/config/roles/generalist/prompt.md +9 -0
  11. package/config/roles/ops/prompt.md +9 -0
  12. package/config/roles/product-manager/prompt.md +9 -0
  13. package/config/roles/qa/prompt.md +9 -0
  14. package/config/roles/qa-engineer/prompt.md +9 -0
  15. package/config/roles/researcher/prompt.md +9 -0
  16. package/config/roles/sales/prompt.md +9 -0
  17. package/config/roles/support/prompt.md +9 -0
  18. package/config/roles/team-leader/prompt.md +11 -0
  19. package/config/roles/tpm/prompt.md +9 -0
  20. package/config/roles/ux-designer/prompt.md +9 -0
  21. package/config/skills/agent/core/block-task/execute.sh +3 -1
  22. package/config/skills/agent/core/pipe-to-sink/execute.sh +41 -0
  23. package/config/skills/agent/core/read-task/execute.sh +3 -1
  24. package/config/skills/agent/core/report-progress/execute.sh +3 -1
  25. package/config/skills/agent/screenshot-compare/SKILL.md +75 -0
  26. package/config/skills/agent/screenshot-compare/execute.sh +182 -0
  27. package/config/skills/agent/screenshot-compare/skill.json +10 -0
  28. package/config/skills/agent/xiaoyuzhoufm-transcript/SKILL.md +85 -0
  29. package/config/skills/agent/xiaoyuzhoufm-transcript/execute.sh +306 -0
  30. package/config/skills/agent/xiaoyuzhoufm-transcript/skill.json +10 -0
  31. package/config/skills/orchestrator/cancel-cron/SKILL.md +44 -0
  32. package/config/skills/orchestrator/create-cron/SKILL.md +58 -0
  33. package/config/skills/orchestrator/list-cron/SKILL.md +51 -0
  34. package/config/skills/orchestrator/update-cron/SKILL.md +52 -0
  35. package/dist/backend/backend/src/constants.d.ts +7 -4
  36. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  37. package/dist/backend/backend/src/constants.js +6 -3
  38. package/dist/backend/backend/src/constants.js.map +1 -1
  39. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +21 -2
  40. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  41. package/dist/backend/backend/src/controllers/browser/browser.controller.js +167 -29
  42. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  43. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts +1 -1
  44. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
  45. package/dist/backend/backend/src/controllers/browser/browser.routes.js +7 -3
  46. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
  47. package/dist/backend/backend/src/controllers/data/data.controller.d.ts +47 -0
  48. package/dist/backend/backend/src/controllers/data/data.controller.d.ts.map +1 -0
  49. package/dist/backend/backend/src/controllers/data/data.controller.js +201 -0
  50. package/dist/backend/backend/src/controllers/data/data.controller.js.map +1 -0
  51. package/dist/backend/backend/src/controllers/data/data.routes.d.ts +18 -0
  52. package/dist/backend/backend/src/controllers/data/data.routes.d.ts.map +1 -0
  53. package/dist/backend/backend/src/controllers/data/data.routes.js +44 -0
  54. package/dist/backend/backend/src/controllers/data/data.routes.js.map +1 -0
  55. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts +3 -2
  56. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts.map +1 -1
  57. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js +5 -3
  58. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js.map +1 -1
  59. package/dist/backend/backend/src/controllers/system/cron-task.controller.d.ts +4 -0
  60. package/dist/backend/backend/src/controllers/system/cron-task.controller.d.ts.map +1 -1
  61. package/dist/backend/backend/src/controllers/system/cron-task.controller.js +20 -0
  62. package/dist/backend/backend/src/controllers/system/cron-task.controller.js.map +1 -1
  63. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  64. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +18 -0
  65. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  66. package/dist/backend/backend/src/controllers/team/team-export.controller.d.ts +32 -0
  67. package/dist/backend/backend/src/controllers/team/team-export.controller.d.ts.map +1 -0
  68. package/dist/backend/backend/src/controllers/team/team-export.controller.js +61 -0
  69. package/dist/backend/backend/src/controllers/team/team-export.controller.js.map +1 -0
  70. package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
  71. package/dist/backend/backend/src/controllers/team/team.routes.js +7 -0
  72. package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
  73. package/dist/backend/backend/src/index.d.ts.map +1 -1
  74. package/dist/backend/backend/src/index.js +37 -7
  75. package/dist/backend/backend/src/index.js.map +1 -1
  76. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  77. package/dist/backend/backend/src/routes/api.routes.js +4 -1
  78. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  79. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/agent/agent-registration.service.js +6 -2
  81. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  82. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  83. package/dist/backend/backend/src/services/agent/idle-detection.service.js +17 -2
  84. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  85. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +1 -1
  86. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +2 -2
  87. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  88. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts +134 -0
  89. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts.map +1 -0
  90. package/dist/backend/backend/src/services/agent/task-planning.service.js +291 -0
  91. package/dist/backend/backend/src/services/agent/task-planning.service.js.map +1 -0
  92. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  93. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -0
  94. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  95. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  96. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +3 -3
  97. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  98. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +13 -9
  99. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +44 -12
  101. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  102. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +176 -0
  103. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -0
  104. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +441 -0
  105. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -0
  106. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +162 -0
  107. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -0
  108. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +350 -0
  109. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -0
  110. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts +8 -0
  111. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/cloud/cloud-initializer.js +27 -0
  113. package/dist/backend/backend/src/services/cloud/cloud-initializer.js.map +1 -1
  114. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  115. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  116. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +2 -0
  117. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  118. package/dist/backend/backend/src/services/core/team-export.service.d.ts +103 -0
  119. package/dist/backend/backend/src/services/core/team-export.service.d.ts.map +1 -0
  120. package/dist/backend/backend/src/services/core/team-export.service.js +182 -0
  121. package/dist/backend/backend/src/services/core/team-export.service.js.map +1 -0
  122. package/dist/backend/backend/src/services/data/data-object-store.service.d.ts +160 -0
  123. package/dist/backend/backend/src/services/data/data-object-store.service.d.ts.map +1 -0
  124. package/dist/backend/backend/src/services/data/data-object-store.service.js +434 -0
  125. package/dist/backend/backend/src/services/data/data-object-store.service.js.map +1 -0
  126. package/dist/backend/backend/src/services/data/data-object.types.d.ts +190 -0
  127. package/dist/backend/backend/src/services/data/data-object.types.d.ts.map +1 -0
  128. package/dist/backend/backend/src/services/data/data-object.types.js +143 -0
  129. package/dist/backend/backend/src/services/data/data-object.types.js.map +1 -0
  130. package/dist/backend/backend/src/services/data/schema-registry.service.d.ts +108 -0
  131. package/dist/backend/backend/src/services/data/schema-registry.service.d.ts.map +1 -0
  132. package/dist/backend/backend/src/services/data/schema-registry.service.js +290 -0
  133. package/dist/backend/backend/src/services/data/schema-registry.service.js.map +1 -0
  134. package/dist/backend/backend/src/services/data/sink-registry.service.d.ts +87 -0
  135. package/dist/backend/backend/src/services/data/sink-registry.service.d.ts.map +1 -0
  136. package/dist/backend/backend/src/services/data/sink-registry.service.js +188 -0
  137. package/dist/backend/backend/src/services/data/sink-registry.service.js.map +1 -0
  138. package/dist/backend/backend/src/services/messaging/message-router.service.d.ts.map +1 -1
  139. package/dist/backend/backend/src/services/messaging/message-router.service.js +7 -0
  140. package/dist/backend/backend/src/services/messaging/message-router.service.js.map +1 -1
  141. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +55 -2
  142. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  143. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +89 -5
  144. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  145. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +1 -1
  146. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  147. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +105 -14
  148. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  149. package/dist/backend/backend/src/services/workflow/cron-task.service.js +400 -123
  150. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  151. package/dist/backend/backend/src/types/cron-task.types.d.ts +1 -1
  152. package/dist/backend/backend/src/types/data-object.types.d.ts +117 -0
  153. package/dist/backend/backend/src/types/data-object.types.d.ts.map +1 -0
  154. package/dist/backend/backend/src/types/data-object.types.js +23 -0
  155. package/dist/backend/backend/src/types/data-object.types.js.map +1 -0
  156. package/dist/backend/backend/src/types/settings.types.js +1 -1
  157. package/dist/backend/config/constants.d.ts +3 -3
  158. package/dist/backend/config/constants.js +3 -3
  159. package/dist/backend/config/constants.js.map +1 -1
  160. package/dist/cli/backend/src/constants.d.ts +7 -4
  161. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  162. package/dist/cli/backend/src/constants.js +6 -3
  163. package/dist/cli/backend/src/constants.js.map +1 -1
  164. package/dist/cli/backend/src/types/settings.types.js +1 -1
  165. package/dist/cli/config/constants.d.ts +3 -3
  166. package/dist/cli/config/constants.js +3 -3
  167. package/dist/cli/config/constants.js.map +1 -1
  168. package/frontend/dist/assets/index-371b68d4.css +33 -0
  169. package/frontend/dist/assets/{index-9af2ea40.js → index-506f70da.js} +321 -321
  170. package/frontend/dist/index.html +2 -2
  171. package/package.json +1 -1
  172. package/frontend/dist/assets/index-b19b2478.css +0 -33
@@ -10,8 +10,8 @@
10
10
  export class SkillsReferenceModule {
11
11
  name = 'skills_references';
12
12
  priority = 5;
13
- maxTokens = 500;
14
- compactable = true;
13
+ maxTokens = 800;
14
+ compactable = false;
15
15
  /**
16
16
  * Always included — agents need to know how to use skills.
17
17
  */
@@ -46,7 +46,7 @@ export class SkillsReferenceModule {
46
46
  ];
47
47
  // Orchestrators and TLs get additional coordination skills
48
48
  if (config.role === 'orchestrator') {
49
- lines.push('- `core/send-message` — send messages to agents', '- `core/get-sops` — request relevant SOPs', '- Orchestrator skills at `config/skills/orchestrator/`:', ' - `schedule-check` — schedule future check-in reminders', ' - `subscribe-event` — subscribe to agent lifecycle events', ' - `reply-slack` / `reply-chat` — respond to user messages', ' - `send-to-remote` / `reply-remote` — send/reply to other Crewly machines', ' - `list-devices` — discover connected Crewly devices', ' - `delegate-task` — assign work to agents', ' - `get-team-status` / `get-agent-status` — monitor team state');
49
+ lines.push('- `core/send-message` — send messages to agents', '- `core/get-sops` — request relevant SOPs', '- Orchestrator skills at `config/skills/orchestrator/`:', ' - `schedule-check` — schedule future check-in reminders', ' - `subscribe-event` — subscribe to agent lifecycle events', ' - `reply-slack` / `reply-chat` — respond to user messages', ' - `reply-gchat` — respond to Google Chat messages', ' - `send-to-remote` / `reply-remote` — send/reply to other Crewly machines', ' - `list-devices` — discover connected Crewly devices', ' - `delegate-task` / `assign-task` — assign work to agents', ' - `get-team-status` / `get-agent-status` — monitor team state', ' - `create-team` / `update-team` / `start-team` / `stop-team` — team management', ' - `start-agent` / `stop-agent` / `terminate-agent` — agent lifecycle', ' - `create-cron` / `list-cron` / `update-cron` / `cancel-cron` — recurring tasks', '', '**IMPORTANT:** You have ALL skills listed above. Never say you lack a skill — if unsure, check the catalog.');
50
50
  }
51
51
  else if (config.canDelegate) {
52
52
  lines.push('- `core/send-message` — communicate with subordinates and orchestrator', '- `core/get-sops` — request relevant SOPs', `- Team leader skills at \`${config.tlSkillsPath}/\`:`, ' - `delegate-task` — assign tasks to subordinates', ' - `verify-output` — check completed work quality', ' - `schedule-check` — schedule follow-up reminders');
@@ -1 +1 @@
1
- {"version":3,"file":"skills-reference.module.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/skills-reference.module.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,OAAO,qBAAqB;IACjC,IAAI,GAAG,mBAAmB,CAAC;IAC3B,QAAQ,GAAG,CAAC,CAAC;IACb,SAAS,GAAG,GAAG,CAAC;IAChB,WAAW,GAAG,IAAI,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,OAAqB;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEtD,OAAO,GAAG,UAAU,OAAO,YAAY,OAAO,aAAa,EAAE,CAAC;IAC/D,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAoB;QAC3C,MAAM,KAAK,GAAG;YACb,qBAAqB;YACrB,EAAE;YACF,oBAAoB,MAAM,CAAC,eAAe,MAAM;YAChD,2DAA2D;YAC3D,0DAA0D;YAC1D,2DAA2D;YAC3D,uEAAuE;SACvE,CAAC;QAEF,2DAA2D;QAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CACT,iDAAiD,EACjD,2CAA2C,EAC3C,yDAAyD,EACzD,2DAA2D,EAC3D,6DAA6D,EAC7D,6DAA6D,EAC7D,6EAA6E,EAC7E,wDAAwD,EACxD,6CAA6C,EAC7C,iEAAiE,CACjE,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACT,wEAAwE,EACxE,2CAA2C,EAC3C,6BAA6B,MAAM,CAAC,YAAY,MAAM,EACtD,oDAAoD,EACpD,oDAAoD,EACpD,qDAAqD,CACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CACT,sDAAsD,EACtD,iEAAiE,CACjE,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,4DAA4D,CAAC,CAAC;QAE7E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,MAAoB;QAC7C,MAAM,KAAK,GAAG,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CACT,6BAA6B,EAC7B,wEAAwE,EACxE,gEAAgE,EAChE,qEAAqE,EACrE,mEAAmE,EACnE,EAAE,EACF,mFAAmF,CACnF,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACT,6BAA6B,EAC7B,qDAAqD,EACrD,mCAAmC,MAAM,CAAC,eAAe,yBAAyB,EAClF,mCAAmC,MAAM,CAAC,YAAY,0BAA0B,EAChF,mEAAmE,CACnE,CAAC;QACH,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CACT,6BAA6B,EAC7B,qDAAqD,EACrD,mCAAmC,MAAM,CAAC,eAAe,yBAAyB,EAClF,mEAAmE,CACnE,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAoB;QAC9C,OAAO;;uBAEc,MAAM,CAAC,eAAe;;;;;;;;;;;;;kLAaqI,CAAC;IAClL,CAAC;CACD"}
1
+ {"version":3,"file":"skills-reference.module.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/ai/prompt-modules/skills-reference.module.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Browser Bridge Service
2
+ * Crewly in Chrome — Browser Bridge Service
3
3
  *
4
- * Provides a raw WebSocket server that the Crewly Chrome Extension connects to.
4
+ * Provides a raw WebSocket server that the Crewly in Chrome extension connects to.
5
5
  * Acts as a bridge between REST API calls (from remote-browser skill) and the
6
6
  * Chrome Extension. When a REST endpoint receives a command, it forwards it to
7
7
  * the connected Chrome Extension via WebSocket and waits for the response.
@@ -47,14 +47,18 @@ export interface BrowserCommandResponse {
47
47
  /** Error message on failure */
48
48
  error?: string;
49
49
  }
50
- /** Status information about the browser bridge */
50
+ /** Status information about the Crewly in Chrome bridge */
51
51
  export interface BrowserBridgeStatus {
52
- /** Whether at least one Chrome Extension is connected */
52
+ /** Whether a Chrome Extension is reachable (direct WS or Cloud relay) */
53
53
  connected: boolean;
54
- /** Number of connected Chrome Extension clients */
54
+ /** Number of directly connected Chrome Extension clients via WebSocket */
55
55
  clientCount: number;
56
56
  /** WebSocket server path */
57
57
  wsPath: string;
58
+ /** Whether the Cloud relay path to an Extension is available */
59
+ relayAvailable?: boolean;
60
+ /** Cloud device ID of the relay-connected Extension (null if not discovered) */
61
+ relayDeviceId?: string | null;
58
62
  }
59
63
  /**
60
64
  * BrowserBridgeService manages WebSocket connections from the Crewly Chrome
@@ -112,15 +116,15 @@ export declare class BrowserBridgeService {
112
116
  */
113
117
  sendCommand(tool: string, params?: Record<string, unknown>, timeoutMs?: number, agentName?: string): Promise<BrowserCommandResponse>;
114
118
  /**
115
- * Get the current bridge status.
119
+ * Get the current bridge status, including relay availability.
116
120
  *
117
- * @returns Status information
121
+ * @returns Status information with direct WS and relay details
118
122
  */
119
123
  getStatus(): BrowserBridgeStatus;
120
124
  /**
121
- * Check if at least one Chrome Extension client is connected.
125
+ * Check if a Chrome Extension is reachable (direct WS or Cloud relay).
122
126
  *
123
- * @returns True if connected
127
+ * @returns True if connected via direct WS or relay is available
124
128
  */
125
129
  isConnected(): boolean;
126
130
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"browser-bridge.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-bridge.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAmB,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAIjD,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC7B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,EAAE,EAAE,SAAS,CAAC;IACd,+BAA+B;IAC/B,WAAW,EAAE,IAAI,CAAC;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAYD,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC9B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,sBAAsB;IACtC,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IACnC,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IA0FpC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;;;;;;;;OAUG;IACG,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,GAAE,MAAoD,EAC/D,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC;IA8BlC;;;;OAIG;IACH,SAAS,IAAI,mBAAmB;IAQhC;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,IAAI,IAAI,IAAI;CA0BZ"}
1
+ {"version":3,"file":"browser-bridge.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-bridge.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAmB,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAIjD,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC7B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,EAAE,EAAE,SAAS,CAAC;IACd,+BAA+B;IAC/B,WAAW,EAAE,IAAI,CAAC;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAYD,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC9B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,sBAAsB;IACtC,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IACnC,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IA0FpC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;;;;;;;;OAUG;IACG,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,GAAE,MAAoD,EAC/D,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC;IAsClC;;;;OAIG;IACH,SAAS,IAAI,mBAAmB;IA2BhC;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAetB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,IAAI,IAAI,IAAI;CA0BZ"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Browser Bridge Service
2
+ * Crewly in Chrome — Browser Bridge Service
3
3
  *
4
- * Provides a raw WebSocket server that the Crewly Chrome Extension connects to.
4
+ * Provides a raw WebSocket server that the Crewly in Chrome extension connects to.
5
5
  * Acts as a bridge between REST API calls (from remote-browser skill) and the
6
6
  * Chrome Extension. When a REST endpoint receives a command, it forwards it to
7
7
  * the connected Chrome Extension via WebSocket and waits for the response.
@@ -127,7 +127,7 @@ export class BrowserBridgeService {
127
127
  this.wss.on('error', (err) => {
128
128
  this.logger.error('WebSocket server error', { error: err.message });
129
129
  });
130
- this.logger.info('Browser Bridge WebSocket server attached', {
130
+ this.logger.info('Crewly in Chrome WebSocket server attached', {
131
131
  path: BROWSER_BRIDGE_CONSTANTS.WS_PATH,
132
132
  });
133
133
  }
@@ -179,8 +179,15 @@ export class BrowserBridgeService {
179
179
  */
180
180
  async sendCommand(tool, params, timeoutMs = BROWSER_BRIDGE_CONSTANTS.COMMAND_TIMEOUT_MS, agentName) {
181
181
  const client = this.getActiveClient();
182
+ // Fallback to Cloud relay if no direct WS client connected
182
183
  if (!client) {
183
- throw new Error('No Chrome Extension connected');
184
+ const { BrowserRelayAdapter } = await import('./browser-relay-adapter.service.js');
185
+ const relayAdapter = BrowserRelayAdapter.getInstance();
186
+ if (relayAdapter.isAvailable()) {
187
+ this.logger.info('No direct WS client, routing via Cloud relay', { tool });
188
+ return relayAdapter.sendViaRelay(tool, params, timeoutMs, agentName);
189
+ }
190
+ throw new Error('No Chrome Extension connected (direct WS or Cloud relay)');
184
191
  }
185
192
  const id = `cmd-${++this.commandCounter}-${Date.now()}`;
186
193
  const command = { id, tool, params };
@@ -204,24 +211,49 @@ export class BrowserBridgeService {
204
211
  });
205
212
  }
206
213
  /**
207
- * Get the current bridge status.
214
+ * Get the current bridge status, including relay availability.
208
215
  *
209
- * @returns Status information
216
+ * @returns Status information with direct WS and relay details
210
217
  */
211
218
  getStatus() {
219
+ const directConnected = this.clients.size > 0;
220
+ let relayAvailable = false;
221
+ let relayDeviceId = null;
222
+ try {
223
+ // Dynamic import avoided — use synchronous check
224
+ const { BrowserRelayAdapter } = require('./browser-relay-adapter.service.js');
225
+ const adapter = BrowserRelayAdapter.getInstance();
226
+ relayAvailable = adapter.isAvailable();
227
+ relayDeviceId = adapter.getExtensionDeviceId();
228
+ }
229
+ catch {
230
+ // Relay adapter not available
231
+ }
212
232
  return {
213
- connected: this.clients.size > 0,
233
+ connected: directConnected || relayAvailable,
214
234
  clientCount: this.clients.size,
215
235
  wsPath: BROWSER_BRIDGE_CONSTANTS.WS_PATH,
236
+ relayAvailable,
237
+ relayDeviceId,
216
238
  };
217
239
  }
218
240
  /**
219
- * Check if at least one Chrome Extension client is connected.
241
+ * Check if a Chrome Extension is reachable (direct WS or Cloud relay).
220
242
  *
221
- * @returns True if connected
243
+ * @returns True if connected via direct WS or relay is available
222
244
  */
223
245
  isConnected() {
224
- return this.clients.size > 0;
246
+ if (this.clients.size > 0)
247
+ return true;
248
+ // Check relay fallback
249
+ try {
250
+ const { BrowserRelayAdapter } = require('./browser-relay-adapter.service.js');
251
+ const adapter = BrowserRelayAdapter.getInstance();
252
+ return adapter.isAvailable();
253
+ }
254
+ catch {
255
+ return false;
256
+ }
225
257
  }
226
258
  /**
227
259
  * Get the first active (OPEN) client, cleaning up stale ones.
@@ -245,7 +277,7 @@ export class BrowserBridgeService {
245
277
  // Clear all pending commands
246
278
  for (const [id, pending] of this.pendingCommands) {
247
279
  clearTimeout(pending.timer);
248
- pending.reject(new Error('Browser Bridge shutting down'));
280
+ pending.reject(new Error('Crewly in Chrome bridge shutting down'));
249
281
  this.pendingCommands.delete(id);
250
282
  }
251
283
  // Close all client connections
@@ -263,7 +295,7 @@ export class BrowserBridgeService {
263
295
  this.wss.close();
264
296
  this.wss = null;
265
297
  }
266
- this.logger.info('Browser Bridge stopped');
298
+ this.logger.info('Crewly in Chrome bridge stopped');
267
299
  }
268
300
  }
269
301
  //# sourceMappingURL=browser-bridge.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-bridge.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-bridge.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-bridge.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-bridge.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Browser Proxy Service
3
+ *
4
+ * Connects to the Cloud Relay as an 'agent' and provides addressed messaging
5
+ * to browser instances. Any Crewly agent can call browser tools through this
6
+ * service without needing relay pairing.
7
+ *
8
+ * Architecture:
9
+ * Agent → /api/browser/* → BrowserProxyService → Cloud Relay → Extension
10
+ * Extension → Cloud Relay → BrowserProxyService → HTTP response → Agent
11
+ *
12
+ * @module services/browser/browser-proxy.service
13
+ */
14
+ import type { BrowserCommandResponse } from './browser-bridge.service.js';
15
+ /** Minimal info about a connected browser instance. */
16
+ export interface BrowserInstanceInfo {
17
+ /** Persistent UUID of the extension install */
18
+ instanceId: string;
19
+ /** User-set friendly name */
20
+ instanceName: string;
21
+ /** Relay session ID */
22
+ sessionId: string;
23
+ }
24
+ /** Connection state of the proxy to the cloud relay. */
25
+ export type ProxyConnectionState = 'disconnected' | 'connecting' | 'connected';
26
+ /**
27
+ * BrowserProxyService connects to the Cloud Relay and routes browser commands
28
+ * to specific extension instances using addressed messaging (relay_to).
29
+ *
30
+ * Singleton — one relay connection per backend instance.
31
+ */
32
+ export declare class BrowserProxyService {
33
+ private static instance;
34
+ private readonly logger;
35
+ /** WebSocket connection to cloud relay */
36
+ private ws;
37
+ /** Current relay session ID (assigned after registration) */
38
+ private sessionId;
39
+ /** Connection state */
40
+ private state;
41
+ /** Map of commandId → pending command awaiting response */
42
+ private pendingCommands;
43
+ /** Known browser instances from relay browser_list + browser_event */
44
+ private instances;
45
+ /** Command counter for unique IDs */
46
+ private commandCounter;
47
+ /** Heartbeat interval timer */
48
+ private heartbeatTimer;
49
+ /** Reconnect timer */
50
+ private reconnectTimer;
51
+ /** Auth token for relay registration */
52
+ private authToken;
53
+ /** Relay WebSocket URL */
54
+ private relayUrl;
55
+ /** Whether auto-reconnect is enabled */
56
+ private autoReconnect;
57
+ private constructor();
58
+ /**
59
+ * Get the singleton instance.
60
+ *
61
+ * @returns BrowserProxyService instance
62
+ */
63
+ static getInstance(): BrowserProxyService;
64
+ /**
65
+ * Reset singleton instance (for testing).
66
+ */
67
+ static resetInstance(): void;
68
+ /**
69
+ * Connect to the cloud relay WebSocket server.
70
+ *
71
+ * Registers as role 'agent' with a pairing code matching the backend identity.
72
+ * After connection, requests the browser instance list and subscribes to events.
73
+ *
74
+ * @param token - JWT auth token for relay registration
75
+ * @param relayUrl - Optional relay URL override
76
+ */
77
+ connect(token: string, relayUrl?: string): void;
78
+ /**
79
+ * Disconnect from the cloud relay.
80
+ */
81
+ disconnect(): void;
82
+ /**
83
+ * Check if the proxy is connected to the relay and has browser instances available.
84
+ *
85
+ * @returns True if connected and at least one browser instance is known
86
+ */
87
+ isAvailable(): boolean;
88
+ /**
89
+ * Check if the proxy has a live relay connection (even if no browsers registered yet).
90
+ *
91
+ * @returns True if WebSocket to relay is connected
92
+ */
93
+ isConnected(): boolean;
94
+ /**
95
+ * Get the current connection state.
96
+ *
97
+ * @returns Connection state string
98
+ */
99
+ getState(): ProxyConnectionState;
100
+ /**
101
+ * Get the list of known browser instances.
102
+ *
103
+ * @returns Array of browser instance info
104
+ */
105
+ getInstances(): BrowserInstanceInfo[];
106
+ /**
107
+ * Send a browser command to a specific instance (or the only connected one).
108
+ *
109
+ * Routes via relay_to addressed messaging. The command is forwarded by the
110
+ * relay server to the matching browser extension, which executes the tool
111
+ * and returns the response via relay_response.
112
+ *
113
+ * @param tool - Tool name (e.g. 'navigate', 'screenshot', 'getTabs')
114
+ * @param params - Tool parameters
115
+ * @param instance - Target instance name or ID (optional if only 1 connected)
116
+ * @param timeoutMs - Command timeout in milliseconds
117
+ * @param agentName - Agent name for extension banner display
118
+ * @returns Response from the Chrome Extension
119
+ * @throws Error if no instances available, target not found, or timeout
120
+ */
121
+ sendCommand(tool: string, params?: Record<string, unknown>, instance?: string, timeoutMs?: number, agentName?: string): Promise<BrowserCommandResponse>;
122
+ /**
123
+ * Resolve which browser instance to target.
124
+ *
125
+ * @param instance - Explicit instance name/ID, or undefined for auto-select
126
+ * @returns Matching BrowserInstanceInfo or null
127
+ */
128
+ private resolveInstance;
129
+ /**
130
+ * Handle incoming WebSocket message from the relay.
131
+ *
132
+ * @param raw - Raw JSON string
133
+ */
134
+ private handleMessage;
135
+ /**
136
+ * Handle browser_list message from relay.
137
+ *
138
+ * @param instances - Array of browser instance info from relay
139
+ */
140
+ private handleBrowserList;
141
+ /**
142
+ * Handle browser_event (connected/disconnected/updated) from relay.
143
+ *
144
+ * @param msg - Event message
145
+ */
146
+ private handleBrowserEvent;
147
+ /**
148
+ * Handle a relay payload (response from a browser instance).
149
+ *
150
+ * @param payload - JSON string containing the command response
151
+ */
152
+ private handleRelayPayload;
153
+ /**
154
+ * Send a raw JSON message to the relay WebSocket.
155
+ *
156
+ * @param msg - Message object to serialize and send
157
+ */
158
+ private sendRaw;
159
+ /**
160
+ * Start heartbeat interval to keep relay connection alive.
161
+ */
162
+ private startHeartbeat;
163
+ /**
164
+ * Stop heartbeat interval.
165
+ */
166
+ private stopHeartbeat;
167
+ /**
168
+ * Handle disconnection — clean up and optionally reconnect.
169
+ */
170
+ private handleDisconnect;
171
+ /**
172
+ * Full cleanup — close WebSocket, stop timers, clear state.
173
+ */
174
+ private cleanup;
175
+ }
176
+ //# sourceMappingURL=browser-proxy.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-proxy.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-proxy.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD,wDAAwD;AACxD,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,CAAC;AAW/E;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,0CAA0C;IAC1C,OAAO,CAAC,EAAE,CAA0B;IACpC,6DAA6D;IAC7D,OAAO,CAAC,SAAS,CAAuB;IACxC,uBAAuB;IACvB,OAAO,CAAC,KAAK,CAAwC;IACrD,2DAA2D;IAC3D,OAAO,CAAC,eAAe,CAA+C;IACtE,sEAAsE;IACtE,OAAO,CAAC,SAAS,CAA+C;IAChE,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAAK;IAC3B,+BAA+B;IAC/B,OAAO,CAAC,cAAc,CAA+C;IACrE,sBAAsB;IACtB,OAAO,CAAC,cAAc,CAA8C;IACpE,wCAAwC;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,0BAA0B;IAC1B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,wCAAwC;IACxC,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,mBAAmB;IAOzC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IA0C/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,QAAQ,IAAI,oBAAoB;IAIhC;;;;OAIG;IACH,YAAY,IAAI,mBAAmB,EAAE;IAIrC;;;;;;;;;;;;;;OAcG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,GAAE,MAAoD,EAC/D,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IAkDlC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAyDrB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,OAAO;CA4BhB"}