@slashfi/agents-sdk 0.24.2 → 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.
Files changed (62) hide show
  1. package/dist/cjs/agent-definitions/auth.js +678 -0
  2. package/dist/cjs/agent-definitions/auth.js.map +1 -0
  3. package/dist/cjs/agent-definitions/integrations.js +1173 -0
  4. package/dist/cjs/agent-definitions/integrations.js.map +1 -0
  5. package/dist/cjs/agent-definitions/remote-registry.js +469 -0
  6. package/dist/cjs/agent-definitions/remote-registry.js.map +1 -0
  7. package/dist/cjs/agent-definitions/secrets.js +193 -0
  8. package/dist/cjs/agent-definitions/secrets.js.map +1 -0
  9. package/dist/cjs/agent-definitions/users.js +440 -0
  10. package/dist/cjs/agent-definitions/users.js.map +1 -0
  11. package/dist/cjs/build.js +162 -0
  12. package/dist/cjs/build.js.map +1 -0
  13. package/dist/cjs/callback/index.js +74 -0
  14. package/dist/cjs/callback/index.js.map +1 -0
  15. package/dist/cjs/client.js +193 -0
  16. package/dist/cjs/client.js.map +1 -0
  17. package/dist/cjs/codegen.js +1027 -0
  18. package/dist/cjs/codegen.js.map +1 -0
  19. package/dist/cjs/crypto.js +44 -0
  20. package/dist/cjs/crypto.js.map +1 -0
  21. package/dist/cjs/define-config.js +81 -0
  22. package/dist/cjs/define-config.js.map +1 -0
  23. package/dist/cjs/define.js +186 -0
  24. package/dist/cjs/define.js.map +1 -0
  25. package/dist/cjs/events.js +60 -0
  26. package/dist/cjs/events.js.map +1 -0
  27. package/dist/cjs/index.js +195 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/integration-interface.js +105 -0
  30. package/dist/cjs/integration-interface.js.map +1 -0
  31. package/dist/cjs/integrations-store.js +53 -0
  32. package/dist/cjs/integrations-store.js.map +1 -0
  33. package/dist/cjs/introspect.js +136 -0
  34. package/dist/cjs/introspect.js.map +1 -0
  35. package/dist/cjs/jsonc.js +74 -0
  36. package/dist/cjs/jsonc.js.map +1 -0
  37. package/dist/cjs/jwt.js +207 -0
  38. package/dist/cjs/jwt.js.map +1 -0
  39. package/dist/cjs/key-manager.js +161 -0
  40. package/dist/cjs/key-manager.js.map +1 -0
  41. package/dist/cjs/oidc-signin.js +141 -0
  42. package/dist/cjs/oidc-signin.js.map +1 -0
  43. package/dist/cjs/pack.js +256 -0
  44. package/dist/cjs/pack.js.map +1 -0
  45. package/dist/cjs/package.json +1 -0
  46. package/dist/cjs/registry-consumer.js +233 -0
  47. package/dist/cjs/registry-consumer.js.map +1 -0
  48. package/dist/cjs/registry.js +512 -0
  49. package/dist/cjs/registry.js.map +1 -0
  50. package/dist/cjs/secret-collection.js +42 -0
  51. package/dist/cjs/secret-collection.js.map +1 -0
  52. package/dist/cjs/serialized.js +45 -0
  53. package/dist/cjs/serialized.js.map +1 -0
  54. package/dist/cjs/server.js +974 -0
  55. package/dist/cjs/server.js.map +1 -0
  56. package/dist/cjs/test-utils/mock-oidc-server.js +99 -0
  57. package/dist/cjs/test-utils/mock-oidc-server.js.map +1 -0
  58. package/dist/cjs/types.js +8 -0
  59. package/dist/cjs/types.js.map +1 -0
  60. package/dist/cjs/validate.js +84 -0
  61. package/dist/cjs/validate.js.map +1 -0
  62. package/package.json +13 -5
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Agents SDK
4
+ *
5
+ * SDK for building AI agents with tool definitions, JSON-RPC servers,
6
+ * and built-in OAuth2 authentication.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import {
11
+ * defineAgent,
12
+ * defineTool,
13
+ * createAgentRegistry,
14
+ * createAgentServer,
15
+ * createAuthAgent,
16
+ * } from '@slashfi/agents-sdk';
17
+ *
18
+ * // Define a tool
19
+ * const greet = defineTool({
20
+ * name: 'greet',
21
+ * description: 'Greet a user',
22
+ * inputSchema: {
23
+ * type: 'object',
24
+ * properties: {
25
+ * name: { type: 'string', description: 'Name to greet' }
26
+ * },
27
+ * required: ['name']
28
+ * },
29
+ * execute: async (input) => ({ message: `Hello, ${input.name}!` })
30
+ * });
31
+ *
32
+ * // Define an agent
33
+ * const agent = defineAgent({
34
+ * path: '@my-agent',
35
+ * entrypoint: 'You are a helpful assistant.',
36
+ * tools: [greet]
37
+ * });
38
+ *
39
+ * // Create registry with auth
40
+ * const registry = createAgentRegistry();
41
+ * registry.register(createAuthAgent({ rootKey: process.env.ROOT_KEY! }));
42
+ * registry.register(agent);
43
+ *
44
+ * // Start server - auth auto-detected
45
+ * const server = createAgentServer(registry, { port: 3000 });
46
+ * await server.start();
47
+ * ```
48
+ *
49
+ * @packageDocumentation
50
+ */
51
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
52
+ if (k2 === undefined) k2 = k;
53
+ var desc = Object.getOwnPropertyDescriptor(m, k);
54
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
55
+ desc = { enumerable: true, get: function() { return m[k]; } };
56
+ }
57
+ Object.defineProperty(o, k2, desc);
58
+ }) : (function(o, m, k, k2) {
59
+ if (k2 === undefined) k2 = k;
60
+ o[k2] = m[k];
61
+ }));
62
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
63
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
64
+ };
65
+ Object.defineProperty(exports, "__esModule", { value: true });
66
+ exports.serializeAgent = exports.listAgentTools = exports.useAgent = exports.codegen = exports.createRegistryConsumer = exports.isSecretUri = exports.isSecretUrl = exports.normalizeRegistry = exports.normalizeRef = exports.createKeyManager = exports.createInMemoryUserStore = exports.createUsersAgent = exports.createRemoteRegistryAgent = exports.getDefaultRefreshBodyParams = exports.getDefaultTokenBodyParams = exports.refreshAccessToken = exports.exchangeCodeForToken = exports.createInMemoryIntegrationStore = exports.createIntegrationsAgent = exports.buildJwks = exports.importSigningKey = exports.exportSigningKey = exports.generateSigningKey = exports.verifyJwtFromIssuer = exports.verifyJwtLocal = exports.signJwtES256 = exports.verifyJwt = exports.signJwt = exports.decryptSecret = exports.encryptSecret = exports.processSecretParams = exports.isSecretRef = exports.createInMemorySecretStore = exports.createSecretsAgent = exports.buildAgents = exports.createMemoryAuthStore = exports.createAuthAgent = exports.cleanupExpiredCollections = exports.generateCollectionToken = exports.pendingCollections = exports.createOIDCSignIn = exports.canSeeAgent = exports.resolveAuth = exports.detectAuth = exports.createAgentServer = exports.createEventBus = exports.agentFromSerialized = exports.createAgentRegistry = exports.defineTool = exports.defineAgent = void 0;
67
+ exports.assertValidDefinition = exports.validateDefinition = exports.SerializedToolSchema = exports.SerializedAgentDefinitionSchema = exports.validateCallbackTemplates = exports.resolveCallbackTemplates = exports.introspectMcp = exports.publish = exports.pack = exports.readJsoncFile = exports.parseJsonc = exports.createClient = exports.serializeTool = void 0;
68
+ // Define functions
69
+ var define_js_1 = require("./define.js");
70
+ Object.defineProperty(exports, "defineAgent", { enumerable: true, get: function () { return define_js_1.defineAgent; } });
71
+ Object.defineProperty(exports, "defineTool", { enumerable: true, get: function () { return define_js_1.defineTool; } });
72
+ // Registry
73
+ var registry_js_1 = require("./registry.js");
74
+ Object.defineProperty(exports, "createAgentRegistry", { enumerable: true, get: function () { return registry_js_1.createAgentRegistry; } });
75
+ Object.defineProperty(exports, "agentFromSerialized", { enumerable: true, get: function () { return registry_js_1.agentFromSerialized; } });
76
+ // Events
77
+ var events_js_1 = require("./events.js");
78
+ Object.defineProperty(exports, "createEventBus", { enumerable: true, get: function () { return events_js_1.createEventBus; } });
79
+ // Server
80
+ var server_js_1 = require("./server.js");
81
+ Object.defineProperty(exports, "createAgentServer", { enumerable: true, get: function () { return server_js_1.createAgentServer; } });
82
+ Object.defineProperty(exports, "detectAuth", { enumerable: true, get: function () { return server_js_1.detectAuth; } });
83
+ Object.defineProperty(exports, "resolveAuth", { enumerable: true, get: function () { return server_js_1.resolveAuth; } });
84
+ Object.defineProperty(exports, "canSeeAgent", { enumerable: true, get: function () { return server_js_1.canSeeAgent; } });
85
+ var oidc_signin_js_1 = require("./oidc-signin.js");
86
+ Object.defineProperty(exports, "createOIDCSignIn", { enumerable: true, get: function () { return oidc_signin_js_1.createOIDCSignIn; } });
87
+ // Secret Collection
88
+ var secret_collection_js_1 = require("./secret-collection.js");
89
+ Object.defineProperty(exports, "pendingCollections", { enumerable: true, get: function () { return secret_collection_js_1.pendingCollections; } });
90
+ Object.defineProperty(exports, "generateCollectionToken", { enumerable: true, get: function () { return secret_collection_js_1.generateCollectionToken; } });
91
+ Object.defineProperty(exports, "cleanupExpiredCollections", { enumerable: true, get: function () { return secret_collection_js_1.cleanupExpiredCollections; } });
92
+ // Auth
93
+ var auth_js_1 = require("./agent-definitions/auth.js");
94
+ Object.defineProperty(exports, "createAuthAgent", { enumerable: true, get: function () { return auth_js_1.createAuthAgent; } });
95
+ Object.defineProperty(exports, "createMemoryAuthStore", { enumerable: true, get: function () { return auth_js_1.createMemoryAuthStore; } });
96
+ // Build
97
+ var build_js_1 = require("./build.js");
98
+ Object.defineProperty(exports, "buildAgents", { enumerable: true, get: function () { return build_js_1.buildAgents; } });
99
+ // Secrets
100
+ var secrets_js_1 = require("./agent-definitions/secrets.js");
101
+ Object.defineProperty(exports, "createSecretsAgent", { enumerable: true, get: function () { return secrets_js_1.createSecretsAgent; } });
102
+ Object.defineProperty(exports, "createInMemorySecretStore", { enumerable: true, get: function () { return secrets_js_1.createInMemorySecretStore; } });
103
+ Object.defineProperty(exports, "isSecretRef", { enumerable: true, get: function () { return secrets_js_1.isSecretRef; } });
104
+ Object.defineProperty(exports, "processSecretParams", { enumerable: true, get: function () { return secrets_js_1.processSecretParams; } });
105
+ // Crypto
106
+ var crypto_js_1 = require("./crypto.js");
107
+ Object.defineProperty(exports, "encryptSecret", { enumerable: true, get: function () { return crypto_js_1.encryptSecret; } });
108
+ Object.defineProperty(exports, "decryptSecret", { enumerable: true, get: function () { return crypto_js_1.decryptSecret; } });
109
+ // JWT
110
+ var jwt_js_1 = require("./jwt.js");
111
+ Object.defineProperty(exports, "signJwt", { enumerable: true, get: function () { return jwt_js_1.signJwt; } });
112
+ Object.defineProperty(exports, "verifyJwt", { enumerable: true, get: function () { return jwt_js_1.verifyJwt; } });
113
+ Object.defineProperty(exports, "signJwtES256", { enumerable: true, get: function () { return jwt_js_1.signJwtES256; } });
114
+ Object.defineProperty(exports, "verifyJwtLocal", { enumerable: true, get: function () { return jwt_js_1.verifyJwtLocal; } });
115
+ Object.defineProperty(exports, "verifyJwtFromIssuer", { enumerable: true, get: function () { return jwt_js_1.verifyJwtFromIssuer; } });
116
+ Object.defineProperty(exports, "generateSigningKey", { enumerable: true, get: function () { return jwt_js_1.generateSigningKey; } });
117
+ Object.defineProperty(exports, "exportSigningKey", { enumerable: true, get: function () { return jwt_js_1.exportSigningKey; } });
118
+ Object.defineProperty(exports, "importSigningKey", { enumerable: true, get: function () { return jwt_js_1.importSigningKey; } });
119
+ Object.defineProperty(exports, "buildJwks", { enumerable: true, get: function () { return jwt_js_1.buildJwks; } });
120
+ // Postgres Secret Store
121
+ // Integrations
122
+ var integrations_js_1 = require("./agent-definitions/integrations.js");
123
+ Object.defineProperty(exports, "createIntegrationsAgent", { enumerable: true, get: function () { return integrations_js_1.createIntegrationsAgent; } });
124
+ Object.defineProperty(exports, "createInMemoryIntegrationStore", { enumerable: true, get: function () { return integrations_js_1.createInMemoryIntegrationStore; } });
125
+ Object.defineProperty(exports, "exchangeCodeForToken", { enumerable: true, get: function () { return integrations_js_1.exchangeCodeForToken; } });
126
+ Object.defineProperty(exports, "refreshAccessToken", { enumerable: true, get: function () { return integrations_js_1.refreshAccessToken; } });
127
+ Object.defineProperty(exports, "getDefaultTokenBodyParams", { enumerable: true, get: function () { return integrations_js_1.getDefaultTokenBodyParams; } });
128
+ Object.defineProperty(exports, "getDefaultRefreshBodyParams", { enumerable: true, get: function () { return integrations_js_1.getDefaultRefreshBodyParams; } });
129
+ // Remote Registry
130
+ var remote_registry_js_1 = require("./agent-definitions/remote-registry.js");
131
+ Object.defineProperty(exports, "createRemoteRegistryAgent", { enumerable: true, get: function () { return remote_registry_js_1.createRemoteRegistryAgent; } });
132
+ // Users
133
+ var users_js_1 = require("./agent-definitions/users.js");
134
+ Object.defineProperty(exports, "createUsersAgent", { enumerable: true, get: function () { return users_js_1.createUsersAgent; } });
135
+ Object.defineProperty(exports, "createInMemoryUserStore", { enumerable: true, get: function () { return users_js_1.createInMemoryUserStore; } });
136
+ __exportStar(require("./integrations-store.js"), exports);
137
+ __exportStar(require("./integration-interface.js"), exports);
138
+ var key_manager_js_1 = require("./key-manager.js");
139
+ Object.defineProperty(exports, "createKeyManager", { enumerable: true, get: function () { return key_manager_js_1.createKeyManager; } });
140
+ // Config & Consumer
141
+ var define_config_js_1 = require("./define-config.js");
142
+ Object.defineProperty(exports, "normalizeRef", { enumerable: true, get: function () { return define_config_js_1.normalizeRef; } });
143
+ Object.defineProperty(exports, "normalizeRegistry", { enumerable: true, get: function () { return define_config_js_1.normalizeRegistry; } });
144
+ Object.defineProperty(exports, "isSecretUrl", { enumerable: true, get: function () { return define_config_js_1.isSecretUrl; } });
145
+ Object.defineProperty(exports, "isSecretUri", { enumerable: true, get: function () { return define_config_js_1.isSecretUri; } });
146
+ var registry_consumer_js_1 = require("./registry-consumer.js");
147
+ Object.defineProperty(exports, "createRegistryConsumer", { enumerable: true, get: function () { return registry_consumer_js_1.createRegistryConsumer; } });
148
+ // Codegen
149
+ var codegen_js_1 = require("./codegen.js");
150
+ Object.defineProperty(exports, "codegen", { enumerable: true, get: function () { return codegen_js_1.codegen; } });
151
+ Object.defineProperty(exports, "useAgent", { enumerable: true, get: function () { return codegen_js_1.useAgent; } });
152
+ Object.defineProperty(exports, "listAgentTools", { enumerable: true, get: function () { return codegen_js_1.listAgentTools; } });
153
+ // ============================================
154
+ // Serialized Agent Definitions
155
+ // ============================================
156
+ var serialized_js_1 = require("./serialized.js");
157
+ Object.defineProperty(exports, "serializeAgent", { enumerable: true, get: function () { return serialized_js_1.serializeAgent; } });
158
+ Object.defineProperty(exports, "serializeTool", { enumerable: true, get: function () { return serialized_js_1.serializeTool; } });
159
+ // ============================================
160
+ // Agent Client
161
+ // ============================================
162
+ var client_js_1 = require("./client.js");
163
+ Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return client_js_1.createClient; } });
164
+ // ============================================
165
+ // JSONC Parser
166
+ // ============================================
167
+ var jsonc_js_1 = require("./jsonc.js");
168
+ Object.defineProperty(exports, "parseJsonc", { enumerable: true, get: function () { return jsonc_js_1.parseJsonc; } });
169
+ Object.defineProperty(exports, "readJsoncFile", { enumerable: true, get: function () { return jsonc_js_1.readJsoncFile; } });
170
+ // ============================================
171
+ // Pack & Publish
172
+ // ============================================
173
+ var pack_js_1 = require("./pack.js");
174
+ Object.defineProperty(exports, "pack", { enumerable: true, get: function () { return pack_js_1.pack; } });
175
+ Object.defineProperty(exports, "publish", { enumerable: true, get: function () { return pack_js_1.publish; } });
176
+ // ============================================
177
+ // Introspect
178
+ // ============================================
179
+ var introspect_js_1 = require("./introspect.js");
180
+ Object.defineProperty(exports, "introspectMcp", { enumerable: true, get: function () { return introspect_js_1.introspectMcp; } });
181
+ // ============================================
182
+ // Agent Callbacks (deferred call_agent commands)
183
+ // ============================================
184
+ var index_js_1 = require("./callback/index.js");
185
+ Object.defineProperty(exports, "resolveCallbackTemplates", { enumerable: true, get: function () { return index_js_1.resolveCallbackTemplates; } });
186
+ Object.defineProperty(exports, "validateCallbackTemplates", { enumerable: true, get: function () { return index_js_1.validateCallbackTemplates; } });
187
+ // ============================================
188
+ // Validation
189
+ // ============================================
190
+ var validate_js_1 = require("./validate.js");
191
+ Object.defineProperty(exports, "SerializedAgentDefinitionSchema", { enumerable: true, get: function () { return validate_js_1.SerializedAgentDefinitionSchema; } });
192
+ Object.defineProperty(exports, "SerializedToolSchema", { enumerable: true, get: function () { return validate_js_1.SerializedToolSchema; } });
193
+ Object.defineProperty(exports, "validateDefinition", { enumerable: true, get: function () { return validate_js_1.validateDefinition; } });
194
+ Object.defineProperty(exports, "assertValidDefinition", { enumerable: true, get: function () { return validate_js_1.assertValidDefinition; } });
195
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * Integration interface — standard tools that integration agents implement.
4
+ *
5
+ * Any agent that acts as an integration source should implement these tools.
6
+ * They are all internal visibility and only callable by @integrations.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createIntegrationTools = createIntegrationTools;
10
+ const define_js_1 = require("./define.js");
11
+ /**
12
+ * Create the standard _integration tools for an agent.
13
+ * Returns an array of ToolDefinitions to include in the agent's tools.
14
+ */
15
+ function createIntegrationTools(config) {
16
+ const { agentPath, store, discover, setup, connect } = config;
17
+ const discoverTool = (0, define_js_1.defineTool)({
18
+ name: "discover_integrations",
19
+ description: `Discover available integrations for ${agentPath}.`,
20
+ visibility: "internal",
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {},
24
+ },
25
+ execute: async () => {
26
+ const available = await discover();
27
+ return available;
28
+ },
29
+ });
30
+ const setupTool = (0, define_js_1.defineTool)({
31
+ name: "setup_integration",
32
+ description: `Set up a new integration for ${agentPath}.`,
33
+ visibility: "internal",
34
+ inputSchema: {
35
+ type: "object",
36
+ properties: {
37
+ config: { type: "object", description: "Integration configuration" },
38
+ },
39
+ required: ["config"],
40
+ },
41
+ execute: async (input, ctx) => {
42
+ const result = await setup(input.config, ctx);
43
+ if (result.success && !result.oauthUrl) {
44
+ // Direct setup (no OAuth needed) — create integration row
45
+ const integration = await store.create({
46
+ agentPath,
47
+ config: input.config,
48
+ installedBy: ctx.callerId,
49
+ });
50
+ return { success: true, integrationId: integration.id };
51
+ }
52
+ return result;
53
+ },
54
+ });
55
+ const connectTool = (0, define_js_1.defineTool)({
56
+ name: "connect_integration",
57
+ description: `Test or authorize a ${agentPath} integration connection.`,
58
+ visibility: "internal",
59
+ inputSchema: {
60
+ type: "object",
61
+ properties: {
62
+ integration_id: {
63
+ type: "string",
64
+ description: "Integration ID to connect",
65
+ },
66
+ },
67
+ required: ["integration_id"],
68
+ },
69
+ execute: async (input, ctx) => {
70
+ if (connect) {
71
+ const result = await connect(input.integration_id, ctx);
72
+ if (result.success) {
73
+ await store.update(input.integration_id, { status: "active" });
74
+ }
75
+ else {
76
+ await store.update(input.integration_id, { status: "error" });
77
+ }
78
+ return result;
79
+ }
80
+ return { success: true };
81
+ },
82
+ });
83
+ const listTool = (0, define_js_1.defineTool)({
84
+ name: "list_integrations",
85
+ description: `List installed integrations for ${agentPath}.`,
86
+ visibility: "internal",
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: {
90
+ tenant_id: { type: "string", description: "Filter by tenant" },
91
+ },
92
+ },
93
+ execute: async (input) => {
94
+ const integrations = await store.listByAgent(agentPath, input.tenant_id);
95
+ return integrations;
96
+ },
97
+ });
98
+ return [
99
+ discoverTool,
100
+ setupTool,
101
+ connectTool,
102
+ listTool,
103
+ ];
104
+ }
105
+ //# sourceMappingURL=integration-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-interface.js","sourceRoot":"","sources":["../../src/integration-interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * IntegrationsStore — persistence interface for installed integrations.
4
+ *
5
+ * Each integration is an agent that's been configured and connected.
6
+ * The store tracks what's installed, its config, and status.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createInMemoryIntegrationsStore = createInMemoryIntegrationsStore;
10
+ /** In-memory implementation for testing / lightweight use */
11
+ function createInMemoryIntegrationsStore() {
12
+ const integrations = new Map();
13
+ return {
14
+ async create(input) {
15
+ const id = `int_${Math.random().toString(36).slice(2, 14)}`;
16
+ const now = Date.now();
17
+ const integration = {
18
+ id,
19
+ agentPath: input.agentPath,
20
+ tenantId: input.tenantId,
21
+ status: "active",
22
+ config: input.config,
23
+ installedBy: input.installedBy,
24
+ installedAt: now,
25
+ updatedAt: now,
26
+ };
27
+ integrations.set(id, integration);
28
+ return integration;
29
+ },
30
+ async get(id) {
31
+ return integrations.get(id) ?? null;
32
+ },
33
+ async list(tenantId) {
34
+ const all = Array.from(integrations.values());
35
+ return tenantId ? all.filter((i) => i.tenantId === tenantId) : all;
36
+ },
37
+ async listByAgent(agentPath, tenantId) {
38
+ return Array.from(integrations.values()).filter((i) => i.agentPath === agentPath && (!tenantId || i.tenantId === tenantId));
39
+ },
40
+ async update(id, updates) {
41
+ const existing = integrations.get(id);
42
+ if (!existing)
43
+ return null;
44
+ const updated = { ...existing, ...updates, updatedAt: Date.now() };
45
+ integrations.set(id, updated);
46
+ return updated;
47
+ },
48
+ async delete(id) {
49
+ return integrations.delete(id);
50
+ },
51
+ };
52
+ }
53
+ //# sourceMappingURL=integrations-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations-store.js","sourceRoot":"","sources":["../../src/integrations-store.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiCH,0EAiDC;AAlDD,6DAA6D;AAC7D,SAAgB,+BAA+B;IAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEpD,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,WAAW,GAAgB;gBAC/B,EAAE;gBACF,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,GAAG;aACf,CAAC;YACF,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAClC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,QAAS;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACrE,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,QAAS;YACpC,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CACtE,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO;YACtB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC3B,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACnE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAE;YACb,OAAO,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Introspection
4
+ *
5
+ * Connects to an MCP server, introspects its tools,
6
+ * and outputs a SerializedAgentDefinition (agent.json).
7
+ *
8
+ * Deduplicates shared $defs across tools.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.introspectMcp = introspectMcp;
12
+ const node_child_process_1 = require("node:child_process");
13
+ const node_fs_1 = require("node:fs");
14
+ const node_path_1 = require("node:path");
15
+ function deduplicateDefs(tools) {
16
+ const defsByContent = new Map();
17
+ for (const tool of tools) {
18
+ const schema = tool.inputSchema;
19
+ const defs = schema?.$defs;
20
+ if (!defs || typeof defs !== "object")
21
+ continue;
22
+ for (const [defName, defSchema] of Object.entries(defs)) {
23
+ const key = JSON.stringify(defSchema);
24
+ if (!defsByContent.has(key)) {
25
+ defsByContent.set(key, { name: defName, schema: defSchema });
26
+ }
27
+ }
28
+ }
29
+ const sharedDefs = {};
30
+ for (const { name, schema } of Array.from(defsByContent.values())) {
31
+ sharedDefs[name] = schema;
32
+ }
33
+ const cleanedTools = tools.map((t) => {
34
+ const schema = { ...t.inputSchema };
35
+ schema.$defs = undefined;
36
+ return { ...t, inputSchema: schema };
37
+ });
38
+ return { tools: cleanedTools, sharedDefs };
39
+ }
40
+ async function introspectMcp(options) {
41
+ const { server, name, out } = options;
42
+ const parts = server.split(/\s+/);
43
+ const proc = (0, node_child_process_1.spawn)(parts[0], parts.slice(1), {
44
+ stdio: ["pipe", "pipe", "pipe"],
45
+ env: { ...process.env, ...options.env },
46
+ });
47
+ let buffer = "";
48
+ let messageId = 0;
49
+ function sendJsonRpc(method, params = {}) {
50
+ const id = ++messageId;
51
+ const msg = JSON.stringify({ jsonrpc: "2.0", id, method, params });
52
+ proc.stdin?.write(`${msg}\n`);
53
+ return id;
54
+ }
55
+ function waitForResponse(targetId) {
56
+ return new Promise((res, reject) => {
57
+ const timeout = setTimeout(() => reject(new Error("Timeout")), 30000);
58
+ const handler = (chunk) => {
59
+ buffer += chunk.toString();
60
+ const lines = buffer.split("\n");
61
+ buffer = lines.pop() || "";
62
+ for (const line of lines) {
63
+ const trimmed = line.trim();
64
+ if (!trimmed)
65
+ continue;
66
+ try {
67
+ const parsed = JSON.parse(trimmed);
68
+ if (parsed.id === targetId) {
69
+ clearTimeout(timeout);
70
+ proc.stdout?.removeListener("data", handler);
71
+ if (parsed.error)
72
+ reject(new Error(JSON.stringify(parsed.error)));
73
+ else
74
+ res(parsed.result);
75
+ }
76
+ }
77
+ catch {
78
+ /* ignore non-JSON */
79
+ }
80
+ }
81
+ };
82
+ proc.stdout?.on("data", handler);
83
+ });
84
+ }
85
+ try {
86
+ console.log(`Connecting to MCP server: ${server}`);
87
+ const initId = sendJsonRpc("initialize", {
88
+ protocolVersion: "2024-11-05",
89
+ capabilities: {},
90
+ clientInfo: { name: "adk-introspect", version: "1.0.0" },
91
+ });
92
+ const initResult = (await waitForResponse(initId));
93
+ const serverInfo = initResult.serverInfo;
94
+ console.log(`Server: ${serverInfo?.name} v${serverInfo?.version}`);
95
+ proc.stdin?.write(`${JSON.stringify({ jsonrpc: "2.0", method: "notifications/initialized" })}\n`);
96
+ const toolsId = sendJsonRpc("tools/list", {});
97
+ const toolsResult = (await waitForResponse(toolsId));
98
+ const rawTools = (toolsResult.tools || []).map((t) => ({
99
+ name: t.name,
100
+ description: t.description || "",
101
+ inputSchema: t.inputSchema || {
102
+ type: "object",
103
+ properties: {},
104
+ },
105
+ }));
106
+ console.log(`Discovered ${rawTools.length} tools`);
107
+ const { tools, sharedDefs } = deduplicateDefs(rawTools);
108
+ const defsCount = Object.keys(sharedDefs).length;
109
+ if (defsCount > 0) {
110
+ console.log(`Hoisted ${defsCount} shared $defs`);
111
+ }
112
+ const definition = {
113
+ path: name,
114
+ name: serverInfo?.name || name,
115
+ description: `Agent for ${serverInfo?.name || name}`,
116
+ version: serverInfo?.version || "1.0.0",
117
+ visibility: "public",
118
+ serverSource: server,
119
+ serverInfo,
120
+ ...(defsCount > 0 ? { $defs: sharedDefs } : {}),
121
+ tools,
122
+ generatedAt: new Date().toISOString(),
123
+ sdkVersion: "0.22.0",
124
+ };
125
+ const outPath = out || `./${name}.json`;
126
+ const resolved = (0, node_path_1.resolve)(outPath);
127
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(resolved), { recursive: true });
128
+ (0, node_fs_1.writeFileSync)(resolved, `${JSON.stringify(definition, null, 2)}\n`);
129
+ const sizeKB = (JSON.stringify(definition).length / 1024).toFixed(1);
130
+ console.log(`\nWrote ${resolved} (${sizeKB}KB, ${tools.length} tools)`);
131
+ }
132
+ finally {
133
+ proc.kill();
134
+ }
135
+ }
136
+ //# sourceMappingURL=introspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"introspect.js","sourceRoot":"","sources":["../../src/introspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * JSONC Parser
4
+ *
5
+ * Parses JSON with comments (single-line and multi-line)
6
+ * so agent.json files can be annotated.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.parseJsonc = parseJsonc;
10
+ exports.readJsoncFile = readJsoncFile;
11
+ const node_fs_1 = require("node:fs");
12
+ /**
13
+ * Strip comments from JSONC content and parse as JSON.
14
+ */
15
+ function parseJsonc(content) {
16
+ let result = "";
17
+ let i = 0;
18
+ let inString = false;
19
+ let stringChar = "";
20
+ while (i < content.length) {
21
+ if (inString) {
22
+ if (content[i] === "\\" && i + 1 < content.length) {
23
+ result += content[i] + content[i + 1];
24
+ i += 2;
25
+ continue;
26
+ }
27
+ if (content[i] === stringChar) {
28
+ inString = false;
29
+ }
30
+ result += content[i];
31
+ i++;
32
+ continue;
33
+ }
34
+ if (content[i] === '"') {
35
+ inString = true;
36
+ stringChar = content[i];
37
+ result += content[i];
38
+ i++;
39
+ continue;
40
+ }
41
+ // Single-line comment
42
+ if (content[i] === "/" &&
43
+ i + 1 < content.length &&
44
+ content[i + 1] === "/") {
45
+ while (i < content.length && content[i] !== "\n")
46
+ i++;
47
+ continue;
48
+ }
49
+ // Multi-line comment
50
+ if (content[i] === "/" &&
51
+ i + 1 < content.length &&
52
+ content[i + 1] === "*") {
53
+ i += 2;
54
+ while (i + 1 < content.length &&
55
+ !(content[i] === "*" && content[i + 1] === "/"))
56
+ i++;
57
+ i += 2;
58
+ continue;
59
+ }
60
+ result += content[i];
61
+ i++;
62
+ }
63
+ // Handle trailing commas
64
+ const cleaned = result.replace(/,\s*([}\]])/g, "$1");
65
+ return JSON.parse(cleaned);
66
+ }
67
+ /**
68
+ * Read and parse a JSONC file.
69
+ */
70
+ function readJsoncFile(path) {
71
+ const content = (0, node_fs_1.readFileSync)(path, "utf-8");
72
+ return parseJsonc(content);
73
+ }
74
+ //# sourceMappingURL=jsonc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../../src/jsonc.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAOH,gCA8DC;AAKD,sCAGC;AA3ED,qCAAuC;AAEvC;;GAEG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC9B,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC;YAChB,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,sBAAsB;QACtB,IACE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;YAClB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;YACtB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EACtB,CAAC;YACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,CAAC,EAAE,CAAC;YACtD,SAAS;QACX,CAAC;QAED,qBAAqB;QACrB,IACE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;YAClB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;YACtB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EACtB,CAAC;YACD,CAAC,IAAI,CAAC,CAAC;YACP,OACE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;gBACtB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;gBAE/C,CAAC,EAAE,CAAC;YACN,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,EAAE,CAAC;IACN,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}