@zackbart/connecta 0.4.1 → 0.5.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 +169 -0
- package/README.md +40 -5
- package/SECURITY.md +10 -6
- package/dist/activity.d.ts +8 -0
- package/dist/activity.d.ts.map +1 -1
- package/dist/activity.js +1 -0
- package/dist/activity.js.map +1 -1
- package/dist/connectors/api.d.ts +13 -0
- package/dist/connectors/api.d.ts.map +1 -1
- package/dist/connectors/api.js +2 -0
- package/dist/connectors/api.js.map +1 -1
- package/dist/connectors/remote-mcp.d.ts +13 -0
- package/dist/connectors/remote-mcp.d.ts.map +1 -1
- package/dist/connectors/remote-mcp.js +2 -0
- package/dist/connectors/remote-mcp.js.map +1 -1
- package/dist/execute.d.ts +4 -4
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js.map +1 -1
- package/dist/index.d.ts +35 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/dist/meta-tools.d.ts +22 -4
- package/dist/meta-tools.d.ts.map +1 -1
- package/dist/meta-tools.js +91 -18
- package/dist/meta-tools.js.map +1 -1
- package/dist/registry.d.ts +183 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +293 -27
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts +7 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +67 -7
- package/dist/server.js.map +1 -1
- package/dist/skills.d.ts +52 -1
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +161 -1
- package/dist/skills.js.map +1 -1
- package/dist/toolkits.d.ts +44 -0
- package/dist/toolkits.d.ts.map +1 -0
- package/dist/toolkits.js +134 -0
- package/dist/toolkits.js.map +1 -0
- package/dist/types.d.ts +20 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts +28 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +89 -8
- package/dist/ui.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -2
- package/src/activity.ts +9 -0
- package/src/connectors/api.ts +15 -0
- package/src/connectors/remote-mcp.ts +15 -0
- package/src/execute.ts +4 -4
- package/src/index.ts +69 -1
- package/src/meta-tools.ts +126 -25
- package/src/registry.ts +416 -29
- package/src/server.ts +98 -7
- package/src/skills.ts +184 -1
- package/src/toolkits.ts +215 -0
- package/src/types.ts +20 -1
- package/src/ui.ts +92 -8
- package/src/version.ts +1 -1
package/dist/ui.d.ts
CHANGED
|
@@ -15,13 +15,41 @@ interface ResolvedBranding {
|
|
|
15
15
|
faviconHref: string;
|
|
16
16
|
themeColor: string;
|
|
17
17
|
}
|
|
18
|
+
export declare const DEFAULT_FAVICON_HREF = "/favicon.svg";
|
|
18
19
|
export declare function resolveBranding(branding?: ConnectaBranding): ResolvedBranding;
|
|
20
|
+
/**
|
|
21
|
+
* Names of the branding URLs the operator set that failed their gate and were
|
|
22
|
+
* replaced by a default. Lives beside the gates so the startup warning cannot
|
|
23
|
+
* drift from them, and takes `unknown` fields for the same reason
|
|
24
|
+
* `resolveBranding` does — a warning helper must never throw.
|
|
25
|
+
*/
|
|
26
|
+
export declare function droppedBrandingUrls(branding?: ConnectaBranding): string[];
|
|
19
27
|
/**
|
|
20
28
|
* True only for absolute `http:`/`https:` URLs. Downstream connectors control
|
|
21
29
|
* their `authorizationUrl`, so a hostile/misconfigured one could hand back a
|
|
22
30
|
* `javascript:` (or other) scheme; gate it before it can become an href.
|
|
23
31
|
*/
|
|
24
32
|
export declare function isSafeHttpUrl(url: unknown): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* True for values allowed in the page's `<link rel="icon" href>`: an absolute
|
|
35
|
+
* `http(s)` URL (an icon the operator hosts elsewhere) or a path rooted at this
|
|
36
|
+
* origin. The relative carve-out is deliberate rather than accidental — the
|
|
37
|
+
* default href is the relative `/favicon.svg`, which `isSafeHttpUrl` alone would
|
|
38
|
+
* reject — and it is kept narrow on both ends.
|
|
39
|
+
*
|
|
40
|
+
* Root-relative only, because `/ui` and `/oauth/callback/<id>` sit at different
|
|
41
|
+
* depths and a document-relative path would resolve differently on each.
|
|
42
|
+
*
|
|
43
|
+
* "Root-relative" is enforced structurally: exactly one leading `/` followed by
|
|
44
|
+
* a character that is neither `/` nor `\`. Both of those would make the value an
|
|
45
|
+
* authority (`//host`, and `/\host` because the URL parser folds `\` to `/` in
|
|
46
|
+
* special schemes), pointing at an origin this server does not control. The test
|
|
47
|
+
* runs on a copy with tab/newline/CR removed, since the parser strips those
|
|
48
|
+
* anywhere and `/\t/host` would otherwise slip through as single-slash. The
|
|
49
|
+
* origin comparison that follows is defense in depth, not the authority check —
|
|
50
|
+
* on its own it would accept an authority that happened to equal the probe host.
|
|
51
|
+
*/
|
|
52
|
+
export declare function isSafeIconHref(href: unknown): boolean;
|
|
25
53
|
export interface UiTool {
|
|
26
54
|
name: string;
|
|
27
55
|
address: string;
|
package/dist/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,gRAM1B,CAAC;AAER,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
package/dist/ui.js
CHANGED
|
@@ -6,27 +6,65 @@ export const CONNECTA_FAVICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" vie
|
|
|
6
6
|
</style>
|
|
7
7
|
<path class="fg" d="M27 9.4A13 13 0 1 0 27 22.6l-4.4-2.5a8 8 0 1 1 0-8.2z"/>
|
|
8
8
|
</svg>`;
|
|
9
|
+
export const DEFAULT_FAVICON_HREF = "/favicon.svg";
|
|
10
|
+
/**
|
|
11
|
+
* Branding arrives from operator config, which is untyped at a JS call site, so
|
|
12
|
+
* every field is treated as `unknown`: a non-string is read as unset rather than
|
|
13
|
+
* throwing on `.trim()`. Rendering must degrade to defaults for a malformed
|
|
14
|
+
* value, never fail — `createConnecta` calls this during construction.
|
|
15
|
+
*/
|
|
16
|
+
function trimmedString(value) {
|
|
17
|
+
return typeof value === "string" ? value.trim() || undefined : undefined;
|
|
18
|
+
}
|
|
9
19
|
export function resolveBranding(branding) {
|
|
10
|
-
const productName = branding?.productName
|
|
11
|
-
const ownerName = branding?.ownerName
|
|
20
|
+
const productName = trimmedString(branding?.productName) ?? "Connecta";
|
|
21
|
+
const ownerName = trimmedString(branding?.ownerName);
|
|
12
22
|
// Operator branding URLs become masthead/callback hrefs, so a non-http(s)
|
|
13
23
|
// scheme (javascript:, data:) is dropped the same as an unset URL — the
|
|
14
24
|
// callers already render a <span> instead of an <a> when it is absent.
|
|
15
|
-
const productUrl = branding?.productUrl
|
|
16
|
-
const ownerUrl = branding?.ownerUrl
|
|
25
|
+
const productUrl = trimmedString(branding?.productUrl);
|
|
26
|
+
const ownerUrl = trimmedString(branding?.ownerUrl);
|
|
27
|
+
const faviconHref = trimmedString(branding?.favicon?.href);
|
|
17
28
|
return {
|
|
18
29
|
productName,
|
|
19
30
|
...(productUrl && isSafeHttpUrl(productUrl) ? { productUrl } : {}),
|
|
20
31
|
...(ownerName ? { ownerName } : {}),
|
|
21
32
|
...(ownerUrl && isSafeHttpUrl(ownerUrl) ? { ownerUrl } : {}),
|
|
22
|
-
description: branding?.description
|
|
33
|
+
description: trimmedString(branding?.description) ??
|
|
23
34
|
`Manage the services this ${productName} instance makes available to agents.`,
|
|
24
|
-
pageTitle: branding?.pageTitle
|
|
35
|
+
pageTitle: trimmedString(branding?.pageTitle) ??
|
|
25
36
|
(ownerName ? `${productName} — ${ownerName}` : productName),
|
|
26
|
-
faviconHref:
|
|
27
|
-
|
|
37
|
+
faviconHref: faviconHref && isSafeIconHref(faviconHref)
|
|
38
|
+
? faviconHref
|
|
39
|
+
: DEFAULT_FAVICON_HREF,
|
|
40
|
+
themeColor: trimmedString(branding?.themeColor) ?? "#ffffff",
|
|
28
41
|
};
|
|
29
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Names of the branding URLs the operator set that failed their gate and were
|
|
45
|
+
* replaced by a default. Lives beside the gates so the startup warning cannot
|
|
46
|
+
* drift from them, and takes `unknown` fields for the same reason
|
|
47
|
+
* `resolveBranding` does — a warning helper must never throw.
|
|
48
|
+
*/
|
|
49
|
+
export function droppedBrandingUrls(branding) {
|
|
50
|
+
if (!branding)
|
|
51
|
+
return [];
|
|
52
|
+
const resolved = resolveBranding(branding);
|
|
53
|
+
// A non-string still counts as "set": the operator meant to supply a URL, and
|
|
54
|
+
// that intent is exactly what the warning reports on. A blank string does not.
|
|
55
|
+
const isSet = (value) => typeof value === "string"
|
|
56
|
+
? trimmedString(value) !== undefined
|
|
57
|
+
: value !== undefined && value !== null;
|
|
58
|
+
const faviconHref = branding.favicon?.href;
|
|
59
|
+
return [
|
|
60
|
+
...(isSet(branding.productUrl) && !resolved.productUrl ? ["productUrl"] : []),
|
|
61
|
+
...(isSet(branding.ownerUrl) && !resolved.ownerUrl ? ["ownerUrl"] : []),
|
|
62
|
+
...(isSet(faviconHref) &&
|
|
63
|
+
trimmedString(faviconHref) !== resolved.faviconHref
|
|
64
|
+
? ["favicon.href"]
|
|
65
|
+
: []),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
30
68
|
/**
|
|
31
69
|
* A JS string literal safe to inline in a <script> block. JSON.stringify alone
|
|
32
70
|
* leaves `/` untouched, so a value containing "</script>" would close the
|
|
@@ -51,6 +89,49 @@ export function isSafeHttpUrl(url) {
|
|
|
51
89
|
return false;
|
|
52
90
|
}
|
|
53
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Only the second check's base; any origin works because the check is whether
|
|
94
|
+
* the href stays on whatever origin it is resolved against. It is deliberately
|
|
95
|
+
* never the sole gate: a value whose own authority equals this host (say
|
|
96
|
+
* `//connecta.invalid/x`) would resolve to this exact origin and pass, so the
|
|
97
|
+
* structural check below runs first and is what actually rejects `//host`.
|
|
98
|
+
*/
|
|
99
|
+
const SAME_ORIGIN_PROBE = "https://connecta.invalid";
|
|
100
|
+
/** Removed anywhere in a URL by the parser, so a gate must ignore them too. */
|
|
101
|
+
const URL_STRIPPED_CHARS = /[\t\n\r]/g;
|
|
102
|
+
/**
|
|
103
|
+
* True for values allowed in the page's `<link rel="icon" href>`: an absolute
|
|
104
|
+
* `http(s)` URL (an icon the operator hosts elsewhere) or a path rooted at this
|
|
105
|
+
* origin. The relative carve-out is deliberate rather than accidental — the
|
|
106
|
+
* default href is the relative `/favicon.svg`, which `isSafeHttpUrl` alone would
|
|
107
|
+
* reject — and it is kept narrow on both ends.
|
|
108
|
+
*
|
|
109
|
+
* Root-relative only, because `/ui` and `/oauth/callback/<id>` sit at different
|
|
110
|
+
* depths and a document-relative path would resolve differently on each.
|
|
111
|
+
*
|
|
112
|
+
* "Root-relative" is enforced structurally: exactly one leading `/` followed by
|
|
113
|
+
* a character that is neither `/` nor `\`. Both of those would make the value an
|
|
114
|
+
* authority (`//host`, and `/\host` because the URL parser folds `\` to `/` in
|
|
115
|
+
* special schemes), pointing at an origin this server does not control. The test
|
|
116
|
+
* runs on a copy with tab/newline/CR removed, since the parser strips those
|
|
117
|
+
* anywhere and `/\t/host` would otherwise slip through as single-slash. The
|
|
118
|
+
* origin comparison that follows is defense in depth, not the authority check —
|
|
119
|
+
* on its own it would accept an authority that happened to equal the probe host.
|
|
120
|
+
*/
|
|
121
|
+
export function isSafeIconHref(href) {
|
|
122
|
+
if (typeof href !== "string")
|
|
123
|
+
return false;
|
|
124
|
+
if (isSafeHttpUrl(href))
|
|
125
|
+
return true;
|
|
126
|
+
if (!/^\/(?![/\\])/.test(href.replace(URL_STRIPPED_CHARS, "")))
|
|
127
|
+
return false;
|
|
128
|
+
try {
|
|
129
|
+
return new URL(href, SAME_ORIGIN_PROBE).origin === SAME_ORIGIN_PROBE;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
54
135
|
/**
|
|
55
136
|
* Filter by connector identity/description or tool name/description. A
|
|
56
137
|
* connector-level match stays visible even when it currently exposes no tools
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* a bump that forgets this file fails the build rather than shipping a stale
|
|
5
5
|
* version to `/health` and to downstream MCP handshakes.
|
|
6
6
|
*/
|
|
7
|
-
export declare const CONNECTA_VERSION = "0.
|
|
7
|
+
export declare const CONNECTA_VERSION = "0.5.0";
|
|
8
8
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zackbart/connecta",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "One MCP to rule them all — a single MCP endpoint aggregating many downstream connectors behind nine meta-tools.",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"test:node": "vitest run --project node",
|
|
65
65
|
"test:workers": "vitest run --project workers",
|
|
66
66
|
"check:examples": "tsc -p tsconfig.examples.node.json && tsc -p tsconfig.examples.worker.json",
|
|
67
|
-
"check:security": "npm audit --omit=dev --audit-level=
|
|
67
|
+
"check:security": "npm audit --omit=dev --audit-level=moderate",
|
|
68
68
|
"check:package": "node scripts/check-package.mjs",
|
|
69
69
|
"check": "npm run typecheck && npm run test && npm run build && npm run check:examples",
|
|
70
70
|
"release:check": "npm run check && npm run check:security && npm run check:package",
|
|
@@ -76,6 +76,9 @@
|
|
|
76
76
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
77
77
|
"zod": "^4.4.3"
|
|
78
78
|
},
|
|
79
|
+
"overrides": {
|
|
80
|
+
"@hono/node-server": "^2.0.12"
|
|
81
|
+
},
|
|
79
82
|
"peerDependencies": {
|
|
80
83
|
"@clerk/backend": "^3.12.0",
|
|
81
84
|
"quickjs-emscripten": "^0.32.0"
|
package/src/activity.ts
CHANGED
|
@@ -42,6 +42,12 @@ export interface ToolCallActivityEvent {
|
|
|
42
42
|
serverName: string;
|
|
43
43
|
serverVersion: string;
|
|
44
44
|
deploymentId?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Name of the toolkit this connection selected with `?toolkit=`, when it
|
|
47
|
+
* selected one. Calls are recorded the same way with or without it; this only
|
|
48
|
+
* says which scoped view the call came through.
|
|
49
|
+
*/
|
|
50
|
+
toolkitId?: string;
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
export interface ActivityPage {
|
|
@@ -83,6 +89,8 @@ export interface ActivityRequestContext {
|
|
|
83
89
|
requestId: string;
|
|
84
90
|
serverInfo: { name: string; version: string };
|
|
85
91
|
deploymentId?: string;
|
|
92
|
+
/** Toolkit this connection is scoped to, when `?toolkit=` selected one. */
|
|
93
|
+
toolkitId?: string;
|
|
86
94
|
defer?: (promise: Promise<unknown>) => void;
|
|
87
95
|
logger: Logger;
|
|
88
96
|
}
|
|
@@ -128,6 +136,7 @@ export function recordToolActivity(
|
|
|
128
136
|
...(context.deploymentId
|
|
129
137
|
? { deploymentId: context.deploymentId }
|
|
130
138
|
: {}),
|
|
139
|
+
...(context.toolkitId ? { toolkitId: context.toolkitId } : {}),
|
|
131
140
|
};
|
|
132
141
|
try {
|
|
133
142
|
const result = context.sink.record(event);
|
package/src/connectors/api.ts
CHANGED
|
@@ -29,6 +29,19 @@ export interface ApiOptions {
|
|
|
29
29
|
/** Human-readable display name; the connector id remains the address prefix. */
|
|
30
30
|
title?: string;
|
|
31
31
|
description?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Max inline result size (bytes) for this connector's tools before
|
|
34
|
+
* call_tool/batch_call truncate and stash the full text for get_result
|
|
35
|
+
* paging. Overrides the deployment's `maxResultBytes`; omit to inherit it.
|
|
36
|
+
* Must be a whole number of bytes >= 1; anything else warns at startup and
|
|
37
|
+
* is ignored.
|
|
38
|
+
*/
|
|
39
|
+
maxResultBytes?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Optional agent-facing usage guide (markdown) served by the `skills`
|
|
42
|
+
* meta-tool as `connector:<id>`. See `Connector.usageGuide`.
|
|
43
|
+
*/
|
|
44
|
+
usageGuide?: string;
|
|
32
45
|
/** Optional operator-managed credential exposed through ctx.credential and /ui. */
|
|
33
46
|
credential?: ConnectorCredentialConfig;
|
|
34
47
|
/** Optional validation behind /ui's Test action. */
|
|
@@ -97,6 +110,8 @@ export function api(id: string, opts: ApiOptions): Connector {
|
|
|
97
110
|
title: opts.title,
|
|
98
111
|
kind: "api",
|
|
99
112
|
description: opts.description,
|
|
113
|
+
maxResultBytes: opts.maxResultBytes,
|
|
114
|
+
usageGuide: opts.usageGuide,
|
|
100
115
|
credential: opts.credential,
|
|
101
116
|
testCredential: opts.testCredential,
|
|
102
117
|
testCredentials: opts.testCredentials,
|
|
@@ -23,6 +23,19 @@ export interface RemoteMcpOptions {
|
|
|
23
23
|
/** Human-readable display name; the connector id remains the address prefix. */
|
|
24
24
|
title?: string;
|
|
25
25
|
description?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Max inline result size (bytes) for this connector's tools before
|
|
28
|
+
* call_tool/batch_call truncate and stash the full text for get_result
|
|
29
|
+
* paging. Overrides the deployment's `maxResultBytes`; omit to inherit it.
|
|
30
|
+
* Must be a whole number of bytes >= 1; anything else warns at startup and
|
|
31
|
+
* is ignored.
|
|
32
|
+
*/
|
|
33
|
+
maxResultBytes?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Optional agent-facing usage guide (markdown) served by the `skills`
|
|
36
|
+
* meta-tool as `connector:<id>`. See `Connector.usageGuide`.
|
|
37
|
+
*/
|
|
38
|
+
usageGuide?: string;
|
|
26
39
|
auth?: RemoteMcpAuth;
|
|
27
40
|
/**
|
|
28
41
|
* Refuse to connect to a non-`https://` `url` at construction (default
|
|
@@ -252,6 +265,8 @@ export function remoteMcp(id: string, opts: RemoteMcpOptions): Connector {
|
|
|
252
265
|
title: opts.title,
|
|
253
266
|
kind: "mcp",
|
|
254
267
|
description: opts.description,
|
|
268
|
+
maxResultBytes: opts.maxResultBytes,
|
|
269
|
+
usageGuide: opts.usageGuide,
|
|
255
270
|
|
|
256
271
|
async listTools(ctx) {
|
|
257
272
|
const state = stateFor(ctx);
|
package/src/execute.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { recordToolActivity, type ActivityRequestContext } from "./activity.js";
|
|
|
5
5
|
import { errorResult, jsonResult, type ToolResult } from "./meta-tools.js";
|
|
6
6
|
import { classifyCallError, ConnectorCallError } from "./errors.js";
|
|
7
7
|
import { unwrapMcpResult } from "./mcp-result.js";
|
|
8
|
-
import type {
|
|
8
|
+
import type { RegistryView } from "./registry.js";
|
|
9
9
|
import type {
|
|
10
10
|
Connector,
|
|
11
11
|
Executor,
|
|
@@ -98,7 +98,7 @@ export function unwrapForSandbox(
|
|
|
98
98
|
* the raw-address escape hatch. Broken connectors are skipped, not fatal.
|
|
99
99
|
*/
|
|
100
100
|
export async function buildSandboxProviders(
|
|
101
|
-
registry:
|
|
101
|
+
registry: RegistryView,
|
|
102
102
|
baseUrl: string,
|
|
103
103
|
logger: Logger,
|
|
104
104
|
activity?: ActivityRequestContext,
|
|
@@ -459,7 +459,7 @@ function guardResultValue(value: unknown): unknown {
|
|
|
459
459
|
|
|
460
460
|
/** The execute_code handler. Exported for direct testing. */
|
|
461
461
|
export function createExecuteTool(
|
|
462
|
-
registry:
|
|
462
|
+
registry: RegistryView,
|
|
463
463
|
baseUrl: string,
|
|
464
464
|
executor: Executor,
|
|
465
465
|
logger: Logger,
|
|
@@ -527,7 +527,7 @@ Example: async () => { const r = await crm.search({ query: "roadmap" }); return
|
|
|
527
527
|
/** Register the execute_code meta-tool. Only called when an executor is configured. */
|
|
528
528
|
export function registerExecuteTool(
|
|
529
529
|
server: McpServer,
|
|
530
|
-
registry:
|
|
530
|
+
registry: RegistryView,
|
|
531
531
|
ctx: {
|
|
532
532
|
baseUrl: string;
|
|
533
533
|
executor: Executor;
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { CredentialVault } from "./credentials.js";
|
|
2
2
|
import { Registry } from "./registry.js";
|
|
3
3
|
import { createFetchHandler } from "./server.js";
|
|
4
|
+
import { droppedBrandingUrls } from "./ui.js";
|
|
5
|
+
import { resolveToolkits, type ToolkitConfig } from "./toolkits.js";
|
|
4
6
|
import { memoryStorage } from "./storage/memory.js";
|
|
5
7
|
import { CONNECTA_VERSION } from "./version.js";
|
|
6
8
|
import type { ActivityReadGate, ActivityStore } from "./activity.js";
|
|
@@ -15,6 +17,36 @@ import type {
|
|
|
15
17
|
|
|
16
18
|
export interface ConnectaConfig {
|
|
17
19
|
connectors: Connector[];
|
|
20
|
+
/**
|
|
21
|
+
* Named scoped views over `connectors`, selected per client connection with
|
|
22
|
+
* `?toolkit=<name>` on the `/mcp` URL. One deployment belongs to one org;
|
|
23
|
+
* a toolkit is the slice of it a group of team members sees.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* toolkits: {
|
|
27
|
+
* support: { connectors: ["zendesk", "notion"] },
|
|
28
|
+
* exec: {
|
|
29
|
+
* connectors: ["zendesk", "notion", "gmail"],
|
|
30
|
+
* excludeTools: ["gmail.send_message"],
|
|
31
|
+
* },
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* Inside a toolkit-scoped session every meta-tool behaves as if out-of-scope
|
|
36
|
+
* connectors and tools do not exist, and an out-of-scope address fails
|
|
37
|
+
* exactly as a nonexistent one does. No `?toolkit=` ⇒ the full registry, so
|
|
38
|
+
* adding toolkits changes nothing for connections that don't ask for one; an
|
|
39
|
+
* unknown name is an error, never a silent fallback.
|
|
40
|
+
*
|
|
41
|
+
* Toolkits scope VISIBILITY, not identity: they do not decide *which* team
|
|
42
|
+
* member may select which toolkit. Gate that in `auth` (per-member binding is
|
|
43
|
+
* a follow-up).
|
|
44
|
+
*
|
|
45
|
+
* Definitions are validated at construction: an unknown connector id, an
|
|
46
|
+
* empty connector selection, an empty `includeTools`, a malformed tool
|
|
47
|
+
* address, or an address naming no tool on an in-code connector all throw.
|
|
48
|
+
*/
|
|
49
|
+
toolkits?: ToolkitConfig;
|
|
18
50
|
/**
|
|
19
51
|
* Privacy-minimal downstream tool activity storage. Writes are best-effort
|
|
20
52
|
* and never change tool results. Implement `list` to enable the Activity UI.
|
|
@@ -58,7 +90,9 @@ export interface ConnectaConfig {
|
|
|
58
90
|
toolCatalogStaleSeconds?: number;
|
|
59
91
|
/**
|
|
60
92
|
* Max inline result size (bytes) before call_tool/batch_call truncate and
|
|
61
|
-
* stash the full text for get_result paging.
|
|
93
|
+
* stash the full text for get_result paging. Must be a whole number of bytes
|
|
94
|
+
* >= 1; anything else (0, negative, fractional, NaN, Infinity) warns at
|
|
95
|
+
* startup and falls back to the default 50_000.
|
|
62
96
|
*/
|
|
63
97
|
maxResultBytes?: number;
|
|
64
98
|
/**
|
|
@@ -176,6 +210,31 @@ function warnInsecureConfig(
|
|
|
176
210
|
);
|
|
177
211
|
}
|
|
178
212
|
|
|
213
|
+
// Toolkits with no inbound auth: a toolkit is a scoped VIEW selected by the
|
|
214
|
+
// caller, not an authentication boundary. With nothing gating /mcp, any
|
|
215
|
+
// caller picks any toolkit — or omits the parameter and sees everything.
|
|
216
|
+
if (inboundAuth.length === 0 && config.toolkits) {
|
|
217
|
+
logger.warn(
|
|
218
|
+
"[connecta] toolkits are configured but there is no inbound " +
|
|
219
|
+
"authentication: a toolkit is a scoped view a client selects with " +
|
|
220
|
+
"?toolkit=, not an access check, so any caller can choose any toolkit " +
|
|
221
|
+
"or omit the parameter and see every connector. Configure `auth` " +
|
|
222
|
+
"(for example bearerToken(...) or Clerk).",
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Branding URLs that failed their scheme gate. Rendering silently falls back
|
|
227
|
+
// (a bad URL must not take the page down), so this warning is the only way an
|
|
228
|
+
// operator learns their value never reached the page.
|
|
229
|
+
const dropped = droppedBrandingUrls(config.branding);
|
|
230
|
+
if (dropped.length > 0) {
|
|
231
|
+
logger.warn(
|
|
232
|
+
`[connecta] branding ${dropped.join(", ")} dropped: a branding URL is ` +
|
|
233
|
+
"used as an href, so it must be an absolute http(s) URL (favicon.href " +
|
|
234
|
+
"may also be a root-relative path). The default is rendered instead.",
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
|
|
179
238
|
// OAuth connectors whose callback performs no state/CSRF check: the public
|
|
180
239
|
// /oauth/callback/<id> route would exchange any delivered code.
|
|
181
240
|
for (const connector of oauthConnectors) {
|
|
@@ -211,6 +270,11 @@ export function createConnecta(config: ConnectaConfig): Connecta {
|
|
|
211
270
|
toolCatalogStaleSeconds: config.toolCatalogStaleSeconds,
|
|
212
271
|
maxResultBytes: config.maxResultBytes,
|
|
213
272
|
});
|
|
273
|
+
// Throws on every structural mistake it can see (see resolveToolkits): a
|
|
274
|
+
// typo must not become a scope the operator never wrote. Note this is about
|
|
275
|
+
// the scope being *intended*, not about it being an access check — a toolkit
|
|
276
|
+
// scopes visibility, and `auth` remains the thing deciding who gets in.
|
|
277
|
+
const toolkits = resolveToolkits(config.toolkits, config.connectors);
|
|
214
278
|
const inboundAuth = normalizeAuth(config.auth);
|
|
215
279
|
warnInsecureConfig(config, inboundAuth, logger);
|
|
216
280
|
const handler = createFetchHandler({
|
|
@@ -232,6 +296,7 @@ export function createConnecta(config: ConnectaConfig): Connecta {
|
|
|
232
296
|
credentialVault,
|
|
233
297
|
deploymentInfo: config.deploymentInfo,
|
|
234
298
|
branding: config.branding,
|
|
299
|
+
...(toolkits ? { toolkits } : {}),
|
|
235
300
|
});
|
|
236
301
|
return {
|
|
237
302
|
fetch: (request, _env, ctx) =>
|
|
@@ -261,6 +326,9 @@ export { CONNECTA_VERSION } from "./version.js";
|
|
|
261
326
|
// the class itself, the credential vault, and the meta-tool/sandbox factories
|
|
262
327
|
// are internal factoring and are deliberately not part of the API surface.
|
|
263
328
|
export type { Registry } from "./registry.js";
|
|
329
|
+
// Config-as-code shapes for `ConnectaConfig.toolkits`. The resolved `Toolkit`
|
|
330
|
+
// and the `ScopedRegistry` that enforces it are internal factoring.
|
|
331
|
+
export type { ToolkitConfig, ToolkitDefinition } from "./toolkits.js";
|
|
264
332
|
|
|
265
333
|
export type { RemoteMcpOptions, RemoteMcpAuth } from "./connectors/remote-mcp.js";
|
|
266
334
|
export type { ApiOptions, ApiTool } from "./connectors/api.js";
|