@keystrokehq/cli 0.0.32 → 0.0.38

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 (148) hide show
  1. package/README.md +25 -4
  2. package/dist/{accept.handler-DNfIXPSP.mjs → accept.handler-CykuBpt6.mjs} +4 -4
  3. package/dist/{admin-CJp8XksD.mjs → admin-gRjPC3eD.mjs} +10 -10
  4. package/dist/{agent-manifest-De5TCxZq.mjs → agent-manifest-DfWD5tvv.mjs} +17 -27
  5. package/dist/{agents-G37PM35Z.mjs → agents-BpyuvM9p.mjs} +9 -9
  6. package/dist/{api-keys-4igNHJ_W.mjs → api-keys-BSKhdD_x.mjs} +6 -6
  7. package/dist/{api-BK3EhPvs.mjs → api-sWkB_Wta.mjs} +1 -1
  8. package/dist/{auth-CIOmmV4x.mjs → auth-DCgToFf5.mjs} +6 -6
  9. package/dist/{auth.handler-CznN_vfz.mjs → auth.handler-QRQAEUJC.mjs} +3 -3
  10. package/dist/authored-workflow-ref-BRCQgyWl.mjs +113 -0
  11. package/dist/{build-agents-DseUtzd4-CSGpNXur.mjs → build-agents-CUzBnlAG-3ePFZiJ6.mjs} +12 -11
  12. package/dist/{build-progress-DLM1Bt4T.mjs → build-progress-D_SQqdHA.mjs} +2 -2
  13. package/dist/{build-tasks-C09SdfjC-BmAVLTtQ.mjs → build-tasks-5eOvI19S-tbN6CRx9.mjs} +4 -4
  14. package/dist/{build-workflows-BZ_m97Pr-BiyptCrn.mjs → build-workflows-C-gQM3l5-_zcBHE3M.mjs} +14 -9
  15. package/dist/{build.handler-zHimoO7c.mjs → build.handler-DGQn_clk.mjs} +12 -9
  16. package/dist/{clear-cache.handler-BP0K1-uN.mjs → clear-cache.handler-gJpwslkK.mjs} +2 -2
  17. package/dist/{clear.handler-PsA5QKHx.mjs → clear.handler-CuXYvUj2.mjs} +2 -2
  18. package/dist/{clear.handler-T27GpgSu.mjs → clear.handler-DnjvgyMj.mjs} +1 -1
  19. package/dist/{commander-BlrSdFcu.mjs → commander-B_8QwPpe.mjs} +22 -3
  20. package/dist/{connect-BbLJhlIA.mjs → connect-DV9lhP6C.mjs} +3 -3
  21. package/dist/{connect.handler-BthE-7Wg.mjs → connect.handler-D6JzuFuT.mjs} +5 -5
  22. package/dist/{context-sgKhRc5v.mjs → context-Brc9VGV9.mjs} +4 -4
  23. package/dist/{create.handler-BovbO_g0.mjs → create.handler-D_tmjANR.mjs} +3 -3
  24. package/dist/{credential-env-map-CRs0llf0.mjs → credential-env-map-5a41jLwM.mjs} +1 -1
  25. package/dist/{credential-requirements-D0mavK8j-CFMf0Xwu.mjs → credential-requirements-B5Alhu1v-DanlSKnT.mjs} +3 -3
  26. package/dist/{credential-schema-mismatch-ClQgEVtO.mjs → credential-schema-mismatch-CStYUB2h.mjs} +1 -1
  27. package/dist/{credentials-DKrSaaLw.mjs → credentials-DtwLbee6.mjs} +1 -1
  28. package/dist/{credentials-CsncZ52a.mjs → credentials-UDrvrKj-.mjs} +10 -10
  29. package/dist/current-deployment-workflow-CknsHF5T.mjs +20 -0
  30. package/dist/current.handler-Cy91EeLU.mjs +19 -0
  31. package/dist/{delete.handler-DkAK396w.mjs → delete.handler-rUDDUrDQ.mjs} +2 -2
  32. package/dist/{deploy-DvPfR9fC.mjs → deploy-DgWPlEKO.mjs} +2 -2
  33. package/dist/{deploy-progress-BsUH7fGE.mjs → deploy-progress-BDOCSm_U.mjs} +2 -2
  34. package/dist/{deploy.handler-BW3f2N2G.mjs → deploy.handler-BDCHCk_A.mjs} +16 -16
  35. package/dist/{diff-utils-Bs--xmoV.mjs → diff-utils-YEUYtSRs.mjs} +1 -1
  36. package/dist/{diff.handler-BwhsoAg0.mjs → diff.handler-CGERP-Qn.mjs} +15 -9
  37. package/dist/{dist-Dw7gCE7y.mjs → dist-B5jy238v.mjs} +37 -11
  38. package/dist/{dist-CTEtWDW4.mjs → dist-BmbFJq8U.mjs} +8 -27
  39. package/dist/{env.handler-Dks6ZQh-.mjs → env.handler--8FRrSlJ.mjs} +52 -29
  40. package/dist/{error-boundary-0veZ_RDS.mjs → error-boundary-D2DiCLAp.mjs} +3 -3
  41. package/dist/{iam-command-utils-CSZj4XlH.mjs → iam-command-utils-D01Gw8-M.mjs} +3 -13
  42. package/dist/{import-module-y0glInUe-DV_3dsU0.mjs → import-module-y0glInUe-EuAWaw9g.mjs} +506 -128
  43. package/dist/{init-BOCDwqKR.mjs → init-Mpe_8lA_.mjs} +3 -3
  44. package/dist/{init.handler-B3T4J6u_.mjs → init.handler-BjLAIAmm.mjs} +5 -5
  45. package/dist/{inspect.handler-v9snxDLi.mjs → inspect.handler-CXCi7fhH.mjs} +24 -13
  46. package/dist/{integration-catalog-CiZ62hb_.mjs → integration-catalog-mZs6EAlN.mjs} +3 -3
  47. package/dist/{integrations-m7_tb3GV.mjs → integrations-D_IH5Ud1.mjs} +7 -7
  48. package/dist/{invites-BuatfJmN.mjs → invites-CWWz4wmY.mjs} +5 -5
  49. package/dist/{invites.list.handler-CK6mL10z.mjs → invites.list.handler-CQLWSoWo.mjs} +6 -5
  50. package/dist/{invites.resend.handler-CKZouK1Z.mjs → invites.resend.handler-CeIGE_qM.mjs} +6 -5
  51. package/dist/{invites.revoke.handler-H0VI-3sp.mjs → invites.revoke.handler-9K6jkym_.mjs} +6 -5
  52. package/dist/keystroke.mjs +139 -82
  53. package/dist/{list-enrichment-DP1wEyBZ.mjs → list-enrichment-dqbkXJzy.mjs} +2 -2
  54. package/dist/list.handler-BvuxTFLe.mjs +64 -0
  55. package/dist/list.handler-CDWPmiMy.mjs +39 -0
  56. package/dist/{list.handler-DVnFrlis.mjs → list.handler-Co32_F3n.mjs} +7 -7
  57. package/dist/{list.handler-CMRQKH4b.mjs → list.handler-Cuw1fWO_.mjs} +41 -12
  58. package/dist/{list.handler-DbYUk6ko.mjs → list.handler-D-rSyrX0.mjs} +5 -5
  59. package/dist/{list.handler-DIMWZx78.mjs → list.handler-DMvq96UA.mjs} +4 -4
  60. package/dist/{list.handler-LxZInip2.mjs → list.handler-DUTNS8du.mjs} +4 -4
  61. package/dist/{list.handler-BiY5NFWd.mjs → list.handler-Dz-Yeijp.mjs} +3 -3
  62. package/dist/list2.handler-BpqKZTZk.mjs +99 -0
  63. package/dist/{listen-C_7Rgwkb.mjs → listen-CeNwufij.mjs} +3 -3
  64. package/dist/{listen.handler-dJgorIzr.mjs → listen.handler-CfRoaOwu.mjs} +4 -4
  65. package/dist/{logs-B9YMhUGt.mjs → logs-B7k2_W1R.mjs} +3 -3
  66. package/dist/{logs.handler-DGGVPMOX.mjs → logs.handler-BIqJ0FED.mjs} +1 -1
  67. package/dist/{logs.handler-BfjCsAyq.mjs → logs.handler-CSqOzxCU.mjs} +26 -29
  68. package/dist/{members.add.handler-DSRCRxsI.mjs → members.add.handler-CBjoA6vG.mjs} +6 -5
  69. package/dist/{members.invite.handler-BNpHn1dY.mjs → members.invite.handler-D8KcKJ9Y.mjs} +6 -5
  70. package/dist/{members.list.handler-Bn9LJEPG.mjs → members.list.handler-CB_qSJK0.mjs} +6 -5
  71. package/dist/{members.remove.handler-Dkr2t_tX.mjs → members.remove.handler-DNhO81mo.mjs} +6 -5
  72. package/dist/{members.update.handler-DBtUYuAY.mjs → members.update.handler-Bjdk_uz4.mjs} +6 -5
  73. package/dist/{operations-CF2nUiBs.mjs → operations-HHwoArwE.mjs} +5 -5
  74. package/dist/org-context-CNh2p2DP.mjs +112 -0
  75. package/dist/{org-DOH7YHk2.mjs → org-f-qo68Em.mjs} +35 -28
  76. package/dist/org-output-BcI17Uan.mjs +64 -0
  77. package/dist/{orgs.create.handler-BO70zIdp.mjs → orgs.create.handler-DOE9ZIed.mjs} +4 -4
  78. package/dist/{orgs.get.handler-BuGg5bc9.mjs → orgs.get.handler-sWErVI7r.mjs} +4 -4
  79. package/dist/{orgs.list.handler--5HutMkl.mjs → orgs.list.handler-Cp-mXsA0.mjs} +4 -4
  80. package/dist/{output-BWcVRt-T.mjs → output-BPydP5tG.mjs} +1 -1
  81. package/dist/{package-manager-CvY4IW7X.mjs → package-manager-BwJ6muas.mjs} +27 -2
  82. package/dist/{paused.handler-DHvxz-cC.mjs → paused.handler-DWdoKYY8.mjs} +20 -33
  83. package/dist/{projects-C5GZ5Jrf.mjs → projects-CCC36zbJ.mjs} +11 -9
  84. package/dist/{register.handler-CKMZ2WmD.mjs → register.handler-Dxae5iq8.mjs} +3 -3
  85. package/dist/{render-credential-Bn15FEUC.mjs → render-credential-D-H1ECDt.mjs} +1 -1
  86. package/dist/{render-operation-DWbMwhfc.mjs → render-operation-iF7Wblv2.mjs} +2 -2
  87. package/dist/{requirements.handler-B5rqCjMu.mjs → requirements.handler-Bg3mRnER.mjs} +7 -7
  88. package/dist/{resolve-cli-credentials-CAOSVMJP.mjs → resolve-cli-credentials-GVOOedoQ.mjs} +1 -1
  89. package/dist/{resolve-project-E9mrh_el.mjs → resolve-project-CoCN9xfi.mjs} +24 -8
  90. package/dist/{run-polling-DawiBus-.mjs → run-polling-htHWhG0T.mjs} +97 -14
  91. package/dist/{run.handler-BG7xitEK.mjs → run.handler-C-CM-xZG.mjs} +42 -30
  92. package/dist/{runs-swYYBT6C.mjs → runs-BRJPNq4B.mjs} +4 -4
  93. package/dist/{schema-display-FvI8QjOQ.mjs → schema-display-sZ6ConJd.mjs} +33 -26
  94. package/dist/schemas-ClAIoIrX.mjs +281 -0
  95. package/dist/{search-CA0J5NOY.mjs → search-CQMgdp51.mjs} +3 -3
  96. package/dist/{search.handler-BVDsYZlJ.mjs → search.handler-Dn5jjyF-.mjs} +6 -6
  97. package/dist/show.handler-CdZF0aao.mjs +79 -0
  98. package/dist/{show.handler-CsidInW8.mjs → show.handler-D3nDc1MJ.mjs} +5 -5
  99. package/dist/{show.handler-CwwnCmbp.mjs → show.handler-DUDxnNiZ.mjs} +6 -6
  100. package/dist/{skill-installer-DG8kTaQR.mjs → skill-installer-DYNH_MJT.mjs} +3 -1
  101. package/dist/{skills-sync.handler-yRmi3OgP.mjs → skills-sync.handler-_LVhIMRH.mjs} +13 -7
  102. package/dist/{skills.command-COYd3k4Z.mjs → skills.command-DSHGwXPX.mjs} +5 -5
  103. package/dist/skills.handler-DqLXJepA.mjs +9 -0
  104. package/dist/{spinner-progress-lrKDs4YF.mjs → spinner-progress-fLaD0sjH.mjs} +1 -1
  105. package/dist/status.handler-1hEzX5oB.mjs +72 -0
  106. package/dist/{switch.handler-BwYndsP-.mjs → switch.handler-D135WwfB.mjs} +17 -4
  107. package/dist/{sync-6fZkIUtn.mjs → sync-CFScllh3.mjs} +2 -2
  108. package/dist/{sync.handler-Ctr-cN9X.mjs → sync.handler-x8v53-TT.mjs} +8 -8
  109. package/dist/{task-BWuIKWh4.mjs → task-DTvLzUkA.mjs} +2 -88
  110. package/dist/{task-target-build-QllcCfoN.mjs → task-target-build-CtvRyVjH.mjs} +5 -5
  111. package/dist/task-target-deploy-runner.mjs +6 -6
  112. package/dist/{test-C8VIZe9V.mjs → test-Dx4RXoLZ.mjs} +5 -5
  113. package/dist/{test.handler-DLaxrJ9V.mjs → test.handler-BmvL5vF8.mjs} +19 -16
  114. package/dist/{test.handler-BCW0YBPd.mjs → test.handler-Mz_XOnJl.mjs} +2 -2
  115. package/dist/{tool.handler-8qNmgdRe.mjs → tool.handler-DsbpocYI.mjs} +12 -12
  116. package/dist/{trigger-artifacts-BcRScRSp-BiD2h6do.mjs → trigger-artifacts-BcRScRSp-BRpU-He5.mjs} +2 -2
  117. package/dist/{trigger-manifest-C07EM-b2.mjs → trigger-manifest-BVqjDhxU.mjs} +1 -1
  118. package/dist/{upgrade-DgOcc8IT.mjs → upgrade-C9G6HksL.mjs} +4 -8
  119. package/dist/upgrade.handler-DsFeAFF4.mjs +99 -0
  120. package/dist/{upload.handler-B7xle1oX.mjs → upload.handler-DscKDQ63.mjs} +9 -9
  121. package/dist/{users.get.handler-C4t1vXwi.mjs → users.get.handler-CaUv_maM.mjs} +4 -4
  122. package/dist/{users.list.handler-Dvl90grq.mjs → users.list.handler-DzsOvAtd.mjs} +4 -4
  123. package/dist/{users.set-role.handler-Djw1_VGf.mjs → users.set-role.handler-koRzA0V9.mjs} +4 -4
  124. package/dist/{validate.handler-Drf_lssw.mjs → validate.handler-BkBsS8BL.mjs} +171 -26
  125. package/dist/{workflow-build-Begvjfq8.mjs → workflow-build-Db6at6IA.mjs} +234 -32
  126. package/dist/{workflow-build-manifest-1sC52TIG.mjs → workflow-build-manifest-CV6bBmDO.mjs} +1 -1
  127. package/dist/{workflow-bundler-BzHk73PM-muPv1yGG.mjs → workflow-bundler-Bs3zQNQv-Dy7lXxy3.mjs} +15 -4
  128. package/dist/{workflows-DjMlxuBX.mjs → workflows-B8VG6nKg.mjs} +34 -37
  129. package/dist/{writer-byNNUjRm-B-on1n6c.mjs → writer-BLg0RuZa-Y6ExdYH9.mjs} +6 -4
  130. package/package.json +10 -10
  131. package/dist/current-deployment-workflow-B1VQCYC-.mjs +0 -94
  132. package/dist/current.handler-BaGaCLzB.mjs +0 -21
  133. package/dist/list.handler-BEMj3FyH.mjs +0 -76
  134. package/dist/list.handler-Cq_oQY5B.mjs +0 -52
  135. package/dist/list.handler-htR9TeiS.mjs +0 -24
  136. package/dist/schemas-D2zfmyC-.mjs +0 -671
  137. package/dist/show.handler-nkK6Erbb.mjs +0 -31
  138. package/dist/skills.handler-DYIQK0Vu.mjs +0 -9
  139. package/dist/status.handler-Ch_DtyBp.mjs +0 -109
  140. package/dist/upgrade.handler-DSZuw7-9.mjs +0 -80
  141. /package/dist/{build-metadata-BB_L45ZS-DSJL7dTy.mjs → build-metadata-BB_L45ZS-DRQsV6JK.mjs} +0 -0
  142. /package/dist/{deploy-DhCbYFc7.mjs → deploy-BiKBH25R.mjs} +0 -0
  143. /package/dist/{detect-env-access-CwkOYeYM-COq4U-4Y.mjs → detect-env-access-CwkOYeYM-r4aynBU0.mjs} +0 -0
  144. /package/dist/{read-credential-keys-77a91T8M-DGK5XTQp.mjs → read-credential-keys-77a91T8M-I07NYwfH.mjs} +0 -0
  145. /package/dist/{run-polling-fBouPjJ2.mjs → run-polling-1c0ckC1A.mjs} +0 -0
  146. /package/dist/{schemas-4Mq_bxob.mjs → schemas-8nhXlXWh.mjs} +0 -0
  147. /package/dist/{task-target-deploy-B_3HPSo2.mjs → task-target-deploy-m9LfE488.mjs} +0 -0
  148. /package/dist/{types-AlA-ifK9.mjs → types-Cb0eWmUU.mjs} +0 -0
@@ -1,671 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { z } from "zod";
4
- //#region ../../node_modules/.pnpm/cron-schedule@6.0.0/node_modules/cron-schedule/dist/utils.js
5
- function extractDateElements(date) {
6
- return {
7
- second: date.getSeconds(),
8
- minute: date.getMinutes(),
9
- hour: date.getHours(),
10
- day: date.getDate(),
11
- month: date.getMonth(),
12
- weekday: date.getDay(),
13
- year: date.getFullYear()
14
- };
15
- }
16
- function getDaysInMonth(year, month) {
17
- return new Date(year, month + 1, 0).getDate();
18
- }
19
- function getDaysBetweenWeekdays(weekday1, weekday2) {
20
- if (weekday1 <= weekday2) return weekday2 - weekday1;
21
- return 6 - weekday1 + weekday2 + 1;
22
- }
23
- //#endregion
24
- //#region ../../node_modules/.pnpm/cron-schedule@6.0.0/node_modules/cron-schedule/dist/cron.js
25
- var Cron = class {
26
- constructor({ seconds, minutes, hours, days, months, weekdays }) {
27
- if (!seconds || seconds.size === 0) throw new Error("There must be at least one allowed second.");
28
- if (!minutes || minutes.size === 0) throw new Error("There must be at least one allowed minute.");
29
- if (!hours || hours.size === 0) throw new Error("There must be at least one allowed hour.");
30
- if (!months || months.size === 0) throw new Error("There must be at least one allowed month.");
31
- if ((!weekdays || weekdays.size === 0) && (!days || days.size === 0)) throw new Error("There must be at least one allowed day or weekday.");
32
- this.seconds = Array.from(seconds).sort((a, b) => a - b);
33
- this.minutes = Array.from(minutes).sort((a, b) => a - b);
34
- this.hours = Array.from(hours).sort((a, b) => a - b);
35
- this.days = Array.from(days).sort((a, b) => a - b);
36
- this.months = Array.from(months).sort((a, b) => a - b);
37
- this.weekdays = Array.from(weekdays).sort((a, b) => a - b);
38
- const validateData = (name, data, constraint) => {
39
- if (data.some((x) => typeof x !== "number" || x % 1 !== 0 || x < constraint.min || x > constraint.max)) throw new Error(`${name} must only consist of integers which are within the range of ${constraint.min} and ${constraint.max}`);
40
- };
41
- validateData("seconds", this.seconds, {
42
- min: 0,
43
- max: 59
44
- });
45
- validateData("minutes", this.minutes, {
46
- min: 0,
47
- max: 59
48
- });
49
- validateData("hours", this.hours, {
50
- min: 0,
51
- max: 23
52
- });
53
- validateData("days", this.days, {
54
- min: 1,
55
- max: 31
56
- });
57
- validateData("months", this.months, {
58
- min: 0,
59
- max: 11
60
- });
61
- validateData("weekdays", this.weekdays, {
62
- min: 0,
63
- max: 6
64
- });
65
- this.reversed = {
66
- seconds: this.seconds.map((x) => x).reverse(),
67
- minutes: this.minutes.map((x) => x).reverse(),
68
- hours: this.hours.map((x) => x).reverse(),
69
- days: this.days.map((x) => x).reverse(),
70
- months: this.months.map((x) => x).reverse(),
71
- weekdays: this.weekdays.map((x) => x).reverse()
72
- };
73
- }
74
- /**
75
- * Find the next or previous hour, starting from the given start hour that matches the hour constraint.
76
- * startHour itself might also be allowed.
77
- */
78
- findAllowedHour(dir, startHour) {
79
- return dir === "next" ? this.hours.find((x) => x >= startHour) : this.reversed.hours.find((x) => x <= startHour);
80
- }
81
- /**
82
- * Find the next or previous minute, starting from the given start minute that matches the minute constraint.
83
- * startMinute itself might also be allowed.
84
- */
85
- findAllowedMinute(dir, startMinute) {
86
- return dir === "next" ? this.minutes.find((x) => x >= startMinute) : this.reversed.minutes.find((x) => x <= startMinute);
87
- }
88
- /**
89
- * Find the next or previous second, starting from the given start second that matches the second constraint.
90
- * startSecond itself IS NOT allowed.
91
- */
92
- findAllowedSecond(dir, startSecond) {
93
- return dir === "next" ? this.seconds.find((x) => x > startSecond) : this.reversed.seconds.find((x) => x < startSecond);
94
- }
95
- /**
96
- * Find the next or previous time, starting from the given start time that matches the hour, minute
97
- * and second constraints. startTime itself might also be allowed.
98
- */
99
- findAllowedTime(dir, startTime) {
100
- let hour = this.findAllowedHour(dir, startTime.hour);
101
- if (hour !== void 0) if (hour === startTime.hour) {
102
- let minute = this.findAllowedMinute(dir, startTime.minute);
103
- if (minute !== void 0) if (minute === startTime.minute) {
104
- const second = this.findAllowedSecond(dir, startTime.second);
105
- if (second !== void 0) return {
106
- hour,
107
- minute,
108
- second
109
- };
110
- minute = this.findAllowedMinute(dir, dir === "next" ? startTime.minute + 1 : startTime.minute - 1);
111
- if (minute !== void 0) return {
112
- hour,
113
- minute,
114
- second: dir === "next" ? this.seconds[0] : this.reversed.seconds[0]
115
- };
116
- } else return {
117
- hour,
118
- minute,
119
- second: dir === "next" ? this.seconds[0] : this.reversed.seconds[0]
120
- };
121
- hour = this.findAllowedHour(dir, dir === "next" ? startTime.hour + 1 : startTime.hour - 1);
122
- if (hour !== void 0) return {
123
- hour,
124
- minute: dir === "next" ? this.minutes[0] : this.reversed.minutes[0],
125
- second: dir === "next" ? this.seconds[0] : this.reversed.seconds[0]
126
- };
127
- } else return {
128
- hour,
129
- minute: dir === "next" ? this.minutes[0] : this.reversed.minutes[0],
130
- second: dir === "next" ? this.seconds[0] : this.reversed.seconds[0]
131
- };
132
- }
133
- /**
134
- * Find the next or previous day in the given month, starting from the given startDay
135
- * that matches either the day or the weekday constraint. startDay itself might also be allowed.
136
- */
137
- findAllowedDayInMonth(dir, year, month, startDay) {
138
- var _a, _b;
139
- if (startDay < 1) throw new Error("startDay must not be smaller than 1.");
140
- const daysInMonth = getDaysInMonth(year, month);
141
- const daysRestricted = this.days.length !== 31;
142
- const weekdaysRestricted = this.weekdays.length !== 7;
143
- if (!daysRestricted && !weekdaysRestricted) {
144
- if (startDay > daysInMonth) return dir === "next" ? void 0 : daysInMonth;
145
- return startDay;
146
- }
147
- let allowedDayByDays;
148
- if (daysRestricted) {
149
- allowedDayByDays = dir === "next" ? this.days.find((x) => x >= startDay) : this.reversed.days.find((x) => x <= startDay);
150
- if (allowedDayByDays !== void 0 && allowedDayByDays > daysInMonth) allowedDayByDays = void 0;
151
- }
152
- let allowedDayByWeekdays;
153
- if (weekdaysRestricted) {
154
- const startWeekday = new Date(year, month, startDay).getDay();
155
- const nearestAllowedWeekday = dir === "next" ? (_a = this.weekdays.find((x) => x >= startWeekday)) !== null && _a !== void 0 ? _a : this.weekdays[0] : (_b = this.reversed.weekdays.find((x) => x <= startWeekday)) !== null && _b !== void 0 ? _b : this.reversed.weekdays[0];
156
- if (nearestAllowedWeekday !== void 0) {
157
- const daysBetweenWeekdays = dir === "next" ? getDaysBetweenWeekdays(startWeekday, nearestAllowedWeekday) : getDaysBetweenWeekdays(nearestAllowedWeekday, startWeekday);
158
- allowedDayByWeekdays = dir === "next" ? startDay + daysBetweenWeekdays : startDay - daysBetweenWeekdays;
159
- if (allowedDayByWeekdays > daysInMonth || allowedDayByWeekdays < 1) allowedDayByWeekdays = void 0;
160
- }
161
- }
162
- if (allowedDayByDays !== void 0 && allowedDayByWeekdays !== void 0) return dir === "next" ? Math.min(allowedDayByDays, allowedDayByWeekdays) : Math.max(allowedDayByDays, allowedDayByWeekdays);
163
- if (allowedDayByDays !== void 0) return allowedDayByDays;
164
- if (allowedDayByWeekdays !== void 0) return allowedDayByWeekdays;
165
- }
166
- /** Gets the next date starting from the given start date or now. */
167
- getNextDate(startDate = /* @__PURE__ */ new Date()) {
168
- const startDateElements = extractDateElements(startDate);
169
- let minYear = startDateElements.year;
170
- let startIndexMonth = this.months.findIndex((x) => x >= startDateElements.month);
171
- if (startIndexMonth === -1) {
172
- startIndexMonth = 0;
173
- minYear++;
174
- }
175
- const maxIterations = this.months.length * 5;
176
- for (let i = 0; i < maxIterations; i++) {
177
- const year = minYear + Math.floor((startIndexMonth + i) / this.months.length);
178
- const month = this.months[(startIndexMonth + i) % this.months.length];
179
- const isStartMonth = year === startDateElements.year && month === startDateElements.month;
180
- let day = this.findAllowedDayInMonth("next", year, month, isStartMonth ? startDateElements.day : 1);
181
- let isStartDay = isStartMonth && day === startDateElements.day;
182
- if (day !== void 0 && isStartDay) {
183
- const nextTime = this.findAllowedTime("next", startDateElements);
184
- if (nextTime !== void 0) return new Date(year, month, day, nextTime.hour, nextTime.minute, nextTime.second);
185
- day = this.findAllowedDayInMonth("next", year, month, day + 1);
186
- isStartDay = false;
187
- }
188
- if (day !== void 0 && !isStartDay) return new Date(year, month, day, this.hours[0], this.minutes[0], this.seconds[0]);
189
- }
190
- throw new Error("No valid next date was found.");
191
- }
192
- /** Gets the specified amount of future dates starting from the given start date or now. */
193
- getNextDates(amount, startDate) {
194
- const dates = [];
195
- let nextDate;
196
- for (let i = 0; i < amount; i++) {
197
- nextDate = this.getNextDate(nextDate !== null && nextDate !== void 0 ? nextDate : startDate);
198
- dates.push(nextDate);
199
- }
200
- return dates;
201
- }
202
- /**
203
- * Get an ES6 compatible iterator which iterates over the next dates starting from startDate or now.
204
- * The iterator runs until the optional endDate is reached or forever.
205
- */
206
- *getNextDatesIterator(startDate, endDate) {
207
- let nextDate;
208
- while (true) {
209
- nextDate = this.getNextDate(nextDate !== null && nextDate !== void 0 ? nextDate : startDate);
210
- if (endDate && endDate.getTime() < nextDate.getTime()) return;
211
- yield nextDate;
212
- }
213
- }
214
- /** Gets the previous date starting from the given start date or now. */
215
- getPrevDate(startDate = /* @__PURE__ */ new Date()) {
216
- const startDateElements = extractDateElements(startDate);
217
- let maxYear = startDateElements.year;
218
- let startIndexMonth = this.reversed.months.findIndex((x) => x <= startDateElements.month);
219
- if (startIndexMonth === -1) {
220
- startIndexMonth = 0;
221
- maxYear--;
222
- }
223
- const maxIterations = this.reversed.months.length * 5;
224
- for (let i = 0; i < maxIterations; i++) {
225
- const year = maxYear - Math.floor((startIndexMonth + i) / this.reversed.months.length);
226
- const month = this.reversed.months[(startIndexMonth + i) % this.reversed.months.length];
227
- const isStartMonth = year === startDateElements.year && month === startDateElements.month;
228
- let day = this.findAllowedDayInMonth("prev", year, month, isStartMonth ? startDateElements.day : getDaysInMonth(year, month));
229
- let isStartDay = isStartMonth && day === startDateElements.day;
230
- if (day !== void 0 && isStartDay) {
231
- const prevTime = this.findAllowedTime("prev", startDateElements);
232
- if (prevTime !== void 0) return new Date(year, month, day, prevTime.hour, prevTime.minute, prevTime.second);
233
- if (day > 1) {
234
- day = this.findAllowedDayInMonth("prev", year, month, day - 1);
235
- isStartDay = false;
236
- }
237
- }
238
- if (day !== void 0 && !isStartDay) return new Date(year, month, day, this.reversed.hours[0], this.reversed.minutes[0], this.reversed.seconds[0]);
239
- }
240
- throw new Error("No valid previous date was found.");
241
- }
242
- /** Gets the specified amount of previous dates starting from the given start date or now. */
243
- getPrevDates(amount, startDate) {
244
- const dates = [];
245
- let prevDate;
246
- for (let i = 0; i < amount; i++) {
247
- prevDate = this.getPrevDate(prevDate !== null && prevDate !== void 0 ? prevDate : startDate);
248
- dates.push(prevDate);
249
- }
250
- return dates;
251
- }
252
- /**
253
- * Get an ES6 compatible iterator which iterates over the previous dates starting from startDate or now.
254
- * The iterator runs until the optional endDate is reached or forever.
255
- */
256
- *getPrevDatesIterator(startDate, endDate) {
257
- let prevDate;
258
- while (true) {
259
- prevDate = this.getPrevDate(prevDate !== null && prevDate !== void 0 ? prevDate : startDate);
260
- if (endDate && endDate.getTime() > prevDate.getTime()) return;
261
- yield prevDate;
262
- }
263
- }
264
- /** Returns true when there is a cron date at the given date. */
265
- matchDate(date) {
266
- const { second, minute, hour, day, month, weekday } = extractDateElements(date);
267
- if (this.seconds.indexOf(second) === -1 || this.minutes.indexOf(minute) === -1 || this.hours.indexOf(hour) === -1 || this.months.indexOf(month) === -1) return false;
268
- if (this.days.length !== 31 && this.weekdays.length !== 7) return this.days.indexOf(day) !== -1 || this.weekdays.indexOf(weekday) !== -1;
269
- return this.days.indexOf(day) !== -1 && this.weekdays.indexOf(weekday) !== -1;
270
- }
271
- };
272
- //#endregion
273
- //#region ../../node_modules/.pnpm/cron-schedule@6.0.0/node_modules/cron-schedule/dist/cron-parser.js
274
- const secondConstraint = {
275
- min: 0,
276
- max: 59
277
- };
278
- const minuteConstraint = {
279
- min: 0,
280
- max: 59
281
- };
282
- const hourConstraint = {
283
- min: 0,
284
- max: 23
285
- };
286
- const dayConstraint = {
287
- min: 1,
288
- max: 31
289
- };
290
- const monthConstraint = {
291
- min: 1,
292
- max: 12,
293
- aliases: {
294
- jan: "1",
295
- feb: "2",
296
- mar: "3",
297
- apr: "4",
298
- may: "5",
299
- jun: "6",
300
- jul: "7",
301
- aug: "8",
302
- sep: "9",
303
- oct: "10",
304
- nov: "11",
305
- dec: "12"
306
- }
307
- };
308
- const weekdayConstraint = {
309
- min: 0,
310
- max: 7,
311
- aliases: {
312
- mon: "1",
313
- tue: "2",
314
- wed: "3",
315
- thu: "4",
316
- fri: "5",
317
- sat: "6",
318
- sun: "7"
319
- }
320
- };
321
- const timeNicknames = {
322
- "@yearly": "0 0 1 1 *",
323
- "@annually": "0 0 1 1 *",
324
- "@monthly": "0 0 1 * *",
325
- "@weekly": "0 0 * * 0",
326
- "@daily": "0 0 * * *",
327
- "@hourly": "0 * * * *",
328
- "@minutely": "* * * * *"
329
- };
330
- function parseElement(element, constraint) {
331
- const result = /* @__PURE__ */ new Set();
332
- if (element === "*") {
333
- for (let i = constraint.min; i <= constraint.max; i = i + 1) result.add(i);
334
- return result;
335
- }
336
- const listElements = element.split(",");
337
- if (listElements.length > 1) {
338
- for (const listElement of listElements) {
339
- const parsedListElement = parseElement(listElement, constraint);
340
- for (const x of parsedListElement) result.add(x);
341
- }
342
- return result;
343
- }
344
- const parseSingleElement = (singleElement) => {
345
- var _a, _b;
346
- singleElement = (_b = (_a = constraint.aliases) === null || _a === void 0 ? void 0 : _a[singleElement.toLowerCase()]) !== null && _b !== void 0 ? _b : singleElement;
347
- const parsedElement = Number.parseInt(singleElement, 10);
348
- if (Number.isNaN(parsedElement)) throw new Error(`Failed to parse ${element}: ${singleElement} is NaN.`);
349
- if (parsedElement < constraint.min || parsedElement > constraint.max) throw new Error(`Failed to parse ${element}: ${singleElement} is outside of constraint range of ${constraint.min} - ${constraint.max}.`);
350
- return parsedElement;
351
- };
352
- const rangeSegments = /^(([0-9a-zA-Z]+)-([0-9a-zA-Z]+)|\*)(\/([0-9]+))?$/.exec(element);
353
- if (rangeSegments === null) {
354
- result.add(parseSingleElement(element));
355
- return result;
356
- }
357
- let parsedStart = rangeSegments[1] === "*" ? constraint.min : parseSingleElement(rangeSegments[2]);
358
- const parsedEnd = rangeSegments[1] === "*" ? constraint.max : parseSingleElement(rangeSegments[3]);
359
- if (constraint === weekdayConstraint && parsedStart === 7 && parsedEnd !== 7) parsedStart = 0;
360
- if (parsedStart > parsedEnd) throw new Error(`Failed to parse ${element}: Invalid range (start: ${parsedStart}, end: ${parsedEnd}).`);
361
- const step = rangeSegments[5];
362
- let parsedStep = 1;
363
- if (step !== void 0) {
364
- parsedStep = Number.parseInt(step, 10);
365
- if (Number.isNaN(parsedStep)) throw new Error(`Failed to parse step: ${step} is NaN.`);
366
- if (parsedStep < 1) throw new Error(`Failed to parse step: Expected ${step} to be greater than 0.`);
367
- }
368
- for (let i = parsedStart; i <= parsedEnd; i = i + parsedStep) result.add(i);
369
- return result;
370
- }
371
- /** Parses a cron expression into a Cron instance. */
372
- function parseCronExpression(cronExpression) {
373
- var _a;
374
- if (typeof cronExpression !== "string") throw new TypeError("Invalid cron expression: must be of type string.");
375
- cronExpression = (_a = timeNicknames[cronExpression.toLowerCase()]) !== null && _a !== void 0 ? _a : cronExpression;
376
- const elements = cronExpression.split(" ").filter((elem) => elem.length > 0);
377
- if (elements.length < 5 || elements.length > 6) throw new Error("Invalid cron expression: expected 5 or 6 elements.");
378
- const rawSeconds = elements.length === 6 ? elements[0] : "0";
379
- const rawMinutes = elements.length === 6 ? elements[1] : elements[0];
380
- const rawHours = elements.length === 6 ? elements[2] : elements[1];
381
- const rawDays = elements.length === 6 ? elements[3] : elements[2];
382
- const rawMonths = elements.length === 6 ? elements[4] : elements[3];
383
- const rawWeekdays = elements.length === 6 ? elements[5] : elements[4];
384
- return new Cron({
385
- seconds: parseElement(rawSeconds, secondConstraint),
386
- minutes: parseElement(rawMinutes, minuteConstraint),
387
- hours: parseElement(rawHours, hourConstraint),
388
- days: parseElement(rawDays, dayConstraint),
389
- months: new Set(Array.from(parseElement(rawMonths, monthConstraint)).map((x) => x - 1)),
390
- weekdays: new Set(Array.from(parseElement(rawWeekdays, weekdayConstraint)).map((x) => x % 7))
391
- });
392
- }
393
- //#endregion
394
- //#region ../../packages/core/src/shared/schema.ts
395
- const MAX_JSON_DEPTH = 20;
396
- function buildJsonValueSchema(depth) {
397
- const primitives = z.union([
398
- z.string(),
399
- z.number(),
400
- z.boolean(),
401
- z.null()
402
- ]);
403
- if (depth <= 0) return primitives;
404
- const nested = buildJsonValueSchema(depth - 1);
405
- return z.union([
406
- primitives,
407
- z.array(nested),
408
- z.record(z.string(), nested)
409
- ]);
410
- }
411
- const jsonValueSchema = buildJsonValueSchema(MAX_JSON_DEPTH);
412
- const jsonSchemaObject = z.record(z.string(), jsonValueSchema);
413
- const anyZodSchemaSchema = z.custom((value) => value instanceof z.ZodType, "Expected a Zod schema");
414
- const zodObjectSchema = z.custom((value) => value instanceof z.ZodObject, "Expected a Zod object schema");
415
- /**
416
- * Creates a Zod schema that validates an object structurally by checking
417
- * for required properties. This avoids `instanceof` checks which fail
418
- * when class definitions are duplicated across bundle boundaries.
419
- */
420
- function createStructuralSchema(requiredKeys, label) {
421
- return z.custom((value) => value != null && (typeof value === "object" || typeof value === "function") && requiredKeys.every((key) => key in value), `Expected ${label}`);
422
- }
423
- function trimmedNonEmptyString(fieldName) {
424
- return z.string().trim().min(1, { error: `${fieldName} cannot be empty` }).max(255, { error: `${fieldName} cannot exceed 255 characters` });
425
- }
426
- /** Trimmed string with at least one character; no upper length limit. */
427
- function trimmedNonEmptyStringUnbounded(fieldName) {
428
- return z.string().trim().min(1, { error: `${fieldName} cannot be empty` });
429
- }
430
- /**
431
- * Non-empty trimmed string restricted to URL-safe characters.
432
- * Use for IDs (workflow, step, etc.) that must be safe in URLs, env vars, and as object keys.
433
- */
434
- function idNoSpacesString(fieldName) {
435
- return z.string().trim().min(1, { error: `${fieldName} cannot be empty` }).max(255, { error: `${fieldName} cannot exceed 255 characters` }).refine((s) => /^[a-zA-Z0-9_-]+$/.test(s), { error: `${fieldName} must only contain letters, numbers, hyphens, and underscores` });
436
- }
437
- /**
438
- * Non-empty trimmed string for credential definition ids.
439
- * Allows namespaced ids such as `keystroke:slack` plus letters, numbers,
440
- * hyphens, and underscores.
441
- */
442
- function credentialSetIdString(fieldName) {
443
- return z.string().trim().min(1, { error: `${fieldName} cannot be empty` }).max(255, { error: `${fieldName} cannot exceed 255 characters` }).refine((s) => /^[a-zA-Z0-9_:-]+$/.test(s), { error: `${fieldName} must only contain letters, numbers, hyphens, underscores, and colons` });
444
- }
445
- function optionalTrimmedNonEmptyString(fieldName) {
446
- return trimmedNonEmptyString(fieldName).optional();
447
- }
448
- function descriptionString(fieldName) {
449
- return z.string().trim().min(1, { error: `${fieldName} cannot be empty` }).max(1024, { error: `${fieldName} cannot exceed 1024 characters` });
450
- }
451
- function optionalDescriptionString(fieldName) {
452
- return descriptionString(fieldName).optional();
453
- }
454
- //#endregion
455
- //#region ../../packages/core/src/credential-set/constants.ts
456
- /**
457
- * Shared constants for the credential/connection system.
458
- * Defined in core (bottom of dependency chain) so all packages can import them.
459
- */
460
- const CREDENTIAL_EXPOSURES = {
461
- "user-runtime": "user-runtime",
462
- "platform-only": "platform-only"
463
- };
464
- //#endregion
465
- //#region ../../packages/core/src/credential-set/schemas.ts
466
- const credentialSetProxyInjectionSchema = z.object({
467
- /** Substitute placeholder in HTTP headers (default: true). */
468
- headers: z.boolean().optional(),
469
- /** Substitute placeholder in the HTTP Basic Auth credential (default: true). */
470
- basicAuth: z.boolean().optional(),
471
- /** Substitute placeholder in URL query params (default: false).
472
- * Use for APIs that authenticate via `?api_key=...` (Google Maps, OWM, etc.). */
473
- queryParams: z.boolean().optional(),
474
- /** Substitute placeholder in the HTTP request body (default: false).
475
- * Use for form-encoded auth payloads (Stripe, AWS SigV4 query, etc.). */
476
- body: z.boolean().optional()
477
- });
478
- const credentialSetProxyConfigSchema = z.object({
479
- /** Exact-match host allowlist (forwarded to SecretBuilder.allowHost). */
480
- hosts: z.array(z.string().min(1)).optional(),
481
- /** Wildcard host allowlist (forwarded to SecretBuilder.allowHostPattern).
482
- * Example: `["*.browserbase.com"]` covers any subdomain. */
483
- hostPatterns: z.array(z.string().min(1)).optional(),
484
- /** Per-scope substitution toggles. Omit to use SDK defaults. */
485
- injection: credentialSetProxyInjectionSchema.optional()
486
- });
487
- const onCredentialRevokedSchema = z.enum(["fail", "retry-once"]);
488
- const credentialExposureSchema = z.enum([CREDENTIAL_EXPOSURES["user-runtime"], CREDENTIAL_EXPOSURES["platform-only"]]);
489
- const connectionMetadataConfigSchema = z.object({
490
- id: credentialSetIdString("Credential connection id").optional(),
491
- label: optionalTrimmedNonEmptyString("Credential connection label"),
492
- description: optionalDescriptionString("Credential connection description"),
493
- recommended: z.boolean().optional(),
494
- advanced: z.boolean().optional(),
495
- needsRawSecret: z.boolean().optional()
496
- });
497
- const connectionMetadataManifestSchema = connectionMetadataConfigSchema;
498
- const registeredDescriptorSchema = z.object({
499
- id: trimmedNonEmptyString("Registered descriptor id"),
500
- config: z.record(z.string(), z.unknown()).optional()
501
- });
502
- const registeredResolverDescriptorSchema = registeredDescriptorSchema.extend({ cacheMs: z.number().int().nonnegative().optional() });
503
- const manualConnectionConfigSchema = connectionMetadataConfigSchema.extend({
504
- kind: z.literal("manual"),
505
- input: zodObjectSchema.optional(),
506
- instructions: z.string().min(1).optional(),
507
- validate: z.function().optional()
508
- });
509
- const manualConnectionFieldManifestSchema = z.object({
510
- key: z.string().min(1),
511
- label: z.string().min(1),
512
- description: z.string().min(1).optional(),
513
- optional: z.boolean(),
514
- secret: z.literal(true)
515
- });
516
- const manualConnectionConfigManifestSchema = connectionMetadataManifestSchema.extend({
517
- kind: z.literal("manual"),
518
- input: jsonSchemaObject.optional(),
519
- fields: z.array(manualConnectionFieldManifestSchema).optional(),
520
- generated: z.boolean().optional(),
521
- instructions: z.string().min(1).optional()
522
- });
523
- /** Declarative form of `Vault` — strings typed against the credential set's
524
- * stored/auth schema keys at the {@link CredentialSetConfig} boundary; the Zod
525
- * schema here enforces non-empty strings only. `CredentialSet` itself performs
526
- * the schema-key membership check at construction time. */
527
- const vaultMappingSchema = z.object({
528
- accessToken: z.string().min(1),
529
- refreshToken: z.string().min(1).optional(),
530
- instanceUrl: z.string().min(1).optional(),
531
- raw: z.record(z.string().min(1), z.string().min(1)).optional()
532
- });
533
- /** Function form of `Vault` — an object pairing the access-token vault key
534
- * (`accessTokenKey`) with the `build` function that computes the full vault
535
- * write map. The explicit key keeps the disconnect path's revocation read
536
- * reliable even when `build` transforms the access token. */
537
- const vaultMappingFnSchema = z.object({
538
- accessTokenKey: z.string().min(1),
539
- build: z.custom((val) => typeof val === "function", { message: "vault.build must be a function." })
540
- });
541
- /** Runtime shape of `Vault`. Accepts either the declarative mapping or the
542
- * function-form object `{ accessTokenKey, build }`. */
543
- const vaultConfigSchema = z.union([vaultMappingSchema, vaultMappingFnSchema], { error: "vault must be a declarative mapping object or a `{ accessTokenKey, build }` object." });
544
- /** Manifest projection of `Vault` — declarative mappings serialize verbatim;
545
- * function-form mappings serialize as `{ kind: 'function', accessTokenKey }`
546
- * since closures are not manifest-safe but the access-token key is. */
547
- const vaultManifestSchema = z.discriminatedUnion("kind", [z.object({
548
- kind: z.literal("declarative"),
549
- accessToken: z.string().min(1),
550
- refreshToken: z.string().min(1).optional(),
551
- instanceUrl: z.string().min(1).optional(),
552
- raw: z.record(z.string().min(1), z.string().min(1)).optional()
553
- }), z.object({
554
- kind: z.literal("function"),
555
- accessTokenKey: z.string().min(1)
556
- })]);
557
- const oauthConnectionConfigBaseSchema = z.object({
558
- kind: z.literal("oauth"),
559
- authUrl: z.string().url(),
560
- tokenUrl: z.string().url(),
561
- scopes: z.array(z.string()).readonly(),
562
- revokeUrl: z.string().url().nullable().optional(),
563
- tokenType: z.enum(["long-lived", "refreshable"]),
564
- pkce: z.boolean().optional(),
565
- /** Fallback token lifetime when the provider omits `expires_in`. Positive
566
- * integer seconds. Shared between config + manifest schemas (both extend
567
- * this base). */
568
- defaultExpiresInSeconds: z.number().int().positive().optional()
569
- });
570
- const oauthConnectionConfigSchema = oauthConnectionConfigBaseSchema.extend({
571
- ...connectionMetadataConfigSchema.shape,
572
- vault: vaultConfigSchema,
573
- oauth: registeredDescriptorSchema.optional(),
574
- buildAuthUrl: z.function().optional(),
575
- exchangeCode: z.function().optional(),
576
- refreshToken: z.function().optional(),
577
- extractInstallationInfo: z.function().optional(),
578
- validate: z.function().optional()
579
- });
580
- const oauthConnectionConfigManifestSchema = oauthConnectionConfigBaseSchema.extend({
581
- ...connectionMetadataManifestSchema.shape,
582
- vault: vaultManifestSchema,
583
- oauth: registeredDescriptorSchema.optional()
584
- });
585
- const credentialsExchangeConnectionConfigSchema = connectionMetadataConfigSchema.extend({
586
- kind: z.literal("credentials-exchange"),
587
- instructions: z.string().min(1).optional(),
588
- input: zodObjectSchema
589
- }).extend({
590
- exchange: z.function(),
591
- rotate: z.function().optional(),
592
- validate: z.function().optional()
593
- });
594
- /** Manifest projection of `CredentialsExchangeConnectionConfig` — only the
595
- * declarative `input` schema (rendered as JSON Schema) and `instructions`
596
- * copy survive serialization. The three hooks (`exchange`, `rotate`,
597
- * `validate`) are runtime closures and are stripped. */
598
- const credentialsExchangeConnectionConfigManifestSchema = z.object({
599
- kind: z.literal("credentials-exchange"),
600
- ...connectionMetadataManifestSchema.shape,
601
- instructions: z.string().min(1).optional(),
602
- input: jsonSchemaObject
603
- });
604
- const exchangeCredentialConnectionConfigSchema = connectionMetadataConfigSchema.extend({
605
- kind: z.literal("exchange"),
606
- input: zodObjectSchema,
607
- exchange: registeredDescriptorSchema
608
- });
609
- const exchangeCredentialConnectionManifestSchema = connectionMetadataManifestSchema.extend({
610
- kind: z.literal("exchange"),
611
- input: jsonSchemaObject,
612
- exchange: registeredDescriptorSchema
613
- });
614
- const dynamicCredentialConnectionConfigSchema = connectionMetadataConfigSchema.extend({
615
- kind: z.literal("dynamic"),
616
- input: zodObjectSchema.optional(),
617
- resolver: registeredResolverDescriptorSchema
618
- });
619
- const dynamicCredentialConnectionManifestSchema = connectionMetadataManifestSchema.extend({
620
- kind: z.literal("dynamic"),
621
- input: jsonSchemaObject.optional(),
622
- resolver: registeredResolverDescriptorSchema
623
- });
624
- const platformCredentialConnectionConfigSchema = connectionMetadataConfigSchema.extend({ kind: z.literal("platform") });
625
- const platformCredentialConnectionManifestSchema = connectionMetadataManifestSchema.extend({ kind: z.literal("platform") });
626
- const connectionConfigSchema = z.discriminatedUnion("kind", [
627
- manualConnectionConfigSchema,
628
- oauthConnectionConfigSchema,
629
- credentialsExchangeConnectionConfigSchema,
630
- exchangeCredentialConnectionConfigSchema,
631
- dynamicCredentialConnectionConfigSchema,
632
- platformCredentialConnectionConfigSchema
633
- ]);
634
- /** Manifest projection of `ConnectionConfig` — declarative metadata only. */
635
- const connectionConfigManifestSchema = z.discriminatedUnion("kind", [
636
- manualConnectionConfigManifestSchema,
637
- oauthConnectionConfigManifestSchema,
638
- credentialsExchangeConnectionConfigManifestSchema,
639
- exchangeCredentialConnectionManifestSchema,
640
- dynamicCredentialConnectionManifestSchema,
641
- platformCredentialConnectionManifestSchema
642
- ]);
643
- const CredentialSetManifestSchema = z.object({
644
- manifestVersion: z.literal(1),
645
- type: z.literal("credentialSet"),
646
- id: credentialSetIdString("Credential set id"),
647
- name: trimmedNonEmptyString("Credential set name"),
648
- description: optionalDescriptionString("Credential set description"),
649
- auth: jsonSchemaObject,
650
- exposure: credentialExposureSchema.optional(),
651
- proxy: credentialSetProxyConfigSchema.optional(),
652
- /** When true, resolved values are passed into execution as raw secrets (no ref-token proxy). */
653
- needsRawSecret: z.boolean().optional(),
654
- /** Policy when a step throws `CredentialRevokedError` against this credential set. */
655
- onCredentialRevoked: onCredentialRevokedSchema.optional(),
656
- connections: z.array(connectionConfigManifestSchema).optional()
657
- });
658
- z.object({
659
- id: credentialSetIdString("Credential set id"),
660
- name: optionalTrimmedNonEmptyString("Credential set name"),
661
- description: optionalDescriptionString("Credential set description"),
662
- auth: zodObjectSchema,
663
- exposure: credentialExposureSchema.optional(),
664
- proxy: credentialSetProxyConfigSchema.optional(),
665
- /** When true, resolved values are passed into execution as raw secrets (no ref-token proxy). */
666
- needsRawSecret: z.boolean().optional(),
667
- onCredentialRevoked: onCredentialRevokedSchema.optional(),
668
- connections: z.array(connectionConfigSchema).readonly().optional()
669
- });
670
- //#endregion
671
- export { descriptionString as a, optionalDescriptionString as c, trimmedNonEmptyStringUnbounded as d, parseCronExpression as f, createStructuralSchema as i, optionalTrimmedNonEmptyString as l, credentialSetProxyConfigSchema as n, idNoSpacesString as o, anyZodSchemaSchema as r, jsonSchemaObject as s, CredentialSetManifestSchema as t, trimmedNonEmptyString as u };