@zackbart/connecta 0.5.0 → 0.6.0
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 +358 -0
- package/README.md +53 -12
- package/dist/auth/bearer.d.ts +10 -3
- package/dist/auth/bearer.d.ts.map +1 -1
- package/dist/auth/bearer.js +21 -0
- package/dist/auth/bearer.js.map +1 -1
- package/dist/auth/clerk.d.ts +26 -1
- package/dist/auth/clerk.d.ts.map +1 -1
- package/dist/auth/clerk.js +161 -4
- package/dist/auth/clerk.js.map +1 -1
- package/dist/connectors/remote-mcp.d.ts.map +1 -1
- package/dist/connectors/remote-mcp.js +8 -0
- package/dist/connectors/remote-mcp.js.map +1 -1
- package/dist/credential-health.d.ts +212 -0
- package/dist/credential-health.d.ts.map +1 -0
- package/dist/credential-health.js +535 -0
- package/dist/credential-health.js.map +1 -0
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +16 -4
- package/dist/execute.js.map +1 -1
- package/dist/index.d.ts +46 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +96 -13
- package/dist/index.js.map +1 -1
- package/dist/meta-tools.d.ts +56 -5
- package/dist/meta-tools.d.ts.map +1 -1
- package/dist/meta-tools.js +249 -92
- package/dist/meta-tools.js.map +1 -1
- package/dist/registry.d.ts +62 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +85 -1
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +292 -37
- package/dist/server.js.map +1 -1
- package/dist/skills.d.ts +1 -1
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +1 -1
- package/dist/timeout.d.ts +16 -0
- package/dist/timeout.d.ts.map +1 -0
- package/dist/timeout.js +38 -0
- package/dist/timeout.js.map +1 -0
- package/dist/toolkits.d.ts +95 -1
- package/dist/toolkits.d.ts.map +1 -1
- package/dist/toolkits.js +190 -5
- package/dist/toolkits.js.map +1 -1
- package/dist/types.d.ts +70 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts +35 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +87 -3
- 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/auth/bearer.ts +35 -1
- package/src/auth/clerk.ts +202 -5
- package/src/connectors/remote-mcp.ts +9 -0
- package/src/credential-health.ts +736 -0
- package/src/execute.ts +28 -4
- package/src/index.ts +176 -20
- package/src/meta-tools.ts +286 -109
- package/src/registry.ts +125 -1
- package/src/server.ts +349 -34
- package/src/skills.ts +1 -1
- package/src/timeout.ts +49 -0
- package/src/toolkits.ts +241 -6
- package/src/types.ts +76 -1
- package/src/ui.ts +98 -3
- package/src/version.ts +1 -1
package/dist/server.js
CHANGED
|
@@ -5,7 +5,7 @@ import { registerMetaTools } from "./meta-tools.js";
|
|
|
5
5
|
import { CONNECTA_INSTRUCTIONS } from "./skills.js";
|
|
6
6
|
import { InvalidActivityCursorError } from "./activity.js";
|
|
7
7
|
import { ScopedRegistry } from "./registry.js";
|
|
8
|
-
import { TOOLKIT_NAME_RE } from "./toolkits.js";
|
|
8
|
+
import { resolveIdentityBinding, TOOLKIT_NAME_RE, } from "./toolkits.js";
|
|
9
9
|
import { CONNECTA_FAVICON_ICO } from "./favicon.js";
|
|
10
10
|
import { buildUiData, CONNECTA_FAVICON_SVG, resolveBranding, renderUiHtml, } from "./ui.js";
|
|
11
11
|
const CORS_HEADERS = {
|
|
@@ -13,6 +13,33 @@ const CORS_HEADERS = {
|
|
|
13
13
|
"Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
|
|
14
14
|
"Access-Control-Allow-Headers": "Content-Type, Authorization, mcp-protocol-version, mcp-session-id",
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Headers that make an operator-supplied favicon body inert on this origin.
|
|
18
|
+
* The SVG route is the sharp one: `image/svg+xml` is an *active* content type,
|
|
19
|
+
* so a `<script>` inside a branding SVG would run on the deployment origin the
|
|
20
|
+
* moment anyone navigated straight to `/favicon.svg` — strictly more powerful
|
|
21
|
+
* than the `favicon.href` vector the branding gates close, because the payload
|
|
22
|
+
* is same-origin. Neutralizing the response rather than inspecting the body
|
|
23
|
+
* keeps every valid static SVG (the built-in mark included) byte-identical:
|
|
24
|
+
*
|
|
25
|
+
* - `sandbox` (no tokens ⇒ every restriction) drops the document into an opaque
|
|
26
|
+
* origin with scripting off, so even a script that ran would have nothing to
|
|
27
|
+
* reach.
|
|
28
|
+
* - `default-src 'none'` denies script, network, and framing outright.
|
|
29
|
+
* - `style-src 'unsafe-inline'` is the single allowance: the default mark styles
|
|
30
|
+
* itself inline to follow the OS colour scheme, and CSS cannot script.
|
|
31
|
+
* - `nosniff` keeps the declared type authoritative in both directions — an SVG
|
|
32
|
+
* can never be re-read as HTML, and `.ico` bytes can never be re-read as SVG.
|
|
33
|
+
*
|
|
34
|
+
* `.ico` bodies are deliberately in scope: they are inert bytes rather than
|
|
35
|
+
* active content, so they are still served verbatim, but they carry the same
|
|
36
|
+
* headers so the invariant is "every favicon route is neutralized" rather than
|
|
37
|
+
* "whichever route got attention".
|
|
38
|
+
*/
|
|
39
|
+
const INERT_ICON_HEADERS = {
|
|
40
|
+
"Content-Security-Policy": "default-src 'none'; style-src 'unsafe-inline'; sandbox",
|
|
41
|
+
"X-Content-Type-Options": "nosniff",
|
|
42
|
+
};
|
|
16
43
|
function msg(err) {
|
|
17
44
|
return err instanceof Error ? err.message : String(err);
|
|
18
45
|
}
|
|
@@ -99,7 +126,16 @@ function html(body, status = 200, branding) {
|
|
|
99
126
|
</body>
|
|
100
127
|
</html>`, { status, headers: { "Content-Type": "text/html; charset=utf-8" } });
|
|
101
128
|
}
|
|
102
|
-
|
|
129
|
+
/**
|
|
130
|
+
* Refusal for an identity whose toolkit binding cannot be trusted — a malformed
|
|
131
|
+
* declaration, or a malformed per-identity binding out of `authorize`. The
|
|
132
|
+
* caller is authenticated, so this is a 403, and it is deliberately opaque: the
|
|
133
|
+
* cause is an operator bug, and the operator reads it in the log, not the client.
|
|
134
|
+
*/
|
|
135
|
+
function unusableBinding() {
|
|
136
|
+
return privateJson({ error: "forbidden" }, { status: 403 });
|
|
137
|
+
}
|
|
138
|
+
async function authorize(request, baseUrl, auth, logger) {
|
|
103
139
|
if (auth.length === 0) {
|
|
104
140
|
return { ok: true, actor: { kind: "anonymous" } };
|
|
105
141
|
}
|
|
@@ -108,6 +144,19 @@ async function authorize(request, baseUrl, auth) {
|
|
|
108
144
|
const result = await provider.authorize(request, baseUrl);
|
|
109
145
|
if (result.ok) {
|
|
110
146
|
const subjectId = result.subjectId ?? result.userId;
|
|
147
|
+
// Re-validate both halves and cap the per-identity one by the provider's
|
|
148
|
+
// declaration (see resolveIdentityBinding). A binding that does not
|
|
149
|
+
// type-check at runtime refuses the request rather than evaporating:
|
|
150
|
+
// dropping it would hand the caller the full registry, which is the one
|
|
151
|
+
// outcome a binding exists to prevent.
|
|
152
|
+
const binding = resolveIdentityBinding(provider.toolkitBinding, result.toolkitBinding);
|
|
153
|
+
if (!binding.ok) {
|
|
154
|
+
logger.warn(`[connecta] refused a request admitted by inbound auth provider ` +
|
|
155
|
+
`"${provider.kind}" with 403: ${binding.reason}. Until it is fixed ` +
|
|
156
|
+
"this provider cannot admit anyone, because connecta cannot tell " +
|
|
157
|
+
"which toolkits the identity may use.");
|
|
158
|
+
return { ok: false, response: unusableBinding() };
|
|
159
|
+
}
|
|
111
160
|
return {
|
|
112
161
|
ok: true,
|
|
113
162
|
actor: {
|
|
@@ -116,6 +165,7 @@ async function authorize(request, baseUrl, auth) {
|
|
|
116
165
|
},
|
|
117
166
|
providerKind: provider.kind,
|
|
118
167
|
...(result.userId ? { userId: result.userId } : {}),
|
|
168
|
+
...(binding.binding ? { toolkitBinding: binding.binding } : {}),
|
|
119
169
|
};
|
|
120
170
|
}
|
|
121
171
|
lastResponse = result.response;
|
|
@@ -176,27 +226,56 @@ function withSecurityHeaders(response, requestUrl, path) {
|
|
|
176
226
|
headers,
|
|
177
227
|
});
|
|
178
228
|
}
|
|
179
|
-
async function authorizeUiAdmin(request, baseUrl, auth) {
|
|
180
|
-
// Credential mutation is intentionally narrower than /mcp and /ui/data:
|
|
181
|
-
//
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
|
|
229
|
+
async function authorizeUiAdmin(request, baseUrl, auth, logger) {
|
|
230
|
+
// Credential mutation is intentionally narrower than /mcp and /ui/data: only
|
|
231
|
+
// an interactive Clerk provider may admit it. A static bearer token is useful
|
|
232
|
+
// for headless tool calls but must not become a vault-admin key.
|
|
233
|
+
//
|
|
234
|
+
// EVERY Clerk provider gets a turn, the way the /mcp gate does, because the
|
|
235
|
+
// documented per-team pattern is several `clerkAuth(...)`s that differ only in
|
|
236
|
+
// `gate` and `toolkits` (§16). Stopping at the first would make admission
|
|
237
|
+
// depend on config order: the team-bound provider listed first would refuse
|
|
238
|
+
// the operator outright, and a refusal here — a failed gate, a missing user, a
|
|
239
|
+
// toolkit-bound identity — is exactly the case where a later provider is the
|
|
240
|
+
// one meant to admit. The last refusal is returned if none do.
|
|
241
|
+
const providers = auth.filter((candidate) => candidate.uiAuth?.kind === "clerk");
|
|
242
|
+
if (providers.length === 0) {
|
|
185
243
|
return {
|
|
186
244
|
ok: false,
|
|
187
245
|
response: privateJson({ error: "credential management requires Clerk authentication" }, { status: 403 }),
|
|
188
246
|
};
|
|
189
247
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
248
|
+
let lastResponse = null;
|
|
249
|
+
for (const provider of providers) {
|
|
250
|
+
const result = await provider.authorize(request, baseUrl);
|
|
251
|
+
if (!result.ok) {
|
|
252
|
+
lastResponse = result.response;
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (!result.userId) {
|
|
256
|
+
lastResponse = privateJson({ error: "authenticated user required" }, { status: 403 });
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
const binding = resolveIdentityBinding(provider.toolkitBinding, result.toolkitBinding);
|
|
260
|
+
if (!binding.ok) {
|
|
261
|
+
logger.warn(`[connecta] refused a credential-API request admitted by inbound auth ` +
|
|
262
|
+
`provider "${provider.kind}" with 403: ${binding.reason}.`);
|
|
263
|
+
lastResponse = unusableBinding();
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
// A toolkit-bound identity is a team's credential, not a vault admin key:
|
|
267
|
+
// credentials are deployment-wide, so writing one reaches every toolkit.
|
|
268
|
+
if (isToolkitRestricted(binding.binding)) {
|
|
269
|
+
lastResponse = restrictedOperatorSurface();
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
return { ok: true, userId: result.userId };
|
|
198
273
|
}
|
|
199
|
-
return {
|
|
274
|
+
return {
|
|
275
|
+
ok: false,
|
|
276
|
+
response: lastResponse ??
|
|
277
|
+
privateJson({ error: "forbidden" }, { status: 403 }),
|
|
278
|
+
};
|
|
200
279
|
}
|
|
201
280
|
function isSameOrigin(request, baseUrl) {
|
|
202
281
|
const origin = request.headers.get("origin");
|
|
@@ -281,7 +360,7 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
281
360
|
if (!isSameOrigin(request, baseUrl)) {
|
|
282
361
|
return privateJson({ error: "same-origin request required" }, { status: 403 });
|
|
283
362
|
}
|
|
284
|
-
const admin = await authorizeUiAdmin(request, baseUrl, opts.auth);
|
|
363
|
+
const admin = await authorizeUiAdmin(request, baseUrl, opts.auth, opts.logger);
|
|
285
364
|
if (!admin.ok)
|
|
286
365
|
return admin.response;
|
|
287
366
|
const connector = opts.registry.getConnector(connectorId);
|
|
@@ -312,6 +391,13 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
312
391
|
}
|
|
313
392
|
result = await connector.testCredential(value, ctx);
|
|
314
393
|
}
|
|
394
|
+
// The operator just ran the very check the liveness sweep runs; record it
|
|
395
|
+
// so the cached status surfaces agree with what /ui just showed them.
|
|
396
|
+
await opts.registry.recordCredentialHealth(connectorId, {
|
|
397
|
+
state: result.ok ? "ok" : "auth_required",
|
|
398
|
+
checkedAt: new Date().toISOString(),
|
|
399
|
+
...(result.message ? { message: result.message } : {}),
|
|
400
|
+
});
|
|
315
401
|
return privateJson(result);
|
|
316
402
|
}
|
|
317
403
|
catch (err) {
|
|
@@ -330,6 +416,9 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
330
416
|
? await opts.credentialVault.set(connectorId, input.input.value, admin.userId)
|
|
331
417
|
: await opts.credentialVault.setAll(connectorId, input.input.values, admin.userId);
|
|
332
418
|
opts.registry.invalidate(connectorId);
|
|
419
|
+
// The credential the last verdict judged is gone; judging its replacement
|
|
420
|
+
// is the next check's job, not this one's.
|
|
421
|
+
await opts.registry.clearCredentialHealth(connectorId);
|
|
333
422
|
return privateJson({ credential: metadata });
|
|
334
423
|
}
|
|
335
424
|
catch (err) {
|
|
@@ -339,6 +428,7 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
339
428
|
if (request.method === "DELETE") {
|
|
340
429
|
await opts.credentialVault.delete(connectorId);
|
|
341
430
|
opts.registry.invalidate(connectorId);
|
|
431
|
+
await opts.registry.clearCredentialHealth(connectorId);
|
|
342
432
|
return new Response(null, {
|
|
343
433
|
status: 204,
|
|
344
434
|
headers: {
|
|
@@ -352,30 +442,128 @@ async function handleCredentialRequest(request, connectorId, action, opts, baseU
|
|
|
352
442
|
/** Length beyond which a rejected toolkit name is not echoed back. */
|
|
353
443
|
const MAX_ECHOED_TOOLKIT_NAME = 64;
|
|
354
444
|
/**
|
|
355
|
-
*
|
|
445
|
+
* Bounded, escaped form of a caller-influenced value (a rejected toolkit name,
|
|
446
|
+
* an identity id) for the operator log. Goes through JSON.stringify so a
|
|
447
|
+
* caller-controlled newline or control character cannot forge a log line, plus a
|
|
448
|
+
* hand-rolled escape for U+2028/U+2029, which JSON.stringify leaves raw even
|
|
449
|
+
* though a log reader treats them as line terminators. Truncated to the same
|
|
450
|
+
* length the response body echoes at, so an oversized value cannot flood the log
|
|
451
|
+
* either.
|
|
452
|
+
*/
|
|
453
|
+
function loggableValue(requested) {
|
|
454
|
+
const bounded = requested.slice(0, MAX_ECHOED_TOOLKIT_NAME);
|
|
455
|
+
const escaped = JSON.stringify(bounded).replace(/[\u2028\u2029]/g, (ch) => `\\u${ch.charCodeAt(0).toString(16)}`);
|
|
456
|
+
return escaped + (bounded.length < requested.length ? " (truncated)" : "");
|
|
457
|
+
}
|
|
458
|
+
/** The one refusal a bound identity ever sees. Constant on purpose — see below. */
|
|
459
|
+
const TOOLKIT_FORBIDDEN_BODY = JSON.stringify({
|
|
460
|
+
jsonrpc: "2.0",
|
|
461
|
+
id: null,
|
|
462
|
+
error: {
|
|
463
|
+
code: -32600,
|
|
464
|
+
message: "Not permitted to use the requested toolkit. This credential is bound " +
|
|
465
|
+
"to a specific toolkit — check the ?toolkit= value in this deployment's " +
|
|
466
|
+
"MCP endpoint URL with the operator.",
|
|
467
|
+
},
|
|
468
|
+
});
|
|
469
|
+
/**
|
|
470
|
+
* 403 for every binding refusal, with a body that does not depend on WHY.
|
|
471
|
+
*
|
|
472
|
+
* A bound identity asking for a toolkit it may not open, for a toolkit that does
|
|
473
|
+
* not exist, or for no toolkit at all gets byte-identical responses, so a team
|
|
474
|
+
* credential cannot be used to enumerate the org's other teams — the boundary
|
|
475
|
+
* would leak the very structure it exists to hide. The operator log below is
|
|
476
|
+
* where the three cases are told apart.
|
|
477
|
+
*/
|
|
478
|
+
function toolkitForbidden() {
|
|
479
|
+
return new Response(TOOLKIT_FORBIDDEN_BODY, {
|
|
480
|
+
status: 403,
|
|
481
|
+
headers: {
|
|
482
|
+
"Content-Type": "application/json",
|
|
483
|
+
"Cache-Control": "no-store",
|
|
484
|
+
},
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
/** How a rejected connection is named in the operator log. */
|
|
488
|
+
function identityLabel(actor) {
|
|
489
|
+
return actor.id ? `${actor.kind} ${loggableValue(actor.id)}` : actor.kind;
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Resolve `?toolkit=<name>` into the registry view this connection may see,
|
|
493
|
+
* enforcing the caller's toolkit binding (§16) on the way.
|
|
494
|
+
*
|
|
495
|
+
* For an UNBOUND identity (no binding configured — the pre-#37 shape):
|
|
356
496
|
*
|
|
357
497
|
* - absent → the full registry, byte-identical to a deployment with no toolkits
|
|
358
|
-
* - known → a `ScopedRegistry` over that toolkit (the one
|
|
498
|
+
* - known → a `ScopedRegistry` over that toolkit (the one visibility boundary)
|
|
359
499
|
* - anything else, including `?toolkit=` with an empty value → an explicit
|
|
360
|
-
*
|
|
500
|
+
* 404. Never a silent fallback to the full registry.
|
|
501
|
+
*
|
|
502
|
+
* For a BOUND identity, membership is checked FIRST and refusal is a flat 403:
|
|
503
|
+
* a toolkit outside the binding, an unknown name, and (without `unscoped`) an
|
|
504
|
+
* omitted `?toolkit=` are all refused before any `ScopedRegistry` is built, and
|
|
505
|
+
* all three produce the same response.
|
|
361
506
|
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
507
|
+
* Neither error enumerates the configured toolkits: the name selects a scope, so
|
|
508
|
+
* a wrong guess gets a flat refusal, not a directory.
|
|
509
|
+
*
|
|
510
|
+
* Because of that — and because SDK clients treat a 404/403 on the transport
|
|
511
|
+
* endpoint as a transport failure and discard the body — every rejection is also
|
|
512
|
+
* logged operator-side (issue #47), which is the channel that actually reaches a
|
|
513
|
+
* human. The log line may name the configured or bound toolkits; the response
|
|
514
|
+
* still may not.
|
|
364
515
|
*/
|
|
365
|
-
function resolveToolkitScope(url, registry, toolkits) {
|
|
516
|
+
function resolveToolkitScope(url, registry, toolkits, logger, identity) {
|
|
366
517
|
const requested = url.searchParams.get("toolkit");
|
|
518
|
+
const binding = identity.binding;
|
|
519
|
+
const scopeFor = (toolkit) => ({
|
|
520
|
+
ok: true,
|
|
521
|
+
scope: {
|
|
522
|
+
registry: new ScopedRegistry(registry, toolkit),
|
|
523
|
+
toolkitId: toolkit.name,
|
|
524
|
+
},
|
|
525
|
+
});
|
|
526
|
+
if (binding) {
|
|
527
|
+
const who = identityLabel(identity.actor);
|
|
528
|
+
const bound = `Bound toolkits: ${binding.toolkits.join(", ") || "(none)"}${binding.unscoped ? ", plus unscoped access" : ""}.`;
|
|
529
|
+
if (requested === null) {
|
|
530
|
+
if (binding.unscoped)
|
|
531
|
+
return { ok: true, scope: { registry } };
|
|
532
|
+
logger.warn(`[connecta] refused an unscoped /mcp connection from ${who} with 403: ` +
|
|
533
|
+
"its toolkit binding does not allow the full registry. " +
|
|
534
|
+
bound +
|
|
535
|
+
" The client sees a transport-level failure and never the reason, so " +
|
|
536
|
+
"give it an MCP endpoint URL with a ?toolkit= value it is bound to.");
|
|
537
|
+
return { ok: false, response: toolkitForbidden() };
|
|
538
|
+
}
|
|
539
|
+
const permitted = binding.toolkits.includes(requested);
|
|
540
|
+
const toolkit = permitted ? toolkits?.get(requested) : undefined;
|
|
541
|
+
if (toolkit)
|
|
542
|
+
return scopeFor(toolkit);
|
|
543
|
+
logger.warn(`[connecta] refused an /mcp connection from ${who} with 403: it asked ` +
|
|
544
|
+
`for toolkit ${loggableValue(requested)}, which ` +
|
|
545
|
+
(permitted
|
|
546
|
+
? "its binding allows but this deployment does not configure"
|
|
547
|
+
: "its toolkit binding does not include") +
|
|
548
|
+
". " +
|
|
549
|
+
bound +
|
|
550
|
+
" The client sees a transport-level failure and never the reason, so " +
|
|
551
|
+
"check the ?toolkit= value in its MCP endpoint URL.");
|
|
552
|
+
return { ok: false, response: toolkitForbidden() };
|
|
553
|
+
}
|
|
367
554
|
if (requested === null)
|
|
368
555
|
return { ok: true, scope: { registry } };
|
|
369
556
|
const toolkit = toolkits?.get(requested);
|
|
370
|
-
if (toolkit)
|
|
371
|
-
return
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
|
|
557
|
+
if (toolkit)
|
|
558
|
+
return scopeFor(toolkit);
|
|
559
|
+
const configured = toolkits && toolkits.size > 0 ? [...toolkits.keys()] : [];
|
|
560
|
+
logger.warn("[connecta] rejected an /mcp connection asking for unknown toolkit " +
|
|
561
|
+
`${loggableValue(requested)} with 404. ` +
|
|
562
|
+
(configured.length > 0
|
|
563
|
+
? `Configured toolkits: ${configured.join(", ")}.`
|
|
564
|
+
: "This deployment configures no toolkits, so no ?toolkit= value is accepted.") +
|
|
565
|
+
" The client sees a transport-level failure and never the reason, so " +
|
|
566
|
+
"check the ?toolkit= value in its MCP endpoint URL.");
|
|
379
567
|
const label = requested.length <= MAX_ECHOED_TOOLKIT_NAME &&
|
|
380
568
|
TOOLKIT_NAME_RE.test(requested)
|
|
381
569
|
? `"${requested}"`
|
|
@@ -399,6 +587,23 @@ function resolveToolkitScope(url, registry, toolkits) {
|
|
|
399
587
|
}),
|
|
400
588
|
};
|
|
401
589
|
}
|
|
590
|
+
/**
|
|
591
|
+
* True when this identity is confined to one or more toolkits — bound, without
|
|
592
|
+
* `unscoped`. Such a credential belongs to a team's agent, not to the operator
|
|
593
|
+
* running the deployment, so the deployment-wide operator surfaces (`/ui/data`,
|
|
594
|
+
* `/ui/activity`, the credential API) refuse it: their payloads describe every
|
|
595
|
+
* connector in the org, which is exactly what the binding exists to withhold.
|
|
596
|
+
*/
|
|
597
|
+
function isToolkitRestricted(binding) {
|
|
598
|
+
return Boolean(binding && !binding.unscoped);
|
|
599
|
+
}
|
|
600
|
+
/** The refusal the deployment-wide operator surfaces give a bound identity. */
|
|
601
|
+
function restrictedOperatorSurface() {
|
|
602
|
+
return privateJson({
|
|
603
|
+
error: "this credential is bound to a toolkit and may not read " +
|
|
604
|
+
"deployment-wide operator data",
|
|
605
|
+
}, { status: 403 });
|
|
606
|
+
}
|
|
402
607
|
async function serveMcp(request, opts, baseUrl, actor, scope, runtimeContext) {
|
|
403
608
|
// Fresh McpServer + transport per request (SDK ≥1.26 requirement), stateless.
|
|
404
609
|
const server = new McpServer(opts.serverInfo, {
|
|
@@ -469,6 +674,10 @@ async function handleOAuthCallback(url, registry, baseUrl, branding) {
|
|
|
469
674
|
try {
|
|
470
675
|
await connector.finishAuth(code, context);
|
|
471
676
|
await registry.invalidateStored(id);
|
|
677
|
+
// Recovery, without a restart: the grant this connector was reported dead
|
|
678
|
+
// for has just been replaced, so drop the verdict rather than let a stale
|
|
679
|
+
// `auth_required` survive until the next scheduled check.
|
|
680
|
+
await registry.clearCredentialHealth(id);
|
|
472
681
|
return html(`Connected "${id}". You can close this window.`, 200, branding);
|
|
473
682
|
}
|
|
474
683
|
catch (err) {
|
|
@@ -482,6 +691,35 @@ export function createFetchHandler(opts) {
|
|
|
482
691
|
const url = new URL(request.url);
|
|
483
692
|
const baseUrl = publicUrl ?? url.origin;
|
|
484
693
|
const path = url.pathname;
|
|
694
|
+
/**
|
|
695
|
+
* Piggyback a DUE credential liveness sweep on traffic that has already been
|
|
696
|
+
* authenticated (issue #24). Started beside the request and never awaited by
|
|
697
|
+
* it: it must not add latency or change a result, so it is handed to
|
|
698
|
+
* `ctx.waitUntil` where the runtime has one (Workers, and the Node adapter's
|
|
699
|
+
* shim) to settle after the response. The registry answers `undefined`
|
|
700
|
+
* unless a sweep is actually due, so the ordinary request pays nothing.
|
|
701
|
+
*/
|
|
702
|
+
const sweepCredentials = () => {
|
|
703
|
+
// Belt and braces: a rejected sweep is already absorbed below, and this
|
|
704
|
+
// catches the synchronous half — arming the gate, or a connector list that
|
|
705
|
+
// throws while deciding whether anything is due. Nothing about a
|
|
706
|
+
// background health check may turn a served request into a 500.
|
|
707
|
+
try {
|
|
708
|
+
const sweep = registry.sweepCredentialHealthIfDue(baseUrl);
|
|
709
|
+
if (!sweep)
|
|
710
|
+
return;
|
|
711
|
+
const settled = sweep.then(() => { }, (err) => {
|
|
712
|
+
opts.logger.warn("[connecta] credential health sweep failed", err);
|
|
713
|
+
});
|
|
714
|
+
if (runtimeContext?.waitUntil)
|
|
715
|
+
runtimeContext.waitUntil(settled);
|
|
716
|
+
else
|
|
717
|
+
void settled;
|
|
718
|
+
}
|
|
719
|
+
catch (err) {
|
|
720
|
+
opts.logger.warn("[connecta] credential health sweep failed", err);
|
|
721
|
+
}
|
|
722
|
+
};
|
|
485
723
|
// Container and orchestrator probes reach /health over plain HTTP on
|
|
486
724
|
// loopback, where no proxy has set X-Forwarded-Proto. Redirecting them to
|
|
487
725
|
// the public origin would make an internal liveness check depend on
|
|
@@ -544,6 +782,7 @@ export function createFetchHandler(opts) {
|
|
|
544
782
|
headers: {
|
|
545
783
|
"Content-Type": "image/svg+xml",
|
|
546
784
|
"Cache-Control": "public, max-age=86400",
|
|
785
|
+
...INERT_ICON_HEADERS,
|
|
547
786
|
},
|
|
548
787
|
});
|
|
549
788
|
}
|
|
@@ -552,6 +791,7 @@ export function createFetchHandler(opts) {
|
|
|
552
791
|
headers: {
|
|
553
792
|
"Content-Type": "image/x-icon",
|
|
554
793
|
"Cache-Control": "public, max-age=86400",
|
|
794
|
+
...INERT_ICON_HEADERS,
|
|
555
795
|
},
|
|
556
796
|
});
|
|
557
797
|
}
|
|
@@ -577,9 +817,15 @@ export function createFetchHandler(opts) {
|
|
|
577
817
|
});
|
|
578
818
|
}
|
|
579
819
|
if (path === "/ui/data") {
|
|
580
|
-
const authz = await authorize(request, baseUrl, auth);
|
|
820
|
+
const authz = await authorize(request, baseUrl, auth, opts.logger);
|
|
581
821
|
if (!authz.ok)
|
|
582
822
|
return authz.response;
|
|
823
|
+
if (isToolkitRestricted(authz.toolkitBinding)) {
|
|
824
|
+
return restrictedOperatorSurface();
|
|
825
|
+
}
|
|
826
|
+
// After the restriction check, not before: an identity that may not
|
|
827
|
+
// read this surface should not get to trigger background work from it.
|
|
828
|
+
sweepCredentials();
|
|
583
829
|
const data = await buildUiData(registry, baseUrl, serverInfo,
|
|
584
830
|
// The static headless bearer may read connector health, but only a
|
|
585
831
|
// Clerk-authenticated operator receives credential metadata.
|
|
@@ -592,9 +838,12 @@ export function createFetchHandler(opts) {
|
|
|
592
838
|
if (request.method !== "GET") {
|
|
593
839
|
return privateJson({ error: "method not allowed" }, { status: 405 });
|
|
594
840
|
}
|
|
595
|
-
const authz = await authorize(request, baseUrl, auth);
|
|
841
|
+
const authz = await authorize(request, baseUrl, auth, opts.logger);
|
|
596
842
|
if (!authz.ok)
|
|
597
843
|
return authz.response;
|
|
844
|
+
if (isToolkitRestricted(authz.toolkitBinding)) {
|
|
845
|
+
return restrictedOperatorSurface();
|
|
846
|
+
}
|
|
598
847
|
if (opts.activityReadGate &&
|
|
599
848
|
!(await opts.activityReadGate(authz.actor))) {
|
|
600
849
|
return privateJson({ error: "forbidden" }, { status: 403 });
|
|
@@ -624,12 +873,18 @@ export function createFetchHandler(opts) {
|
|
|
624
873
|
if (path === "/mcp") {
|
|
625
874
|
// Authenticate BEFORE resolving ?toolkit=: an unauthenticated caller
|
|
626
875
|
// must not be able to probe which toolkit names exist.
|
|
627
|
-
const authz = await authorize(request, baseUrl, auth);
|
|
876
|
+
const authz = await authorize(request, baseUrl, auth, opts.logger);
|
|
628
877
|
if (!authz.ok)
|
|
629
878
|
return withMcpCors(authz.response);
|
|
630
|
-
const selected = resolveToolkitScope(url, registry, opts.toolkits
|
|
879
|
+
const selected = resolveToolkitScope(url, registry, opts.toolkits, opts.logger, {
|
|
880
|
+
actor: authz.actor,
|
|
881
|
+
...(authz.toolkitBinding
|
|
882
|
+
? { binding: authz.toolkitBinding }
|
|
883
|
+
: {}),
|
|
884
|
+
});
|
|
631
885
|
if (!selected.ok)
|
|
632
886
|
return withMcpCors(selected.response);
|
|
887
|
+
sweepCredentials();
|
|
633
888
|
return withMcpCors(await serveMcp(request, opts, baseUrl, authz.actor, selected.scope, runtimeContext));
|
|
634
889
|
}
|
|
635
890
|
// Connector-owned public routes, dispatched last: a connector can add a
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/skills.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Connector } from "./types.js";
|
|
2
2
|
export declare const CONNECTA_INSTRUCTIONS = "Connecta exposes many integrations behind meta-tools. When an address is unknown, start with search_tools and includeSchemas=\"compact\"; use describe_tools only when that schema is insufficient. Use call_tool for one explicitly read-only call, batch_call for 2\u201310 independent explicitly read-only calls, and execute_code (when available) only for dependent read-only steps, loops, joins, or reducing large results. Unannotated, write-capable, and destructive tools must use call_destructive_tool individually. Use authorize_connector only after auth_required and get_result only for truncated results. For the detailed workflow, call skills({ name: \"usage\" }) once per task.";
|
|
3
|
-
export declare const USAGE_SKILL = "# Connecta usage\n\n## Choose the smallest execution tool\n\n- Unknown address: `search_tools({ query, includeSchemas: \"compact\" })`.\n- Schema still unclear: `describe_tools({ addresses: [...] })`.\n- One explicitly read-only call: `call_tool`.\n- Two to ten independent explicitly read-only calls: `batch_call`.\n- Dependent read-only calls, loops, joins, branching, or large-result reduction: `execute_code` when available.\n- Any unannotated, write-capable, or destructive call: `call_destructive_tool`, individually and only after reviewing its schema and consequences.\n- Truncated result: retry with `fields` when possible; otherwise page it with `get_result`.\n- `auth_required`: use `authorize_connector`, have the operator complete consent, then confirm with `list_connectors`.\n\nUse `list_connectors({ probe: false })` for a fast inventory. Use `probe: true` only when diagnosing live health or authorization.\n\n## Code mode\n\nUse code mode when a later call depends on an earlier result, when joining across connectors, or when filtering or aggregating data in the sandbox will substantially shrink the response. Use `Promise.all` or `connecta.batch` for independent calls inside one execution.\n\nDo not use code mode for one straightforward call, for independent calls already handled by `batch_call`, or for any tool not explicitly annotated `readOnlyHint: true`. Code mode has a bounded host-call budget and per-call deadline. Return only the reduced value the agent needs; do not return a large upstream payload unchanged.\n\n## Examples\n\nThese addresses are illustrative; always use the exact address returned by `search_tools`.\n\nSingle call:\n```json\n{ \"address\": \"crm.get_account\", \"args\": { \"id\": \"acct_123\" }, \"resultMode\": \"value\" }\n```\n\nIndependent calls:\n```json\n{ \"calls\": [\n { \"address\": \"crm.get_account\", \"args\": { \"id\": \"acct_123\" } },\n { \"address\": \"billing.list_invoices\", \"args\": { \"status\": \"open\" } }\n] }\n```\n\nDependent code with reduction:\n```js\nasync () => {\n const accounts = await crm.search_accounts({ query: \"renewal\" });\n const details = await Promise.all(\n accounts.results.slice(0, 5).map((account) =>\n crm.get_account({ id: account.id })\n )\n );\n return details.map(({ id, name, status }) => ({ id, name, status }));\n}\n```\n";
|
|
3
|
+
export declare const USAGE_SKILL = "# Connecta usage\n\n## Choose the smallest execution tool\n\n- Unknown address: `search_tools({ query, includeSchemas: \"compact\" })`.\n- Schema still unclear: `describe_tools({ addresses: [...] })`.\n- One explicitly read-only call: `call_tool`.\n- Two to ten independent explicitly read-only calls: `batch_call`.\n- Dependent read-only calls, loops, joins, branching, or large-result reduction: `execute_code` when available.\n- Any unannotated, write-capable, or destructive call: `call_destructive_tool`, individually and only after reviewing its schema and consequences.\n- Truncated result: retry with `fields` when possible; otherwise page it with `get_result`.\n- `auth_required`: use `authorize_connector`, have the operator complete consent, then confirm with `list_connectors`.\n\nUse `list_connectors({ probe: false })` for a fast inventory. Use `probe: true` only when diagnosing live health or authorization. The fast inventory already reports a connector whose stored credential failed a proactive check as `auth_required` (with `credentialCheck` and the URL to open), so trust it and authorize up front rather than probing to confirm.\n\n## Code mode\n\nUse code mode when a later call depends on an earlier result, when joining across connectors, or when filtering or aggregating data in the sandbox will substantially shrink the response. Use `Promise.all` or `connecta.batch` for independent calls inside one execution.\n\nDo not use code mode for one straightforward call, for independent calls already handled by `batch_call`, or for any tool not explicitly annotated `readOnlyHint: true`. Code mode has a bounded host-call budget and per-call deadline. Return only the reduced value the agent needs; do not return a large upstream payload unchanged.\n\n## Examples\n\nThese addresses are illustrative; always use the exact address returned by `search_tools`.\n\nSingle call:\n```json\n{ \"address\": \"crm.get_account\", \"args\": { \"id\": \"acct_123\" }, \"resultMode\": \"value\" }\n```\n\nIndependent calls:\n```json\n{ \"calls\": [\n { \"address\": \"crm.get_account\", \"args\": { \"id\": \"acct_123\" } },\n { \"address\": \"billing.list_invoices\", \"args\": { \"status\": \"open\" } }\n] }\n```\n\nDependent code with reduction:\n```js\nasync () => {\n const accounts = await crm.search_accounts({ query: \"renewal\" });\n const details = await Promise.all(\n accounts.results.slice(0, 5).map((account) =>\n crm.get_account({ id: account.id })\n )\n );\n return details.map(({ id, name, status }) => ({ id, name, status }));\n}\n```\n";
|
|
4
4
|
/**
|
|
5
5
|
* Appended to USAGE_SKILL only when the deployment actually has at least one
|
|
6
6
|
* connector guide. A deployment with none — every deployment that has not
|
package/dist/skills.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,qBAAqB,+qBACmoB,CAAC;AAEtqB,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,qBAAqB,+qBACmoB,CAAC;AAEtqB,eAAO,MAAM,WAAW,4hFAkDvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,odAIpC,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAI5E;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAInE;AAED,eAAO,MAAM,gBAAgB;;;;EAOnB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAGvE;AAwDD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,YAAY,EAAE,CAc3E;AAED,MAAM,MAAM,WAAW,GACrB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,WAAW,CAsCb"}
|
package/dist/skills.js
CHANGED
|
@@ -12,7 +12,7 @@ export const USAGE_SKILL = `# Connecta usage
|
|
|
12
12
|
- Truncated result: retry with \`fields\` when possible; otherwise page it with \`get_result\`.
|
|
13
13
|
- \`auth_required\`: use \`authorize_connector\`, have the operator complete consent, then confirm with \`list_connectors\`.
|
|
14
14
|
|
|
15
|
-
Use \`list_connectors({ probe: false })\` for a fast inventory. Use \`probe: true\` only when diagnosing live health or authorization.
|
|
15
|
+
Use \`list_connectors({ probe: false })\` for a fast inventory. Use \`probe: true\` only when diagnosing live health or authorization. The fast inventory already reports a connector whose stored credential failed a proactive check as \`auth_required\` (with \`credentialCheck\` and the URL to open), so trust it and authorize up front rather than probing to confirm.
|
|
16
16
|
|
|
17
17
|
## Code mode
|
|
18
18
|
|