@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.
- package/dist/__tests__/adapter/context-builder.test.d.ts +1 -0
- package/dist/__tests__/adapter/plugin-helper.test.d.ts +1 -0
- package/dist/__tests__/adapter/registration-integration.test.d.ts +1 -0
- package/dist/__tests__/adapter/scoped-store.test.d.ts +1 -0
- package/dist/__tests__/plugins/conversation.test.d.ts +1 -0
- package/dist/__tests__/testing/createMockContext.test.d.ts +1 -0
- package/dist/adapter/context-builder.d.ts +0 -9
- package/dist/adapter/index.d.ts +0 -1
- package/dist/adapter/plugin-helper.d.ts +0 -7
- package/dist/adapter/scoped-store.d.ts +0 -10
- package/dist/adapter/types.d.ts +0 -7
- package/dist/agent/resolver.d.ts +0 -13
- package/dist/boxing/box-storage.interface.d.ts +0 -4
- package/dist/boxing/box.service.d.ts +0 -4
- package/dist/boxing/box.types.d.ts +0 -4
- package/dist/boxing/context-builder.d.ts +0 -4
- package/dist/client/CrewxClient.d.ts +0 -32
- package/dist/client/index.d.ts +0 -1
- package/dist/client/index.js +1 -6
- package/dist/config/loader.browser.d.ts +0 -8
- package/dist/config/loader.d.ts +0 -12
- package/dist/conversation/__tests__/sqlite-provider.test.d.ts +1 -0
- package/dist/conversation/__tests__/to-task-reader.test.d.ts +1 -0
- package/dist/conversation/index.d.ts +0 -1
- package/dist/conversation/sqlite-provider.d.ts +0 -9
- package/dist/conversation/to-task-reader.d.ts +0 -11
- package/dist/conversation/to-template-messages.d.ts +0 -13
- package/dist/conversation/types.d.ts +0 -58
- package/dist/esm/client/index.js +1 -0
- package/dist/esm/hooks/index.js +7 -0
- package/dist/esm/index.js +79 -0
- package/dist/esm/plugins/index.js +52 -0
- package/dist/esm/testing/index.js +1 -0
- package/dist/esm/tools/node/index.js +36 -0
- package/dist/events/TypedEventEmitter.d.ts +0 -24
- package/dist/events/types.d.ts +0 -43
- package/dist/facade/Crewx.browser.d.ts +0 -40
- package/dist/facade/Crewx.d.ts +0 -163
- package/dist/hooks/define.d.ts +0 -1
- package/dist/hooks/dispatch.d.ts +0 -12
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.js +7 -24
- package/dist/hooks/observer.d.ts +0 -1
- package/dist/hooks/plugin.d.ts +0 -1
- package/dist/hooks/tool-normalize.d.ts +0 -26
- package/dist/hooks/types.d.ts +0 -1
- package/dist/hooks/yaml-plugin.d.ts +0 -1
- package/dist/index.browser.d.ts +0 -7
- package/dist/index.browser.js +2 -25
- package/dist/index.d.ts +0 -4
- package/dist/index.js +79 -151
- package/dist/layout/loader.d.ts +0 -20
- package/dist/layout/props-validator.d.ts +0 -6
- package/dist/layout/renderer.d.ts +0 -24
- package/dist/layout/types.d.ts +0 -42
- package/dist/parallel/agent-runtime.d.ts +0 -11
- package/dist/parallel/helpers.d.ts +0 -1
- package/dist/parallel/index.d.ts +0 -1
- package/dist/parallel/parallel-runner.d.ts +0 -8
- package/dist/parallel/types.d.ts +0 -24
- package/dist/parsers/agent-call.util.d.ts +0 -3
- package/dist/parsers/claude.parser.d.ts +0 -8
- package/dist/parsers/codex.parser.d.ts +0 -8
- package/dist/parsers/copilot.parser.d.ts +0 -9
- package/dist/parsers/gemini.parser.d.ts +0 -10
- package/dist/parsers/opencode.parser.d.ts +0 -10
- package/dist/parsers/router.d.ts +0 -5
- package/dist/paths.d.ts +1 -0
- package/dist/platform/BrowserFsAdapter.d.ts +0 -20
- package/dist/platform/IFsAdapter.d.ts +0 -23
- package/dist/platform/NodeFsAdapter.d.ts +0 -8
- package/dist/plugin/plugin-provider.d.ts +0 -22
- package/dist/plugin/types.d.ts +0 -31
- package/dist/plugin.d.ts +0 -27
- package/dist/plugins/conversation.d.ts +0 -2
- package/dist/plugins/file-logger.d.ts +0 -13
- package/dist/plugins/index.d.ts +0 -10
- package/dist/plugins/index.js +52 -19
- package/dist/plugins/sqlite-tracing.d.ts +0 -13
- package/dist/plugins/sqlite-tracing.spec.d.ts +1 -0
- package/dist/provider/bridge.browser.d.ts +0 -20
- package/dist/provider/bridge.d.ts +0 -47
- package/dist/provider/parse-usage.d.ts +0 -14
- package/dist/provider/register-api.d.ts +0 -7
- package/dist/provider/vercel-runtime.d.ts +0 -29
- package/dist/remote/index.d.ts +0 -6
- package/dist/remote/remote-agent-manager.d.ts +0 -31
- package/dist/remote/remote-provider.d.ts +0 -15
- package/dist/remote/remote-transport.d.ts +0 -17
- package/dist/remote/types.d.ts +0 -59
- package/dist/server/auth.d.ts +0 -16
- package/dist/server/handler.d.ts +0 -17
- package/dist/server/index.d.ts +0 -4
- package/dist/server/tool-adapter.d.ts +0 -16
- package/dist/template/engine.d.ts +0 -19
- package/dist/template/helpers/exec.browser.d.ts +0 -7
- package/dist/template/helpers/exec.d.ts +0 -45
- package/dist/template/helpers/fenced_code.d.ts +0 -16
- package/dist/template/helpers/format-conversation.d.ts +0 -22
- package/dist/template/helpers/include.d.ts +0 -15
- package/dist/template/helpers/p1p2.d.ts +0 -32
- package/dist/template/loader/DocumentLoader.d.ts +0 -30
- package/dist/template/types.d.ts +0 -30
- package/dist/testing/index.d.ts +0 -1
- package/dist/testing/index.js +1 -16
- package/dist/testing/mock-audit.d.ts +0 -1
- package/dist/testing/mock-context.d.ts +0 -1
- package/dist/testing/mock-logger.d.ts +0 -1
- package/dist/testing/mock-router.d.ts +0 -1
- package/dist/testing/mock-storage.d.ts +0 -1
- package/dist/testing/mock-store.d.ts +0 -1
- package/dist/tools/delegate.d.ts +0 -7
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/node/builtin.d.ts +0 -16
- package/dist/tools/node/index.d.ts +0 -20
- package/dist/tools/node/index.js +36 -59
- package/dist/types/index.d.ts +0 -20
- package/dist/types/task-log.types.d.ts +0 -4
- package/dist/utils/env-defaults.d.ts +0 -16
- package/dist/utils/glob-match.d.ts +0 -16
- package/dist/utils/id.d.ts +0 -15
- package/dist/utils/timestamp.d.ts +0 -1
- package/dist/utils/workspace.d.ts +0 -4
- package/package.json +24 -25
- package/dist/adapter/context-builder.js +0 -87
- package/dist/adapter/index.js +0 -21
- package/dist/adapter/plugin-helper.js +0 -45
- package/dist/adapter/scoped-store.js +0 -43
- package/dist/adapter/types.js +0 -23
- package/dist/agent/resolver.js +0 -46
- package/dist/boxing/box-storage.interface.js +0 -6
- package/dist/boxing/box.service.js +0 -73
- package/dist/boxing/box.types.js +0 -6
- package/dist/boxing/context-builder.js +0 -79
- package/dist/client/CrewxClient.js +0 -86
- package/dist/config/loader.browser.js +0 -59
- package/dist/config/loader.js +0 -95
- package/dist/conversation/index.js +0 -25
- package/dist/conversation/sqlite-provider.js +0 -178
- package/dist/conversation/to-task-reader.js +0 -28
- package/dist/conversation/to-template-messages.js +0 -34
- package/dist/conversation/types.js +0 -10
- package/dist/events/TypedEventEmitter.js +0 -65
- package/dist/events/types.js +0 -9
- package/dist/facade/Crewx.browser.js +0 -314
- package/dist/facade/Crewx.js +0 -1299
- package/dist/hooks/define.js +0 -13
- package/dist/hooks/dispatch.js +0 -147
- package/dist/hooks/observer.js +0 -60
- package/dist/hooks/plugin.js +0 -17
- package/dist/hooks/tool-normalize.js +0 -110
- package/dist/hooks/types.js +0 -12
- package/dist/hooks/yaml-plugin.js +0 -356
- package/dist/layout/loader.js +0 -305
- package/dist/layout/props-validator.js +0 -301
- package/dist/layout/renderer.js +0 -193
- package/dist/layout/types.js +0 -36
- package/dist/parallel/agent-runtime.js +0 -25
- package/dist/parallel/helpers.js +0 -219
- package/dist/parallel/index.js +0 -13
- package/dist/parallel/parallel-runner.js +0 -226
- package/dist/parallel/types.js +0 -6
- package/dist/parsers/agent-call.util.js +0 -19
- package/dist/parsers/claude.parser.js +0 -67
- package/dist/parsers/codex.parser.js +0 -100
- package/dist/parsers/copilot.parser.js +0 -66
- package/dist/parsers/gemini.parser.js +0 -46
- package/dist/parsers/opencode.parser.js +0 -76
- package/dist/parsers/router.js +0 -56
- package/dist/platform/BrowserFsAdapter.js +0 -84
- package/dist/platform/IFsAdapter.js +0 -3
- package/dist/platform/NodeFsAdapter.js +0 -38
- package/dist/plugin/plugin-provider.js +0 -207
- package/dist/plugin/types.js +0 -9
- package/dist/plugin.js +0 -29
- package/dist/plugins/conversation.js +0 -59
- package/dist/plugins/file-logger.js +0 -87
- package/dist/plugins/sqlite-tracing.js +0 -112
- package/dist/provider/bridge.browser.js +0 -49
- package/dist/provider/bridge.js +0 -381
- package/dist/provider/parse-usage.js +0 -83
- package/dist/provider/register-api.js +0 -24
- package/dist/provider/vercel-runtime.js +0 -347
- package/dist/remote/index.js +0 -32
- package/dist/remote/remote-agent-manager.js +0 -198
- package/dist/remote/remote-provider.js +0 -141
- package/dist/remote/remote-transport.js +0 -83
- package/dist/remote/types.js +0 -9
- package/dist/server/auth.js +0 -35
- package/dist/server/handler.js +0 -75
- package/dist/server/index.js +0 -9
- package/dist/server/tool-adapter.js +0 -95
- package/dist/template/engine.js +0 -137
- package/dist/template/helpers/exec.browser.js +0 -41
- package/dist/template/helpers/exec.js +0 -230
- package/dist/template/helpers/fenced_code.js +0 -20
- package/dist/template/helpers/format-conversation.js +0 -53
- package/dist/template/helpers/include.js +0 -23
- package/dist/template/helpers/p1p2.js +0 -90
- package/dist/template/loader/DocumentLoader.js +0 -128
- package/dist/template/types.js +0 -6
- package/dist/testing/mock-audit.js +0 -13
- package/dist/testing/mock-context.js +0 -68
- package/dist/testing/mock-logger.js +0 -27
- package/dist/testing/mock-router.js +0 -67
- package/dist/testing/mock-storage.js +0 -21
- package/dist/testing/mock-store.js +0 -8
- package/dist/tools/delegate.js +0 -60
- package/dist/tools/index.js +0 -9
- package/dist/tools/node/builtin.js +0 -547
- package/dist/types/index.js +0 -32
- package/dist/types/task-log.types.js +0 -6
- package/dist/utils/env-defaults.js +0 -27
- package/dist/utils/glob-match.js +0 -42
- package/dist/utils/id.js +0 -50
- package/dist/utils/timestamp.js +0 -13
- 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
|