crewly 1.5.10 → 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 (177) 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/config/skills/orchestrator/update-team-member/SKILL.md +36 -0
  36. package/config/skills/orchestrator/update-team-member/execute.sh +25 -0
  37. package/dist/backend/backend/src/constants.d.ts +7 -4
  38. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  39. package/dist/backend/backend/src/constants.js +6 -3
  40. package/dist/backend/backend/src/constants.js.map +1 -1
  41. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +21 -2
  42. package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
  43. package/dist/backend/backend/src/controllers/browser/browser.controller.js +167 -29
  44. package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
  45. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts +1 -1
  46. package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
  47. package/dist/backend/backend/src/controllers/browser/browser.routes.js +7 -3
  48. package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
  49. package/dist/backend/backend/src/controllers/data/data.controller.d.ts +47 -0
  50. package/dist/backend/backend/src/controllers/data/data.controller.d.ts.map +1 -0
  51. package/dist/backend/backend/src/controllers/data/data.controller.js +201 -0
  52. package/dist/backend/backend/src/controllers/data/data.controller.js.map +1 -0
  53. package/dist/backend/backend/src/controllers/data/data.routes.d.ts +18 -0
  54. package/dist/backend/backend/src/controllers/data/data.routes.d.ts.map +1 -0
  55. package/dist/backend/backend/src/controllers/data/data.routes.js +44 -0
  56. package/dist/backend/backend/src/controllers/data/data.routes.js.map +1 -0
  57. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts +3 -2
  58. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.d.ts.map +1 -1
  59. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js +5 -3
  60. package/dist/backend/backend/src/controllers/monitoring/token-usage.controller.js.map +1 -1
  61. package/dist/backend/backend/src/controllers/system/cron-task.controller.d.ts +4 -0
  62. package/dist/backend/backend/src/controllers/system/cron-task.controller.d.ts.map +1 -1
  63. package/dist/backend/backend/src/controllers/system/cron-task.controller.js +20 -0
  64. package/dist/backend/backend/src/controllers/system/cron-task.controller.js.map +1 -1
  65. package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -1
  66. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +18 -0
  67. package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -1
  68. package/dist/backend/backend/src/controllers/team/team-export.controller.d.ts +32 -0
  69. package/dist/backend/backend/src/controllers/team/team-export.controller.d.ts.map +1 -0
  70. package/dist/backend/backend/src/controllers/team/team-export.controller.js +61 -0
  71. package/dist/backend/backend/src/controllers/team/team-export.controller.js.map +1 -0
  72. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  73. package/dist/backend/backend/src/controllers/team/team.controller.js +66 -46
  74. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  75. package/dist/backend/backend/src/controllers/team/team.routes.d.ts.map +1 -1
  76. package/dist/backend/backend/src/controllers/team/team.routes.js +7 -0
  77. package/dist/backend/backend/src/controllers/team/team.routes.js.map +1 -1
  78. package/dist/backend/backend/src/index.d.ts.map +1 -1
  79. package/dist/backend/backend/src/index.js +37 -7
  80. package/dist/backend/backend/src/index.js.map +1 -1
  81. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  82. package/dist/backend/backend/src/routes/api.routes.js +4 -1
  83. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  84. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/agent/agent-registration.service.js +6 -2
  86. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  87. package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
  88. package/dist/backend/backend/src/services/agent/idle-detection.service.js +17 -2
  89. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  90. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +1 -1
  91. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +2 -2
  92. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  93. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts +134 -0
  94. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts.map +1 -0
  95. package/dist/backend/backend/src/services/agent/task-planning.service.js +291 -0
  96. package/dist/backend/backend/src/services/agent/task-planning.service.js.map +1 -0
  97. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  98. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -0
  99. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  100. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +3 -3
  102. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  103. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +13 -9
  104. package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
  105. package/dist/backend/backend/src/services/browser/browser-bridge.service.js +44 -12
  106. package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
  107. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +176 -0
  108. package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -0
  109. package/dist/backend/backend/src/services/browser/browser-proxy.service.js +441 -0
  110. package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -0
  111. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +162 -0
  112. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -0
  113. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +350 -0
  114. package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -0
  115. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts +8 -0
  116. package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/cloud/cloud-initializer.js +27 -0
  118. package/dist/backend/backend/src/services/cloud/cloud-initializer.js.map +1 -1
  119. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  120. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  121. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +2 -0
  122. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  123. package/dist/backend/backend/src/services/core/team-export.service.d.ts +103 -0
  124. package/dist/backend/backend/src/services/core/team-export.service.d.ts.map +1 -0
  125. package/dist/backend/backend/src/services/core/team-export.service.js +182 -0
  126. package/dist/backend/backend/src/services/core/team-export.service.js.map +1 -0
  127. package/dist/backend/backend/src/services/data/data-object-store.service.d.ts +160 -0
  128. package/dist/backend/backend/src/services/data/data-object-store.service.d.ts.map +1 -0
  129. package/dist/backend/backend/src/services/data/data-object-store.service.js +434 -0
  130. package/dist/backend/backend/src/services/data/data-object-store.service.js.map +1 -0
  131. package/dist/backend/backend/src/services/data/data-object.types.d.ts +190 -0
  132. package/dist/backend/backend/src/services/data/data-object.types.d.ts.map +1 -0
  133. package/dist/backend/backend/src/services/data/data-object.types.js +143 -0
  134. package/dist/backend/backend/src/services/data/data-object.types.js.map +1 -0
  135. package/dist/backend/backend/src/services/data/schema-registry.service.d.ts +108 -0
  136. package/dist/backend/backend/src/services/data/schema-registry.service.d.ts.map +1 -0
  137. package/dist/backend/backend/src/services/data/schema-registry.service.js +290 -0
  138. package/dist/backend/backend/src/services/data/schema-registry.service.js.map +1 -0
  139. package/dist/backend/backend/src/services/data/sink-registry.service.d.ts +87 -0
  140. package/dist/backend/backend/src/services/data/sink-registry.service.d.ts.map +1 -0
  141. package/dist/backend/backend/src/services/data/sink-registry.service.js +188 -0
  142. package/dist/backend/backend/src/services/data/sink-registry.service.js.map +1 -0
  143. package/dist/backend/backend/src/services/messaging/message-router.service.d.ts.map +1 -1
  144. package/dist/backend/backend/src/services/messaging/message-router.service.js +7 -0
  145. package/dist/backend/backend/src/services/messaging/message-router.service.js.map +1 -1
  146. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +55 -2
  147. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  148. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +89 -5
  149. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  150. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +1 -1
  151. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  152. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +105 -14
  153. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  154. package/dist/backend/backend/src/services/workflow/cron-task.service.js +400 -123
  155. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  156. package/dist/backend/backend/src/types/cron-task.types.d.ts +1 -1
  157. package/dist/backend/backend/src/types/data-object.types.d.ts +117 -0
  158. package/dist/backend/backend/src/types/data-object.types.d.ts.map +1 -0
  159. package/dist/backend/backend/src/types/data-object.types.js +23 -0
  160. package/dist/backend/backend/src/types/data-object.types.js.map +1 -0
  161. package/dist/backend/backend/src/types/settings.types.js +1 -1
  162. package/dist/backend/config/constants.d.ts +3 -3
  163. package/dist/backend/config/constants.js +3 -3
  164. package/dist/backend/config/constants.js.map +1 -1
  165. package/dist/cli/backend/src/constants.d.ts +7 -4
  166. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  167. package/dist/cli/backend/src/constants.js +6 -3
  168. package/dist/cli/backend/src/constants.js.map +1 -1
  169. package/dist/cli/backend/src/types/settings.types.js +1 -1
  170. package/dist/cli/config/constants.d.ts +3 -3
  171. package/dist/cli/config/constants.js +3 -3
  172. package/dist/cli/config/constants.js.map +1 -1
  173. package/frontend/dist/assets/index-371b68d4.css +33 -0
  174. package/frontend/dist/assets/{index-76782e9e.js → index-506f70da.js} +321 -321
  175. package/frontend/dist/index.html +2 -2
  176. package/package.json +1 -1
  177. package/frontend/dist/assets/index-b19b2478.css +0 -33
@@ -1,73 +1,211 @@
1
1
  /**
2
2
  * Browser Controller
3
3
  *
4
- * REST API handlers for the Browser Bridge. Each handler translates an
4
+ * REST API handlers for Crewly in Chrome. Each handler translates an
5
5
  * HTTP request into a WebSocket command sent to the connected Chrome
6
6
  * Extension, waits for the response, and returns it as JSON.
7
7
  *
8
8
  * @module controllers/browser/browser.controller
9
9
  */
10
10
  import { BrowserBridgeService } from '../../services/browser/browser-bridge.service.js';
11
+ import { BrowserProxyService } from '../../services/browser/browser-proxy.service.js';
12
+ import { CloudClientService } from '../../services/cloud/cloud-client.service.js';
11
13
  /**
12
14
  * GET /api/browser/status
13
- * Returns the current browser bridge connection status.
15
+ * Returns the current Crewly in Chrome connection status,
16
+ * including proxy relay state and available browser instances.
14
17
  *
15
18
  * @param _req - Express request (unused)
16
19
  * @param res - Express response
17
20
  */
18
21
  export function getStatus(_req, res) {
19
22
  const bridge = BrowserBridgeService.getInstance();
20
- res.json(bridge.getStatus());
23
+ const proxy = BrowserProxyService.getInstance();
24
+ const bridgeStatus = bridge.getStatus();
25
+ res.json({
26
+ ...bridgeStatus,
27
+ proxy: {
28
+ state: proxy.getState(),
29
+ available: proxy.isAvailable(),
30
+ instances: proxy.getInstances(),
31
+ },
32
+ });
21
33
  }
22
34
  /**
23
- * Helper: send a tool command to the Chrome Extension and return the result.
24
- * Handles the common pattern of forwarding a REST request to the WS bridge.
25
- * Extracts agent name from X-Agent-Session header if present.
35
+ * GET /api/browser/instances
36
+ * List all connected browser instances available for command routing.
26
37
  *
27
- * @param req - Express request (for extracting agent metadata)
28
- * @param res - Express response object
29
- * @param tool - Chrome Extension tool name
30
- * @param params - Tool parameters
31
- * @param timeoutMs - Optional command timeout
38
+ * @param _req - Express request (unused)
39
+ * @param res - Express response
32
40
  */
33
- async function sendToolCommand(req, res, tool, params, timeoutMs) {
41
+ export function getInstances(_req, res) {
34
42
  const bridge = BrowserBridgeService.getInstance();
35
- if (!bridge.isConnected()) {
36
- res.status(503).json({
37
- success: false,
38
- error: 'No Chrome browser connected. Please connect the Crewly Chrome Extension first.',
39
- code: 'NO_BROWSER_CLIENT',
43
+ const proxy = BrowserProxyService.getInstance();
44
+ // Combine direct WS clients and relay proxy instances
45
+ const directClients = bridge.getStatus().clientCount;
46
+ const proxyInstances = proxy.getInstances();
47
+ res.json({
48
+ success: true,
49
+ instances: proxyInstances,
50
+ directClientCount: directClients,
51
+ proxyConnected: proxy.isConnected(),
52
+ });
53
+ }
54
+ /**
55
+ * POST /api/browser/proxy/connect
56
+ * Manually connect the BrowserProxyService to the Cloud Relay.
57
+ * Uses the current CloudClientService token. Call this when the proxy
58
+ * is disconnected but the cloud connection is active.
59
+ *
60
+ * @param _req - Express request (unused)
61
+ * @param res - Express response
62
+ */
63
+ export async function connectProxy(_req, res) {
64
+ const proxy = BrowserProxyService.getInstance();
65
+ if (proxy.isConnected()) {
66
+ res.json({
67
+ success: true,
68
+ message: 'Proxy already connected',
69
+ state: proxy.getState(),
70
+ instances: proxy.getInstances(),
40
71
  });
41
72
  return;
42
73
  }
43
- // Extract agent name: prefer explicit body/header name, fall back to session header.
44
- // Session names look like "crewly-product-max-118c0421" — extract "max" as friendly name.
74
+ try {
75
+ const cloudClient = CloudClientService.getInstance();
76
+ const token = cloudClient.getToken();
77
+ if (!token) {
78
+ res.status(400).json({
79
+ success: false,
80
+ error: 'No cloud token available. Connect to Cloud first via /api/cloud/connect.',
81
+ });
82
+ return;
83
+ }
84
+ proxy.connect(token);
85
+ // Wait a moment for the WS connection + registration to complete
86
+ await new Promise((resolve) => setTimeout(resolve, 3000));
87
+ res.json({
88
+ success: true,
89
+ message: 'Proxy connecting to Cloud Relay',
90
+ state: proxy.getState(),
91
+ instances: proxy.getInstances(),
92
+ });
93
+ }
94
+ catch (err) {
95
+ res.status(500).json({
96
+ success: false,
97
+ error: err.message,
98
+ });
99
+ }
100
+ }
101
+ /**
102
+ * Extract the target browser instance from the request query or body.
103
+ *
104
+ * @param req - Express request
105
+ * @returns Instance name/ID string or undefined for auto-select
106
+ */
107
+ function resolveInstanceParam(req) {
108
+ return req.query.instance
109
+ || req.body?.instance
110
+ || undefined;
111
+ }
112
+ /**
113
+ * Extract the agent name from request headers or body.
114
+ * Session names look like "crewly-product-max-118c0421" — extracts "max".
115
+ *
116
+ * @param req - Express request
117
+ * @returns Agent name string or undefined
118
+ */
119
+ function extractAgentName(req) {
45
120
  let agentName = req.body?.agentName
46
121
  || req.headers['x-agent-name']
47
122
  || undefined;
48
123
  if (!agentName) {
49
124
  const session = req.headers['x-agent-session'];
50
125
  if (session) {
51
- // Extract friendly name from session: "crewly-product-max-118c0421" → "max"
52
126
  const parts = session.split('-');
53
127
  if (parts.length >= 3) {
54
- agentName = parts[parts.length - 2]; // second-to-last part is the name
128
+ agentName = parts[parts.length - 2];
55
129
  }
56
130
  else {
57
131
  agentName = session;
58
132
  }
59
133
  }
60
134
  }
61
- try {
62
- const result = await bridge.sendCommand(tool, params, timeoutMs, agentName);
63
- res.json(result);
135
+ return agentName;
136
+ }
137
+ /**
138
+ * Helper: send a tool command to the Chrome Extension and return the result.
139
+ *
140
+ * Tries three paths in order:
141
+ * 1. Direct WebSocket (BrowserBridgeService) — fastest
142
+ * 2. Browser Proxy (BrowserProxyService via Cloud Relay relay_to) — supports multi-instance
143
+ * 3. Legacy relay adapter (BrowserRelayAdapter via CloudSync HTTP queue) — fallback
144
+ *
145
+ * Supports `?instance=` query param for targeting a specific browser instance.
146
+ *
147
+ * @param req - Express request (for extracting agent metadata and instance param)
148
+ * @param res - Express response object
149
+ * @param tool - Chrome Extension tool name
150
+ * @param params - Tool parameters
151
+ * @param timeoutMs - Optional command timeout
152
+ */
153
+ async function sendToolCommand(req, res, tool, params, timeoutMs) {
154
+ const bridge = BrowserBridgeService.getInstance();
155
+ const proxy = BrowserProxyService.getInstance();
156
+ const instance = resolveInstanceParam(req);
157
+ const agentName = extractAgentName(req);
158
+ // Path 1: If a specific instance is requested AND proxy is available, use proxy
159
+ if (instance && proxy.isAvailable()) {
160
+ try {
161
+ const result = await proxy.sendCommand(tool, params, instance, timeoutMs, agentName);
162
+ res.json(result);
163
+ return;
164
+ }
165
+ catch (err) {
166
+ res.status(504).json({
167
+ success: false,
168
+ error: err.message,
169
+ });
170
+ return;
171
+ }
64
172
  }
65
- catch (err) {
66
- res.status(504).json({
67
- success: false,
68
- error: err.message,
69
- });
173
+ // Path 2: Direct WebSocket connection (fastest, no instance routing)
174
+ if (bridge.isConnected()) {
175
+ try {
176
+ const result = await bridge.sendCommand(tool, params, timeoutMs, agentName);
177
+ res.json(result);
178
+ return;
179
+ }
180
+ catch (err) {
181
+ res.status(504).json({
182
+ success: false,
183
+ error: err.message,
184
+ });
185
+ return;
186
+ }
187
+ }
188
+ // Path 3: Proxy relay (relay_to addressed messaging)
189
+ if (proxy.isAvailable()) {
190
+ try {
191
+ const result = await proxy.sendCommand(tool, params, instance, timeoutMs, agentName);
192
+ res.json(result);
193
+ return;
194
+ }
195
+ catch (err) {
196
+ res.status(504).json({
197
+ success: false,
198
+ error: err.message,
199
+ });
200
+ return;
201
+ }
70
202
  }
203
+ // No path available
204
+ res.status(503).json({
205
+ success: false,
206
+ error: 'No Chrome browser connected. Please connect the Crewly Chrome Extension first.',
207
+ code: 'NO_BROWSER_CLIENT',
208
+ });
71
209
  }
72
210
  /**
73
211
  * POST /api/browser/navigate
@@ -1 +1 @@
1
- {"version":3,"file":"browser.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/browser/browser.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/browser/browser.controller.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Browser Routes
3
3
  *
4
- * Router configuration for Browser Bridge REST API endpoints.
4
+ * Router configuration for Crewly in Chrome REST API endpoints.
5
5
  * These endpoints are called by the remote-browser skill to control
6
6
  * the user's Chrome browser via the WebSocket bridge.
7
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"browser.routes.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/browser/browser.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA2BjC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAyE5C"}
1
+ {"version":3,"file":"browser.routes.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/browser/browser.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA6BjC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA+E5C"}
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Browser Routes
3
3
  *
4
- * Router configuration for Browser Bridge REST API endpoints.
4
+ * Router configuration for Crewly in Chrome REST API endpoints.
5
5
  * These endpoints are called by the remote-browser skill to control
6
6
  * the user's Chrome browser via the WebSocket bridge.
7
7
  *
8
8
  * @module controllers/browser/browser.routes
9
9
  */
10
10
  import { Router } from 'express';
11
- import { getStatus, navigate, screenshot, readText, getTabs, execute, click, fill, type, scroll, scrollInElement, hover, pressKey, getElement, waitForSelector, getCookies, getLocalStorage, getConsole, fullPageScreenshot, getInteractiveElements, searchText, listOptions, setFileInput, } from './browser.controller.js';
11
+ import { getStatus, getInstances, connectProxy, navigate, screenshot, readText, getTabs, execute, click, fill, type, scroll, scrollInElement, hover, pressKey, getElement, waitForSelector, getCookies, getLocalStorage, getConsole, fullPageScreenshot, getInteractiveElements, searchText, listOptions, setFileInput, } from './browser.controller.js';
12
12
  /**
13
13
  * Create the browser bridge router with all browser control endpoints.
14
14
  *
@@ -16,8 +16,12 @@ import { getStatus, navigate, screenshot, readText, getTabs, execute, click, fil
16
16
  */
17
17
  export function createBrowserRouter() {
18
18
  const router = Router();
19
- // GET /api/browser/status — connection status
19
+ // GET /api/browser/status — connection status (includes proxy + instances)
20
20
  router.get('/status', getStatus);
21
+ // GET /api/browser/instances — list connected browser instances
22
+ router.get('/instances', getInstances);
23
+ // POST /api/browser/proxy/connect — manually connect proxy to Cloud Relay
24
+ router.post('/proxy/connect', connectProxy);
21
25
  // GET /api/browser/tabs — list open tabs
22
26
  router.get('/tabs', getTabs);
23
27
  // GET /api/browser/cookies — get cookies (optional ?domain=)
@@ -1 +1 @@
1
- {"version":3,"file":"browser.routes.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/browser/browser.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EACN,SAAS,EACT,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,eAAe,EACf,KAAK,EACL,QAAQ,EACR,UAAU,EACV,eAAe,EACf,UAAU,EACV,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,YAAY,GACZ,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAClC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,8CAA8C;IAC9C,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjC,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE7B,6DAA6D;IAC7D,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEnC,yEAAyE;IACzE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEnC,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEnC,oDAAoD;IACpD,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAEvC,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEpC,iDAAiD;IACjD,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEjC,yDAAyD;IACzD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE7B,2CAA2C;IAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE3B,gDAAgD;IAChD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE3B,yCAAyC;IACzC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE/B,8DAA8D;IAC9D,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAEnD,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE7B,mDAAmD;IACnD,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEpC,mDAAmD;IACnD,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAExC,yDAAyD;IACzD,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAEnD,sDAAsD;IACtD,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAE/C,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;IAEzD,yEAAyE;IACzE,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;IAEjE,0DAA0D;IAC1D,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAExC,uDAAuD;IACvD,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAE1C,qEAAqE;IACrE,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"browser.routes.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/browser/browser.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Data Controller — V2 Data Architecture
3
+ *
4
+ * REST API handlers for the Unified Data Model.
5
+ * Delegates to DataObjectStore, SchemaRegistry, and SinkRegistry services.
6
+ *
7
+ * @see specs/crewly-data-architecture-v2.md
8
+ * @module controllers/data/data.controller
9
+ */
10
+ import type { Request, Response } from 'express';
11
+ /**
12
+ * GET /api/v2/data/objects — List DataObjects with optional filters.
13
+ */
14
+ export declare function listDataObjects(req: Request, res: Response): Promise<void>;
15
+ /**
16
+ * GET /api/v2/data/objects/:id — Fetch a single DataObject by ID.
17
+ */
18
+ export declare function getDataObject(req: Request, res: Response): Promise<void>;
19
+ /**
20
+ * POST /api/v2/data/objects — Create a new DataObject.
21
+ */
22
+ export declare function createDataObject(req: Request, res: Response): Promise<void>;
23
+ /**
24
+ * PATCH /api/v2/data/objects/:id — Update a DataObject.
25
+ */
26
+ export declare function updateDataObject(req: Request, res: Response): Promise<void>;
27
+ /**
28
+ * DELETE /api/v2/data/objects/:id — Delete or archive a DataObject.
29
+ */
30
+ export declare function deleteDataObject(req: Request, res: Response): Promise<void>;
31
+ /**
32
+ * GET /api/v2/data/schemas — List all available schemas.
33
+ */
34
+ export declare function listSchemas(_req: Request, res: Response): Promise<void>;
35
+ /**
36
+ * GET /api/v2/data/sinks — List all registered sinks.
37
+ */
38
+ export declare function listSinks(_req: Request, res: Response): Promise<void>;
39
+ /**
40
+ * POST /api/v2/data/sinks/:sinkId — Ingest data into a specific sink.
41
+ */
42
+ export declare function ingestToSink(req: Request, res: Response): Promise<void>;
43
+ /**
44
+ * GET /api/v2/data/sync/status — Check dual-machine sync health.
45
+ */
46
+ export declare function getSyncStatus(_req: Request, res: Response): Promise<void>;
47
+ //# sourceMappingURL=data.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/data/data.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAYjD;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBjF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Data Controller — V2 Data Architecture
3
+ *
4
+ * REST API handlers for the Unified Data Model.
5
+ * Delegates to DataObjectStore, SchemaRegistry, and SinkRegistry services.
6
+ *
7
+ * @see specs/crewly-data-architecture-v2.md
8
+ * @module controllers/data/data.controller
9
+ */
10
+ /**
11
+ * Resolve the active project path from the request or environment.
12
+ *
13
+ * @returns Absolute project path
14
+ */
15
+ function resolveProjectPath() {
16
+ return process.env.CREWLY_PROJECT_PATH || process.cwd();
17
+ }
18
+ /**
19
+ * GET /api/v2/data/objects — List DataObjects with optional filters.
20
+ */
21
+ export async function listDataObjects(req, res) {
22
+ try {
23
+ const { DataObjectStore } = await import('../../services/data/data-object-store.service.js');
24
+ const store = DataObjectStore.getInstance(resolveProjectPath());
25
+ const filters = {
26
+ type: req.query.type,
27
+ scope: req.query.scope,
28
+ status: req.query.status,
29
+ namespace: req.query.namespace,
30
+ owner_id: req.query.owner_id,
31
+ tags: req.query.tags ? req.query.tags.split(',') : undefined,
32
+ };
33
+ const objects = await store.list(filters);
34
+ res.json({ success: true, data: objects, count: objects.length });
35
+ }
36
+ catch (err) {
37
+ res.status(500).json({ success: false, error: err.message });
38
+ }
39
+ }
40
+ /**
41
+ * GET /api/v2/data/objects/:id — Fetch a single DataObject by ID.
42
+ */
43
+ export async function getDataObject(req, res) {
44
+ try {
45
+ const { DataObjectStore } = await import('../../services/data/data-object-store.service.js');
46
+ const store = DataObjectStore.getInstance(resolveProjectPath());
47
+ const obj = await store.getById(req.params.id);
48
+ if (!obj) {
49
+ res.status(404).json({ success: false, error: 'DataObject not found' });
50
+ return;
51
+ }
52
+ res.json({ success: true, data: obj });
53
+ }
54
+ catch (err) {
55
+ res.status(500).json({ success: false, error: err.message });
56
+ }
57
+ }
58
+ /**
59
+ * POST /api/v2/data/objects — Create a new DataObject.
60
+ */
61
+ export async function createDataObject(req, res) {
62
+ try {
63
+ const { DataObjectStore } = await import('../../services/data/data-object-store.service.js');
64
+ const store = DataObjectStore.getInstance(resolveProjectPath());
65
+ const { type, scope, schema_id, owner_id, namespace, payload, tags, source_thread_id, confidence_score } = req.body;
66
+ if (!type || !scope || !owner_id || !namespace) {
67
+ res.status(400).json({ success: false, error: 'Missing required fields: type, scope, owner_id, namespace' });
68
+ return;
69
+ }
70
+ if (schema_id) {
71
+ try {
72
+ const { SchemaRegistryService } = await import('../../services/data/schema-registry.service.js');
73
+ const result = SchemaRegistryService.getInstance().validate(schema_id, payload || {});
74
+ if (!result.valid) {
75
+ res.status(422).json({ success: false, error: 'Schema validation failed', validationErrors: result.errors });
76
+ return;
77
+ }
78
+ }
79
+ catch { /* schema service not loaded */ }
80
+ }
81
+ const obj = await store.create({ type, scope, schema_id: schema_id || '', owner_id, namespace, payload: payload || {}, tags: tags || [], source_thread_id, confidence_score });
82
+ res.status(201).json({ success: true, data: obj });
83
+ }
84
+ catch (err) {
85
+ res.status(500).json({ success: false, error: err.message });
86
+ }
87
+ }
88
+ /**
89
+ * PATCH /api/v2/data/objects/:id — Update a DataObject.
90
+ */
91
+ export async function updateDataObject(req, res) {
92
+ try {
93
+ const { DataObjectStore } = await import('../../services/data/data-object-store.service.js');
94
+ const store = DataObjectStore.getInstance(resolveProjectPath());
95
+ const obj = await store.update(req.params.id, req.body);
96
+ if (!obj) {
97
+ res.status(404).json({ success: false, error: 'DataObject not found' });
98
+ return;
99
+ }
100
+ res.json({ success: true, data: obj });
101
+ }
102
+ catch (err) {
103
+ res.status(500).json({ success: false, error: err.message });
104
+ }
105
+ }
106
+ /**
107
+ * DELETE /api/v2/data/objects/:id — Delete or archive a DataObject.
108
+ */
109
+ export async function deleteDataObject(req, res) {
110
+ try {
111
+ const { DataObjectStore } = await import('../../services/data/data-object-store.service.js');
112
+ const store = DataObjectStore.getInstance(resolveProjectPath());
113
+ if (req.query.hard === 'true') {
114
+ const deleted = await store.delete(req.params.id);
115
+ if (!deleted) {
116
+ res.status(404).json({ success: false, error: 'DataObject not found' });
117
+ return;
118
+ }
119
+ res.json({ success: true, message: 'DataObject permanently deleted' });
120
+ }
121
+ else {
122
+ const obj = await store.update(req.params.id, { status: 'archived' });
123
+ if (!obj) {
124
+ res.status(404).json({ success: false, error: 'DataObject not found' });
125
+ return;
126
+ }
127
+ res.json({ success: true, data: obj, message: 'DataObject archived' });
128
+ }
129
+ }
130
+ catch (err) {
131
+ res.status(500).json({ success: false, error: err.message });
132
+ }
133
+ }
134
+ /**
135
+ * GET /api/v2/data/schemas — List all available schemas.
136
+ */
137
+ export async function listSchemas(_req, res) {
138
+ try {
139
+ const { SchemaRegistryService } = await import('../../services/data/schema-registry.service.js');
140
+ res.json({ success: true, data: SchemaRegistryService.getInstance().listSchemas() });
141
+ }
142
+ catch (err) {
143
+ res.status(500).json({ success: false, error: err.message });
144
+ }
145
+ }
146
+ /**
147
+ * GET /api/v2/data/sinks — List all registered sinks.
148
+ */
149
+ export async function listSinks(_req, res) {
150
+ try {
151
+ const { SinkRegistryService } = await import('../../services/data/sink-registry.service.js');
152
+ res.json({ success: true, data: SinkRegistryService.getInstance().listSinks() });
153
+ }
154
+ catch (err) {
155
+ res.status(500).json({ success: false, error: err.message });
156
+ }
157
+ }
158
+ /**
159
+ * POST /api/v2/data/sinks/:sinkId — Ingest data into a specific sink.
160
+ */
161
+ export async function ingestToSink(req, res) {
162
+ try {
163
+ const { SinkRegistryService } = await import('../../services/data/sink-registry.service.js');
164
+ const { DataObjectStore } = await import('../../services/data/data-object-store.service.js');
165
+ const sinkRegistry = SinkRegistryService.getInstance();
166
+ const store = DataObjectStore.getInstance(resolveProjectPath());
167
+ const sink = sinkRegistry.getSink(req.params.sinkId);
168
+ if (!sink) {
169
+ res.status(404).json({ success: false, error: `Sink "${req.params.sinkId}" not found` });
170
+ return;
171
+ }
172
+ const { data, owner_id } = req.body;
173
+ if (!data || typeof data !== 'object') {
174
+ res.status(400).json({ success: false, error: 'Missing required field: data (object)' });
175
+ return;
176
+ }
177
+ if (sink.schema_id) {
178
+ try {
179
+ const { SchemaRegistryService: SR } = await import('../../services/data/schema-registry.service.js');
180
+ const result = SR.getInstance().validate(sink.schema_id, data);
181
+ if (!result.valid) {
182
+ res.status(422).json({ success: false, error: 'Schema validation failed', validationErrors: result.errors, sink: sink.id });
183
+ return;
184
+ }
185
+ }
186
+ catch { /* schema service not loaded */ }
187
+ }
188
+ const obj = await store.create({ type: 'sink_entry', scope: 'project', schema_id: sink.schema_id || '', owner_id: owner_id || 'system', namespace: sink.id, payload: data, tags: [], source_thread_id: req.body.source_thread_id });
189
+ res.status(201).json({ success: true, data: obj, sink: sink.id, message: `Data ingested into sink "${sink.name}"` });
190
+ }
191
+ catch (err) {
192
+ res.status(500).json({ success: false, error: err.message });
193
+ }
194
+ }
195
+ /**
196
+ * GET /api/v2/data/sync/status — Check dual-machine sync health.
197
+ */
198
+ export async function getSyncStatus(_req, res) {
199
+ res.json({ success: true, data: { syncEnabled: false, localObjects: 0, syncedObjects: 0, conflictObjects: 0, lastSyncAt: null, message: 'Sync not yet enabled (Phase 3)' } });
200
+ }
201
+ //# sourceMappingURL=data.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/data/data.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Data API Routes — V2 Data Architecture
3
+ *
4
+ * REST endpoints for the Unified Data Model (UDM).
5
+ * Provides CRUD for DataObjects, schema listing, sink ingestion,
6
+ * and sync status.
7
+ *
8
+ * @see specs/crewly-data-architecture-v2.md — Section 7
9
+ * @module controllers/data/data.routes
10
+ */
11
+ import { Router } from 'express';
12
+ /**
13
+ * Create the Data API router for /api/v2/data routes.
14
+ *
15
+ * @returns Express router with all data endpoints
16
+ */
17
+ export declare function createDataRouter(): Router;
18
+ //# sourceMappingURL=data.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.routes.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/data/data.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAajC;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAmCzC"}