network-ai 5.13.4 → 5.15.0
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/INTEGRATION_GUIDE.md +6 -3
- package/QUICKSTART.md +9 -4
- package/README.md +72 -15
- package/SKILL.md +1 -1
- package/bin/cli.ts +73 -0
- package/bin/mcp-server.ts +24 -1
- package/dist/adapters/claude-agent-sdk-adapter.d.ts +100 -0
- package/dist/adapters/claude-agent-sdk-adapter.d.ts.map +1 -0
- package/dist/adapters/claude-agent-sdk-adapter.js +204 -0
- package/dist/adapters/claude-agent-sdk-adapter.js.map +1 -0
- package/dist/adapters/gemini-adapter.d.ts +124 -0
- package/dist/adapters/gemini-adapter.d.ts.map +1 -0
- package/dist/adapters/gemini-adapter.js +239 -0
- package/dist/adapters/gemini-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +10 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/openai-responses-adapter.d.ts +119 -0
- package/dist/adapters/openai-responses-adapter.d.ts.map +1 -0
- package/dist/adapters/openai-responses-adapter.js +235 -0
- package/dist/adapters/openai-responses-adapter.js.map +1 -0
- package/dist/bin/cli.js +72 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/mcp-server.js +22 -1
- package/dist/bin/mcp-server.js.map +1 -1
- package/dist/esm/adapters/claude-agent-sdk-adapter.js +204 -0
- package/dist/esm/adapters/claude-agent-sdk-adapter.js.map +1 -0
- package/dist/esm/adapters/gemini-adapter.js +239 -0
- package/dist/esm/adapters/gemini-adapter.js.map +1 -0
- package/dist/esm/adapters/index.js +10 -1
- package/dist/esm/adapters/index.js.map +1 -1
- package/dist/esm/adapters/openai-responses-adapter.js +235 -0
- package/dist/esm/adapters/openai-responses-adapter.js.map +1 -0
- package/dist/esm/index.js +20 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/a2a-server.js +293 -0
- package/dist/esm/lib/a2a-server.js.map +1 -0
- package/dist/esm/lib/claude-hooks.js +307 -0
- package/dist/esm/lib/claude-hooks.js.map +1 -0
- package/dist/esm/lib/context-composer.js +332 -0
- package/dist/esm/lib/context-composer.js.map +1 -0
- package/dist/esm/lib/mcp-elicitation.js +198 -0
- package/dist/esm/lib/mcp-elicitation.js.map +1 -0
- package/dist/esm/lib/mcp-tools-context.js +266 -0
- package/dist/esm/lib/mcp-tools-context.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/a2a-server.d.ts +120 -0
- package/dist/lib/a2a-server.d.ts.map +1 -0
- package/dist/lib/a2a-server.js +293 -0
- package/dist/lib/a2a-server.js.map +1 -0
- package/dist/lib/claude-hooks.d.ts +150 -0
- package/dist/lib/claude-hooks.d.ts.map +1 -0
- package/dist/lib/claude-hooks.js +307 -0
- package/dist/lib/claude-hooks.js.map +1 -0
- package/dist/lib/context-composer.d.ts +187 -0
- package/dist/lib/context-composer.d.ts.map +1 -0
- package/dist/lib/context-composer.js +332 -0
- package/dist/lib/context-composer.js.map +1 -0
- package/dist/lib/mcp-elicitation.d.ts +116 -0
- package/dist/lib/mcp-elicitation.d.ts.map +1 -0
- package/dist/lib/mcp-elicitation.js +198 -0
- package/dist/lib/mcp-elicitation.js.map +1 -0
- package/dist/lib/mcp-tools-context.d.ts +77 -0
- package/dist/lib/mcp-tools-context.d.ts.map +1 -0
- package/dist/lib/mcp-tools-context.js +266 -0
- package/dist/lib/mcp-tools-context.js.map +1 -0
- package/package.json +2 -2
- package/scripts/clawhub-publish.js +14 -1
- package/socket.json +1 -1
package/dist/bin/mcp-server.js
CHANGED
|
@@ -71,6 +71,7 @@ const security_1 = require("../security");
|
|
|
71
71
|
const mcp_transport_sse_1 = require("../lib/mcp-transport-sse");
|
|
72
72
|
const mcp_tools_extended_1 = require("../lib/mcp-tools-extended");
|
|
73
73
|
const mcp_tools_control_1 = require("../lib/mcp-tools-control");
|
|
74
|
+
const mcp_tools_context_1 = require("../lib/mcp-tools-context");
|
|
74
75
|
function parseArgs(argv) {
|
|
75
76
|
const args = {
|
|
76
77
|
port: 3001,
|
|
@@ -190,6 +191,13 @@ SSE/HTTP mode (for network clients):
|
|
|
190
191
|
*/
|
|
191
192
|
async function runStdio(combined) {
|
|
192
193
|
const { createInterface } = await Promise.resolve().then(() => __importStar(require('readline')));
|
|
194
|
+
const { StdioElicitationChannel } = await Promise.resolve().then(() => __importStar(require('../lib/mcp-elicitation')));
|
|
195
|
+
// Server→client request channel (MCP elicitation). Client responses to
|
|
196
|
+
// server-initiated requests are routed here instead of being dispatched
|
|
197
|
+
// (incorrectly) as client requests.
|
|
198
|
+
const elicitation = new StdioElicitationChannel((line) => {
|
|
199
|
+
process.stdout.write(line + '\n');
|
|
200
|
+
});
|
|
193
201
|
const rl = createInterface({ input: process.stdin, terminal: false });
|
|
194
202
|
rl.on('line', async (line) => {
|
|
195
203
|
const trimmed = line.trim();
|
|
@@ -209,10 +217,16 @@ async function runStdio(combined) {
|
|
|
209
217
|
process.stdout.write(JSON.stringify(err) + '\n');
|
|
210
218
|
return;
|
|
211
219
|
}
|
|
220
|
+
// Response to a server-initiated request (elicitation)? Consume it.
|
|
221
|
+
if (elicitation.handleMessage(request))
|
|
222
|
+
return;
|
|
212
223
|
const response = await combined.handleRPC(request);
|
|
213
224
|
process.stdout.write(JSON.stringify(response) + '\n');
|
|
214
225
|
});
|
|
215
|
-
rl.on('close', () =>
|
|
226
|
+
rl.on('close', () => {
|
|
227
|
+
elicitation.rejectAll('stdin closed');
|
|
228
|
+
process.exit(0);
|
|
229
|
+
});
|
|
216
230
|
}
|
|
217
231
|
// ============================================================================
|
|
218
232
|
// MAIN
|
|
@@ -303,6 +317,13 @@ async function main() {
|
|
|
303
317
|
combined.register(extendedTools);
|
|
304
318
|
if (controlTools)
|
|
305
319
|
combined.register(controlTools);
|
|
320
|
+
// Context tools: token-budgeted context packs + ranked blackboard search
|
|
321
|
+
// (lexical ranking out of the box; embed a SemanticMemory for semantic mode)
|
|
322
|
+
const contextTools = new mcp_tools_context_1.ContextMcpTools({
|
|
323
|
+
blackboard: blackboard,
|
|
324
|
+
});
|
|
325
|
+
combined.register(contextTools);
|
|
326
|
+
console.log(`[network-ai-server] Context tools: context_pack, blackboard_search (lexical mode)`);
|
|
306
327
|
const totalTools = combined.allDefinitions().length;
|
|
307
328
|
console.log(`[network-ai-server] Total tools exposed: ${totalTools}`);
|
|
308
329
|
// --------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../bin/mcp-server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../bin/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Claude Agent SDK Adapter
|
|
4
|
+
*
|
|
5
|
+
* Integrates agents built with Anthropic's Claude Agent SDK
|
|
6
|
+
* (`@anthropic-ai/claude-agent-sdk`) with the SwarmOrchestrator. The SDK's
|
|
7
|
+
* `query()` function runs a full agentic loop (tool use, file edits, shell)
|
|
8
|
+
* and streams SDK messages; this adapter drives that loop and returns the
|
|
9
|
+
* final result to the swarm.
|
|
10
|
+
*
|
|
11
|
+
* Strictly BYOC: the SDK is never imported here. Callers pass the SDK's
|
|
12
|
+
* `query` function (or any compatible implementation) at registration time.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
16
|
+
*
|
|
17
|
+
* const adapter = new ClaudeAgentSDKAdapter();
|
|
18
|
+
* await adapter.initialize({});
|
|
19
|
+
* adapter.registerAgent('coder', {
|
|
20
|
+
* query, // the SDK's query function
|
|
21
|
+
* options: { maxTurns: 10, allowedTools: ['Read', 'Grep'] },
|
|
22
|
+
* systemPrompt: 'You are a careful refactoring agent.',
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* await registry.addAdapter(adapter);
|
|
26
|
+
* // orchestrator: delegateTask({ targetAgent: 'claude-agent-sdk:coder', ... })
|
|
27
|
+
*
|
|
28
|
+
* @module ClaudeAgentSDKAdapter
|
|
29
|
+
* @version 1.0.0
|
|
30
|
+
*/
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.ClaudeAgentSDKAdapter = void 0;
|
|
33
|
+
const base_adapter_1 = require("./base-adapter");
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Helpers
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
/** Build the prompt string from an AgentPayload */
|
|
38
|
+
function buildPrompt(payload) {
|
|
39
|
+
const parts = [];
|
|
40
|
+
const instruction = payload.handoff?.instruction;
|
|
41
|
+
if (instruction)
|
|
42
|
+
parts.push(instruction);
|
|
43
|
+
if (payload.action)
|
|
44
|
+
parts.push(`Task: ${payload.action}`);
|
|
45
|
+
if (payload.params && Object.keys(payload.params).length > 0) {
|
|
46
|
+
parts.push(`Parameters: ${JSON.stringify(payload.params, null, 2)}`);
|
|
47
|
+
}
|
|
48
|
+
if (payload.blackboardSnapshot && Object.keys(payload.blackboardSnapshot).length > 0) {
|
|
49
|
+
const relevant = Object.entries(payload.blackboardSnapshot)
|
|
50
|
+
.slice(0, 10)
|
|
51
|
+
.map(([k, v]) => `${k}: ${JSON.stringify(v)}`)
|
|
52
|
+
.join('\n');
|
|
53
|
+
parts.push(`Context from blackboard:\n${relevant}`);
|
|
54
|
+
}
|
|
55
|
+
return parts.join('\n\n') || 'Complete the task.';
|
|
56
|
+
}
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
// ClaudeAgentSDKAdapter
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
/**
|
|
61
|
+
* Adapter that runs Claude Agent SDK agentic loops as swarm agents.
|
|
62
|
+
* The final `result` message becomes the AgentResult; intermediate messages
|
|
63
|
+
* are surfaced through the per-agent `onMessage` callback.
|
|
64
|
+
*/
|
|
65
|
+
class ClaudeAgentSDKAdapter extends base_adapter_1.BaseAdapter {
|
|
66
|
+
name = 'claude-agent-sdk';
|
|
67
|
+
version = '1.0.0';
|
|
68
|
+
agents = new Map();
|
|
69
|
+
get capabilities() {
|
|
70
|
+
return {
|
|
71
|
+
streaming: false,
|
|
72
|
+
parallel: true,
|
|
73
|
+
bidirectional: false,
|
|
74
|
+
discovery: true,
|
|
75
|
+
authentication: false,
|
|
76
|
+
statefulSessions: true,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// -------------------------------------------------------------------------
|
|
80
|
+
// Registration
|
|
81
|
+
// -------------------------------------------------------------------------
|
|
82
|
+
/**
|
|
83
|
+
* Register a Claude Agent SDK-powered agent.
|
|
84
|
+
*
|
|
85
|
+
* @param agentId Unique identifier used in `delegateTask` calls.
|
|
86
|
+
* @param config Agent configuration — `query` is required.
|
|
87
|
+
*/
|
|
88
|
+
registerAgent(agentId, config) {
|
|
89
|
+
if (!agentId || typeof agentId !== 'string' || agentId.trim() === '') {
|
|
90
|
+
throw new Error('ClaudeAgentSDKAdapter: agentId must be a non-empty string');
|
|
91
|
+
}
|
|
92
|
+
if (!config || typeof config.query !== 'function') {
|
|
93
|
+
throw new Error('ClaudeAgentSDKAdapter: config.query is required — pass the SDK\'s query function ' +
|
|
94
|
+
'(BYOC; e.g. `import { query } from "@anthropic-ai/claude-agent-sdk"`).');
|
|
95
|
+
}
|
|
96
|
+
if (!this.ready) {
|
|
97
|
+
this.ready = true;
|
|
98
|
+
}
|
|
99
|
+
this.agents.set(agentId, { config });
|
|
100
|
+
this.registeredAgents.set(agentId, {
|
|
101
|
+
id: agentId,
|
|
102
|
+
name: agentId,
|
|
103
|
+
description: 'Claude Agent SDK agent (agentic loop with tools)',
|
|
104
|
+
capabilities: ['chat', 'code-generation', 'tool-use', 'file-edit', 'agentic-loop'],
|
|
105
|
+
adapter: this.name,
|
|
106
|
+
status: 'available',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// -------------------------------------------------------------------------
|
|
110
|
+
// Execution
|
|
111
|
+
// -------------------------------------------------------------------------
|
|
112
|
+
async executeAgent(agentId, payload, context) {
|
|
113
|
+
if (!this.ready) {
|
|
114
|
+
throw new Error('ClaudeAgentSDKAdapter: adapter not initialized. Call initialize() first.');
|
|
115
|
+
}
|
|
116
|
+
const entry = this.agents.get(agentId);
|
|
117
|
+
if (!entry) {
|
|
118
|
+
return {
|
|
119
|
+
success: false,
|
|
120
|
+
error: {
|
|
121
|
+
code: 'AGENT_NOT_FOUND',
|
|
122
|
+
message: `ClaudeAgentSDKAdapter: no agent registered with id "${agentId}"`,
|
|
123
|
+
recoverable: false,
|
|
124
|
+
},
|
|
125
|
+
metadata: { adapter: this.name },
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const cfg = entry.config;
|
|
129
|
+
const prompt = buildPrompt(payload);
|
|
130
|
+
const options = { ...cfg.options };
|
|
131
|
+
if (cfg.systemPrompt && options['systemPrompt'] === undefined) {
|
|
132
|
+
options['systemPrompt'] = cfg.systemPrompt;
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
let resultMessage;
|
|
136
|
+
let turns = 0;
|
|
137
|
+
for await (const message of cfg.query({ prompt, options })) {
|
|
138
|
+
if (message.type === 'result') {
|
|
139
|
+
resultMessage = message;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
turns++;
|
|
143
|
+
cfg.onMessage?.(message);
|
|
144
|
+
}
|
|
145
|
+
if (!resultMessage) {
|
|
146
|
+
return {
|
|
147
|
+
success: false,
|
|
148
|
+
error: {
|
|
149
|
+
code: 'NO_RESULT',
|
|
150
|
+
message: 'ClaudeAgentSDKAdapter: query loop ended without a result message',
|
|
151
|
+
recoverable: true,
|
|
152
|
+
},
|
|
153
|
+
metadata: { adapter: this.name },
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
if (resultMessage.is_error || (resultMessage.subtype && resultMessage.subtype !== 'success')) {
|
|
157
|
+
return {
|
|
158
|
+
success: false,
|
|
159
|
+
error: {
|
|
160
|
+
code: 'AGENT_ERROR',
|
|
161
|
+
message: `ClaudeAgentSDKAdapter: run failed (${resultMessage.subtype ?? 'error'})` +
|
|
162
|
+
(resultMessage.result ? ` — ${resultMessage.result.slice(0, 300)}` : ''),
|
|
163
|
+
recoverable: true,
|
|
164
|
+
},
|
|
165
|
+
metadata: { adapter: this.name },
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
success: true,
|
|
170
|
+
data: {
|
|
171
|
+
output: resultMessage.result ?? '',
|
|
172
|
+
sessionId: resultMessage.session_id,
|
|
173
|
+
numTurns: resultMessage.num_turns ?? turns,
|
|
174
|
+
...(resultMessage.total_cost_usd != null ? { costUsd: resultMessage.total_cost_usd } : {}),
|
|
175
|
+
},
|
|
176
|
+
metadata: {
|
|
177
|
+
adapter: this.name,
|
|
178
|
+
trace: {
|
|
179
|
+
taskId: context.taskId,
|
|
180
|
+
...(resultMessage.usage ? { usage: resultMessage.usage } : {}),
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
187
|
+
return {
|
|
188
|
+
success: false,
|
|
189
|
+
error: {
|
|
190
|
+
code: 'EXECUTION_ERROR',
|
|
191
|
+
message,
|
|
192
|
+
recoverable: true,
|
|
193
|
+
},
|
|
194
|
+
metadata: { adapter: this.name },
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async shutdown() {
|
|
199
|
+
this.agents.clear();
|
|
200
|
+
await super.shutdown();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
exports.ClaudeAgentSDKAdapter = ClaudeAgentSDKAdapter;
|
|
204
|
+
//# sourceMappingURL=claude-agent-sdk-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-agent-sdk-adapter.js","sourceRoot":"","sources":["../../../adapters/claude-agent-sdk-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;;AAEH,iDAA6C;AAoE7C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,mDAAmD;AACnD,SAAS,WAAW,CAAC,OAAqB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IACjD,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1D,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;aACxD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC;AACpD,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,0BAAW;IAC3C,IAAI,GAAG,kBAAkB,CAAC;IAC1B,OAAO,GAAG,OAAO,CAAC;IAEnB,MAAM,GAAkC,IAAI,GAAG,EAAE,CAAC;IAE1D,IAAI,YAAY;QACd,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAE5E;;;;;OAKG;IACH,aAAa,CAAC,OAAe,EAAE,MAA4B;QACzD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CACb,mFAAmF;gBACnF,wEAAwE,CACzE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE;YACjC,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,kDAAkD;YAC/D,YAAY,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC;YAClF,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,OAAqB,EACrB,OAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,uDAAuD,OAAO,GAAG;oBAC1E,WAAW,EAAE,KAAK;iBACnB;gBACD,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;aACjC,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,OAAO,GAA4B,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC5D,IAAI,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,IAAI,aAA2C,CAAC;YAChD,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC9B,aAAa,GAAG,OAAO,CAAC;oBACxB,MAAM;gBACR,CAAC;gBACD,KAAK,EAAE,CAAC;gBACR,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,kEAAkE;wBAC3E,WAAW,EAAE,IAAI;qBAClB;oBACD,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;iBACjC,CAAC;YACJ,CAAC;YAED,IAAI,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC;gBAC7F,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE,sCAAsC,aAAa,CAAC,OAAO,IAAI,OAAO,GAAG;4BAChF,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1E,WAAW,EAAE,IAAI;qBAClB;oBACD,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;iBACjC,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;oBAClC,SAAS,EAAE,aAAa,CAAC,UAAU;oBACnC,QAAQ,EAAE,aAAa,CAAC,SAAS,IAAI,KAAK;oBAC1C,GAAG,CAAC,aAAa,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3F;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI,CAAC,IAAI;oBAClB,KAAK,EAAE;wBACL,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC/D;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO;oBACP,WAAW,EAAE,IAAI;iBAClB;gBACD,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;CACF;AA9JD,sDA8JC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gemini Adapter
|
|
4
|
+
*
|
|
5
|
+
* Integrates the Google Gemini Developer API (Google AI Studio /
|
|
6
|
+
* generativelanguage.googleapis.com) with the SwarmOrchestrator. This is the
|
|
7
|
+
* consumer-facing Gemini path — for Gemini on Google Cloud (Vertex AI) use
|
|
8
|
+
* `VertexAIAdapter` instead.
|
|
9
|
+
*
|
|
10
|
+
* Supports Gemini 2.x / 2.5 models with system instructions, generation
|
|
11
|
+
* config (temperature, max output tokens), and thinking budgets.
|
|
12
|
+
*
|
|
13
|
+
* Usage — built-in fetch (Gemini Developer API):
|
|
14
|
+
* const adapter = new GeminiAdapter();
|
|
15
|
+
* adapter.registerAgent('researcher', {
|
|
16
|
+
* model: 'gemini-2.5-flash',
|
|
17
|
+
* apiKey: process.env.GEMINI_API_KEY,
|
|
18
|
+
* systemPrompt: 'You are a meticulous researcher.',
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* Usage — bring-your-own client (@google/genai or compatible):
|
|
22
|
+
* import { GoogleGenAI } from '@google/genai';
|
|
23
|
+
* const genai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
|
|
24
|
+
* adapter.registerAgent('pro', {
|
|
25
|
+
* model: 'gemini-2.5-pro',
|
|
26
|
+
* client: { generateContent: (params) => genai.models.generateContent(params) },
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* @module GeminiAdapter
|
|
30
|
+
* @version 1.0.0
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.GeminiAdapter = void 0;
|
|
34
|
+
const base_adapter_1 = require("./base-adapter");
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
// Helpers
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
/** Build the prompt string from an AgentPayload */
|
|
39
|
+
function buildPrompt(payload) {
|
|
40
|
+
const parts = [];
|
|
41
|
+
const instruction = payload.handoff?.instruction;
|
|
42
|
+
if (instruction)
|
|
43
|
+
parts.push(instruction);
|
|
44
|
+
if (payload.action)
|
|
45
|
+
parts.push(`Task: ${payload.action}`);
|
|
46
|
+
if (payload.params && Object.keys(payload.params).length > 0) {
|
|
47
|
+
parts.push(`Parameters: ${JSON.stringify(payload.params, null, 2)}`);
|
|
48
|
+
}
|
|
49
|
+
if (payload.blackboardSnapshot && Object.keys(payload.blackboardSnapshot).length > 0) {
|
|
50
|
+
const relevant = Object.entries(payload.blackboardSnapshot)
|
|
51
|
+
.slice(0, 10)
|
|
52
|
+
.map(([k, v]) => `${k}: ${JSON.stringify(v)}`)
|
|
53
|
+
.join('\n');
|
|
54
|
+
parts.push(`Context from blackboard:\n${relevant}`);
|
|
55
|
+
}
|
|
56
|
+
return parts.join('\n\n') || 'Complete the task.';
|
|
57
|
+
}
|
|
58
|
+
/** Resolve API key — config first, then env */
|
|
59
|
+
function resolveApiKey(config) {
|
|
60
|
+
return config.apiKey ?? process.env['GEMINI_API_KEY'] ?? '';
|
|
61
|
+
}
|
|
62
|
+
/** Extract the response text from a GeminiGenerateResponse (SDK or REST shape) */
|
|
63
|
+
function extractText(resp) {
|
|
64
|
+
if (typeof resp.text === 'string' && resp.text.length > 0)
|
|
65
|
+
return resp.text;
|
|
66
|
+
const parts = resp.candidates?.[0]?.content?.parts ?? [];
|
|
67
|
+
return parts.map((p) => p.text ?? '').join('');
|
|
68
|
+
}
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// GeminiAdapter
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
/**
|
|
73
|
+
* Adapter that connects Google Gemini models (Gemini Developer API) to the
|
|
74
|
+
* SwarmOrchestrator. BYOC: supply a `@google/genai`-compatible client, or
|
|
75
|
+
* let the adapter call the REST API directly with a `GEMINI_API_KEY`.
|
|
76
|
+
*/
|
|
77
|
+
class GeminiAdapter extends base_adapter_1.BaseAdapter {
|
|
78
|
+
name = 'gemini';
|
|
79
|
+
version = '1.0.0';
|
|
80
|
+
agents = new Map();
|
|
81
|
+
get capabilities() {
|
|
82
|
+
return {
|
|
83
|
+
streaming: false,
|
|
84
|
+
parallel: true,
|
|
85
|
+
bidirectional: false,
|
|
86
|
+
discovery: true,
|
|
87
|
+
authentication: true,
|
|
88
|
+
statefulSessions: false,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// -------------------------------------------------------------------------
|
|
92
|
+
// Registration
|
|
93
|
+
// -------------------------------------------------------------------------
|
|
94
|
+
/**
|
|
95
|
+
* Register a Gemini-powered agent.
|
|
96
|
+
*
|
|
97
|
+
* @param agentId Unique identifier used in `delegateTask` calls.
|
|
98
|
+
* @param config Gemini agent configuration.
|
|
99
|
+
*/
|
|
100
|
+
registerAgent(agentId, config = {}) {
|
|
101
|
+
if (!agentId || typeof agentId !== 'string' || agentId.trim() === '') {
|
|
102
|
+
throw new Error('GeminiAdapter: agentId must be a non-empty string');
|
|
103
|
+
}
|
|
104
|
+
if (!this.ready) {
|
|
105
|
+
this.ready = true;
|
|
106
|
+
}
|
|
107
|
+
this.agents.set(agentId, { config });
|
|
108
|
+
this.registeredAgents.set(agentId, {
|
|
109
|
+
id: agentId,
|
|
110
|
+
name: agentId,
|
|
111
|
+
description: `Gemini agent (model: ${config.model ?? 'gemini-2.5-flash'})`,
|
|
112
|
+
capabilities: ['chat', 'analysis', 'code-generation', 'reasoning', 'multi-modal'],
|
|
113
|
+
adapter: this.name,
|
|
114
|
+
status: 'available',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
// -------------------------------------------------------------------------
|
|
118
|
+
// Execution
|
|
119
|
+
// -------------------------------------------------------------------------
|
|
120
|
+
async executeAgent(agentId, payload, context) {
|
|
121
|
+
if (!this.ready) {
|
|
122
|
+
throw new Error('GeminiAdapter: adapter not initialized. Call initialize() first.');
|
|
123
|
+
}
|
|
124
|
+
const entry = this.agents.get(agentId);
|
|
125
|
+
if (!entry) {
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: {
|
|
129
|
+
code: 'AGENT_NOT_FOUND',
|
|
130
|
+
message: `GeminiAdapter: no agent registered with id "${agentId}"`,
|
|
131
|
+
recoverable: false,
|
|
132
|
+
},
|
|
133
|
+
metadata: { adapter: this.name },
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const cfg = entry.config;
|
|
137
|
+
try {
|
|
138
|
+
const { output, usage } = await this._generate(cfg, payload);
|
|
139
|
+
return {
|
|
140
|
+
success: true,
|
|
141
|
+
data: { output, model: cfg.model ?? 'gemini-2.5-flash' },
|
|
142
|
+
metadata: {
|
|
143
|
+
adapter: this.name,
|
|
144
|
+
trace: {
|
|
145
|
+
taskId: context.taskId,
|
|
146
|
+
...(usage ? { usage } : {}),
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
153
|
+
return {
|
|
154
|
+
success: false,
|
|
155
|
+
error: {
|
|
156
|
+
code: 'EXECUTION_ERROR',
|
|
157
|
+
message,
|
|
158
|
+
recoverable: true,
|
|
159
|
+
},
|
|
160
|
+
metadata: { adapter: this.name },
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async shutdown() {
|
|
165
|
+
this.agents.clear();
|
|
166
|
+
await super.shutdown();
|
|
167
|
+
}
|
|
168
|
+
// -------------------------------------------------------------------------
|
|
169
|
+
// Private execution
|
|
170
|
+
// -------------------------------------------------------------------------
|
|
171
|
+
async _generate(cfg, payload) {
|
|
172
|
+
const prompt = buildPrompt(payload);
|
|
173
|
+
const model = cfg.model ?? 'gemini-2.5-flash';
|
|
174
|
+
const generationConfig = {};
|
|
175
|
+
if (cfg.maxOutputTokens != null)
|
|
176
|
+
generationConfig['maxOutputTokens'] = cfg.maxOutputTokens;
|
|
177
|
+
if (cfg.temperature != null)
|
|
178
|
+
generationConfig['temperature'] = cfg.temperature;
|
|
179
|
+
if (cfg.thinkingBudget != null) {
|
|
180
|
+
generationConfig['thinkingConfig'] = { thinkingBudget: cfg.thinkingBudget };
|
|
181
|
+
}
|
|
182
|
+
// Bring-your-own SDK client (@google/genai compatible)
|
|
183
|
+
if (cfg.client) {
|
|
184
|
+
const config = { ...generationConfig };
|
|
185
|
+
if (cfg.systemPrompt)
|
|
186
|
+
config['systemInstruction'] = cfg.systemPrompt;
|
|
187
|
+
const resp = await cfg.client.generateContent({
|
|
188
|
+
model,
|
|
189
|
+
contents: [{ role: 'user', parts: [{ text: prompt }] }],
|
|
190
|
+
...(Object.keys(config).length > 0 ? { config } : {}),
|
|
191
|
+
});
|
|
192
|
+
const output = extractText(resp);
|
|
193
|
+
const usage = resp.usageMetadata;
|
|
194
|
+
return { output, usage };
|
|
195
|
+
}
|
|
196
|
+
// Built-in fetch path (Gemini Developer API REST)
|
|
197
|
+
const apiKey = resolveApiKey(cfg);
|
|
198
|
+
if (!apiKey) {
|
|
199
|
+
throw new Error('GeminiAdapter: no API key provided. Set apiKey in config or GEMINI_API_KEY env var.');
|
|
200
|
+
}
|
|
201
|
+
const base = (cfg.baseUrl ?? 'https://generativelanguage.googleapis.com/v1beta').replace(/\/+$/, '');
|
|
202
|
+
const url = `${base}/models/${encodeURIComponent(model)}:generateContent`;
|
|
203
|
+
const body = {
|
|
204
|
+
contents: [{ role: 'user', parts: [{ text: prompt }] }],
|
|
205
|
+
...(Object.keys(generationConfig).length > 0 ? { generationConfig } : {}),
|
|
206
|
+
};
|
|
207
|
+
if (cfg.systemPrompt) {
|
|
208
|
+
body['systemInstruction'] = { parts: [{ text: cfg.systemPrompt }] };
|
|
209
|
+
}
|
|
210
|
+
const timeoutMs = cfg.timeout ?? 120_000;
|
|
211
|
+
const controller = new AbortController();
|
|
212
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
213
|
+
let resp;
|
|
214
|
+
try {
|
|
215
|
+
resp = await fetch(url, {
|
|
216
|
+
method: 'POST',
|
|
217
|
+
headers: {
|
|
218
|
+
'Content-Type': 'application/json',
|
|
219
|
+
'x-goog-api-key': apiKey,
|
|
220
|
+
...cfg.headers,
|
|
221
|
+
},
|
|
222
|
+
body: JSON.stringify(body),
|
|
223
|
+
signal: controller.signal,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
finally {
|
|
227
|
+
clearTimeout(timer);
|
|
228
|
+
}
|
|
229
|
+
if (!resp.ok) {
|
|
230
|
+
const text = await resp.text().catch(() => '');
|
|
231
|
+
throw new Error(`GeminiAdapter: HTTP ${resp.status} from Gemini API — ${text.slice(0, 200)}`);
|
|
232
|
+
}
|
|
233
|
+
const json = await resp.json();
|
|
234
|
+
const output = extractText(json);
|
|
235
|
+
return { output, usage: json.usageMetadata };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.GeminiAdapter = GeminiAdapter;
|
|
239
|
+
//# sourceMappingURL=gemini-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-adapter.js","sourceRoot":"","sources":["../../../adapters/gemini-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* @version 1.0.0
|
|
21
21
|
*/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.RLMAdapter = exports.OrchestratorAdapter = exports.BrowserAgentAdapter = exports.PydanticAIAdapter = exports.VertexAIAdapter = exports.OpenAIAgentsAdapter = exports.normalizeAnthropicResponse = exports.createAnthropicCaller = exports.AnthropicMessagesAdapter = exports.AnthropicComputerUseAdapter = exports.LangGraphAdapter = exports.HermesAdapter = exports.CopilotAdapter = exports.NemoClawAdapter = exports.APSAdapter = exports.MiniMaxAdapter = exports.CodexAdapter = exports.A2AAdapter = exports.CustomStreamingAdapter = exports.LangChainStreamingAdapter = exports.collectStream = exports.StreamingBaseAdapter = exports.AgnoAdapter = exports.DSPyAdapter = exports.HaystackAdapter = exports.OpenAIAssistantsAdapter = exports.SemanticKernelAdapter = exports.LlamaIndexAdapter = exports.CustomAdapter = exports.MCPAdapter = exports.CrewAIAdapter = exports.AutoGenAdapter = exports.LangChainAdapter = exports.OpenClawAdapter = exports.getRegistry = exports.AdapterRegistry = exports.BaseAdapter = void 0;
|
|
23
|
+
exports.ClaudeAgentSDKAdapter = exports.OpenAIResponsesAdapter = exports.GeminiAdapter = exports.RLMAdapter = exports.OrchestratorAdapter = exports.BrowserAgentAdapter = exports.PydanticAIAdapter = exports.VertexAIAdapter = exports.OpenAIAgentsAdapter = exports.normalizeAnthropicResponse = exports.createAnthropicCaller = exports.AnthropicMessagesAdapter = exports.AnthropicComputerUseAdapter = exports.LangGraphAdapter = exports.HermesAdapter = exports.CopilotAdapter = exports.NemoClawAdapter = exports.APSAdapter = exports.MiniMaxAdapter = exports.CodexAdapter = exports.A2AAdapter = exports.CustomStreamingAdapter = exports.LangChainStreamingAdapter = exports.collectStream = exports.StreamingBaseAdapter = exports.AgnoAdapter = exports.DSPyAdapter = exports.HaystackAdapter = exports.OpenAIAssistantsAdapter = exports.SemanticKernelAdapter = exports.LlamaIndexAdapter = exports.CustomAdapter = exports.MCPAdapter = exports.CrewAIAdapter = exports.AutoGenAdapter = exports.LangChainAdapter = exports.OpenClawAdapter = exports.getRegistry = exports.AdapterRegistry = exports.BaseAdapter = void 0;
|
|
24
24
|
// Core infrastructure
|
|
25
25
|
var base_adapter_1 = require("./base-adapter");
|
|
26
26
|
Object.defineProperty(exports, "BaseAdapter", { enumerable: true, get: function () { return base_adapter_1.BaseAdapter; } });
|
|
@@ -111,4 +111,13 @@ Object.defineProperty(exports, "OrchestratorAdapter", { enumerable: true, get: f
|
|
|
111
111
|
// RLM adapter (Recursive Language Model — arxiv 2512.24601)
|
|
112
112
|
var rlm_adapter_1 = require("./rlm-adapter");
|
|
113
113
|
Object.defineProperty(exports, "RLMAdapter", { enumerable: true, get: function () { return rlm_adapter_1.RLMAdapter; } });
|
|
114
|
+
// Gemini adapter (Google Gemini Developer API — BYOC or built-in fetch)
|
|
115
|
+
var gemini_adapter_1 = require("./gemini-adapter");
|
|
116
|
+
Object.defineProperty(exports, "GeminiAdapter", { enumerable: true, get: function () { return gemini_adapter_1.GeminiAdapter; } });
|
|
117
|
+
// OpenAI Responses adapter (Responses API — successor to Assistants)
|
|
118
|
+
var openai_responses_adapter_1 = require("./openai-responses-adapter");
|
|
119
|
+
Object.defineProperty(exports, "OpenAIResponsesAdapter", { enumerable: true, get: function () { return openai_responses_adapter_1.OpenAIResponsesAdapter; } });
|
|
120
|
+
// Claude Agent SDK adapter (agentic loop via @anthropic-ai/claude-agent-sdk, BYOC)
|
|
121
|
+
var claude_agent_sdk_adapter_1 = require("./claude-agent-sdk-adapter");
|
|
122
|
+
Object.defineProperty(exports, "ClaudeAgentSDKAdapter", { enumerable: true, get: function () { return claude_agent_sdk_adapter_1.ClaudeAgentSDKAdapter; } });
|
|
114
123
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,sBAAsB;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAkE;AAAzD,mHAAA,eAAe,OAAA;AAAE,+GAAA,WAAW,OAAA;AAGrC,mCAAmC;AACnC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,8BAA8B;AAC9B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAO1B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAE9B,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAOhC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAQxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAQpB,qBAAqB;AACrB,mEAA+E;AAAtE,8HAAA,oBAAoB,OAAA;AAAE,uHAAA,aAAa,OAAA;AAC5C,6EAA0E;AAAjE,wIAAA,yBAAyB,OAAA;AAClC,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAG/B,+BAA+B;AAC/B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAUnB,uDAAuD;AACvD,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AASrB,4EAA4E;AAC5E,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,4EAA4E;AAC5E,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAOnB,+EAA+E;AAC/E,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAYxB,uEAAuE;AACvE,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,mFAAmF;AACnF,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,yDAAyD;AACzD,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAGzB,qEAAqE;AACrE,mFAA+E;AAAtE,6IAAA,2BAA2B,OAAA;AAUpC,+EAA+E;AAC/E,2EAA2H;AAAlH,sIAAA,wBAAwB,OAAA;AAAE,mIAAA,qBAAqB,OAAA;AAAE,wIAAA,0BAA0B,OAAA;AAGpF,6EAA6E;AAC7E,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAQ5B,4DAA4D;AAC5D,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AAUxB,yDAAyD;AACzD,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAQ1B,wEAAwE;AACxE,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAS5B,sEAAsE;AACtE,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA;AAO5B,4DAA4D;AAC5D,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,sBAAsB;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAkE;AAAzD,mHAAA,eAAe,OAAA;AAAE,+GAAA,WAAW,OAAA;AAGrC,mCAAmC;AACnC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,8BAA8B;AAC9B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAO1B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAE9B,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAOhC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAQxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAQpB,qBAAqB;AACrB,mEAA+E;AAAtE,8HAAA,oBAAoB,OAAA;AAAE,uHAAA,aAAa,OAAA;AAC5C,6EAA0E;AAAjE,wIAAA,yBAAyB,OAAA;AAClC,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAG/B,+BAA+B;AAC/B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAUnB,uDAAuD;AACvD,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AASrB,4EAA4E;AAC5E,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,4EAA4E;AAC5E,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAOnB,+EAA+E;AAC/E,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAYxB,uEAAuE;AACvE,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,mFAAmF;AACnF,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,yDAAyD;AACzD,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAGzB,qEAAqE;AACrE,mFAA+E;AAAtE,6IAAA,2BAA2B,OAAA;AAUpC,+EAA+E;AAC/E,2EAA2H;AAAlH,sIAAA,wBAAwB,OAAA;AAAE,mIAAA,qBAAqB,OAAA;AAAE,wIAAA,0BAA0B,OAAA;AAGpF,6EAA6E;AAC7E,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAQ5B,4DAA4D;AAC5D,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AAUxB,yDAAyD;AACzD,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAQ1B,wEAAwE;AACxE,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAS5B,sEAAsE;AACtE,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA;AAO5B,4DAA4D;AAC5D,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAGnB,wEAAwE;AACxE,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAStB,qEAAqE;AACrE,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAS/B,mFAAmF;AACnF,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA"}
|