@crewx/sdk 0.8.0-rc.80 → 0.8.0-rc.82

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 (217) hide show
  1. package/dist/__tests__/adapter/context-builder.test.d.ts +1 -0
  2. package/dist/__tests__/adapter/plugin-helper.test.d.ts +1 -0
  3. package/dist/__tests__/adapter/registration-integration.test.d.ts +1 -0
  4. package/dist/__tests__/adapter/scoped-store.test.d.ts +1 -0
  5. package/dist/__tests__/plugins/conversation.test.d.ts +1 -0
  6. package/dist/__tests__/testing/createMockContext.test.d.ts +1 -0
  7. package/dist/adapter/context-builder.d.ts +0 -9
  8. package/dist/adapter/index.d.ts +0 -1
  9. package/dist/adapter/plugin-helper.d.ts +0 -7
  10. package/dist/adapter/scoped-store.d.ts +0 -10
  11. package/dist/adapter/types.d.ts +0 -7
  12. package/dist/agent/resolver.d.ts +0 -13
  13. package/dist/boxing/box-storage.interface.d.ts +0 -4
  14. package/dist/boxing/box.service.d.ts +0 -4
  15. package/dist/boxing/box.types.d.ts +0 -4
  16. package/dist/boxing/context-builder.d.ts +0 -4
  17. package/dist/client/CrewxClient.d.ts +0 -32
  18. package/dist/client/index.d.ts +0 -1
  19. package/dist/client/index.js +1 -6
  20. package/dist/config/loader.browser.d.ts +0 -8
  21. package/dist/config/loader.d.ts +0 -12
  22. package/dist/conversation/__tests__/sqlite-provider.test.d.ts +1 -0
  23. package/dist/conversation/__tests__/to-task-reader.test.d.ts +1 -0
  24. package/dist/conversation/index.d.ts +0 -1
  25. package/dist/conversation/sqlite-provider.d.ts +0 -9
  26. package/dist/conversation/to-task-reader.d.ts +0 -11
  27. package/dist/conversation/to-template-messages.d.ts +0 -13
  28. package/dist/conversation/types.d.ts +0 -58
  29. package/dist/esm/client/index.js +1 -0
  30. package/dist/esm/hooks/index.js +7 -0
  31. package/dist/esm/index.js +79 -0
  32. package/dist/esm/plugins/index.js +52 -0
  33. package/dist/esm/testing/index.js +1 -0
  34. package/dist/esm/tools/node/index.js +36 -0
  35. package/dist/events/TypedEventEmitter.d.ts +0 -24
  36. package/dist/events/types.d.ts +0 -43
  37. package/dist/facade/Crewx.browser.d.ts +0 -40
  38. package/dist/facade/Crewx.d.ts +0 -163
  39. package/dist/hooks/define.d.ts +0 -1
  40. package/dist/hooks/dispatch.d.ts +0 -12
  41. package/dist/hooks/index.d.ts +0 -1
  42. package/dist/hooks/index.js +7 -24
  43. package/dist/hooks/observer.d.ts +0 -1
  44. package/dist/hooks/plugin.d.ts +0 -1
  45. package/dist/hooks/tool-normalize.d.ts +0 -26
  46. package/dist/hooks/types.d.ts +0 -1
  47. package/dist/hooks/yaml-plugin.d.ts +0 -1
  48. package/dist/index.browser.d.ts +0 -7
  49. package/dist/index.browser.js +2 -25
  50. package/dist/index.d.ts +0 -4
  51. package/dist/index.js +79 -151
  52. package/dist/layout/loader.d.ts +0 -20
  53. package/dist/layout/props-validator.d.ts +0 -6
  54. package/dist/layout/renderer.d.ts +0 -24
  55. package/dist/layout/types.d.ts +0 -42
  56. package/dist/parallel/agent-runtime.d.ts +0 -11
  57. package/dist/parallel/helpers.d.ts +0 -1
  58. package/dist/parallel/index.d.ts +0 -1
  59. package/dist/parallel/parallel-runner.d.ts +0 -8
  60. package/dist/parallel/types.d.ts +0 -24
  61. package/dist/parsers/agent-call.util.d.ts +0 -3
  62. package/dist/parsers/claude.parser.d.ts +0 -8
  63. package/dist/parsers/codex.parser.d.ts +0 -8
  64. package/dist/parsers/copilot.parser.d.ts +0 -9
  65. package/dist/parsers/gemini.parser.d.ts +0 -10
  66. package/dist/parsers/opencode.parser.d.ts +0 -10
  67. package/dist/parsers/router.d.ts +0 -5
  68. package/dist/paths.d.ts +1 -0
  69. package/dist/platform/BrowserFsAdapter.d.ts +0 -20
  70. package/dist/platform/IFsAdapter.d.ts +0 -23
  71. package/dist/platform/NodeFsAdapter.d.ts +0 -8
  72. package/dist/plugin/plugin-provider.d.ts +0 -22
  73. package/dist/plugin/types.d.ts +0 -31
  74. package/dist/plugin.d.ts +0 -27
  75. package/dist/plugins/conversation.d.ts +0 -2
  76. package/dist/plugins/file-logger.d.ts +0 -13
  77. package/dist/plugins/index.d.ts +0 -10
  78. package/dist/plugins/index.js +52 -19
  79. package/dist/plugins/sqlite-tracing.d.ts +0 -13
  80. package/dist/plugins/sqlite-tracing.spec.d.ts +1 -0
  81. package/dist/provider/bridge.browser.d.ts +0 -20
  82. package/dist/provider/bridge.d.ts +0 -47
  83. package/dist/provider/parse-usage.d.ts +0 -14
  84. package/dist/provider/register-api.d.ts +0 -7
  85. package/dist/provider/vercel-runtime.d.ts +0 -29
  86. package/dist/remote/index.d.ts +0 -6
  87. package/dist/remote/remote-agent-manager.d.ts +0 -31
  88. package/dist/remote/remote-provider.d.ts +0 -15
  89. package/dist/remote/remote-transport.d.ts +0 -17
  90. package/dist/remote/types.d.ts +0 -59
  91. package/dist/server/auth.d.ts +0 -16
  92. package/dist/server/handler.d.ts +0 -17
  93. package/dist/server/index.d.ts +0 -4
  94. package/dist/server/tool-adapter.d.ts +0 -16
  95. package/dist/template/engine.d.ts +0 -19
  96. package/dist/template/helpers/exec.browser.d.ts +0 -7
  97. package/dist/template/helpers/exec.d.ts +0 -45
  98. package/dist/template/helpers/fenced_code.d.ts +0 -16
  99. package/dist/template/helpers/format-conversation.d.ts +0 -22
  100. package/dist/template/helpers/include.d.ts +0 -15
  101. package/dist/template/helpers/p1p2.d.ts +0 -32
  102. package/dist/template/loader/DocumentLoader.d.ts +0 -30
  103. package/dist/template/types.d.ts +0 -30
  104. package/dist/testing/index.d.ts +0 -1
  105. package/dist/testing/index.js +1 -16
  106. package/dist/testing/mock-audit.d.ts +0 -1
  107. package/dist/testing/mock-context.d.ts +0 -1
  108. package/dist/testing/mock-logger.d.ts +0 -1
  109. package/dist/testing/mock-router.d.ts +0 -1
  110. package/dist/testing/mock-storage.d.ts +0 -1
  111. package/dist/testing/mock-store.d.ts +0 -1
  112. package/dist/tools/delegate.d.ts +0 -7
  113. package/dist/tools/index.d.ts +0 -4
  114. package/dist/tools/node/builtin.d.ts +0 -16
  115. package/dist/tools/node/index.d.ts +0 -20
  116. package/dist/tools/node/index.js +36 -59
  117. package/dist/types/index.d.ts +0 -20
  118. package/dist/types/task-log.types.d.ts +0 -4
  119. package/dist/utils/env-defaults.d.ts +0 -16
  120. package/dist/utils/glob-match.d.ts +0 -16
  121. package/dist/utils/id.d.ts +0 -15
  122. package/dist/utils/timestamp.d.ts +0 -1
  123. package/dist/utils/workspace.d.ts +0 -4
  124. package/package.json +24 -25
  125. package/dist/adapter/context-builder.js +0 -87
  126. package/dist/adapter/index.js +0 -21
  127. package/dist/adapter/plugin-helper.js +0 -45
  128. package/dist/adapter/scoped-store.js +0 -43
  129. package/dist/adapter/types.js +0 -23
  130. package/dist/agent/resolver.js +0 -46
  131. package/dist/boxing/box-storage.interface.js +0 -6
  132. package/dist/boxing/box.service.js +0 -73
  133. package/dist/boxing/box.types.js +0 -6
  134. package/dist/boxing/context-builder.js +0 -79
  135. package/dist/client/CrewxClient.js +0 -86
  136. package/dist/config/loader.browser.js +0 -59
  137. package/dist/config/loader.js +0 -95
  138. package/dist/conversation/index.js +0 -25
  139. package/dist/conversation/sqlite-provider.js +0 -178
  140. package/dist/conversation/to-task-reader.js +0 -28
  141. package/dist/conversation/to-template-messages.js +0 -34
  142. package/dist/conversation/types.js +0 -10
  143. package/dist/events/TypedEventEmitter.js +0 -65
  144. package/dist/events/types.js +0 -9
  145. package/dist/facade/Crewx.browser.js +0 -314
  146. package/dist/facade/Crewx.js +0 -1299
  147. package/dist/hooks/define.js +0 -13
  148. package/dist/hooks/dispatch.js +0 -147
  149. package/dist/hooks/observer.js +0 -60
  150. package/dist/hooks/plugin.js +0 -17
  151. package/dist/hooks/tool-normalize.js +0 -110
  152. package/dist/hooks/types.js +0 -12
  153. package/dist/hooks/yaml-plugin.js +0 -356
  154. package/dist/layout/loader.js +0 -305
  155. package/dist/layout/props-validator.js +0 -301
  156. package/dist/layout/renderer.js +0 -193
  157. package/dist/layout/types.js +0 -36
  158. package/dist/parallel/agent-runtime.js +0 -25
  159. package/dist/parallel/helpers.js +0 -219
  160. package/dist/parallel/index.js +0 -13
  161. package/dist/parallel/parallel-runner.js +0 -226
  162. package/dist/parallel/types.js +0 -6
  163. package/dist/parsers/agent-call.util.js +0 -19
  164. package/dist/parsers/claude.parser.js +0 -67
  165. package/dist/parsers/codex.parser.js +0 -100
  166. package/dist/parsers/copilot.parser.js +0 -66
  167. package/dist/parsers/gemini.parser.js +0 -46
  168. package/dist/parsers/opencode.parser.js +0 -76
  169. package/dist/parsers/router.js +0 -56
  170. package/dist/platform/BrowserFsAdapter.js +0 -84
  171. package/dist/platform/IFsAdapter.js +0 -3
  172. package/dist/platform/NodeFsAdapter.js +0 -38
  173. package/dist/plugin/plugin-provider.js +0 -207
  174. package/dist/plugin/types.js +0 -9
  175. package/dist/plugin.js +0 -29
  176. package/dist/plugins/conversation.js +0 -59
  177. package/dist/plugins/file-logger.js +0 -87
  178. package/dist/plugins/sqlite-tracing.js +0 -112
  179. package/dist/provider/bridge.browser.js +0 -49
  180. package/dist/provider/bridge.js +0 -381
  181. package/dist/provider/parse-usage.js +0 -83
  182. package/dist/provider/register-api.js +0 -24
  183. package/dist/provider/vercel-runtime.js +0 -347
  184. package/dist/remote/index.js +0 -32
  185. package/dist/remote/remote-agent-manager.js +0 -198
  186. package/dist/remote/remote-provider.js +0 -141
  187. package/dist/remote/remote-transport.js +0 -83
  188. package/dist/remote/types.js +0 -9
  189. package/dist/server/auth.js +0 -35
  190. package/dist/server/handler.js +0 -75
  191. package/dist/server/index.js +0 -9
  192. package/dist/server/tool-adapter.js +0 -95
  193. package/dist/template/engine.js +0 -137
  194. package/dist/template/helpers/exec.browser.js +0 -41
  195. package/dist/template/helpers/exec.js +0 -230
  196. package/dist/template/helpers/fenced_code.js +0 -20
  197. package/dist/template/helpers/format-conversation.js +0 -53
  198. package/dist/template/helpers/include.js +0 -23
  199. package/dist/template/helpers/p1p2.js +0 -90
  200. package/dist/template/loader/DocumentLoader.js +0 -128
  201. package/dist/template/types.js +0 -6
  202. package/dist/testing/mock-audit.js +0 -13
  203. package/dist/testing/mock-context.js +0 -68
  204. package/dist/testing/mock-logger.js +0 -27
  205. package/dist/testing/mock-router.js +0 -67
  206. package/dist/testing/mock-storage.js +0 -21
  207. package/dist/testing/mock-store.js +0 -8
  208. package/dist/tools/delegate.js +0 -60
  209. package/dist/tools/index.js +0 -9
  210. package/dist/tools/node/builtin.js +0 -547
  211. package/dist/types/index.js +0 -32
  212. package/dist/types/task-log.types.js +0 -6
  213. package/dist/utils/env-defaults.js +0 -27
  214. package/dist/utils/glob-match.js +0 -42
  215. package/dist/utils/id.js +0 -50
  216. package/dist/utils/timestamp.js +0 -13
  217. package/dist/utils/workspace.js +0 -58
@@ -1,314 +0,0 @@
1
- "use strict";
2
- /**
3
- * Browser-safe Crewx facade.
4
- *
5
- * Stripped of all Node.js dependencies (path, fs, child_process, crypto, events).
6
- * Supports: fromConfig(), query(), execute(), registerTool(), agents, tools.
7
- *
8
- * Built-in providers (e.g. api/webllm) are auto-initialised when detected
9
- * in the agents list — no manual registerProviderFactory required.
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Crewx = void 0;
13
- const resolver_js_1 = require("../agent/resolver.js");
14
- const bridge_browser_js_1 = require("../provider/bridge.browser.js");
15
- /** Dynamic import that bypasses TypeScript module resolution for CDN URLs. */
16
- const _cdnImport = new Function('u', 'return import(u)');
17
- class Crewx {
18
- _agents;
19
- _config;
20
- _tools = new Map();
21
- _apiProviders = new Map();
22
- constructor(agents, config) {
23
- this._agents = new Map(agents.map(a => [a.id, a]));
24
- this._config = config;
25
- }
26
- /**
27
- * Create a Crewx instance from an already-parsed config object.
28
- *
29
- * Built-in browser providers (api/webllm, api/openrouter) are auto-initialised
30
- * when detected in the agents list — no manual registerProviderFactory required.
31
- */
32
- static async fromConfig(config, options) {
33
- const instance = new Crewx(config.agents ?? [], config);
34
- const agents = config.agents ?? [];
35
- const providerOf = (a) => Array.isArray(a.provider) ? a.provider[0] : a.provider;
36
- const webllmAgents = agents.filter(a => providerOf(a) === 'api/webllm');
37
- const openrouterAgents = agents.filter(a => providerOf(a) === 'api/openrouter');
38
- if (webllmAgents.length > 0) {
39
- await instance._initWebLLM(webllmAgents, options?.onProgress);
40
- }
41
- if (openrouterAgents.length > 0) {
42
- if (!options?.openrouterApiKey) {
43
- throw new Error('openrouterApiKey is required when using api/openrouter provider');
44
- }
45
- instance._initOpenRouter(openrouterAgents, options.openrouterApiKey);
46
- }
47
- // Register unified api factory dispatching to initialised sub-providers
48
- if (instance._apiProviders.size > 0) {
49
- (0, bridge_browser_js_1.registerProviderFactory)('api', (id, providerStr) => {
50
- const provider = instance._apiProviders.get(id);
51
- if (!provider) {
52
- throw new bridge_browser_js_1.ProviderError(`Unknown api provider: ${id}`, providerStr);
53
- }
54
- return provider;
55
- });
56
- }
57
- return instance;
58
- }
59
- // ── web-llm auto-init ──────────────────────────────────────────────────────
60
- /**
61
- * Load web-llm from CDN, create the inference engine, and store
62
- * the provider runtime. Called automatically by fromConfig().
63
- */
64
- async _initWebLLM(agents, onProgress) {
65
- if (typeof navigator === 'undefined' || !navigator.gpu) {
66
- throw new Error('WebGPU is not available. Chrome 113+ or Edge 113+ required.');
67
- }
68
- const webllm = await _cdnImport('https://esm.run/@mlc-ai/web-llm');
69
- const modelId = agents[0]?.inline?.model ?? 'gemma-2-2b-it-q4f16_1-MLC';
70
- const engine = await webllm.CreateMLCEngine(modelId, {
71
- initProgressCallback: onProgress
72
- ? (report) => onProgress(report)
73
- : undefined,
74
- });
75
- const history = [];
76
- this._apiProviders.set('webllm', {
77
- async query(message, options) {
78
- const messages = [];
79
- if (options?.systemPrompt) {
80
- messages.push({ role: 'system', content: options.systemPrompt });
81
- }
82
- messages.push(...history);
83
- messages.push({ role: 'user', content: message });
84
- let fullReply = '';
85
- const stream = await engine.chat.completions.create({
86
- messages,
87
- stream: true,
88
- temperature: 0.7,
89
- max_tokens: 4096,
90
- });
91
- for await (const chunk of stream) {
92
- const delta = chunk.choices?.[0]?.delta?.content ?? '';
93
- fullReply += delta;
94
- if (options?.onOutput) {
95
- options.onOutput(fullReply, 'stdout');
96
- }
97
- }
98
- history.push({ role: 'user', content: message });
99
- history.push({ role: 'assistant', content: fullReply });
100
- return fullReply;
101
- },
102
- async execute(message, options) {
103
- return this.query(message, options);
104
- },
105
- });
106
- }
107
- /**
108
- * Initialise the OpenRouter API provider.
109
- * Uses fetch + SSE streaming against the OpenAI-compatible endpoint.
110
- */
111
- _initOpenRouter(agents, apiKey) {
112
- const defaultModel = agents[0]?.inline?.model ?? 'google/gemma-2-2b-it';
113
- const history = [];
114
- this._apiProviders.set('openrouter', {
115
- async query(message, options) {
116
- const messages = [];
117
- if (options?.systemPrompt) {
118
- messages.push({ role: 'system', content: options.systemPrompt });
119
- }
120
- messages.push(...history);
121
- messages.push({ role: 'user', content: message });
122
- const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
123
- method: 'POST',
124
- headers: {
125
- 'Authorization': `Bearer ${apiKey}`,
126
- 'Content-Type': 'application/json',
127
- },
128
- body: JSON.stringify({
129
- model: options?.model || defaultModel,
130
- messages,
131
- stream: true,
132
- }),
133
- });
134
- if (!response.ok) {
135
- const errorBody = await response.text();
136
- throw new Error(`OpenRouter API error (${response.status}): ${errorBody}`);
137
- }
138
- const reader = response.body.getReader();
139
- const decoder = new TextDecoder();
140
- let fullReply = '';
141
- let buffer = '';
142
- while (true) {
143
- const { done, value } = await reader.read();
144
- if (done)
145
- break;
146
- buffer += decoder.decode(value, { stream: true });
147
- const lines = buffer.split('\n');
148
- buffer = lines.pop();
149
- for (const line of lines) {
150
- const trimmed = line.trim();
151
- if (!trimmed || !trimmed.startsWith('data: '))
152
- continue;
153
- const data = trimmed.slice(6);
154
- if (data === '[DONE]')
155
- continue;
156
- try {
157
- const parsed = JSON.parse(data);
158
- const delta = parsed.choices?.[0]?.delta?.content ?? '';
159
- fullReply += delta;
160
- if (delta && options?.onOutput) {
161
- options.onOutput(fullReply, 'stdout');
162
- }
163
- }
164
- catch {
165
- // skip malformed SSE chunks
166
- }
167
- }
168
- }
169
- history.push({ role: 'user', content: message });
170
- history.push({ role: 'assistant', content: fullReply });
171
- return fullReply;
172
- },
173
- async execute(message, options) {
174
- return this.query(message, options);
175
- },
176
- });
177
- }
178
- get agents() {
179
- return this._agents;
180
- }
181
- get config() {
182
- return this._config;
183
- }
184
- get tools() {
185
- return this._tools;
186
- }
187
- registerTool(name, definition) {
188
- this._tools.set(name, { name, ...definition });
189
- }
190
- /**
191
- * Query an agent with a message.
192
- * Browser version — delegates directly to the registered provider factory.
193
- * Passes onOutput through for streaming support.
194
- */
195
- async query(agentRef, message, options) {
196
- const startMs = Date.now();
197
- let agent;
198
- try {
199
- agent = (0, resolver_js_1.resolveAgent)(agentRef, Array.from(this._agents.values()));
200
- }
201
- catch (err) {
202
- if (err instanceof resolver_js_1.AgentNotFoundError) {
203
- return {
204
- ok: false,
205
- data: '',
206
- error: { code: 'AGENT_NOT_FOUND', message: err.message },
207
- meta: { agentId: agentRef.replace(/^@/, ''), provider: '', durationMs: Date.now() - startMs },
208
- };
209
- }
210
- throw err;
211
- }
212
- const providerStr = Array.isArray(agent.provider)
213
- ? agent.provider[0] ?? 'api/default'
214
- : agent.provider;
215
- const effectiveProviderStr = options?.provider ?? providerStr;
216
- const effectiveModel = options?.model ?? agent.inline?.model;
217
- let provider;
218
- try {
219
- provider = (0, bridge_browser_js_1.createProvider)(effectiveProviderStr);
220
- }
221
- catch (err) {
222
- return {
223
- ok: false,
224
- data: '',
225
- error: { code: 'PROVIDER_ERROR', message: err.message },
226
- meta: { agentId: agent.id, provider: effectiveProviderStr, model: effectiveModel, durationMs: Date.now() - startMs },
227
- };
228
- }
229
- try {
230
- const response = await provider.query(message, {
231
- model: effectiveModel,
232
- context: options?.context,
233
- systemPrompt: agent.inline?.system_prompt ?? agent.inline?.prompt,
234
- onOutput: options?.onOutput
235
- ? (line) => options.onOutput(line)
236
- : undefined,
237
- });
238
- return {
239
- ok: true,
240
- data: response,
241
- meta: { agentId: agent.id, provider: effectiveProviderStr, model: effectiveModel, durationMs: Date.now() - startMs },
242
- };
243
- }
244
- catch (err) {
245
- return {
246
- ok: false,
247
- data: '',
248
- error: { code: 'QUERY_FAILED', message: err.message },
249
- meta: { agentId: agent.id, provider: effectiveProviderStr, model: effectiveModel, durationMs: Date.now() - startMs },
250
- };
251
- }
252
- }
253
- /**
254
- * Execute a task with an agent.
255
- * Browser version — same delegation pattern as query().
256
- */
257
- async execute(agentRef, message, options) {
258
- const startMs = Date.now();
259
- let agent;
260
- try {
261
- agent = (0, resolver_js_1.resolveAgent)(agentRef, Array.from(this._agents.values()));
262
- }
263
- catch (err) {
264
- if (err instanceof resolver_js_1.AgentNotFoundError) {
265
- return {
266
- ok: false,
267
- data: '',
268
- error: { code: 'AGENT_NOT_FOUND', message: err.message },
269
- meta: { agentId: agentRef.replace(/^@/, ''), provider: '', durationMs: Date.now() - startMs },
270
- };
271
- }
272
- throw err;
273
- }
274
- const providerStr = Array.isArray(agent.provider)
275
- ? agent.provider[0] ?? 'api/default'
276
- : agent.provider;
277
- const effectiveProviderStr = options?.provider ?? providerStr;
278
- const effectiveModel = options?.model ?? agent.inline?.model;
279
- let provider;
280
- try {
281
- provider = (0, bridge_browser_js_1.createProvider)(effectiveProviderStr);
282
- }
283
- catch (err) {
284
- return {
285
- ok: false,
286
- data: '',
287
- error: { code: 'PROVIDER_ERROR', message: err.message },
288
- meta: { agentId: agent.id, provider: effectiveProviderStr, model: effectiveModel, durationMs: Date.now() - startMs },
289
- };
290
- }
291
- try {
292
- const response = await provider.execute(message, {
293
- model: effectiveModel,
294
- context: options?.context,
295
- systemPrompt: agent.inline?.system_prompt ?? agent.inline?.prompt,
296
- });
297
- return {
298
- ok: true,
299
- data: response,
300
- meta: { agentId: agent.id, provider: effectiveProviderStr, model: effectiveModel, durationMs: Date.now() - startMs },
301
- };
302
- }
303
- catch (err) {
304
- return {
305
- ok: false,
306
- data: '',
307
- error: { code: 'EXECUTE_FAILED', message: err.message },
308
- meta: { agentId: agent.id, provider: effectiveProviderStr, model: effectiveModel, durationMs: Date.now() - startMs },
309
- };
310
- }
311
- }
312
- }
313
- exports.Crewx = Crewx;
314
- //# sourceMappingURL=Crewx.browser.js.map