@arbium/enterprise-agent-connect 0.1.2-dev.d2aa5ca → 0.2.1-dev.7b4e802
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/README.md +19 -7
- package/dist/connectors/adestra/connector.json +336 -0
- package/dist/connectors/adobe-admin-console/connector.json +212 -0
- package/dist/connectors/argo-cd/connector.json +210 -0
- package/dist/connectors/automox/connector.json +376 -0
- package/dist/connectors/churnzero/connector.json +238 -0
- package/dist/connectors/confluence/connector.json +168 -0
- package/dist/connectors/cvent/connector.json +287 -0
- package/dist/connectors/datadog/connector.json +188 -0
- package/dist/connectors/drata/connector.json +447 -0
- package/dist/connectors/druva/connector.json +258 -0
- package/dist/connectors/dynamics-365/connector.json +16 -1
- package/dist/connectors/dynamics-365/index.d.ts +1 -4
- package/dist/connectors/dynamics-365/index.js.map +1 -1
- package/dist/connectors/entra/index.d.ts +1 -1
- package/dist/connectors/forsta-decipher/connector.json +164 -0
- package/dist/connectors/gitlab/connector.json +263 -0
- package/dist/connectors/gong/vendor.d.ts +1 -1
- package/dist/connectors/gong/vendor.js +24 -32
- package/dist/connectors/gong/vendor.js.map +1 -1
- package/dist/connectors/grafana/connector.json +162 -0
- package/dist/connectors/http/index.d.ts +7 -7
- package/dist/connectors/http/index.js +66 -9
- package/dist/connectors/http/index.js.map +1 -1
- package/dist/connectors/http/openapi.d.ts +62 -0
- package/dist/connectors/http/openapi.js +342 -0
- package/dist/connectors/http/openapi.js.map +1 -0
- package/dist/connectors/intercom/connector.json +249 -0
- package/dist/connectors/intune/index.d.ts +1 -1
- package/dist/connectors/jamf/vendor.js +5 -1
- package/dist/connectors/jamf/vendor.js.map +1 -1
- package/dist/connectors/jira/connector.json +3 -3
- package/dist/connectors/jira/vendor.d.ts +1 -1
- package/dist/connectors/jira/vendor.js +8 -2
- package/dist/connectors/jira/vendor.js.map +1 -1
- package/dist/connectors/lusha/connector.json +59 -0
- package/dist/connectors/lusha/index.d.ts +8 -0
- package/dist/connectors/lusha/index.js +7 -0
- package/dist/connectors/lusha/index.js.map +1 -0
- package/dist/connectors/lusha/tools.d.ts +2 -0
- package/dist/connectors/lusha/tools.js +113 -0
- package/dist/connectors/lusha/tools.js.map +1 -0
- package/dist/connectors/lusha/vendor.d.ts +4 -0
- package/dist/connectors/lusha/vendor.js +72 -0
- package/dist/connectors/lusha/vendor.js.map +1 -0
- package/dist/connectors/microsoft/client.d.ts +11 -3
- package/dist/connectors/microsoft/client.js +62 -8
- package/dist/connectors/microsoft/client.js.map +1 -1
- package/dist/connectors/netsuite/connector.json +4 -2
- package/dist/connectors/netsuite/vendor.d.ts +1 -1
- package/dist/connectors/netsuite/vendor.js +5 -6
- package/dist/connectors/netsuite/vendor.js.map +1 -1
- package/dist/connectors/odata/index.d.ts +1 -4
- package/dist/connectors/odata/index.js +12 -5
- package/dist/connectors/odata/index.js.map +1 -1
- package/dist/connectors/okta/connector.json +3 -2
- package/dist/connectors/okta/vendor.d.ts +1 -1
- package/dist/connectors/okta/vendor.js +7 -6
- package/dist/connectors/okta/vendor.js.map +1 -1
- package/dist/connectors/outlook-calendar/index.d.ts +1 -1
- package/dist/connectors/outlook-mail/index.d.ts +1 -1
- package/dist/connectors/pagerduty/connector.json +247 -0
- package/dist/connectors/qualys/connector.json +271 -0
- package/dist/connectors/safebase/connector.json +221 -0
- package/dist/connectors/salesforce/vendor.d.ts +1 -1
- package/dist/connectors/salesforce/vendor.js +9 -3
- package/dist/connectors/salesforce/vendor.js.map +1 -1
- package/dist/connectors/sap-s4hana/connector.json +1 -0
- package/dist/connectors/servicenow/vendor.d.ts +0 -1
- package/dist/connectors/servicenow/vendor.js +7 -10
- package/dist/connectors/servicenow/vendor.js.map +1 -1
- package/dist/connectors/sharepoint-files/connector.json +34 -3
- package/dist/connectors/sharepoint-files/documents.d.ts +7 -0
- package/dist/connectors/sharepoint-files/documents.js +212 -0
- package/dist/connectors/sharepoint-files/documents.js.map +1 -0
- package/dist/connectors/sharepoint-files/docx-worker.d.ts +7 -0
- package/dist/connectors/sharepoint-files/docx-worker.js +41 -0
- package/dist/connectors/sharepoint-files/docx-worker.js.map +1 -0
- package/dist/connectors/sharepoint-files/docx.d.ts +96 -0
- package/dist/connectors/sharepoint-files/docx.js +823 -0
- package/dist/connectors/sharepoint-files/docx.js.map +1 -0
- package/dist/connectors/sharepoint-files/index.d.ts +1 -4
- package/dist/connectors/sharepoint-files/index.js +2 -1
- package/dist/connectors/sharepoint-files/index.js.map +1 -1
- package/dist/connectors/sharepoint-files/ooxml.d.ts +19 -0
- package/dist/connectors/sharepoint-files/ooxml.js +179 -0
- package/dist/connectors/sharepoint-files/ooxml.js.map +1 -0
- package/dist/connectors/sharepoint-files/paging.d.ts +15 -0
- package/dist/connectors/sharepoint-files/paging.js +87 -0
- package/dist/connectors/sharepoint-files/paging.js.map +1 -0
- package/dist/connectors/sharepoint-files/parse-host.mjs +78 -0
- package/dist/connectors/sharepoint-files/pdf-worker.mjs +108 -0
- package/dist/connectors/sharepoint-files/pdf.d.ts +16 -0
- package/dist/connectors/sharepoint-files/pdf.js +19 -0
- package/dist/connectors/sharepoint-files/pdf.js.map +1 -0
- package/dist/connectors/sharepoint-files/sandbox.d.ts +19 -0
- package/dist/connectors/sharepoint-files/sandbox.js +176 -0
- package/dist/connectors/sharepoint-files/sandbox.js.map +1 -0
- package/dist/connectors/sharepoint-files/tools.d.ts +6 -0
- package/dist/connectors/sharepoint-files/tools.js +79 -4
- package/dist/connectors/sharepoint-files/tools.js.map +1 -1
- package/dist/connectors/slack/vendor.d.ts +1 -1
- package/dist/connectors/slack/vendor.js +32 -38
- package/dist/connectors/slack/vendor.js.map +1 -1
- package/dist/connectors/soap/index.d.ts +1 -4
- package/dist/connectors/soap/index.js +4 -3
- package/dist/connectors/soap/index.js.map +1 -1
- package/dist/connectors/sonarqube/connector.json +165 -0
- package/dist/connectors/sprout-social/connector.json +158 -0
- package/dist/connectors/sql/index.d.ts +1 -4
- package/dist/connectors/sql/index.js +2 -0
- package/dist/connectors/sql/index.js.map +1 -1
- package/dist/connectors/synthesia/connector.json +113 -0
- package/dist/connectors/teams/index.d.ts +1 -1
- package/dist/connectors/teams/tools.d.ts +6 -1
- package/dist/connectors/teams/tools.js +3 -2
- package/dist/connectors/teams/tools.js.map +1 -1
- package/dist/connectors/wordpress/connector.json +203 -0
- package/dist/connectors/workday/connector.json +6 -4
- package/dist/connectors/workday/vendor.d.ts +1 -1
- package/dist/connectors/workday/vendor.js +8 -4
- package/dist/connectors/workday/vendor.js.map +1 -1
- package/dist/connectors/zephyr/connector.json +192 -0
- package/dist/packages/connector-kit/src/common.d.ts +4 -5
- package/dist/packages/connector-kit/src/common.js +4 -1
- package/dist/packages/connector-kit/src/common.js.map +1 -1
- package/dist/packages/connector-kit/src/connector.d.ts +82 -34
- package/dist/packages/connector-kit/src/connector.js +163 -21
- package/dist/packages/connector-kit/src/connector.js.map +1 -1
- package/dist/packages/connector-kit/src/fetch.d.ts +6 -0
- package/dist/packages/connector-kit/src/fetch.js +44 -0
- package/dist/packages/connector-kit/src/fetch.js.map +1 -0
- package/dist/packages/connector-kit/src/index.d.ts +3 -3
- package/dist/packages/connector-kit/src/index.js +1 -0
- package/dist/packages/connector-kit/src/index.js.map +1 -1
- package/dist/packages/connector-kit/src/oauth.d.ts +3 -1
- package/dist/packages/connector-kit/src/oauth.js +16 -6
- package/dist/packages/connector-kit/src/oauth.js.map +1 -1
- package/dist/packages/connector-kit/src/types.d.ts +4 -1
- package/dist/packages/connector-kit/src/types.js.map +1 -1
- package/dist/packages/server/migrations/0008_internal_apps.sql +16 -0
- package/dist/packages/server/migrations/rollback/to-legacy.sql +2 -0
- package/dist/packages/server/src/api.d.ts +2486 -257
- package/dist/packages/server/src/api.js +84 -1
- package/dist/packages/server/src/api.js.map +1 -1
- package/dist/packages/server/src/app.js +26 -1
- package/dist/packages/server/src/app.js.map +1 -1
- package/dist/packages/server/src/builtin.d.ts +7 -3
- package/dist/packages/server/src/builtin.js +32 -0
- package/dist/packages/server/src/builtin.js.map +1 -1
- package/dist/packages/server/src/events/runtime.js +17 -10
- package/dist/packages/server/src/events/runtime.js.map +1 -1
- package/dist/packages/server/src/events/store.d.ts +2 -2
- package/dist/packages/server/src/index.d.ts +3 -3
- package/dist/packages/server/src/index.js +32 -22
- package/dist/packages/server/src/index.js.map +1 -1
- package/dist/packages/server/src/service.d.ts +1134 -14
- package/dist/packages/server/src/service.js +266 -21
- package/dist/packages/server/src/service.js.map +1 -1
- package/dist/packages/server/src/store.d.ts +43 -4
- package/dist/packages/server/src/store.js +79 -0
- package/dist/packages/server/src/store.js.map +1 -1
- package/package.json +4 -1
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { lookup } from "node:dns/promises";
|
|
2
|
+
import { isIP } from "node:net";
|
|
1
3
|
import { z } from "zod";
|
|
2
4
|
import { audited, Denied, json, listLimit, VendorFailed, } from "../../packages/connector-kit/src/common.js";
|
|
5
|
+
import { checkHost, fillAddress, } from "../../packages/connector-kit/src/connector.js";
|
|
3
6
|
import { clientCredentials, vendorError } from "../../packages/connector-kit/src/oauth.js";
|
|
4
7
|
import { ConnectError, } from "../../packages/connector-kit/src/types.js";
|
|
5
8
|
// The generic module behind every connector.json with an `http` block: an app described as
|
|
@@ -8,6 +11,20 @@ export const MAX_RESPONSE_BYTES = 1024 * 1024;
|
|
|
8
11
|
export const MAX_BODY_BYTES = 256 * 1024;
|
|
9
12
|
export const MAX_TARGET_BYTES = 8 * 1024;
|
|
10
13
|
const TIMEOUT_MS = 30_000;
|
|
14
|
+
// Cloud metadata services (169.254.169.254, fd00:ec2::254) hand out the server's own credentials,
|
|
15
|
+
// and no app is served from a link-local address, so an address that resolves there is refused.
|
|
16
|
+
// ponytail: checked at lookup, so a DNS answer that changes before the connect is not caught.
|
|
17
|
+
// IPv4-mapped IPv6 comes back from URL as hex: ::ffff:a9fe:a9fe is 169.254.169.254.
|
|
18
|
+
const LINK_LOCAL = /^(169\.254\.|::ffff:(169\.254\.|a9fe:)|fe[89ab][0-9a-f]:|fd00:ec2::254$)/i;
|
|
19
|
+
async function refuseLinkLocal(hostname) {
|
|
20
|
+
const host = hostname.replace(/^\[|\]$/g, "");
|
|
21
|
+
// A name that does not resolve is left to the call itself to fail on.
|
|
22
|
+
const addresses = isIP(host)
|
|
23
|
+
? [host]
|
|
24
|
+
: await lookup(host, { all: true }).then((all) => all.map((a) => a.address), () => []);
|
|
25
|
+
if (addresses.some((a) => LINK_LOCAL.test(a)))
|
|
26
|
+
throw new ConnectError(`${hostname} is a link-local address, which no app is reached at`);
|
|
27
|
+
}
|
|
11
28
|
// fetch that reaches only `allowed` origins, follows no redirect, gives up after TIMEOUT_MS and
|
|
12
29
|
// reads at most MAX_RESPONSE_BYTES of JSON or text (or what `types` matches). Its refusals are
|
|
13
30
|
// ConnectError.
|
|
@@ -18,6 +35,7 @@ passed = "JSON or text") {
|
|
|
18
35
|
const url = new URL(input instanceof Request ? input.url : input);
|
|
19
36
|
if (!allowed.includes(url.origin))
|
|
20
37
|
throw new ConnectError(`${url.origin} is not this app's address`);
|
|
38
|
+
await refuseLinkLocal(url.hostname);
|
|
21
39
|
const res = await fetchImpl(url, {
|
|
22
40
|
...init,
|
|
23
41
|
redirect: "manual",
|
|
@@ -67,25 +85,50 @@ export function authHeaders(auth, c) {
|
|
|
67
85
|
};
|
|
68
86
|
return {};
|
|
69
87
|
}
|
|
70
|
-
// The connect form's values: plain fields into config, secret ones into secret;
|
|
88
|
+
// The connect form's values: plain fields into config, secret ones into secret; required
|
|
89
|
+
// unless `optional`.
|
|
71
90
|
export function formValues(connector, fields) {
|
|
72
91
|
const config = {};
|
|
73
92
|
const secret = {};
|
|
74
93
|
for (const f of connector.fields) {
|
|
75
94
|
const value = fields[f.id]?.trim() ?? "";
|
|
95
|
+
if (!value && f.optional)
|
|
96
|
+
continue;
|
|
76
97
|
if (!value)
|
|
77
98
|
throw new ConnectError(`Enter ${f.label}`);
|
|
78
99
|
(f.secret ? secret : config)[f.id] = value;
|
|
79
100
|
}
|
|
80
101
|
return { config, secret };
|
|
81
102
|
}
|
|
103
|
+
// An app's address filled in for one connection (its {field}s), and the guarded fetch reaching
|
|
104
|
+
// only that origin (and the token service's), kept per origin so a token cache survives calls.
|
|
105
|
+
export function connectionAddress(connector, address, allowedHosts, tokenUrl, fetchImpl, types, passed) {
|
|
106
|
+
const label = (id) => connector.fields.find((f) => f.id === id)?.label ?? id;
|
|
107
|
+
const fetches = new Map();
|
|
108
|
+
return (c) => {
|
|
109
|
+
const url = new URL(fillAddress(address, c.config, label));
|
|
110
|
+
checkHost(url, allowedHosts);
|
|
111
|
+
let safe = fetches.get(url.origin);
|
|
112
|
+
if (!safe) {
|
|
113
|
+
const origins = [url.origin, ...(tokenUrl ? [new URL(tokenUrl).origin] : [])];
|
|
114
|
+
safe = guardedFetch(origins, fetchImpl, types, passed);
|
|
115
|
+
fetches.set(url.origin, safe);
|
|
116
|
+
}
|
|
117
|
+
return { url, safe };
|
|
118
|
+
};
|
|
119
|
+
}
|
|
82
120
|
export function httpVendor(connector, fetchImpl = fetch) {
|
|
83
121
|
const http = connector.http;
|
|
84
|
-
const base = new URL(http.baseUrl);
|
|
85
|
-
const prefix = base.pathname.replace(/\/+$/, "");
|
|
86
122
|
const auth = http.auth;
|
|
87
|
-
const
|
|
88
|
-
const
|
|
123
|
+
const addressOf = connectionAddress(connector, http.baseUrl, http.allowedHosts, auth.type === "oauth2" ? auth.tokenUrl : null, fetchImpl);
|
|
124
|
+
const clients = new Map();
|
|
125
|
+
const oauthFor = (origin, safe) => {
|
|
126
|
+
if (auth.type !== "oauth2")
|
|
127
|
+
return null;
|
|
128
|
+
if (!clients.has(origin))
|
|
129
|
+
clients.set(origin, clientCredentials(connector.name, safe));
|
|
130
|
+
return clients.get(origin);
|
|
131
|
+
};
|
|
89
132
|
// Lower-case, so a configured Accept replaces the default rather than joining it.
|
|
90
133
|
const fixed = Object.fromEntries(Object.entries(http.headers).map(([k, v]) => [k.toLowerCase(), v]));
|
|
91
134
|
const oauthCreds = (c) => auth.type === "oauth2"
|
|
@@ -94,9 +137,22 @@ export function httpVendor(connector, fetchImpl = fetch) {
|
|
|
94
137
|
clientId: c.config[auth.clientId],
|
|
95
138
|
clientSecret: c.secret[auth.clientSecret],
|
|
96
139
|
scope: auth.scope,
|
|
140
|
+
clientAuth: auth.clientAuth,
|
|
141
|
+
audience: auth.audience,
|
|
97
142
|
}
|
|
98
143
|
: null;
|
|
144
|
+
const fieldHeaders = (c) => Object.fromEntries(Object.entries(http.fieldHeaders).flatMap(([name, id]) => {
|
|
145
|
+
const value = c.secret[id] ?? c.config[id];
|
|
146
|
+
if (!value)
|
|
147
|
+
return [];
|
|
148
|
+
if (!/^[\x20-\x7E]*$/.test(value))
|
|
149
|
+
throw new ConnectError(`${name} can only hold plain letters, digits and symbols`);
|
|
150
|
+
return [[name.toLowerCase(), value]];
|
|
151
|
+
}));
|
|
99
152
|
const call = async (c, request) => {
|
|
153
|
+
const { url: base, safe } = addressOf(c);
|
|
154
|
+
const prefix = base.pathname.replace(/\/+$/, "");
|
|
155
|
+
const oauth = oauthFor(base.origin, safe);
|
|
100
156
|
// The path is the tool's, already encoded; it must stay under baseUrl's path.
|
|
101
157
|
const url = new URL(`${base.origin}${prefix}${request.path}`);
|
|
102
158
|
if (url.origin !== base.origin || !`${url.pathname}/`.startsWith(`${prefix}/`))
|
|
@@ -108,13 +164,14 @@ export function httpVendor(connector, fetchImpl = fetch) {
|
|
|
108
164
|
path: `${url.pathname}${url.search}`,
|
|
109
165
|
body: request.body,
|
|
110
166
|
};
|
|
167
|
+
const headers = { ...fixed, ...fieldHeaders(c) };
|
|
111
168
|
if (oauth)
|
|
112
|
-
return oauth.call(oauthCreds(c), base.origin, req,
|
|
169
|
+
return oauth.call(oauthCreds(c), base.origin, req, headers);
|
|
113
170
|
const res = await safe(`${base.origin}${req.path}`, {
|
|
114
171
|
method: req.method,
|
|
115
172
|
headers: {
|
|
116
173
|
accept: "application/json",
|
|
117
|
-
...
|
|
174
|
+
...headers,
|
|
118
175
|
...authHeaders(auth, c),
|
|
119
176
|
...(req.body === undefined ? {} : { "content-type": "application/json" }),
|
|
120
177
|
},
|
|
@@ -130,9 +187,9 @@ export function httpVendor(connector, fetchImpl = fetch) {
|
|
|
130
187
|
return {
|
|
131
188
|
async connect(fields) {
|
|
132
189
|
const { config, secret } = formValues(connector, fields);
|
|
190
|
+
const { url: base, safe } = addressOf({ config });
|
|
133
191
|
const conn = { config: { host: base.host, ...config }, secret };
|
|
134
|
-
|
|
135
|
-
await oauth.signIn(oauthCreds(conn));
|
|
192
|
+
await oauthFor(base.origin, safe)?.signIn(oauthCreds(conn));
|
|
136
193
|
return { ...conn, accountLabel: conn.config[connector.accountKey] ?? base.host };
|
|
137
194
|
},
|
|
138
195
|
call,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/http/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/http/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
type Json = Record<string, unknown>;
|
|
2
|
+
export type DraftOptions = {
|
|
3
|
+
id: string;
|
|
4
|
+
operations?: string[];
|
|
5
|
+
tags?: string[];
|
|
6
|
+
source?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function draftConnector(spec: Json, options: DraftOptions): {
|
|
9
|
+
connector: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
logo: string;
|
|
14
|
+
identity: string;
|
|
15
|
+
accountKey: string;
|
|
16
|
+
connectionKind: string;
|
|
17
|
+
setup: {
|
|
18
|
+
title: string;
|
|
19
|
+
body: string;
|
|
20
|
+
}[];
|
|
21
|
+
afterConnect: never[];
|
|
22
|
+
fields: Json[];
|
|
23
|
+
capabilities: {
|
|
24
|
+
scopes: never[];
|
|
25
|
+
permissions: never[];
|
|
26
|
+
tools: string[];
|
|
27
|
+
destructive?: boolean | undefined;
|
|
28
|
+
id: string;
|
|
29
|
+
label: string;
|
|
30
|
+
description: string;
|
|
31
|
+
}[];
|
|
32
|
+
limits: never[];
|
|
33
|
+
verify: {
|
|
34
|
+
method: string;
|
|
35
|
+
path: string;
|
|
36
|
+
label: string;
|
|
37
|
+
show: string;
|
|
38
|
+
};
|
|
39
|
+
revoke: string;
|
|
40
|
+
http: {
|
|
41
|
+
auth: Json;
|
|
42
|
+
tools: {
|
|
43
|
+
result?: {
|
|
44
|
+
fields: string[];
|
|
45
|
+
items?: undefined;
|
|
46
|
+
} | {
|
|
47
|
+
items: string;
|
|
48
|
+
fields: string[];
|
|
49
|
+
} | undefined;
|
|
50
|
+
name: string;
|
|
51
|
+
description: string;
|
|
52
|
+
method: string;
|
|
53
|
+
path: string;
|
|
54
|
+
params: Record<string, Json>;
|
|
55
|
+
}[];
|
|
56
|
+
allowInsecureHttp?: boolean | undefined;
|
|
57
|
+
baseUrl: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
notes: string[];
|
|
61
|
+
};
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
// Drafts a connector.json for the http connector from an OpenAPI 3.x spec (JSON), for
|
|
2
|
+
// scripts/openapi-to-connector.ts and the admin API's internal app drafts. The draft loads, but
|
|
3
|
+
// a person finishes it: copy, capabilities, limits, answer limits.
|
|
4
|
+
const METHODS = ["get", "post", "put", "patch", "delete"];
|
|
5
|
+
const SCALARS = new Set(["string", "number", "integer", "boolean"]);
|
|
6
|
+
const snake = (s) => s
|
|
7
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1_$2")
|
|
8
|
+
.toLowerCase()
|
|
9
|
+
.replace(/[^a-z0-9]+/g, "_")
|
|
10
|
+
.replace(/^[^a-z]+|_+$/g, "");
|
|
11
|
+
const firstLine = (s) => typeof s === "string"
|
|
12
|
+
? s
|
|
13
|
+
.trim()
|
|
14
|
+
.split(/\n\s*\n|\r?\n/)[0]
|
|
15
|
+
.slice(0, 300)
|
|
16
|
+
: "";
|
|
17
|
+
export function draftConnector(spec, options) {
|
|
18
|
+
const notes = [];
|
|
19
|
+
if (typeof spec.openapi !== "string" || !spec.openapi.startsWith("3."))
|
|
20
|
+
throw new Error("This takes an OpenAPI 3.x spec (its openapi field starts with 3.)");
|
|
21
|
+
// Follows local $refs (#/components/...); other specs' refs are left out.
|
|
22
|
+
const resolve = (node, seen = 0) => {
|
|
23
|
+
if (!node || typeof node !== "object")
|
|
24
|
+
return {};
|
|
25
|
+
const ref = node.$ref;
|
|
26
|
+
if (typeof ref !== "string")
|
|
27
|
+
return node;
|
|
28
|
+
if (!ref.startsWith("#/") || seen > 20) {
|
|
29
|
+
notes.push(`Left out ${ref}: only references inside the spec are followed`);
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
const target = ref
|
|
33
|
+
.slice(2)
|
|
34
|
+
.split("/")
|
|
35
|
+
.reduce((at, key) => at?.[key.replace(/~1/g, "/").replace(/~0/g, "~")], spec);
|
|
36
|
+
return resolve(target, seen + 1);
|
|
37
|
+
};
|
|
38
|
+
const objectOf = (raw) => {
|
|
39
|
+
const s = resolve(raw);
|
|
40
|
+
const parts = Array.isArray(s.allOf) ? s.allOf.map((p) => objectOf(p)) : [];
|
|
41
|
+
return {
|
|
42
|
+
properties: Object.assign({}, ...parts.map((p) => p.properties), s.properties ?? {}),
|
|
43
|
+
required: [
|
|
44
|
+
...parts.flatMap((p) => p.required),
|
|
45
|
+
...(Array.isArray(s.required) ? s.required : []),
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
const typeOf = (s) => (Array.isArray(s.type) ? s.type.find((t) => t !== "null") : s.type);
|
|
50
|
+
// The http connector's param fields for a schema, or null for one it cannot take (an object).
|
|
51
|
+
const shape = (raw) => {
|
|
52
|
+
const s = resolve(raw);
|
|
53
|
+
const type = typeOf(s);
|
|
54
|
+
const items = type === "array" ? resolve(s.items) : null;
|
|
55
|
+
const scalar = items ? typeOf(items) : type;
|
|
56
|
+
if (!scalar || !SCALARS.has(scalar))
|
|
57
|
+
return null;
|
|
58
|
+
const fits = (v) => scalar === "integer"
|
|
59
|
+
? Number.isInteger(v)
|
|
60
|
+
: typeof v === (scalar === "integer" ? "number" : scalar);
|
|
61
|
+
const values = (items ?? s).enum;
|
|
62
|
+
const allowed = Array.isArray(values) && values.length && values.every(fits) ? values : undefined;
|
|
63
|
+
const ok = (v) => fits(v) && (!allowed || allowed.includes(v));
|
|
64
|
+
const noDefault = s.default === undefined ||
|
|
65
|
+
(items ? !Array.isArray(s.default) || !s.default.every(ok) : !ok(s.default));
|
|
66
|
+
return {
|
|
67
|
+
type: items ? "array" : scalar,
|
|
68
|
+
...(items ? { items: scalar } : {}),
|
|
69
|
+
...(allowed ? { enum: allowed } : {}),
|
|
70
|
+
...(noDefault ? {} : { default: s.default }),
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
const scalarFields = (raw) => Object.entries(objectOf(raw).properties)
|
|
74
|
+
.filter(([, p]) => SCALARS.has(typeOf(resolve(p)) ?? ""))
|
|
75
|
+
.map(([k]) => k);
|
|
76
|
+
const resultOf = (op) => {
|
|
77
|
+
const responses = resolve(op.responses);
|
|
78
|
+
const ok = Object.keys(responses).find((code) => /^2/.test(code));
|
|
79
|
+
const schema = ok && resolve(resolve(resolve(responses[ok]).content)["application/json"]).schema;
|
|
80
|
+
if (!schema)
|
|
81
|
+
return undefined;
|
|
82
|
+
const s = resolve(schema);
|
|
83
|
+
if (typeOf(s) === "array") {
|
|
84
|
+
const fields = scalarFields(s.items);
|
|
85
|
+
return fields.length ? { fields } : undefined;
|
|
86
|
+
}
|
|
87
|
+
const props = objectOf(s).properties;
|
|
88
|
+
// A list of records inside an object is taken as the page, e.g. {issues: [...], next}.
|
|
89
|
+
const lists = Object.entries(props)
|
|
90
|
+
.filter(([, p]) => typeOf(resolve(p)) === "array")
|
|
91
|
+
.map(([k, p]) => [k, scalarFields(resolve(p).items)])
|
|
92
|
+
.filter(([, fields]) => fields.length);
|
|
93
|
+
if (lists.length === 1)
|
|
94
|
+
return { items: lists[0][0], fields: lists[0][1] };
|
|
95
|
+
const fields = scalarFields(s);
|
|
96
|
+
return fields.length ? { fields } : undefined;
|
|
97
|
+
};
|
|
98
|
+
const app = snake(options.id);
|
|
99
|
+
const info = resolve(spec.info);
|
|
100
|
+
const title = typeof info.title === "string" && info.title.trim() ? info.title.trim() : options.id;
|
|
101
|
+
const picked = [];
|
|
102
|
+
for (const [path, rawItem] of Object.entries(resolve(spec.paths))) {
|
|
103
|
+
const item = resolve(rawItem);
|
|
104
|
+
for (const method of METHODS) {
|
|
105
|
+
const op = item[method];
|
|
106
|
+
if (!op)
|
|
107
|
+
continue;
|
|
108
|
+
const tags = Array.isArray(op.tags) ? op.tags : [];
|
|
109
|
+
if (options.operations?.includes(op.operationId) ||
|
|
110
|
+
options.tags?.some((t) => tags.includes(t)))
|
|
111
|
+
picked.push({ path, method, op, shared: item.parameters ?? [] });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const missing = (options.operations ?? []).filter((id) => !picked.some((p) => p.op.operationId === id));
|
|
115
|
+
if (missing.length)
|
|
116
|
+
throw new Error(`No operation has the id ${missing.join(", ")}`);
|
|
117
|
+
if (!picked.length)
|
|
118
|
+
throw new Error("No operation matched: name operations or tags");
|
|
119
|
+
const tools = picked.map(({ path, method, op, shared }) => {
|
|
120
|
+
const opId = typeof op.operationId === "string" ? op.operationId : `${method} ${path}`;
|
|
121
|
+
const base = snake(opId);
|
|
122
|
+
const name = base.startsWith(`${app}_`) ? base : `${app}_${base}`;
|
|
123
|
+
const params = {};
|
|
124
|
+
const add = (key, param, why) => {
|
|
125
|
+
if (params[key])
|
|
126
|
+
notes.push(`${name}: left out ${why}, its name is taken by another param`);
|
|
127
|
+
else
|
|
128
|
+
params[key] = param;
|
|
129
|
+
};
|
|
130
|
+
const byPlace = new Map();
|
|
131
|
+
for (const raw of [...shared, ...(op.parameters ?? [])]) {
|
|
132
|
+
const p = resolve(raw);
|
|
133
|
+
byPlace.set(`${p.in}:${p.name}`, p);
|
|
134
|
+
}
|
|
135
|
+
let template = path;
|
|
136
|
+
for (const p of byPlace.values()) {
|
|
137
|
+
const wire = String(p.name);
|
|
138
|
+
if (p.in !== "path" && p.in !== "query") {
|
|
139
|
+
notes.push(`${name}: left out the ${p.in} param ${wire} (a fixed header goes in http.headers)`);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
const fields = shape(p.schema);
|
|
143
|
+
if (!fields) {
|
|
144
|
+
notes.push(`${name}: left out ${wire}, whose type the http connector cannot take`);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const key = snake(wire) || "param";
|
|
148
|
+
if (p.in === "path")
|
|
149
|
+
template = template.replaceAll(`{${wire}}`, `{${key}}`);
|
|
150
|
+
if (p.in === "path")
|
|
151
|
+
delete fields.default;
|
|
152
|
+
const style = p.style ?? "form";
|
|
153
|
+
const join = fields.type === "array" && p.in === "query"
|
|
154
|
+
? style === "spaceDelimited"
|
|
155
|
+
? " "
|
|
156
|
+
: style === "pipeDelimited"
|
|
157
|
+
? "|"
|
|
158
|
+
: p.explode === false
|
|
159
|
+
? ","
|
|
160
|
+
: undefined
|
|
161
|
+
: undefined;
|
|
162
|
+
add(key, {
|
|
163
|
+
...fields,
|
|
164
|
+
description: firstLine(p.description) || firstLine(resolve(p.schema).description) || wire,
|
|
165
|
+
in: p.in,
|
|
166
|
+
...(key === wire || p.in === "path" ? {} : { name: wire }),
|
|
167
|
+
...(p.in === "path" || p.required === true || fields.default !== undefined
|
|
168
|
+
? {}
|
|
169
|
+
: { required: false }),
|
|
170
|
+
...(join ? { join } : {}),
|
|
171
|
+
}, `query param ${wire}`);
|
|
172
|
+
}
|
|
173
|
+
const body = resolve(op.requestBody);
|
|
174
|
+
const content = resolve(body.content);
|
|
175
|
+
if (method === "get" && op.requestBody)
|
|
176
|
+
notes.push(`${name}: left out its request body (a GET)`);
|
|
177
|
+
else if (op.requestBody && !content["application/json"])
|
|
178
|
+
notes.push(`${name}: left out its request body, which is not JSON`);
|
|
179
|
+
else if (op.requestBody) {
|
|
180
|
+
const { properties, required } = objectOf(resolve(content["application/json"]).schema);
|
|
181
|
+
if (!Object.keys(properties).length)
|
|
182
|
+
notes.push(`${name}: its request body has no listed fields, so it sends none`);
|
|
183
|
+
for (const [wire, raw] of Object.entries(properties)) {
|
|
184
|
+
const prop = resolve(raw);
|
|
185
|
+
if (prop.readOnly)
|
|
186
|
+
continue;
|
|
187
|
+
const fields = shape(prop);
|
|
188
|
+
if (!fields) {
|
|
189
|
+
notes.push(`${name}: left out body field ${wire}, an object or a type not supported`);
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
const key = snake(wire) || "field";
|
|
193
|
+
add(key, {
|
|
194
|
+
...fields,
|
|
195
|
+
description: firstLine(prop.description) || wire,
|
|
196
|
+
in: "body",
|
|
197
|
+
...(key === wire ? {} : { name: wire }),
|
|
198
|
+
...(required.includes(wire) || fields.default !== undefined ? {} : { required: false }),
|
|
199
|
+
}, `body field ${wire}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
const result = method === "get" ? resultOf(op) : undefined;
|
|
203
|
+
if (result)
|
|
204
|
+
notes.push(`${name}: its answer is trimmed to fields guessed from the spec; check them`);
|
|
205
|
+
return {
|
|
206
|
+
name,
|
|
207
|
+
description: firstLine(op.summary) || firstLine(op.description) || `${method.toUpperCase()} ${path}`,
|
|
208
|
+
method: method.toUpperCase(),
|
|
209
|
+
path: template,
|
|
210
|
+
params,
|
|
211
|
+
...(result ? { result } : {}),
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
const baseUrl = (() => {
|
|
215
|
+
const server = resolve(spec.servers?.[0]);
|
|
216
|
+
let url = typeof server.url === "string" ? server.url : "";
|
|
217
|
+
for (const [name, v] of Object.entries(resolve(server.variables)))
|
|
218
|
+
url = url.replaceAll(`{${name}}`, String(resolve(v).default ?? ""));
|
|
219
|
+
if (!url || !URL.canParse(url, options.source)) {
|
|
220
|
+
notes.push("The spec names no server address: set http.baseUrl");
|
|
221
|
+
return "https://app.example.com";
|
|
222
|
+
}
|
|
223
|
+
return new URL(url, options.source).href.replace(/\/+$/, "");
|
|
224
|
+
})();
|
|
225
|
+
const auth = authOf();
|
|
226
|
+
function authOf() {
|
|
227
|
+
const requirement = [
|
|
228
|
+
...(picked[0].op.security ?? spec.security ?? []),
|
|
229
|
+
][0];
|
|
230
|
+
const schemeName = requirement && Object.keys(requirement)[0];
|
|
231
|
+
const scheme = schemeName
|
|
232
|
+
? resolve(resolve(resolve(spec.components).securitySchemes)[schemeName])
|
|
233
|
+
: {};
|
|
234
|
+
const secret = (id, label) => ({ id, label, secret: true });
|
|
235
|
+
const plain = (id, label) => ({ id, label, secret: false });
|
|
236
|
+
if (scheme.type === "apiKey" && scheme.in === "header") {
|
|
237
|
+
if (String(scheme.name).toLowerCase() === "authorization")
|
|
238
|
+
notes.push("The key goes in Authorization: add auth.prefix if a word comes before it");
|
|
239
|
+
return {
|
|
240
|
+
auth: { type: "header", header: scheme.name, value: "api_key" },
|
|
241
|
+
fields: [secret("api_key", "API key")],
|
|
242
|
+
credential: "an API key",
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
if (scheme.type === "apiKey" && scheme.in === "query")
|
|
246
|
+
return {
|
|
247
|
+
auth: { type: "query", param: scheme.name, value: "api_key" },
|
|
248
|
+
fields: [secret("api_key", "API key")],
|
|
249
|
+
credential: "an API key",
|
|
250
|
+
};
|
|
251
|
+
if (scheme.type === "http" && String(scheme.scheme).toLowerCase() === "basic")
|
|
252
|
+
return {
|
|
253
|
+
auth: { type: "basic", username: "username", password: "password" },
|
|
254
|
+
fields: [plain("username", "Username"), secret("password", "Password")],
|
|
255
|
+
credential: "a username and password",
|
|
256
|
+
};
|
|
257
|
+
const flow = resolve(resolve(scheme.flows).clientCredentials);
|
|
258
|
+
if (scheme.type === "oauth2" && typeof flow.tokenUrl === "string")
|
|
259
|
+
return {
|
|
260
|
+
auth: {
|
|
261
|
+
type: "oauth2",
|
|
262
|
+
tokenUrl: new URL(flow.tokenUrl, baseUrl).href,
|
|
263
|
+
clientId: "client_id",
|
|
264
|
+
clientSecret: "client_secret",
|
|
265
|
+
},
|
|
266
|
+
fields: [plain("client_id", "Client ID"), secret("client_secret", "Client secret")],
|
|
267
|
+
credential: "a client ID and secret",
|
|
268
|
+
};
|
|
269
|
+
if (!(scheme.type === "http" && String(scheme.scheme).toLowerCase() === "bearer"))
|
|
270
|
+
notes.push(schemeName
|
|
271
|
+
? `Sign-in ${schemeName} (${String(scheme.type)}) does not map to one the http connector has; the draft uses a token, which may work if the app issues tokens for services`
|
|
272
|
+
: "The spec names no sign-in; the draft uses a token");
|
|
273
|
+
return {
|
|
274
|
+
auth: { type: "bearer", token: "token" },
|
|
275
|
+
fields: [secret("token", "Token")],
|
|
276
|
+
credential: "a token",
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
const insecure = !baseUrl.startsWith("https://");
|
|
280
|
+
if (insecure)
|
|
281
|
+
notes.push("The address is plain http: allowInsecureHttp is on, check that it must be");
|
|
282
|
+
const group = (label, id, description, list, destructive = false) => list.length
|
|
283
|
+
? [
|
|
284
|
+
{
|
|
285
|
+
id,
|
|
286
|
+
label,
|
|
287
|
+
description,
|
|
288
|
+
...(destructive ? { destructive: true } : {}),
|
|
289
|
+
scopes: [],
|
|
290
|
+
permissions: [],
|
|
291
|
+
tools: list.map((t) => t.name),
|
|
292
|
+
},
|
|
293
|
+
]
|
|
294
|
+
: [];
|
|
295
|
+
const reads = tools.filter((t) => t.method === "GET");
|
|
296
|
+
const writes = tools.filter((t) => !["GET", "DELETE"].includes(t.method));
|
|
297
|
+
if (writes.length)
|
|
298
|
+
notes.push("Writes: mark any tool that overwrites data destructive, and move it with the deletes");
|
|
299
|
+
const check = reads.find((t) => Object.values(t.params).every((p) => p.required === false || p.default !== undefined));
|
|
300
|
+
if (!check)
|
|
301
|
+
notes.push("No read without required params to check the connection with: set verify.path");
|
|
302
|
+
const shown = check?.result?.fields?.[0] ?? "id";
|
|
303
|
+
const connector = {
|
|
304
|
+
id: options.id,
|
|
305
|
+
name: title,
|
|
306
|
+
description: firstLine(info.description) || `Let agents use ${title}.`,
|
|
307
|
+
logo: `/brand/registry/${options.id}.svg`,
|
|
308
|
+
identity: `${auth.credential.replace(/^\w/, (c) => c.toUpperCase())} for ${title}.`,
|
|
309
|
+
accountKey: "host",
|
|
310
|
+
connectionKind: "guided",
|
|
311
|
+
setup: [
|
|
312
|
+
{
|
|
313
|
+
title: "Create a credential for agents",
|
|
314
|
+
body: `In ${title}, create ${auth.credential} for agents, with only the access they need.`,
|
|
315
|
+
},
|
|
316
|
+
],
|
|
317
|
+
afterConnect: [],
|
|
318
|
+
fields: auth.fields,
|
|
319
|
+
capabilities: [
|
|
320
|
+
...group("Read", "read", `Look things up in ${title}.`, reads),
|
|
321
|
+
...group("Make changes", "write", `Create and change things in ${title}.`, writes),
|
|
322
|
+
...group("Delete", "delete", `Delete things in ${title}.`, tools.filter((t) => t.method === "DELETE"), true),
|
|
323
|
+
],
|
|
324
|
+
limits: [],
|
|
325
|
+
verify: {
|
|
326
|
+
method: "GET",
|
|
327
|
+
path: check?.path ?? "/",
|
|
328
|
+
label: `${title} answers`,
|
|
329
|
+
show: shown,
|
|
330
|
+
},
|
|
331
|
+
revoke: `Delete the credential in ${title}.`,
|
|
332
|
+
http: {
|
|
333
|
+
baseUrl,
|
|
334
|
+
...(insecure ? { allowInsecureHttp: true } : {}),
|
|
335
|
+
auth: auth.auth,
|
|
336
|
+
tools,
|
|
337
|
+
},
|
|
338
|
+
};
|
|
339
|
+
notes.push("Add limits (and answerLimits on reads by id) for the values agents may be narrowed to", "Add paging to list tools that take a cursor or page number", "Rewrite the name, description, setup and revoke copy in plain words for the admin");
|
|
340
|
+
return { connector, notes };
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=openapi.js.map
|