@keystrokehq/cli 0.0.7 → 0.0.9

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 (144) hide show
  1. package/dist/{accept.handler-CudtwdDV.mjs → accept.handler-PpOOUemk.mjs} +3 -3
  2. package/dist/{admin-ByNq50FH.mjs → admin-Dga-_lDF.mjs} +10 -10
  3. package/dist/{agents-DbekD_Vx.mjs → agents-DII_JbCa.mjs} +8 -8
  4. package/dist/{api-keys-kvwq9Jb4.mjs → api-keys-DeTqHzI4.mjs} +6 -6
  5. package/dist/{auth-D2vYD0E8.mjs → auth-C0fuZ0_P.mjs} +6 -6
  6. package/dist/{auth.handler-BFnFI2fQ.mjs → auth.handler-BLU7LnW2.mjs} +2 -3
  7. package/dist/{build-agents-DfbiMZ_e-in-if4_C.mjs → build-agents-DfbiMZ_e-CgnKa9A6.mjs} +5 -5
  8. package/dist/{build-metadata-zidV9Cai-BAS0FMxT.mjs → build-metadata-zidV9Cai-Bq37kBOM.mjs} +7 -7
  9. package/dist/{build-progress-Cn2j1LqF.mjs → build-progress-Mzsk4RKr.mjs} +2 -2
  10. package/dist/{build-tasks-O1jYtlv1-B2Dm4hFj.mjs → build-tasks-O1jYtlv1-Bkw0w1r3.mjs} +3 -3
  11. package/dist/{build-workflows-3fdvdHHf-Bg5XV7hM.mjs → build-workflows-3fdvdHHf-BDTy9QgT.mjs} +8 -8
  12. package/dist/{build.handler-BzQRnkC3.mjs → build.handler-D15NjKkT.mjs} +5 -5
  13. package/dist/{clear.handler-U9n_V1IM.mjs → clear.handler-DgIXlYTs.mjs} +2 -2
  14. package/dist/{commander-pxSPDCZ4.mjs → commander-B6_tg5_w.mjs} +12 -12
  15. package/dist/{connect-B_uc0wqI.mjs → connect-D9PVABIW.mjs} +3 -3
  16. package/dist/{connect.handler-VJgm2ZQG.mjs → connect.handler-BmOVKYSN.mjs} +5 -5
  17. package/dist/{context-D-YKFNxL.mjs → context-DT06adrn.mjs} +3 -4
  18. package/dist/{create.handler-d9nfcKfp.mjs → create.handler-BWaULspg.mjs} +3 -3
  19. package/dist/{credential-requirements-DjDFthio.mjs → credential-requirements-BCW8aQWS.mjs} +3 -3
  20. package/dist/{credential-schema-mismatch-B-wwbCvw.mjs → credential-schema-mismatch-C-4kBAFw.mjs} +1 -1
  21. package/dist/{credentials-CL_PCuhM.mjs → credentials-BW-v9xVQ.mjs} +7 -7
  22. package/dist/{credentials-DHlK_O4L.mjs → credentials-DAQfKqn0.mjs} +7 -7
  23. package/dist/{current-deployment-workflow-BRYuEubW.mjs → current-deployment-workflow-j5DlVkb2.mjs} +6 -6
  24. package/dist/{current.handler-vJG2Dohx.mjs → current.handler-CUVgMZ-O.mjs} +1 -1
  25. package/dist/{declared-credential-requirements-Bwlb-KZE.mjs → declared-credential-requirements-BtlcsEVn.mjs} +1 -1
  26. package/dist/{delete.handler-RsYTkJLV.mjs → delete.handler-CzW7Rm5M.mjs} +2 -2
  27. package/dist/{deploy-B_bkUlIL.mjs → deploy-B8TYutOi.mjs} +1 -1
  28. package/dist/{deploy-BE3F62Mz.mjs → deploy-BU04ehfM.mjs} +2 -2
  29. package/dist/{deploy-progress-CZ2rPlOj.mjs → deploy-progress-BkpuGfGt.mjs} +1 -1
  30. package/dist/{deploy.handler-Dlyd8Zqs.mjs → deploy.handler-CbYYyVOg.mjs} +17 -18
  31. package/dist/{detect-env-access-CwkOYeYM-CsrSOCcj.mjs → detect-env-access-CwkOYeYM-D4o8gRZs.mjs} +1 -1
  32. package/dist/{diff-utils-DWNcRA8g.mjs → diff-utils-D1jYu6ny.mjs} +1 -1
  33. package/dist/{diff.handler-CH0xP8pk.mjs → diff.handler-Dtjc7Y4O.mjs} +5 -5
  34. package/dist/{dist-C2Dq_nx3.mjs → dist-DvO0q6Fo.mjs} +12 -12
  35. package/dist/{env.handler-BkCO2vjR.mjs → env.handler-DbxnyBYf.mjs} +8 -8
  36. package/dist/{error-boundary-B9PgBkv8.mjs → error-boundary-D6KTx1HL.mjs} +3 -3
  37. package/dist/{file-metadata-CdFXMMIw.mjs → file-metadata-BvGM-B2v.mjs} +1 -1
  38. package/dist/{iam-command-utils-CNC8JfZ5.mjs → iam-command-utils-B5G-N3Hx.mjs} +2 -2
  39. package/dist/{import-module-DDPnzlJ1-CYJD2n2b.mjs → import-module-DDPnzlJ1-BIBSgOhK.mjs} +8 -8
  40. package/dist/{init-BXwx0QA4.mjs → init-BITuemMR.mjs} +2 -2
  41. package/dist/{init.handler-Cs5YXM5Z.mjs → init.handler-HsCte00n.mjs} +5 -5
  42. package/dist/{inspect.handler-DRMKUJsh.mjs → inspect.handler-Buv68Vm9.mjs} +5 -5
  43. package/dist/{integration-catalog-ClP7YGqM.mjs → integration-catalog-4T5Yad-n.mjs} +3 -3
  44. package/dist/{integrations-CoBzLNEe.mjs → integrations-Dib-OfdN.mjs} +5 -5
  45. package/dist/{invites-BmNy1RHp.mjs → invites-CJtInw9Q.mjs} +5 -5
  46. package/dist/{invites.list.handler-ICP2V3p4.mjs → invites.list.handler-CBtOq8W4.mjs} +3 -3
  47. package/dist/{invites.resend.handler-BGaTTMka.mjs → invites.resend.handler-D-E2NxY1.mjs} +3 -3
  48. package/dist/{invites.revoke.handler-DBwF5Lxc.mjs → invites.revoke.handler-DFTxBZcm.mjs} +3 -3
  49. package/dist/keystroke.mjs +276 -28
  50. package/dist/{list-enrichment-CTqx0Rk_.mjs → list-enrichment-Bou_BqL0.mjs} +2 -2
  51. package/dist/{list.handler-Vv9KmhB9.mjs → list.handler-BFjtABDv.mjs} +4 -4
  52. package/dist/{list.handler-B2bN8NsQ.mjs → list.handler-BHmG2GY8.mjs} +1 -1
  53. package/dist/{list.handler-DO0PnyWP.mjs → list.handler-BWGnEnM8.mjs} +3 -3
  54. package/dist/{list.handler-BXTGPazY.mjs → list.handler-Bi28Gsee.mjs} +5 -5
  55. package/dist/{list.handler-b4qYQtwn.mjs → list.handler-CXT-te4G.mjs} +3 -3
  56. package/dist/{list.handler-BjihvxHn.mjs → list.handler-fGaEAMUZ.mjs} +7 -8
  57. package/dist/{list.handler-rnyzLJDy.mjs → list.handler-gjAg1aM6.mjs} +3 -3
  58. package/dist/{listen-DVV1fp5c.mjs → listen-_GvXm7iI.mjs} +3 -3
  59. package/dist/{listen.handler-CyFpUSOu.mjs → listen.handler-BKfcYsfv.mjs} +4 -4
  60. package/dist/{logs-BRticZ00.mjs → logs-De7ITMv1.mjs} +3 -3
  61. package/dist/{logs.handler-ddQu_MXN.mjs → logs.handler-CB2FtCvP.mjs} +1 -1
  62. package/dist/{logs.handler-CsnG7Bb0.mjs → logs.handler-COtiXeqn.mjs} +4 -4
  63. package/dist/{members.add.handler-CH0RhbgE.mjs → members.add.handler-BXldE_ec.mjs} +3 -3
  64. package/dist/{members.invite.handler-CYB7RQ9A.mjs → members.invite.handler-CWFsj5Gz.mjs} +3 -3
  65. package/dist/{members.list.handler-DrDtmMei.mjs → members.list.handler-DFg6VThp.mjs} +3 -3
  66. package/dist/{members.remove.handler-uGoZt2Me.mjs → members.remove.handler-lStbH_4M.mjs} +3 -3
  67. package/dist/{members.update.handler-DXCWkzOc.mjs → members.update.handler-CzcdsbtG.mjs} +3 -3
  68. package/dist/{normalize-path-CojS-CgQ-BKRFUzWW.mjs → normalize-path-CojS-CgQ-D_WTiHKw.mjs} +1 -1
  69. package/dist/{org-GdHhuSNk.mjs → org-DLY5V_Uw.mjs} +16 -16
  70. package/dist/{orgs.create.handler-5AaPgTZV.mjs → orgs.create.handler-CiYGUXBZ.mjs} +3 -3
  71. package/dist/{orgs.get.handler-BTfopRVm.mjs → orgs.get.handler-BgFsnpme.mjs} +3 -3
  72. package/dist/{orgs.list.handler-DKJgs6x0.mjs → orgs.list.handler-BuyOTc8K.mjs} +3 -3
  73. package/dist/{output-q4KljAhu.mjs → output-BCDZb3Gy.mjs} +1 -1
  74. package/dist/{paused.handler-BUifVTyQ.mjs → paused.handler-BX_71fzx.mjs} +3 -3
  75. package/dist/{projects-Bdl6-Z8l.mjs → projects-DN7dX6nN.mjs} +2 -2
  76. package/dist/{projects-BjnCG-pc.mjs → projects-lN-4ZR9Q.mjs} +5 -5
  77. package/dist/{register.handler-WzpvVXHx.mjs → register.handler-BA6p-TmU.mjs} +2 -2
  78. package/dist/{requirements.handler-coArDE8x.mjs → requirements.handler-DI4mgZ2l.mjs} +7 -8
  79. package/dist/{resolve-project-DgfftdPm.mjs → resolve-project-BREjwFKO.mjs} +2 -2
  80. package/dist/{try-deploy.handler-YDOirkk1.mjs → run-polling-BLT-uS2e.mjs} +87 -187
  81. package/dist/run.handler-B5NodlNi.mjs +136 -0
  82. package/dist/{runs-2BdRfql3.mjs → runs-BfgL8BR_.mjs} +4 -4
  83. package/dist/{schemas-DsvCZfF0.mjs → schemas-9FmGqrPT.mjs} +2 -2
  84. package/dist/{skills-sync.handler-CwwnzDiO.mjs → skills-sync.handler-CuuCiUGT.mjs} +3 -3
  85. package/dist/{skills.command-C2NXqc5h.mjs → skills.command-z-sOQpkN.mjs} +4 -4
  86. package/dist/{source-analysis-DEEChuND-eixwPnPP.mjs → source-analysis-DEEChuND-Csu0oOlw.mjs} +3 -3
  87. package/dist/{spinner-progress-bvKd1jXc.mjs → spinner-progress-BB2EHL-l.mjs} +1 -1
  88. package/dist/{src-CBL7AJ0H.mjs → src--fCtOxNX.mjs} +1 -1
  89. package/dist/{status.handler-D9GBEmao.mjs → status.handler-Bh0MtNu1.mjs} +1 -1
  90. package/dist/{switch.handler-DV0wiJP8.mjs → switch.handler-CSOycIbR.mjs} +2 -2
  91. package/dist/{sync-D098Vbv2.mjs → sync-CIibxcUe.mjs} +2 -2
  92. package/dist/{sync.handler-BocldSG_.mjs → sync.handler-D2cY3bia.mjs} +7 -8
  93. package/dist/{task-DsrXI6XH.mjs → task-1qz1XNq7.mjs} +4 -4
  94. package/dist/{task-target-build-Di8gflnj.mjs → task-target-build-D5IrHqSl.mjs} +4 -4
  95. package/dist/{task-target-deploy-Bf5i3ox1-BU16VPsE.mjs → task-target-deploy-Bf5i3ox1-2K0hAwzk.mjs} +1 -1
  96. package/dist/{task-target-deploy-BzGRNDiv.mjs → task-target-deploy-Bzfftyru.mjs} +1 -1
  97. package/dist/task-target-deploy-runner.mjs +5 -5
  98. package/dist/{test-BZt0Duhs.mjs → test-Dsx4cRnE.mjs} +14 -14
  99. package/dist/{test.handler-iCUotLes.mjs → test.handler-Duqj67Qi.mjs} +1 -1
  100. package/dist/{trigger-artifacts-B3OCTX9K-Cgt51KLh.mjs → trigger-artifacts-B3OCTX9K-ME6IVdUB.mjs} +4 -4
  101. package/dist/{trigger-manifest-CXD9I7Rb.mjs → trigger-manifest-B3Gq1739.mjs} +1 -1
  102. package/dist/try-deploy.handler-Lq69ON02.mjs +169 -0
  103. package/dist/{upgrade-Bdez-X6_.mjs → upgrade-DQrHCNR8.mjs} +2 -2
  104. package/dist/{upgrade.handler-DhH_Cuza.mjs → upgrade.handler-B0NxKINA.mjs} +1 -1
  105. package/dist/{upload.handler-BmqZAPxZ.mjs → upload.handler-BMJiaCzk.mjs} +10 -11
  106. package/dist/{users.get.handler-uoEgEwI-.mjs → users.get.handler-eJtaB-2G.mjs} +3 -3
  107. package/dist/{users.list.handler-DLWPOIHD.mjs → users.list.handler-DE6s08i0.mjs} +3 -3
  108. package/dist/{users.set-role.handler-BCJhTsyb.mjs → users.set-role.handler-BVNvaKKS.mjs} +3 -3
  109. package/dist/{utils-DlYHjGg9.mjs → utils-C_qCshBA.mjs} +2 -2
  110. package/dist/{validate.handler-ROzzUI85.mjs → validate.handler-BUga7Umz.mjs} +5 -5
  111. package/dist/{workflow-build-DD8TLlPu.mjs → workflow-build-Be6RMTb2.mjs} +21 -21
  112. package/dist/{workflow-bundler-BzHk73PM-Bt-poFqX.mjs → workflow-bundler-BzHk73PM-tt09RbIA.mjs} +2 -2
  113. package/dist/{workflow-manifest-CAW5FlX0.mjs → workflow-manifest-BfL74mjp.mjs} +4 -4
  114. package/dist/{workflows-DypSJM0t.mjs → workflows-Cdo-AgjV.mjs} +111 -16
  115. package/dist/{writer-CtvttJdP-DrJruQgR.mjs → writer-CtvttJdP-DZJ0mZCm.mjs} +5 -5
  116. package/package.json +5 -5
  117. package/dist/env-YTZGKGIu.mjs +0 -139
  118. package/dist/{agent-bundle-package-DWV6B_5q-FPT0bJaA.mjs → agent-bundle-package-DWV6B_5q-B-qzc3zC.mjs} +0 -0
  119. package/dist/{agent-manifest-Bfa3DBgc.mjs → agent-manifest-sJFbH5H8.mjs} +0 -0
  120. package/dist/{browser-gddMccBQ.mjs → browser-CvuyMLhI.mjs} +0 -0
  121. package/dist/{clear-cache.handler-BDV-a3ku.mjs → clear-cache.handler-BuSx_ZDn.mjs} +0 -0
  122. package/dist/{clear.handler-Dh6QoVO1.mjs → clear.handler-BC6pz0x-.mjs} +0 -0
  123. package/dist/{common-BrVAdUyD.mjs → common-B3bLe3Mk.mjs} +0 -0
  124. package/dist/{concurrency-gXn9Rw8x-BTlfau8D.mjs → concurrency-gXn9Rw8x-CnBnF2cg.mjs} +0 -0
  125. package/dist/{constants-DHdiT5hc.mjs → constants-BUgIAu2a.mjs} +0 -0
  126. package/dist/{credential-env-map-C8P7uTD-.mjs → credential-env-map-C23GV6LN.mjs} +0 -0
  127. package/dist/{get-intrinsic-ZMBBjBEr.mjs → get-intrinsic-BjqiGgLt.mjs} +0 -0
  128. package/dist/{hosted-action-dispatcher-registry-TOVzMhUR.mjs → hosted-action-dispatcher-registry-BWEtn13o.mjs} +0 -0
  129. package/dist/{layout-B95Tku8F.mjs → layout-CXkZEsXI.mjs} +0 -0
  130. package/dist/{metadata-layout-C6ed-9dl-aBmqqvD5.mjs → metadata-layout-C6ed-9dl-C6Bylr_z.mjs} +0 -0
  131. package/dist/{options-BhB9qA5P.mjs → options-CIVqkc8V.mjs} +0 -0
  132. package/dist/{oxc-B3KI3rf_-BeimiQ2U.mjs → oxc-B3KI3rf_-ghZc3xZ5.mjs} +0 -0
  133. package/dist/{project-config-opj6DsPF.mjs → project-config-D9eFU8Jk.mjs} +1 -1
  134. /package/dist/{read-credential-keys-77a91T8M-aLuQvlIq.mjs → read-credential-keys-77a91T8M-B0eiobOd.mjs} +0 -0
  135. /package/dist/{rolldown-runtime-twds-ZHy-8uqgIurC.mjs → rolldown-runtime-twds-ZHy-RuJszab7.mjs} +0 -0
  136. /package/dist/{run-polling-CF9OeLWl.mjs → run-polling-DDpkIvwy.mjs} +0 -0
  137. /package/dist/{schedule-BRN4hzQM.mjs → schedule-BWAI6qLx.mjs} +0 -0
  138. /package/dist/{schema-kbMHVnhm.mjs → schema-B-Wgo4rJ.mjs} +0 -0
  139. /package/dist/{schema-Di90TXoX.mjs → schema-BgGlAs8a.mjs} +0 -0
  140. /package/dist/{schema-display-D4A1gQEM.mjs → schema-display-DuWBmkwk.mjs} +0 -0
  141. /package/dist/{skills.handler-BTUhxO37.mjs → skills.handler-BQ3Qfej3.mjs} +0 -0
  142. /package/dist/{source-analysis-BspLa3E5.mjs → source-analysis-CHkWMC40.mjs} +0 -0
  143. /package/dist/{sync-keystroke-agent-skills-CBMQ4fh_.mjs → sync-keystroke-agent-skills-D746f2W_.mjs} +0 -0
  144. /package/dist/{upload-B8fiWveA.mjs → upload-C1qFWMm0.mjs} +0 -0
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-q4KljAhu.mjs";
4
- import { t as createTypedCommand } from "./commander-pxSPDCZ4.mjs";
5
- import { r as SHA256HashSchema, t as JsonSchemaSchema } from "./common-BrVAdUyD.mjs";
6
- import { l as TriggerUploadDataSchema } from "./credential-requirements-DjDFthio.mjs";
7
- import { a as FlowGraphSchema, i as WorkflowManifestSchema } from "./workflow-manifest-CAW5FlX0.mjs";
8
- import { n as WorkflowsRunOptionsSchema, t as RUN_OPTIONS_CONFIG } from "./options-BhB9qA5P.mjs";
3
+ import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BCDZb3Gy.mjs";
4
+ import { t as createTypedCommand } from "./commander-B6_tg5_w.mjs";
5
+ import { r as SHA256HashSchema, t as JsonSchemaSchema } from "./common-B3bLe3Mk.mjs";
6
+ import { l as TriggerUploadDataSchema } from "./credential-requirements-BCW8aQWS.mjs";
7
+ import { a as FlowGraphSchema, i as WorkflowManifestSchema } from "./workflow-manifest-BfL74mjp.mjs";
8
+ import { n as WorkflowsRunOptionsSchema, t as RUN_OPTIONS_CONFIG } from "./options-CIVqkc8V.mjs";
9
9
  import { z } from "zod";
10
10
  const GitProviderSchema = z.enum(["codestorage", "github"]);
11
11
  const GitTreeEntryTypeSchema = z.enum(["file", "directory"]);
@@ -321,7 +321,7 @@ function createWorkflowsBuildCommand() {
321
321
  description: "Build workflows locally",
322
322
  schema: WorkflowsBuildOptionsSchema,
323
323
  optionsConfig: BUILD_OPTIONS_CONFIG,
324
- loadHandler: async () => (await import("./build.handler-BzQRnkC3.mjs")).handleWorkflowsBuild
324
+ loadHandler: async () => (await import("./build.handler-D15NjKkT.mjs")).handleWorkflowsBuild
325
325
  });
326
326
  }
327
327
  //#endregion
@@ -348,7 +348,7 @@ function createWorkflowsDiffCommand() {
348
348
  description: "Authored workflow id (preferred) or workflow name",
349
349
  key: "workflow"
350
350
  },
351
- loadHandler: async () => (await import("./diff.handler-CH0xP8pk.mjs")).handleWorkflowsDiff
351
+ loadHandler: async () => (await import("./diff.handler-Dtjc7Y4O.mjs")).handleWorkflowsDiff
352
352
  });
353
353
  }
354
354
  //#endregion
@@ -381,7 +381,7 @@ function createWorkflowsEnvCommand() {
381
381
  key: "workflow",
382
382
  required: false
383
383
  },
384
- loadHandler: async () => (await import("./env.handler-BkCO2vjR.mjs")).handleWorkflowsEnv
384
+ loadHandler: async () => (await import("./env.handler-DbxnyBYf.mjs")).handleWorkflowsEnv
385
385
  });
386
386
  }
387
387
  //#endregion
@@ -413,7 +413,7 @@ function createWorkflowsInspectCommand() {
413
413
  description: "Authored workflow id (preferred) or workflow name",
414
414
  key: "workflow"
415
415
  },
416
- loadHandler: async () => (await import("./inspect.handler-DRMKUJsh.mjs")).handleWorkflowsInspect
416
+ loadHandler: async () => (await import("./inspect.handler-Buv68Vm9.mjs")).handleWorkflowsInspect
417
417
  });
418
418
  }
419
419
  //#endregion
@@ -509,7 +509,7 @@ function createWorkflowsLogsCommand() {
509
509
  key: "workflow",
510
510
  required: false
511
511
  },
512
- loadHandler: async () => (await import("./logs.handler-CsnG7Bb0.mjs")).handleWorkflowsLogs
512
+ loadHandler: async () => (await import("./logs.handler-COtiXeqn.mjs")).handleWorkflowsLogs
513
513
  });
514
514
  }
515
515
  //#endregion
@@ -700,7 +700,101 @@ function createWorkflowsPausedCommand() {
700
700
  key: "workflow",
701
701
  required: false
702
702
  },
703
- loadHandler: async () => (await import("./paused.handler-BUifVTyQ.mjs")).handleWorkflowsPaused
703
+ loadHandler: async () => (await import("./paused.handler-BX_71fzx.mjs")).handleWorkflowsPaused
704
+ });
705
+ }
706
+ //#endregion
707
+ //#region src/commands/workflows/run.command.ts
708
+ const WorkflowsRunCommandOptionsSchema = JsonOptionSchema.extend({
709
+ workflow: z.string().min(1),
710
+ payload: z.string().optional(),
711
+ projectId: z.uuid().optional(),
712
+ input: z.string().optional(),
713
+ inputFile: z.string().optional(),
714
+ workflowGlobals: z.string().optional(),
715
+ workflowGlobalsFile: z.string().optional(),
716
+ path: z.string().optional(),
717
+ wait: z.boolean().default(false),
718
+ follow: z.boolean().default(false),
719
+ timeout: z.coerce.number().int().min(1).default(120),
720
+ verbose: z.boolean().default(false)
721
+ }).superRefine((value, ctx) => {
722
+ const inputSources = [
723
+ value.payload ? "positional payload" : null,
724
+ value.input ? "--input" : null,
725
+ value.inputFile ? "--input-file" : null
726
+ ].filter((source) => source !== null);
727
+ if (inputSources.length > 1) ctx.addIssue({
728
+ code: z.ZodIssueCode.custom,
729
+ path: ["input"],
730
+ message: `Use only one workflow input source: ${inputSources.join(", ")}.`
731
+ });
732
+ if (value.workflowGlobals && value.workflowGlobalsFile) ctx.addIssue({
733
+ code: z.ZodIssueCode.custom,
734
+ path: ["workflowGlobals"],
735
+ message: "Use either --workflow-globals or --workflow-globals-file, not both."
736
+ });
737
+ });
738
+ const WORKFLOWS_RUN_OPTIONS_CONFIG = {
739
+ ...JSON_OPTION_CONFIG,
740
+ projectId: {
741
+ flag: "--project-id <uuid>",
742
+ description: "Project override. If omitted, read keystroke.config.ts from --path/CWD"
743
+ },
744
+ input: {
745
+ flag: "--input <json>",
746
+ description: "Workflow input as inline JSON object"
747
+ },
748
+ inputFile: {
749
+ flag: "--input-file <path>",
750
+ description: "Path to a JSON file containing workflow input"
751
+ },
752
+ workflowGlobals: {
753
+ flag: "--workflow-globals <json>",
754
+ description: "Workflow globals as inline JSON object"
755
+ },
756
+ workflowGlobalsFile: {
757
+ flag: "--workflow-globals-file <path>",
758
+ description: "Path to a JSON file containing workflow globals"
759
+ },
760
+ path: {
761
+ flag: "--path <dir>",
762
+ description: "Path to project root (directory containing keystroke.config.ts); auto-discovered from CWD if omitted"
763
+ },
764
+ wait: {
765
+ flag: "--wait",
766
+ description: "Poll until the run reaches a terminal status"
767
+ },
768
+ follow: {
769
+ flag: "--follow",
770
+ description: "Poll logs/events while waiting; implies --wait"
771
+ },
772
+ timeout: {
773
+ flag: "--timeout <seconds>",
774
+ description: "Max seconds to wait for workflow completion (default: 120)"
775
+ },
776
+ verbose: {
777
+ flag: "--verbose",
778
+ description: "Show detailed runtime events and logs while waiting"
779
+ }
780
+ };
781
+ function createWorkflowsRunCommand() {
782
+ return createTypedCommand({
783
+ name: "run",
784
+ description: "Run a workflow from the current deployment",
785
+ schema: WorkflowsRunCommandOptionsSchema,
786
+ optionsConfig: WORKFLOWS_RUN_OPTIONS_CONFIG,
787
+ arguments: [{
788
+ name: "workflow",
789
+ description: "Authored workflow id",
790
+ key: "workflow"
791
+ }, {
792
+ name: "payload",
793
+ description: "Workflow input as inline JSON object",
794
+ key: "payload",
795
+ required: false
796
+ }],
797
+ loadHandler: async () => (await import("./run.handler-B5NodlNi.mjs")).handleWorkflowsRun
704
798
  });
705
799
  }
706
800
  //#endregion
@@ -716,7 +810,7 @@ function createWorkflowsTryDeployCommand() {
716
810
  description: "Authored workflow id (preferred) or workflow name. Multiple workflows with the same name run sequentially.",
717
811
  key: "workflow"
718
812
  },
719
- loadHandler: async () => (await import("./try-deploy.handler-YDOirkk1.mjs").then((n) => n.n)).handleWorkflowsTryDeploy
813
+ loadHandler: async () => (await import("./try-deploy.handler-Lq69ON02.mjs").then((n) => n.n)).handleWorkflowsTryDeploy
720
814
  });
721
815
  }
722
816
  //#endregion
@@ -754,7 +848,7 @@ function createWorkflowsValidateCommand() {
754
848
  key: "workflow",
755
849
  required: false
756
850
  },
757
- loadHandler: async () => (await import("./validate.handler-ROzzUI85.mjs")).handleWorkflowsValidate
851
+ loadHandler: async () => (await import("./validate.handler-BUga7Umz.mjs")).handleWorkflowsValidate
758
852
  });
759
853
  }
760
854
  //#endregion
@@ -773,16 +867,17 @@ function createWorkflowsCommand() {
773
867
  description: "Manage, run, inspect, and debug workflows",
774
868
  schema: WorkflowsOptionsSchema,
775
869
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
776
- loadHandler: async () => (await import("./list.handler-BXTGPazY.mjs")).handleWorkflowsList,
870
+ loadHandler: async () => (await import("./list.handler-Bi28Gsee.mjs")).handleWorkflowsList,
777
871
  subcommands: [
778
872
  createTypedCommand({
779
873
  name: "list",
780
874
  description: "List all workflows in the project",
781
875
  schema: WorkflowsOptionsSchema,
782
876
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
783
- loadHandler: async () => (await import("./list.handler-BXTGPazY.mjs")).handleWorkflowsList
877
+ loadHandler: async () => (await import("./list.handler-Bi28Gsee.mjs")).handleWorkflowsList
784
878
  }),
785
879
  createWorkflowsBuildCommand(),
880
+ createWorkflowsRunCommand(),
786
881
  createWorkflowsTryDeployCommand(),
787
882
  createWorkflowsInspectCommand(),
788
883
  createWorkflowsValidateCommand(),
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as __exportAll } from "./chunk-CH6r78ws.mjs";
4
- import { f as getTriggersDir, n as BUILD_OUTPUT_DIR_NAME, p as getWorkflowArtifactPaths, t as BUILD_DIR_NAME } from "./layout-B95Tku8F.mjs";
5
- import { t as TriggerBuildManifestSchema } from "./trigger-manifest-CXD9I7Rb.mjs";
6
- import { t as __exportAll$1 } from "./rolldown-runtime-twds-ZHy-8uqgIurC.mjs";
7
- import { s as sha256String } from "./metadata-layout-C6ed-9dl-aBmqqvD5.mjs";
8
- import { t as runWithConcurrency } from "./concurrency-gXn9Rw8x-BTlfau8D.mjs";
4
+ import { f as getTriggersDir, n as BUILD_OUTPUT_DIR_NAME, p as getWorkflowArtifactPaths, t as BUILD_DIR_NAME } from "./layout-CXkZEsXI.mjs";
5
+ import { t as TriggerBuildManifestSchema } from "./trigger-manifest-B3Gq1739.mjs";
6
+ import { t as __exportAll$1 } from "./rolldown-runtime-twds-ZHy-RuJszab7.mjs";
7
+ import { s as sha256String } from "./metadata-layout-C6ed-9dl-C6Bylr_z.mjs";
8
+ import { t as runWithConcurrency } from "./concurrency-gXn9Rw8x-CnBnF2cg.mjs";
9
9
  import { access, mkdir, readdir, rm, stat, writeFile } from "node:fs/promises";
10
10
  import path from "node:path";
11
11
  import { createHash } from "node:crypto";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keystrokehq/cli",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "private": false,
5
5
  "description": "Command-line interface for creating, managing, and deploying Keystroke automations.",
6
6
  "type": "module",
@@ -33,7 +33,7 @@
33
33
  "rolldown": "1.0.0-rc.17",
34
34
  "tsx": "^4.21.0",
35
35
  "zod": "^4.3.6",
36
- "@keystrokehq/skills": "0.0.1"
36
+ "@keystrokehq/skills": "0.0.2"
37
37
  },
38
38
  "devDependencies": {
39
39
  "tsdown": "0.21.10",
@@ -43,13 +43,13 @@
43
43
  "@keystroke/local-memory": "0.0.0",
44
44
  "@keystroke/project-config": "0.0.1",
45
45
  "@keystroke/shared-types": "0.0.1",
46
- "@keystroke/test-utils": "0.0.0",
47
- "@keystroke/utils": "0.0.0",
48
46
  "@keystroke/typescript-config": "0.0.0",
47
+ "@keystroke/utils": "0.0.0",
49
48
  "@keystroke/workflow-builder": "0.0.2",
50
49
  "@keystrokehq/core": "0.0.4",
51
50
  "@keystroke/workflow-deploy": "0.0.1",
52
- "@keystroke/workflow-sdk": "0.0.0"
51
+ "@keystroke/workflow-sdk": "0.0.0",
52
+ "@keystroke/test-utils": "0.0.0"
53
53
  },
54
54
  "keywords": [
55
55
  "automation",
@@ -1,139 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { n as DEFAULT_CLI_WEB_URL, t as DEFAULT_CLI_SERVER_URL } from "./default-urls-BS4twrsS.mjs";
4
- import { existsSync, writeFileSync } from "node:fs";
5
- import path from "node:path";
6
- import { z } from "zod";
7
- import { fileURLToPath } from "node:url";
8
- import { config } from "dotenv";
9
- //#region ../../packages/env-utils/dist/index.mjs
10
- const __filename = fileURLToPath(import.meta.url);
11
- const __dirname = path.dirname(__filename);
12
- function findMonorepoRoot() {
13
- let currentDir = __dirname;
14
- while (currentDir !== "/") {
15
- const turboPath = path.join(currentDir, "turbo.json");
16
- const pnpmWorkspacePath = path.join(currentDir, "pnpm-workspace.yaml");
17
- if (existsSync(turboPath) && existsSync(pnpmWorkspacePath)) return currentDir;
18
- currentDir = path.dirname(currentDir);
19
- }
20
- throw new Error("Could not find monorepo root (turbo.json + pnpm-workspace.yaml)");
21
- }
22
- function ensureRootEnvFile(rootEnvPath) {
23
- try {
24
- writeFileSync(rootEnvPath, "# Temporary root env file generated by @keystroke/env-utils\n", { flag: "wx" });
25
- } catch (error) {
26
- const fsError = error;
27
- if (fsError.code === "EEXIST") return;
28
- throw new Error(`Could not create temporary root env file at ${rootEnvPath}: ${fsError.message ?? "unknown error"}`);
29
- }
30
- }
31
- function resolveEnvPath(options = {}) {
32
- const fallbackToDefault = options.fallbackToDefault ?? true;
33
- if (options.absolutePath) {
34
- if (existsSync(options.absolutePath)) return options.absolutePath;
35
- if (!fallbackToDefault) throw new Error(`Could not find env file at explicit path: ${options.absolutePath}`);
36
- }
37
- const fileName = options.fileName ?? ".env";
38
- let rootDir = null;
39
- try {
40
- rootDir = findMonorepoRoot();
41
- } catch {}
42
- if (rootDir) {
43
- const rootEnvPath = path.join(rootDir, fileName);
44
- if (existsSync(rootEnvPath)) return rootEnvPath;
45
- if (fileName === ".env") {
46
- ensureRootEnvFile(rootEnvPath);
47
- return rootEnvPath;
48
- }
49
- }
50
- if (!fallbackToDefault) throw new Error(`Could not find env file in monorepo root: ${fileName}`);
51
- return path.join(process.cwd(), fileName);
52
- }
53
- /**
54
- * Load environment variables from a file in the monorepo root.
55
- *
56
- * This function finds the monorepo root by looking for turbo.json and pnpm-workspace.yaml,
57
- * then loads the requested env file from that location. For the default `.env`, this utility
58
- * creates a temporary root `.env` file if one does not exist. Other file names can fall back
59
- * to the current working directory when allowed.
60
- *
61
- * All dotenv logs are suppressed to keep output clean.
62
- *
63
- * @example
64
- * ```ts
65
- * import { loadRootEnv } from '@keystroke/env-utils';
66
- *
67
- * // Load env vars before accessing process.env
68
- * loadRootEnv();
69
- *
70
- * // Explicit integration env file (use `fallbackToDefault: false` only when a missing file must hard-fail):
71
- * loadRootEnv({ fileName: '.env.test', fallbackToDefault: true });
72
- * ```
73
- */
74
- function loadRootEnv(options) {
75
- config({
76
- path: resolveEnvPath(options),
77
- quiet: true,
78
- debug: false
79
- });
80
- }
81
- const EnvironmentSchema = z.enum([
82
- "development",
83
- "staging",
84
- "production"
85
- ]);
86
- z.enum([
87
- "development",
88
- "production",
89
- "test"
90
- ]);
91
- z.enum([
92
- "cli",
93
- "server",
94
- "worker"
95
- ]);
96
- z.enum([
97
- "development",
98
- "test",
99
- "staging",
100
- "production"
101
- ]);
102
- //#endregion
103
- //#region src/lib/env.ts
104
- loadRootEnv();
105
- const cliEnvSchema = z.object({
106
- WEB_URL: z.url().optional().default(DEFAULT_CLI_WEB_URL),
107
- SERVER_URL: z.url().optional().default(DEFAULT_CLI_SERVER_URL),
108
- KEYSTROKE_API_KEY: z.string().min(1).optional(),
109
- KEYSTROKE_ORG_ID: z.string().min(1).optional(),
110
- ENVIRONMENT: EnvironmentSchema.optional().default("production")
111
- });
112
- let cachedEnv;
113
- /**
114
- * Returns the process environment for credential resolution.
115
- * Used by credentials upload and other features that need KEYSTROKE_* vars.
116
- */
117
- function getProcessEnv() {
118
- return process.env;
119
- }
120
- function getEnv() {
121
- if (cachedEnv) return cachedEnv;
122
- cachedEnv = cliEnvSchema.parse(process.env);
123
- return cachedEnv;
124
- }
125
- function resolveCliWebUrl(override, saved) {
126
- if (override) return override;
127
- if (saved) return saved;
128
- return getEnv().WEB_URL;
129
- }
130
- function isLocalMode() {
131
- return getEnv().ENVIRONMENT === "development";
132
- }
133
- function resolveCliServerUrl(override, saved) {
134
- if (override) return override;
135
- if (saved) return saved;
136
- return getEnv().SERVER_URL;
137
- }
138
- //#endregion
139
- export { resolveCliWebUrl as a, resolveCliServerUrl as i, getProcessEnv as n, isLocalMode as r, getEnv as t };
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { access, mkdir, stat, writeFile } from "node:fs/promises";
4
4
  import path from "node:path";
5
- import { z } from "zod";
6
5
  import { pathToFileURL } from "node:url";
6
+ import { z } from "zod";
7
7
  //#region ../../packages/core/src/config.ts
8
8
  /**
9
9
  * Canonical schema for the `build` field of a `keystroke.config.ts` file.