@vm0/cli 9.267.0 → 9.269.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{agent-OMZZFFOX.js → agent-VK7PFHFX.js} +11 -11
- package/agent-VK7PFHFX.js.map +1 -0
- package/{banking-BVCIXQ5N.js → banking-GD4YJ7QA.js} +4 -4
- package/{browser-MZYVERXT.js → browser-T44LR4CD.js} +4 -4
- package/{chat-XAIEMJJJ.js → chat-GC5PXDMC.js} +5 -5
- package/{chunk-PYNAJYFD.js → chunk-3ZIEOU43.js} +46 -38
- package/chunk-3ZIEOU43.js.map +1 -0
- package/{chunk-TNDBFUFP.js → chunk-4WDDMKO6.js} +1 -6
- package/chunk-4WDDMKO6.js.map +1 -0
- package/{chunk-RU2TI2U2.js → chunk-5WCJ4YK2.js} +2 -2
- package/{chunk-LYI45KHY.js → chunk-73DZG6Q7.js} +138 -57
- package/chunk-73DZG6Q7.js.map +1 -0
- package/{chunk-3AYDKKKU.js → chunk-C6ZDYQZB.js} +2 -2
- package/{chunk-GU4ZJECC.js → chunk-HWHNQPKS.js} +92 -6
- package/chunk-HWHNQPKS.js.map +1 -0
- package/{chunk-FLF6ZMKJ.js → chunk-NGXH4WMD.js} +29 -34
- package/chunk-NGXH4WMD.js.map +1 -0
- package/chunk-PNFIYMDN.js +22 -0
- package/chunk-PNFIYMDN.js.map +1 -0
- package/{chunk-5TMLTATP.js → chunk-Q4PS674D.js} +2 -2
- package/{chunk-GTGI6NWJ.js → chunk-X24DXUXC.js} +2 -2
- package/{computer-use-OMUCKEH4.js → computer-use-K56KV7VB.js} +4 -4
- package/{connector-DZ5RLANA.js → connector-QQWAHPS4.js} +119 -59
- package/connector-QQWAHPS4.js.map +1 -0
- package/{credit-ZTZPYLHJ.js → credit-ROARDLCA.js} +5 -5
- package/{developer-support-VWUHT7BY.js → developer-support-UDMUZCE3.js} +4 -4
- package/{doctor-WTSDGI5C.js → doctor-RGYXFZHU.js} +5 -5
- package/{feishu-CWVMYPJJ.js → feishu-OBNUWOA2.js} +4 -4
- package/{finance-67XW3BDK.js → finance-F6O6Y6PV.js} +4 -4
- package/{generate-5BFGTIYQ.js → generate-MUXDMLOJ.js} +10 -10
- package/generate-MUXDMLOJ.js.map +1 -0
- package/{github-D2WOKACM.js → github-2C7AOKI4.js} +4 -4
- package/{goal-PB5PPIKK.js → goal-W3LM6XZV.js} +4 -4
- package/{host-SKUS46EY.js → host-P7D2E62D.js} +4 -4
- package/{logs-UVEMZZGC.js → logs-BAHOQLAE.js} +6 -6
- package/{mail-NIXLTFM2.js → mail-VKEHKTZI.js} +6 -6
- package/{maps-O4EJGJGI.js → maps-NZTI34NQ.js} +4 -4
- package/{model-CYLLV5SU.js → model-IR6ZDEE2.js} +5 -5
- package/{model-provider-VDFCPVGR.js → model-provider-DFX4CPKT.js} +5 -5
- package/{org-EKZ5TZ6C.js → org-XVM6CZTT.js} +4 -4
- package/package.json +1 -1
- package/{people-search-SXKWISQC.js → people-search-IV3H5OUA.js} +4 -4
- package/{phone-KQUWXL2F.js → phone-HUY6BIZX.js} +4 -4
- package/{preference-ZUT6YDYU.js → preference-HMVK2L5M.js} +4 -4
- package/{resource-WLJIYIAG.js → resource-5UIGWAZD.js} +4 -4
- package/{scrape-RBI7L7OI.js → scrape-OYG3NWYJ.js} +4 -4
- package/{search-N4HHOYG3.js → search-NRTKXEOM.js} +6 -6
- package/{secret-M3JN4ILK.js → secret-3AIMSGWX.js} +4 -4
- package/{slack-RKIRNUMX.js → slack-SBHKIKCI.js} +4 -4
- package/{teams-EOQH4NSD.js → teams-Y7RWSTVP.js} +4 -4
- package/{telegram-TKIUQBRV.js → telegram-MVCNV2KP.js} +4 -4
- package/{upgrade-Z46EJ6LM.js → upgrade-2SNSYI66.js} +3 -3
- package/{variable-4MKDDCMH.js → variable-ZUQ7J3X2.js} +4 -4
- package/{video-L5EPZEBJ.js → video-TDGGCC4I.js} +3 -3
- package/{weather-WBTWM2L3.js → weather-CVL343M4.js} +4 -4
- package/{web-OI25YJCD.js → web-M5AW34U4.js} +4 -4
- package/{web-search-55JR4DFQ.js → web-search-C2BOORHI.js} +4 -4
- package/{whoami-5B24JEWY.js → whoami-TWCA5HMI.js} +13 -13
- package/whoami-TWCA5HMI.js.map +1 -0
- package/{workflow-F2DNCBSD.js → workflow-QAMRYA5T.js} +99 -8
- package/workflow-QAMRYA5T.js.map +1 -0
- package/zero.js +43 -43
- package/agent-OMZZFFOX.js.map +0 -1
- package/chunk-FLF6ZMKJ.js.map +0 -1
- package/chunk-GU4ZJECC.js.map +0 -1
- package/chunk-LYI45KHY.js.map +0 -1
- package/chunk-PYNAJYFD.js.map +0 -1
- package/chunk-TNDBFUFP.js.map +0 -1
- package/chunk-TX5E4N6E.js +0 -97
- package/chunk-TX5E4N6E.js.map +0 -1
- package/connector-DZ5RLANA.js.map +0 -1
- package/generate-5BFGTIYQ.js.map +0 -1
- package/whoami-5B24JEWY.js.map +0 -1
- package/workflow-F2DNCBSD.js.map +0 -1
- /package/{banking-BVCIXQ5N.js.map → banking-GD4YJ7QA.js.map} +0 -0
- /package/{browser-MZYVERXT.js.map → browser-T44LR4CD.js.map} +0 -0
- /package/{chat-XAIEMJJJ.js.map → chat-GC5PXDMC.js.map} +0 -0
- /package/{chunk-RU2TI2U2.js.map → chunk-5WCJ4YK2.js.map} +0 -0
- /package/{chunk-3AYDKKKU.js.map → chunk-C6ZDYQZB.js.map} +0 -0
- /package/{chunk-5TMLTATP.js.map → chunk-Q4PS674D.js.map} +0 -0
- /package/{chunk-GTGI6NWJ.js.map → chunk-X24DXUXC.js.map} +0 -0
- /package/{computer-use-OMUCKEH4.js.map → computer-use-K56KV7VB.js.map} +0 -0
- /package/{credit-ZTZPYLHJ.js.map → credit-ROARDLCA.js.map} +0 -0
- /package/{developer-support-VWUHT7BY.js.map → developer-support-UDMUZCE3.js.map} +0 -0
- /package/{doctor-WTSDGI5C.js.map → doctor-RGYXFZHU.js.map} +0 -0
- /package/{feishu-CWVMYPJJ.js.map → feishu-OBNUWOA2.js.map} +0 -0
- /package/{finance-67XW3BDK.js.map → finance-F6O6Y6PV.js.map} +0 -0
- /package/{github-D2WOKACM.js.map → github-2C7AOKI4.js.map} +0 -0
- /package/{goal-PB5PPIKK.js.map → goal-W3LM6XZV.js.map} +0 -0
- /package/{host-SKUS46EY.js.map → host-P7D2E62D.js.map} +0 -0
- /package/{logs-UVEMZZGC.js.map → logs-BAHOQLAE.js.map} +0 -0
- /package/{mail-NIXLTFM2.js.map → mail-VKEHKTZI.js.map} +0 -0
- /package/{maps-O4EJGJGI.js.map → maps-NZTI34NQ.js.map} +0 -0
- /package/{model-CYLLV5SU.js.map → model-IR6ZDEE2.js.map} +0 -0
- /package/{model-provider-VDFCPVGR.js.map → model-provider-DFX4CPKT.js.map} +0 -0
- /package/{org-EKZ5TZ6C.js.map → org-XVM6CZTT.js.map} +0 -0
- /package/{people-search-SXKWISQC.js.map → people-search-IV3H5OUA.js.map} +0 -0
- /package/{phone-KQUWXL2F.js.map → phone-HUY6BIZX.js.map} +0 -0
- /package/{preference-ZUT6YDYU.js.map → preference-HMVK2L5M.js.map} +0 -0
- /package/{resource-WLJIYIAG.js.map → resource-5UIGWAZD.js.map} +0 -0
- /package/{scrape-RBI7L7OI.js.map → scrape-OYG3NWYJ.js.map} +0 -0
- /package/{search-N4HHOYG3.js.map → search-NRTKXEOM.js.map} +0 -0
- /package/{secret-M3JN4ILK.js.map → secret-3AIMSGWX.js.map} +0 -0
- /package/{slack-RKIRNUMX.js.map → slack-SBHKIKCI.js.map} +0 -0
- /package/{teams-EOQH4NSD.js.map → teams-Y7RWSTVP.js.map} +0 -0
- /package/{telegram-TKIUQBRV.js.map → telegram-MVCNV2KP.js.map} +0 -0
- /package/{upgrade-Z46EJ6LM.js.map → upgrade-2SNSYI66.js.map} +0 -0
- /package/{variable-4MKDDCMH.js.map → variable-ZUQ7J3X2.js.map} +0 -0
- /package/{video-L5EPZEBJ.js.map → video-TDGGCC4I.js.map} +0 -0
- /package/{weather-WBTWM2L3.js.map → weather-CVL343M4.js.map} +0 -0
- /package/{web-OI25YJCD.js.map → web-M5AW34U4.js.map} +0 -0
- /package/{web-search-55JR4DFQ.js.map → web-search-C2BOORHI.js.map} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __createRequire } from "node:module";
|
|
3
|
+
const require = __createRequire(import.meta.url);
|
|
4
|
+
import {
|
|
5
|
+
source_default
|
|
6
|
+
} from "./chunk-Q4PS674D.js";
|
|
7
|
+
import {
|
|
8
|
+
init_esm_shims
|
|
9
|
+
} from "./chunk-GPYQ24DR.js";
|
|
10
|
+
|
|
11
|
+
// src/lib/utils/format-utils.ts
|
|
12
|
+
init_esm_shims();
|
|
13
|
+
function policyIcon(policy) {
|
|
14
|
+
if (policy === "allow") return source_default.green("\u2713");
|
|
15
|
+
if (policy === "ask") return source_default.yellow("?");
|
|
16
|
+
return source_default.dim("\u2717");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
policyIcon
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=chunk-PNFIYMDN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils/format-utils.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport type { FirewallPolicyValue } from \"@vm0/connectors/firewall-types\";\n\nexport function policyIcon(policy: FirewallPolicyValue): string {\n if (policy === \"allow\") return chalk.green(\"✓\");\n if (policy === \"ask\") return chalk.yellow(\"?\");\n return chalk.dim(\"✗\");\n}\n"],"mappings":";;;;;;;;;;;AAAA;AAGO,SAAS,WAAW,QAAqC;AAC9D,MAAI,WAAW,QAAS,QAAO,eAAM,MAAM,QAAG;AAC9C,MAAI,WAAW,MAAO,QAAO,eAAM,OAAO,GAAG;AAC7C,SAAO,eAAM,IAAI,QAAG;AACtB;","names":[]}
|
|
@@ -15391,7 +15391,7 @@ function createCliClientHeaderInjector(options) {
|
|
|
15391
15391
|
}
|
|
15392
15392
|
var addDefaultCliClientHeaders = createCliClientHeaderInjector({
|
|
15393
15393
|
clientVersion: addClientCapabilityToVersion(
|
|
15394
|
-
"9.
|
|
15394
|
+
"9.269.0",
|
|
15395
15395
|
CLIENT_CAPABILITY_CONNECTOR_SLUG_IDENTITIES
|
|
15396
15396
|
)
|
|
15397
15397
|
});
|
|
@@ -16784,4 +16784,4 @@ export {
|
|
|
16784
16784
|
apiErrorSchema,
|
|
16785
16785
|
withErrorHandler
|
|
16786
16786
|
};
|
|
16787
|
-
//# sourceMappingURL=chunk-
|
|
16787
|
+
//# sourceMappingURL=chunk-Q4PS674D.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
getActiveToken,
|
|
7
7
|
getBaseUrl,
|
|
8
8
|
headersWithCliClientHeaders
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Q4PS674D.js";
|
|
10
10
|
import {
|
|
11
11
|
init_esm_shims
|
|
12
12
|
} from "./chunk-GPYQ24DR.js";
|
|
@@ -648,4 +648,4 @@ export {
|
|
|
648
648
|
generateWebVideo,
|
|
649
649
|
transcribeAudio
|
|
650
650
|
};
|
|
651
|
-
//# sourceMappingURL=chunk-
|
|
651
|
+
//# sourceMappingURL=chunk-X24DXUXC.js.map
|
|
@@ -12,12 +12,12 @@ import {
|
|
|
12
12
|
fetchComputerUseScreenshot,
|
|
13
13
|
getComputerUseCommand,
|
|
14
14
|
listComputerUseHosts
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-73DZG6Q7.js";
|
|
16
|
+
import "./chunk-X24DXUXC.js";
|
|
17
17
|
import {
|
|
18
18
|
ApiRequestError,
|
|
19
19
|
withErrorHandler
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-Q4PS674D.js";
|
|
21
21
|
import "./chunk-MD3YWUKO.js";
|
|
22
22
|
import {
|
|
23
23
|
Command
|
|
@@ -970,4 +970,4 @@ export {
|
|
|
970
970
|
formatComputerUseResultForConsole,
|
|
971
971
|
zeroComputerUseCommand
|
|
972
972
|
};
|
|
973
|
-
//# sourceMappingURL=computer-use-
|
|
973
|
+
//# sourceMappingURL=computer-use-K56KV7VB.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-HWHNQPKS.js";
|
|
7
7
|
import {
|
|
8
8
|
CALLBACK_PROMPT_PLACEHOLDER,
|
|
9
9
|
addRequestedCallbackSearchParams,
|
|
@@ -15,9 +15,10 @@ import {
|
|
|
15
15
|
printCallbackActionUrlExample,
|
|
16
16
|
printCallbackTurnInstruction,
|
|
17
17
|
resolveAgentContext,
|
|
18
|
+
resolveConnectorDiscoveryAgentContext,
|
|
18
19
|
resolveManualGrantAuthMethod,
|
|
19
|
-
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
searchConnectorCatalog
|
|
21
|
+
} from "./chunk-3ZIEOU43.js";
|
|
21
22
|
import {
|
|
22
23
|
UNKNOWN_PERMISSION_GRANT,
|
|
23
24
|
connectZeroConnectorManualGrant,
|
|
@@ -33,19 +34,19 @@ import {
|
|
|
33
34
|
getZeroCustomConnector,
|
|
34
35
|
listZeroConnectorCatalogStatus,
|
|
35
36
|
listZeroCustomConnectors
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-73DZG6Q7.js";
|
|
38
|
+
import "./chunk-X24DXUXC.js";
|
|
38
39
|
import {
|
|
39
40
|
getPlatformOrigin,
|
|
40
41
|
toPlatformUrl
|
|
41
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-5WCJ4YK2.js";
|
|
42
43
|
import "./chunk-MA22KQYU.js";
|
|
43
44
|
import {
|
|
44
45
|
ApiRequestError,
|
|
45
46
|
getApiUrl,
|
|
46
47
|
source_default,
|
|
47
48
|
withErrorHandler
|
|
48
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-Q4PS674D.js";
|
|
49
50
|
import "./chunk-MD3YWUKO.js";
|
|
50
51
|
import {
|
|
51
52
|
Command,
|
|
@@ -167,7 +168,7 @@ function buildDiagnosticRequest(opts, method) {
|
|
|
167
168
|
mode: "url",
|
|
168
169
|
method,
|
|
169
170
|
url: stripUrlQueryAndFragment(opts.url),
|
|
170
|
-
...opts.connector !== void 0 ? {
|
|
171
|
+
...opts.connector !== void 0 ? { connectorSlug: opts.connector } : {},
|
|
171
172
|
...opts.envName !== void 0 ? { environmentName: opts.envName } : {}
|
|
172
173
|
};
|
|
173
174
|
}
|
|
@@ -211,24 +212,24 @@ function unsafeInputError(reason) {
|
|
|
211
212
|
}
|
|
212
213
|
function ambiguousConnectorError(request, result) {
|
|
213
214
|
const candidates = [...result.candidates].sort((left, right) => {
|
|
214
|
-
return left.
|
|
215
|
+
return left.connectorSlug.localeCompare(right.connectorSlug);
|
|
215
216
|
});
|
|
216
217
|
const commands = candidates.map((candidate) => {
|
|
217
|
-
return ` ${connectorSelectionCommand(request.url, request.method, candidate.
|
|
218
|
+
return ` ${connectorSelectionCommand(request.url, request.method, candidate.connectorSlug)}`;
|
|
218
219
|
});
|
|
219
220
|
return new Error(
|
|
220
221
|
`Multiple connectors match ${request.method} ${request.url}: ${candidates.map((candidate) => {
|
|
221
|
-
return candidate.
|
|
222
|
+
return candidate.connectorSlug;
|
|
222
223
|
}).join(", ")}
|
|
223
224
|
Select one explicitly:
|
|
224
225
|
${commands.join("\n")}`
|
|
225
226
|
);
|
|
226
227
|
}
|
|
227
228
|
function unknownConnectorError(request) {
|
|
228
|
-
if (request.mode === "url" && request.
|
|
229
|
+
if (request.mode === "url" && request.connectorSlug !== void 0) {
|
|
229
230
|
return new Error(
|
|
230
|
-
`Unknown connector
|
|
231
|
-
Run: zero connector search ${shellQuoteArg(request.
|
|
231
|
+
`Unknown connector slug: ${request.connectorSlug}
|
|
232
|
+
Run: zero connector search ${shellQuoteArg(request.connectorSlug)}`
|
|
232
233
|
);
|
|
233
234
|
}
|
|
234
235
|
return new Error("The requested connector is unknown.");
|
|
@@ -239,10 +240,10 @@ function noMatchError(result) {
|
|
|
239
240
|
);
|
|
240
241
|
}
|
|
241
242
|
function connectorMismatchError(request, result) {
|
|
242
|
-
const requestedSlug = request.
|
|
243
|
+
const requestedSlug = request.connectorSlug ?? "the requested connector";
|
|
243
244
|
return new Error(
|
|
244
|
-
`Connector ${requestedSlug} does not own ${request.method} ${request.url}; the matching connector is ${result.connector.
|
|
245
|
-
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)}`
|
|
246
247
|
);
|
|
247
248
|
}
|
|
248
249
|
function environmentNotOwnedError(request, result) {
|
|
@@ -281,7 +282,7 @@ function resolvedDiagnostic(request, result) {
|
|
|
281
282
|
throw environmentNotUsedError(request, result);
|
|
282
283
|
case "unresolved-dynamic-base":
|
|
283
284
|
throw new Error(
|
|
284
|
-
`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.`
|
|
285
286
|
);
|
|
286
287
|
case "run-context-unavailable":
|
|
287
288
|
throw new Error(
|
|
@@ -293,7 +294,7 @@ function printDiagnosticSummary(request, result) {
|
|
|
293
294
|
if (result.mode === "url") {
|
|
294
295
|
const urlRequest = requireUrlRequest(request);
|
|
295
296
|
console.log(
|
|
296
|
-
`URL ${urlRequest.url} matches the ${result.connector.label} connector (
|
|
297
|
+
`URL ${urlRequest.url} matches the ${result.connector.label} connector (slug: ${result.connector.connectorSlug}).`
|
|
297
298
|
);
|
|
298
299
|
console.log(` Matched base URL: ${result.base}`);
|
|
299
300
|
console.log(` Relative path: ${result.relativePath}`);
|
|
@@ -307,7 +308,7 @@ function printDiagnosticSummary(request, result) {
|
|
|
307
308
|
return;
|
|
308
309
|
}
|
|
309
310
|
console.log(
|
|
310
|
-
`${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}).`
|
|
311
312
|
);
|
|
312
313
|
}
|
|
313
314
|
function diagnosticEnvironmentNames(result) {
|
|
@@ -626,7 +627,7 @@ function printUrlPermissionDiagnostic(result, agentId) {
|
|
|
626
627
|
console.log("");
|
|
627
628
|
for (const permission of result.permission.permissions) {
|
|
628
629
|
printNamedPolicyResult(
|
|
629
|
-
result.connector.
|
|
630
|
+
result.connector.connectorSlug,
|
|
630
631
|
permission.name,
|
|
631
632
|
permission.policy,
|
|
632
633
|
agentId
|
|
@@ -638,7 +639,7 @@ function printUrlPermissionDiagnostic(result, agentId) {
|
|
|
638
639
|
);
|
|
639
640
|
console.log("");
|
|
640
641
|
printUnknownEndpointPolicy(
|
|
641
|
-
result.connector.
|
|
642
|
+
result.connector.connectorSlug,
|
|
642
643
|
result.permission.policy,
|
|
643
644
|
agentId
|
|
644
645
|
);
|
|
@@ -661,7 +662,7 @@ function printEnvironmentPermissionDiagnostic(result, permissionName, agentId) {
|
|
|
661
662
|
);
|
|
662
663
|
console.log("");
|
|
663
664
|
printNamedPolicyResult(
|
|
664
|
-
result.connector.
|
|
665
|
+
result.connector.connectorSlug,
|
|
665
666
|
permissionName,
|
|
666
667
|
result.permission,
|
|
667
668
|
agentId
|
|
@@ -704,9 +705,8 @@ var checkConnectorCommand = new Command().name("check").description(
|
|
|
704
705
|
"A full URL to diagnose \u2014 matches connector ownership, route environment names, and permission (e.g. https://api.github.com/repos/owner/repo)"
|
|
705
706
|
)
|
|
706
707
|
).addOption(
|
|
707
|
-
// TODO(#23619): Rename this stable CLI option value label in the CLI rollout.
|
|
708
708
|
new Option(
|
|
709
|
-
"--connector <
|
|
709
|
+
"--connector <slug>",
|
|
710
710
|
"Select the connector when multiple connectors own the same URL route"
|
|
711
711
|
)
|
|
712
712
|
).addOption(
|
|
@@ -752,7 +752,7 @@ How connectors work:
|
|
|
752
752
|
const platformUrl = toPlatformUrl(await getApiUrl());
|
|
753
753
|
const ctx = {
|
|
754
754
|
environmentNames: diagnosticEnvironmentNames(result),
|
|
755
|
-
connectorSlug: result.connector.
|
|
755
|
+
connectorSlug: result.connector.connectorSlug,
|
|
756
756
|
label: result.connector.label,
|
|
757
757
|
connectorAvailable: result.connector.visibility === "available",
|
|
758
758
|
credentialResolution: result.connector.credentialResolution,
|
|
@@ -817,7 +817,7 @@ function parseConnectorValues(rawValues) {
|
|
|
817
817
|
}
|
|
818
818
|
return values;
|
|
819
819
|
}
|
|
820
|
-
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(
|
|
821
821
|
"--value <name=value>",
|
|
822
822
|
"Connector field value; repeat for multiple fields",
|
|
823
823
|
collectValue,
|
|
@@ -842,7 +842,7 @@ var connectCommand = new Command().name("connect").description("Connect a connec
|
|
|
842
842
|
options.authMethod
|
|
843
843
|
);
|
|
844
844
|
const connector = await connectZeroConnectorManualGrant(
|
|
845
|
-
connectorMetadata.
|
|
845
|
+
connectorMetadata.slug,
|
|
846
846
|
authMethod.id,
|
|
847
847
|
values
|
|
848
848
|
);
|
|
@@ -851,9 +851,9 @@ var connectCommand = new Command().name("connect").description("Connect a connec
|
|
|
851
851
|
return;
|
|
852
852
|
}
|
|
853
853
|
console.log(source_default.green(`\u2713 ${connectorMetadata.label} connected`));
|
|
854
|
-
console.log(source_default.dim(`
|
|
854
|
+
console.log(source_default.dim(` Slug: ${connector.slug}`));
|
|
855
855
|
console.log(source_default.dim(` Auth Method: ${connector.authMethod}`));
|
|
856
|
-
console.log(source_default.dim(` Run: zero connector status ${connector.
|
|
856
|
+
console.log(source_default.dim(` Run: zero connector status ${connector.slug}`));
|
|
857
857
|
})
|
|
858
858
|
);
|
|
859
859
|
|
|
@@ -893,15 +893,75 @@ function padEndAnsi(s, width) {
|
|
|
893
893
|
return s + " ".repeat(Math.max(0, width - visible));
|
|
894
894
|
}
|
|
895
895
|
|
|
896
|
+
// src/commands/zero/connector/discovery.ts
|
|
897
|
+
init_esm_shims();
|
|
898
|
+
function connectorDiscoveryItems(catalogConnectors, customConnectors) {
|
|
899
|
+
return [
|
|
900
|
+
...catalogConnectors.map((connector) => {
|
|
901
|
+
return {
|
|
902
|
+
kind: "catalog",
|
|
903
|
+
slug: connector.slug,
|
|
904
|
+
label: connector.label,
|
|
905
|
+
description: connector.description,
|
|
906
|
+
category: connector.category,
|
|
907
|
+
tags: connector.tags,
|
|
908
|
+
generation: connector.generation,
|
|
909
|
+
authMethods: connector.authMethods,
|
|
910
|
+
catalogConnector: connector
|
|
911
|
+
};
|
|
912
|
+
}),
|
|
913
|
+
...customConnectors.map((connector) => {
|
|
914
|
+
return {
|
|
915
|
+
kind: "custom",
|
|
916
|
+
slug: connector.slug,
|
|
917
|
+
label: connector.displayName,
|
|
918
|
+
description: "",
|
|
919
|
+
category: "custom",
|
|
920
|
+
tags: [],
|
|
921
|
+
generation: [],
|
|
922
|
+
authMethods: [],
|
|
923
|
+
customConnector: connector
|
|
924
|
+
};
|
|
925
|
+
})
|
|
926
|
+
];
|
|
927
|
+
}
|
|
928
|
+
function renderConnectorDiscoveryConnectedAsCell(connector) {
|
|
929
|
+
if (connector.kind === "catalog") {
|
|
930
|
+
return renderConnectedAsCell(connector.catalogConnector);
|
|
931
|
+
}
|
|
932
|
+
if (connector.customConnector.connected) {
|
|
933
|
+
return source_default.green("connected");
|
|
934
|
+
}
|
|
935
|
+
if (connector.customConnector.missingRequiredFields.length === 0) {
|
|
936
|
+
return source_default.dim("(not connected)");
|
|
937
|
+
}
|
|
938
|
+
return source_default.yellow(
|
|
939
|
+
`missing ${connector.customConnector.missingRequiredFields.join(", ")}`
|
|
940
|
+
);
|
|
941
|
+
}
|
|
942
|
+
function isConnectorDiscoveryAuthorized(connector, agentContext) {
|
|
943
|
+
if (connector.kind === "catalog") {
|
|
944
|
+
return agentContext.authorizedConnectorSlugs.has(connector.slug);
|
|
945
|
+
}
|
|
946
|
+
return agentContext.authorizedCustomConnectorIds.has(
|
|
947
|
+
connector.customConnector.id
|
|
948
|
+
);
|
|
949
|
+
}
|
|
950
|
+
|
|
896
951
|
// src/commands/zero/connector/list.ts
|
|
897
952
|
var listCommand = new Command().name("list").alias("ls").description("List all connectors and their status").option("--agent <id>", "Show per-agent authorization column").action(
|
|
898
953
|
withErrorHandler(async (options) => {
|
|
899
|
-
const [{ connectors }, agentCtx] = await Promise.all([
|
|
954
|
+
const [{ connectors }, customConnectors, agentCtx] = await Promise.all([
|
|
900
955
|
listZeroConnectorCatalogStatus(),
|
|
901
|
-
|
|
956
|
+
listZeroCustomConnectors(),
|
|
957
|
+
resolveConnectorDiscoveryAgentContext(options.agent)
|
|
902
958
|
]);
|
|
903
|
-
const
|
|
904
|
-
|
|
959
|
+
const discoveredConnectors = connectorDiscoveryItems(
|
|
960
|
+
connectors,
|
|
961
|
+
customConnectors
|
|
962
|
+
);
|
|
963
|
+
const connectorSlugs = discoveredConnectors.map((connector) => {
|
|
964
|
+
return connector.slug;
|
|
905
965
|
});
|
|
906
966
|
const connectorSlugWidth = Math.max(
|
|
907
967
|
4,
|
|
@@ -910,8 +970,8 @@ var listCommand = new Command().name("list").alias("ls").description("List all c
|
|
|
910
970
|
})
|
|
911
971
|
);
|
|
912
972
|
const connectedAsHeader = "CONNECTED AS";
|
|
913
|
-
const connectedCells =
|
|
914
|
-
return
|
|
973
|
+
const connectedCells = discoveredConnectors.map((connector) => {
|
|
974
|
+
return renderConnectorDiscoveryConnectedAsCell(connector);
|
|
915
975
|
});
|
|
916
976
|
const connectedAsWidth = Math.max(
|
|
917
977
|
connectedAsHeader.length,
|
|
@@ -921,18 +981,19 @@ var listCommand = new Command().name("list").alias("ls").description("List all c
|
|
|
921
981
|
);
|
|
922
982
|
const authorizedHeader = agentCtx ? `AUTHORIZED FOR ${agentCtx.displayName}` : null;
|
|
923
983
|
const headerParts = [
|
|
924
|
-
"
|
|
984
|
+
"SLUG".padEnd(connectorSlugWidth),
|
|
925
985
|
connectedAsHeader.padEnd(connectedAsWidth)
|
|
926
986
|
];
|
|
927
987
|
if (authorizedHeader) headerParts.push(authorizedHeader);
|
|
928
988
|
console.log(source_default.dim(headerParts.join(" ")));
|
|
929
989
|
for (let i = 0; i < connectorSlugs.length; i++) {
|
|
990
|
+
const connector = discoveredConnectors[i];
|
|
930
991
|
const connectorSlug = connectorSlugs[i];
|
|
931
992
|
const connectedCell = padEndAnsi(connectedCells[i], connectedAsWidth);
|
|
932
993
|
const parts = [connectorSlug.padEnd(connectorSlugWidth), connectedCell];
|
|
933
994
|
if (agentCtx) {
|
|
934
995
|
parts.push(
|
|
935
|
-
agentCtx
|
|
996
|
+
isConnectorDiscoveryAuthorized(connector, agentCtx) ? source_default.green("\u2713") : source_default.dim("-")
|
|
936
997
|
);
|
|
937
998
|
}
|
|
938
999
|
console.log(parts.join(" "));
|
|
@@ -953,7 +1014,7 @@ function parseLimit(raw) {
|
|
|
953
1014
|
return n;
|
|
954
1015
|
}
|
|
955
1016
|
var searchCommand = new Command().name("search").description(
|
|
956
|
-
"Search connectors by
|
|
1017
|
+
"Search connectors by slug, label, category, generation type, or tag"
|
|
957
1018
|
).argument("<keyword>", "Search keyword (case-insensitive)").option("--agent <id>", "Show per-agent authorization column").option(
|
|
958
1019
|
"--limit <n>",
|
|
959
1020
|
`Maximum number of results to display (default ${DEFAULT_LIMIT})`,
|
|
@@ -966,12 +1027,13 @@ var searchCommand = new Command().name("search").description(
|
|
|
966
1027
|
if (!trimmed) {
|
|
967
1028
|
throw new Error("Keyword cannot be empty.");
|
|
968
1029
|
}
|
|
969
|
-
const [{ connectors }, agentCtx] = await Promise.all([
|
|
1030
|
+
const [{ connectors }, customConnectors, agentCtx] = await Promise.all([
|
|
970
1031
|
listZeroConnectorCatalogStatus(),
|
|
971
|
-
|
|
1032
|
+
listZeroCustomConnectors(),
|
|
1033
|
+
resolveConnectorDiscoveryAgentContext(options.agent)
|
|
972
1034
|
]);
|
|
973
|
-
const { results, total } =
|
|
974
|
-
connectors,
|
|
1035
|
+
const { results, total } = searchConnectorCatalog(
|
|
1036
|
+
connectorDiscoveryItems(connectors, customConnectors),
|
|
975
1037
|
trimmed,
|
|
976
1038
|
options.limit
|
|
977
1039
|
);
|
|
@@ -986,15 +1048,15 @@ var searchCommand = new Command().name("search").description(
|
|
|
986
1048
|
if (total > options.limit) {
|
|
987
1049
|
console.log(`Too many results (top ${options.limit} of ${total}):`);
|
|
988
1050
|
}
|
|
989
|
-
const connectorSlugHeader = "
|
|
1051
|
+
const connectorSlugHeader = "SLUG";
|
|
990
1052
|
const connectedAsHeader = "CONNECTED AS";
|
|
991
1053
|
const connectedCells = results.map((r) => {
|
|
992
|
-
return
|
|
1054
|
+
return renderConnectorDiscoveryConnectedAsCell(r.connector);
|
|
993
1055
|
});
|
|
994
1056
|
const connectorSlugWidth = Math.max(
|
|
995
1057
|
connectorSlugHeader.length,
|
|
996
1058
|
...results.map((r) => {
|
|
997
|
-
return r.connector.
|
|
1059
|
+
return r.connector.slug.length;
|
|
998
1060
|
})
|
|
999
1061
|
);
|
|
1000
1062
|
const connectedAsWidth = Math.max(
|
|
@@ -1014,14 +1076,12 @@ var searchCommand = new Command().name("search").description(
|
|
|
1014
1076
|
for (let i = 0; i < results.length; i++) {
|
|
1015
1077
|
const result = results[i];
|
|
1016
1078
|
const parts = [
|
|
1017
|
-
result.connector.
|
|
1079
|
+
result.connector.slug.padEnd(connectorSlugWidth),
|
|
1018
1080
|
padEndAnsi(connectedCells[i], connectedAsWidth)
|
|
1019
1081
|
];
|
|
1020
1082
|
if (agentCtx) {
|
|
1021
1083
|
parts.push(
|
|
1022
|
-
agentCtx.
|
|
1023
|
-
result.connector.connectorRef
|
|
1024
|
-
) ? source_default.green("\u2713") : source_default.dim("-")
|
|
1084
|
+
isConnectorDiscoveryAuthorized(result.connector, agentCtx) ? source_default.green("\u2713") : source_default.dim("-")
|
|
1025
1085
|
);
|
|
1026
1086
|
}
|
|
1027
1087
|
console.log(parts.join(" "));
|
|
@@ -1069,7 +1129,7 @@ function printConnectorDetails(connector) {
|
|
|
1069
1129
|
}
|
|
1070
1130
|
}
|
|
1071
1131
|
async function printAgentAction(connector, agentCtx) {
|
|
1072
|
-
const connectorSlug = connector.
|
|
1132
|
+
const connectorSlug = connector.slug;
|
|
1073
1133
|
const authorized = agentCtx.authorizedConnectorSlugs.has(connectorSlug);
|
|
1074
1134
|
const isConnected = connector.connected;
|
|
1075
1135
|
const needsReconnect = connector.connectionStatus === "reconnect-required";
|
|
@@ -1132,7 +1192,7 @@ async function printAgentAction(connector, agentCtx) {
|
|
|
1132
1192
|
}
|
|
1133
1193
|
}
|
|
1134
1194
|
async function printStandaloneAction(connector) {
|
|
1135
|
-
const connectorSlug = connector.
|
|
1195
|
+
const connectorSlug = connector.slug;
|
|
1136
1196
|
if (connector.connectionStatus === "connected" || connector.connectionStatus === "scope-mismatch") {
|
|
1137
1197
|
return;
|
|
1138
1198
|
}
|
|
@@ -1149,7 +1209,7 @@ async function printStandaloneAction(connector) {
|
|
|
1149
1209
|
console.log(`Connect it at: [Connect ${connectorSlug}](${url})`);
|
|
1150
1210
|
}
|
|
1151
1211
|
}
|
|
1152
|
-
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(
|
|
1153
1213
|
withErrorHandler(
|
|
1154
1214
|
async (connectorSlug, options) => {
|
|
1155
1215
|
const [catalog, agentCtx] = await Promise.all([
|
|
@@ -1170,7 +1230,7 @@ var statusCommand = new Command().name("status").description("Show detailed stat
|
|
|
1170
1230
|
}
|
|
1171
1231
|
);
|
|
1172
1232
|
}
|
|
1173
|
-
console.log(`Connector: ${source_default.cyan(connector.
|
|
1233
|
+
console.log(`Connector: ${source_default.cyan(connector.slug)}`);
|
|
1174
1234
|
console.log();
|
|
1175
1235
|
printConnectorDetails(connector);
|
|
1176
1236
|
if (agentCtx) {
|
|
@@ -1486,7 +1546,7 @@ if (!callbackPromptAvailable) {
|
|
|
1486
1546
|
}
|
|
1487
1547
|
var callbackPromptExample = callbackPromptAvailable ? ' zero connector permission-request github --permission contents:write --callback-prompt "Re-check the permission, then continue the previous task"\n' : "";
|
|
1488
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" : "";
|
|
1489
|
-
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(
|
|
1490
1550
|
new Option(
|
|
1491
1551
|
"--permission <name>",
|
|
1492
1552
|
"The permission name to request"
|
|
@@ -1542,9 +1602,9 @@ ${callbackPromptNotes} - Permission requests update the current user's connecto
|
|
|
1542
1602
|
const agentId = opts.agent ?? process.env.ZERO_AGENT_ID;
|
|
1543
1603
|
const metadata = await getZeroConnectorCatalogPermissions(connectorSlug);
|
|
1544
1604
|
if (!metadata) {
|
|
1545
|
-
throw new Error(`Unknown connector
|
|
1605
|
+
throw new Error(`Unknown connector slug: ${connectorSlug}`);
|
|
1546
1606
|
}
|
|
1547
|
-
if (opts.permission !== UNKNOWN_PERMISSION_GRANT && !
|
|
1607
|
+
if (opts.permission !== UNKNOWN_PERMISSION_GRANT && !hasConnectorFirewallMetadataPermission(metadata, opts.permission)) {
|
|
1548
1608
|
throw new Error(
|
|
1549
1609
|
`Unknown permission "${opts.permission}" for ${connectorSlug}`
|
|
1550
1610
|
);
|
|
@@ -1565,4 +1625,4 @@ var zeroConnectorCommand = new Command().name("connector").description("Manage a
|
|
|
1565
1625
|
export {
|
|
1566
1626
|
zeroConnectorCommand
|
|
1567
1627
|
};
|
|
1568
|
-
//# sourceMappingURL=connector-
|
|
1628
|
+
//# sourceMappingURL=connector-QQWAHPS4.js.map
|