@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.
Files changed (69) hide show
  1. package/dist/callback/index.d.ts +13 -24
  2. package/dist/callback/index.d.ts.map +1 -1
  3. package/dist/callback/index.js.map +1 -1
  4. package/dist/cjs/agent-definitions/auth.js +678 -0
  5. package/dist/cjs/agent-definitions/auth.js.map +1 -0
  6. package/dist/cjs/agent-definitions/integrations.js +1173 -0
  7. package/dist/cjs/agent-definitions/integrations.js.map +1 -0
  8. package/dist/cjs/agent-definitions/remote-registry.js +469 -0
  9. package/dist/cjs/agent-definitions/remote-registry.js.map +1 -0
  10. package/dist/cjs/agent-definitions/secrets.js +193 -0
  11. package/dist/cjs/agent-definitions/secrets.js.map +1 -0
  12. package/dist/cjs/agent-definitions/users.js +440 -0
  13. package/dist/cjs/agent-definitions/users.js.map +1 -0
  14. package/dist/cjs/build.js +162 -0
  15. package/dist/cjs/build.js.map +1 -0
  16. package/dist/cjs/callback/index.js +74 -0
  17. package/dist/cjs/callback/index.js.map +1 -0
  18. package/dist/cjs/client.js +193 -0
  19. package/dist/cjs/client.js.map +1 -0
  20. package/dist/cjs/codegen.js +1027 -0
  21. package/dist/cjs/codegen.js.map +1 -0
  22. package/dist/cjs/crypto.js +44 -0
  23. package/dist/cjs/crypto.js.map +1 -0
  24. package/dist/cjs/define-config.js +81 -0
  25. package/dist/cjs/define-config.js.map +1 -0
  26. package/dist/cjs/define.js +186 -0
  27. package/dist/cjs/define.js.map +1 -0
  28. package/dist/cjs/events.js +60 -0
  29. package/dist/cjs/events.js.map +1 -0
  30. package/dist/cjs/index.js +195 -0
  31. package/dist/cjs/index.js.map +1 -0
  32. package/dist/cjs/integration-interface.js +105 -0
  33. package/dist/cjs/integration-interface.js.map +1 -0
  34. package/dist/cjs/integrations-store.js +53 -0
  35. package/dist/cjs/integrations-store.js.map +1 -0
  36. package/dist/cjs/introspect.js +136 -0
  37. package/dist/cjs/introspect.js.map +1 -0
  38. package/dist/cjs/jsonc.js +74 -0
  39. package/dist/cjs/jsonc.js.map +1 -0
  40. package/dist/cjs/jwt.js +207 -0
  41. package/dist/cjs/jwt.js.map +1 -0
  42. package/dist/cjs/key-manager.js +161 -0
  43. package/dist/cjs/key-manager.js.map +1 -0
  44. package/dist/cjs/oidc-signin.js +141 -0
  45. package/dist/cjs/oidc-signin.js.map +1 -0
  46. package/dist/cjs/pack.js +256 -0
  47. package/dist/cjs/pack.js.map +1 -0
  48. package/dist/cjs/package.json +1 -0
  49. package/dist/cjs/registry-consumer.js +233 -0
  50. package/dist/cjs/registry-consumer.js.map +1 -0
  51. package/dist/cjs/registry.js +512 -0
  52. package/dist/cjs/registry.js.map +1 -0
  53. package/dist/cjs/secret-collection.js +42 -0
  54. package/dist/cjs/secret-collection.js.map +1 -0
  55. package/dist/cjs/serialized.js +45 -0
  56. package/dist/cjs/serialized.js.map +1 -0
  57. package/dist/cjs/server.js +974 -0
  58. package/dist/cjs/server.js.map +1 -0
  59. package/dist/cjs/test-utils/mock-oidc-server.js +99 -0
  60. package/dist/cjs/test-utils/mock-oidc-server.js.map +1 -0
  61. package/dist/cjs/types.js +8 -0
  62. package/dist/cjs/types.js.map +1 -0
  63. package/dist/cjs/validate.js +84 -0
  64. package/dist/cjs/validate.js.map +1 -0
  65. package/dist/registry.js +6 -6
  66. package/dist/registry.js.map +1 -1
  67. package/package.json +13 -5
  68. package/src/callback/index.ts +13 -24
  69. package/src/registry.ts +6 -6
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ /**
3
+ * Secrets - encrypted secret storage and resolution for tool params.
4
+ *
5
+ * Provides:
6
+ * - SecretStore interface for pluggable storage backends
7
+ * - createSecretsAgent: built-in @secrets agent with store/resolve tools
8
+ * - processSecretParams: auto-resolve secret:xxx refs in tool params
9
+ * - AES-256-GCM encryption via crypto.ts
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.isSecretRef = isSecretRef;
13
+ exports.getSecretId = getSecretId;
14
+ exports.makeSecretRef = makeSecretRef;
15
+ exports.createInMemorySecretStore = createInMemorySecretStore;
16
+ exports.createSecretsAgent = createSecretsAgent;
17
+ exports.processSecretParams = processSecretParams;
18
+ const crypto_js_1 = require("../crypto.js");
19
+ const define_js_1 = require("../define.js");
20
+ // ============================================
21
+ // Secret Ref Helpers
22
+ // ============================================
23
+ const SECRET_PREFIX = "secret:";
24
+ function isSecretRef(value) {
25
+ return typeof value === "string" && value.startsWith(SECRET_PREFIX);
26
+ }
27
+ function getSecretId(ref) {
28
+ return ref.slice(SECRET_PREFIX.length);
29
+ }
30
+ function makeSecretRef(id) {
31
+ return `${SECRET_PREFIX}${id}`;
32
+ }
33
+ function randomSecretId() {
34
+ const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
35
+ let id = "";
36
+ for (let i = 0; i < 24; i++)
37
+ id += chars[Math.floor(Math.random() * chars.length)];
38
+ return id;
39
+ }
40
+ // ============================================
41
+ // In-Memory SecretStore (default)
42
+ // ============================================
43
+ function createInMemorySecretStore(encryptionKey) {
44
+ const secrets = new Map();
45
+ const associations = new Map(); // "entityType:entityId" -> secretIds
46
+ return {
47
+ async store(value, ownerId, _scope) {
48
+ const id = randomSecretId();
49
+ const encrypted = await (0, crypto_js_1.encryptSecret)(value, encryptionKey);
50
+ secrets.set(id, { encrypted, ownerId });
51
+ return id;
52
+ },
53
+ async resolve(id, ownerId, _scope) {
54
+ const entry = secrets.get(id);
55
+ if (!entry || entry.ownerId !== ownerId)
56
+ return null;
57
+ return (0, crypto_js_1.decryptSecret)(entry.encrypted, encryptionKey);
58
+ },
59
+ async delete(id, ownerId, _scope) {
60
+ const entry = secrets.get(id);
61
+ if (!entry || entry.ownerId !== ownerId)
62
+ return false;
63
+ secrets.delete(id);
64
+ return true;
65
+ },
66
+ async storeBatch(values, ownerId, _scope) {
67
+ const ids = [];
68
+ for (const value of values) {
69
+ const id = randomSecretId();
70
+ const encrypted = await (0, crypto_js_1.encryptSecret)(value, encryptionKey);
71
+ secrets.set(id, { encrypted, ownerId });
72
+ ids.push(id);
73
+ }
74
+ return ids;
75
+ },
76
+ async associate(secretId, entityType, entityId, _scope) {
77
+ const key = `${entityType}:${entityId}`;
78
+ const existing = associations.get(key) ?? [];
79
+ if (!existing.includes(secretId)) {
80
+ existing.push(secretId);
81
+ associations.set(key, existing);
82
+ }
83
+ },
84
+ async resolveByEntity(entityType, entityId, _scope) {
85
+ const key = `${entityType}:${entityId}`;
86
+ return associations.get(key) ?? [];
87
+ },
88
+ };
89
+ }
90
+ /**
91
+ * Create the built-in @secrets agent.
92
+ * Provides tools for storing and resolving secrets via MCP.
93
+ */
94
+ function createSecretsAgent(options) {
95
+ const { store } = options;
96
+ const storeSecretTool = (0, define_js_1.defineTool)({
97
+ name: "store",
98
+ description: "Store secret values. Returns secret:<id> refs for each value.",
99
+ visibility: "internal",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {
103
+ secrets: {
104
+ type: "object",
105
+ description: "Key-value pairs to store as secrets",
106
+ additionalProperties: { type: "string" },
107
+ },
108
+ },
109
+ required: ["secrets"],
110
+ },
111
+ execute: async (input, ctx) => {
112
+ const ownerId = ctx.callerId ?? "anonymous";
113
+ const refs = {};
114
+ for (const [key, value] of Object.entries(input.secrets)) {
115
+ if (typeof value === "string" && value.length > 0) {
116
+ const id = await store.store(value, ownerId);
117
+ refs[key] = makeSecretRef(id);
118
+ }
119
+ }
120
+ return { refs };
121
+ },
122
+ });
123
+ const revokeSecretTool = (0, define_js_1.defineTool)({
124
+ name: "revoke",
125
+ description: "Delete a stored secret.",
126
+ visibility: "internal",
127
+ inputSchema: {
128
+ type: "object",
129
+ properties: {
130
+ ref: { type: "string", description: "Secret ref to revoke" },
131
+ },
132
+ required: ["ref"],
133
+ },
134
+ execute: async (input, ctx) => {
135
+ const ownerId = ctx.callerId ?? "anonymous";
136
+ const id = getSecretId(input.ref);
137
+ const deleted = await store.delete(id, ownerId);
138
+ return { deleted };
139
+ },
140
+ });
141
+ return (0, define_js_1.defineAgent)({
142
+ path: "@secrets",
143
+ entrypoint: "Secret storage agent. Stores, resolves, and manages encrypted secrets.",
144
+ config: {
145
+ name: "Secrets",
146
+ description: "Encrypted secret storage and management",
147
+ visibility: "internal",
148
+ },
149
+ tools: [storeSecretTool, revokeSecretTool],
150
+ });
151
+ }
152
+ /**
153
+ * Process tool params: resolve secret:xxx refs and store raw secret values.
154
+ */
155
+ async function processSecretParams(params, schema, secretStore, ownerId) {
156
+ const resolved = { ...params };
157
+ const redacted = { ...params };
158
+ if (!schema?.properties)
159
+ return { resolved, redacted };
160
+ for (const [key, schemaProp] of Object.entries(schema.properties)) {
161
+ const value = params[key];
162
+ if (value === undefined || value === null)
163
+ continue;
164
+ if (schemaProp.type === "object" &&
165
+ typeof value === "object" &&
166
+ !Array.isArray(value)) {
167
+ const nested = await processSecretParams(value, schemaProp, secretStore, ownerId);
168
+ resolved[key] = nested.resolved;
169
+ redacted[key] = nested.redacted;
170
+ continue;
171
+ }
172
+ if (typeof value !== "string")
173
+ continue;
174
+ // Resolve secret refs
175
+ if (isSecretRef(value)) {
176
+ const id = getSecretId(value);
177
+ const realValue = await secretStore.resolve(id, ownerId);
178
+ if (realValue === null)
179
+ throw new Error(`Secret not found: ${value}`);
180
+ resolved[key] = realValue;
181
+ redacted[key] = value;
182
+ continue;
183
+ }
184
+ // Auto-store raw values in secret: true fields
185
+ if (schemaProp.secret && value.length > 0) {
186
+ const id = await secretStore.store(value, ownerId);
187
+ resolved[key] = value;
188
+ redacted[key] = makeSecretRef(id);
189
+ }
190
+ }
191
+ return { resolved, redacted };
192
+ }
193
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/agent-definitions/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,440 @@
1
+ "use strict";
2
+ /**
3
+ * Users Agent (@users)
4
+ *
5
+ * Built-in agent for user and user identity management.
6
+ * Provides user CRUD and identity linking (OAuth providers, SSO, etc.).
7
+ *
8
+ * A User is a human entity. A UserIdentity links a user to an external
9
+ * identity provider (e.g. Google, Slack, GitHub) — one user can have
10
+ * many identities.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { createAgentRegistry, createUsersAgent } from '@slashfi/agents-sdk';
15
+ *
16
+ * const registry = createAgentRegistry();
17
+ * registry.register(createUsersAgent({
18
+ * store: myUserStore,
19
+ * }));
20
+ * ```
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.createInMemoryUserStore = createInMemoryUserStore;
24
+ exports.createUsersAgent = createUsersAgent;
25
+ const define_js_1 = require("../define.js");
26
+ // ============================================
27
+ // In-Memory User Store
28
+ // ============================================
29
+ function generateId(prefix) {
30
+ const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
31
+ let id = prefix;
32
+ for (let i = 0; i < 20; i++) {
33
+ id += chars[Math.floor(Math.random() * chars.length)];
34
+ }
35
+ return id;
36
+ }
37
+ function createInMemoryUserStore() {
38
+ const users = new Map();
39
+ const identities = new Map();
40
+ return {
41
+ async createUser(input) {
42
+ const now = Date.now();
43
+ const user = { ...input, createdAt: now, updatedAt: now };
44
+ users.set(user.id, user);
45
+ return user;
46
+ },
47
+ async getUser(userId) {
48
+ return users.get(userId) ?? null;
49
+ },
50
+ async getUserByEmail(tenantId, email) {
51
+ for (const u of users.values()) {
52
+ if (u.tenantId === tenantId && u.email === email)
53
+ return u;
54
+ }
55
+ return null;
56
+ },
57
+ async listUsers(tenantId) {
58
+ return Array.from(users.values()).filter((u) => u.tenantId === tenantId);
59
+ },
60
+ async updateUser(userId, updates) {
61
+ const user = users.get(userId);
62
+ if (!user)
63
+ return null;
64
+ const updated = { ...user, ...updates, updatedAt: Date.now() };
65
+ users.set(userId, updated);
66
+ return updated;
67
+ },
68
+ async deleteUser(userId) {
69
+ // Delete identities too
70
+ for (const [id, identity] of identities) {
71
+ if (identity.userId === userId)
72
+ identities.delete(id);
73
+ }
74
+ return users.delete(userId);
75
+ },
76
+ async createIdentity(input) {
77
+ const now = Date.now();
78
+ const identity = {
79
+ ...input,
80
+ connectedAt: now,
81
+ updatedAt: now,
82
+ };
83
+ identities.set(identity.id, identity);
84
+ return identity;
85
+ },
86
+ async getIdentity(identityId) {
87
+ return identities.get(identityId) ?? null;
88
+ },
89
+ async getIdentityByProvider(userId, provider) {
90
+ for (const identity of identities.values()) {
91
+ if (identity.userId === userId && identity.provider === provider)
92
+ return identity;
93
+ }
94
+ return null;
95
+ },
96
+ async findIdentityByProviderUserId(provider, providerUserId) {
97
+ for (const identity of identities.values()) {
98
+ if (identity.provider === provider &&
99
+ identity.providerUserId === providerUserId)
100
+ return identity;
101
+ }
102
+ return null;
103
+ },
104
+ async listIdentities(userId) {
105
+ return Array.from(identities.values()).filter((i) => i.userId === userId);
106
+ },
107
+ async updateIdentity(identityId, updates) {
108
+ const identity = identities.get(identityId);
109
+ if (!identity)
110
+ return null;
111
+ const updated = { ...identity, ...updates, updatedAt: Date.now() };
112
+ identities.set(identityId, updated);
113
+ return updated;
114
+ },
115
+ async deleteIdentity(identityId) {
116
+ return identities.delete(identityId);
117
+ },
118
+ };
119
+ }
120
+ function createUsersAgent(options) {
121
+ const { store } = options;
122
+ // ---- create_user ----
123
+ const createUserTool = (0, define_js_1.defineTool)({
124
+ name: "create_user",
125
+ description: "Create a new user.",
126
+ visibility: "public",
127
+ inputSchema: {
128
+ type: "object",
129
+ properties: {
130
+ id: {
131
+ type: "string",
132
+ description: "User ID (optional, auto-generated if omitted)",
133
+ },
134
+ tenantId: { type: "string", description: "Tenant ID" },
135
+ email: { type: "string", description: "Email address" },
136
+ name: { type: "string", description: "Display name" },
137
+ avatarUrl: { type: "string", description: "Avatar URL" },
138
+ metadata: { type: "object", description: "Additional metadata" },
139
+ externalRef: {
140
+ type: "object",
141
+ description: "Link to a user on a remote system. Creates identity automatically.",
142
+ properties: {
143
+ issuer: {
144
+ type: "string",
145
+ description: "Issuer URL of the remote system",
146
+ },
147
+ userId: {
148
+ type: "string",
149
+ description: "User ID on the remote system",
150
+ },
151
+ },
152
+ },
153
+ },
154
+ required: ["tenantId"],
155
+ },
156
+ execute: async (input, __ctx) => {
157
+ // If externalRef provided, check if identity already exists
158
+ if (input.externalRef) {
159
+ const existing = await store.findIdentityByProviderUserId(input.externalRef.issuer, input.externalRef.userId);
160
+ if (existing) {
161
+ const user = await store.getUser(existing.userId);
162
+ return {
163
+ success: true,
164
+ user,
165
+ identity: existing,
166
+ alreadyLinked: true,
167
+ };
168
+ }
169
+ }
170
+ const user = await store.createUser({
171
+ id: input.id ?? generateId("user_"),
172
+ tenantId: input.tenantId,
173
+ email: input.email,
174
+ name: input.name,
175
+ avatarUrl: input.avatarUrl,
176
+ metadata: input.metadata,
177
+ });
178
+ // Auto-create identity link if externalRef provided
179
+ let identity;
180
+ if (input.externalRef) {
181
+ identity = await store.createIdentity({
182
+ id: generateId("uid_"),
183
+ userId: user.id,
184
+ provider: input.externalRef.issuer,
185
+ providerUserId: input.externalRef.userId,
186
+ email: input.email,
187
+ name: input.name,
188
+ });
189
+ }
190
+ return { success: true, user, identity };
191
+ },
192
+ });
193
+ // ---- get_user ----
194
+ const getUserTool = (0, define_js_1.defineTool)({
195
+ name: "get_user",
196
+ description: "Get a user by ID.",
197
+ visibility: "public",
198
+ inputSchema: {
199
+ type: "object",
200
+ properties: {
201
+ userId: { type: "string", description: "User ID" },
202
+ },
203
+ required: ["userId"],
204
+ },
205
+ execute: async (input, __ctx) => {
206
+ const user = await store.getUser(input.userId);
207
+ if (!user)
208
+ return { error: `User '${input.userId}' not found` };
209
+ return { user };
210
+ },
211
+ });
212
+ // ---- list_users ----
213
+ const listUsersTool = (0, define_js_1.defineTool)({
214
+ name: "list_users",
215
+ description: "List users in a tenant.",
216
+ visibility: "public",
217
+ inputSchema: {
218
+ type: "object",
219
+ properties: {
220
+ tenantId: { type: "string", description: "Tenant ID" },
221
+ },
222
+ required: ["tenantId"],
223
+ },
224
+ execute: async (input, __ctx) => {
225
+ const users = await store.listUsers(input.tenantId);
226
+ return { users };
227
+ },
228
+ });
229
+ // ---- update_user ----
230
+ const updateUserTool = (0, define_js_1.defineTool)({
231
+ name: "update_user",
232
+ description: "Update a user's profile.",
233
+ visibility: "public",
234
+ inputSchema: {
235
+ type: "object",
236
+ properties: {
237
+ userId: { type: "string", description: "User ID" },
238
+ email: { type: "string", description: "New email" },
239
+ name: { type: "string", description: "New name" },
240
+ avatarUrl: { type: "string", description: "New avatar URL" },
241
+ metadata: { type: "object", description: "New metadata (merged)" },
242
+ },
243
+ required: ["userId"],
244
+ },
245
+ execute: async (input, __ctx) => {
246
+ const { userId, ...updates } = input;
247
+ const user = await store.updateUser(userId, updates);
248
+ if (!user)
249
+ return { error: `User '${userId}' not found` };
250
+ return { success: true, user };
251
+ },
252
+ });
253
+ // ---- link_identity ----
254
+ const linkIdentityTool = (0, define_js_1.defineTool)({
255
+ name: "link_identity",
256
+ description: "Link an external identity (OAuth provider) to a user. " +
257
+ "Creates a UserIdentity record associating the user with a provider account.",
258
+ visibility: "public",
259
+ inputSchema: {
260
+ type: "object",
261
+ properties: {
262
+ userId: { type: "string", description: "User ID to link to" },
263
+ provider: {
264
+ type: "string",
265
+ description: "Provider name (e.g. 'google', 'slack', 'github')",
266
+ },
267
+ providerUserId: {
268
+ type: "string",
269
+ description: "The user's ID in the external provider",
270
+ },
271
+ email: { type: "string", description: "Email from the provider" },
272
+ name: { type: "string", description: "Name from the provider" },
273
+ avatarUrl: {
274
+ type: "string",
275
+ description: "Avatar URL from the provider",
276
+ },
277
+ accessToken: { type: "string", description: "OAuth access token" },
278
+ refreshToken: { type: "string", description: "OAuth refresh token" },
279
+ expiresAt: {
280
+ type: "number",
281
+ description: "Token expiry timestamp (ms)",
282
+ },
283
+ scopes: {
284
+ type: "array",
285
+ items: { type: "string" },
286
+ description: "Granted scopes",
287
+ },
288
+ metadata: {
289
+ type: "object",
290
+ description: "Additional provider-specific data",
291
+ },
292
+ },
293
+ required: ["userId", "provider", "providerUserId"],
294
+ },
295
+ execute: async (input, __ctx) => {
296
+ // Check if identity already exists
297
+ const existing = await store.getIdentityByProvider(input.userId, input.provider);
298
+ if (existing) {
299
+ // Update existing
300
+ const updated = await store.updateIdentity(existing.id, {
301
+ accessToken: input.accessToken,
302
+ refreshToken: input.refreshToken,
303
+ expiresAt: input.expiresAt,
304
+ email: input.email,
305
+ name: input.name,
306
+ avatarUrl: input.avatarUrl,
307
+ metadata: input.metadata,
308
+ });
309
+ return { success: true, identity: updated, updated: true };
310
+ }
311
+ const identity = await store.createIdentity({
312
+ id: generateId("ident_"),
313
+ userId: input.userId,
314
+ provider: input.provider,
315
+ providerUserId: input.providerUserId,
316
+ email: input.email,
317
+ name: input.name,
318
+ avatarUrl: input.avatarUrl,
319
+ accessToken: input.accessToken,
320
+ refreshToken: input.refreshToken,
321
+ expiresAt: input.expiresAt,
322
+ tokenType: input.tokenType,
323
+ scopes: input.scopes,
324
+ metadata: input.metadata,
325
+ });
326
+ return { success: true, identity, created: true };
327
+ },
328
+ });
329
+ // ---- list_identities ----
330
+ const listIdentitiesTool = (0, define_js_1.defineTool)({
331
+ name: "list_identities",
332
+ description: "List all linked identities for a user.",
333
+ visibility: "public",
334
+ inputSchema: {
335
+ type: "object",
336
+ properties: {
337
+ userId: { type: "string", description: "User ID" },
338
+ },
339
+ required: ["userId"],
340
+ },
341
+ execute: async (input, __ctx) => {
342
+ const identities = await store.listIdentities(input.userId);
343
+ return {
344
+ identities: identities.map((i) => ({
345
+ id: i.id,
346
+ provider: i.provider,
347
+ providerUserId: i.providerUserId,
348
+ email: i.email,
349
+ name: i.name,
350
+ connectedAt: i.connectedAt,
351
+ hasAccessToken: !!i.accessToken,
352
+ expiresAt: i.expiresAt,
353
+ })),
354
+ };
355
+ },
356
+ });
357
+ // ---- unlink_identity ----
358
+ const unlinkIdentityTool = (0, define_js_1.defineTool)({
359
+ name: "unlink_identity",
360
+ description: "Remove a linked identity from a user.",
361
+ visibility: "public",
362
+ inputSchema: {
363
+ type: "object",
364
+ properties: {
365
+ identityId: { type: "string", description: "Identity ID to unlink" },
366
+ },
367
+ required: ["identityId"],
368
+ },
369
+ execute: async (input, __ctx) => {
370
+ const deleted = await store.deleteIdentity(input.identityId);
371
+ return { success: deleted };
372
+ },
373
+ });
374
+ // ---- resolve_identity ----
375
+ const resolveIdentityTool = (0, define_js_1.defineTool)({
376
+ name: "resolve_identity",
377
+ description: "Find a user by their external provider identity. " +
378
+ "Useful for login flows — given a provider + providerUserId, find the linked user.",
379
+ visibility: "public",
380
+ inputSchema: {
381
+ type: "object",
382
+ properties: {
383
+ provider: {
384
+ type: "string",
385
+ description: "Provider name (e.g. 'google')",
386
+ },
387
+ providerUserId: {
388
+ type: "string",
389
+ description: "External user ID from the provider",
390
+ },
391
+ },
392
+ required: ["provider", "providerUserId"],
393
+ },
394
+ execute: async (input, __ctx) => {
395
+ const identity = await store.findIdentityByProviderUserId(input.provider, input.providerUserId);
396
+ if (!identity)
397
+ return { found: false };
398
+ const user = await store.getUser(identity.userId);
399
+ return {
400
+ found: true,
401
+ user: user
402
+ ? {
403
+ id: user.id,
404
+ email: user.email,
405
+ name: user.name,
406
+ tenantId: user.tenantId,
407
+ }
408
+ : null,
409
+ identity: {
410
+ id: identity.id,
411
+ provider: identity.provider,
412
+ providerUserId: identity.providerUserId,
413
+ email: identity.email,
414
+ },
415
+ };
416
+ },
417
+ });
418
+ return (0, define_js_1.defineAgent)({
419
+ path: "@users",
420
+ entrypoint: "You are the users agent. You manage user accounts and their linked external identities " +
421
+ "(OAuth providers like Google, Slack, GitHub, etc.).",
422
+ config: {
423
+ name: "Users",
424
+ description: "User and identity management",
425
+ supportedActions: ["execute_tool", "describe_tools", "load"],
426
+ },
427
+ visibility: "public",
428
+ tools: [
429
+ createUserTool,
430
+ getUserTool,
431
+ listUsersTool,
432
+ updateUserTool,
433
+ linkIdentityTool,
434
+ listIdentitiesTool,
435
+ unlinkIdentityTool,
436
+ resolveIdentityTool,
437
+ ],
438
+ });
439
+ }
440
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/agent-definitions/users.ts"],"names":[],"mappings":"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"}