@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.
Files changed (119) hide show
  1. package/{agent-4QRFYL6Q.js → agent-YGPUCBVJ.js} +12 -12
  2. package/agent-YGPUCBVJ.js.map +1 -0
  3. package/{banking-VKKVWIYX.js → banking-JSGFRQ4L.js} +5 -5
  4. package/{browser-VFBMLIUS.js → browser-SNX5PNHT.js} +5 -5
  5. package/{chat-KQRKGQKS.js → chat-HIVVSEA5.js} +209 -24
  6. package/chat-HIVVSEA5.js.map +1 -0
  7. package/{chunk-TNDBFUFP.js → chunk-2EF4BXLJ.js} +2 -13
  8. package/chunk-2EF4BXLJ.js.map +1 -0
  9. package/chunk-2SSDVICG.js +22 -0
  10. package/chunk-2SSDVICG.js.map +1 -0
  11. package/{chunk-CZA5MW3N.js → chunk-46IAE7OE.js} +15 -17
  12. package/chunk-46IAE7OE.js.map +1 -0
  13. package/{chunk-DTZW7RES.js → chunk-AHGVNDOM.js} +3 -9
  14. package/{chunk-DTZW7RES.js.map → chunk-AHGVNDOM.js.map} +1 -1
  15. package/{chunk-VGPSGL5S.js → chunk-H6AOCKEL.js} +193 -81
  16. package/chunk-H6AOCKEL.js.map +1 -0
  17. package/{chunk-NGDZ3M3I.js → chunk-IYGQB2IF.js} +2 -2
  18. package/{chunk-ISZ5CKJ3.js → chunk-KRUM5LAL.js} +2 -2
  19. package/{chunk-QSWNNYV4.js → chunk-LCUAACWT.js} +92 -6
  20. package/chunk-LCUAACWT.js.map +1 -0
  21. package/{chunk-C6KDTR5A.js → chunk-QVPNDW6V.js} +33 -31
  22. package/chunk-QVPNDW6V.js.map +1 -0
  23. package/{chunk-7I3P4REZ.js → chunk-UW4J57OZ.js} +2 -2
  24. package/{chunk-4JA54Z75.js → chunk-VMZYIB6X.js} +2 -2
  25. package/{chunk-MD3YWUKO.js → chunk-ZUHSC7WF.js} +18 -2
  26. package/chunk-ZUHSC7WF.js.map +1 -0
  27. package/{computer-use-LTZEVHCS.js → computer-use-5SW6CWAY.js} +5 -5
  28. package/{connector-MY7K7RJN.js → connector-6YIH3K55.js} +47 -48
  29. package/connector-6YIH3K55.js.map +1 -0
  30. package/{credit-LDEHJIJT.js → credit-RV57VXH4.js} +7 -7
  31. package/{developer-support-ROATSWMP.js → developer-support-D2P6GTAZ.js} +5 -5
  32. package/{doctor-3P6KUY4D.js → doctor-BGVYFKMZ.js} +7 -7
  33. package/{feishu-PHKR2Q36.js → feishu-YP3C3TPQ.js} +5 -5
  34. package/{finance-3LM55SWD.js → finance-3KXG6RV5.js} +5 -5
  35. package/{generate-23ZOL7AI.js → generate-VX35LUBP.js} +12 -12
  36. package/generate-VX35LUBP.js.map +1 -0
  37. package/{github-SC4AB2Q2.js → github-AKWQZEIY.js} +5 -5
  38. package/{goal-FTWV2ADK.js → goal-OQXYFW5Z.js} +5 -5
  39. package/{host-L4BEXBPB.js → host-B6YLXMA6.js} +5 -5
  40. package/{logs-TICCUASU.js → logs-NRY3DWOV.js} +7 -7
  41. package/{mail-ZUBVNRJW.js → mail-43EQ3IYB.js} +7 -7
  42. package/{maps-UAKTZSO2.js → maps-UMTF5FJV.js} +5 -5
  43. package/{model-3N3ZWLZM.js → model-VRHOGMWA.js} +6 -6
  44. package/{model-provider-RI26N5OQ.js → model-provider-L5ZLZIKJ.js} +6 -6
  45. package/{org-IEYB2WBO.js → org-3FNAZTHF.js} +5 -5
  46. package/package.json +1 -1
  47. package/{people-search-5S4TV7RL.js → people-search-FK6RE2NT.js} +5 -5
  48. package/{phone-XV2LWGQT.js → phone-3TFQSWRG.js} +5 -5
  49. package/{preference-6XHDDQUW.js → preference-5IXDGW5E.js} +5 -5
  50. package/{resource-HXS7RGBP.js → resource-NKTI5XPA.js} +5 -5
  51. package/{scrape-NU6T5BQE.js → scrape-LHAVB7NB.js} +5 -5
  52. package/{search-FDG26NWA.js → search-F6NM44DL.js} +7 -7
  53. package/{secret-HN3R3V32.js → secret-HND7KZHJ.js} +5 -5
  54. package/{slack-IWEZU6HY.js → slack-CUKFUUE3.js} +5 -5
  55. package/{teams-6VZAWVC6.js → teams-JS36U3HH.js} +5 -5
  56. package/{telegram-UTCDO5ZB.js → telegram-F5GUYX3P.js} +5 -5
  57. package/{upgrade-EX2F7BFJ.js → upgrade-HPMCJDVW.js} +4 -4
  58. package/{variable-U67PHCBZ.js → variable-3NJ4XN52.js} +5 -5
  59. package/{video-GTQQSN6W.js → video-HZC5EIMX.js} +4 -4
  60. package/{weather-NMEINAIZ.js → weather-VN2P2PL4.js} +5 -5
  61. package/{web-YC7E327U.js → web-CFLVFNUS.js} +5 -5
  62. package/{web-search-TCWP5NDJ.js → web-search-4RP7J2FN.js} +5 -5
  63. package/{whoami-KACAW67A.js → whoami-FDPQTI53.js} +14 -14
  64. package/whoami-FDPQTI53.js.map +1 -0
  65. package/{workflow-TKJF2YY2.js → workflow-OHZEVG7B.js} +100 -9
  66. package/workflow-OHZEVG7B.js.map +1 -0
  67. package/zero.js +47 -47
  68. package/zero.js.map +1 -1
  69. package/agent-4QRFYL6Q.js.map +0 -1
  70. package/chat-KQRKGQKS.js.map +0 -1
  71. package/chunk-C6KDTR5A.js.map +0 -1
  72. package/chunk-CZA5MW3N.js.map +0 -1
  73. package/chunk-MD3YWUKO.js.map +0 -1
  74. package/chunk-QSWNNYV4.js.map +0 -1
  75. package/chunk-TNDBFUFP.js.map +0 -1
  76. package/chunk-VGPSGL5S.js.map +0 -1
  77. package/chunk-ZL7WFWOC.js +0 -97
  78. package/chunk-ZL7WFWOC.js.map +0 -1
  79. package/connector-MY7K7RJN.js.map +0 -1
  80. package/generate-23ZOL7AI.js.map +0 -1
  81. package/whoami-KACAW67A.js.map +0 -1
  82. package/workflow-TKJF2YY2.js.map +0 -1
  83. /package/{banking-VKKVWIYX.js.map → banking-JSGFRQ4L.js.map} +0 -0
  84. /package/{browser-VFBMLIUS.js.map → browser-SNX5PNHT.js.map} +0 -0
  85. /package/{chunk-NGDZ3M3I.js.map → chunk-IYGQB2IF.js.map} +0 -0
  86. /package/{chunk-ISZ5CKJ3.js.map → chunk-KRUM5LAL.js.map} +0 -0
  87. /package/{chunk-7I3P4REZ.js.map → chunk-UW4J57OZ.js.map} +0 -0
  88. /package/{chunk-4JA54Z75.js.map → chunk-VMZYIB6X.js.map} +0 -0
  89. /package/{computer-use-LTZEVHCS.js.map → computer-use-5SW6CWAY.js.map} +0 -0
  90. /package/{credit-LDEHJIJT.js.map → credit-RV57VXH4.js.map} +0 -0
  91. /package/{developer-support-ROATSWMP.js.map → developer-support-D2P6GTAZ.js.map} +0 -0
  92. /package/{doctor-3P6KUY4D.js.map → doctor-BGVYFKMZ.js.map} +0 -0
  93. /package/{feishu-PHKR2Q36.js.map → feishu-YP3C3TPQ.js.map} +0 -0
  94. /package/{finance-3LM55SWD.js.map → finance-3KXG6RV5.js.map} +0 -0
  95. /package/{github-SC4AB2Q2.js.map → github-AKWQZEIY.js.map} +0 -0
  96. /package/{goal-FTWV2ADK.js.map → goal-OQXYFW5Z.js.map} +0 -0
  97. /package/{host-L4BEXBPB.js.map → host-B6YLXMA6.js.map} +0 -0
  98. /package/{logs-TICCUASU.js.map → logs-NRY3DWOV.js.map} +0 -0
  99. /package/{mail-ZUBVNRJW.js.map → mail-43EQ3IYB.js.map} +0 -0
  100. /package/{maps-UAKTZSO2.js.map → maps-UMTF5FJV.js.map} +0 -0
  101. /package/{model-3N3ZWLZM.js.map → model-VRHOGMWA.js.map} +0 -0
  102. /package/{model-provider-RI26N5OQ.js.map → model-provider-L5ZLZIKJ.js.map} +0 -0
  103. /package/{org-IEYB2WBO.js.map → org-3FNAZTHF.js.map} +0 -0
  104. /package/{people-search-5S4TV7RL.js.map → people-search-FK6RE2NT.js.map} +0 -0
  105. /package/{phone-XV2LWGQT.js.map → phone-3TFQSWRG.js.map} +0 -0
  106. /package/{preference-6XHDDQUW.js.map → preference-5IXDGW5E.js.map} +0 -0
  107. /package/{resource-HXS7RGBP.js.map → resource-NKTI5XPA.js.map} +0 -0
  108. /package/{scrape-NU6T5BQE.js.map → scrape-LHAVB7NB.js.map} +0 -0
  109. /package/{search-FDG26NWA.js.map → search-F6NM44DL.js.map} +0 -0
  110. /package/{secret-HN3R3V32.js.map → secret-HND7KZHJ.js.map} +0 -0
  111. /package/{slack-IWEZU6HY.js.map → slack-CUKFUUE3.js.map} +0 -0
  112. /package/{teams-6VZAWVC6.js.map → teams-JS36U3HH.js.map} +0 -0
  113. /package/{telegram-UTCDO5ZB.js.map → telegram-F5GUYX3P.js.map} +0 -0
  114. /package/{upgrade-EX2F7BFJ.js.map → upgrade-HPMCJDVW.js.map} +0 -0
  115. /package/{variable-U67PHCBZ.js.map → variable-3NJ4XN52.js.map} +0 -0
  116. /package/{video-GTQQSN6W.js.map → video-HZC5EIMX.js.map} +0 -0
  117. /package/{weather-NMEINAIZ.js.map → weather-VN2P2PL4.js.map} +0 -0
  118. /package/{web-YC7E327U.js.map → web-CFLVFNUS.js.map} +0 -0
  119. /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-DTZW7RES.js";
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-7I3P4REZ.js.map
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-DTZW7RES.js";
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-4JA54Z75.js.map
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 payload;
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-MD3YWUKO.js.map
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-VGPSGL5S.js";
16
- import "./chunk-ISZ5CKJ3.js";
15
+ } from "./chunk-H6AOCKEL.js";
16
+ import "./chunk-KRUM5LAL.js";
17
17
  import {
18
18
  ApiRequestError,
19
19
  withErrorHandler
20
- } from "./chunk-DTZW7RES.js";
21
- import "./chunk-MD3YWUKO.js";
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-LTZEVHCS.js.map
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
- findFirewallMetadataPermission
6
- } from "./chunk-QSWNNYV4.js";
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-CZA5MW3N.js";
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-VGPSGL5S.js";
38
- import "./chunk-ISZ5CKJ3.js";
37
+ } from "./chunk-H6AOCKEL.js";
38
+ import "./chunk-KRUM5LAL.js";
39
39
  import {
40
40
  getPlatformOrigin,
41
41
  toPlatformUrl
42
- } from "./chunk-7I3P4REZ.js";
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-DTZW7RES.js";
50
- import "./chunk-MD3YWUKO.js";
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 ? { connectorRef: opts.connector } : {},
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.connectorRef.localeCompare(right.connectorRef);
215
+ return left.connectorSlug.localeCompare(right.connectorSlug);
216
216
  });
217
217
  const commands = candidates.map((candidate) => {
218
- return ` ${connectorSelectionCommand(request.url, request.method, candidate.connectorRef)}`;
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.connectorRef;
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.connectorRef !== void 0) {
229
+ if (request.mode === "url" && request.connectorSlug !== void 0) {
230
230
  return new Error(
231
- `Unknown connector type: ${request.connectorRef}
232
- Run: zero connector search ${shellQuoteArg(request.connectorRef)}`
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.connectorRef ?? "the requested connector";
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.connectorRef}
246
- Run: ${connectorSelectionCommand(request.url, request.method, result.connector.connectorRef)}`
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.connectorRef} connector configuration for the affected context and retry.`
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 (type: ${result.connector.connectorRef}).`
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 (type: ${result.connector.connectorRef}).`
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.connectorRef,
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.connectorRef,
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.connectorRef,
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 <type>",
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.connectorRef,
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("<type>", "Connector type (e.g., zendesk)").option("--auth-method <method>", "Connector auth method to use").option(
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.connectorRef,
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(` Type: ${connector.type}`));
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.type}`));
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
- connectorRef: connector.connectorRef,
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
- connectorRef: connector.slug,
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.connectorRef);
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.connectorRef;
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
- "TYPE".padEnd(connectorSlugWidth),
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 type, label, category, generation type, or tag"
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 = "TYPE";
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.connectorRef.length;
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.connectorRef.padEnd(connectorSlugWidth),
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.connectorRef;
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.connectorRef;
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("<type>", "Connector type (e.g., github)").option("--agent <id>", "Show authorization state for the given agent").action(
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.connectorRef)}`);
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("<connector-ref>", "The connector type (e.g. github)").addOption(
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 type: ${connectorSlug}`);
1605
+ throw new Error(`Unknown connector slug: ${connectorSlug}`);
1607
1606
  }
1608
- if (opts.permission !== UNKNOWN_PERMISSION_GRANT && !findFirewallMetadataPermission(metadata, opts.permission)) {
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-MY7K7RJN.js.map
1628
+ //# sourceMappingURL=connector-6YIH3K55.js.map