@keystrokehq/cli 0.0.19 → 0.0.21

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 (142) hide show
  1. package/dist/{accept.handler-BVmNNAgL.mjs → accept.handler-C6KBLKmW.mjs} +1 -1
  2. package/dist/{admin-DQlHFuXn.mjs → admin-D2CQoZAN.mjs} +9 -9
  3. package/dist/{agents-Dd7UeQCw.mjs → agents-Bn0g5o0o.mjs} +7 -7
  4. package/dist/{api-nR61stdq.mjs → api-J9UL8pqZ.mjs} +1 -1
  5. package/dist/{api-keys-BsMBFiD_.mjs → api-keys-BixCnZJW.mjs} +5 -5
  6. package/dist/{auth-ZTuuEoD6.mjs → auth-yCNMT8sJ.mjs} +14 -7
  7. package/dist/{auth.handler-C1dZBdaG.mjs → auth.handler-BedGpKh1.mjs} +7 -12
  8. package/dist/{build-agents-DseUtzd4-CthuIecx.mjs → build-agents-DseUtzd4-DFh2e5Cn.mjs} +5 -5
  9. package/dist/{build-metadata-C8Ra_Gi--L3l8w0rh.mjs → build-metadata-BB_L45ZS-BtGGjHIV.mjs} +9 -9
  10. package/dist/{build-progress-AR8xow4_.mjs → build-progress-nYa14iBP.mjs} +1 -1
  11. package/dist/{build-tasks-GVuMLS0h-BaPhhGXO.mjs → build-tasks-C09SdfjC-B0F7BZZG.mjs} +4 -4
  12. package/dist/{build-workflows-CV4tBo6S-szwrAGWT.mjs → build-workflows-BZ_m97Pr-DKANy85L.mjs} +9 -9
  13. package/dist/{build.handler-DJrEMCBw.mjs → build.handler-CyDc8jiZ.mjs} +5 -5
  14. package/dist/{clear-cache.handler-CTLQ1PIN.mjs → clear-cache.handler-FmJPHdWG.mjs} +1 -1
  15. package/dist/{clear.handler-BgeAg2de.mjs → clear.handler-Cvb9chs4.mjs} +27 -13
  16. package/dist/{commander-C5qcOo8m.mjs → commander-9Kro0Dl3.mjs} +4 -7
  17. package/dist/{connect-BtBKoXpi.mjs → connect-DzVxjeYr.mjs} +2 -2
  18. package/dist/{connect.handler-E8CmLRSF.mjs → connect.handler-DFQdxkWZ.mjs} +3 -3
  19. package/dist/{context-BydAGTiB.mjs → context-B2cQ-Nt3.mjs} +29 -3
  20. package/dist/{create.handler-CBxIPC3r.mjs → create.handler-v9B0Z9Yf.mjs} +1 -1
  21. package/dist/{credential-env-map-BA4LNI7x.mjs → credential-env-map-Dvp00a4M.mjs} +1 -1
  22. package/dist/credential-requirements-D0mavK8j-CFMf0Xwu.mjs +619 -0
  23. package/dist/{credentials-jRiXEr6P.mjs → credentials-DQW8xxof.mjs} +1 -1
  24. package/dist/{credentials-BGaRMclS.mjs → credentials-Dr5lD7Hm.mjs} +6 -6
  25. package/dist/{current-deployment-workflow-BVliROAz.mjs → current-deployment-workflow-qMfOrRIu.mjs} +4 -4
  26. package/dist/{current.handler-DBl9S67d.mjs → current.handler-Cm_-JLyZ.mjs} +1 -1
  27. package/dist/{delete.handler-Buu7Ip0D.mjs → delete.handler-DtP_zUaq.mjs} +1 -1
  28. package/dist/{deploy-BPDUTKZD.mjs → deploy-BURTx92e.mjs} +1 -1
  29. package/dist/{deploy-CzTlgAFj.mjs → deploy-CB6pfCuB.mjs} +2 -2
  30. package/dist/{deploy-progress-DK87VKJ-.mjs → deploy-progress-Dlp9aBDW.mjs} +1 -1
  31. package/dist/{deploy.handler-CCcJ7y3A.mjs → deploy.handler-Bg0dpSTj.mjs} +28 -16
  32. package/dist/{detect-env-access-CwkOYeYM-CNTyUzme.mjs → detect-env-access-CwkOYeYM-D4aTZv4R.mjs} +1 -1
  33. package/dist/{diff.handler-DUVFixeG.mjs → diff.handler-CJPrszL1.mjs} +4 -4
  34. package/dist/{dist-Cx0RV8s7.mjs → dist-Br4m3sFZ.mjs} +30 -33
  35. package/dist/{dist-CIInPRGh.mjs → dist-DuJjDZIf.mjs} +25 -2
  36. package/dist/{env.handler-C8kNFz2U.mjs → env.handler-6TrLd3fo.mjs} +7 -7
  37. package/dist/{error-boundary-B8cmSwJH.mjs → error-boundary-DVZipk-A.mjs} +1 -1
  38. package/dist/{file-metadata-lrX05iRt.mjs → file-metadata-DQVDjr7M.mjs} +2 -7
  39. package/dist/{import-module--8x5SLum-DjPUZr4i.mjs → import-module-y0glInUe-DxX0-BRO.mjs} +74 -620
  40. package/dist/{init-DeeOVc9m.mjs → init-DBMtY3eO.mjs} +3 -3
  41. package/dist/{init.handler-BMdhpusQ.mjs → init.handler-BoYbE-6H.mjs} +3 -3
  42. package/dist/{inspect.handler-QyTo8rWO.mjs → inspect.handler-Juu2vGbB.mjs} +4 -4
  43. package/dist/{integration-catalog-CmvYPvI6.mjs → integration-catalog-cYlTmOSb.mjs} +1 -1
  44. package/dist/{integrations-tXZM-84g.mjs → integrations-cwRfplNG.mjs} +5 -5
  45. package/dist/{invites-ClyAatBW.mjs → invites-DHyHZOY_.mjs} +4 -4
  46. package/dist/{invites.list.handler-CPkK_tPM.mjs → invites.list.handler-C-QpsG2J.mjs} +1 -1
  47. package/dist/{invites.resend.handler-DIRI7tS2.mjs → invites.resend.handler-KFKbSPzR.mjs} +1 -1
  48. package/dist/{invites.revoke.handler-CcXcDBlU.mjs → invites.revoke.handler-Cuz7jrGC.mjs} +1 -1
  49. package/dist/keystroke.mjs +21 -21
  50. package/dist/{list-enrichment-B9238wom.mjs → list-enrichment-CCRHYslm.mjs} +1 -1
  51. package/dist/{list.handler-Xl_F89kq.mjs → list.handler-6x3GVumu.mjs} +1 -1
  52. package/dist/{list.handler-tnsRn-Rj.mjs → list.handler-BWsl4iYw.mjs} +4 -4
  53. package/dist/{list.handler-DdFGHkqt.mjs → list.handler-CLGQDuo5.mjs} +5 -5
  54. package/dist/{list.handler-BLkQKiV1.mjs → list.handler-Cc-V1TNz.mjs} +1 -1
  55. package/dist/{list.handler-ClPAPSWm.mjs → list.handler-DRe38pAj.mjs} +2 -2
  56. package/dist/{list.handler-BB-Dcm5B.mjs → list.handler-Do2tVOnu.mjs} +1 -1
  57. package/dist/{list.handler-Cbc9rlBx.mjs → list.handler-RtHhrTZ3.mjs} +1 -1
  58. package/dist/{listen-ksMVpdNa.mjs → listen-DZdSevsB.mjs} +2 -2
  59. package/dist/{listen.handler-DEJSBg8y.mjs → listen.handler-BccHe1jh.mjs} +2 -2
  60. package/dist/{logs-C-JxXsgc.mjs → logs-Bh_PBnu6.mjs} +3 -3
  61. package/dist/{logs.handler-BIegqc2p.mjs → logs.handler-DItDS1zw.mjs} +2 -2
  62. package/dist/{members.add.handler-D4ggN2Xi.mjs → members.add.handler-D3nQ_Ln6.mjs} +1 -1
  63. package/dist/{members.invite.handler-BYIt6Oib.mjs → members.invite.handler-rKhg5n_C.mjs} +1 -1
  64. package/dist/{members.list.handler-CvpeYKC4.mjs → members.list.handler-C9Yh469k.mjs} +1 -1
  65. package/dist/{members.remove.handler-C4GBUVYE.mjs → members.remove.handler-Dnrck-E6.mjs} +1 -1
  66. package/dist/{members.update.handler-TpM1oi0L.mjs → members.update.handler-qo5r6arJ.mjs} +1 -1
  67. package/dist/{normalize-path-CojS-CgQ-D4wSBHgG.mjs → normalize-path-CojS-CgQ-aOM0agxS.mjs} +1 -1
  68. package/dist/{org-DIGyb7XZ.mjs → org-DnES84sS.mjs} +15 -15
  69. package/dist/{orgs.create.handler-RIYhse_Q.mjs → orgs.create.handler-DF4eEL-2.mjs} +1 -1
  70. package/dist/{orgs.get.handler-BfOpbSom.mjs → orgs.get.handler-BmJnseQa.mjs} +1 -1
  71. package/dist/{orgs.list.handler-BMgj9yTD.mjs → orgs.list.handler-DDVvSbsT.mjs} +1 -1
  72. package/dist/{paused.handler-DAZ1EaLN.mjs → paused.handler-BLUchSMD.mjs} +1 -1
  73. package/dist/{projects-Cy6CH3fI.mjs → projects-Cv14bBGy.mjs} +4 -4
  74. package/dist/{projects-BndElPAx.mjs → projects-ZNcKwds2.mjs} +1 -1
  75. package/dist/{requirements.handler-C5vobjdJ.mjs → requirements.handler-BKFocUof.mjs} +5 -5
  76. package/dist/{resolve-cli-credentials-DytxgMwn.mjs → resolve-cli-credentials-DaMDaamj.mjs} +1 -1
  77. package/dist/{resolve-project-CNQtOWE4.mjs → resolve-project-Cj3MFnU0.mjs} +1 -1
  78. package/dist/{run-polling-BhOdFyh3.mjs → run-polling-3XOGl4hh.mjs} +3 -3
  79. package/dist/{run.handler-BpLmwF_a.mjs → run.handler-DZuUx0fi.mjs} +5 -5
  80. package/dist/{runs-DaSd4eXn.mjs → runs-BOo3j297.mjs} +2 -2
  81. package/dist/{cron-parser-Dw_cWzFu.mjs → schemas-D2zfmyC-.mjs} +279 -1
  82. package/dist/{skills-sync.handler-DOxudKmV.mjs → skills-sync.handler-09mDbx5q.mjs} +1 -1
  83. package/dist/{skills.command-DQc_qGAF.mjs → skills.command-B-MhRN3J.mjs} +4 -4
  84. package/dist/{source-analysis-BBg2E_6G-Ut7kYHOz.mjs → source-analysis-BBg2E_6G-wPP9mjQx.mjs} +3 -3
  85. package/dist/{src-0XVwHXNp.mjs → src-DNhUmpSl.mjs} +1 -1
  86. package/dist/{switch.handler-CCjMrRZN.mjs → switch.handler-BFGvj5c6.mjs} +2 -2
  87. package/dist/{sync-BdTQDZjP.mjs → sync-CZ3iUPTA.mjs} +2 -2
  88. package/dist/{sync.handler-DjY8nqbB.mjs → sync.handler-B1L8I9lF.mjs} +7 -7
  89. package/dist/{task-BRmL2lmw.mjs → task-BWuIKWh4.mjs} +103 -34
  90. package/dist/{task-target-build-DCV0UDaz.mjs → task-target-build-CTgl4L42.mjs} +42 -56
  91. package/dist/task-target-deploy-DeUyfi9H.mjs +4 -0
  92. package/dist/{task-target-deploy-CZBGNC0H-I-tvkGCC.mjs → task-target-deploy-dQYnMO8n-d2vdeqXH.mjs} +14 -16
  93. package/dist/task-target-deploy-runner.mjs +6 -6
  94. package/dist/{test-TTQXrhHm.mjs → test-Byq4hG3C.mjs} +2 -2
  95. package/dist/{test.handler-B7Ahe9ta.mjs → test.handler-BsrMMj5O.mjs} +9 -9
  96. package/dist/{test.handler-CkkplyX6.mjs → test.handler-CAsVgOpT.mjs} +1 -1
  97. package/dist/{tool.handler-DMfFZCRg.mjs → tool.handler-BHS5Z4J_.mjs} +8 -8
  98. package/dist/{trigger-artifacts-RizI57RC-DjhOsdOm.mjs → trigger-artifacts-BcRScRSp-C-JBJ6y8.mjs} +53 -119
  99. package/dist/trigger-manifest-C07EM-b2.mjs +43 -0
  100. package/dist/{upgrade-Cx-bUWUc.mjs → upgrade-bZVjVXnu.mjs} +2 -2
  101. package/dist/{upload.handler-_d2WZwxd.mjs → upload.handler-DXVx2u3A.mjs} +7 -7
  102. package/dist/{users.get.handler-DIooG7Wy.mjs → users.get.handler-DqD2ELK2.mjs} +1 -1
  103. package/dist/{users.list.handler-DdGW-DSg.mjs → users.list.handler-DZSPvpGF.mjs} +1 -1
  104. package/dist/{users.set-role.handler-Ek-kntLp.mjs → users.set-role.handler-73smNUVF.mjs} +1 -1
  105. package/dist/{utils-BMUWnz1P.mjs → utils-BaxDlCsW.mjs} +1 -1
  106. package/dist/{validate.handler-Cq2uJjXY.mjs → validate.handler-CmfcMX0t.mjs} +5 -5
  107. package/dist/{workflow-build-C8AiYxqp.mjs → workflow-build-Bi1Aacc5.mjs} +22 -22
  108. package/dist/{workflow-build-manifest-BKKW9D05.mjs → workflow-build-manifest-1sC52TIG.mjs} +4 -4
  109. package/dist/{workflow-bundler-BzHk73PM-WI31RJjH.mjs → workflow-bundler-BzHk73PM-xQwAF08W.mjs} +2 -2
  110. package/dist/{workflows-K6zetcqI.mjs → workflows-C_C13Zr0.mjs} +19 -19
  111. package/dist/{writer-B-SpZ0G2-CLh7sXRd.mjs → writer-byNNUjRm-B-on1n6c.mjs} +23 -32
  112. package/package.json +12 -12
  113. package/dist/credential-requirements-Ob-7H-0F.mjs +0 -250
  114. package/dist/schemas-BxFPUGWT.mjs +0 -281
  115. package/dist/task-target-deploy-DmpCWE3u.mjs +0 -4
  116. package/dist/trigger-manifest-DxdCjGz_.mjs +0 -29
  117. /package/dist/{agent-bundle-package-DWV6B_5q-FPT0bJaA.mjs → agent-bundle-package-DWV6B_5q-B-qzc3zC.mjs} +0 -0
  118. /package/dist/{agent-manifest-tIsqF2OP.mjs → agent-manifest-Pg0aURo7.mjs} +0 -0
  119. /package/dist/{browser-BpJ8ut9z.mjs → browser-Dvv5OQrt.mjs} +0 -0
  120. /package/dist/{clear.handler-C_pXAeBG.mjs → clear.handler-BdR56Cok.mjs} +0 -0
  121. /package/dist/{concurrency-gXn9Rw8x-BTlfau8D.mjs → concurrency-gXn9Rw8x-CnBnF2cg.mjs} +0 -0
  122. /package/dist/{credential-schema-mismatch-z74ud-YZ.mjs → credential-schema-mismatch-kfGeiSB1.mjs} +0 -0
  123. /package/dist/{declared-credential-requirements-D6KT-r-e.mjs → declared-credential-requirements-B6h4WRv4.mjs} +0 -0
  124. /package/dist/{diff-utils-B0ED-Igv.mjs → diff-utils-CXKNQUXO.mjs} +0 -0
  125. /package/dist/{layout-P1v-Gssz.mjs → layout-B95Tku8F.mjs} +0 -0
  126. /package/dist/{logs.handler-DyRoevtO.mjs → logs.handler-Bs1DVMaO.mjs} +0 -0
  127. /package/dist/{metadata-layout-Bv-B0nHj-B1c5giJ7.mjs → metadata-layout-Bv-B0nHj-CO8mjjSl.mjs} +0 -0
  128. /package/dist/{oxc-B3KI3rf_-Cvx4Z-4H.mjs → oxc-B3KI3rf_-B9omBIuN.mjs} +0 -0
  129. /package/dist/{read-credential-keys-77a91T8M-B0eiobOd.mjs → read-credential-keys-77a91T8M-aLuQvlIq.mjs} +0 -0
  130. /package/dist/{register.handler-BXeh5mdb.mjs → register.handler-C_NqMLir.mjs} +0 -0
  131. /package/dist/{rolldown-runtime-twds-ZHy-8uqgIurC.mjs → rolldown-runtime-twds-ZHy-RuJszab7.mjs} +0 -0
  132. /package/dist/{run-polling-DARidqo-.mjs → run-polling-DKWPGLyF.mjs} +0 -0
  133. /package/dist/{schema-BjH_e4Fo.mjs → schema-DFJiNWyd.mjs} +0 -0
  134. /package/dist/{schema-display-NVEl_DFY.mjs → schema-display-XrRCdFL0.mjs} +0 -0
  135. /package/dist/{skill-installer-BBgN2tzW.mjs → skill-installer-Cm9hF6OB.mjs} +0 -0
  136. /package/dist/{skills.handler-Do9I3dQS.mjs → skills.handler-KEUkV5NH.mjs} +0 -0
  137. /package/dist/{source-analysis-Cs0CTBQk.mjs → source-analysis-z2RSZw6X.mjs} +0 -0
  138. /package/dist/{spinner-progress-Bx-fYItP.mjs → spinner-progress-BtEIJRX4.mjs} +0 -0
  139. /package/dist/{status.handler-BsVtDW_V.mjs → status.handler-CW-EFhy3.mjs} +0 -0
  140. /package/dist/{types-BMBuhHhW.mjs → types-D1cVpE7_.mjs} +0 -0
  141. /package/dist/{upgrade.handler-5qSzPC7D.mjs → upgrade.handler-C7KvNL0x.mjs} +0 -0
  142. /package/dist/{upload-BbcMkyVl.mjs → upload-CE4H5R1h.mjs} +0 -0
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { a as ui, j as throwReportedCliExit } from "./keystroke.mjs";
4
- import { n as credentials } from "./dist-CIInPRGh.mjs";
5
- import { i as requireClient } from "./context-BydAGTiB.mjs";
4
+ import { n as credentials } from "./dist-DuJjDZIf.mjs";
5
+ import { i as requireClient } from "./context-B2cQ-Nt3.mjs";
6
6
  import { select } from "@clack/prompts";
7
7
  //#region src/commands/org/switch.handler.ts
8
8
  async function handleOrgSwitch(_options, ctx) {
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { t as createTypedCommand } from "./commander-C5qcOo8m.mjs";
3
+ import { t as createTypedCommand } from "./commander-9Kro0Dl3.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/commands/sync/sync.command.ts
6
6
  /**
@@ -32,7 +32,7 @@ function createSyncCommand() {
32
32
  description: "Sync local workflows with Keystroke",
33
33
  schema: SyncOptionsSchema,
34
34
  optionsConfig: SYNC_OPTIONS_CONFIG,
35
- loadHandler: async () => (await import("./sync.handler-DjY8nqbB.mjs")).handleSync
35
+ loadHandler: async () => (await import("./sync.handler-B1L8I9lF.mjs")).handleSync
36
36
  });
37
37
  }
38
38
  //#endregion
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { P as logger, a as ui, j as throwReportedCliExit, l as isLocalMode, y as toErrorMessage } from "./keystroke.mjs";
4
- import { i as projects } from "./dist-CIInPRGh.mjs";
5
- import { a as validateApiKey, i as requireClient } from "./context-BydAGTiB.mjs";
6
- import { n as deployFromDir } from "./dist-Cx0RV8s7.mjs";
7
- import { t as requireWorkflowsDir } from "./resolve-project-CNQtOWE4.mjs";
8
- import { a as runWorkflowBuild, n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-C8AiYxqp.mjs";
9
- import { t as createBuildProgress } from "./build-progress-AR8xow4_.mjs";
10
- import { t as createDeployProgress } from "./deploy-progress-DK87VKJ-.mjs";
4
+ import { i as projects } from "./dist-DuJjDZIf.mjs";
5
+ import { a as validateApiKey, i as requireClient } from "./context-B2cQ-Nt3.mjs";
6
+ import { n as deployFromDir } from "./dist-Br4m3sFZ.mjs";
7
+ import { t as requireWorkflowsDir } from "./resolve-project-Cj3MFnU0.mjs";
8
+ import { a as runWorkflowBuild, n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-Bi1Aacc5.mjs";
9
+ import { t as createBuildProgress } from "./build-progress-nYa14iBP.mjs";
10
+ import { t as createDeployProgress } from "./deploy-progress-Dlp9aBDW.mjs";
11
11
  //#region src/commands/sync/sync.handler.ts
12
12
  async function handleSync(options, ctx) {
13
13
  try {
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as __exportAll } from "./chunk-CH6r78ws.mjs";
4
- import { a as descriptionString, c as optionalDescriptionString, d as trimmedNonEmptyStringUnbounded, i as createStructuralSchema, n as credentialSetProxyConfigSchema, o as idNoSpacesString, s as jsonSchemaObject, t as CredentialSetManifestSchema, u as trimmedNonEmptyString } from "./schemas-BxFPUGWT.mjs";
5
- import { t as parseCronExpression } from "./cron-parser-Dw_cWzFu.mjs";
4
+ import { a as descriptionString, c as optionalDescriptionString, d as trimmedNonEmptyStringUnbounded, f as parseCronExpression, i as createStructuralSchema, n as credentialSetProxyConfigSchema, o as idNoSpacesString, s as jsonSchemaObject, t as CredentialSetManifestSchema, u as trimmedNonEmptyString } from "./schemas-D2zfmyC-.mjs";
6
5
  import { z } from "zod";
6
+ import "node:crypto";
7
7
  const SHA256HashSchema = z.string().length(64, "Must be 64 characters").regex(/^[a-f0-9]{64}$/i, "Must be hexadecimal").transform((value) => value);
8
8
  const JsonSchemaSchema = z.record(z.string(), z.unknown());
9
9
  z.object({
@@ -215,6 +215,11 @@ const ResolvedCredentialSetSchema = z.object({
215
215
  proxy: credentialSetProxyConfigSchema.optional(),
216
216
  /** When true, resolved values are passed raw (no ref-token proxy) for this set. */
217
217
  needsRawSecret: z.boolean().optional(),
218
+ /** When true, this requirement uses a registered dynamic resolver phase. */
219
+ needsDynamicResolution: z.boolean().optional(),
220
+ /** Cache TTL in milliseconds for registered dynamic resolver output.
221
+ * `0` or absence means no cache hint. */
222
+ dynamicResolutionCacheMs: z.number().int().nonnegative().optional(),
218
223
  /** Policy when a step throws `CredentialRevokedError` against this credential set. */
219
224
  onCredentialRevoked: OnCredentialRevokedSchema.optional(),
220
225
  /** Persistence-layer schema fingerprint stamped at build time. The
@@ -242,6 +247,10 @@ z.object({
242
247
  /** Optional subset of the stored-shape keys. */
243
248
  optionalStoredCredentialKeys: z.array(CredentialRefTokenKeyNameSchema).optional(),
244
249
  schemaFingerprint: z.string().optional(),
250
+ needsDynamicResolution: z.boolean().optional(),
251
+ /** Cache TTL in milliseconds for registered dynamic resolver output.
252
+ * `0` or absence means no cache hint. */
253
+ dynamicResolutionCacheMs: z.number().int().nonnegative().optional(),
245
254
  /** Policy when a step throws `CredentialRevokedError` against this credential set. */
246
255
  onCredentialRevoked: OnCredentialRevokedSchema.optional(),
247
256
  proxy: credentialSetProxyConfigSchema.optional(),
@@ -264,6 +273,11 @@ const CredentialRequirementEntrySchema = z.object({
264
273
  schemaFingerprint: z.string().optional(),
265
274
  proxy: credentialSetProxyConfigSchema.optional(),
266
275
  needsRawSecret: z.boolean().optional(),
276
+ /** When true, this requirement uses a registered dynamic resolver phase. */
277
+ needsDynamicResolution: z.boolean().optional(),
278
+ /** Cache TTL in milliseconds for registered dynamic resolver output.
279
+ * `0` or absence means no cache hint. */
280
+ dynamicResolutionCacheMs: z.number().int().nonnegative().optional(),
267
281
  /** Policy when a step throws `CredentialRevokedError` against this credential set. */
268
282
  onCredentialRevoked: OnCredentialRevokedSchema.optional(),
269
283
  requiredOAuthScopes: z.array(z.string()).optional()
@@ -278,16 +292,11 @@ z.object({
278
292
  required: z.array(z.string()),
279
293
  byStep: z.record(z.string(), z.array(CredentialRequirementEntrySchema))
280
294
  });
281
- const TriggerCallbackNameSchema = z.enum([
282
- "filter",
283
- "idempotencyKey",
284
- "verify",
285
- "callback"
286
- ]);
295
+ const TriggerPollExportNameSchema = z.enum(["poll"]);
287
296
  const TriggerCredentialRequirementEntrySchema = CredentialRequirementEntrySchema;
288
297
  const TriggerCredentialRequirementsSchema = z.object({
289
298
  required: z.array(z.string()),
290
- byCallback: z.partialRecord(TriggerCallbackNameSchema, z.array(TriggerCredentialRequirementEntrySchema))
299
+ byPollExport: z.partialRecord(TriggerPollExportNameSchema, z.array(TriggerCredentialRequirementEntrySchema))
291
300
  });
292
301
  const ExecutionIdentityPolicySchema = z.object({ subjectMode: z.enum(["never", "requiredWhenUserProvidedCredential"]) });
293
302
  z.object({
@@ -319,26 +328,45 @@ const TriggerTypeSchema = z.enum([
319
328
  * can index-filter app-source rows during provider-webhook fanout.
320
329
  */
321
330
  const TriggerSourceSchema = z.enum(["custom", "app"]);
322
- const WebhookMethodSchema = z.enum([
331
+ z.enum([
323
332
  "GET",
324
333
  "POST",
325
334
  "PUT",
326
335
  "PATCH"
327
336
  ]);
328
- const TriggerCallbackBundleUploadSchema = z.object({
337
+ const TriggerPollBundleUploadSchema = z.object({
329
338
  code: z.string(),
330
339
  hash: z.string(),
331
340
  size: z.number()
332
341
  });
333
- const TriggerCallbackExportsSchema = z.object({
334
- verify: z.string().min(1).optional(),
335
- filter: z.string().min(1).optional(),
336
- idempotencyKey: z.string().min(1).optional(),
337
- callback: z.string().min(1).optional()
338
- });
339
- const TransformCallbackExportsSchema = z.object({ transform: z.string().min(1).optional() });
342
+ /** Declarative idempotency-key spec resolved server-side (no VM). */
343
+ const IdempotencyKeyConfigSchema = z.union([
344
+ z.object({
345
+ from: z.literal("payload"),
346
+ strategy: z.literal("hash")
347
+ }),
348
+ z.object({
349
+ from: z.literal("payload"),
350
+ path: z.string().trim().min(1)
351
+ }),
352
+ z.object({
353
+ from: z.literal("header"),
354
+ strategy: z.literal("hash")
355
+ }),
356
+ z.object({
357
+ from: z.literal("header"),
358
+ name: z.string().trim().min(1)
359
+ })
360
+ ]);
361
+ const TriggerPollExportsSchema = z.object({ poll: z.string().min(1).optional() });
340
362
  z.object({
341
363
  id: z.string(),
364
+ /**
365
+ * Authored trigger name from `xxxTrigger({ name: ... })`. Used by the workflow
366
+ * VM to look up the bound `transform`. Follows the `authoredWorkflowId` /
367
+ * `authoredAgentId` naming convention.
368
+ */
369
+ authoredTriggerId: z.string().min(1),
342
370
  type: TriggerTypeSchema,
343
371
  /**
344
372
  * Source-of-truth discriminator for webhook triggers. `'custom'` means
@@ -346,20 +374,56 @@ z.object({
346
374
  * a Keystroke-managed provider app. Undefined for non-webhook triggers.
347
375
  */
348
376
  triggerSource: TriggerSourceSchema.optional(),
377
+ /**
378
+ * Root-trigger name for `.narrow()` lineage so narrowed custom webhooks share
379
+ * the same `webhookSecretHash`/`webhookPublicId`. Equals `authoredTriggerId`
380
+ * for root triggers. Omitted for non-webhook triggers.
381
+ */
382
+ webhookAuthGroupKey: z.string().min(1).optional(),
349
383
  enabled: z.boolean(),
350
- path: z.string().optional(),
351
- method: WebhookMethodSchema.optional(),
352
384
  schedule: z.string().optional(),
353
385
  timezone: z.string().optional(),
354
386
  config: z.record(z.string(), z.unknown()).optional(),
355
387
  requiredCredentials: TriggerCredentialRequirementsSchema.optional(),
356
- storagePath: z.string().min(1).optional(),
357
- callbackBundle: TriggerCallbackBundleUploadSchema.optional(),
358
- callbackExports: TriggerCallbackExportsSchema.optional(),
359
- transformCallbackBundle: TriggerCallbackBundleUploadSchema.optional(),
360
- transformCallbackExports: TransformCallbackExportsSchema.optional()
388
+ /** Hex-encoded sha-256 of the Keystroke-issued webhook secret. */
389
+ webhookSecretHash: z.string().min(1).optional(),
390
+ /** Public id surfaced in the webhook URL (header-mode auth). */
391
+ webhookPublicId: z.string().min(1).optional(),
392
+ /** JSON Schema applied at the server before any VM hop. Built from a
393
+ * pure Zod schema declared on the trigger primitive. */
394
+ filterSchema: JsonSchemaSchema.optional(),
395
+ /** Declarative idempotency-key resolver. Webhook-only. */
396
+ idempotencyConfig: IdempotencyKeyConfigSchema.optional(),
397
+ pollStoragePath: z.string().min(1).optional(),
398
+ pollBundle: TriggerPollBundleUploadSchema.optional(),
399
+ pollExports: TriggerPollExportsSchema.optional()
361
400
  });
362
401
  //#endregion
402
+ //#region ../../packages/core/src/trigger/shared/idempotency-config.ts
403
+ const trimmedString = z.string().trim().min(1);
404
+ const payloadHashSchema = z.object({
405
+ from: z.literal("payload"),
406
+ strategy: z.literal("hash")
407
+ });
408
+ const payloadPathSchema = z.object({
409
+ from: z.literal("payload"),
410
+ path: trimmedString
411
+ });
412
+ const headerHashSchema = z.object({
413
+ from: z.literal("header"),
414
+ strategy: z.literal("hash")
415
+ });
416
+ const headerNameSchema = z.object({
417
+ from: z.literal("header"),
418
+ name: trimmedString
419
+ });
420
+ const idempotencyKeyConfigSchema = z.union([
421
+ payloadHashSchema,
422
+ payloadPathSchema,
423
+ headerHashSchema,
424
+ headerNameSchema
425
+ ]);
426
+ //#endregion
363
427
  //#region ../../packages/core/src/trigger/schemas.ts
364
428
  const credentialSetInstanceSchema = createStructuralSchema([
365
429
  "id",
@@ -367,19 +431,24 @@ const credentialSetInstanceSchema = createStructuralSchema([
367
431
  "connections"
368
432
  ], "a CredentialSet instance");
369
433
  const TriggerModeDefaultSchema = z.enum(["managed", "subscribable"]);
370
- const TriggerCallbackPresenceSchema = z.object({
371
- filter: z.boolean(),
372
- idempotencyKey: z.boolean(),
434
+ const TriggerRuntimeDescriptorSchema = z.object({
435
+ /**
436
+ * True when this trigger bundles a `poll` export executed inside a
437
+ * microsandbox VM at trigger time. Polling-only — webhook/cron always
438
+ * leave this undefined. Replaces the legacy `callbacks: { poll, ... }`
439
+ * descriptor (the other callbacks are gone now that filter/idempotency/
440
+ * verify/transform are declarative or run in the workflow VM).
441
+ */
373
442
  poll: z.boolean().optional(),
374
- transformAllowed: z.boolean(),
375
- verify: z.boolean().optional()
443
+ filterSchema: jsonSchemaObject.optional(),
444
+ /** Webhook-only declarative idempotency-key resolver. */
445
+ idempotencyConfig: idempotencyKeyConfigSchema.optional()
376
446
  });
377
- const TriggerRuntimeDescriptorSchema = z.object({ callbacks: TriggerCallbackPresenceSchema });
378
447
  const TriggerManifestSchema = z.object({
379
448
  manifestVersion: z.literal(1),
380
449
  type: z.literal("trigger"),
381
450
  triggerType: TriggerTypeSchema,
382
- name: trimmedNonEmptyString("Trigger name"),
451
+ id: trimmedNonEmptyString("Trigger id"),
383
452
  description: descriptionString("Trigger description"),
384
453
  enabled: z.boolean(),
385
454
  modeDefault: TriggerModeDefaultSchema,
@@ -393,7 +462,7 @@ z.object({
393
462
  enabled: z.boolean().default(true),
394
463
  executionIdentityPolicy: ExecutionIdentityPolicySchema.optional(),
395
464
  modeDefault: TriggerModeDefaultSchema.default("managed"),
396
- name: trimmedNonEmptyString("Trigger name")
465
+ id: trimmedNonEmptyString("Trigger id")
397
466
  });
398
467
  //#endregion
399
468
  //#region ../../packages/core/src/task/schemas.ts
@@ -408,7 +477,7 @@ const agentInstanceSchema = createStructuralSchema([
408
477
  ], "an Agent instance");
409
478
  const triggerInstanceSchema = createStructuralSchema([
410
479
  "isTrigger",
411
- "name",
480
+ "id",
412
481
  "description",
413
482
  "enabled"
414
483
  ], "a trigger instance (use cronTrigger(), pollingTrigger(), or webhookTrigger())");
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { r as getKeystrokeProjectPath } from "./paths-JzzFkXQA-CEipIeVl.mjs";
4
- import "./dist-CIInPRGh.mjs";
5
- import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-B0eiobOd.mjs";
4
+ import "./dist-DuJjDZIf.mjs";
5
+ import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-aLuQvlIq.mjs";
6
6
  import path from "node:path";
7
7
  import { mkdir, writeFile } from "node:fs/promises";
8
8
  import { pathToFileURL } from "node:url";
@@ -111,7 +111,7 @@ async function buildTaskTargetFile(options) {
111
111
  return builtTasks;
112
112
  }
113
113
  async function bundleTaskTargetModule(options) {
114
- const [{ rolldown }, { createEnvAccessPlugin, formatEnvAccessError }] = await Promise.all([import("rolldown"), import("./detect-env-access-CwkOYeYM-CNTyUzme.mjs").then((n) => n.n).then((n) => n.n)]);
114
+ const [{ rolldown }, { createEnvAccessPlugin, formatEnvAccessError }] = await Promise.all([import("rolldown"), import("./detect-env-access-CwkOYeYM-D4aTZv4R.mjs").then((n) => n.n).then((n) => n.n)]);
115
115
  const entryId = "\0virtual:task-target-entry";
116
116
  const trackedDependencies = /* @__PURE__ */ new Set();
117
117
  const envViolations = [];
@@ -218,7 +218,7 @@ async function attachTaskTargetTriggers(options) {
218
218
  options.artifact.triggers.push(...buildTaskTriggerArtifactsWithoutBundles(options.entry.taskMetadata.triggers, options.artifact.task.taskId, options.artifact.task.taskName));
219
219
  return [];
220
220
  }
221
- const { buildTriggerArtifacts } = await import("./trigger-artifacts-RizI57RC-DjhOsdOm.mjs").then((n) => n.n);
221
+ const { buildTriggerArtifacts } = await import("./trigger-artifacts-BcRScRSp-C-JBJ6y8.mjs").then((n) => n.n);
222
222
  const triggerResult = await buildTriggerArtifacts(options.entry.taskMetadata.triggers, options.artifact.task.taskId, options.artifact.task.taskName, options.projectRoot, {
223
223
  workflowExportName: options.entry.source.localExportName,
224
224
  workflowFilePath: options.entry.runtimeBundlePath
@@ -237,57 +237,56 @@ async function prepareTaskTargetOutput(options) {
237
237
  }
238
238
  function hasTriggerRuntimeCallbacks(triggers) {
239
239
  return triggers.some((trigger) => {
240
- const callbacks = trigger.triggerManifest.runtime.callbacks;
241
- return trigger.hasTransform || Boolean(callbacks?.verify || callbacks?.filter || callbacks?.idempotencyKey || callbacks?.poll);
240
+ const runtime = trigger.triggerManifest.runtime;
241
+ return trigger.hasTransform || runtime.poll === true;
242
242
  });
243
243
  }
244
244
  function buildTaskTriggerArtifactsWithoutBundles(loadedTriggers, workflowId, workflowName) {
245
245
  return loadedTriggers.map((loaded) => {
246
246
  const triggerManifest = loaded.triggerManifest;
247
- const triggerName = triggerManifest.name;
247
+ const authoredTriggerId = triggerManifest.id;
248
248
  const triggerType = triggerManifest.triggerType;
249
249
  const runtime = triggerManifest.runtime;
250
- const callbacks = runtime.callbacks;
250
+ const hasPollBundle = "poll" in runtime && runtime.poll === true;
251
251
  const webhookSource = "source" in runtime && runtime.source && typeof runtime.source === "object" ? runtime.source : null;
252
252
  const projectedConfig = webhookSource ? webhookSource.type === "app" ? { source: {
253
253
  type: "app",
254
254
  appRef: webhookSource.appRef
255
- } } : { source: {
256
- type: "custom",
257
- method: webhookSource.method,
258
- path: webhookSource.path,
259
- ...webhookSource.response ? { response: webhookSource.response } : {}
260
- } } : void 0;
255
+ } } : { source: { type: "custom" } } : void 0;
256
+ const filterSchema = "filterSchema" in runtime && runtime.filterSchema && typeof runtime.filterSchema === "object" ? runtime.filterSchema : void 0;
257
+ const idempotencyConfig = "idempotencyConfig" in runtime && runtime.idempotencyConfig ? runtime.idempotencyConfig : void 0;
258
+ const lineage = triggerManifest.lineage;
259
+ const webhookAuthGroupKey = triggerType === "webhook" ? (lineage && lineage.length > 0 ? lineage[0] : void 0) ?? authoredTriggerId : void 0;
261
260
  return {
262
- triggerId: generateTaskTriggerId(workflowId, triggerName),
261
+ triggerId: generateTaskTriggerId(workflowId, authoredTriggerId),
263
262
  triggerType,
264
- triggerName,
263
+ authoredTriggerId,
265
264
  workflowId,
266
265
  workflowName,
267
266
  sourceFilePath: loaded.sourceFilePath,
268
267
  hasTransform: loaded.hasTransform,
269
- hasFilter: loaded.hasFilter,
270
268
  enabled: triggerManifest.enabled,
269
+ ...filterSchema ? { filterSchema } : {},
270
+ ...idempotencyConfig ? { idempotencyConfig } : {},
271
271
  ..."schedule" in runtime && typeof runtime.schedule === "string" ? { schedule: runtime.schedule } : {},
272
272
  ..."timezone" in runtime && typeof runtime.timezone === "string" ? { timezone: runtime.timezone } : {},
273
273
  ...webhookSource ? { triggerSource: webhookSource.type } : {},
274
- ...webhookSource?.type === "custom" && webhookSource.path ? { path: webhookSource.path } : {},
275
- ...webhookSource?.type === "custom" && webhookSource.method ? { method: webhookSource.method } : {},
274
+ ...webhookAuthGroupKey ? { webhookAuthGroupKey } : {},
276
275
  ...projectedConfig ? { config: projectedConfig } : {},
277
276
  ...triggerManifest.modeDefault ? { modeDefault: triggerManifest.modeDefault } : {},
278
- ...triggerManifest.credentialSets ? { requiredCredentials: buildTaskTriggerCredentialRequirements(triggerManifest.credentialSets, callbacks) } : {},
277
+ ...triggerManifest.credentialSets ? { requiredCredentials: buildTaskTriggerCredentialRequirements(triggerManifest.credentialSets, hasPollBundle) } : {},
279
278
  ...loaded.staticPayload !== void 0 ? { staticPayload: loaded.staticPayload } : {},
280
279
  trigger: loaded.triggerManifest
281
280
  };
282
281
  });
283
282
  }
284
- function generateTaskTriggerId(workflowId, triggerName) {
285
- return createHash("sha256").update(`${workflowId}::${triggerName}`).digest("hex").slice(0, 16);
283
+ function generateTaskTriggerId(workflowId, authoredTriggerId) {
284
+ return createHash("sha256").update(`${workflowId}::${authoredTriggerId}`).digest("hex").slice(0, 16);
286
285
  }
287
- function buildTaskTriggerCredentialRequirements(credentialSets, callbacks) {
286
+ function buildTaskTriggerCredentialRequirements(credentialSets, hasPollBundle) {
288
287
  if (!credentialSets || credentialSets.length === 0) return {
289
288
  required: [],
290
- byCallback: {}
289
+ byPollExport: {}
291
290
  };
292
291
  const entries = credentialSets.map((credentialSet) => {
293
292
  const optionalCredentialKeys = readOptionalJsonSchemaKeysFromSchemaObject(credentialSet.auth);
@@ -302,12 +301,11 @@ function buildTaskTriggerCredentialRequirements(credentialSets, callbacks) {
302
301
  };
303
302
  });
304
303
  const requiredIds = credentialSets.map((credentialSet) => credentialSet.id);
305
- const byCallback = {};
306
- if (callbacks?.poll) byCallback.callback = entries;
307
- if (callbacks?.verify) byCallback.verify = entries;
304
+ const byPollExport = {};
305
+ if (hasPollBundle) byPollExport.poll = entries;
308
306
  return {
309
307
  required: requiredIds,
310
- byCallback
308
+ byPollExport
311
309
  };
312
310
  }
313
311
  function createPreparedTaskTarget(artifact, triggers) {
@@ -321,7 +319,7 @@ function createPreparedTaskTarget(artifact, triggers) {
321
319
  };
322
320
  }
323
321
  async function tryParseTaskBuildManifest(manifest) {
324
- const { TaskBuildManifestSchema } = await import("./task-BRmL2lmw.mjs").then((n) => n.t);
322
+ const { TaskBuildManifestSchema } = await import("./task-BWuIKWh4.mjs").then((n) => n.t);
325
323
  const result = TaskBuildManifestSchema.safeParse(manifest);
326
324
  return result.success ? result.data : null;
327
325
  }
@@ -353,7 +351,6 @@ function discoverTaskTriggers(task, importedModule, sourceFilePath) {
353
351
  triggerExportName: findTriggerExportName(entry, trigger, importedModule),
354
352
  sourceFilePath,
355
353
  hasTransform: isBound && typeof entry.transform === "function",
356
- hasFilter: isBound ? typeof entry.filter === "function" : typeof trigger.filter === "function",
357
354
  staticPayload,
358
355
  triggerIndex
359
356
  });
@@ -367,7 +364,7 @@ function isTaskLike(value) {
367
364
  return isRecord(value) && typeof value.toManifest === "function";
368
365
  }
369
366
  function isTriggerLike(value) {
370
- return isRecord(value) && typeof value.name === "string" && typeof value.toManifest === "function";
367
+ return isRecord(value) && typeof value.id === "string" && typeof value.toManifest === "function";
371
368
  }
372
369
  function isBoundTriggerLike(value) {
373
370
  return isRecord(value) && value.isBoundTrigger === true && isTriggerLike(value.trigger);
@@ -379,47 +376,36 @@ function findTriggerExportName(entry, trigger, importedModule) {
379
376
  for (const [name, value] of Object.entries(importedModule)) {
380
377
  if (value === entry || value === trigger) return name;
381
378
  if (isBoundTriggerLike(value) && (value === entry || value.trigger === trigger)) return name;
382
- if (isTriggerLike(value) && value.name === trigger.name) return name;
379
+ if (isTriggerLike(value) && value.id === trigger.id) return name;
383
380
  }
384
381
  }
385
382
  function toTriggerUploadData(trigger) {
386
- const callbackExports = trigger.callbackExports;
387
- const transformCallbackExports = trigger.transformCallbackExports;
383
+ const pollExports = trigger.pollExports;
388
384
  return {
389
385
  id: trigger.triggerId,
386
+ authoredTriggerId: trigger.authoredTriggerId,
390
387
  type: trigger.triggerType,
391
388
  ...trigger.triggerSource ? { triggerSource: trigger.triggerSource } : {},
389
+ ...trigger.webhookAuthGroupKey ? { webhookAuthGroupKey: trigger.webhookAuthGroupKey } : {},
392
390
  enabled: trigger.enabled,
393
- ...trigger.path ? { path: trigger.path } : {},
394
- ...trigger.method ? { method: trigger.method } : {},
395
391
  ...trigger.schedule ? { schedule: trigger.schedule } : {},
396
392
  ...trigger.timezone ? { timezone: trigger.timezone } : {},
397
393
  ...trigger.config ? { config: trigger.config } : {},
398
394
  ...trigger.requiredCredentials ? { requiredCredentials: trigger.requiredCredentials } : {},
399
- ...callbackExports ? { callbackExports } : {},
400
- ...trigger.callbackBundle ? { callbackBundle: {
401
- code: trigger.callbackBundle.code,
402
- hash: trigger.callbackBundle.hash ?? createHash("sha256").update(trigger.callbackBundle.code).digest("hex"),
403
- size: trigger.callbackBundle.size
404
- } } : {},
405
- ...transformCallbackExports ? { transformCallbackExports } : {},
406
- ...trigger.transformCallbackBundle ? { transformCallbackBundle: {
407
- code: trigger.transformCallbackBundle.code,
408
- hash: trigger.transformCallbackBundle.hash ?? createHash("sha256").update(trigger.transformCallbackBundle.code).digest("hex"),
409
- size: trigger.transformCallbackBundle.size
395
+ ...trigger.filterSchema ? { filterSchema: trigger.filterSchema } : {},
396
+ ...trigger.idempotencyConfig ? { idempotencyConfig: trigger.idempotencyConfig } : {},
397
+ ...pollExports ? { pollExports } : {},
398
+ ...trigger.pollBundle ? { pollBundle: {
399
+ code: trigger.pollBundle.code,
400
+ hash: trigger.pollBundle.hash ?? createHash("sha256").update(trigger.pollBundle.code).digest("hex"),
401
+ size: trigger.pollBundle.size
410
402
  } } : {}
411
403
  };
412
404
  }
413
405
  function releaseTriggerBundleCode(triggers) {
414
- for (const trigger of triggers) {
415
- if (trigger.callbackBundle) {
416
- trigger.callbackBundle.code = "";
417
- trigger.callbackBundle.released = true;
418
- }
419
- if (trigger.transformCallbackBundle) {
420
- trigger.transformCallbackBundle.code = "";
421
- trigger.transformCallbackBundle.released = true;
422
- }
406
+ for (const trigger of triggers) if (trigger.pollBundle) {
407
+ trigger.pollBundle.code = "";
408
+ trigger.pollBundle.released = true;
423
409
  }
424
410
  }
425
411
  function releaseBuiltTaskTargets(builtTasks) {
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { n as deployTaskTargets } from "./task-target-deploy-dQYnMO8n-d2vdeqXH.mjs";
4
+ export { deployTaskTargets };
@@ -50,18 +50,18 @@ function normalizeWorkflowManifest(manifest) {
50
50
  function normalizeTrigger(trigger) {
51
51
  return sortObjectKeysDeep({
52
52
  id: trigger.id,
53
+ authoredTriggerId: trigger.authoredTriggerId,
53
54
  type: trigger.type,
54
55
  enabled: trigger.enabled,
55
- ...trigger.path !== void 0 ? { path: trigger.path } : {},
56
- ...trigger.method !== void 0 ? { method: trigger.method } : {},
56
+ ...trigger.webhookAuthGroupKey !== void 0 ? { webhookAuthGroupKey: trigger.webhookAuthGroupKey } : {},
57
57
  ...trigger.schedule !== void 0 ? { schedule: trigger.schedule } : {},
58
58
  ...trigger.timezone !== void 0 ? { timezone: trigger.timezone } : {},
59
59
  ...trigger.config !== void 0 ? { config: trigger.config } : {},
60
60
  ...trigger.requiredCredentials !== void 0 ? { requiredCredentials: trigger.requiredCredentials } : {},
61
- ...trigger.callbackBundle ? { callbackBundleHash: trigger.callbackBundle.hash } : {},
62
- ...trigger.callbackExports !== void 0 ? { callbackExports: trigger.callbackExports } : {},
63
- ...trigger.transformCallbackBundle ? { transformCallbackBundleHash: trigger.transformCallbackBundle.hash } : {},
64
- ...trigger.transformCallbackExports !== void 0 ? { transformCallbackExports: trigger.transformCallbackExports } : {}
61
+ ...trigger.filterSchema !== void 0 ? { filterSchema: trigger.filterSchema } : {},
62
+ ...trigger.idempotencyConfig !== void 0 ? { idempotencyConfig: trigger.idempotencyConfig } : {},
63
+ ...trigger.pollBundle ? { pollBundleHash: trigger.pollBundle.hash } : {},
64
+ ...trigger.pollExports !== void 0 ? { pollExports: trigger.pollExports } : {}
65
65
  });
66
66
  }
67
67
  function normalizeAgentManifest(manifest) {
@@ -100,7 +100,7 @@ function buildCanonicalProjectSnapshotPayload(params) {
100
100
  };
101
101
  }
102
102
  //#endregion
103
- //#region ../../packages/workflow-deploy/dist/task-target-deploy-CZBGNC0H.mjs
103
+ //#region ../../packages/workflow-deploy/dist/task-target-deploy-dQYnMO8n.mjs
104
104
  function computeProjectSnapshotHash(params) {
105
105
  const hex = createHash("sha256").update(JSON.stringify(buildCanonicalProjectSnapshotPayload({
106
106
  workflows: params.workflows,
@@ -149,7 +149,7 @@ async function deployTaskTargets(options) {
149
149
  tasksToDeploy
150
150
  }) });
151
151
  } finally {
152
- releasePreparedTaskCallbackBundleCode(tasksToDeploy);
152
+ releasePreparedTaskPollBundleCode(tasksToDeploy);
153
153
  }
154
154
  const taskResults = deployResult.tasks ?? [];
155
155
  onDeployProgressEvent?.({
@@ -159,7 +159,7 @@ async function deployTaskTargets(options) {
159
159
  failed: taskResults.filter((item) => item.status === "failed").length,
160
160
  elapsedMs: Date.now() - registerStartedAt
161
161
  });
162
- return finalizeTaskTargetResult([...skippedTasks, ...taskResults.map(mapTaskResultStatus)], startedAt);
162
+ return finalizeTaskTargetResult([...skippedTasks, ...taskResults.map(mapTaskResultStatus)], startedAt, deployResult.newWebhookCredentials);
163
163
  }
164
164
  function buildTaskTargetDeployRequest(params) {
165
165
  return {
@@ -251,19 +251,17 @@ function mapTaskResultStatus(result) {
251
251
  taskId: result.taskId
252
252
  };
253
253
  }
254
- function releasePreparedTaskCallbackBundleCode(preparedTasks) {
255
- for (const task of preparedTasks) for (const trigger of task.triggers) {
256
- if (trigger.callbackBundle) trigger.callbackBundle.code = "";
257
- if (trigger.transformCallbackBundle) trigger.transformCallbackBundle.code = "";
258
- }
254
+ function releasePreparedTaskPollBundleCode(preparedTasks) {
255
+ for (const task of preparedTasks) for (const trigger of task.triggers) if (trigger.pollBundle) trigger.pollBundle.code = "";
259
256
  }
260
- function finalizeTaskTargetResult(tasks, startedAt) {
257
+ function finalizeTaskTargetResult(tasks, startedAt, newWebhookCredentials) {
261
258
  return {
262
259
  success: tasks.every((task) => task.status !== "failed"),
263
260
  workflows: [],
264
261
  agents: [],
265
262
  tasks,
266
- totalTime: Date.now() - startedAt
263
+ totalTime: Date.now() - startedAt,
264
+ ...newWebhookCredentials ? { newWebhookCredentials } : {}
267
265
  };
268
266
  }
269
267
  //#endregion
@@ -2,9 +2,9 @@
2
2
 
3
3
  import { r as getKeystrokeProjectPath } from "./paths-JzzFkXQA-CEipIeVl.mjs";
4
4
  import "./default-urls-BoSm4s9C.mjs";
5
- import "./dist-CIInPRGh.mjs";
5
+ import "./dist-DuJjDZIf.mjs";
6
6
  import { n as findProjectRoot, t as assertWorkflowProjectRoot } from "./project-config-DudGRFPO.mjs";
7
- import { t as resolveCliCredentials } from "./resolve-cli-credentials-DytxgMwn.mjs";
7
+ import { t as resolveCliCredentials } from "./resolve-cli-credentials-DaMDaamj.mjs";
8
8
  import path from "node:path";
9
9
  import { mkdir, readFile, writeFile } from "node:fs/promises";
10
10
  import { spawnSync } from "node:child_process";
@@ -119,7 +119,7 @@ function restartStage(options, projectRoot, stage) {
119
119
  }
120
120
  async function runBuildPhase(options, projectRoot) {
121
121
  const projectConfig = await assertWorkflowProjectRoot(projectRoot);
122
- const { buildTaskTargetEntries } = await import("./task-target-build-DCV0UDaz.mjs");
122
+ const { buildTaskTargetEntries } = await import("./task-target-build-CTgl4L42.mjs");
123
123
  await writeBuildDescriptor(projectRoot, {
124
124
  projectRoot,
125
125
  projectConfig,
@@ -132,7 +132,7 @@ async function runBuildPhase(options, projectRoot) {
132
132
  }
133
133
  async function runPreparePhase(projectRoot) {
134
134
  const buildDescriptor = await readBuildDescriptor(projectRoot);
135
- const { prepareTaskTargetBuiltTasks } = await import("./task-target-build-DCV0UDaz.mjs");
135
+ const { prepareTaskTargetBuiltTasks } = await import("./task-target-build-CTgl4L42.mjs");
136
136
  const prepareResult = await prepareTaskTargetBuiltTasks({
137
137
  builtTasks: buildDescriptor.builtTasks,
138
138
  projectRoot
@@ -163,11 +163,11 @@ async function resolveDeployAuthOptions(options) {
163
163
  }
164
164
  async function runDeployPhase(options, projectRoot) {
165
165
  const descriptor = await readDescriptor(projectRoot);
166
- const { createDeployClient } = await import("./deploy-BPDUTKZD.mjs");
166
+ const { createDeployClient } = await import("./deploy-BURTx92e.mjs");
167
167
  const client = createDeployClient(await resolveDeployAuthOptions(options));
168
168
  const auth = await client.public.auth.validate();
169
169
  if (auth.organizationId !== descriptor.projectConfig.organizationId) throw new Error(`Project organization mismatch: config=${descriptor.projectConfig.organizationId} auth=${auth.organizationId}`);
170
- const { deployTaskTargets } = await import("./task-target-deploy-DmpCWE3u.mjs");
170
+ const { deployTaskTargets } = await import("./task-target-deploy-DeUyfi9H.mjs");
171
171
  const result = await deployTaskTargets({
172
172
  preparedTasks: descriptor.preparedTasks,
173
173
  client,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { a as ui } from "./keystroke.mjs";
4
4
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
5
- import { t as createTypedCommand } from "./commander-C5qcOo8m.mjs";
5
+ import { t as createTypedCommand } from "./commander-9Kro0Dl3.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/test/test.command.ts
8
8
  const TestOptionsSchema = JsonOptionSchema;
@@ -63,7 +63,7 @@ function createTestCommand() {
63
63
  description: "Agent tool name from the built manifest",
64
64
  key: "toolName"
65
65
  },
66
- loadHandler: async () => (await import("./tool.handler-DMfFZCRg.mjs")).handleTestTool
66
+ loadHandler: async () => (await import("./tool.handler-BHS5Z4J_.mjs")).handleTestTool
67
67
  })]
68
68
  });
69
69
  cmd.enablePositionalOptions();