@slashfi/agents-sdk 0.77.2 → 0.77.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/adk-tools.d.ts.map +1 -1
- package/dist/adk-tools.js +104 -253
- package/dist/adk-tools.js.map +1 -1
- package/dist/cjs/adk-tools.js +104 -253
- package/dist/cjs/adk-tools.js.map +1 -1
- package/dist/cjs/config-store.js +68 -26
- package/dist/cjs/config-store.js.map +1 -1
- package/dist/cjs/registry.js +2 -33
- package/dist/cjs/registry.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +68 -26
- package/dist/config-store.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -33
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +3 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/src/adk-tools.ts +113 -282
- package/src/config-store.ts +97 -27
- package/src/ref-naming.test.ts +1 -49
- package/src/registry.ts +2 -40
- package/src/types.ts +6 -21
package/dist/cjs/adk-tools.js
CHANGED
|
@@ -19,227 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
exports.createAdkTools = createAdkTools;
|
|
22
|
-
const zod_1 = require("zod");
|
|
23
|
-
const adk_error_js_1 = require("./adk-error.js");
|
|
24
|
-
const call_agent_schema_js_1 = require("./call-agent-schema.js");
|
|
25
22
|
const define_js_1 = require("./define.js");
|
|
26
|
-
const objectRecordSchema = zod_1.z.record(zod_1.z.unknown());
|
|
27
|
-
const sourceRegistrySchema = zod_1.z
|
|
28
|
-
.object({
|
|
29
|
-
url: zod_1.z.string().min(1).describe("Registry MCP URL."),
|
|
30
|
-
agentPath: zod_1.z.string().optional().describe("Agent path on that registry."),
|
|
31
|
-
})
|
|
32
|
-
.passthrough();
|
|
33
|
-
const refScopeSchema = zod_1.z
|
|
34
|
-
.string()
|
|
35
|
-
.optional()
|
|
36
|
-
.describe("Config scope to operate on.");
|
|
37
|
-
const refNameSchema = zod_1.z.string().min(1).describe("Local connection name.");
|
|
38
|
-
const refAddOperationSchema = zod_1.z
|
|
39
|
-
.object({
|
|
40
|
-
operation: zod_1.z.literal("add"),
|
|
41
|
-
scope: refScopeSchema,
|
|
42
|
-
ref: zod_1.z
|
|
43
|
-
.string()
|
|
44
|
-
.min(1)
|
|
45
|
-
.optional()
|
|
46
|
-
.describe("Canonical agent path, e.g. 'google-calendar'. Defaults to name when omitted."),
|
|
47
|
-
name: refNameSchema
|
|
48
|
-
.optional()
|
|
49
|
-
.describe("Local connection name. Defaults to ref when omitted."),
|
|
50
|
-
scheme: zod_1.z
|
|
51
|
-
.enum(["registry", "mcp", "https"])
|
|
52
|
-
.optional()
|
|
53
|
-
.describe("Connection type. Usually inferred from sourceRegistry or url."),
|
|
54
|
-
url: zod_1.z
|
|
55
|
-
.string()
|
|
56
|
-
.min(1)
|
|
57
|
-
.optional()
|
|
58
|
-
.describe("Direct MCP/HTTPS URL. Required for direct mcp/https refs."),
|
|
59
|
-
sourceRegistry: sourceRegistrySchema
|
|
60
|
-
.optional()
|
|
61
|
-
.describe("Registry that serves this agent. Required for registry-backed refs."),
|
|
62
|
-
config: objectRecordSchema
|
|
63
|
-
.optional()
|
|
64
|
-
.describe("Optional per-instance config."),
|
|
65
|
-
})
|
|
66
|
-
.passthrough()
|
|
67
|
-
.superRefine((input, ctx) => {
|
|
68
|
-
if (!input.ref && !input.name) {
|
|
69
|
-
ctx.addIssue({
|
|
70
|
-
code: zod_1.z.ZodIssueCode.custom,
|
|
71
|
-
path: ["ref"],
|
|
72
|
-
message: "Either ref or name is required.",
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
if (input.scheme === "registry" && !input.sourceRegistry?.url) {
|
|
76
|
-
ctx.addIssue({
|
|
77
|
-
code: zod_1.z.ZodIssueCode.custom,
|
|
78
|
-
path: ["sourceRegistry", "url"],
|
|
79
|
-
message: "scheme=registry requires sourceRegistry.url.",
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
if ((input.scheme === "mcp" || input.scheme === "https") && !input.url) {
|
|
83
|
-
ctx.addIssue({
|
|
84
|
-
code: zod_1.z.ZodIssueCode.custom,
|
|
85
|
-
path: ["url"],
|
|
86
|
-
message: `scheme=${input.scheme} requires url.`,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
if (!input.url && !input.sourceRegistry?.url) {
|
|
90
|
-
ctx.addIssue({
|
|
91
|
-
code: zod_1.z.ZodIssueCode.custom,
|
|
92
|
-
path: ["sourceRegistry"],
|
|
93
|
-
message: "Connection target is required: provide sourceRegistry.url for a registry ref, or url for a direct mcp/https ref.",
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
const refOperationSchemas = {
|
|
98
|
-
add: refAddOperationSchema,
|
|
99
|
-
remove: zod_1.z
|
|
100
|
-
.object({
|
|
101
|
-
operation: zod_1.z.literal("remove"),
|
|
102
|
-
scope: refScopeSchema,
|
|
103
|
-
name: refNameSchema,
|
|
104
|
-
})
|
|
105
|
-
.passthrough(),
|
|
106
|
-
list: zod_1.z
|
|
107
|
-
.object({ operation: zod_1.z.literal("list"), scope: refScopeSchema })
|
|
108
|
-
.passthrough(),
|
|
109
|
-
update: zod_1.z
|
|
110
|
-
.object({
|
|
111
|
-
operation: zod_1.z.literal("update"),
|
|
112
|
-
scope: refScopeSchema,
|
|
113
|
-
name: refNameSchema,
|
|
114
|
-
ref: zod_1.z.string().optional(),
|
|
115
|
-
scheme: zod_1.z.enum(["registry", "mcp", "https"]).optional(),
|
|
116
|
-
url: zod_1.z.string().optional(),
|
|
117
|
-
sourceRegistry: sourceRegistrySchema.optional(),
|
|
118
|
-
config: objectRecordSchema.optional(),
|
|
119
|
-
})
|
|
120
|
-
.passthrough(),
|
|
121
|
-
inspect: zod_1.z
|
|
122
|
-
.object({
|
|
123
|
-
operation: zod_1.z.literal("inspect"),
|
|
124
|
-
scope: refScopeSchema,
|
|
125
|
-
name: refNameSchema,
|
|
126
|
-
full: zod_1.z.boolean().optional(),
|
|
127
|
-
})
|
|
128
|
-
.passthrough(),
|
|
129
|
-
call: zod_1.z
|
|
130
|
-
.object({
|
|
131
|
-
operation: zod_1.z.literal("call"),
|
|
132
|
-
scope: refScopeSchema,
|
|
133
|
-
name: refNameSchema,
|
|
134
|
-
tool: zod_1.z.string().min(1),
|
|
135
|
-
params: objectRecordSchema.optional(),
|
|
136
|
-
})
|
|
137
|
-
.passthrough(),
|
|
138
|
-
auth: zod_1.z
|
|
139
|
-
.object({
|
|
140
|
-
operation: zod_1.z.literal("auth"),
|
|
141
|
-
scope: refScopeSchema,
|
|
142
|
-
name: refNameSchema,
|
|
143
|
-
ref: zod_1.z.string().optional(),
|
|
144
|
-
apiKey: zod_1.z.string().optional(),
|
|
145
|
-
credentials: zod_1.z.record(zod_1.z.string()).optional(),
|
|
146
|
-
sourceRegistry: sourceRegistrySchema.optional(),
|
|
147
|
-
})
|
|
148
|
-
.passthrough(),
|
|
149
|
-
"auth-status": zod_1.z
|
|
150
|
-
.object({
|
|
151
|
-
operation: zod_1.z.literal("auth-status"),
|
|
152
|
-
scope: refScopeSchema,
|
|
153
|
-
name: refNameSchema,
|
|
154
|
-
})
|
|
155
|
-
.passthrough(),
|
|
156
|
-
"refresh-token": zod_1.z
|
|
157
|
-
.object({
|
|
158
|
-
operation: zod_1.z.literal("refresh-token"),
|
|
159
|
-
scope: refScopeSchema,
|
|
160
|
-
name: refNameSchema,
|
|
161
|
-
})
|
|
162
|
-
.passthrough(),
|
|
163
|
-
resources: zod_1.z
|
|
164
|
-
.object({
|
|
165
|
-
operation: zod_1.z.literal("resources"),
|
|
166
|
-
scope: refScopeSchema,
|
|
167
|
-
name: refNameSchema,
|
|
168
|
-
})
|
|
169
|
-
.passthrough(),
|
|
170
|
-
read: zod_1.z
|
|
171
|
-
.object({
|
|
172
|
-
operation: zod_1.z.literal("read"),
|
|
173
|
-
scope: refScopeSchema,
|
|
174
|
-
name: refNameSchema,
|
|
175
|
-
uris: zod_1.z.array(zod_1.z.string()),
|
|
176
|
-
})
|
|
177
|
-
.passthrough(),
|
|
178
|
-
};
|
|
179
|
-
const refToolInputSchema = zod_1.z.union([
|
|
180
|
-
refOperationSchemas.add,
|
|
181
|
-
refOperationSchemas.remove,
|
|
182
|
-
refOperationSchemas.list,
|
|
183
|
-
refOperationSchemas.update,
|
|
184
|
-
refOperationSchemas.inspect,
|
|
185
|
-
refOperationSchemas.call,
|
|
186
|
-
refOperationSchemas.auth,
|
|
187
|
-
refOperationSchemas["auth-status"],
|
|
188
|
-
refOperationSchemas["refresh-token"],
|
|
189
|
-
refOperationSchemas.resources,
|
|
190
|
-
refOperationSchemas.read,
|
|
191
|
-
]);
|
|
192
|
-
const refToolInputJsonSchema = (0, call_agent_schema_js_1.zodToOpenAiJsonSchema)(refToolInputSchema);
|
|
193
|
-
function parseRefToolInput(input) {
|
|
194
|
-
const op = typeof input.operation === "string" ? input.operation : undefined;
|
|
195
|
-
const schema = op && op in refOperationSchemas
|
|
196
|
-
? refOperationSchemas[op]
|
|
197
|
-
: refToolInputSchema;
|
|
198
|
-
const result = schema.safeParse(input);
|
|
199
|
-
if (result.success)
|
|
200
|
-
return result.data;
|
|
201
|
-
const operation = op ? `ref.${op}` : "ref";
|
|
202
|
-
throw new adk_error_js_1.AdkError({
|
|
203
|
-
code: "TOOL_INPUT_INVALID",
|
|
204
|
-
message: `Invalid ${operation} input`,
|
|
205
|
-
hint: "The expected input schema is serialized in details.schema; operation-specific schema is in details.operationSchema.",
|
|
206
|
-
details: {
|
|
207
|
-
operation,
|
|
208
|
-
issues: result.error.issues.map((issue) => ({
|
|
209
|
-
path: issue.path.join("."),
|
|
210
|
-
message: issue.message,
|
|
211
|
-
})),
|
|
212
|
-
received: input,
|
|
213
|
-
schema: refToolInputJsonSchema,
|
|
214
|
-
...(op &&
|
|
215
|
-
op in refOperationSchemas && {
|
|
216
|
-
operationSchema: (0, call_agent_schema_js_1.zodToOpenAiJsonSchema)(refOperationSchemas[op]),
|
|
217
|
-
}),
|
|
218
|
-
},
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
function withScopeSchema(schema, scopeSchema) {
|
|
222
|
-
const clone = JSON.parse(JSON.stringify(schema));
|
|
223
|
-
const visit = (value) => {
|
|
224
|
-
if (!value || typeof value !== "object")
|
|
225
|
-
return;
|
|
226
|
-
if (Array.isArray(value)) {
|
|
227
|
-
for (const item of value)
|
|
228
|
-
visit(item);
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
const record = value;
|
|
232
|
-
const properties = record.properties;
|
|
233
|
-
if (properties?.scope) {
|
|
234
|
-
properties.scope = scopeSchema;
|
|
235
|
-
}
|
|
236
|
-
for (const child of Object.values(record)) {
|
|
237
|
-
visit(child);
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
visit(clone);
|
|
241
|
-
return clone;
|
|
242
|
-
}
|
|
243
23
|
function createAdkTools(opts) {
|
|
244
24
|
const { resolveScope, scopes } = opts;
|
|
245
25
|
const scopeSchema = scopes
|
|
@@ -252,34 +32,105 @@ function createAdkTools(opts) {
|
|
|
252
32
|
const refTool = (0, define_js_1.defineTool)({
|
|
253
33
|
name: "ref",
|
|
254
34
|
description: "Manage agent refs. Operations: add, remove, list, update, inspect, call, auth, auth-status, refresh-token, resources, read. For `add`, supply `ref` (canonical agent path, e.g. 'notion') and `name` (local identifier). If `name` is omitted on add, it defaults to `ref`. For every other operation, pass `name`.",
|
|
255
|
-
inputSchema:
|
|
35
|
+
inputSchema: {
|
|
36
|
+
type: "object",
|
|
37
|
+
properties: {
|
|
38
|
+
operation: {
|
|
39
|
+
type: "string",
|
|
40
|
+
enum: [
|
|
41
|
+
"add",
|
|
42
|
+
"remove",
|
|
43
|
+
"list",
|
|
44
|
+
"update",
|
|
45
|
+
"inspect",
|
|
46
|
+
"call",
|
|
47
|
+
"auth",
|
|
48
|
+
"auth-status",
|
|
49
|
+
"refresh-token",
|
|
50
|
+
"resources",
|
|
51
|
+
"read",
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
scope: scopeSchema,
|
|
55
|
+
ref: {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "Canonical agent path on the remote registry (e.g. 'notion', 'linear', 'github'). Used by `add` to identify which agent definition to connect to. Other operations use `name` instead. If you call `add` with only `name` and no `ref`, `ref` defaults to `name`.",
|
|
58
|
+
},
|
|
59
|
+
name: {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "Local identifier for this ref, used by all operations to look up the entry. On `add`, defaults to `ref` when omitted.",
|
|
62
|
+
},
|
|
63
|
+
scheme: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "Connection scheme: 'mcp' (direct MCP server), 'https' (REST proxy), or 'registry' (discovered via a registry). Auto-inferred from `url` or `sourceRegistry` when omitted.",
|
|
66
|
+
},
|
|
67
|
+
url: {
|
|
68
|
+
type: "string",
|
|
69
|
+
description: "Direct URL to the agent (e.g. https://mcp.notion.com/mcp). Required for 'mcp' and 'https' schemes.",
|
|
70
|
+
},
|
|
71
|
+
sourceRegistry: {
|
|
72
|
+
type: "object",
|
|
73
|
+
properties: {
|
|
74
|
+
url: { type: "string" },
|
|
75
|
+
agentPath: { type: "string" },
|
|
76
|
+
},
|
|
77
|
+
description: "When scheme is 'registry', the registry + agent path to resolve through.",
|
|
78
|
+
},
|
|
79
|
+
config: {
|
|
80
|
+
type: "object",
|
|
81
|
+
description: "Per-instance config passed to the agent (headers, credentials, etc.). Supports `{{secret-uri}}` templates.",
|
|
82
|
+
},
|
|
83
|
+
tool: {
|
|
84
|
+
type: "string",
|
|
85
|
+
description: "For `call` operation: the tool name on the ref to invoke.",
|
|
86
|
+
},
|
|
87
|
+
params: {
|
|
88
|
+
type: "object",
|
|
89
|
+
description: "For `call` operation: arguments to pass to the tool.",
|
|
90
|
+
},
|
|
91
|
+
full: {
|
|
92
|
+
type: "boolean",
|
|
93
|
+
description: "For `inspect` operation: include full agent definition.",
|
|
94
|
+
},
|
|
95
|
+
uris: {
|
|
96
|
+
type: "array",
|
|
97
|
+
items: { type: "string" },
|
|
98
|
+
description: "For `read` operation: the resource URIs to read.",
|
|
99
|
+
},
|
|
100
|
+
apiKey: {
|
|
101
|
+
type: "string",
|
|
102
|
+
description: "For `auth` operation: pre-provisioned API key.",
|
|
103
|
+
},
|
|
104
|
+
credentials: {
|
|
105
|
+
type: "object",
|
|
106
|
+
description: "For `auth` operation: key-value map of credential fields (keys match field names from the auth challenge).",
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
required: ["operation"],
|
|
110
|
+
},
|
|
256
111
|
execute: async (input, ctx) => {
|
|
257
|
-
const
|
|
258
|
-
const
|
|
259
|
-
const op = parsedInput.operation;
|
|
112
|
+
const adk = await resolveScope(input.scope, ctx);
|
|
113
|
+
const op = input.operation;
|
|
260
114
|
switch (op) {
|
|
261
115
|
case "add": {
|
|
262
116
|
// Accept `ref` or `name` (or both). If only one is given, the
|
|
263
117
|
// other defaults to it. The stored entry always has an explicit
|
|
264
118
|
// `name`, so downstream auth/callback state can distinguish the
|
|
265
119
|
// canonical ref from the local connection handle.
|
|
266
|
-
const refValue = (
|
|
120
|
+
const refValue = (input.ref ?? input.name);
|
|
267
121
|
if (!refValue) {
|
|
268
122
|
throw new Error("ref.add: must supply either 'ref' (canonical agent path) or 'name' (local identifier); both may be the same string for the common single-instance case.");
|
|
269
123
|
}
|
|
270
|
-
const nameValue = (
|
|
271
|
-
const entry = {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
entry.sourceRegistry = parsedInput.sourceRegistry;
|
|
281
|
-
if (parsedInput.config)
|
|
282
|
-
entry.config = parsedInput.config;
|
|
124
|
+
const nameValue = (input.name ?? refValue);
|
|
125
|
+
const entry = { ref: refValue, name: nameValue };
|
|
126
|
+
if (input.scheme)
|
|
127
|
+
entry.scheme = input.scheme;
|
|
128
|
+
if (input.url)
|
|
129
|
+
entry.url = input.url;
|
|
130
|
+
if (input.sourceRegistry)
|
|
131
|
+
entry.sourceRegistry = input.sourceRegistry;
|
|
132
|
+
if (input.config)
|
|
133
|
+
entry.config = input.config;
|
|
283
134
|
const { security } = await adk.ref.add(entry);
|
|
284
135
|
return {
|
|
285
136
|
added: true,
|
|
@@ -289,38 +140,38 @@ function createAdkTools(opts) {
|
|
|
289
140
|
};
|
|
290
141
|
}
|
|
291
142
|
case "remove":
|
|
292
|
-
return { removed: await adk.ref.remove(
|
|
143
|
+
return { removed: await adk.ref.remove(input.name) };
|
|
293
144
|
case "list":
|
|
294
145
|
return { refs: await adk.ref.list() };
|
|
295
146
|
case "update":
|
|
296
147
|
return {
|
|
297
|
-
updated: await adk.ref.update(
|
|
148
|
+
updated: await adk.ref.update(input.name, input),
|
|
298
149
|
};
|
|
299
150
|
case "inspect":
|
|
300
|
-
return await adk.ref.inspect(
|
|
301
|
-
full:
|
|
151
|
+
return await adk.ref.inspect(input.name, {
|
|
152
|
+
full: input.full,
|
|
302
153
|
});
|
|
303
154
|
case "call":
|
|
304
|
-
return await adk.ref.call(
|
|
155
|
+
return await adk.ref.call(input.name, input.tool, input.params);
|
|
305
156
|
case "auth": {
|
|
306
157
|
const authOpts = {};
|
|
307
|
-
if (
|
|
308
|
-
authOpts.apiKey =
|
|
309
|
-
if (
|
|
310
|
-
authOpts.credentials =
|
|
158
|
+
if (input.apiKey)
|
|
159
|
+
authOpts.apiKey = input.apiKey;
|
|
160
|
+
if (input.credentials)
|
|
161
|
+
authOpts.credentials = input.credentials;
|
|
311
162
|
if (opts.hooks?.getAuthStateContext) {
|
|
312
|
-
authOpts.stateContext = await opts.hooks.getAuthStateContext(
|
|
163
|
+
authOpts.stateContext = await opts.hooks.getAuthStateContext(input, ctx);
|
|
313
164
|
}
|
|
314
|
-
return await adk.ref.auth(
|
|
165
|
+
return await adk.ref.auth(input.name, authOpts);
|
|
315
166
|
}
|
|
316
167
|
case "auth-status":
|
|
317
|
-
return await adk.ref.authStatus(
|
|
168
|
+
return await adk.ref.authStatus(input.name);
|
|
318
169
|
case "refresh-token":
|
|
319
|
-
return await adk.ref.refreshToken(
|
|
170
|
+
return await adk.ref.refreshToken(input.name);
|
|
320
171
|
case "resources":
|
|
321
|
-
return await adk.ref.resources(
|
|
172
|
+
return await adk.ref.resources(input.name);
|
|
322
173
|
case "read":
|
|
323
|
-
return await adk.ref.read(
|
|
174
|
+
return await adk.ref.read(input.name, input.uris);
|
|
324
175
|
default:
|
|
325
176
|
throw new Error(`Unknown ref operation: ${op}`);
|
|
326
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adk-tools.js","sourceRoot":"","sources":["../../src/adk-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adk-tools.js","sourceRoot":"","sources":["../../src/adk-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/config-store.js
CHANGED
|
@@ -244,6 +244,47 @@ function createAdk(fs, options = {}) {
|
|
|
244
244
|
}
|
|
245
245
|
return value;
|
|
246
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Build a `tryResolve(field, oauthMetadata?)` function bound to a
|
|
249
|
+
* specific ref + entry + security context. Wraps the host-injected
|
|
250
|
+
* `resolveCredentials` callback (e.g. atlas's env/static/tenant chain
|
|
251
|
+
* for first-party agents). Errors propagate to the caller.
|
|
252
|
+
*/
|
|
253
|
+
function makeTryResolve(ctx) {
|
|
254
|
+
return async (field, oauthMetadata) => {
|
|
255
|
+
const resolve = options.resolveCredentials;
|
|
256
|
+
if (!resolve)
|
|
257
|
+
return null;
|
|
258
|
+
return resolve({
|
|
259
|
+
ref: ctx.name,
|
|
260
|
+
field,
|
|
261
|
+
entry: ctx.entry,
|
|
262
|
+
security: ctx.security,
|
|
263
|
+
oauthMetadata,
|
|
264
|
+
});
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Resolve OAuth client credentials (client_id + client_secret) for a
|
|
269
|
+
* ref. Walks: `resolveCredentials` callback → per-ref VCS storage.
|
|
270
|
+
* Used by both `auth` (initial OAuth flow) and `refreshToken` (token
|
|
271
|
+
* refresh) — must be a single function so the two paths can never
|
|
272
|
+
* disagree about where credentials live.
|
|
273
|
+
*
|
|
274
|
+
* Returns null when no client_id is available anywhere; caller decides
|
|
275
|
+
* whether to attempt dynamic registration (`auth`) or bail (`refresh`).
|
|
276
|
+
*/
|
|
277
|
+
async function resolveOAuthClient(ctx) {
|
|
278
|
+
const tryResolve = makeTryResolve(ctx);
|
|
279
|
+
const clientId = (await tryResolve("client_id", ctx.metadata)) ??
|
|
280
|
+
(await readRefSecret(ctx.name, "client_id"));
|
|
281
|
+
if (!clientId)
|
|
282
|
+
return null;
|
|
283
|
+
const clientSecret = (await tryResolve("client_secret", ctx.metadata)) ??
|
|
284
|
+
(await readRefSecret(ctx.name, "client_secret")) ??
|
|
285
|
+
undefined;
|
|
286
|
+
return { clientId, ...(clientSecret && { clientSecret }) };
|
|
287
|
+
}
|
|
247
288
|
const PENDING_OAUTH_PATH = "pending-oauth.json";
|
|
248
289
|
async function readPendingOAuth() {
|
|
249
290
|
const content = await fs.readFile(PENDING_OAUTH_PATH);
|
|
@@ -1399,12 +1440,9 @@ function createAdk(fs, options = {}) {
|
|
|
1399
1440
|
return { name, security, complete: true, fields: {} };
|
|
1400
1441
|
}
|
|
1401
1442
|
const configKeys = Object.keys(entry.config ?? {});
|
|
1402
|
-
const
|
|
1443
|
+
const tryResolveField = makeTryResolve({ name, entry, security });
|
|
1403
1444
|
async function canResolve(field, oauthMetadata) {
|
|
1404
|
-
|
|
1405
|
-
return false;
|
|
1406
|
-
const val = await resolve({ ref: name, field, entry, security, oauthMetadata });
|
|
1407
|
-
return val !== null;
|
|
1445
|
+
return (await tryResolveField(field, oauthMetadata)) !== null;
|
|
1408
1446
|
}
|
|
1409
1447
|
const fields = {};
|
|
1410
1448
|
if (security.type === "oauth2") {
|
|
@@ -1509,12 +1547,7 @@ function createAdk(fs, options = {}) {
|
|
|
1509
1547
|
}
|
|
1510
1548
|
const status = await ref.authStatus(name);
|
|
1511
1549
|
const security = status.security;
|
|
1512
|
-
const
|
|
1513
|
-
async function tryResolve(field, oauthMetadata) {
|
|
1514
|
-
if (!resolve)
|
|
1515
|
-
return null;
|
|
1516
|
-
return resolve({ ref: name, field, entry: entry, security, oauthMetadata });
|
|
1517
|
-
}
|
|
1550
|
+
const tryResolve = makeTryResolve({ name, entry, security });
|
|
1518
1551
|
if (!security || security.type === "none") {
|
|
1519
1552
|
return { type: "none", complete: true };
|
|
1520
1553
|
}
|
|
@@ -1646,11 +1679,14 @@ function createAdk(fs, options = {}) {
|
|
|
1646
1679
|
}
|
|
1647
1680
|
const redirectUri = callbackUrl();
|
|
1648
1681
|
// Resolve client credentials: callback → stored → dynamic registration
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1682
|
+
const fromHelper = await resolveOAuthClient({
|
|
1683
|
+
name,
|
|
1684
|
+
entry,
|
|
1685
|
+
security,
|
|
1686
|
+
metadata,
|
|
1687
|
+
});
|
|
1688
|
+
let clientId = fromHelper?.clientId;
|
|
1689
|
+
let clientSecret = fromHelper?.clientSecret;
|
|
1654
1690
|
if (!clientId && metadata.registration_endpoint) {
|
|
1655
1691
|
const supportedAuthMethods = metadata.token_endpoint_auth_methods_supported ?? ["none"];
|
|
1656
1692
|
const preferredMethod = supportedAuthMethods.includes("none")
|
|
@@ -1870,22 +1906,28 @@ function createAdk(fs, options = {}) {
|
|
|
1870
1906
|
const refreshToken = await readRefSecret(name, "refresh_token");
|
|
1871
1907
|
if (!refreshToken)
|
|
1872
1908
|
return null;
|
|
1873
|
-
//
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
//
|
|
1909
|
+
// Resolve token endpoint + OAuth client via the host's
|
|
1910
|
+
// `resolveCredentials` chain. Same chain `auth` uses (see
|
|
1911
|
+
// `resolveOAuthClient`) — kept symmetric so refresh works on every
|
|
1912
|
+
// ref `auth` works on, including first-party registry-hosted
|
|
1913
|
+
// clients whose creds live in env / tenant scope, not the user's
|
|
1914
|
+
// per-ref config.
|
|
1879
1915
|
const entry = await ref.get(name);
|
|
1880
1916
|
if (!entry)
|
|
1881
1917
|
return null;
|
|
1882
|
-
const
|
|
1883
|
-
const security =
|
|
1884
|
-
const flows = security
|
|
1918
|
+
const status = await ref.authStatus(name);
|
|
1919
|
+
const security = status.security;
|
|
1920
|
+
const flows = security && "flows" in security
|
|
1921
|
+
? security.flows
|
|
1922
|
+
: undefined;
|
|
1885
1923
|
const authCodeFlow = flows?.authorizationCode;
|
|
1886
|
-
const tokenUrl =
|
|
1924
|
+
const tokenUrl = authCodeFlow?.refreshUrl ?? authCodeFlow?.tokenUrl;
|
|
1887
1925
|
if (!tokenUrl)
|
|
1888
1926
|
return null;
|
|
1927
|
+
const oauthClient = await resolveOAuthClient({ name, entry, security });
|
|
1928
|
+
if (!oauthClient)
|
|
1929
|
+
return null;
|
|
1930
|
+
const { clientId, clientSecret } = oauthClient;
|
|
1889
1931
|
// POST to the token endpoint with grant_type=refresh_token
|
|
1890
1932
|
const body = new URLSearchParams({
|
|
1891
1933
|
grant_type: "refresh_token",
|