@vm0/cli 9.268.0 → 9.269.1
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/{agent-4QRFYL6Q.js → agent-YGPUCBVJ.js} +12 -12
- package/agent-YGPUCBVJ.js.map +1 -0
- package/{banking-VKKVWIYX.js → banking-JSGFRQ4L.js} +5 -5
- package/{browser-VFBMLIUS.js → browser-SNX5PNHT.js} +5 -5
- package/{chat-KQRKGQKS.js → chat-HIVVSEA5.js} +209 -24
- package/chat-HIVVSEA5.js.map +1 -0
- package/{chunk-TNDBFUFP.js → chunk-2EF4BXLJ.js} +2 -13
- package/chunk-2EF4BXLJ.js.map +1 -0
- package/chunk-2SSDVICG.js +22 -0
- package/chunk-2SSDVICG.js.map +1 -0
- package/{chunk-CZA5MW3N.js → chunk-46IAE7OE.js} +15 -17
- package/chunk-46IAE7OE.js.map +1 -0
- package/{chunk-DTZW7RES.js → chunk-AHGVNDOM.js} +3 -9
- package/{chunk-DTZW7RES.js.map → chunk-AHGVNDOM.js.map} +1 -1
- package/{chunk-VGPSGL5S.js → chunk-H6AOCKEL.js} +193 -81
- package/chunk-H6AOCKEL.js.map +1 -0
- package/{chunk-NGDZ3M3I.js → chunk-IYGQB2IF.js} +2 -2
- package/{chunk-ISZ5CKJ3.js → chunk-KRUM5LAL.js} +2 -2
- package/{chunk-QSWNNYV4.js → chunk-LCUAACWT.js} +92 -6
- package/chunk-LCUAACWT.js.map +1 -0
- package/{chunk-C6KDTR5A.js → chunk-QVPNDW6V.js} +33 -31
- package/chunk-QVPNDW6V.js.map +1 -0
- package/{chunk-7I3P4REZ.js → chunk-UW4J57OZ.js} +2 -2
- package/{chunk-4JA54Z75.js → chunk-VMZYIB6X.js} +2 -2
- package/{chunk-MD3YWUKO.js → chunk-ZUHSC7WF.js} +18 -2
- package/chunk-ZUHSC7WF.js.map +1 -0
- package/{computer-use-LTZEVHCS.js → computer-use-5SW6CWAY.js} +5 -5
- package/{connector-MY7K7RJN.js → connector-6YIH3K55.js} +47 -48
- package/connector-6YIH3K55.js.map +1 -0
- package/{credit-LDEHJIJT.js → credit-RV57VXH4.js} +7 -7
- package/{developer-support-ROATSWMP.js → developer-support-D2P6GTAZ.js} +5 -5
- package/{doctor-3P6KUY4D.js → doctor-BGVYFKMZ.js} +7 -7
- package/{feishu-PHKR2Q36.js → feishu-YP3C3TPQ.js} +5 -5
- package/{finance-3LM55SWD.js → finance-3KXG6RV5.js} +5 -5
- package/{generate-23ZOL7AI.js → generate-VX35LUBP.js} +12 -12
- package/generate-VX35LUBP.js.map +1 -0
- package/{github-SC4AB2Q2.js → github-AKWQZEIY.js} +5 -5
- package/{goal-FTWV2ADK.js → goal-OQXYFW5Z.js} +5 -5
- package/{host-L4BEXBPB.js → host-B6YLXMA6.js} +5 -5
- package/{logs-TICCUASU.js → logs-NRY3DWOV.js} +7 -7
- package/{mail-ZUBVNRJW.js → mail-43EQ3IYB.js} +7 -7
- package/{maps-UAKTZSO2.js → maps-UMTF5FJV.js} +5 -5
- package/{model-3N3ZWLZM.js → model-VRHOGMWA.js} +6 -6
- package/{model-provider-RI26N5OQ.js → model-provider-L5ZLZIKJ.js} +6 -6
- package/{org-IEYB2WBO.js → org-3FNAZTHF.js} +5 -5
- package/package.json +1 -1
- package/{people-search-5S4TV7RL.js → people-search-FK6RE2NT.js} +5 -5
- package/{phone-XV2LWGQT.js → phone-3TFQSWRG.js} +5 -5
- package/{preference-6XHDDQUW.js → preference-5IXDGW5E.js} +5 -5
- package/{resource-HXS7RGBP.js → resource-NKTI5XPA.js} +5 -5
- package/{scrape-NU6T5BQE.js → scrape-LHAVB7NB.js} +5 -5
- package/{search-FDG26NWA.js → search-F6NM44DL.js} +7 -7
- package/{secret-HN3R3V32.js → secret-HND7KZHJ.js} +5 -5
- package/{slack-IWEZU6HY.js → slack-CUKFUUE3.js} +5 -5
- package/{teams-6VZAWVC6.js → teams-JS36U3HH.js} +5 -5
- package/{telegram-UTCDO5ZB.js → telegram-F5GUYX3P.js} +5 -5
- package/{upgrade-EX2F7BFJ.js → upgrade-HPMCJDVW.js} +4 -4
- package/{variable-U67PHCBZ.js → variable-3NJ4XN52.js} +5 -5
- package/{video-GTQQSN6W.js → video-HZC5EIMX.js} +4 -4
- package/{weather-NMEINAIZ.js → weather-VN2P2PL4.js} +5 -5
- package/{web-YC7E327U.js → web-CFLVFNUS.js} +5 -5
- package/{web-search-TCWP5NDJ.js → web-search-4RP7J2FN.js} +5 -5
- package/{whoami-KACAW67A.js → whoami-FDPQTI53.js} +14 -14
- package/whoami-FDPQTI53.js.map +1 -0
- package/{workflow-TKJF2YY2.js → workflow-OHZEVG7B.js} +100 -9
- package/workflow-OHZEVG7B.js.map +1 -0
- package/zero.js +47 -47
- package/zero.js.map +1 -1
- package/agent-4QRFYL6Q.js.map +0 -1
- package/chat-KQRKGQKS.js.map +0 -1
- package/chunk-C6KDTR5A.js.map +0 -1
- package/chunk-CZA5MW3N.js.map +0 -1
- package/chunk-MD3YWUKO.js.map +0 -1
- package/chunk-QSWNNYV4.js.map +0 -1
- package/chunk-TNDBFUFP.js.map +0 -1
- package/chunk-VGPSGL5S.js.map +0 -1
- package/chunk-ZL7WFWOC.js +0 -97
- package/chunk-ZL7WFWOC.js.map +0 -1
- package/connector-MY7K7RJN.js.map +0 -1
- package/generate-23ZOL7AI.js.map +0 -1
- package/whoami-KACAW67A.js.map +0 -1
- package/workflow-TKJF2YY2.js.map +0 -1
- /package/{banking-VKKVWIYX.js.map → banking-JSGFRQ4L.js.map} +0 -0
- /package/{browser-VFBMLIUS.js.map → browser-SNX5PNHT.js.map} +0 -0
- /package/{chunk-NGDZ3M3I.js.map → chunk-IYGQB2IF.js.map} +0 -0
- /package/{chunk-ISZ5CKJ3.js.map → chunk-KRUM5LAL.js.map} +0 -0
- /package/{chunk-7I3P4REZ.js.map → chunk-UW4J57OZ.js.map} +0 -0
- /package/{chunk-4JA54Z75.js.map → chunk-VMZYIB6X.js.map} +0 -0
- /package/{computer-use-LTZEVHCS.js.map → computer-use-5SW6CWAY.js.map} +0 -0
- /package/{credit-LDEHJIJT.js.map → credit-RV57VXH4.js.map} +0 -0
- /package/{developer-support-ROATSWMP.js.map → developer-support-D2P6GTAZ.js.map} +0 -0
- /package/{doctor-3P6KUY4D.js.map → doctor-BGVYFKMZ.js.map} +0 -0
- /package/{feishu-PHKR2Q36.js.map → feishu-YP3C3TPQ.js.map} +0 -0
- /package/{finance-3LM55SWD.js.map → finance-3KXG6RV5.js.map} +0 -0
- /package/{github-SC4AB2Q2.js.map → github-AKWQZEIY.js.map} +0 -0
- /package/{goal-FTWV2ADK.js.map → goal-OQXYFW5Z.js.map} +0 -0
- /package/{host-L4BEXBPB.js.map → host-B6YLXMA6.js.map} +0 -0
- /package/{logs-TICCUASU.js.map → logs-NRY3DWOV.js.map} +0 -0
- /package/{mail-ZUBVNRJW.js.map → mail-43EQ3IYB.js.map} +0 -0
- /package/{maps-UAKTZSO2.js.map → maps-UMTF5FJV.js.map} +0 -0
- /package/{model-3N3ZWLZM.js.map → model-VRHOGMWA.js.map} +0 -0
- /package/{model-provider-RI26N5OQ.js.map → model-provider-L5ZLZIKJ.js.map} +0 -0
- /package/{org-IEYB2WBO.js.map → org-3FNAZTHF.js.map} +0 -0
- /package/{people-search-5S4TV7RL.js.map → people-search-FK6RE2NT.js.map} +0 -0
- /package/{phone-XV2LWGQT.js.map → phone-3TFQSWRG.js.map} +0 -0
- /package/{preference-6XHDDQUW.js.map → preference-5IXDGW5E.js.map} +0 -0
- /package/{resource-HXS7RGBP.js.map → resource-NKTI5XPA.js.map} +0 -0
- /package/{scrape-NU6T5BQE.js.map → scrape-LHAVB7NB.js.map} +0 -0
- /package/{search-FDG26NWA.js.map → search-F6NM44DL.js.map} +0 -0
- /package/{secret-HN3R3V32.js.map → secret-HND7KZHJ.js.map} +0 -0
- /package/{slack-IWEZU6HY.js.map → slack-CUKFUUE3.js.map} +0 -0
- /package/{teams-6VZAWVC6.js.map → teams-JS36U3HH.js.map} +0 -0
- /package/{telegram-UTCDO5ZB.js.map → telegram-F5GUYX3P.js.map} +0 -0
- /package/{upgrade-EX2F7BFJ.js.map → upgrade-HPMCJDVW.js.map} +0 -0
- /package/{variable-U67PHCBZ.js.map → variable-3NJ4XN52.js.map} +0 -0
- /package/{video-GTQQSN6W.js.map → video-HZC5EIMX.js.map} +0 -0
- /package/{weather-NMEINAIZ.js.map → weather-VN2P2PL4.js.map} +0 -0
- /package/{web-YC7E327U.js.map → web-CFLVFNUS.js.map} +0 -0
- /package/{web-search-TCWP5NDJ.js.map → web-search-4RP7J2FN.js.map} +0 -0
|
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
getApiUrl
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-AHGVNDOM.js";
|
|
7
7
|
import {
|
|
8
8
|
init_esm_shims
|
|
9
9
|
} from "./chunk-GPYQ24DR.js";
|
|
@@ -42,4 +42,4 @@ export {
|
|
|
42
42
|
toPlatformUrl,
|
|
43
43
|
getPlatformOrigin
|
|
44
44
|
};
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
45
|
+
//# sourceMappingURL=chunk-UW4J57OZ.js.map
|
|
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
MODEL_PROVIDER_TYPES
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-AHGVNDOM.js";
|
|
7
7
|
import {
|
|
8
8
|
init_esm_shims
|
|
9
9
|
} from "./chunk-GPYQ24DR.js";
|
|
@@ -40,4 +40,4 @@ export {
|
|
|
40
40
|
formatModelProviderRoute,
|
|
41
41
|
formatModelPolicyStatus
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-VMZYIB6X.js.map
|
|
@@ -7,6 +7,19 @@ import {
|
|
|
7
7
|
|
|
8
8
|
// src/lib/api/zero-token.ts
|
|
9
9
|
init_esm_shims();
|
|
10
|
+
function normalizeZeroCapability(capability) {
|
|
11
|
+
switch (capability) {
|
|
12
|
+
case "chat-message:read": {
|
|
13
|
+
return "chat-event:read";
|
|
14
|
+
}
|
|
15
|
+
case "chat-message:write": {
|
|
16
|
+
return "chat-event:write";
|
|
17
|
+
}
|
|
18
|
+
default: {
|
|
19
|
+
return capability;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
10
23
|
function decodeZeroTokenPayload(token) {
|
|
11
24
|
const raw = token ?? process.env.ZERO_TOKEN;
|
|
12
25
|
if (!raw) return void 0;
|
|
@@ -20,7 +33,10 @@ function decodeZeroTokenPayload(token) {
|
|
|
20
33
|
Buffer.from(parts[1], "base64url").toString()
|
|
21
34
|
);
|
|
22
35
|
if (payload.scope === "zero" && Array.isArray(payload.capabilities)) {
|
|
23
|
-
return
|
|
36
|
+
return {
|
|
37
|
+
...payload,
|
|
38
|
+
capabilities: payload.capabilities.map(normalizeZeroCapability)
|
|
39
|
+
};
|
|
24
40
|
}
|
|
25
41
|
} catch {
|
|
26
42
|
}
|
|
@@ -30,4 +46,4 @@ function decodeZeroTokenPayload(token) {
|
|
|
30
46
|
export {
|
|
31
47
|
decodeZeroTokenPayload
|
|
32
48
|
};
|
|
33
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-ZUHSC7WF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/api/zero-token.ts"],"sourcesContent":["import type { FeatureSwitchKey } from \"@vm0/core/feature-switch-key\";\n\nexport interface ZeroTokenPayload {\n userId: string;\n runId: string;\n orgId: string;\n scope: string;\n capabilities: string[];\n featureSwitchOverrides?: Partial<Record<FeatureSwitchKey, boolean>>;\n iat: number;\n exp: number;\n}\n\nfunction normalizeZeroCapability(capability: string): string {\n switch (capability) {\n case \"chat-message:read\": {\n return \"chat-event:read\";\n }\n case \"chat-message:write\": {\n return \"chat-event:write\";\n }\n default: {\n return capability;\n }\n }\n}\n\n/**\n * Decode a ZERO_TOKEN JWT payload.\n * Only decodes — does NOT verify signature (server does that).\n * If no token is provided, reads from process.env.ZERO_TOKEN.\n * Returns undefined if token is missing, malformed, or not a zero-scoped token.\n */\nexport function decodeZeroTokenPayload(\n token?: string,\n): ZeroTokenPayload | undefined {\n const raw = token ?? process.env.ZERO_TOKEN;\n if (!raw) return undefined;\n\n const prefix = \"vm0_sandbox_\";\n if (!raw.startsWith(prefix)) return undefined;\n const jwt = raw.slice(prefix.length);\n\n const parts = jwt.split(\".\");\n if (parts.length !== 3) return undefined;\n\n try {\n const payload = JSON.parse(\n Buffer.from(parts[1]!, \"base64url\").toString(),\n ) as ZeroTokenPayload;\n if (payload.scope === \"zero\" && Array.isArray(payload.capabilities)) {\n return {\n ...payload,\n capabilities: payload.capabilities.map(normalizeZeroCapability),\n };\n }\n } catch {\n // Malformed token — fall through\n }\n return undefined;\n}\n"],"mappings":";;;;;;;;AAAA;AAaA,SAAS,wBAAwB,YAA4B;AAC3D,UAAQ,YAAY;AAAA,IAClB,KAAK,qBAAqB;AACxB,aAAO;AAAA,IACT;AAAA,IACA,KAAK,sBAAsB;AACzB,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAQO,SAAS,uBACd,OAC8B;AAC9B,QAAM,MAAM,SAAS,QAAQ,IAAI;AACjC,MAAI,CAAC,IAAK,QAAO;AAEjB,QAAM,SAAS;AACf,MAAI,CAAC,IAAI,WAAW,MAAM,EAAG,QAAO;AACpC,QAAM,MAAM,IAAI,MAAM,OAAO,MAAM;AAEnC,QAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,MAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,MAAI;AACF,UAAM,UAAU,KAAK;AAAA,MACnB,OAAO,KAAK,MAAM,CAAC,GAAI,WAAW,EAAE,SAAS;AAAA,IAC/C;AACA,QAAI,QAAQ,UAAU,UAAU,MAAM,QAAQ,QAAQ,YAAY,GAAG;AACnE,aAAO;AAAA,QACL,GAAG;AAAA,QACH,cAAc,QAAQ,aAAa,IAAI,uBAAuB;AAAA,MAChE;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAER;AACA,SAAO;AACT;","names":[]}
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
fetchComputerUseScreenshot,
|
|
13
13
|
getComputerUseCommand,
|
|
14
14
|
listComputerUseHosts
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-H6AOCKEL.js";
|
|
16
|
+
import "./chunk-KRUM5LAL.js";
|
|
17
17
|
import {
|
|
18
18
|
ApiRequestError,
|
|
19
19
|
withErrorHandler
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-AHGVNDOM.js";
|
|
21
|
+
import "./chunk-ZUHSC7WF.js";
|
|
22
22
|
import {
|
|
23
23
|
Command
|
|
24
24
|
} from "./chunk-CCWPKGTB.js";
|
|
@@ -970,4 +970,4 @@ export {
|
|
|
970
970
|
formatComputerUseResultForConsole,
|
|
971
971
|
zeroComputerUseCommand
|
|
972
972
|
};
|
|
973
|
-
//# sourceMappingURL=computer-use-
|
|
973
|
+
//# sourceMappingURL=computer-use-5SW6CWAY.js.map
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from "node:module";
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
hasConnectorFirewallMetadataPermission
|
|
6
|
+
} from "./chunk-LCUAACWT.js";
|
|
7
7
|
import {
|
|
8
8
|
CALLBACK_PROMPT_PLACEHOLDER,
|
|
9
9
|
addRequestedCallbackSearchParams,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
resolveConnectorDiscoveryAgentContext,
|
|
19
19
|
resolveManualGrantAuthMethod,
|
|
20
20
|
searchConnectorCatalog
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-46IAE7OE.js";
|
|
22
22
|
import {
|
|
23
23
|
UNKNOWN_PERMISSION_GRANT,
|
|
24
24
|
connectZeroConnectorManualGrant,
|
|
@@ -34,20 +34,20 @@ import {
|
|
|
34
34
|
getZeroCustomConnector,
|
|
35
35
|
listZeroConnectorCatalogStatus,
|
|
36
36
|
listZeroCustomConnectors
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-H6AOCKEL.js";
|
|
38
|
+
import "./chunk-KRUM5LAL.js";
|
|
39
39
|
import {
|
|
40
40
|
getPlatformOrigin,
|
|
41
41
|
toPlatformUrl
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-UW4J57OZ.js";
|
|
43
43
|
import "./chunk-MA22KQYU.js";
|
|
44
44
|
import {
|
|
45
45
|
ApiRequestError,
|
|
46
46
|
getApiUrl,
|
|
47
47
|
source_default,
|
|
48
48
|
withErrorHandler
|
|
49
|
-
} from "./chunk-
|
|
50
|
-
import "./chunk-
|
|
49
|
+
} from "./chunk-AHGVNDOM.js";
|
|
50
|
+
import "./chunk-ZUHSC7WF.js";
|
|
51
51
|
import {
|
|
52
52
|
Command,
|
|
53
53
|
Option
|
|
@@ -168,7 +168,7 @@ function buildDiagnosticRequest(opts, method) {
|
|
|
168
168
|
mode: "url",
|
|
169
169
|
method,
|
|
170
170
|
url: stripUrlQueryAndFragment(opts.url),
|
|
171
|
-
...opts.connector !== void 0 ? {
|
|
171
|
+
...opts.connector !== void 0 ? { connectorSlug: opts.connector } : {},
|
|
172
172
|
...opts.envName !== void 0 ? { environmentName: opts.envName } : {}
|
|
173
173
|
};
|
|
174
174
|
}
|
|
@@ -212,24 +212,24 @@ function unsafeInputError(reason) {
|
|
|
212
212
|
}
|
|
213
213
|
function ambiguousConnectorError(request, result) {
|
|
214
214
|
const candidates = [...result.candidates].sort((left, right) => {
|
|
215
|
-
return left.
|
|
215
|
+
return left.connectorSlug.localeCompare(right.connectorSlug);
|
|
216
216
|
});
|
|
217
217
|
const commands = candidates.map((candidate) => {
|
|
218
|
-
return ` ${connectorSelectionCommand(request.url, request.method, candidate.
|
|
218
|
+
return ` ${connectorSelectionCommand(request.url, request.method, candidate.connectorSlug)}`;
|
|
219
219
|
});
|
|
220
220
|
return new Error(
|
|
221
221
|
`Multiple connectors match ${request.method} ${request.url}: ${candidates.map((candidate) => {
|
|
222
|
-
return candidate.
|
|
222
|
+
return candidate.connectorSlug;
|
|
223
223
|
}).join(", ")}
|
|
224
224
|
Select one explicitly:
|
|
225
225
|
${commands.join("\n")}`
|
|
226
226
|
);
|
|
227
227
|
}
|
|
228
228
|
function unknownConnectorError(request) {
|
|
229
|
-
if (request.mode === "url" && request.
|
|
229
|
+
if (request.mode === "url" && request.connectorSlug !== void 0) {
|
|
230
230
|
return new Error(
|
|
231
|
-
`Unknown connector
|
|
232
|
-
Run: zero connector search ${shellQuoteArg(request.
|
|
231
|
+
`Unknown connector slug: ${request.connectorSlug}
|
|
232
|
+
Run: zero connector search ${shellQuoteArg(request.connectorSlug)}`
|
|
233
233
|
);
|
|
234
234
|
}
|
|
235
235
|
return new Error("The requested connector is unknown.");
|
|
@@ -240,10 +240,10 @@ function noMatchError(result) {
|
|
|
240
240
|
);
|
|
241
241
|
}
|
|
242
242
|
function connectorMismatchError(request, result) {
|
|
243
|
-
const requestedSlug = request.
|
|
243
|
+
const requestedSlug = request.connectorSlug ?? "the requested connector";
|
|
244
244
|
return new Error(
|
|
245
|
-
`Connector ${requestedSlug} does not own ${request.method} ${request.url}; the matching connector is ${result.connector.
|
|
246
|
-
Run: ${connectorSelectionCommand(request.url, request.method, result.connector.
|
|
245
|
+
`Connector ${requestedSlug} does not own ${request.method} ${request.url}; the matching connector is ${result.connector.connectorSlug}
|
|
246
|
+
Run: ${connectorSelectionCommand(request.url, request.method, result.connector.connectorSlug)}`
|
|
247
247
|
);
|
|
248
248
|
}
|
|
249
249
|
function environmentNotOwnedError(request, result) {
|
|
@@ -282,7 +282,7 @@ function resolvedDiagnostic(request, result) {
|
|
|
282
282
|
throw environmentNotUsedError(request, result);
|
|
283
283
|
case "unresolved-dynamic-base":
|
|
284
284
|
throw new Error(
|
|
285
|
-
`No authoritative ${result.connector.label} base URL is available for this diagnostic. Verify the ${result.connector.
|
|
285
|
+
`No authoritative ${result.connector.label} base URL is available for this diagnostic. Verify the ${result.connector.connectorSlug} connector configuration for the affected context and retry.`
|
|
286
286
|
);
|
|
287
287
|
case "run-context-unavailable":
|
|
288
288
|
throw new Error(
|
|
@@ -294,7 +294,7 @@ function printDiagnosticSummary(request, result) {
|
|
|
294
294
|
if (result.mode === "url") {
|
|
295
295
|
const urlRequest = requireUrlRequest(request);
|
|
296
296
|
console.log(
|
|
297
|
-
`URL ${urlRequest.url} matches the ${result.connector.label} connector (
|
|
297
|
+
`URL ${urlRequest.url} matches the ${result.connector.label} connector (slug: ${result.connector.connectorSlug}).`
|
|
298
298
|
);
|
|
299
299
|
console.log(` Matched base URL: ${result.base}`);
|
|
300
300
|
console.log(` Relative path: ${result.relativePath}`);
|
|
@@ -308,7 +308,7 @@ function printDiagnosticSummary(request, result) {
|
|
|
308
308
|
return;
|
|
309
309
|
}
|
|
310
310
|
console.log(
|
|
311
|
-
`${result.environmentName} is managed by the ${result.connector.label} connector (
|
|
311
|
+
`${result.environmentName} is managed by the ${result.connector.label} connector (slug: ${result.connector.connectorSlug}).`
|
|
312
312
|
);
|
|
313
313
|
}
|
|
314
314
|
function diagnosticEnvironmentNames(result) {
|
|
@@ -627,7 +627,7 @@ function printUrlPermissionDiagnostic(result, agentId) {
|
|
|
627
627
|
console.log("");
|
|
628
628
|
for (const permission of result.permission.permissions) {
|
|
629
629
|
printNamedPolicyResult(
|
|
630
|
-
result.connector.
|
|
630
|
+
result.connector.connectorSlug,
|
|
631
631
|
permission.name,
|
|
632
632
|
permission.policy,
|
|
633
633
|
agentId
|
|
@@ -639,7 +639,7 @@ function printUrlPermissionDiagnostic(result, agentId) {
|
|
|
639
639
|
);
|
|
640
640
|
console.log("");
|
|
641
641
|
printUnknownEndpointPolicy(
|
|
642
|
-
result.connector.
|
|
642
|
+
result.connector.connectorSlug,
|
|
643
643
|
result.permission.policy,
|
|
644
644
|
agentId
|
|
645
645
|
);
|
|
@@ -662,7 +662,7 @@ function printEnvironmentPermissionDiagnostic(result, permissionName, agentId) {
|
|
|
662
662
|
);
|
|
663
663
|
console.log("");
|
|
664
664
|
printNamedPolicyResult(
|
|
665
|
-
result.connector.
|
|
665
|
+
result.connector.connectorSlug,
|
|
666
666
|
permissionName,
|
|
667
667
|
result.permission,
|
|
668
668
|
agentId
|
|
@@ -705,9 +705,8 @@ var checkConnectorCommand = new Command().name("check").description(
|
|
|
705
705
|
"A full URL to diagnose \u2014 matches connector ownership, route environment names, and permission (e.g. https://api.github.com/repos/owner/repo)"
|
|
706
706
|
)
|
|
707
707
|
).addOption(
|
|
708
|
-
// TODO(#23619): Rename this stable CLI option value label in the CLI rollout.
|
|
709
708
|
new Option(
|
|
710
|
-
"--connector <
|
|
709
|
+
"--connector <slug>",
|
|
711
710
|
"Select the connector when multiple connectors own the same URL route"
|
|
712
711
|
)
|
|
713
712
|
).addOption(
|
|
@@ -753,7 +752,7 @@ How connectors work:
|
|
|
753
752
|
const platformUrl = toPlatformUrl(await getApiUrl());
|
|
754
753
|
const ctx = {
|
|
755
754
|
environmentNames: diagnosticEnvironmentNames(result),
|
|
756
|
-
connectorSlug: result.connector.
|
|
755
|
+
connectorSlug: result.connector.connectorSlug,
|
|
757
756
|
label: result.connector.label,
|
|
758
757
|
connectorAvailable: result.connector.visibility === "available",
|
|
759
758
|
credentialResolution: result.connector.credentialResolution,
|
|
@@ -818,7 +817,7 @@ function parseConnectorValues(rawValues) {
|
|
|
818
817
|
}
|
|
819
818
|
return values;
|
|
820
819
|
}
|
|
821
|
-
var connectCommand = new Command().name("connect").description("Connect a connector with manual grant values").argument("<
|
|
820
|
+
var connectCommand = new Command().name("connect").description("Connect a connector with manual grant values").argument("<slug>", "Connector slug (e.g., zendesk)").option("--auth-method <method>", "Connector auth method to use").option(
|
|
822
821
|
"--value <name=value>",
|
|
823
822
|
"Connector field value; repeat for multiple fields",
|
|
824
823
|
collectValue,
|
|
@@ -843,7 +842,7 @@ var connectCommand = new Command().name("connect").description("Connect a connec
|
|
|
843
842
|
options.authMethod
|
|
844
843
|
);
|
|
845
844
|
const connector = await connectZeroConnectorManualGrant(
|
|
846
|
-
connectorMetadata.
|
|
845
|
+
connectorMetadata.slug,
|
|
847
846
|
authMethod.id,
|
|
848
847
|
values
|
|
849
848
|
);
|
|
@@ -852,9 +851,9 @@ var connectCommand = new Command().name("connect").description("Connect a connec
|
|
|
852
851
|
return;
|
|
853
852
|
}
|
|
854
853
|
console.log(source_default.green(`\u2713 ${connectorMetadata.label} connected`));
|
|
855
|
-
console.log(source_default.dim(`
|
|
854
|
+
console.log(source_default.dim(` Slug: ${connector.slug}`));
|
|
856
855
|
console.log(source_default.dim(` Auth Method: ${connector.authMethod}`));
|
|
857
|
-
console.log(source_default.dim(` Run: zero connector status ${connector.
|
|
856
|
+
console.log(source_default.dim(` Run: zero connector status ${connector.slug}`));
|
|
858
857
|
})
|
|
859
858
|
);
|
|
860
859
|
|
|
@@ -901,7 +900,7 @@ function connectorDiscoveryItems(catalogConnectors, customConnectors) {
|
|
|
901
900
|
...catalogConnectors.map((connector) => {
|
|
902
901
|
return {
|
|
903
902
|
kind: "catalog",
|
|
904
|
-
|
|
903
|
+
slug: connector.slug,
|
|
905
904
|
label: connector.label,
|
|
906
905
|
description: connector.description,
|
|
907
906
|
category: connector.category,
|
|
@@ -914,7 +913,7 @@ function connectorDiscoveryItems(catalogConnectors, customConnectors) {
|
|
|
914
913
|
...customConnectors.map((connector) => {
|
|
915
914
|
return {
|
|
916
915
|
kind: "custom",
|
|
917
|
-
|
|
916
|
+
slug: connector.slug,
|
|
918
917
|
label: connector.displayName,
|
|
919
918
|
description: "",
|
|
920
919
|
category: "custom",
|
|
@@ -942,7 +941,7 @@ function renderConnectorDiscoveryConnectedAsCell(connector) {
|
|
|
942
941
|
}
|
|
943
942
|
function isConnectorDiscoveryAuthorized(connector, agentContext) {
|
|
944
943
|
if (connector.kind === "catalog") {
|
|
945
|
-
return agentContext.authorizedConnectorSlugs.has(connector.
|
|
944
|
+
return agentContext.authorizedConnectorSlugs.has(connector.slug);
|
|
946
945
|
}
|
|
947
946
|
return agentContext.authorizedCustomConnectorIds.has(
|
|
948
947
|
connector.customConnector.id
|
|
@@ -962,7 +961,7 @@ var listCommand = new Command().name("list").alias("ls").description("List all c
|
|
|
962
961
|
customConnectors
|
|
963
962
|
);
|
|
964
963
|
const connectorSlugs = discoveredConnectors.map((connector) => {
|
|
965
|
-
return connector.
|
|
964
|
+
return connector.slug;
|
|
966
965
|
});
|
|
967
966
|
const connectorSlugWidth = Math.max(
|
|
968
967
|
4,
|
|
@@ -982,7 +981,7 @@ var listCommand = new Command().name("list").alias("ls").description("List all c
|
|
|
982
981
|
);
|
|
983
982
|
const authorizedHeader = agentCtx ? `AUTHORIZED FOR ${agentCtx.displayName}` : null;
|
|
984
983
|
const headerParts = [
|
|
985
|
-
"
|
|
984
|
+
"SLUG".padEnd(connectorSlugWidth),
|
|
986
985
|
connectedAsHeader.padEnd(connectedAsWidth)
|
|
987
986
|
];
|
|
988
987
|
if (authorizedHeader) headerParts.push(authorizedHeader);
|
|
@@ -1015,7 +1014,7 @@ function parseLimit(raw) {
|
|
|
1015
1014
|
return n;
|
|
1016
1015
|
}
|
|
1017
1016
|
var searchCommand = new Command().name("search").description(
|
|
1018
|
-
"Search connectors by
|
|
1017
|
+
"Search connectors by slug, label, category, generation type, or tag"
|
|
1019
1018
|
).argument("<keyword>", "Search keyword (case-insensitive)").option("--agent <id>", "Show per-agent authorization column").option(
|
|
1020
1019
|
"--limit <n>",
|
|
1021
1020
|
`Maximum number of results to display (default ${DEFAULT_LIMIT})`,
|
|
@@ -1049,7 +1048,7 @@ var searchCommand = new Command().name("search").description(
|
|
|
1049
1048
|
if (total > options.limit) {
|
|
1050
1049
|
console.log(`Too many results (top ${options.limit} of ${total}):`);
|
|
1051
1050
|
}
|
|
1052
|
-
const connectorSlugHeader = "
|
|
1051
|
+
const connectorSlugHeader = "SLUG";
|
|
1053
1052
|
const connectedAsHeader = "CONNECTED AS";
|
|
1054
1053
|
const connectedCells = results.map((r) => {
|
|
1055
1054
|
return renderConnectorDiscoveryConnectedAsCell(r.connector);
|
|
@@ -1057,7 +1056,7 @@ var searchCommand = new Command().name("search").description(
|
|
|
1057
1056
|
const connectorSlugWidth = Math.max(
|
|
1058
1057
|
connectorSlugHeader.length,
|
|
1059
1058
|
...results.map((r) => {
|
|
1060
|
-
return r.connector.
|
|
1059
|
+
return r.connector.slug.length;
|
|
1061
1060
|
})
|
|
1062
1061
|
);
|
|
1063
1062
|
const connectedAsWidth = Math.max(
|
|
@@ -1077,7 +1076,7 @@ var searchCommand = new Command().name("search").description(
|
|
|
1077
1076
|
for (let i = 0; i < results.length; i++) {
|
|
1078
1077
|
const result = results[i];
|
|
1079
1078
|
const parts = [
|
|
1080
|
-
result.connector.
|
|
1079
|
+
result.connector.slug.padEnd(connectorSlugWidth),
|
|
1081
1080
|
padEndAnsi(connectedCells[i], connectedAsWidth)
|
|
1082
1081
|
];
|
|
1083
1082
|
if (agentCtx) {
|
|
@@ -1130,7 +1129,7 @@ function printConnectorDetails(connector) {
|
|
|
1130
1129
|
}
|
|
1131
1130
|
}
|
|
1132
1131
|
async function printAgentAction(connector, agentCtx) {
|
|
1133
|
-
const connectorSlug = connector.
|
|
1132
|
+
const connectorSlug = connector.slug;
|
|
1134
1133
|
const authorized = agentCtx.authorizedConnectorSlugs.has(connectorSlug);
|
|
1135
1134
|
const isConnected = connector.connected;
|
|
1136
1135
|
const needsReconnect = connector.connectionStatus === "reconnect-required";
|
|
@@ -1193,7 +1192,7 @@ async function printAgentAction(connector, agentCtx) {
|
|
|
1193
1192
|
}
|
|
1194
1193
|
}
|
|
1195
1194
|
async function printStandaloneAction(connector) {
|
|
1196
|
-
const connectorSlug = connector.
|
|
1195
|
+
const connectorSlug = connector.slug;
|
|
1197
1196
|
if (connector.connectionStatus === "connected" || connector.connectionStatus === "scope-mismatch") {
|
|
1198
1197
|
return;
|
|
1199
1198
|
}
|
|
@@ -1210,7 +1209,7 @@ async function printStandaloneAction(connector) {
|
|
|
1210
1209
|
console.log(`Connect it at: [Connect ${connectorSlug}](${url})`);
|
|
1211
1210
|
}
|
|
1212
1211
|
}
|
|
1213
|
-
var statusCommand = new Command().name("status").description("Show detailed status of a connector").argument("<
|
|
1212
|
+
var statusCommand = new Command().name("status").description("Show detailed status of a connector").argument("<slug>", "Connector slug (e.g., github)").option("--agent <id>", "Show authorization state for the given agent").action(
|
|
1214
1213
|
withErrorHandler(
|
|
1215
1214
|
async (connectorSlug, options) => {
|
|
1216
1215
|
const [catalog, agentCtx] = await Promise.all([
|
|
@@ -1231,7 +1230,7 @@ var statusCommand = new Command().name("status").description("Show detailed stat
|
|
|
1231
1230
|
}
|
|
1232
1231
|
);
|
|
1233
1232
|
}
|
|
1234
|
-
console.log(`Connector: ${source_default.cyan(connector.
|
|
1233
|
+
console.log(`Connector: ${source_default.cyan(connector.slug)}`);
|
|
1235
1234
|
console.log();
|
|
1236
1235
|
printConnectorDetails(connector);
|
|
1237
1236
|
if (agentCtx) {
|
|
@@ -1547,7 +1546,7 @@ if (!callbackPromptAvailable) {
|
|
|
1547
1546
|
}
|
|
1548
1547
|
var callbackPromptExample = callbackPromptAvailable ? ' zero connector permission-request github --permission contents:write --callback-prompt "Re-check the permission, then continue the previous task"\n' : "";
|
|
1549
1548
|
var callbackPromptNotes = callbackPromptAvailable ? " - Use --callback-prompt only when this turn needs exactly one connector or permission action\n - Callback prompts are included in the URL; keep them concise and do not include secrets\n" : "";
|
|
1550
|
-
var permissionRequestCommand2 = new Command().name("permission-request").description("Request permission to use a connector capability").argument("<
|
|
1549
|
+
var permissionRequestCommand2 = new Command().name("permission-request").description("Request permission to use a connector capability").argument("<slug>", "The connector slug (e.g. github)").addOption(
|
|
1551
1550
|
new Option(
|
|
1552
1551
|
"--permission <name>",
|
|
1553
1552
|
"The permission name to request"
|
|
@@ -1603,9 +1602,9 @@ ${callbackPromptNotes} - Permission requests update the current user's connecto
|
|
|
1603
1602
|
const agentId = opts.agent ?? process.env.ZERO_AGENT_ID;
|
|
1604
1603
|
const metadata = await getZeroConnectorCatalogPermissions(connectorSlug);
|
|
1605
1604
|
if (!metadata) {
|
|
1606
|
-
throw new Error(`Unknown connector
|
|
1605
|
+
throw new Error(`Unknown connector slug: ${connectorSlug}`);
|
|
1607
1606
|
}
|
|
1608
|
-
if (opts.permission !== UNKNOWN_PERMISSION_GRANT && !
|
|
1607
|
+
if (opts.permission !== UNKNOWN_PERMISSION_GRANT && !hasConnectorFirewallMetadataPermission(metadata, opts.permission)) {
|
|
1609
1608
|
throw new Error(
|
|
1610
1609
|
`Unknown permission "${opts.permission}" for ${connectorSlug}`
|
|
1611
1610
|
);
|
|
@@ -1626,4 +1625,4 @@ var zeroConnectorCommand = new Command().name("connector").description("Manage a
|
|
|
1626
1625
|
export {
|
|
1627
1626
|
zeroConnectorCommand
|
|
1628
1627
|
};
|
|
1629
|
-
//# sourceMappingURL=connector-
|
|
1628
|
+
//# sourceMappingURL=connector-6YIH3K55.js.map
|