@zackbart/connecta 0.7.6 → 0.7.7
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/CHANGELOG.md +57 -0
- package/dist/activity.d.ts +17 -0
- package/dist/activity.d.ts.map +1 -1
- package/dist/activity.js.map +1 -1
- package/dist/auth/clerk.d.ts.map +1 -1
- package/dist/auth/clerk.js +101 -0
- package/dist/auth/clerk.js.map +1 -1
- package/dist/auth/downstream-oauth.d.ts +57 -20
- package/dist/auth/downstream-oauth.d.ts.map +1 -1
- package/dist/auth/downstream-oauth.js +275 -67
- package/dist/auth/downstream-oauth.js.map +1 -1
- package/dist/connectors/remote-mcp.d.ts.map +1 -1
- package/dist/connectors/remote-mcp.js +165 -103
- package/dist/connectors/remote-mcp.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +12 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +70 -15
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +238 -19
- package/dist/server.js.map +1 -1
- package/dist/storage/file.d.ts.map +1 -1
- package/dist/storage/file.js +8 -0
- package/dist/storage/file.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts +7 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +118 -4
- package/dist/ui.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/activity.ts +20 -0
- package/src/auth/clerk.ts +124 -0
- package/src/auth/downstream-oauth.ts +359 -68
- package/src/connectors/remote-mcp.ts +172 -104
- package/src/index.ts +3 -0
- package/src/registry.ts +79 -19
- package/src/server.ts +306 -16
- package/src/storage/file.ts +7 -0
- package/src/types.ts +23 -0
- package/src/ui.ts +124 -3
- package/src/version.ts +1 -1
package/dist/registry.js
CHANGED
|
@@ -99,6 +99,10 @@ export class Registry {
|
|
|
99
99
|
connectors = new Map();
|
|
100
100
|
cache = new Map();
|
|
101
101
|
invalidated = new Set();
|
|
102
|
+
/** Per-connector epoch preventing a pre-invalidation refresh from publishing. */
|
|
103
|
+
catalogGenerations = new Map();
|
|
104
|
+
/** Serialize persisted catalog set/delete operations within this isolate. */
|
|
105
|
+
catalogMutations = new Map();
|
|
102
106
|
/** Deployment-wide observations — every call, whatever view made it. */
|
|
103
107
|
health = new HealthLog();
|
|
104
108
|
ttlMs;
|
|
@@ -274,14 +278,44 @@ export class Registry {
|
|
|
274
278
|
ttlSeconds: Math.max(60, Math.ceil((this.ttlMs + this.staleMs) / 1000)),
|
|
275
279
|
});
|
|
276
280
|
}
|
|
281
|
+
catalogGeneration(id) {
|
|
282
|
+
return this.catalogGenerations.get(id) ?? 0;
|
|
283
|
+
}
|
|
284
|
+
advanceCatalogGeneration(id) {
|
|
285
|
+
this.catalogGenerations.set(id, this.catalogGeneration(id) + 1);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Keep this isolate's writes and invalidations ordered. Without the queue, an
|
|
289
|
+
* old refresh can finish its storage.set after a credential change deletes
|
|
290
|
+
* the catalog and resurrect the pre-change listing.
|
|
291
|
+
*/
|
|
292
|
+
enqueueCatalogMutation(id, operation) {
|
|
293
|
+
const previous = this.catalogMutations.get(id) ?? Promise.resolve();
|
|
294
|
+
const next = previous.catch(() => { }).then(operation);
|
|
295
|
+
this.catalogMutations.set(id, next);
|
|
296
|
+
void next
|
|
297
|
+
.finally(() => {
|
|
298
|
+
if (this.catalogMutations.get(id) === next) {
|
|
299
|
+
this.catalogMutations.delete(id);
|
|
300
|
+
}
|
|
301
|
+
})
|
|
302
|
+
.catch(() => { });
|
|
303
|
+
return next;
|
|
304
|
+
}
|
|
277
305
|
/** Force a live listTools refresh and replace both catalog cache layers. */
|
|
278
306
|
async refreshTools(id, baseUrl, requestScope, callOptions = {}) {
|
|
279
307
|
const connector = this.connectors.get(id);
|
|
280
308
|
if (!connector)
|
|
281
309
|
throw new Error(`Unknown connector "${id}"`);
|
|
310
|
+
const generation = this.catalogGeneration(id);
|
|
282
311
|
const tools = connector.staticTools
|
|
283
312
|
? connector.staticTools
|
|
284
313
|
: await connector.listTools(this.contextFor(id, baseUrl, requestScope, callOptions));
|
|
314
|
+
// The caller that began this refresh may still use its result, but a
|
|
315
|
+
// credential/OAuth change that landed while listTools was in flight means
|
|
316
|
+
// the listing must not enter either shared cache layer.
|
|
317
|
+
if (generation !== this.catalogGeneration(id))
|
|
318
|
+
return tools;
|
|
285
319
|
const now = Date.now();
|
|
286
320
|
const previous = this.cache.get(id);
|
|
287
321
|
const catalogChanged = !previous || JSON.stringify(previous.tools) !== JSON.stringify(tools);
|
|
@@ -294,12 +328,16 @@ export class Registry {
|
|
|
294
328
|
});
|
|
295
329
|
this.invalidated.delete(id);
|
|
296
330
|
if (shouldPersist) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
331
|
+
await this.enqueueCatalogMutation(id, async () => {
|
|
332
|
+
if (generation !== this.catalogGeneration(id))
|
|
333
|
+
return;
|
|
334
|
+
try {
|
|
335
|
+
await this.storeCatalog(id, tools);
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
this.opts.logger.warn(`[connecta] connector "${id}" catalog persistence failed: ${msg(err)}`);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
303
341
|
}
|
|
304
342
|
return tools;
|
|
305
343
|
}
|
|
@@ -311,11 +349,13 @@ export class Registry {
|
|
|
311
349
|
if (connector.staticTools)
|
|
312
350
|
return connector.staticTools;
|
|
313
351
|
const now = Date.now();
|
|
352
|
+
const requestGeneration = this.catalogGeneration(id);
|
|
314
353
|
const hit = this.cache.get(id);
|
|
315
354
|
if (hit && hit.exp > now)
|
|
316
355
|
return hit.tools;
|
|
317
356
|
let stale = hit && hit.staleUntil > now ? hit.tools : undefined;
|
|
318
357
|
if (this.persistToolCatalog && !this.invalidated.has(id)) {
|
|
358
|
+
const generation = this.catalogGeneration(id);
|
|
319
359
|
let persisted = null;
|
|
320
360
|
try {
|
|
321
361
|
persisted = this.validCatalog(await this.opts.storage.get(this.catalogKey(id)));
|
|
@@ -323,6 +363,10 @@ export class Registry {
|
|
|
323
363
|
catch (err) {
|
|
324
364
|
this.opts.logger.warn(`[connecta] connector "${id}" catalog read failed: ${msg(err)}`);
|
|
325
365
|
}
|
|
366
|
+
if (generation !== this.catalogGeneration(id)) {
|
|
367
|
+
persisted = null;
|
|
368
|
+
stale = undefined;
|
|
369
|
+
}
|
|
326
370
|
if (persisted && persisted.staleUntil > now) {
|
|
327
371
|
this.cache.set(id, {
|
|
328
372
|
tools: persisted.tools,
|
|
@@ -338,7 +382,9 @@ export class Registry {
|
|
|
338
382
|
return await this.refreshTools(id, baseUrl, requestScope, callOptions);
|
|
339
383
|
}
|
|
340
384
|
catch (err) {
|
|
341
|
-
if (stale
|
|
385
|
+
if (stale &&
|
|
386
|
+
requestGeneration === this.catalogGeneration(id) &&
|
|
387
|
+
!this.invalidated.has(id)) {
|
|
342
388
|
this.opts.logger.warn(`[connecta] connector "${id}" catalog refresh failed; serving stale catalog: ${msg(err)}`);
|
|
343
389
|
return stale;
|
|
344
390
|
}
|
|
@@ -448,25 +494,34 @@ export class Registry {
|
|
|
448
494
|
}
|
|
449
495
|
/** Drop a connector's cached tool list (e.g. after auth completes). */
|
|
450
496
|
invalidate(id) {
|
|
497
|
+
this.advanceCatalogGeneration(id);
|
|
451
498
|
this.cache.delete(id);
|
|
452
499
|
this.invalidated.add(id);
|
|
453
500
|
if (this.persistToolCatalog) {
|
|
454
|
-
void this.
|
|
455
|
-
|
|
501
|
+
void this.enqueueCatalogMutation(id, async () => {
|
|
502
|
+
try {
|
|
503
|
+
await this.opts.storage.delete(this.catalogKey(id));
|
|
504
|
+
}
|
|
505
|
+
catch (err) {
|
|
506
|
+
this.opts.logger.warn(`[connecta] connector "${id}" catalog invalidation failed: ${msg(err)}`);
|
|
507
|
+
}
|
|
456
508
|
});
|
|
457
509
|
}
|
|
458
510
|
}
|
|
459
511
|
/** Drop both in-memory and persisted tool catalogs. */
|
|
460
512
|
async invalidateStored(id) {
|
|
513
|
+
this.advanceCatalogGeneration(id);
|
|
461
514
|
this.cache.delete(id);
|
|
462
515
|
this.invalidated.add(id);
|
|
463
516
|
if (this.persistToolCatalog) {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
517
|
+
await this.enqueueCatalogMutation(id, async () => {
|
|
518
|
+
try {
|
|
519
|
+
await this.opts.storage.delete(this.catalogKey(id));
|
|
520
|
+
}
|
|
521
|
+
catch (err) {
|
|
522
|
+
this.opts.logger.warn(`[connecta] connector "${id}" catalog invalidation failed: ${msg(err)}`);
|
|
523
|
+
}
|
|
524
|
+
});
|
|
470
525
|
}
|
|
471
526
|
}
|
|
472
527
|
}
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,EAGV,gBAAgB,EAGhB,aAAa,EACd,MAAM,eAAe,CAAC;AAOvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAkB,KAAK,QAAQ,EAAqB,MAAM,eAAe,CAAC;AACjF,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAKV,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,MAAM,EAEP,MAAM,YAAY,CAAC;AAEpB,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,yBAAyB,CAAC;AAoDjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,UAAU,EAAE,qBAAqB,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,2EAA2E;IAC3E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AA0wCD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,GAClB,CACD,OAAO,EAAE,OAAO,EAChB,cAAc,CAAC,EAAE,uBAAuB,KACrC,OAAO,CAAC,QAAQ,CAAC,CA2arB;AAED,UAAU,uBAAuB;IAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5C"}
|
package/dist/server.js
CHANGED
|
@@ -9,7 +9,9 @@ import { ScopedRegistry } from "./registry.js";
|
|
|
9
9
|
import { resolveIdentityBinding, TOOLKIT_NAME_RE, } from "./toolkits.js";
|
|
10
10
|
import { CONNECTA_FAVICON_ICO } from "./favicon.js";
|
|
11
11
|
import { ExecutorAdmissionError, isAdmittingExecutor, } from "./executor-admission.js";
|
|
12
|
-
import { buildUiData, CONNECTA_FAVICON_SVG, credentialManagementCapability, operatorPageForPath, resolveBranding, renderUiHtml, } from "./ui.js";
|
|
12
|
+
import { buildUiData, CONNECTA_FAVICON_SVG, credentialManagementCapability, isSafeHttpUrl, operatorPageForPath, resolveBranding, renderUiHtml, } from "./ui.js";
|
|
13
|
+
import { oauthValueStorageKey } from "./auth/downstream-oauth.js";
|
|
14
|
+
import { closeConnectorScope, } from "./connector-scope.js";
|
|
13
15
|
const CORS_HEADERS = {
|
|
14
16
|
"Access-Control-Allow-Origin": "*",
|
|
15
17
|
"Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
|
|
@@ -159,11 +161,15 @@ async function authorize(request, baseUrl, auth, logger) {
|
|
|
159
161
|
"which toolkits the identity may use.");
|
|
160
162
|
return { ok: false, response: unusableBinding() };
|
|
161
163
|
}
|
|
164
|
+
const actorNamespace = activityActorNamespace(provider);
|
|
162
165
|
return {
|
|
163
166
|
ok: true,
|
|
164
167
|
actor: {
|
|
165
168
|
kind: provider.kind,
|
|
166
169
|
...(subjectId ? { id: subjectId } : {}),
|
|
170
|
+
...(subjectId && actorNamespace
|
|
171
|
+
? { namespace: actorNamespace }
|
|
172
|
+
: {}),
|
|
167
173
|
},
|
|
168
174
|
...(result.userId && provider.uiAuth?.kind === "clerk"
|
|
169
175
|
? { uiAdminEligible: true }
|
|
@@ -318,10 +324,10 @@ function withSecurityHeaders(response, requestUrl, path) {
|
|
|
318
324
|
headers,
|
|
319
325
|
});
|
|
320
326
|
}
|
|
321
|
-
async function authorizeUiAdmin(request, baseUrl, auth, logger) {
|
|
322
|
-
//
|
|
327
|
+
async function authorizeUiAdmin(request, baseUrl, auth, logger, purpose = "credential management") {
|
|
328
|
+
// Operator mutation is intentionally narrower than /mcp and /ui/data: only
|
|
323
329
|
// an interactive Clerk provider may admit it. A static bearer token is useful
|
|
324
|
-
// for headless tool calls but must not become a
|
|
330
|
+
// for headless tool calls but must not become a deployment-admin key.
|
|
325
331
|
//
|
|
326
332
|
// EVERY Clerk provider gets a turn, the way the /mcp gate does, because the
|
|
327
333
|
// documented per-team pattern is several `clerkAuth(...)`s that differ only in
|
|
@@ -334,7 +340,7 @@ async function authorizeUiAdmin(request, baseUrl, auth, logger) {
|
|
|
334
340
|
if (providers.length === 0) {
|
|
335
341
|
return {
|
|
336
342
|
ok: false,
|
|
337
|
-
response: privateJson({ error:
|
|
343
|
+
response: privateJson({ error: `${purpose} requires Clerk authentication` }, { status: 403 }),
|
|
338
344
|
};
|
|
339
345
|
}
|
|
340
346
|
let lastResponse = null;
|
|
@@ -350,7 +356,7 @@ async function authorizeUiAdmin(request, baseUrl, auth, logger) {
|
|
|
350
356
|
}
|
|
351
357
|
const binding = resolveIdentityBinding(provider.toolkitBinding, result.toolkitBinding);
|
|
352
358
|
if (!binding.ok) {
|
|
353
|
-
logger.warn(`[connecta] refused
|
|
359
|
+
logger.warn(`[connecta] refused an operator-mutation request admitted by inbound auth ` +
|
|
354
360
|
`provider "${provider.kind}" with 403: ${binding.reason}.`);
|
|
355
361
|
lastResponse = unusableBinding();
|
|
356
362
|
continue;
|
|
@@ -521,7 +527,7 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
521
527
|
const metadata = input.input.kind === "single"
|
|
522
528
|
? await opts.credentialVault.set(connectorId, input.input.value, admin.userId)
|
|
523
529
|
: await opts.credentialVault.setAll(connectorId, input.input.values, admin.userId);
|
|
524
|
-
opts.registry.
|
|
530
|
+
await opts.registry.invalidateStored(connectorId);
|
|
525
531
|
// The credential the last verdict judged is gone; judging its replacement
|
|
526
532
|
// is the next check's job, not this one's.
|
|
527
533
|
await opts.registry.clearCredentialHealth(connectorId);
|
|
@@ -533,7 +539,7 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
533
539
|
}
|
|
534
540
|
if (request.method === "DELETE") {
|
|
535
541
|
await opts.credentialVault.delete(connectorId);
|
|
536
|
-
opts.registry.
|
|
542
|
+
await opts.registry.invalidateStored(connectorId);
|
|
537
543
|
await opts.registry.clearCredentialHealth(connectorId);
|
|
538
544
|
return new Response(null, {
|
|
539
545
|
status: 204,
|
|
@@ -545,6 +551,79 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
545
551
|
}
|
|
546
552
|
return privateJson({ error: "method not allowed" }, { status: 405 });
|
|
547
553
|
}
|
|
554
|
+
async function handleOAuthManagementRequest(request, connectorId, opts, baseUrl, defer) {
|
|
555
|
+
if (!isSameOrigin(request, baseUrl)) {
|
|
556
|
+
return privateJson({ error: "same-origin request required" }, { status: 403 });
|
|
557
|
+
}
|
|
558
|
+
const admin = await authorizeUiAdmin(request, baseUrl, opts.auth, opts.logger, "OAuth management");
|
|
559
|
+
if (!admin.ok)
|
|
560
|
+
return admin.response;
|
|
561
|
+
const connector = opts.registry.getConnector(connectorId);
|
|
562
|
+
if (!connector?.disconnectAuth || !connector.startAuth) {
|
|
563
|
+
return privateJson({ error: "unknown OAuth connector" }, { status: 404 });
|
|
564
|
+
}
|
|
565
|
+
if (request.method !== "DELETE" && request.method !== "POST") {
|
|
566
|
+
return privateJson({ error: "method not allowed" }, { status: 405 });
|
|
567
|
+
}
|
|
568
|
+
const requestScope = {};
|
|
569
|
+
const ctx = opts.registry.contextFor(connectorId, baseUrl, requestScope);
|
|
570
|
+
try {
|
|
571
|
+
let result;
|
|
572
|
+
let operationError;
|
|
573
|
+
try {
|
|
574
|
+
if (request.method === "DELETE") {
|
|
575
|
+
await connector.disconnectAuth(ctx);
|
|
576
|
+
}
|
|
577
|
+
else {
|
|
578
|
+
result = await connector.startAuth(ctx, { force: true });
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
catch (error) {
|
|
582
|
+
operationError = error;
|
|
583
|
+
}
|
|
584
|
+
// The old grant and its catalog verdict are invalid after either operation,
|
|
585
|
+
// including a partially failed physical cleanup whose epoch fence succeeded.
|
|
586
|
+
try {
|
|
587
|
+
await opts.registry.invalidateStored(connectorId);
|
|
588
|
+
await opts.registry.clearCredentialHealth(connectorId);
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
operationError ??= error;
|
|
592
|
+
}
|
|
593
|
+
if (operationError) {
|
|
594
|
+
return privateJson({ error: msg(operationError) }, { status: 400 });
|
|
595
|
+
}
|
|
596
|
+
if (request.method === "DELETE") {
|
|
597
|
+
return new Response(null, {
|
|
598
|
+
status: 204,
|
|
599
|
+
headers: {
|
|
600
|
+
"Cache-Control": "no-store",
|
|
601
|
+
"Referrer-Policy": "no-referrer",
|
|
602
|
+
},
|
|
603
|
+
});
|
|
604
|
+
}
|
|
605
|
+
const authorizationUrl = isSafeHttpUrl(result.authorizationUrl)
|
|
606
|
+
? result.authorizationUrl
|
|
607
|
+
: undefined;
|
|
608
|
+
if (result.state === "error") {
|
|
609
|
+
return privateJson({ error: result.message || "OAuth authorization could not start" }, { status: 502 });
|
|
610
|
+
}
|
|
611
|
+
if (result.state === "auth_required" && !authorizationUrl) {
|
|
612
|
+
return privateJson({
|
|
613
|
+
error: result.message ||
|
|
614
|
+
"OAuth authorization requires consent but no safe URL is available",
|
|
615
|
+
}, { status: 502 });
|
|
616
|
+
}
|
|
617
|
+
return privateJson({
|
|
618
|
+
state: result.state,
|
|
619
|
+
...(result.message ? { message: result.message } : {}),
|
|
620
|
+
...(authorizationUrl ? { authorizationUrl } : {}),
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
finally {
|
|
624
|
+
await closeConnectorScope(connector, ctx, defer);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
548
627
|
/** Length beyond which a rejected toolkit name is not echoed back. */
|
|
549
628
|
const MAX_ECHOED_TOOLKIT_NAME = 64;
|
|
550
629
|
/**
|
|
@@ -594,6 +673,138 @@ function toolkitForbidden() {
|
|
|
594
673
|
function identityLabel(actor) {
|
|
595
674
|
return actor.id ? `${actor.kind} ${loggableValue(actor.id)}` : actor.kind;
|
|
596
675
|
}
|
|
676
|
+
const ACTIVITY_ACTOR_NAMESPACE_RE = /^[\x21-\x7e]{1,256}$/;
|
|
677
|
+
const ACTIVITY_LABEL_CONCURRENCY = 8;
|
|
678
|
+
const ACTIVITY_LABEL_PAGE_BUDGET_MS = 1_500;
|
|
679
|
+
const ACTIVITY_LABEL_MAX_LENGTH = 160;
|
|
680
|
+
function activityActorNamespace(provider) {
|
|
681
|
+
return typeof provider.activityActorNamespace === "string" &&
|
|
682
|
+
ACTIVITY_ACTOR_NAMESPACE_RE.test(provider.activityActorNamespace)
|
|
683
|
+
? provider.activityActorNamespace
|
|
684
|
+
: undefined;
|
|
685
|
+
}
|
|
686
|
+
function cleanActivityActorLabel(value) {
|
|
687
|
+
if (typeof value !== "string")
|
|
688
|
+
return undefined;
|
|
689
|
+
const compact = value.replace(/\s+/gu, " ").trim();
|
|
690
|
+
if (!compact)
|
|
691
|
+
return undefined;
|
|
692
|
+
return Array.from(compact).slice(0, ACTIVITY_LABEL_MAX_LENGTH).join("");
|
|
693
|
+
}
|
|
694
|
+
async function boundedActivityActorLabel(hook, id, budgetMs) {
|
|
695
|
+
let timer;
|
|
696
|
+
try {
|
|
697
|
+
return await Promise.race([
|
|
698
|
+
Promise.resolve(hook(id))
|
|
699
|
+
.then(cleanActivityActorLabel)
|
|
700
|
+
.catch(() => undefined),
|
|
701
|
+
new Promise((resolve) => {
|
|
702
|
+
timer = setTimeout(resolve, budgetMs);
|
|
703
|
+
}),
|
|
704
|
+
]);
|
|
705
|
+
}
|
|
706
|
+
catch {
|
|
707
|
+
return undefined;
|
|
708
|
+
}
|
|
709
|
+
finally {
|
|
710
|
+
if (timer !== undefined)
|
|
711
|
+
clearTimeout(timer);
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
/**
|
|
715
|
+
* Add display-only actor labels to one authorized activity page. Resolution is
|
|
716
|
+
* best-effort, bounded, and read-time only: stored events retain stable ids and
|
|
717
|
+
* a profile-provider outage falls back to those ids without failing the page.
|
|
718
|
+
*/
|
|
719
|
+
async function enrichActivityActorLabels(page, auth) {
|
|
720
|
+
const identities = new Map();
|
|
721
|
+
for (const event of page.events) {
|
|
722
|
+
if (!event.actor.id)
|
|
723
|
+
continue;
|
|
724
|
+
identities.set(JSON.stringify([
|
|
725
|
+
event.actor.kind,
|
|
726
|
+
event.actor.namespace,
|
|
727
|
+
event.actor.id,
|
|
728
|
+
]), {
|
|
729
|
+
kind: event.actor.kind,
|
|
730
|
+
id: event.actor.id,
|
|
731
|
+
...(event.actor.namespace
|
|
732
|
+
? { namespace: event.actor.namespace }
|
|
733
|
+
: {}),
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
const queue = [...identities.entries()];
|
|
737
|
+
const labels = new Map();
|
|
738
|
+
let next = 0;
|
|
739
|
+
const deadline = Date.now() + ACTIVITY_LABEL_PAGE_BUDGET_MS;
|
|
740
|
+
const workers = Array.from({ length: Math.min(ACTIVITY_LABEL_CONCURRENCY, queue.length) }, async () => {
|
|
741
|
+
while (next < queue.length) {
|
|
742
|
+
const [key, identity] = queue[next++];
|
|
743
|
+
const sameKindProviders = auth
|
|
744
|
+
.map((provider, index) => ({ provider, index }))
|
|
745
|
+
.filter(({ provider }) => provider.kind === identity.kind);
|
|
746
|
+
const candidates = sameKindProviders.filter(({ provider }) => Boolean(provider.activityActorLabel));
|
|
747
|
+
const eligible = identity.namespace
|
|
748
|
+
? candidates.filter(({ provider }) => activityActorNamespace(provider) === identity.namespace)
|
|
749
|
+
: (() => {
|
|
750
|
+
const directoryKey = ({ provider, index, }) => {
|
|
751
|
+
const namespace = activityActorNamespace(provider);
|
|
752
|
+
return namespace === undefined
|
|
753
|
+
? `provider:${index}`
|
|
754
|
+
: `namespace:${namespace}`;
|
|
755
|
+
};
|
|
756
|
+
// Every same-kind provider participates in the ambiguity check,
|
|
757
|
+
// even if it cannot resolve labels. Otherwise a legacy ID owned
|
|
758
|
+
// by a provider without a resolver could be disclosed to a
|
|
759
|
+
// different provider that happens to have one.
|
|
760
|
+
const directories = new Set(sameKindProviders.map(directoryKey));
|
|
761
|
+
if (directories.size !== 1)
|
|
762
|
+
return [];
|
|
763
|
+
const [directory] = directories;
|
|
764
|
+
return candidates.filter((candidate) => directoryKey(candidate) === directory);
|
|
765
|
+
})();
|
|
766
|
+
// One namespace is one directory. Use its first configured resolver so
|
|
767
|
+
// duplicate gate adapters over the same Clerk instance do not multiply
|
|
768
|
+
// the provider-level concurrency cap.
|
|
769
|
+
const provider = eligible[0]?.provider;
|
|
770
|
+
if (!provider)
|
|
771
|
+
continue;
|
|
772
|
+
const remaining = deadline - Date.now();
|
|
773
|
+
if (remaining <= 0)
|
|
774
|
+
return;
|
|
775
|
+
const label = await boundedActivityActorLabel(provider.activityActorLabel.bind(provider), identity.id, remaining);
|
|
776
|
+
if (label) {
|
|
777
|
+
labels.set(key, label);
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
});
|
|
781
|
+
await Promise.all(workers);
|
|
782
|
+
return {
|
|
783
|
+
...page,
|
|
784
|
+
events: page.events.map((event) => {
|
|
785
|
+
const resolved = event.actor.id
|
|
786
|
+
? labels.get(JSON.stringify([
|
|
787
|
+
event.actor.kind,
|
|
788
|
+
event.actor.namespace,
|
|
789
|
+
event.actor.id,
|
|
790
|
+
]))
|
|
791
|
+
: undefined;
|
|
792
|
+
// Never trust or echo a `label` supplied by storage. The persisted event
|
|
793
|
+
// schema has no label; only this authenticated read path may add one.
|
|
794
|
+
const actor = {
|
|
795
|
+
kind: event.actor.kind,
|
|
796
|
+
...(event.actor.id ? { id: event.actor.id } : {}),
|
|
797
|
+
...(event.actor.namespace
|
|
798
|
+
? { namespace: event.actor.namespace }
|
|
799
|
+
: {}),
|
|
800
|
+
};
|
|
801
|
+
return {
|
|
802
|
+
...event,
|
|
803
|
+
actor: resolved ? { ...actor, label: resolved } : actor,
|
|
804
|
+
};
|
|
805
|
+
}),
|
|
806
|
+
};
|
|
807
|
+
}
|
|
597
808
|
/**
|
|
598
809
|
* Resolve `?toolkit=<name>` into the registry view this connection may see,
|
|
599
810
|
* enforcing the caller's toolkit binding (docs/toolkits.md) on the way.
|
|
@@ -763,17 +974,16 @@ async function serveMcp(request, opts, baseUrl, actor, scope, runtimeContext) {
|
|
|
763
974
|
* paths that would otherwise pay nothing.
|
|
764
975
|
*
|
|
765
976
|
* Identical bodies do not hide a connector id if the clock still sorts them.
|
|
766
|
-
* `KvOAuthProvider.verifyState` reads `oauth:state`
|
|
767
|
-
*
|
|
768
|
-
*
|
|
769
|
-
*
|
|
770
|
-
*
|
|
771
|
-
*
|
|
772
|
-
* `conn:<id>:` namespace, which for an unconfigured id is simply a miss.
|
|
977
|
+
* `KvOAuthProvider.verifyState` reads `oauth:state` and its generation before
|
|
978
|
+
* it can reject a mismatched value, so a configured id costs two storage round
|
|
979
|
+
* trips on the ordinary path while an id naming nothing used to touch no I/O.
|
|
980
|
+
* That gap is an oracle: sample the two and a wordlist recovers the connector
|
|
981
|
+
* list the flat 400 was meant to withhold. So zero-I/O refusals read the same
|
|
982
|
+
* keys in the same `conn:<id>:` namespace, where an unconfigured id gets misses.
|
|
773
983
|
*
|
|
774
984
|
* This is deliberately *not* a constant-time claim, and docs/connectors.md says
|
|
775
985
|
* so in prose: a hit and a miss are not identical in a KV store, and a connector
|
|
776
|
-
* shipping its own `verifyState` may do more or less work
|
|
986
|
+
* shipping its own `verifyState` may do more or less work. What it
|
|
777
987
|
* removes is the order-of-magnitude "no I/O versus a round trip" difference,
|
|
778
988
|
* which is the only part of the signal that makes enumeration cheap.
|
|
779
989
|
*
|
|
@@ -783,7 +993,8 @@ async function serveMcp(request, opts, baseUrl, actor, scope, runtimeContext) {
|
|
|
783
993
|
*/
|
|
784
994
|
async function equalizeRefusalCost(context) {
|
|
785
995
|
try {
|
|
786
|
-
await context.storage.get("oauth:
|
|
996
|
+
const generation = await context.storage.get("oauth:generation");
|
|
997
|
+
await context.storage.get(oauthValueStorageKey("oauth:state", generation));
|
|
787
998
|
}
|
|
788
999
|
catch {
|
|
789
1000
|
// Deliberately ignored — see above.
|
|
@@ -950,6 +1161,13 @@ export function createFetchHandler(opts) {
|
|
|
950
1161
|
}
|
|
951
1162
|
return handleCredentialRequest(request, credentialMatch[1], credentialMatch[2], opts, baseUrl);
|
|
952
1163
|
}
|
|
1164
|
+
const oauthManagementMatch = /^\/ui\/oauth\/([a-z0-9_-]+)$/.exec(path);
|
|
1165
|
+
if (oauthManagementMatch) {
|
|
1166
|
+
if (request.method === "OPTIONS") {
|
|
1167
|
+
return privateJson({ error: "method not allowed" }, { status: 405 });
|
|
1168
|
+
}
|
|
1169
|
+
return handleOAuthManagementRequest(request, oauthManagementMatch[1], opts, baseUrl, defer);
|
|
1170
|
+
}
|
|
953
1171
|
if (request.method === "OPTIONS") {
|
|
954
1172
|
for (const a of auth) {
|
|
955
1173
|
if (a.handleMetadata) {
|
|
@@ -1076,7 +1294,7 @@ export function createFetchHandler(opts) {
|
|
|
1076
1294
|
const data = await buildUiData(registry, baseUrl, serverInfo,
|
|
1077
1295
|
// The static headless bearer may read connector health, but only a
|
|
1078
1296
|
// Clerk-authenticated operator receives credential metadata.
|
|
1079
|
-
eligibleClerkOperator ? opts.credentialVault : undefined, Boolean(opts.activity?.list), credentialManagement, opts.toolkits, defer);
|
|
1297
|
+
eligibleClerkOperator ? opts.credentialVault : undefined, Boolean(opts.activity?.list), credentialManagement, opts.toolkits, defer, eligibleClerkOperator);
|
|
1080
1298
|
return privateJson(data);
|
|
1081
1299
|
}
|
|
1082
1300
|
if (path === "/ui/activity") {
|
|
@@ -1105,7 +1323,8 @@ export function createFetchHandler(opts) {
|
|
|
1105
1323
|
? Math.min(100, Math.max(1, Math.trunc(requestedLimit)))
|
|
1106
1324
|
: 50;
|
|
1107
1325
|
try {
|
|
1108
|
-
|
|
1326
|
+
const page = await opts.activity.list({ cursor, limit });
|
|
1327
|
+
return privateJson(await enrichActivityActorLabels(page, auth));
|
|
1109
1328
|
}
|
|
1110
1329
|
catch (error) {
|
|
1111
1330
|
if (error instanceof InvalidActivityCursorError) {
|