@arbium/enterprise-agent-connect 0.1.1 → 0.1.2-dev.9022f22
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 +164 -12
- package/dist/connectors/dell-techdirect/index.d.ts +8 -0
- package/dist/connectors/dell-techdirect/tools.d.ts +2 -0
- package/dist/connectors/dell-techdirect/vendor.d.ts +6 -0
- package/dist/connectors/dynamics-365/connector.json +228 -0
- package/dist/connectors/dynamics-365/index.d.ts +8 -0
- package/dist/connectors/dynamics-365/index.js +10 -0
- package/dist/connectors/dynamics-365/index.js.map +1 -0
- package/dist/connectors/dynamics-365/tools.d.ts +35 -0
- package/dist/connectors/dynamics-365/tools.js +806 -0
- package/dist/connectors/dynamics-365/tools.js.map +1 -0
- package/dist/connectors/dynamics-365/vendor.d.ts +9 -0
- package/dist/connectors/dynamics-365/vendor.js +110 -0
- package/dist/connectors/dynamics-365/vendor.js.map +1 -0
- package/dist/connectors/entra/index.d.ts +2 -0
- package/dist/connectors/entra/tools.d.ts +14 -0
- package/dist/connectors/fedex/index.d.ts +8 -0
- package/dist/connectors/fedex/tools.d.ts +3 -0
- package/dist/connectors/fedex/vendor.d.ts +7 -0
- package/dist/connectors/gong/connector.json +127 -0
- package/dist/connectors/gong/index.d.ts +8 -0
- package/dist/connectors/gong/index.js +7 -0
- package/dist/connectors/gong/index.js.map +1 -0
- package/dist/connectors/gong/tools.d.ts +8 -0
- package/dist/connectors/gong/tools.js +424 -0
- package/dist/connectors/gong/tools.js.map +1 -0
- package/dist/connectors/gong/vendor.d.ts +4 -0
- package/dist/connectors/gong/vendor.js +89 -0
- package/dist/connectors/gong/vendor.js.map +1 -0
- package/dist/connectors/http/index.d.ts +34 -0
- package/dist/connectors/http/index.js +154 -64
- package/dist/connectors/http/index.js.map +1 -1
- package/dist/connectors/intune/index.d.ts +2 -0
- package/dist/connectors/intune/tools.d.ts +12 -0
- package/dist/connectors/jamf/connector.json +182 -0
- package/dist/connectors/jamf/index.d.ts +8 -0
- package/dist/connectors/jamf/index.js +7 -0
- package/dist/connectors/jamf/index.js.map +1 -0
- package/dist/connectors/jamf/tools.d.ts +7 -0
- package/dist/connectors/jamf/tools.js +659 -0
- package/dist/connectors/jamf/tools.js.map +1 -0
- package/dist/connectors/jamf/vendor.d.ts +5 -0
- package/dist/connectors/jamf/vendor.js +70 -0
- package/dist/connectors/jamf/vendor.js.map +1 -0
- package/dist/connectors/jira/connector.json +144 -1
- package/dist/connectors/jira/index.d.ts +8 -0
- package/dist/connectors/jira/jql.d.ts +4 -0
- package/dist/connectors/jira/tools.d.ts +3 -0
- package/dist/connectors/jira/vendor.d.ts +3 -0
- package/dist/connectors/jira/vendor.js +8 -2
- package/dist/connectors/jira/vendor.js.map +1 -1
- package/dist/connectors/microsoft/client.d.ts +66 -0
- package/dist/connectors/microsoft/client.js +26 -8
- package/dist/connectors/microsoft/client.js.map +1 -1
- package/dist/connectors/netsuite/connector.json +317 -0
- package/dist/connectors/netsuite/index.d.ts +8 -0
- package/dist/connectors/netsuite/index.js +7 -0
- package/dist/connectors/netsuite/index.js.map +1 -0
- package/dist/connectors/netsuite/tools.d.ts +24 -0
- package/dist/connectors/netsuite/tools.js +447 -0
- package/dist/connectors/netsuite/tools.js.map +1 -0
- package/dist/connectors/netsuite/vendor.d.ts +26 -0
- package/dist/connectors/netsuite/vendor.js +247 -0
- package/dist/connectors/netsuite/vendor.js.map +1 -0
- package/dist/connectors/odata/index.d.ts +33 -0
- package/dist/connectors/odata/index.js +460 -0
- package/dist/connectors/odata/index.js.map +1 -0
- package/dist/connectors/okta/connector.json +194 -0
- package/dist/connectors/okta/index.d.ts +8 -0
- package/dist/connectors/okta/index.js +7 -0
- package/dist/connectors/okta/index.js.map +1 -0
- package/dist/connectors/okta/tools.d.ts +6 -0
- package/dist/connectors/okta/tools.js +429 -0
- package/dist/connectors/okta/tools.js.map +1 -0
- package/dist/connectors/okta/vendor.d.ts +14 -0
- package/dist/connectors/okta/vendor.js +204 -0
- package/dist/connectors/okta/vendor.js.map +1 -0
- package/dist/connectors/outlook-calendar/index.d.ts +2 -0
- package/dist/connectors/outlook-calendar/tools.d.ts +65 -0
- package/dist/connectors/outlook-mail/index.d.ts +2 -0
- package/dist/connectors/outlook-mail/tools.d.ts +8 -0
- package/dist/connectors/salesforce/index.d.ts +8 -0
- package/dist/connectors/salesforce/soql.d.ts +3 -0
- package/dist/connectors/salesforce/tools.d.ts +9 -0
- package/dist/connectors/salesforce/vendor.d.ts +3 -0
- package/dist/connectors/salesforce/vendor.js +9 -3
- package/dist/connectors/salesforce/vendor.js.map +1 -1
- package/dist/connectors/sap-s4hana/connector.json +264 -0
- package/dist/connectors/sap-s4hana/index.d.ts +8 -0
- package/dist/connectors/sap-s4hana/index.js +7 -0
- package/dist/connectors/sap-s4hana/index.js.map +1 -0
- package/dist/connectors/sap-s4hana/tools.d.ts +4 -0
- package/dist/connectors/sap-s4hana/tools.js +761 -0
- package/dist/connectors/sap-s4hana/tools.js.map +1 -0
- package/dist/connectors/sap-s4hana/vendor.d.ts +5 -0
- package/dist/connectors/sap-s4hana/vendor.js +176 -0
- package/dist/connectors/sap-s4hana/vendor.js.map +1 -0
- package/dist/connectors/servicenow/connector.json +228 -0
- package/dist/connectors/servicenow/index.d.ts +8 -0
- package/dist/connectors/servicenow/index.js +7 -0
- package/dist/connectors/servicenow/index.js.map +1 -0
- package/dist/connectors/servicenow/tools.d.ts +4 -0
- package/dist/connectors/servicenow/tools.js +884 -0
- package/dist/connectors/servicenow/tools.js.map +1 -0
- package/dist/connectors/servicenow/vendor.d.ts +3 -0
- package/dist/connectors/servicenow/vendor.js +106 -0
- package/dist/connectors/servicenow/vendor.js.map +1 -0
- package/dist/connectors/sharepoint-files/excel.d.ts +16 -0
- package/dist/connectors/sharepoint-files/index.d.ts +8 -0
- package/dist/connectors/sharepoint-files/index.js.map +1 -1
- package/dist/connectors/sharepoint-files/tools.d.ts +52 -0
- package/dist/connectors/sharepoint-files/vendor.d.ts +11 -0
- package/dist/connectors/slack/connector.json +148 -0
- package/dist/connectors/slack/index.d.ts +8 -0
- package/dist/connectors/slack/index.js +7 -0
- package/dist/connectors/slack/index.js.map +1 -0
- package/dist/connectors/slack/tools.d.ts +3 -0
- package/dist/connectors/slack/tools.js +355 -0
- package/dist/connectors/slack/tools.js.map +1 -0
- package/dist/connectors/slack/vendor.d.ts +17 -0
- package/dist/connectors/slack/vendor.js +189 -0
- package/dist/connectors/slack/vendor.js.map +1 -0
- package/dist/connectors/soap/index.d.ts +16 -0
- package/dist/connectors/soap/index.js +248 -0
- package/dist/connectors/soap/index.js.map +1 -0
- package/dist/connectors/soap/xml.d.ts +12 -0
- package/dist/connectors/soap/xml.js +126 -0
- package/dist/connectors/soap/xml.js.map +1 -0
- package/dist/connectors/sql/engines.d.ts +58 -0
- package/dist/connectors/sql/engines.js +292 -0
- package/dist/connectors/sql/engines.js.map +1 -0
- package/dist/connectors/sql/index.d.ts +16 -0
- package/dist/connectors/sql/index.js +214 -0
- package/dist/connectors/sql/index.js.map +1 -0
- package/dist/connectors/teams/index.d.ts +2 -0
- package/dist/connectors/teams/tools.d.ts +7 -0
- package/dist/connectors/teams/tools.js +3 -2
- package/dist/connectors/teams/tools.js.map +1 -1
- package/dist/connectors/workday/connector.json +188 -0
- package/dist/connectors/workday/index.d.ts +8 -0
- package/dist/connectors/workday/index.js +7 -0
- package/dist/connectors/workday/index.js.map +1 -0
- package/dist/connectors/workday/tools.d.ts +33 -0
- package/dist/connectors/workday/tools.js +410 -0
- package/dist/connectors/workday/tools.js.map +1 -0
- package/dist/connectors/workday/vendor.d.ts +18 -0
- package/dist/connectors/workday/vendor.js +199 -0
- package/dist/connectors/workday/vendor.js.map +1 -0
- package/dist/packages/connector-kit/src/branding.d.ts +57 -0
- package/dist/packages/connector-kit/src/certificate.d.ts +19 -0
- package/dist/packages/connector-kit/src/common.d.ts +36 -0
- 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 +1356 -0
- package/dist/packages/connector-kit/src/connector.js +634 -53
- 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 +5 -0
- package/dist/packages/connector-kit/src/index.js +6 -0
- package/dist/packages/connector-kit/src/index.js.map +1 -0
- package/dist/packages/connector-kit/src/oauth.d.ts +15 -0
- package/dist/packages/connector-kit/src/oauth.js +25 -6
- package/dist/packages/connector-kit/src/oauth.js.map +1 -1
- package/dist/packages/connector-kit/src/types.d.ts +87 -0
- package/dist/packages/connector-kit/src/types.js.map +1 -1
- package/dist/packages/server/migrations/0007_app_events.sql +110 -0
- package/dist/packages/server/migrations/rollback/to-legacy.sql +3 -0
- package/dist/packages/server/src/api.d.ts +3730 -0
- package/dist/packages/server/src/api.js +137 -1
- package/dist/packages/server/src/api.js.map +1 -1
- package/dist/packages/server/src/app.d.ts +23 -0
- package/dist/packages/server/src/app.js +24 -1
- package/dist/packages/server/src/app.js.map +1 -1
- package/dist/packages/server/src/builtin.d.ts +5 -0
- package/dist/packages/server/src/builtin.js +18 -0
- package/dist/packages/server/src/builtin.js.map +1 -1
- package/dist/packages/server/src/consent.d.ts +27 -0
- package/dist/packages/server/src/events/admin.d.ts +156 -0
- package/dist/packages/server/src/events/admin.js +255 -0
- package/dist/packages/server/src/events/admin.js.map +1 -0
- package/dist/packages/server/src/events/deliver.d.ts +43 -0
- package/dist/packages/server/src/events/deliver.js +129 -0
- package/dist/packages/server/src/events/deliver.js.map +1 -0
- package/dist/packages/server/src/events/runtime.d.ts +28 -0
- package/dist/packages/server/src/events/runtime.js +400 -0
- package/dist/packages/server/src/events/runtime.js.map +1 -0
- package/dist/packages/server/src/events/store.d.ts +172 -0
- package/dist/packages/server/src/events/store.js +275 -0
- package/dist/packages/server/src/events/store.js.map +1 -0
- package/dist/packages/server/src/index.d.ts +40 -0
- package/dist/packages/server/src/index.js +68 -11
- package/dist/packages/server/src/index.js.map +1 -1
- package/dist/packages/server/src/migrate.d.ts +11 -0
- package/dist/packages/server/src/openapi.d.ts +4 -0
- package/dist/packages/server/src/openapi.js +2 -2
- package/dist/packages/server/src/openapi.js.map +1 -1
- package/dist/packages/server/src/queue.d.ts +10 -0
- package/dist/packages/server/src/queue.js +45 -0
- package/dist/packages/server/src/queue.js.map +1 -0
- package/dist/packages/server/src/secrets.d.ts +19 -0
- package/dist/packages/server/src/server.d.ts +1 -0
- package/dist/packages/server/src/server.js +14 -1
- package/dist/packages/server/src/server.js.map +1 -1
- package/dist/packages/server/src/service.d.ts +767 -0
- package/dist/packages/server/src/service.js +19 -3
- package/dist/packages/server/src/service.js.map +1 -1
- package/dist/packages/server/src/store.d.ts +157 -0
- package/dist/packages/server/src/store.js +4 -0
- package/dist/packages/server/src/store.js.map +1 -1
- package/dist/packages/server/src/teams/activity.d.ts +123 -0
- package/dist/packages/server/src/teams/activity.js +6 -5
- package/dist/packages/server/src/teams/activity.js.map +1 -1
- package/dist/packages/server/src/teams/admin.d.ts +335 -0
- package/dist/packages/server/src/teams/admin.js +1 -1
- package/dist/packages/server/src/teams/admin.js.map +1 -1
- package/dist/packages/server/src/teams/approval.d.ts +57 -0
- package/dist/packages/server/src/teams/bot.d.ts +25 -0
- package/dist/packages/server/src/teams/claude.d.ts +46 -0
- package/dist/packages/server/src/teams/jwt.d.ts +17 -0
- package/dist/packages/server/src/teams/package.d.ts +79 -0
- package/dist/packages/server/src/teams/provision.d.ts +84 -0
- package/dist/packages/server/src/teams/runner.d.ts +80 -0
- package/dist/packages/server/src/teams/runner.js +50 -6
- package/dist/packages/server/src/teams/runner.js.map +1 -1
- package/dist/packages/server/src/teams/runtime.d.ts +91 -0
- package/dist/packages/server/src/teams/runtime.js +25 -47
- package/dist/packages/server/src/teams/runtime.js.map +1 -1
- package/dist/packages/server/src/teams/store.d.ts +233 -0
- package/package.json +28 -2
|
@@ -9,8 +9,11 @@ export const MAX_BODY_BYTES = 256 * 1024;
|
|
|
9
9
|
export const MAX_TARGET_BYTES = 8 * 1024;
|
|
10
10
|
const TIMEOUT_MS = 30_000;
|
|
11
11
|
// fetch that reaches only `allowed` origins, follows no redirect, gives up after TIMEOUT_MS and
|
|
12
|
-
// reads at most MAX_RESPONSE_BYTES of JSON or text. Its refusals are
|
|
13
|
-
|
|
12
|
+
// reads at most MAX_RESPONSE_BYTES of JSON or text (or what `types` matches). Its refusals are
|
|
13
|
+
// ConnectError.
|
|
14
|
+
export function guardedFetch(allowed, fetchImpl = fetch, types = /^(application\/([\w.+-]*\+)?json|text\/)/i,
|
|
15
|
+
// What `types` lets through, for the refusal.
|
|
16
|
+
passed = "JSON or text") {
|
|
14
17
|
return (async (input, init) => {
|
|
15
18
|
const url = new URL(input instanceof Request ? input.url : input);
|
|
16
19
|
if (!allowed.includes(url.origin))
|
|
@@ -23,11 +26,9 @@ export function guardedFetch(allowed, fetchImpl = fetch) {
|
|
|
23
26
|
if (res.status >= 300 && res.status < 400)
|
|
24
27
|
throw new ConnectError(`The app answered with a redirect (${res.status}), which is not followed`);
|
|
25
28
|
const type = res.headers.get("content-type") ?? "";
|
|
26
|
-
if (res.body &&
|
|
27
|
-
!/^(application\/([\w.+-]*\+)?json|text\/)/i.test(type) &&
|
|
28
|
-
res.headers.get("content-length") !== "0") {
|
|
29
|
+
if (res.body && !types.test(type) && res.headers.get("content-length") !== "0") {
|
|
29
30
|
await res.body.cancel();
|
|
30
|
-
throw new ConnectError(`The app answered ${type || "without a content type"}; only
|
|
31
|
+
throw new ConnectError(`The app answered ${type || "without a content type"}; only ${passed} is passed on`);
|
|
31
32
|
}
|
|
32
33
|
const chunks = [];
|
|
33
34
|
let size = 0;
|
|
@@ -53,6 +54,34 @@ function parse(raw) {
|
|
|
53
54
|
return raw;
|
|
54
55
|
}
|
|
55
56
|
}
|
|
57
|
+
// The headers signing a call with a key, token or user and password (oauth2 signs its own, and
|
|
58
|
+
// query auth goes in the address).
|
|
59
|
+
export function authHeaders(auth, c) {
|
|
60
|
+
if (auth.type === "header")
|
|
61
|
+
return { [auth.header.toLowerCase()]: `${auth.prefix ?? ""}${c.secret[auth.value]}` };
|
|
62
|
+
if (auth.type === "bearer")
|
|
63
|
+
return { authorization: `Bearer ${c.secret[auth.token]}` };
|
|
64
|
+
if (auth.type === "basic")
|
|
65
|
+
return {
|
|
66
|
+
authorization: `Basic ${Buffer.from(`${c.config[auth.username]}:${c.secret[auth.password]}`).toString("base64")}`,
|
|
67
|
+
};
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
// The connect form's values: plain fields into config, secret ones into secret; required
|
|
71
|
+
// unless `optional`.
|
|
72
|
+
export function formValues(connector, fields) {
|
|
73
|
+
const config = {};
|
|
74
|
+
const secret = {};
|
|
75
|
+
for (const f of connector.fields) {
|
|
76
|
+
const value = fields[f.id]?.trim() ?? "";
|
|
77
|
+
if (!value && f.optional)
|
|
78
|
+
continue;
|
|
79
|
+
if (!value)
|
|
80
|
+
throw new ConnectError(`Enter ${f.label}`);
|
|
81
|
+
(f.secret ? secret : config)[f.id] = value;
|
|
82
|
+
}
|
|
83
|
+
return { config, secret };
|
|
84
|
+
}
|
|
56
85
|
export function httpVendor(connector, fetchImpl = fetch) {
|
|
57
86
|
const http = connector.http;
|
|
58
87
|
const base = new URL(http.baseUrl);
|
|
@@ -60,85 +89,144 @@ export function httpVendor(connector, fetchImpl = fetch) {
|
|
|
60
89
|
const auth = http.auth;
|
|
61
90
|
const safe = guardedFetch([base.origin, ...(auth.type === "oauth2" ? [new URL(auth.tokenUrl).origin] : [])], fetchImpl);
|
|
62
91
|
const oauth = auth.type === "oauth2" ? clientCredentials(connector.name, safe) : null;
|
|
92
|
+
// Lower-case, so a configured Accept replaces the default rather than joining it.
|
|
93
|
+
const fixed = Object.fromEntries(Object.entries(http.headers).map(([k, v]) => [k.toLowerCase(), v]));
|
|
63
94
|
const oauthCreds = (c) => auth.type === "oauth2"
|
|
64
95
|
? {
|
|
65
96
|
tokenUrl: auth.tokenUrl,
|
|
66
97
|
clientId: c.config[auth.clientId],
|
|
67
98
|
clientSecret: c.secret[auth.clientSecret],
|
|
99
|
+
scope: auth.scope,
|
|
68
100
|
}
|
|
69
101
|
: null;
|
|
70
|
-
function headersFor(c) {
|
|
71
|
-
if (auth.type === "header")
|
|
72
|
-
return { [auth.header]: c.secret[auth.value] };
|
|
73
|
-
if (auth.type === "bearer")
|
|
74
|
-
return { authorization: `Bearer ${c.secret[auth.token]}` };
|
|
75
|
-
if (auth.type === "basic")
|
|
76
|
-
return {
|
|
77
|
-
authorization: `Basic ${Buffer.from(`${c.config[auth.username]}:${c.secret[auth.password]}`).toString("base64")}`,
|
|
78
|
-
};
|
|
79
|
-
return {};
|
|
80
|
-
}
|
|
81
102
|
const call = async (c, request) => {
|
|
82
103
|
// The path is the tool's, already encoded; it must stay under baseUrl's path.
|
|
83
104
|
const url = new URL(`${base.origin}${prefix}${request.path}`);
|
|
84
105
|
if (url.origin !== base.origin || !`${url.pathname}/`.startsWith(`${prefix}/`))
|
|
85
106
|
throw new ConnectError("The call leaves this app's address");
|
|
107
|
+
if (auth.type === "query")
|
|
108
|
+
url.searchParams.append(auth.param, c.secret[auth.value]);
|
|
86
109
|
const req = {
|
|
87
110
|
method: request.method,
|
|
88
111
|
path: `${url.pathname}${url.search}`,
|
|
89
112
|
body: request.body,
|
|
90
113
|
};
|
|
91
114
|
if (oauth)
|
|
92
|
-
return oauth.call(oauthCreds(c), base.origin, req);
|
|
115
|
+
return oauth.call(oauthCreds(c), base.origin, req, fixed);
|
|
93
116
|
const res = await safe(`${base.origin}${req.path}`, {
|
|
94
117
|
method: req.method,
|
|
95
118
|
headers: {
|
|
96
119
|
accept: "application/json",
|
|
97
|
-
...
|
|
120
|
+
...fixed,
|
|
121
|
+
...authHeaders(auth, c),
|
|
98
122
|
...(req.body === undefined ? {} : { "content-type": "application/json" }),
|
|
99
123
|
},
|
|
100
124
|
body: req.body === undefined ? undefined : JSON.stringify(req.body),
|
|
101
125
|
});
|
|
102
126
|
const raw = await res.text();
|
|
103
|
-
return {
|
|
127
|
+
return {
|
|
128
|
+
status: res.status,
|
|
129
|
+
data: raw ? parse(raw) : null,
|
|
130
|
+
headers: Object.fromEntries(res.headers),
|
|
131
|
+
};
|
|
104
132
|
};
|
|
105
133
|
return {
|
|
106
134
|
async connect(fields) {
|
|
107
|
-
const config
|
|
108
|
-
const
|
|
109
|
-
for (const f of connector.fields) {
|
|
110
|
-
const value = fields[f.id]?.trim() ?? "";
|
|
111
|
-
if (!value)
|
|
112
|
-
throw new ConnectError(`Enter ${f.label}`);
|
|
113
|
-
(f.secret ? secret : config)[f.id] = value;
|
|
114
|
-
}
|
|
115
|
-
const conn = { config, secret };
|
|
135
|
+
const { config, secret } = formValues(connector, fields);
|
|
136
|
+
const conn = { config: { host: base.host, ...config }, secret };
|
|
116
137
|
if (oauth)
|
|
117
138
|
await oauth.signIn(oauthCreds(conn));
|
|
118
|
-
return { ...conn, accountLabel: config[connector.accountKey] ?? base.host };
|
|
139
|
+
return { ...conn, accountLabel: conn.config[connector.accountKey] ?? base.host };
|
|
119
140
|
},
|
|
120
141
|
call,
|
|
121
142
|
};
|
|
122
143
|
}
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
return
|
|
134
|
-
|
|
144
|
+
// The values at a dot path; a list on the way gives each of its items' value. Null when any is
|
|
145
|
+
// missing.
|
|
146
|
+
function valuesAt(data, keys) {
|
|
147
|
+
if (!keys.length)
|
|
148
|
+
return [data];
|
|
149
|
+
if (Array.isArray(data)) {
|
|
150
|
+
const found = data.map((item) => valuesAt(item, keys));
|
|
151
|
+
return found.some((f) => f === null) ? null : found.flat();
|
|
152
|
+
}
|
|
153
|
+
if (data === null || typeof data !== "object" || !Object.hasOwn(data, keys[0]))
|
|
154
|
+
return null;
|
|
155
|
+
return valuesAt(data[keys[0]], keys.slice(1));
|
|
156
|
+
}
|
|
157
|
+
// Whether every value of `path` in the answer is among `values`. A missing one fails.
|
|
158
|
+
export function answerWithin(data, path, values) {
|
|
159
|
+
const found = valuesAt(data, path.split("."));
|
|
160
|
+
return (found !== null &&
|
|
161
|
+
found.every((v) => (typeof v === "string" || typeof v === "number") && values.includes(String(v))));
|
|
135
162
|
}
|
|
136
|
-
|
|
163
|
+
// The value at a dot path, a list on the way mapped item by item; undefined when missing.
|
|
164
|
+
function pick(data, keys) {
|
|
165
|
+
if (!keys.length)
|
|
166
|
+
return data;
|
|
167
|
+
if (Array.isArray(data))
|
|
168
|
+
return data.map((item) => pick(item, keys));
|
|
169
|
+
if (data === null || typeof data !== "object" || !Object.hasOwn(data, keys[0]))
|
|
170
|
+
return undefined;
|
|
171
|
+
return pick(data[keys[0]], keys.slice(1));
|
|
172
|
+
}
|
|
173
|
+
function trim(data, result) {
|
|
174
|
+
// Some apps leave an empty list out of the answer altogether.
|
|
175
|
+
const items = result.items ? (pick(data, result.items.split(".")) ?? []) : data;
|
|
176
|
+
if (!result.fields)
|
|
177
|
+
return items;
|
|
178
|
+
const keep = (item) => Object.fromEntries(result.fields.map((f) => [f, pick(item, f.split("."))]));
|
|
179
|
+
return Array.isArray(items) ? items.map(keep) : keep(items);
|
|
180
|
+
}
|
|
181
|
+
// The cursor for the next page, or null on the last one.
|
|
182
|
+
function nextCursor(tool, res) {
|
|
183
|
+
const paging = tool.paging;
|
|
184
|
+
const param = tool.params[paging.param];
|
|
185
|
+
let next;
|
|
186
|
+
if ("body" in paging)
|
|
187
|
+
next = pick(res.data, paging.body.split("."));
|
|
188
|
+
else if ("header" in paging)
|
|
189
|
+
next = res.headers?.[paging.header.toLowerCase()];
|
|
190
|
+
else
|
|
191
|
+
for (const [, url, attrs] of (res.headers?.link ?? "").matchAll(/<([^>]*)>([^,]*)/g))
|
|
192
|
+
if (/\brel="?[^"]*\bnext\b/i.test(attrs) && URL.canParse(url, "https://x"))
|
|
193
|
+
next = new URL(url, "https://x").searchParams.get(param.name ?? paging.param);
|
|
194
|
+
if (typeof next === "number")
|
|
195
|
+
return next;
|
|
196
|
+
if (typeof next !== "string" || next === "")
|
|
197
|
+
return null;
|
|
198
|
+
return param.type !== "string" && /^-?\d+(\.\d+)?$/.test(next) ? Number(next) : next;
|
|
199
|
+
}
|
|
200
|
+
// Each param naming a list limit the agent has values in must be sent, and each of its values
|
|
201
|
+
// (every item, for an array) must be one of them.
|
|
202
|
+
export function paramLimits(limits, params, args) {
|
|
203
|
+
for (const [name, p] of Object.entries(params)) {
|
|
204
|
+
const allowedValues = p.limit ? listLimit(limits, p.limit) : null;
|
|
205
|
+
if (!allowedValues)
|
|
206
|
+
continue;
|
|
207
|
+
const value = args[name];
|
|
208
|
+
const values = Array.isArray(value) ? value : [value];
|
|
209
|
+
// Left out (or empty), an optional param would mean "all of them".
|
|
210
|
+
if (value === undefined || !values.length)
|
|
211
|
+
throw new Denied(`${name} is required: this agent is limited to some values`);
|
|
212
|
+
for (const v of values)
|
|
213
|
+
if (!allowedValues.includes(String(v)))
|
|
214
|
+
throw new Denied(`${name} ${String(v)} is outside this agent's limits`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
export const zodType = {
|
|
137
218
|
string: z.string(),
|
|
138
219
|
number: z.number(),
|
|
139
220
|
integer: z.number().int(),
|
|
140
221
|
boolean: z.boolean(),
|
|
141
222
|
};
|
|
223
|
+
function paramType(p) {
|
|
224
|
+
const one = (type) => (p.enum ? z.literal(p.enum) : zodType[type]);
|
|
225
|
+
const type = (p.type === "array" ? z.array(one(p.items)) : one(p.type)).describe(p.description);
|
|
226
|
+
if (p.default !== undefined)
|
|
227
|
+
return type.default(p.default);
|
|
228
|
+
return p.required ? type : type.optional();
|
|
229
|
+
}
|
|
142
230
|
export function httpTools(http) {
|
|
143
231
|
return {
|
|
144
232
|
names: http.tools.map((t) => t.name),
|
|
@@ -146,10 +234,7 @@ export function httpTools(http) {
|
|
|
146
234
|
for (const tool of http.tools) {
|
|
147
235
|
if (!allowed.has(tool.name))
|
|
148
236
|
continue;
|
|
149
|
-
const shape = Object.fromEntries(Object.entries(tool.params).map(([name, p]) =>
|
|
150
|
-
const type = zodType[p.type].describe(p.description);
|
|
151
|
-
return [name, p.required ? type : type.optional()];
|
|
152
|
-
}));
|
|
237
|
+
const shape = Object.fromEntries(Object.entries(tool.params).map(([name, p]) => [name, paramType(p)]));
|
|
153
238
|
const destructive = tool.destructive || tool.method === "DELETE";
|
|
154
239
|
server.registerTool(tool.name, {
|
|
155
240
|
description: tool.description,
|
|
@@ -160,16 +245,7 @@ export function httpTools(http) {
|
|
|
160
245
|
openWorldHint: true,
|
|
161
246
|
},
|
|
162
247
|
}, (args) => audited(ctx, tool.name, JSON.stringify(args).slice(0, 300), async (mark) => {
|
|
163
|
-
|
|
164
|
-
const allowedValues = p.limit ? listLimit(ctx.limits, p.limit) : null;
|
|
165
|
-
if (!allowedValues)
|
|
166
|
-
continue;
|
|
167
|
-
// Left out, an optional param would mean "all of them".
|
|
168
|
-
if (args[name] === undefined)
|
|
169
|
-
throw new Denied(`${name} is required: this agent is limited to some values`);
|
|
170
|
-
if (!allowedValues.includes(String(args[name])))
|
|
171
|
-
throw new Denied(`${name} ${String(args[name])} is outside this agent's limits`);
|
|
172
|
-
}
|
|
248
|
+
paramLimits(ctx.limits, tool.params, args);
|
|
173
249
|
const path = tool.path.replace(/\{([a-z][a-z0-9_]*)\}/g, (_, name) => {
|
|
174
250
|
const value = String(args[name]);
|
|
175
251
|
// URLs resolve . and .. segments even when percent-encoded.
|
|
@@ -180,12 +256,21 @@ export function httpTools(http) {
|
|
|
180
256
|
const query = new URLSearchParams();
|
|
181
257
|
const body = {};
|
|
182
258
|
for (const [name, p] of Object.entries(tool.params)) {
|
|
183
|
-
|
|
259
|
+
const value = args[name];
|
|
260
|
+
const wire = p.name ?? name;
|
|
261
|
+
if (value === undefined)
|
|
184
262
|
continue;
|
|
185
|
-
if (p.in === "query")
|
|
186
|
-
query.set(name, String(args[name]));
|
|
187
263
|
if (p.in === "body")
|
|
188
|
-
body[
|
|
264
|
+
body[wire] = value;
|
|
265
|
+
else if (p.in !== "query")
|
|
266
|
+
continue;
|
|
267
|
+
else if (!Array.isArray(value))
|
|
268
|
+
query.set(wire, String(value));
|
|
269
|
+
else if (p.join)
|
|
270
|
+
query.set(wire, value.join(p.join));
|
|
271
|
+
else
|
|
272
|
+
for (const v of value)
|
|
273
|
+
query.append(wire, String(v));
|
|
189
274
|
}
|
|
190
275
|
const target = query.size ? `${path}?${query}` : path;
|
|
191
276
|
if (Buffer.byteLength(target) > MAX_TARGET_BYTES)
|
|
@@ -216,9 +301,14 @@ export function httpTools(http) {
|
|
|
216
301
|
if (values && !answerWithin(res.data, a.field, values))
|
|
217
302
|
throw new Denied(`The answer's ${a.field} is outside this agent's limits`);
|
|
218
303
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
304
|
+
if (!tool.result && !tool.paging)
|
|
305
|
+
return typeof res.data === "string"
|
|
306
|
+
? { content: [{ type: "text", text: res.data }] }
|
|
307
|
+
: json(res.data);
|
|
308
|
+
if (typeof res.data === "string")
|
|
309
|
+
throw new VendorFailed(res.status, "The app answered with text, not JSON");
|
|
310
|
+
const data = tool.result ? trim(res.data, tool.result) : res.data;
|
|
311
|
+
return json(tool.paging ? { items: data, next: nextCursor(tool, res) } : data);
|
|
222
312
|
}));
|
|
223
313
|
}
|
|
224
314
|
},
|
|
@@ -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,12 @@
|
|
|
1
|
+
import { type ToolContext, type Toolset } from "../../packages/connector-kit/src/common.js";
|
|
2
|
+
export declare const COMPLIANCE_STATES: readonly ["unknown", "compliant", "noncompliant", "conflict", "error", "inGracePeriod", "configManager"];
|
|
3
|
+
export declare const SUMMARY_MAX_DEVICES = 5000;
|
|
4
|
+
type Mark = (status: number) => void;
|
|
5
|
+
type Device = Record<string, unknown> & {
|
|
6
|
+
id: string;
|
|
7
|
+
userId?: string | null;
|
|
8
|
+
};
|
|
9
|
+
/** Whether each device's primary user is in the key's groups, one check per user. */
|
|
10
|
+
export declare function deviceFilter(ctx: ToolContext, mark: Mark): (device: Device) => Promise<boolean>;
|
|
11
|
+
export declare const intuneTools: Toolset;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "jamf",
|
|
3
|
+
"name": "Jamf Pro",
|
|
4
|
+
"description": "Let agents look up the Macs, iPhones and iPads Jamf Pro manages, their groups and policies, and, if you allow it, send them commands such as check in, restart, lock or erase.",
|
|
5
|
+
"logo": "/brand/registry/jamf.svg",
|
|
6
|
+
"identity": "A Jamf Pro API client named \"{brand.microsoft.appName}\", with an API role holding only the privileges below. Each API key can be kept to the devices, groups and policies of chosen Jamf sites.",
|
|
7
|
+
"accountKey": "host",
|
|
8
|
+
"connectionKind": "guided",
|
|
9
|
+
"setup": [
|
|
10
|
+
{
|
|
11
|
+
"title": "Create an API role",
|
|
12
|
+
"body": "In Jamf Pro, create an API role named \"{brand.microsoft.appName}\" with exactly these privileges. Changing the role's privileges later takes effect at once, with no new secret. With Commands, run them on a Mac or Linux computer with curl and jq, signed in as a Jamf Pro administrator.",
|
|
13
|
+
"click": [
|
|
14
|
+
"In Jamf Pro, open Settings, then System, then API roles and clients, and select the API Roles tab.",
|
|
15
|
+
"Select New and enter the display name {brand.microsoft.appName}.",
|
|
16
|
+
"Under Jamf Pro API role privileges, add: {scopes}.",
|
|
17
|
+
"Select Save."
|
|
18
|
+
],
|
|
19
|
+
"copy": [
|
|
20
|
+
"JAMF=https://your-company.jamfcloud.com",
|
|
21
|
+
"TOKEN=$(curl -s -u your-admin-username -X POST \"$JAMF/api/v1/auth/token\" | jq -r .token)",
|
|
22
|
+
"P=()",
|
|
23
|
+
"P+=(\"{scope}\")",
|
|
24
|
+
"curl -s -X POST \"$JAMF/api/v1/api-roles\" -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" -d \"$(jq -n --arg name \"{brand.microsoft.appName}\" '{displayName: $name, privileges: $ARGS.positional}' --args \"${P[@]}\")\""
|
|
25
|
+
],
|
|
26
|
+
"shell": "bash",
|
|
27
|
+
"link": {
|
|
28
|
+
"label": "Jamf Pro API roles and clients",
|
|
29
|
+
"href": "https://learn.jamf.com/r/en-US/jamf-pro-documentation-current/API_Roles_and_Clients"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Create an API client",
|
|
34
|
+
"body": "Create an API client named \"{brand.microsoft.appName}\" with that role only, enable it, and generate its client secret. Leave the access token lifetime at its default. Copy the client ID and secret: Jamf Pro shows the secret only once.",
|
|
35
|
+
"click": [
|
|
36
|
+
"Still in API roles and clients, select the API Clients tab, then New.",
|
|
37
|
+
"Display name: {brand.microsoft.appName}. API roles: {brand.microsoft.appName}. Leave Access token lifetime as it is.",
|
|
38
|
+
"Select Enable API client, then Save.",
|
|
39
|
+
"Select Generate client secret, then Create secret, and copy the client ID and secret."
|
|
40
|
+
],
|
|
41
|
+
"copy": [
|
|
42
|
+
"ID=$(curl -s -X POST \"$JAMF/api/v1/api-integrations\" -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" -d \"$(jq -n --arg name \"{brand.microsoft.appName}\" '{displayName: $name, authorizationScopes: [$name], enabled: true}')\" | jq -r .id)",
|
|
43
|
+
"curl -s -X POST \"$JAMF/api/v1/api-integrations/$ID/client-credentials\" -H \"Authorization: Bearer $TOKEN\""
|
|
44
|
+
],
|
|
45
|
+
"shell": "bash"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"afterConnect": [],
|
|
49
|
+
"fields": [
|
|
50
|
+
{
|
|
51
|
+
"id": "url",
|
|
52
|
+
"label": "Jamf Pro address",
|
|
53
|
+
"help": "The address you open Jamf Pro at, with https.",
|
|
54
|
+
"placeholder": "https://your-company.jamfcloud.com",
|
|
55
|
+
"secret": false
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "client_id",
|
|
59
|
+
"label": "Client ID",
|
|
60
|
+
"secret": false
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "client_secret",
|
|
64
|
+
"label": "Client secret",
|
|
65
|
+
"secret": true
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"capabilities": [
|
|
69
|
+
{
|
|
70
|
+
"id": "read",
|
|
71
|
+
"label": "Look up devices",
|
|
72
|
+
"description": "Find computers and mobile devices by name, serial number or user, and read one device's system version, last check-in, FileVault or encryption, whether it is managed, its groups and, on request, its apps.",
|
|
73
|
+
"required": true,
|
|
74
|
+
"note": "Reaches every device unless you keep a key to chosen sites under API keys. Read-only.",
|
|
75
|
+
"scopes": ["Read Computers", "Read Mobile Devices", "Read Sites"],
|
|
76
|
+
"permissions": [],
|
|
77
|
+
"tools": ["jamf_search_devices", "jamf_get_device"],
|
|
78
|
+
"forbidden": "Jamf Pro refused this. Add {scopes} to the {brand.microsoft.appName} API role."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "groups",
|
|
82
|
+
"label": "Read groups",
|
|
83
|
+
"description": "List computer and mobile device groups, smart and static, and read their members.",
|
|
84
|
+
"scopes": [
|
|
85
|
+
"Read Smart Computer Groups",
|
|
86
|
+
"Read Static Computer Groups",
|
|
87
|
+
"Read Smart Mobile Device Groups",
|
|
88
|
+
"Read Static Mobile Device Groups"
|
|
89
|
+
],
|
|
90
|
+
"permissions": [],
|
|
91
|
+
"tools": ["jamf_list_groups", "jamf_get_group"],
|
|
92
|
+
"forbidden": "Jamf Pro refused this. Add {scopes} to the {brand.microsoft.appName} API role."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "group_membership",
|
|
96
|
+
"label": "Change static group members",
|
|
97
|
+
"description": "Add devices to static groups and remove them. Smart groups cannot be changed.",
|
|
98
|
+
"destructive": true,
|
|
99
|
+
"note": "Policies, configuration profiles and apps scoped to a group follow its members, so removing a device from a group can remove a profile or an app (and the app's data) from it.",
|
|
100
|
+
"scopes": [
|
|
101
|
+
"Read Static Computer Groups",
|
|
102
|
+
"Update Static Computer Groups",
|
|
103
|
+
"Read Static Mobile Device Groups",
|
|
104
|
+
"Update Static Mobile Device Groups"
|
|
105
|
+
],
|
|
106
|
+
"permissions": [],
|
|
107
|
+
"tools": ["jamf_change_group_members"],
|
|
108
|
+
"forbidden": "Jamf Pro refused this. Add {scopes} to the {brand.microsoft.appName} API role."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "check_in",
|
|
112
|
+
"label": "Ask devices to check in",
|
|
113
|
+
"description": "Send a blank push, so devices check in now and pick up pending commands, profiles and apps. Changes nothing on the device.",
|
|
114
|
+
"scopes": [
|
|
115
|
+
"View MDM command information in Jamf Pro API",
|
|
116
|
+
"Send Blank Pushes to Mobile Devices"
|
|
117
|
+
],
|
|
118
|
+
"permissions": [],
|
|
119
|
+
"tools": ["jamf_send_blank_push"],
|
|
120
|
+
"forbidden": "Jamf Pro refused this. Add {scopes} to the {brand.microsoft.appName} API role. Jamf Pro checks a send privilege for each command and kind of device: if it still refuses computers, add the matching one listed under Jamf Pro Server Actions."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "restart_lock",
|
|
124
|
+
"label": "Restart and lock devices",
|
|
125
|
+
"description": "Restart a device, or lock it with a message and phone number on its lock screen. A locked Mac needs the PIN the agent chose.",
|
|
126
|
+
"note": "Whoever is using the device is interrupted and can lose unsaved work.",
|
|
127
|
+
"scopes": [
|
|
128
|
+
"View MDM command information in Jamf Pro API",
|
|
129
|
+
"Send Computer Remote Lock Command",
|
|
130
|
+
"Send Mobile Device Restart Device Command"
|
|
131
|
+
],
|
|
132
|
+
"permissions": [],
|
|
133
|
+
"tools": ["jamf_restart_device", "jamf_lock_device"],
|
|
134
|
+
"forbidden": "Jamf Pro refused this. Add {scopes} to the {brand.microsoft.appName} API role. Jamf Pro checks a send privilege for each command and kind of device: if it still refuses, add the matching one listed under Jamf Pro Server Actions."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "erase",
|
|
138
|
+
"label": "Erase devices",
|
|
139
|
+
"description": "Erase a device back to factory settings. Everything on it is deleted for good. The agent must give the device's serial number to confirm.",
|
|
140
|
+
"destructive": true,
|
|
141
|
+
"scopes": [
|
|
142
|
+
"View MDM command information in Jamf Pro API",
|
|
143
|
+
"Send Computer Remote Wipe Command",
|
|
144
|
+
"Send Mobile Device Remote Wipe Command"
|
|
145
|
+
],
|
|
146
|
+
"permissions": [],
|
|
147
|
+
"tools": ["jamf_erase_device"],
|
|
148
|
+
"forbidden": "Jamf Pro refused this. Add {scopes} to the {brand.microsoft.appName} API role."
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "policies",
|
|
152
|
+
"label": "Read policies and their logs",
|
|
153
|
+
"description": "List policies, read one policy's triggers, scope, packages and scripts, and read the policy runs logged on a computer.",
|
|
154
|
+
"scopes": ["Read Policies"],
|
|
155
|
+
"permissions": [],
|
|
156
|
+
"tools": ["jamf_list_policies", "jamf_get_policy", "jamf_computer_policy_logs"],
|
|
157
|
+
"forbidden": "Jamf Pro refused this. Add {scopes} to the {brand.microsoft.appName} API role."
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"limits": [
|
|
161
|
+
{
|
|
162
|
+
"id": "sites",
|
|
163
|
+
"label": "Sites",
|
|
164
|
+
"help": "Optional: only the devices, groups and policies of these Jamf sites (their IDs: in Jamf Pro, open Settings, then Global, then Sites, and open a site; the ID is the number at the end of its address). Devices with no site are left out. Leave empty for every device.",
|
|
165
|
+
"kind": "list",
|
|
166
|
+
"required": false,
|
|
167
|
+
"pattern": "^[0-9]{1,10}$"
|
|
168
|
+
}
|
|
169
|
+
],
|
|
170
|
+
"verify": {
|
|
171
|
+
"method": "GET",
|
|
172
|
+
"path": "/api/v1/jamf-pro-version",
|
|
173
|
+
"label": "Jamf Pro version",
|
|
174
|
+
"show": "version"
|
|
175
|
+
},
|
|
176
|
+
"discover": {
|
|
177
|
+
"label": "Sites",
|
|
178
|
+
"check": "sites",
|
|
179
|
+
"ifEmpty": "Jamf Pro has no sites, so API keys cannot be kept to sites: each key reaches every device."
|
|
180
|
+
},
|
|
181
|
+
"revoke": "In Jamf Pro, open Settings, then System, then API roles and clients, select the API Clients tab, open {brand.microsoft.appName}, and disable or delete it."
|
|
182
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/jamf/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,eAAe;IACb,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;CACnC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Toolset } from "../../packages/connector-kit/src/common.js";
|
|
2
|
+
export declare const MAX_SCOPED_PAGES = 5;
|
|
3
|
+
export declare const MAX_POLICY_READS = 50;
|
|
4
|
+
/** Jamf Pro API errors are {httpStatus, errors[{code, description}]}; the Classic API answers
|
|
5
|
+
* an HTML page. */
|
|
6
|
+
export declare function jamfError(data: unknown): string;
|
|
7
|
+
export declare const jamfTools: Toolset;
|