@vm0/cli 9.217.0 → 9.217.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 (94) hide show
  1. package/{agent-ERBSWLZY.js → agent-XRGESF2G.js} +5 -5
  2. package/{automation-W6KYCENX.js → automation-GDW672NH.js} +3 -3
  3. package/{banking-PPUSVFJQ.js → banking-6ARXS2Z6.js} +3 -3
  4. package/{chat-3R5ABJIF.js → chat-DFWQBUP5.js} +3 -3
  5. package/{chunk-B5PHHGBT.js → chunk-4HNQ562Q.js} +2 -2
  6. package/{chunk-QUGHDCZQ.js → chunk-4MIRUOTC.js} +2 -2
  7. package/{chunk-TKAJDWGT.js → chunk-5NIWPEYU.js} +164 -24
  8. package/chunk-5NIWPEYU.js.map +1 -0
  9. package/{chunk-66CRY7ZE.js → chunk-FDEC2TSK.js} +14 -3
  10. package/chunk-FDEC2TSK.js.map +1 -0
  11. package/{chunk-O76AI2N5.js → chunk-H5FMCCU3.js} +16 -4
  12. package/chunk-H5FMCCU3.js.map +1 -0
  13. package/{chunk-B4YVYCNP.js → chunk-HI5MBAER.js} +1678 -173
  14. package/chunk-HI5MBAER.js.map +1 -0
  15. package/{chunk-CGGDMYJR.js → chunk-JGL3562P.js} +3 -3
  16. package/{chunk-G6N7QXRB.js → chunk-U5XYJPGE.js} +3 -3
  17. package/{chunk-HBSUM372.js → chunk-XAAG47JI.js} +2 -2
  18. package/{computer-use-XVETFRXU.js → computer-use-A3QMRGDL.js} +2 -2
  19. package/{connector-5Q3B37PN.js → connector-APQCX6QK.js} +4 -4
  20. package/{credit-KNBDBYJB.js → credit-WCRH2COD.js} +3 -3
  21. package/{developer-support-RSGBOGAF.js → developer-support-62OFNOV6.js} +3 -3
  22. package/{doctor-5WYECMCQ.js → doctor-QRUVYREV.js} +40 -7
  23. package/doctor-QRUVYREV.js.map +1 -0
  24. package/{generate-JAHTJGHR.js → generate-6BRMTUSA.js} +4 -4
  25. package/{github-VE2A52PI.js → github-Z6ZQ6CM7.js} +3 -3
  26. package/{goal-ZEQ2CC5O.js → goal-2M66KMSY.js} +3 -3
  27. package/{host-TRFD623R.js → host-EYUF35AL.js} +3 -3
  28. package/index.js +18 -18
  29. package/{logs-LU7Z663V.js → logs-WLQGT7MT.js} +7 -7
  30. package/{maps-BRFCMUY7.js → maps-CDZCOI32.js} +3 -3
  31. package/{model-KEMRYJ2I.js → model-HSFU45JV.js} +4 -4
  32. package/{model-provider-RCMELAX6.js → model-provider-44EOJTPX.js} +4 -4
  33. package/{org-GDC6DUTT.js → org-KWGNB4OJ.js} +3 -3
  34. package/package.json +1 -1
  35. package/pexels.generated-EZDZCJII.js +83 -0
  36. package/pexels.generated-EZDZCJII.js.map +1 -0
  37. package/pexels.generated-T3VRPCPZ.js +40 -0
  38. package/pexels.generated-T3VRPCPZ.js.map +1 -0
  39. package/{phone-AP75IXA4.js → phone-YAHVWIXZ.js} +3 -3
  40. package/{preference-XKLJQO3H.js → preference-H3OXJCSS.js} +3 -3
  41. package/{resource-T6UPZ5Y6.js → resource-SUX5YPIE.js} +3 -3
  42. package/{search-ILDCIRYL.js → search-QQFA3Q5D.js} +7 -7
  43. package/{secret-AVR2GOHR.js → secret-RI6AXINU.js} +4 -4
  44. package/{slack-KFPHHQKL.js → slack-PMCEPRTC.js} +3 -3
  45. package/{telegram-APEI4GYU.js → telegram-GPLC2TKG.js} +3 -3
  46. package/{variable-H5N6QKDJ.js → variable-Q2U4YPM6.js} +3 -3
  47. package/{web-3EUABPMX.js → web-36BBMH5L.js} +2 -2
  48. package/{whoami-LHX2USZO.js → whoami-PAJZPJWW.js} +5 -5
  49. package/{workflow-ML33WY2M.js → workflow-XKVCSOQG.js} +3 -3
  50. package/{youtube.generated-LWJKXV2G.js → youtube.generated-JPSZAIXX.js} +5 -5
  51. package/youtube.generated-JPSZAIXX.js.map +1 -0
  52. package/{youtube.generated-OW2TE3JG.js → youtube.generated-WVCRGH3X.js} +2 -2
  53. package/youtube.generated-WVCRGH3X.js.map +1 -0
  54. package/zero.js +31 -31
  55. package/chunk-66CRY7ZE.js.map +0 -1
  56. package/chunk-B4YVYCNP.js.map +0 -1
  57. package/chunk-O76AI2N5.js.map +0 -1
  58. package/chunk-TKAJDWGT.js.map +0 -1
  59. package/doctor-5WYECMCQ.js.map +0 -1
  60. package/youtube.generated-LWJKXV2G.js.map +0 -1
  61. package/youtube.generated-OW2TE3JG.js.map +0 -1
  62. /package/{agent-ERBSWLZY.js.map → agent-XRGESF2G.js.map} +0 -0
  63. /package/{automation-W6KYCENX.js.map → automation-GDW672NH.js.map} +0 -0
  64. /package/{banking-PPUSVFJQ.js.map → banking-6ARXS2Z6.js.map} +0 -0
  65. /package/{chat-3R5ABJIF.js.map → chat-DFWQBUP5.js.map} +0 -0
  66. /package/{chunk-B5PHHGBT.js.map → chunk-4HNQ562Q.js.map} +0 -0
  67. /package/{chunk-QUGHDCZQ.js.map → chunk-4MIRUOTC.js.map} +0 -0
  68. /package/{chunk-CGGDMYJR.js.map → chunk-JGL3562P.js.map} +0 -0
  69. /package/{chunk-G6N7QXRB.js.map → chunk-U5XYJPGE.js.map} +0 -0
  70. /package/{chunk-HBSUM372.js.map → chunk-XAAG47JI.js.map} +0 -0
  71. /package/{computer-use-XVETFRXU.js.map → computer-use-A3QMRGDL.js.map} +0 -0
  72. /package/{connector-5Q3B37PN.js.map → connector-APQCX6QK.js.map} +0 -0
  73. /package/{credit-KNBDBYJB.js.map → credit-WCRH2COD.js.map} +0 -0
  74. /package/{developer-support-RSGBOGAF.js.map → developer-support-62OFNOV6.js.map} +0 -0
  75. /package/{generate-JAHTJGHR.js.map → generate-6BRMTUSA.js.map} +0 -0
  76. /package/{github-VE2A52PI.js.map → github-Z6ZQ6CM7.js.map} +0 -0
  77. /package/{goal-ZEQ2CC5O.js.map → goal-2M66KMSY.js.map} +0 -0
  78. /package/{host-TRFD623R.js.map → host-EYUF35AL.js.map} +0 -0
  79. /package/{logs-LU7Z663V.js.map → logs-WLQGT7MT.js.map} +0 -0
  80. /package/{maps-BRFCMUY7.js.map → maps-CDZCOI32.js.map} +0 -0
  81. /package/{model-KEMRYJ2I.js.map → model-HSFU45JV.js.map} +0 -0
  82. /package/{model-provider-RCMELAX6.js.map → model-provider-44EOJTPX.js.map} +0 -0
  83. /package/{org-GDC6DUTT.js.map → org-KWGNB4OJ.js.map} +0 -0
  84. /package/{phone-AP75IXA4.js.map → phone-YAHVWIXZ.js.map} +0 -0
  85. /package/{preference-XKLJQO3H.js.map → preference-H3OXJCSS.js.map} +0 -0
  86. /package/{resource-T6UPZ5Y6.js.map → resource-SUX5YPIE.js.map} +0 -0
  87. /package/{search-ILDCIRYL.js.map → search-QQFA3Q5D.js.map} +0 -0
  88. /package/{secret-AVR2GOHR.js.map → secret-RI6AXINU.js.map} +0 -0
  89. /package/{slack-KFPHHQKL.js.map → slack-PMCEPRTC.js.map} +0 -0
  90. /package/{telegram-APEI4GYU.js.map → telegram-GPLC2TKG.js.map} +0 -0
  91. /package/{variable-H5N6QKDJ.js.map → variable-Q2U4YPM6.js.map} +0 -0
  92. /package/{web-3EUABPMX.js.map → web-36BBMH5L.js.map} +0 -0
  93. /package/{whoami-LHX2USZO.js.map → whoami-PAJZPJWW.js.map} +0 -0
  94. /package/{workflow-ML33WY2M.js.map → workflow-XKVCSOQG.js.map} +0 -0
@@ -4,14 +4,15 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  loadConnectorPermissionInfos,
6
6
  policyIcon
7
- } from "./chunk-QUGHDCZQ.js";
7
+ } from "./chunk-4MIRUOTC.js";
8
8
  import {
9
9
  permissionGrantsToFirewallPolicies
10
- } from "./chunk-66CRY7ZE.js";
10
+ } from "./chunk-FDEC2TSK.js";
11
11
  import {
12
12
  isInteractive,
13
13
  promptConfirm
14
14
  } from "./chunk-JFY6GK7Y.js";
15
+ import "./chunk-LTDQISD7.js";
15
16
  import {
16
17
  createZeroAgent,
17
18
  deleteZeroAgent,
@@ -23,8 +24,7 @@ import {
23
24
  listZeroUserPermissionGrants,
24
25
  updateZeroAgent,
25
26
  updateZeroAgentInstructions
26
- } from "./chunk-TKAJDWGT.js";
27
- import "./chunk-LTDQISD7.js";
27
+ } from "./chunk-5NIWPEYU.js";
28
28
  import {
29
29
  withErrorHandler
30
30
  } from "./chunk-3F4RFLPX.js";
@@ -595,4 +595,4 @@ Notes:
595
595
  export {
596
596
  zeroAgentCommand
597
597
  };
598
- //# sourceMappingURL=agent-ERBSWLZY.js.map
598
+ //# sourceMappingURL=agent-XRGESF2G.js.map
@@ -12,6 +12,7 @@ import {
12
12
  isInteractive,
13
13
  promptConfirm
14
14
  } from "./chunk-JFY6GK7Y.js";
15
+ import "./chunk-LTDQISD7.js";
15
16
  import {
16
17
  createAutomation,
17
18
  deleteAutomation,
@@ -23,8 +24,7 @@ import {
23
24
  showAutomation,
24
25
  updateAutomation,
25
26
  updateAutomationTrigger
26
- } from "./chunk-TKAJDWGT.js";
27
- import "./chunk-LTDQISD7.js";
27
+ } from "./chunk-5NIWPEYU.js";
28
28
  import {
29
29
  withErrorHandler
30
30
  } from "./chunk-3F4RFLPX.js";
@@ -490,4 +490,4 @@ Examples:
490
490
  export {
491
491
  zeroAutomationCommand
492
492
  };
493
- //# sourceMappingURL=automation-W6KYCENX.js.map
493
+ //# sourceMappingURL=automation-GDW672NH.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
+ import "./chunk-LTDQISD7.js";
4
5
  import {
5
6
  callZeroBanking
6
- } from "./chunk-TKAJDWGT.js";
7
- import "./chunk-LTDQISD7.js";
7
+ } from "./chunk-5NIWPEYU.js";
8
8
  import {
9
9
  withErrorHandler
10
10
  } from "./chunk-3F4RFLPX.js";
@@ -115,4 +115,4 @@ Notes:
115
115
  export {
116
116
  zeroBankingCommand
117
117
  };
118
- //# sourceMappingURL=banking-PPUSVFJQ.js.map
118
+ //# sourceMappingURL=banking-6ARXS2Z6.js.map
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
+ import "./chunk-LTDQISD7.js";
4
5
  import {
5
6
  getZeroChatThread,
6
7
  renameZeroChatThread
7
- } from "./chunk-TKAJDWGT.js";
8
- import "./chunk-LTDQISD7.js";
8
+ } from "./chunk-5NIWPEYU.js";
9
9
  import {
10
10
  withErrorHandler
11
11
  } from "./chunk-3F4RFLPX.js";
@@ -120,4 +120,4 @@ Examples:
120
120
  export {
121
121
  zeroChatCommand
122
122
  };
123
- //# sourceMappingURL=chat-3R5ABJIF.js.map
123
+ //# sourceMappingURL=chat-DFWQBUP5.js.map
@@ -5,7 +5,7 @@ import {
5
5
  CONNECTOR_TYPES,
6
6
  CONNECTOR_TYPE_KEYS,
7
7
  connectorAuthMethodIdSchema
8
- } from "./chunk-TKAJDWGT.js";
8
+ } from "./chunk-5NIWPEYU.js";
9
9
  import {
10
10
  init_esm_shims
11
11
  } from "./chunk-DIRAZ3YX.js";
@@ -181,4 +181,4 @@ export {
181
181
  hasRequiredConnectorAuthMethodScopes,
182
182
  getConnectorAuthMethodScopeDiff
183
183
  };
184
- //# sourceMappingURL=chunk-B5PHHGBT.js.map
184
+ //# sourceMappingURL=chunk-4HNQ562Q.js.map
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  loadFirewallPermissionMetadata,
6
6
  resolveFirewallMetadataPolicies
7
- } from "./chunk-66CRY7ZE.js";
7
+ } from "./chunk-FDEC2TSK.js";
8
8
  import {
9
9
  source_default
10
10
  } from "./chunk-JUTUEPIR.js";
@@ -87,4 +87,4 @@ export {
87
87
  policyIcon,
88
88
  loadConnectorPermissionInfos
89
89
  };
90
- //# sourceMappingURL=chunk-QUGHDCZQ.js.map
90
+ //# sourceMappingURL=chunk-4MIRUOTC.js.map
@@ -3651,7 +3651,8 @@ var IPV4_NON_PUBLIC_RANGES = [
3651
3651
  [2130706432, 2147483647],
3652
3652
  [2851995648, 2852061183],
3653
3653
  [2886729728, 2887778303],
3654
- [3221225472, 3221225727],
3654
+ [3221225472, 3221225480],
3655
+ [3221225483, 3221225727],
3655
3656
  [3221225984, 3221226239],
3656
3657
  [3227017984, 3227018239],
3657
3658
  [3232235520, 3232301055],
@@ -4202,7 +4203,7 @@ function parseIpv6Address(value) {
4202
4203
  }
4203
4204
  function isPublicIpv6SpecialRegistryException(words) {
4204
4205
  const second = words[1];
4205
- if (second === 1 && words[2] === 0 && words[3] === 0 && words[4] === 0 && words[5] === 0 && words[6] === 0 && (words[7] === 1 || words[7] === 2)) {
4206
+ if (second === 1 && words[2] === 0 && words[3] === 0 && words[4] === 0 && words[5] === 0 && words[6] === 0 && words[7] >= 1 && words[7] <= 3) {
4206
4207
  return true;
4207
4208
  }
4208
4209
  if (second === 3) {
@@ -4231,6 +4232,9 @@ function isPublicIpv6Address(words) {
4231
4232
  if (first === 8193 && second === 3512) {
4232
4233
  return false;
4233
4234
  }
4235
+ if (first === 16383 && second <= 4095) {
4236
+ return false;
4237
+ }
4234
4238
  if (first === 8194) {
4235
4239
  return false;
4236
4240
  }
@@ -4242,13 +4246,22 @@ function hostPolicyIpLiteralIsPublic(hostname) {
4242
4246
  return words ? isPublicIpv6Address(words) : false;
4243
4247
  }
4244
4248
  const ipv4Parts = parseCanonicalIpv4Address(hostname);
4245
- return ipv4Parts ? isPublicIpv4Address(ipv4Parts) : null;
4249
+ if (ipv4Parts) {
4250
+ return isPublicIpv4Address(ipv4Parts);
4251
+ }
4252
+ const normalizedIpv4Host = normalizeHostForIpv4LiteralSyntax(hostname);
4253
+ if (isIpv4LiteralLike(normalizedIpv4Host)) {
4254
+ return false;
4255
+ }
4256
+ return null;
4246
4257
  }
4247
- function providerOwnedHostMatches(hostname, hostPolicy) {
4248
- const exactHosts = hostPolicy.exactHosts ?? [];
4249
- for (const exactHost of exactHosts) {
4250
- if (hostname === normalizeHostPolicyHostname(exactHost)) {
4251
- return true;
4258
+ function providerOwnedHostMatches(hostname, hostPolicy, options = {}) {
4259
+ if (options.allowExactHosts !== false) {
4260
+ const exactHosts = hostPolicy.exactHosts ?? [];
4261
+ for (const exactHost of exactHosts) {
4262
+ if (hostname === normalizeHostPolicyHostname(exactHost)) {
4263
+ return true;
4264
+ }
4252
4265
  }
4253
4266
  }
4254
4267
  const suffixes = hostPolicy.suffixes ?? [];
@@ -4260,22 +4273,61 @@ function providerOwnedHostMatches(hostname, hostPolicy) {
4260
4273
  }
4261
4274
  return false;
4262
4275
  }
4263
- function validateResolvedBaseUrlHostPolicy({
4264
- templateBase,
4265
- resolvedBase,
4276
+ function baseUrlAuthorityHasParams(base) {
4277
+ const authority = rawAuthorityFromBaseUrl(base);
4278
+ return authority !== null && hasBaseUrlParams(authority);
4279
+ }
4280
+ function validateHostPolicyShape(base, serviceName, hostPolicy) {
4281
+ const result = firewallBaseHostPolicySchema.safeParse(hostPolicy);
4282
+ if (result.success) return;
4283
+ const message = result.error.issues.map((issue) => {
4284
+ return issue.message;
4285
+ }).join("; ");
4286
+ throw new Error(
4287
+ errMsg(base, serviceName, `hostPolicy is invalid: ${message}`)
4288
+ );
4289
+ }
4290
+ function urlForHostPolicyValidation(base, serviceName) {
4291
+ if (!baseUrlAuthorityHasParams(base)) return new URL(base);
4292
+ const schemeEnd = base.indexOf("://");
4293
+ const authority = rawAuthorityFromBaseUrl(base);
4294
+ if (schemeEnd === -1 || authority === null) return new URL(base);
4295
+ const authorityParts = splitParameterizedAuthority(
4296
+ authority,
4297
+ base,
4298
+ serviceName
4299
+ );
4300
+ const host = splitAuthorityHostSegments(authorityParts.normalizedHost).map((segment2) => {
4301
+ return hostSegmentForSyntaxValidation(segment2, base, serviceName);
4302
+ }).join(".");
4303
+ return new URL(
4304
+ `${base.slice(0, schemeEnd)}://${host}${authorityParts.portSuffix}`
4305
+ );
4306
+ }
4307
+ function validateBaseUrlHostPolicy({
4308
+ base,
4309
+ diagnosticBase = base,
4266
4310
  serviceName,
4267
4311
  hostPolicy
4268
4312
  }) {
4269
4313
  if (!hostPolicy) {
4270
4314
  return;
4271
4315
  }
4272
- const url = new URL(resolvedBase);
4316
+ validateHostPolicyShape(diagnosticBase, serviceName, hostPolicy);
4317
+ if (hasBaseUrlVars(base)) {
4318
+ return;
4319
+ }
4320
+ const authorityHasParams = baseUrlAuthorityHasParams(base);
4321
+ const url = urlForHostPolicyValidation(base, serviceName);
4322
+ const rawAuthority = rawAuthorityFromBaseUrl(base);
4273
4323
  const hostname = normalizeHostPolicyHostname(url.hostname);
4274
4324
  if (hostPolicy.kind === "providerOwned") {
4275
- if (!providerOwnedHostMatches(hostname, hostPolicy)) {
4325
+ if (!providerOwnedHostMatches(hostname, hostPolicy, {
4326
+ allowExactHosts: !authorityHasParams
4327
+ })) {
4276
4328
  throw new Error(
4277
4329
  errMsg(
4278
- templateBase,
4330
+ diagnosticBase,
4279
4331
  serviceName,
4280
4332
  `host policy does not allow resolved host "${hostname}"`
4281
4333
  )
@@ -4284,7 +4336,7 @@ function validateResolvedBaseUrlHostPolicy({
4284
4336
  if (!hostPolicy.allowNonDefaultPort && url.port !== "") {
4285
4337
  throw new Error(
4286
4338
  errMsg(
4287
- templateBase,
4339
+ diagnosticBase,
4288
4340
  serviceName,
4289
4341
  "host policy does not allow non-default ports"
4290
4342
  )
@@ -4292,11 +4344,12 @@ function validateResolvedBaseUrlHostPolicy({
4292
4344
  }
4293
4345
  return;
4294
4346
  }
4295
- const publicIpLiteral = hostPolicyIpLiteralIsPublic(hostname);
4347
+ const publicDestinationHost = rawAuthority === null ? url.hostname : rawHostFromAuthority(rawAuthority);
4348
+ const publicIpLiteral = hostPolicyIpLiteralIsPublic(publicDestinationHost);
4296
4349
  if (publicIpLiteral === false) {
4297
4350
  throw new Error(
4298
4351
  errMsg(
4299
- templateBase,
4352
+ diagnosticBase,
4300
4353
  serviceName,
4301
4354
  `host policy does not allow non-public IP literal "${hostname}"`
4302
4355
  )
@@ -4343,9 +4396,9 @@ function resolveFirewallBaseUrlTemplate({
4343
4396
  serviceName,
4344
4397
  credentialed
4345
4398
  );
4346
- validateResolvedBaseUrlHostPolicy({
4347
- templateBase: base,
4348
- resolvedBase: resolved,
4399
+ validateBaseUrlHostPolicy({
4400
+ base: resolved,
4401
+ diagnosticBase: base,
4349
4402
  serviceName,
4350
4403
  hostPolicy
4351
4404
  });
@@ -4380,6 +4433,7 @@ var ALLOWED_BASE_URL_SCHEMES = /* @__PURE__ */ new Set(["http", "https"]);
4380
4433
  var REQUIRED_AUTH_BASE_URL_SCHEME = "https";
4381
4434
  var WHITESPACE_PATTERN = /\s/u;
4382
4435
  var UNICODE_CONTROL_PATTERN = /\p{C}/u;
4436
+ var UNICODE_DECIMAL_NUMBER_PATTERN = /^\p{Decimal_Number}+$/u;
4383
4437
  var UNICODE_MARK_PATTERN = /\p{M}/u;
4384
4438
  var UNICODE_LETTER_PATTERN = /\p{L}/u;
4385
4439
  var GREEK_COMBINING_YPOGEGRAMMENI = "\u0345";
@@ -4464,9 +4518,7 @@ function isIpv4NumberComponent(value) {
4464
4518
  return isHexDigit(char);
4465
4519
  });
4466
4520
  }
4467
- return [...value].every((char) => {
4468
- return char >= "0" && char <= "9";
4469
- });
4521
+ return UNICODE_DECIMAL_NUMBER_PATTERN.test(value);
4470
4522
  }
4471
4523
  function isIpv4LiteralLike(value) {
4472
4524
  const parts = value.split(".");
@@ -4632,6 +4684,15 @@ function validateHostPercentEncoding(host, base, serviceName) {
4632
4684
  errMsg(base, serviceName, "host must not contain commas")
4633
4685
  );
4634
4686
  }
4687
+ if (char === "*") {
4688
+ throw new Error(
4689
+ errMsg(
4690
+ base,
4691
+ serviceName,
4692
+ "host must not contain wildcard characters"
4693
+ )
4694
+ );
4695
+ }
4635
4696
  }
4636
4697
  i = end - 1;
4637
4698
  }
@@ -4661,6 +4722,16 @@ function rawAuthorityFromBaseUrl(base) {
4661
4722
  const authorityEnd = delimiterIndexes.length === 0 ? -1 : Math.min(...delimiterIndexes);
4662
4723
  return authorityEnd === -1 ? rest : rest.slice(0, authorityEnd);
4663
4724
  }
4725
+ function authorityHasEmptyPort(authority) {
4726
+ if (authority.startsWith("[")) {
4727
+ const closeBracket = authority.indexOf("]");
4728
+ if (closeBracket === -1) return false;
4729
+ return authority.slice(closeBracket + 1) === ":";
4730
+ }
4731
+ const portSeparator = authority.lastIndexOf(":");
4732
+ if (portSeparator === -1) return false;
4733
+ return authority.indexOf(":") === portSeparator && portSeparator === authority.length - 1;
4734
+ }
4664
4735
  function validateNoUserinfo(authority, base, serviceName) {
4665
4736
  if (authority.includes("@")) {
4666
4737
  throw new Error(errMsg(base, serviceName, "must not contain userinfo"));
@@ -4790,6 +4861,25 @@ function splitParameterizedAuthority(authority, base, serviceName) {
4790
4861
  function validateStaticHostLabels(hostname, base, serviceName) {
4791
4862
  if (hostname.startsWith("[") && hostname.endsWith("]")) return;
4792
4863
  validateHostHasNoEmptyLabels(hostname, base, serviceName);
4864
+ validateHostHasNoRawWildcards(hostname, base, serviceName);
4865
+ }
4866
+ function hostSegmentHasRawWildcard(segment2) {
4867
+ const parsed = parseSegment(segment2);
4868
+ if (parsed.kind === "literal") return parsed.value.includes("*");
4869
+ if (parsed.kind === "param") {
4870
+ return parsed.prefix.includes("*") || parsed.suffix.includes("*");
4871
+ }
4872
+ return false;
4873
+ }
4874
+ function validateHostHasNoRawWildcards(host, base, serviceName) {
4875
+ if (host.startsWith("[") && host.endsWith("]")) return;
4876
+ for (const segment2 of host.replace(HOST_DOT_EQUIVALENT_PATTERN, ".").split(".")) {
4877
+ if (hostSegmentHasRawWildcard(segment2)) {
4878
+ throw new Error(
4879
+ errMsg(base, serviceName, "host must not contain wildcard characters")
4880
+ );
4881
+ }
4882
+ }
4793
4883
  }
4794
4884
  function hostSegmentForSyntaxValidation(seg, base, svc) {
4795
4885
  const parsed = parseSegment(seg);
@@ -4908,6 +4998,9 @@ function validateBaseUrlParams(base, serviceName) {
4908
4998
  const slashIdx = rest.indexOf("/");
4909
4999
  const host = slashIdx === -1 ? rest : rest.slice(0, slashIdx);
4910
5000
  const path = slashIdx === -1 ? "" : rest.slice(slashIdx);
5001
+ if (authorityHasEmptyPort(host)) {
5002
+ throw new Error(errMsg(base, serviceName, "not a valid URL authority"));
5003
+ }
4911
5004
  validateNoUserinfo(host, base, serviceName);
4912
5005
  validateHostPercentEncoding(host, base, serviceName);
4913
5006
  const authority = splitParameterizedAuthority(host, base, serviceName);
@@ -4921,6 +5014,7 @@ function validateBaseUrlParams(base, serviceName) {
4921
5014
  base,
4922
5015
  serviceName
4923
5016
  );
5017
+ validateHostHasNoRawWildcards(authority.normalizedHost, base, serviceName);
4924
5018
  validateParameterizedHostUrlSyntax(
4925
5019
  base.slice(0, schemeEnd),
4926
5020
  authority,
@@ -4992,6 +5086,11 @@ function validateBaseUrl(base, serviceName) {
4992
5086
  `Invalid base URL "${base}" in firewall "${serviceName}": not a valid URL authority`
4993
5087
  );
4994
5088
  }
5089
+ if (authorityHasEmptyPort(authority)) {
5090
+ throw new Error(
5091
+ `Invalid base URL "${base}" in firewall "${serviceName}": not a valid URL authority`
5092
+ );
5093
+ }
4995
5094
  validateNoUserinfo(authority, base, serviceName);
4996
5095
  validateHostPercentEncoding(authority, base, serviceName);
4997
5096
  validateHostHasCanonicalIpv4Syntax(authority, base, serviceName);
@@ -17269,6 +17368,45 @@ var perplexity = {
17269
17368
  }
17270
17369
  };
17271
17370
 
17371
+ // ../../packages/connectors/src/connectors/pexels.ts
17372
+ init_esm_shims();
17373
+ var pexels = {
17374
+ pexels: {
17375
+ label: "Pexels",
17376
+ category: "marketing-content-growth",
17377
+ helpText: "Connect Pexels to search, download, and insert stock photos and videos into artifacts. Keep Pexels and photographer attribution with generated artifacts, and avoid bulk downloading or rebuilding a stock photo or wallpaper library.",
17378
+ tags: ["stock-photos", "stock-videos", "images", "media"],
17379
+ authMethods: {
17380
+ "api-token": {
17381
+ label: "API Key",
17382
+ featureFlag: "pexelsConnector" /* PexelsConnector */,
17383
+ helpText: "1. Sign in to [Pexels](https://www.pexels.com)\n2. Open the [Pexels API page](https://www.pexels.com/api/) and request or copy your API key\n3. Paste the key here\n\nvm0 stores the key as a secret and automatically attaches it when calling the Pexels API. Pexels asks API users to include a prominent Pexels link and, where possible, photographer credit when displaying content.",
17384
+ storage: {
17385
+ secrets: ["PEXELS_API_KEY"],
17386
+ variables: []
17387
+ },
17388
+ grant: {
17389
+ kind: "manual",
17390
+ fields: {
17391
+ PEXELS_API_KEY: {
17392
+ label: "API Key",
17393
+ required: true,
17394
+ placeholder: "your-pexels-api-key"
17395
+ }
17396
+ }
17397
+ },
17398
+ access: {
17399
+ kind: "static",
17400
+ envBindings: {
17401
+ PEXELS_API_KEY: "$secrets.PEXELS_API_KEY"
17402
+ }
17403
+ },
17404
+ revoke: { kind: "none" }
17405
+ }
17406
+ }
17407
+ }
17408
+ };
17409
+
17272
17410
  // ../../packages/connectors/src/connectors/pika.ts
17273
17411
  init_esm_shims();
17274
17412
  var pika = {
@@ -21051,6 +21189,7 @@ var CONNECTOR_TYPES_DEF = defineConnectors({
21051
21189
  ...pdforge,
21052
21190
  ...peopleDataLabs,
21053
21191
  ...perplexity,
21192
+ ...pexels,
21054
21193
  ...pika,
21055
21194
  ...pinecone,
21056
21195
  ...pipedream,
@@ -27485,6 +27624,7 @@ export {
27485
27624
  deleteZeroOrgModelProvider,
27486
27625
  listZeroModelPolicies,
27487
27626
  hostedArtifactKindSchema,
27627
+ persistedAttachmentSchema,
27488
27628
  zeroAgentVisibilitySchema,
27489
27629
  createZeroAgent,
27490
27630
  listZeroAgents,
@@ -27579,4 +27719,4 @@ export {
27579
27719
  completeHostedSite,
27580
27720
  getHostedSiteFiles
27581
27721
  };
27582
- //# sourceMappingURL=chunk-TKAJDWGT.js.map
27722
+ //# sourceMappingURL=chunk-5NIWPEYU.js.map