@slashfi/agents-sdk 0.24.1 → 0.24.3
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/callback/index.d.ts +13 -24
- package/dist/callback/index.d.ts.map +1 -1
- package/dist/callback/index.js.map +1 -1
- package/dist/cjs/agent-definitions/auth.js +678 -0
- package/dist/cjs/agent-definitions/auth.js.map +1 -0
- package/dist/cjs/agent-definitions/integrations.js +1173 -0
- package/dist/cjs/agent-definitions/integrations.js.map +1 -0
- package/dist/cjs/agent-definitions/remote-registry.js +469 -0
- package/dist/cjs/agent-definitions/remote-registry.js.map +1 -0
- package/dist/cjs/agent-definitions/secrets.js +193 -0
- package/dist/cjs/agent-definitions/secrets.js.map +1 -0
- package/dist/cjs/agent-definitions/users.js +440 -0
- package/dist/cjs/agent-definitions/users.js.map +1 -0
- package/dist/cjs/build.js +162 -0
- package/dist/cjs/build.js.map +1 -0
- package/dist/cjs/callback/index.js +74 -0
- package/dist/cjs/callback/index.js.map +1 -0
- package/dist/cjs/client.js +193 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/codegen.js +1027 -0
- package/dist/cjs/codegen.js.map +1 -0
- package/dist/cjs/crypto.js +44 -0
- package/dist/cjs/crypto.js.map +1 -0
- package/dist/cjs/define-config.js +81 -0
- package/dist/cjs/define-config.js.map +1 -0
- package/dist/cjs/define.js +186 -0
- package/dist/cjs/define.js.map +1 -0
- package/dist/cjs/events.js +60 -0
- package/dist/cjs/events.js.map +1 -0
- package/dist/cjs/index.js +195 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/integration-interface.js +105 -0
- package/dist/cjs/integration-interface.js.map +1 -0
- package/dist/cjs/integrations-store.js +53 -0
- package/dist/cjs/integrations-store.js.map +1 -0
- package/dist/cjs/introspect.js +136 -0
- package/dist/cjs/introspect.js.map +1 -0
- package/dist/cjs/jsonc.js +74 -0
- package/dist/cjs/jsonc.js.map +1 -0
- package/dist/cjs/jwt.js +207 -0
- package/dist/cjs/jwt.js.map +1 -0
- package/dist/cjs/key-manager.js +161 -0
- package/dist/cjs/key-manager.js.map +1 -0
- package/dist/cjs/oidc-signin.js +141 -0
- package/dist/cjs/oidc-signin.js.map +1 -0
- package/dist/cjs/pack.js +256 -0
- package/dist/cjs/pack.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/registry-consumer.js +233 -0
- package/dist/cjs/registry-consumer.js.map +1 -0
- package/dist/cjs/registry.js +512 -0
- package/dist/cjs/registry.js.map +1 -0
- package/dist/cjs/secret-collection.js +42 -0
- package/dist/cjs/secret-collection.js.map +1 -0
- package/dist/cjs/serialized.js +45 -0
- package/dist/cjs/serialized.js.map +1 -0
- package/dist/cjs/server.js +974 -0
- package/dist/cjs/server.js.map +1 -0
- package/dist/cjs/test-utils/mock-oidc-server.js +99 -0
- package/dist/cjs/test-utils/mock-oidc-server.js.map +1 -0
- package/dist/cjs/types.js +8 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/validate.js +84 -0
- package/dist/cjs/validate.js.map +1 -0
- package/dist/registry.js +6 -6
- package/dist/registry.js.map +1 -1
- package/package.json +13 -5
- package/src/callback/index.ts +13 -24
- package/src/registry.ts +6 -6
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Registry Implementation
|
|
4
|
+
*
|
|
5
|
+
* Manages registered agents and handles callAgent requests.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.agentFromSerialized = agentFromSerialized;
|
|
9
|
+
exports.createAgentRegistry = createAgentRegistry;
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const events_js_1 = require("./events.js");
|
|
12
|
+
const validate_js_1 = require("./validate.js");
|
|
13
|
+
/** Default supported actions if not specified */
|
|
14
|
+
const DEFAULT_SUPPORTED_ACTIONS = [
|
|
15
|
+
"execute_tool",
|
|
16
|
+
"describe_tools",
|
|
17
|
+
"load",
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* Convert a SerializedAgentDefinition to an AgentDefinition.
|
|
21
|
+
*
|
|
22
|
+
* Use this when you need an AgentDefinition but have a serialized one
|
|
23
|
+
* (e.g., from an @agentdef package or adk introspect output).
|
|
24
|
+
*
|
|
25
|
+
* Tools get a proxy execute that throws — actual execution goes through MCP.
|
|
26
|
+
* The registry's `register()` method calls this automatically.
|
|
27
|
+
*/
|
|
28
|
+
function agentFromSerialized(def) {
|
|
29
|
+
return {
|
|
30
|
+
path: def.path,
|
|
31
|
+
entrypoint: def.description || `Agent for ${def.name}`,
|
|
32
|
+
config: {
|
|
33
|
+
name: def.name,
|
|
34
|
+
description: def.description,
|
|
35
|
+
visibility: def.visibility,
|
|
36
|
+
},
|
|
37
|
+
visibility: def.visibility,
|
|
38
|
+
tools: def.tools.map((t) => ({
|
|
39
|
+
name: t.name,
|
|
40
|
+
description: t.description,
|
|
41
|
+
inputSchema: t.inputSchema,
|
|
42
|
+
execute: async () => {
|
|
43
|
+
throw new Error(`Tool "${t.name}" is from a SerializedAgentDefinition and requires MCP server execution. Use createClient() to call tools on serialized agents.`);
|
|
44
|
+
},
|
|
45
|
+
})),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function createAgentRegistry(options = {}) {
|
|
49
|
+
const { defaultVisibility = "internal" } = options;
|
|
50
|
+
const agents = new Map();
|
|
51
|
+
const eventBus = (0, events_js_1.createEventBus)();
|
|
52
|
+
/**
|
|
53
|
+
* Check if agent supports the requested action.
|
|
54
|
+
*/
|
|
55
|
+
function checkActionSupported(agent, action) {
|
|
56
|
+
const supported = agent.config?.supportedActions ?? DEFAULT_SUPPORTED_ACTIONS;
|
|
57
|
+
return supported.includes(action);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if caller is allowed to access the agent.
|
|
61
|
+
*/
|
|
62
|
+
function checkAgentAccess(agent, callerId, callerType) {
|
|
63
|
+
const visibility = agent.visibility ?? defaultVisibility;
|
|
64
|
+
// System callers can access everything
|
|
65
|
+
if (callerType === "system")
|
|
66
|
+
return true;
|
|
67
|
+
// Check explicit allowlist first
|
|
68
|
+
if (agent.allowedCallers && callerId) {
|
|
69
|
+
if (agent.allowedCallers.includes(callerId))
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
// Check visibility
|
|
73
|
+
switch (visibility) {
|
|
74
|
+
case "public":
|
|
75
|
+
return true;
|
|
76
|
+
case "internal":
|
|
77
|
+
// Authenticated callers (agents or users with a callerId) can access
|
|
78
|
+
return (callerType === "agent" || (callerType != null && callerId != null));
|
|
79
|
+
case "private":
|
|
80
|
+
// Only self can access
|
|
81
|
+
return callerId === agent.path;
|
|
82
|
+
default:
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if caller is allowed to use a tool.
|
|
88
|
+
*/
|
|
89
|
+
function checkToolAccess(agent, toolName, callerId, callerType) {
|
|
90
|
+
const tool = agent.tools.find((t) => t.name === toolName);
|
|
91
|
+
if (!tool)
|
|
92
|
+
return false;
|
|
93
|
+
const visibility = tool.visibility ?? "public";
|
|
94
|
+
// System callers can access everything
|
|
95
|
+
if (callerType === "system")
|
|
96
|
+
return true;
|
|
97
|
+
// Check explicit allowlist first
|
|
98
|
+
if (tool.allowedCallers && callerId) {
|
|
99
|
+
if (tool.allowedCallers.includes(callerId))
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
// Check visibility
|
|
103
|
+
switch (visibility) {
|
|
104
|
+
case "public":
|
|
105
|
+
return true;
|
|
106
|
+
case "internal":
|
|
107
|
+
return (callerType === "agent" || (callerType != null && callerId != null));
|
|
108
|
+
case "authenticated":
|
|
109
|
+
return callerId != null && callerId !== "anonymous";
|
|
110
|
+
case "private":
|
|
111
|
+
return callerId === agent.path;
|
|
112
|
+
default:
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function resolveRefPath(currentPath, ref) {
|
|
117
|
+
if (ref.startsWith("@") && !ref.includes("/")) {
|
|
118
|
+
return `/agents/${ref}`;
|
|
119
|
+
}
|
|
120
|
+
if (ref.startsWith("../") || ref.startsWith("./")) {
|
|
121
|
+
const dir = (0, node_path_1.dirname)(currentPath);
|
|
122
|
+
return (0, node_path_1.resolve)(dir, ref);
|
|
123
|
+
}
|
|
124
|
+
if (ref.startsWith("/")) {
|
|
125
|
+
return ref;
|
|
126
|
+
}
|
|
127
|
+
return `/agents/${ref}`;
|
|
128
|
+
}
|
|
129
|
+
function buildToolsSection(ownTools, agentRefs) {
|
|
130
|
+
const hasOwnTools = ownTools.length > 0;
|
|
131
|
+
const hasRefTools = agentRefs.some((ref) => ref.tools.length > 0);
|
|
132
|
+
if (!hasOwnTools && !hasRefTools)
|
|
133
|
+
return "";
|
|
134
|
+
const lines = ["\n\n## Available Tools\n"];
|
|
135
|
+
if (hasOwnTools) {
|
|
136
|
+
lines.push("| Tool | Description |", "|------|-------------|");
|
|
137
|
+
for (const t of ownTools) {
|
|
138
|
+
lines.push(`| ${t.name} | ${t.description} |`);
|
|
139
|
+
}
|
|
140
|
+
lines.push("");
|
|
141
|
+
}
|
|
142
|
+
for (const ref of agentRefs) {
|
|
143
|
+
if (ref.tools.length > 0) {
|
|
144
|
+
lines.push(`### From ${ref.key} (${ref.path})\n`);
|
|
145
|
+
lines.push("| Tool | Description |", "|------|-------------|");
|
|
146
|
+
for (const t of ref.tools) {
|
|
147
|
+
lines.push(`| ${t.name} | ${t.description} |`);
|
|
148
|
+
}
|
|
149
|
+
lines.push("");
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return lines.join("\n");
|
|
153
|
+
}
|
|
154
|
+
async function defaultLoad(agent, request) {
|
|
155
|
+
const toolSchemas = agent.tools
|
|
156
|
+
.filter((t) => checkToolAccess(agent, t.name, request.callerId, request.callerType))
|
|
157
|
+
.map((t) => ({
|
|
158
|
+
name: t.name,
|
|
159
|
+
description: t.description,
|
|
160
|
+
inputSchema: t.inputSchema,
|
|
161
|
+
...(t.outputSchema && { outputSchema: t.outputSchema }),
|
|
162
|
+
}));
|
|
163
|
+
const agentRefs = [];
|
|
164
|
+
const refs = agent.config?.refs;
|
|
165
|
+
if (refs) {
|
|
166
|
+
for (const [key, refConfig] of Object.entries(refs)) {
|
|
167
|
+
const refPath = resolveRefPath(agent.path, key);
|
|
168
|
+
const refAgent = agents.get(refPath);
|
|
169
|
+
const allTools = (refAgent?.tools ?? [])
|
|
170
|
+
.filter((t) => checkToolAccess(refAgent, t.name, request.callerId, request.callerType))
|
|
171
|
+
.map((t) => ({
|
|
172
|
+
name: t.name,
|
|
173
|
+
description: t.description,
|
|
174
|
+
inputSchema: t.inputSchema,
|
|
175
|
+
...(t.outputSchema && { outputSchema: t.outputSchema }),
|
|
176
|
+
}));
|
|
177
|
+
const publicFilter = refAgent?.config?.public?.tools;
|
|
178
|
+
const tools = publicFilter
|
|
179
|
+
? allTools.filter((t) => publicFilter.includes(t.name))
|
|
180
|
+
: allTools;
|
|
181
|
+
agentRefs.push({
|
|
182
|
+
key,
|
|
183
|
+
path: refPath,
|
|
184
|
+
description: refConfig.description ?? key,
|
|
185
|
+
tools,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const systemPrompt = agent.entrypoint + buildToolsSection(toolSchemas, agentRefs);
|
|
190
|
+
return {
|
|
191
|
+
success: true,
|
|
192
|
+
result: {
|
|
193
|
+
path: agent.path,
|
|
194
|
+
entrypoint: agent.entrypoint,
|
|
195
|
+
systemPrompt,
|
|
196
|
+
contextMessages: [],
|
|
197
|
+
config: agent.config,
|
|
198
|
+
tools: toolSchemas,
|
|
199
|
+
agentRefs,
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Detect if the input is a SerializedAgentDefinition (vs AgentDefinition).
|
|
205
|
+
* SerializedAgentDefinition has tools with inputSchema but no execute function.
|
|
206
|
+
*/
|
|
207
|
+
function isSerialized(agent) {
|
|
208
|
+
if (!agent.tools || agent.tools.length === 0)
|
|
209
|
+
return false;
|
|
210
|
+
// SerializedAgentDefinition tools have inputSchema but no execute
|
|
211
|
+
const firstTool = agent.tools[0];
|
|
212
|
+
return "inputSchema" in firstTool && !("execute" in firstTool);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Convert a SerializedAgentDefinition to an AgentDefinition.
|
|
216
|
+
* Tools get a proxy execute that throws — actual execution goes through MCP.
|
|
217
|
+
*/
|
|
218
|
+
function fromSerialized(def) {
|
|
219
|
+
return {
|
|
220
|
+
path: def.path,
|
|
221
|
+
entrypoint: def.description || `Agent for ${def.name}`,
|
|
222
|
+
config: {
|
|
223
|
+
name: def.name,
|
|
224
|
+
description: def.description,
|
|
225
|
+
visibility: def.visibility,
|
|
226
|
+
},
|
|
227
|
+
visibility: def.visibility,
|
|
228
|
+
tools: def.tools.map((t) => ({
|
|
229
|
+
name: t.name,
|
|
230
|
+
description: t.description,
|
|
231
|
+
inputSchema: t.inputSchema,
|
|
232
|
+
execute: async () => {
|
|
233
|
+
throw new Error(`Tool "${t.name}" is from a SerializedAgentDefinition and requires MCP server execution. Use createClient() to call tools on serialized agents.`);
|
|
234
|
+
},
|
|
235
|
+
})),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
const registry = {
|
|
239
|
+
register(input) {
|
|
240
|
+
let agent;
|
|
241
|
+
if (isSerialized(input)) {
|
|
242
|
+
(0, validate_js_1.assertValidDefinition)(input, `register(${input.path || "unknown"})`);
|
|
243
|
+
agent = fromSerialized(input);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
agent = input;
|
|
247
|
+
}
|
|
248
|
+
agents.set(agent.path, agent);
|
|
249
|
+
// Collect agent-level listeners into the bus
|
|
250
|
+
if (agent._listeners) {
|
|
251
|
+
for (const entry of agent._listeners) {
|
|
252
|
+
eventBus._onScoped(entry.eventType, entry.callback, {
|
|
253
|
+
agentPath: agent.path,
|
|
254
|
+
toolName: entry.toolScope,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Collect tool-level listeners into the bus
|
|
259
|
+
for (const tool of agent.tools) {
|
|
260
|
+
if (tool._listeners) {
|
|
261
|
+
for (const entry of tool._listeners) {
|
|
262
|
+
eventBus._onScoped(entry.eventType, entry.callback, {
|
|
263
|
+
agentPath: agent.path,
|
|
264
|
+
toolName: tool.name,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
get(path) {
|
|
271
|
+
return agents.get(path);
|
|
272
|
+
},
|
|
273
|
+
has(path) {
|
|
274
|
+
return agents.has(path);
|
|
275
|
+
},
|
|
276
|
+
list() {
|
|
277
|
+
return Array.from(agents.values());
|
|
278
|
+
},
|
|
279
|
+
listPaths() {
|
|
280
|
+
return Array.from(agents.keys());
|
|
281
|
+
},
|
|
282
|
+
on(eventType, callback) {
|
|
283
|
+
eventBus.on(eventType, callback);
|
|
284
|
+
},
|
|
285
|
+
async emit(event) {
|
|
286
|
+
await eventBus.emit(event);
|
|
287
|
+
},
|
|
288
|
+
async call(request) {
|
|
289
|
+
// Deferred execution: if trigger is present and callback store is
|
|
290
|
+
// configured, store the call_agent command as a callback instead
|
|
291
|
+
// of executing it immediately.
|
|
292
|
+
if (request.trigger && options.callbackStore) {
|
|
293
|
+
// The trigger stays as part of the callback — cockroach stores it in the
|
|
294
|
+
// callback JSON column. Attributes are first-class key-value metadata.
|
|
295
|
+
const callbackId = await options.callbackStore.create({
|
|
296
|
+
callback: request,
|
|
297
|
+
attributes: {
|
|
298
|
+
...(request.callerId && { creatorId: request.callerId }),
|
|
299
|
+
...(request.callerType && { creatorType: request.callerType }),
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
return {
|
|
303
|
+
success: true,
|
|
304
|
+
callbackId,
|
|
305
|
+
message: "Callback created. It will execute when the trigger fires.",
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
const agent = agents.get(request.path);
|
|
309
|
+
if (!agent) {
|
|
310
|
+
return {
|
|
311
|
+
success: false,
|
|
312
|
+
error: `Agent not found: ${request.path}`,
|
|
313
|
+
code: "AGENT_NOT_FOUND",
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
// Check agent access
|
|
317
|
+
if (!checkAgentAccess(agent, request.callerId, request.callerType)) {
|
|
318
|
+
return {
|
|
319
|
+
success: false,
|
|
320
|
+
error: `Access denied to agent: ${request.path}`,
|
|
321
|
+
code: "ACCESS_DENIED",
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
// Check action is supported
|
|
325
|
+
if (!checkActionSupported(agent, request.action)) {
|
|
326
|
+
const supported = agent.config?.supportedActions ?? DEFAULT_SUPPORTED_ACTIONS;
|
|
327
|
+
return {
|
|
328
|
+
success: false,
|
|
329
|
+
error: `Action '${request.action}' not supported by agent. Supported: ${supported.join(", ")}`,
|
|
330
|
+
code: "ACTION_NOT_SUPPORTED",
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
switch (request.action) {
|
|
334
|
+
case "invoke":
|
|
335
|
+
case "ask": {
|
|
336
|
+
// Get runtime if available
|
|
337
|
+
const runtime = agent.runtime?.();
|
|
338
|
+
// Call onInvoke hook if defined
|
|
339
|
+
if (runtime?.onInvoke) {
|
|
340
|
+
await runtime.onInvoke({
|
|
341
|
+
tenantId: "default",
|
|
342
|
+
agentPath: request.path,
|
|
343
|
+
prompt: request.prompt,
|
|
344
|
+
sessionId: request.sessionId,
|
|
345
|
+
callerId: request.callerId ?? "unknown",
|
|
346
|
+
callerType: request.callerType ?? "system",
|
|
347
|
+
metadata: request.metadata,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
// These actions require an LLM runtime which this SDK doesn't provide
|
|
351
|
+
// Users can implement their own invoke/ask handlers or use a full runtime
|
|
352
|
+
return {
|
|
353
|
+
success: false,
|
|
354
|
+
error: `Action '${request.action}' requires an LLM runtime. Use execute_tool for direct tool calls.`,
|
|
355
|
+
code: "RUNTIME_REQUIRED",
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
case "execute_tool": {
|
|
359
|
+
const tool = agent.tools.find((t) => t.name === request.tool);
|
|
360
|
+
if (!tool) {
|
|
361
|
+
return {
|
|
362
|
+
success: false,
|
|
363
|
+
error: `Tool not found: ${request.tool}`,
|
|
364
|
+
code: "TOOL_NOT_FOUND",
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
// Check tool access
|
|
368
|
+
if (!checkToolAccess(agent, request.tool, request.callerId, request.callerType)) {
|
|
369
|
+
return {
|
|
370
|
+
success: false,
|
|
371
|
+
error: `Access denied to tool: ${request.tool} (visibility=${tool.visibility}, callerId=${request.callerId}, callerType=${request.callerType})`,
|
|
372
|
+
code: "ACCESS_DENIED",
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
let ctx = {
|
|
376
|
+
tenantId: "default",
|
|
377
|
+
agentPath: agent.path,
|
|
378
|
+
callerId: request.callerId ?? "unknown",
|
|
379
|
+
callerType: request.callerType ?? "system",
|
|
380
|
+
metadata: request.metadata,
|
|
381
|
+
};
|
|
382
|
+
// Apply contextFactory if provided
|
|
383
|
+
if (options.contextFactory) {
|
|
384
|
+
ctx = options.contextFactory(ctx);
|
|
385
|
+
}
|
|
386
|
+
try {
|
|
387
|
+
if (!tool.execute) {
|
|
388
|
+
return {
|
|
389
|
+
success: false,
|
|
390
|
+
error: `Tool ${request.tool} has no execute function`,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
// Emit tool/call before execution
|
|
394
|
+
const startMs = Date.now();
|
|
395
|
+
await eventBus.emit({
|
|
396
|
+
type: "tool/call",
|
|
397
|
+
agentPath: agent.path,
|
|
398
|
+
tool: request.tool,
|
|
399
|
+
params: request.params,
|
|
400
|
+
timestamp: startMs,
|
|
401
|
+
});
|
|
402
|
+
let result;
|
|
403
|
+
try {
|
|
404
|
+
result = await tool.execute(request.params, ctx);
|
|
405
|
+
}
|
|
406
|
+
catch (err) {
|
|
407
|
+
// Emit tool/error on failure
|
|
408
|
+
await eventBus
|
|
409
|
+
.emit({
|
|
410
|
+
type: "tool/error",
|
|
411
|
+
agentPath: agent.path,
|
|
412
|
+
tool: request.tool,
|
|
413
|
+
params: request.params,
|
|
414
|
+
error: err,
|
|
415
|
+
durationMs: Date.now() - startMs,
|
|
416
|
+
timestamp: Date.now(),
|
|
417
|
+
})
|
|
418
|
+
.catch(() => { }); // don't let emit error mask tool error
|
|
419
|
+
return {
|
|
420
|
+
success: false,
|
|
421
|
+
error: err instanceof Error ? err.message : String(err),
|
|
422
|
+
code: "TOOL_EXECUTION_ERROR",
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
// Emit tool/result after success
|
|
426
|
+
await eventBus.emit({
|
|
427
|
+
type: "tool/result",
|
|
428
|
+
agentPath: agent.path,
|
|
429
|
+
tool: request.tool,
|
|
430
|
+
params: request.params,
|
|
431
|
+
result,
|
|
432
|
+
durationMs: Date.now() - startMs,
|
|
433
|
+
timestamp: Date.now(),
|
|
434
|
+
});
|
|
435
|
+
return {
|
|
436
|
+
success: true,
|
|
437
|
+
result,
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
catch (outerErr) {
|
|
441
|
+
// Catch-all for unexpected errors (e.g., emit failures)
|
|
442
|
+
return {
|
|
443
|
+
success: false,
|
|
444
|
+
error: outerErr instanceof Error ? outerErr.message : String(outerErr),
|
|
445
|
+
code: "TOOL_EXECUTION_ERROR",
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
case "describe_tools": {
|
|
450
|
+
const toolSchemas = agent.tools
|
|
451
|
+
.filter((t) => checkToolAccess(agent, t.name, request.callerId, request.callerType))
|
|
452
|
+
.filter((t) => request.tools ? request.tools.includes(t.name) : true)
|
|
453
|
+
.map((t) => ({
|
|
454
|
+
name: t.name,
|
|
455
|
+
description: t.description,
|
|
456
|
+
inputSchema: t.inputSchema,
|
|
457
|
+
...(t.outputSchema && { outputSchema: t.outputSchema }),
|
|
458
|
+
}));
|
|
459
|
+
return {
|
|
460
|
+
success: true,
|
|
461
|
+
tools: toolSchemas,
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
case "load": {
|
|
465
|
+
if (options.middleware?.load) {
|
|
466
|
+
return options.middleware.load(defaultLoad, {
|
|
467
|
+
agent,
|
|
468
|
+
request,
|
|
469
|
+
registry,
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
return defaultLoad(agent, request);
|
|
473
|
+
}
|
|
474
|
+
case "learn": {
|
|
475
|
+
// Get runtime if available
|
|
476
|
+
const runtime = agent.runtime?.();
|
|
477
|
+
// Call onLearn hook if defined
|
|
478
|
+
if (runtime?.onLearn) {
|
|
479
|
+
await runtime.onLearn({
|
|
480
|
+
tenantId: "default",
|
|
481
|
+
agentPath: request.path,
|
|
482
|
+
content: request.content,
|
|
483
|
+
scope: request.scope ?? "session",
|
|
484
|
+
category: request.category,
|
|
485
|
+
callerId: request.callerId ?? "unknown",
|
|
486
|
+
});
|
|
487
|
+
return {
|
|
488
|
+
success: true,
|
|
489
|
+
action: "stored",
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
// No runtime or no onLearn hook - ignore
|
|
493
|
+
return {
|
|
494
|
+
success: true,
|
|
495
|
+
action: "ignored",
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
default: {
|
|
499
|
+
// TypeScript exhaustiveness check
|
|
500
|
+
const _exhaustive = request;
|
|
501
|
+
return {
|
|
502
|
+
success: false,
|
|
503
|
+
error: `Unknown action: ${_exhaustive.action}`,
|
|
504
|
+
code: "UNKNOWN_ACTION",
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
};
|
|
510
|
+
return registry;
|
|
511
|
+
}
|
|
512
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Secret Collection
|
|
4
|
+
*
|
|
5
|
+
* Manages pending secret collection forms (one-time tokens).
|
|
6
|
+
* Used by @integrations collect_secrets and the server's /secrets/collect endpoint.
|
|
7
|
+
*
|
|
8
|
+
* Exported for use in custom server implementations.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.pendingCollections = void 0;
|
|
12
|
+
exports.generateCollectionToken = generateCollectionToken;
|
|
13
|
+
exports.cleanupExpiredCollections = cleanupExpiredCollections;
|
|
14
|
+
// ============================================
|
|
15
|
+
// Storage (with TTL cleanup)
|
|
16
|
+
// ============================================
|
|
17
|
+
/** Default TTL for pending collections: 15 minutes */
|
|
18
|
+
const COLLECTION_TTL_MS = 15 * 60 * 1000;
|
|
19
|
+
/** Pending secret collection forms, keyed by one-time token */
|
|
20
|
+
exports.pendingCollections = new Map();
|
|
21
|
+
/** Generate a random one-time token for secret collection */
|
|
22
|
+
function generateCollectionToken() {
|
|
23
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
24
|
+
let token = "";
|
|
25
|
+
for (let i = 0; i < 48; i++) {
|
|
26
|
+
token += chars[Math.floor(Math.random() * chars.length)];
|
|
27
|
+
}
|
|
28
|
+
return token;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Clean up expired pending collections.
|
|
32
|
+
* Call this periodically or before lookups.
|
|
33
|
+
*/
|
|
34
|
+
function cleanupExpiredCollections() {
|
|
35
|
+
const now = Date.now();
|
|
36
|
+
for (const [token, pending] of exports.pendingCollections) {
|
|
37
|
+
if (now - pending.createdAt > COLLECTION_TTL_MS) {
|
|
38
|
+
exports.pendingCollections.delete(token);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=secret-collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-collection.js","sourceRoot":"","sources":["../../src/secret-collection.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAsCH,0DAQC;AAMD,8DAOC;AAhCD,+CAA+C;AAC/C,6BAA6B;AAC7B,+CAA+C;AAE/C,sDAAsD;AACtD,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzC,+DAA+D;AAClD,QAAA,kBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEvE,6DAA6D;AAC7D,SAAgB,uBAAuB;IACrC,MAAM,KAAK,GACT,gEAAgE,CAAC;IACnE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,0BAAkB,EAAE,CAAC;QAClD,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,iBAAiB,EAAE,CAAC;YAChD,0BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Serialized Agent Definition
|
|
4
|
+
*
|
|
5
|
+
* Pure-data, JSON-serializable representation of an agent.
|
|
6
|
+
* No execute functions, no runtime hooks — just schemas and metadata.
|
|
7
|
+
*
|
|
8
|
+
* This is the universal IR:
|
|
9
|
+
* - Codegen produces it (MCP introspection → SerializedAgentDefinition)
|
|
10
|
+
* - Registry stores it (JSON in DB or filesystem)
|
|
11
|
+
* - API serves it (GET /agents/:name → SerializedAgentDefinition)
|
|
12
|
+
* - createClient() hydrates it (definition → typed proxy with real calls)
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.serializeAgent = serializeAgent;
|
|
16
|
+
exports.serializeTool = serializeTool;
|
|
17
|
+
/**
|
|
18
|
+
* Serialize an AgentDefinition to its pure-data representation.
|
|
19
|
+
* Strips execute functions, runtime hooks, listeners, etc.
|
|
20
|
+
*/
|
|
21
|
+
function serializeAgent(agent, meta) {
|
|
22
|
+
return {
|
|
23
|
+
path: agent.path,
|
|
24
|
+
name: agent.config?.name ?? agent.path,
|
|
25
|
+
description: agent.config?.description ?? "",
|
|
26
|
+
version: meta?.version ?? "1.0.0",
|
|
27
|
+
visibility: agent.visibility ?? "public",
|
|
28
|
+
auth: agent.config?.security,
|
|
29
|
+
serverSource: meta?.serverSource,
|
|
30
|
+
tools: agent.tools.map(serializeTool),
|
|
31
|
+
generatedAt: new Date().toISOString(),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Serialize a single ToolDefinition to its pure-data representation.
|
|
36
|
+
*/
|
|
37
|
+
function serializeTool(tool) {
|
|
38
|
+
return {
|
|
39
|
+
name: tool.name,
|
|
40
|
+
description: tool.description,
|
|
41
|
+
inputSchema: tool.inputSchema,
|
|
42
|
+
...(tool.outputSchema ? { outputSchema: tool.outputSchema } : {}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=serialized.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialized.js","sourceRoot":"","sources":["../../src/serialized.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AA6DH,wCAeC;AAKD,sCASC;AAjCD;;;GAGG;AACH,SAAgB,cAAc,CAC5B,KAAsB,EACtB,IAAkD;IAElD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI;QACtC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE;QAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,OAAO;QACjC,UAAU,EAAG,KAAK,CAAC,UAAmC,IAAI,QAAQ;QAClE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ;QAC5B,YAAY,EAAE,IAAI,EAAE,YAAY;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QACrC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,IAAmD;IAEnD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC"}
|