@arbium/enterprise-agent-connect 0.1.2-dev.d2aa5ca → 0.2.1-dev.fd7a648
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 +15 -5
- 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/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/http/index.d.ts +2 -6
- package/dist/connectors/http/index.js +4 -1
- 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/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/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.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/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/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/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/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/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 +37 -27
- package/dist/packages/connector-kit/src/connector.js +50 -11
- 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 +1 -1
- package/dist/packages/connector-kit/src/oauth.js +4 -2
- 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 +2417 -253
- 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 +4 -3
- 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 +1113 -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
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../connectors/http/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("
|
|
1
|
+
declare const _default: import("../microsoft/client.js").BuiltinModule;
|
|
2
2
|
export default _default;
|
|
@@ -58,7 +58,11 @@ export function jamfVendor(fetchImpl = fetch) {
|
|
|
58
58
|
throw new ConnectError("Jamf Pro refused reading sites. Add Read Sites to the API role, then check again.");
|
|
59
59
|
if (res.status !== 200 || !Array.isArray(res.data))
|
|
60
60
|
throw new ConnectError(`Jamf Pro answered ${res.status} for its sites`);
|
|
61
|
-
|
|
61
|
+
const sites = res.data;
|
|
62
|
+
return {
|
|
63
|
+
values: sites.map((s) => String(s.id)),
|
|
64
|
+
labels: Object.fromEntries(sites.map((s) => [String(s.id), s.name ?? String(s.id)])),
|
|
65
|
+
};
|
|
62
66
|
},
|
|
63
67
|
},
|
|
64
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../connectors/jamf/vendor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../connectors/jamf/vendor.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
{
|
|
60
60
|
"id": "read",
|
|
61
61
|
"label": "Read issues",
|
|
62
|
-
"description": "Search and read issues and list projects.",
|
|
62
|
+
"description": "Search and read issues and list projects. It also reads who the service account is, so an agent's own changes start no trigger.",
|
|
63
63
|
"required": true,
|
|
64
|
-
"scopes": ["read:jira-work"],
|
|
64
|
+
"scopes": ["read:jira-work", "read:jira-user"],
|
|
65
65
|
"permissions": ["Browse projects"],
|
|
66
66
|
"tools": ["jira_search_issues", "jira_get_issue", "jira_list_projects"]
|
|
67
67
|
},
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
"types": [
|
|
262
262
|
{
|
|
263
263
|
"type": "jira:issue_created",
|
|
264
|
-
"
|
|
264
|
+
"since": "issue.fields.created"
|
|
265
265
|
},
|
|
266
266
|
{
|
|
267
267
|
"type": "jira:issue_updated"
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type Fetch, type Vendor } from "../../packages/connector-kit/src/types.js";
|
|
2
2
|
export declare function normalizeSite(input: string): string;
|
|
3
|
-
export declare function jiraVendor(
|
|
3
|
+
export declare function jiraVendor(unguarded?: Fetch): Vendor;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { vendorFetch } from "../../packages/connector-kit/src/fetch.js";
|
|
2
3
|
import { ConnectError, TokenCache, } from "../../packages/connector-kit/src/types.js";
|
|
3
4
|
// Atlassian service account, OAuth 2.0 client credentials. Tokens last 60 minutes and
|
|
4
5
|
// reach Jira through api.atlassian.com/ex/jira/{cloudId}.
|
|
@@ -18,7 +19,8 @@ export function normalizeSite(input) {
|
|
|
18
19
|
throw new ConnectError("Enter the Jira site name, the part before .atlassian.net");
|
|
19
20
|
return host;
|
|
20
21
|
}
|
|
21
|
-
export function jiraVendor(
|
|
22
|
+
export function jiraVendor(unguarded = fetch) {
|
|
23
|
+
const fetchImpl = vendorFetch("Jira", unguarded);
|
|
22
24
|
const tokens = new TokenCache();
|
|
23
25
|
const token = (clientId, clientSecret) => tokens.get(createHash("sha256").update(`${clientId}\n${clientSecret}`).digest("hex"), async () => {
|
|
24
26
|
const res = await fetchImpl(AUTH_URL, {
|
|
@@ -79,7 +81,11 @@ export function jiraVendor(fetchImpl = fetch) {
|
|
|
79
81
|
body: request.body === undefined ? undefined : JSON.stringify(request.body),
|
|
80
82
|
});
|
|
81
83
|
const raw = await res.text();
|
|
82
|
-
return {
|
|
84
|
+
return {
|
|
85
|
+
status: res.status,
|
|
86
|
+
data: raw ? safeJson(raw) : null,
|
|
87
|
+
headers: Object.fromEntries(res.headers),
|
|
88
|
+
};
|
|
83
89
|
},
|
|
84
90
|
};
|
|
85
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../connectors/jira/vendor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../connectors/jira/vendor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Toolset } from "../../packages/connector-kit/src/common.js";
|
|
2
|
-
import { type ConnectorModule } from "../../packages/connector-kit/src/connector.js";
|
|
2
|
+
import { type ConnectorContext, type ConnectorModule } from "../../packages/connector-kit/src/connector.js";
|
|
3
3
|
import { type CheckInput, type Fetch, type ProviderClient, type Vendor, type VendorConnection, type VendorRequest } from "../../packages/connector-kit/src/types.js";
|
|
4
4
|
/** config.auth of a connection approved for the shared app. A value stored in existing rows
|
|
5
5
|
* (it predates the service's own name), so it never changes. */
|
|
@@ -18,11 +18,14 @@ export declare function tokenRoles(jwt: string): string[];
|
|
|
18
18
|
export declare function compareRoles(granted: string[], input: CheckInput): string | undefined;
|
|
19
19
|
export declare function microsoftClient(options: {
|
|
20
20
|
sharedApp: SharedApp | null;
|
|
21
|
-
},
|
|
21
|
+
}, unguarded?: Fetch, sleep?: (ms: number) => Promise<unknown>): {
|
|
22
22
|
provider: ProviderClient;
|
|
23
23
|
call: (connection: VendorConnection, request: VendorRequest, origin?: string) => Promise<{
|
|
24
24
|
status: number;
|
|
25
25
|
data: unknown;
|
|
26
|
+
headers: {
|
|
27
|
+
[k: string]: string;
|
|
28
|
+
};
|
|
26
29
|
}>;
|
|
27
30
|
permissions: (connection: VendorConnection, input: CheckInput) => Promise<{
|
|
28
31
|
values: string[];
|
|
@@ -49,10 +52,15 @@ export declare function microsoftClient(options: {
|
|
|
49
52
|
};
|
|
50
53
|
};
|
|
51
54
|
export type MicrosoftClient = ReturnType<typeof microsoftClient>;
|
|
55
|
+
/** What a built-in app's module is given: also the deployment's Microsoft client. */
|
|
56
|
+
export type BuiltinContext = ConnectorContext & {
|
|
57
|
+
microsoft: MicrosoftClient;
|
|
58
|
+
};
|
|
59
|
+
export type BuiltinModule = ConnectorModule<BuiltinContext>;
|
|
52
60
|
/** Apps that need only the Microsoft connection: Outlook mail and calendar (mailboxes are
|
|
53
61
|
* reached through the customer's Exchange role assignments to the app, scoped to the
|
|
54
62
|
* branding's mailbox group, never through Graph Mail or Calendars permissions), Teams, Entra ID
|
|
55
63
|
* and Intune. `keep`: the app's own choice fields kept in its config; nothing else the form
|
|
56
64
|
* sends is, so no field can shadow the provider's config. */
|
|
57
65
|
export declare function mailboxVendor(ms: MicrosoftClient, keep?: readonly string[]): Vendor;
|
|
58
|
-
export declare const microsoftApp: (id: string, toolset: Toolset) =>
|
|
66
|
+
export declare const microsoftApp: (id: string, toolset: Toolset) => BuiltinModule;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { brand } from "../../packages/connector-kit/src/branding.js";
|
|
3
3
|
import { clientAssertion } from "../../packages/connector-kit/src/certificate.js";
|
|
4
|
-
import { choiceFields } from "../../packages/connector-kit/src/connector.js";
|
|
4
|
+
import { choiceFields, } from "../../packages/connector-kit/src/connector.js";
|
|
5
|
+
import { vendorFetch, vendorUrl } from "../../packages/connector-kit/src/fetch.js";
|
|
5
6
|
import { ConnectError, TokenCache, } from "../../packages/connector-kit/src/types.js";
|
|
6
7
|
// One Microsoft connection per organization, shared by the Microsoft apps (mail, files).
|
|
7
8
|
// Normally the customer's own single-tenant Entra app, signing in with a certificate the
|
|
@@ -72,7 +73,8 @@ function safeJson(raw) {
|
|
|
72
73
|
return raw;
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
|
-
export function microsoftClient(options,
|
|
76
|
+
export function microsoftClient(options, unguarded = fetch, sleep = (ms) => new Promise((r) => setTimeout(r, ms))) {
|
|
77
|
+
const fetchImpl = vendorFetch("Microsoft", unguarded, (s) => sleep(s * 1000));
|
|
76
78
|
const { sharedApp } = options;
|
|
77
79
|
const tokens = new TokenCache();
|
|
78
80
|
async function requestToken(tenant, form) {
|
|
@@ -143,10 +145,44 @@ export function microsoftClient(options, fetchImpl = fetch, sleep = (ms) => new
|
|
|
143
145
|
c.secret.client_secret,
|
|
144
146
|
].join("\n"))
|
|
145
147
|
.digest("hex");
|
|
148
|
+
// A download read only up to `max` bytes: a file larger than its details said is stopped
|
|
149
|
+
// while it streams, never held whole.
|
|
150
|
+
async function readCapped(res, max) {
|
|
151
|
+
const tooLarge = () => new ConnectError(`The file is larger than ${max} bytes, so it was not downloaded`);
|
|
152
|
+
if (Number(res.headers.get("content-length") ?? 0) > max) {
|
|
153
|
+
await res.body?.cancel();
|
|
154
|
+
throw tooLarge();
|
|
155
|
+
}
|
|
156
|
+
const chunks = [];
|
|
157
|
+
let total = 0;
|
|
158
|
+
const reader = res.body?.getReader();
|
|
159
|
+
while (reader) {
|
|
160
|
+
const { done, value } = await reader.read();
|
|
161
|
+
if (done)
|
|
162
|
+
break;
|
|
163
|
+
total += value.byteLength;
|
|
164
|
+
if (total > max) {
|
|
165
|
+
await reader.cancel();
|
|
166
|
+
throw tooLarge();
|
|
167
|
+
}
|
|
168
|
+
chunks.push(value);
|
|
169
|
+
}
|
|
170
|
+
const data = new Uint8Array(total);
|
|
171
|
+
let at = 0;
|
|
172
|
+
for (const c of chunks) {
|
|
173
|
+
data.set(c, at);
|
|
174
|
+
at += c.byteLength;
|
|
175
|
+
}
|
|
176
|
+
return data;
|
|
177
|
+
}
|
|
146
178
|
async function send(token, request, origin = GRAPH) {
|
|
147
179
|
// Uploads send the file's bytes; everything else is JSON.
|
|
148
180
|
const raw = request.body instanceof Uint8Array;
|
|
149
|
-
|
|
181
|
+
// A file's content answers 302 to a pre-authenticated SharePoint download address, fetched
|
|
182
|
+
// without the token; any other redirect is refused.
|
|
183
|
+
const download = request.responseType ? unguarded : fetchImpl;
|
|
184
|
+
let res = await download(vendorUrl(origin, request.path), {
|
|
185
|
+
redirect: "manual",
|
|
150
186
|
method: request.method,
|
|
151
187
|
headers: {
|
|
152
188
|
authorization: `Bearer ${token}`,
|
|
@@ -162,9 +198,23 @@ export function microsoftClient(options, fetchImpl = fetch, sleep = (ms) => new
|
|
|
162
198
|
? request.body
|
|
163
199
|
: JSON.stringify(request.body),
|
|
164
200
|
});
|
|
201
|
+
if (download === unguarded && res.status >= 300 && res.status < 400) {
|
|
202
|
+
await res.body?.cancel();
|
|
203
|
+
res = await fetchImpl(sharePointUrl(res.headers.get("location") ?? ""));
|
|
204
|
+
}
|
|
205
|
+
if (request.responseType === "bytes" && res.ok)
|
|
206
|
+
return {
|
|
207
|
+
status: res.status,
|
|
208
|
+
data: await readCapped(res, request.maxBytes ?? Infinity),
|
|
209
|
+
headers: Object.fromEntries(res.headers),
|
|
210
|
+
};
|
|
165
211
|
const text = await res.text();
|
|
166
212
|
const asText = request.responseType === "text" && res.ok;
|
|
167
|
-
return {
|
|
213
|
+
return {
|
|
214
|
+
status: res.status,
|
|
215
|
+
data: asText ? text : text ? safeJson(text) : null,
|
|
216
|
+
headers: Object.fromEntries(res.headers),
|
|
217
|
+
};
|
|
168
218
|
}
|
|
169
219
|
/** A request to Graph, or to `origin` with a token for it, re-minting the token once on a
|
|
170
220
|
* 401. */
|
|
@@ -362,10 +412,7 @@ export function microsoftClient(options, fetchImpl = fetch, sleep = (ms) => new
|
|
|
362
412
|
// Cancels an upload session. Its address is pre-authenticated, so no token is sent, and
|
|
363
413
|
// only a SharePoint address is called.
|
|
364
414
|
async function cancelUpload(uploadUrl) {
|
|
365
|
-
|
|
366
|
-
if (url.protocol !== "https:" || !/\.sharepoint\.com$/i.test(url.hostname))
|
|
367
|
-
throw new Error(`Upload session address is not SharePoint: ${url.hostname}`);
|
|
368
|
-
return (await fetchImpl(url.toString(), { method: "DELETE" })).status;
|
|
415
|
+
return (await fetchImpl(sharePointUrl(uploadUrl), { method: "DELETE" })).status;
|
|
369
416
|
}
|
|
370
417
|
// An administrator signing in to the connection's own app, for what Microsoft allows only on
|
|
371
418
|
// a person's behalf (publishing to the Teams app catalog). The token is used at once and
|
|
@@ -406,6 +453,13 @@ export function microsoftClient(options, fetchImpl = fetch, sleep = (ms) => new
|
|
|
406
453
|
};
|
|
407
454
|
return { provider, call, permissions, cancelUpload, delegated };
|
|
408
455
|
}
|
|
456
|
+
// Pre-authenticated addresses Graph hands out (downloads, upload sessions) are on SharePoint.
|
|
457
|
+
function sharePointUrl(raw) {
|
|
458
|
+
const url = URL.parse(raw);
|
|
459
|
+
if (url?.protocol !== "https:" || !/\.sharepoint\.com$/i.test(url.hostname))
|
|
460
|
+
throw new ConnectError(`Microsoft pointed to an address that is not SharePoint: ${url?.hostname ?? "none"}`);
|
|
461
|
+
return url.toString();
|
|
462
|
+
}
|
|
409
463
|
/** Apps that need only the Microsoft connection: Outlook mail and calendar (mailboxes are
|
|
410
464
|
* reached through the customer's Exchange role assignments to the app, scoped to the
|
|
411
465
|
* branding's mailbox group, never through Graph Mail or Calendars permissions), Teams, Entra ID
|