@keystrokehq/cli 0.0.29 → 0.0.31

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 (126) hide show
  1. package/README.md +36 -2
  2. package/dist/{accept.handler-tvT9pleH.mjs → accept.handler-DNfIXPSP.mjs} +1 -1
  3. package/dist/{admin-DsAQ0WWj.mjs → admin-CJp8XksD.mjs} +9 -9
  4. package/dist/{agents-Bc3B9_ms.mjs → agents-G37PM35Z.mjs} +5 -5
  5. package/dist/{api-O5tdGdzc.mjs → api-BK3EhPvs.mjs} +77 -3
  6. package/dist/{api-keys-tle_m3kk.mjs → api-keys-4igNHJ_W.mjs} +5 -5
  7. package/dist/{auth-DLaY5yCZ.mjs → auth-CIOmmV4x.mjs} +4 -4
  8. package/dist/{auth.handler-Dq2fXO3S.mjs → auth.handler-CznN_vfz.mjs} +1 -1
  9. package/dist/{build-agents-DseUtzd4-Cmd-kNNO.mjs → build-agents-DseUtzd4-CSGpNXur.mjs} +2 -2
  10. package/dist/{build-tasks-C09SdfjC-B0F7BZZG.mjs → build-tasks-C09SdfjC-BmAVLTtQ.mjs} +2 -2
  11. package/dist/{build-workflows-BZ_m97Pr-HQZY4xBV.mjs → build-workflows-BZ_m97Pr-BiyptCrn.mjs} +3 -3
  12. package/dist/{build.handler-5CpbMuHx.mjs → build.handler-zHimoO7c.mjs} +5 -5
  13. package/dist/{clear-cache.handler-DpP1VlbR.mjs → clear-cache.handler-BP0K1-uN.mjs} +1 -1
  14. package/dist/{clear.handler-FzohTmpU.mjs → clear.handler-PsA5QKHx.mjs} +2 -2
  15. package/dist/{commander-BTMzBiLq.mjs → commander-BlrSdFcu.mjs} +1 -1
  16. package/dist/{connect-zNUiEjbR.mjs → connect-BbLJhlIA.mjs} +2 -2
  17. package/dist/{connect.handler-D1orna55.mjs → connect.handler-BthE-7Wg.mjs} +3 -3
  18. package/dist/{context-DHOTSgPb.mjs → context-sgKhRc5v.mjs} +3 -3
  19. package/dist/{create.handler-BuxP18uj.mjs → create.handler-BovbO_g0.mjs} +1 -1
  20. package/dist/{credential-env-map-CtmzNkwU.mjs → credential-env-map-CRs0llf0.mjs} +2 -2
  21. package/dist/credentials-CsncZ52a.mjs +460 -0
  22. package/dist/{current-deployment-workflow-Cm_aU9rQ.mjs → current-deployment-workflow-B1VQCYC-.mjs} +2 -2
  23. package/dist/{current.handler-BXec-Bhy.mjs → current.handler-BaGaCLzB.mjs} +1 -1
  24. package/dist/{delete.handler-CpYOMtsv.mjs → delete.handler-DkAK396w.mjs} +1 -1
  25. package/dist/{deploy-CDY7Qo5L.mjs → deploy-DvPfR9fC.mjs} +2 -2
  26. package/dist/{deploy.handler-CLoYxHOr.mjs → deploy.handler-BW3f2N2G.mjs} +14 -14
  27. package/dist/{diff.handler-Dcli35A1.mjs → diff.handler-BwhsoAg0.mjs} +4 -4
  28. package/dist/{dist-D_KgdxW5.mjs → dist-Dw7gCE7y.mjs} +132 -15
  29. package/dist/{env.handler-DYOsMM-G.mjs → env.handler-Dks6ZQh-.mjs} +5 -5
  30. package/dist/{error-boundary-DVZipk-A.mjs → error-boundary-0veZ_RDS.mjs} +1 -1
  31. package/dist/{init-DonAqdBg.mjs → init-DX08T87c.mjs} +3 -3
  32. package/dist/{init.handler-C60qFTIV.mjs → init.handler-CzlmkNXi.mjs} +3 -3
  33. package/dist/{inspect.handler-Bd4imZI8.mjs → inspect.handler-v9snxDLi.mjs} +4 -4
  34. package/dist/{integration-catalog-Cub_7xCw.mjs → integration-catalog-CiZ62hb_.mjs} +1 -1
  35. package/dist/{integrations-CMg20Q9z.mjs → integrations-MEExmqcg.mjs} +54 -31
  36. package/dist/{invites-RO4Dy-m6.mjs → invites-BuatfJmN.mjs} +4 -4
  37. package/dist/{invites.list.handler-B2RoiFCu.mjs → invites.list.handler-CK6mL10z.mjs} +1 -1
  38. package/dist/{invites.resend.handler-C4rzRkqX.mjs → invites.resend.handler-CKZouK1Z.mjs} +1 -1
  39. package/dist/{invites.revoke.handler-CMf6PpeL.mjs → invites.revoke.handler-H0VI-3sp.mjs} +1 -1
  40. package/dist/keystroke.mjs +31 -23
  41. package/dist/{list-enrichment-6zUKzSyL.mjs → list-enrichment-DP1wEyBZ.mjs} +1 -1
  42. package/dist/{list.handler-DpdVFRYl.mjs → list.handler-BEMj3FyH.mjs} +1 -1
  43. package/dist/list.handler-BKfGLkFu.mjs +30 -0
  44. package/dist/{list.handler-DrY5bgm1.mjs → list.handler-BiY5NFWd.mjs} +1 -1
  45. package/dist/{list.handler-C78XjR-o.mjs → list.handler-Cq_oQY5B.mjs} +3 -3
  46. package/dist/list.handler-DIMWZx78.mjs +24 -0
  47. package/dist/{list.handler-CYChUdMF.mjs → list.handler-DVnFrlis.mjs} +4 -4
  48. package/dist/{list.handler-BjKZ9-QO.mjs → list.handler-Jk_vK66s.mjs} +2 -2
  49. package/dist/{list.handler-ijBH6Ow_.mjs → list.handler-LxZInip2.mjs} +1 -1
  50. package/dist/{list.handler-wYGZhl1g.mjs → list.handler-htR9TeiS.mjs} +1 -1
  51. package/dist/{listen-CEn4PucV.mjs → listen-C_7Rgwkb.mjs} +2 -2
  52. package/dist/{listen.handler-B7s6mz82.mjs → listen.handler-dJgorIzr.mjs} +2 -2
  53. package/dist/{logs-DiH8JXn1.mjs → logs-B9YMhUGt.mjs} +3 -3
  54. package/dist/{logs.handler-D0sNlOz4.mjs → logs.handler-BfjCsAyq.mjs} +2 -2
  55. package/dist/{members.add.handler-Dr9SCjrS.mjs → members.add.handler-DSRCRxsI.mjs} +1 -1
  56. package/dist/{members.invite.handler-8-pTOtw_.mjs → members.invite.handler-BNpHn1dY.mjs} +1 -1
  57. package/dist/{members.list.handler-CUZGd-3B.mjs → members.list.handler-Bn9LJEPG.mjs} +1 -1
  58. package/dist/{members.remove.handler-BCiLt3pa.mjs → members.remove.handler-Dkr2t_tX.mjs} +1 -1
  59. package/dist/{members.update.handler-BAbB9ssa.mjs → members.update.handler-DBtUYuAY.mjs} +1 -1
  60. package/dist/operations-AWMLs6mE.mjs +81 -0
  61. package/dist/{org-BD4fj8Yh.mjs → org-DOH7YHk2.mjs} +15 -15
  62. package/dist/{orgs.create.handler-B_7WjV3s.mjs → orgs.create.handler-BO70zIdp.mjs} +1 -1
  63. package/dist/{orgs.get.handler-BgjeDmfl.mjs → orgs.get.handler-BuGg5bc9.mjs} +1 -1
  64. package/dist/{orgs.list.handler-ZRdb-yu5.mjs → orgs.list.handler--5HutMkl.mjs} +1 -1
  65. package/dist/package-manager-DT1EhOkS.mjs +61 -0
  66. package/dist/{paths-JzzFkXQA-CEipIeVl.mjs → paths-DpHfoaXN-CdPimpky.mjs} +2 -2
  67. package/dist/{paused.handler-CzQkBKS6.mjs → paused.handler-DHvxz-cC.mjs} +1 -1
  68. package/dist/{projects-CgtfPFGu.mjs → projects-C5GZ5Jrf.mjs} +4 -4
  69. package/dist/render-credential-Bn15FEUC.mjs +23 -0
  70. package/dist/render-operation-Bc7Wu1sP.mjs +36 -0
  71. package/dist/{requirements.handler-C-5PIRvy.mjs → requirements.handler-B5rqCjMu.mjs} +4 -4
  72. package/dist/{resolve-cli-credentials-B4crOe_y.mjs → resolve-cli-credentials-CAOSVMJP.mjs} +1 -1
  73. package/dist/{resolve-project-DJJZIOmu.mjs → resolve-project-E9mrh_el.mjs} +1 -1
  74. package/dist/{run-polling-cylAR4FL.mjs → run-polling-DawiBus-.mjs} +2 -2
  75. package/dist/{run.handler-CUgLQrsQ.mjs → run.handler-BG7xitEK.mjs} +5 -5
  76. package/dist/{runs-CZRwB58H.mjs → runs-swYYBT6C.mjs} +2 -2
  77. package/dist/{schema-display-XrRCdFL0.mjs → schema-display-FvI8QjOQ.mjs} +28 -1
  78. package/dist/schemas-4Mq_bxob.mjs +39 -0
  79. package/dist/search-BEfy2fG9.mjs +53 -0
  80. package/dist/search.handler-V7ObLGjN.mjs +79 -0
  81. package/dist/show.handler-C_VDYU91.mjs +31 -0
  82. package/dist/show.handler-CsidInW8.mjs +21 -0
  83. package/dist/show.handler-Wmv0tkxx.mjs +35 -0
  84. package/dist/{skills-sync.handler-DsJP_-XZ.mjs → skills-sync.handler-BAATdT6N.mjs} +1 -1
  85. package/dist/{skills.command-B6jly3ew.mjs → skills.command-0-E8mcYE.mjs} +4 -4
  86. package/dist/{src-DNhUmpSl.mjs → src-DI-ybNjR.mjs} +166 -25
  87. package/dist/{switch.handler-B3QBoSSl.mjs → switch.handler-BwYndsP-.mjs} +2 -2
  88. package/dist/{sync-BssJv3Fd.mjs → sync-6fZkIUtn.mjs} +2 -2
  89. package/dist/{sync.handler-Ia7cO3xj.mjs → sync.handler-Ctr-cN9X.mjs} +6 -6
  90. package/dist/{task-target-build-CrPLSXnu.mjs → task-target-build-QllcCfoN.mjs} +5 -5
  91. package/dist/task-target-deploy-runner.mjs +7 -7
  92. package/dist/{test-RFvyK7rK.mjs → test-C8VIZe9V.mjs} +2 -2
  93. package/dist/{test.handler-CLqnDqY6.mjs → test.handler-BCW0YBPd.mjs} +1 -1
  94. package/dist/{test.handler-DBXBhJ59.mjs → test.handler-DLaxrJ9V.mjs} +8 -8
  95. package/dist/{tool.handler-BzyxzKK8.mjs → tool.handler-8qNmgdRe.mjs} +8 -8
  96. package/dist/{trigger-artifacts-BcRScRSp-C-JBJ6y8.mjs → trigger-artifacts-BcRScRSp-BiD2h6do.mjs} +2 -2
  97. package/dist/{upgrade-B6Prb1K-.mjs → upgrade-DgOcc8IT.mjs} +2 -2
  98. package/dist/{upload.handler-Capc50yH.mjs → upload.handler-B7xle1oX.mjs} +6 -6
  99. package/dist/{users.get.handler-DoajzImx.mjs → users.get.handler-C4t1vXwi.mjs} +1 -1
  100. package/dist/{users.list.handler-CRk2J8mi.mjs → users.list.handler-Dvl90grq.mjs} +1 -1
  101. package/dist/{users.set-role.handler-CHYjbx5M.mjs → users.set-role.handler-Djw1_VGf.mjs} +1 -1
  102. package/dist/{validate.handler-DmiJmNA0.mjs → validate.handler-Drf_lssw.mjs} +5 -5
  103. package/dist/{workflow-build-DPqt_edf.mjs → workflow-build-Begvjfq8.mjs} +7 -7
  104. package/dist/{workflow-bundler-BzHk73PM-xQwAF08W.mjs → workflow-bundler-BzHk73PM-muPv1yGG.mjs} +1 -1
  105. package/dist/{workflows-Lz8M15i7.mjs → workflows-DjMlxuBX.mjs} +13 -45
  106. package/package.json +12 -12
  107. package/dist/credentials-DzmutsMa.mjs +0 -176
  108. package/dist/{build-metadata-BB_L45ZS-BtGGjHIV.mjs → build-metadata-BB_L45ZS-DSJL7dTy.mjs} +0 -0
  109. package/dist/{build-progress-O9f-4Z4D.mjs → build-progress-DLM1Bt4T.mjs} +0 -0
  110. package/dist/{clear.handler-BdR56Cok.mjs → clear.handler-T27GpgSu.mjs} +0 -0
  111. package/dist/{credential-schema-mismatch-kfGeiSB1.mjs → credential-schema-mismatch-ClQgEVtO.mjs} +0 -0
  112. package/dist/{credentials-N4L3Vaib.mjs → credentials-DKrSaaLw.mjs} +0 -0
  113. package/dist/{deploy-BURTx92e.mjs → deploy-DhCbYFc7.mjs} +0 -0
  114. package/dist/{deploy-progress-C1Y73QVM.mjs → deploy-progress-BsUH7fGE.mjs} +0 -0
  115. package/dist/{detect-env-access-CwkOYeYM-D4aTZv4R.mjs → detect-env-access-CwkOYeYM-COq4U-4Y.mjs} +0 -0
  116. package/dist/{diff-utils-CXKNQUXO.mjs → diff-utils-Bs--xmoV.mjs} +0 -0
  117. package/dist/{import-module-y0glInUe-BwuOxEY3.mjs → import-module-y0glInUe-DV_3dsU0.mjs} +1 -1
  118. /package/dist/{logs.handler-Bs1DVMaO.mjs → logs.handler-DGGVPMOX.mjs} +0 -0
  119. /package/dist/{read-credential-keys-77a91T8M-aLuQvlIq.mjs → read-credential-keys-77a91T8M-DGK5XTQp.mjs} +0 -0
  120. /package/dist/{register.handler-C_NqMLir.mjs → register.handler-CePNU3sP.mjs} +0 -0
  121. /package/dist/{run-polling-DKWPGLyF.mjs → run-polling-fBouPjJ2.mjs} +0 -0
  122. /package/dist/{skill-installer-AX0X-u1J.mjs → skill-installer-D6j9IA3Z.mjs} +0 -0
  123. /package/dist/{skills.handler-KEUkV5NH.mjs → skills.handler-DYIQK0Vu.mjs} +0 -0
  124. /package/dist/{task-target-deploy-DeUyfi9H.mjs → task-target-deploy-B_3HPSo2.mjs} +0 -0
  125. /package/dist/{types-D1cVpE7_.mjs → types-AlA-ifK9.mjs} +0 -0
  126. /package/dist/{upgrade.handler-C7KvNL0x.mjs → upgrade.handler-DSZuw7-9.mjs} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { i as __toESM, n as __exportAll } from "./chunk-CH6r78ws.mjs";
4
4
  import { F as originalConsole, P as logger, a as ui, n as style, t as ANSI, y as toErrorMessage } from "./keystroke.mjs";
5
- import { r as getKeystrokeTmpDir } from "./dist-D_KgdxW5.mjs";
5
+ import { r as getKeystrokeTmpDir } from "./dist-Dw7gCE7y.mjs";
6
6
  import { t as assertWorkflowProjectRoot } from "./project-config-DudGRFPO.mjs";
7
7
  import { a as FlowGraphSchema, r as WorkflowBuildManifestSchema } from "./workflow-build-manifest-1sC52TIG.mjs";
8
8
  import { t as AgentVersionManifestSchema } from "./agent-manifest-De5TCxZq.mjs";
@@ -12,7 +12,7 @@ import { t as resolveConfiguredBuildOutputDir } from "./utils-BaxDlCsW.mjs";
12
12
  import { a as readAgentSandboxPackage, r as AGENT_VM_TOOLS_RUNTIME_RELATIVE_PATH } from "./agent-bundle-package-DWV6B_5q-B-qzc3zC.mjs";
13
13
  import { a as prewarmFileContentCache, c as typedEntries, i as createFileContentCache, l as require_out, n as computeBuilderFingerprint, o as resetFileContentCache, r as computeWorkflowFingerprint, s as sha256String } from "./metadata-layout-Bv-B0nHj-CO8mjjSl.mjs";
14
14
  import { a as getAgentArtifactPaths, c as hashWorkflowManifestForDisk, d as resolveOutputDir, i as createAgentOutputFiles, l as removeAgentArtifacts, n as BUILD_CACHE_FILE_NAME, o as hashAgentManifestForDisk, r as allOutputFilesExist, s as hashWorkflowFlowForDisk, t as AGENT_ARTIFACT_DIR_PREFIX, u as removeWorkflowArtifacts } from "./writer-byNNUjRm-B-on1n6c.mjs";
15
- import { a as createDiscoveryFailure, c as createNamespaceStarExportDiscoveryError, d as isWorkflowLoadResult, f as loadWorkflowMetadataBatch, i as createAmbiguousExportDiscoveryError, l as isAgentLoadResult, o as createDuplicateWorkflowIdFailure, t as DuplicateWorkflowIdError, u as isTaskLoadResult } from "./import-module-y0glInUe-BwuOxEY3.mjs";
15
+ import { a as createDiscoveryFailure, c as createNamespaceStarExportDiscoveryError, d as isWorkflowLoadResult, f as loadWorkflowMetadataBatch, i as createAmbiguousExportDiscoveryError, l as isAgentLoadResult, o as createDuplicateWorkflowIdFailure, t as DuplicateWorkflowIdError, u as isTaskLoadResult } from "./import-module-y0glInUe-DV_3dsU0.mjs";
16
16
  import { a as literalString, n as identifierName, o as parseSourceFile, r as isNode } from "./oxc-B3KI3rf_-B9omBIuN.mjs";
17
17
  import { a as getLocalModuleSpecifier, c as removeAllMetadataArtifacts, d as resolveDefaultExportAssignment, f as resolveLocalModulePath, i as collectWorkflowImportNames, n as DISCOVERY_IGNORE, o as getVariableDeclarators, r as collectLocalWorkflowBindings, s as isExportedVariableStatement, t as DISCOVERY_GLOB, u as removeMetadataArtifacts } from "./source-analysis-BBg2E_6G-wPP9mjQx.mjs";
18
18
  import { n as parseRelativeFilePath } from "./normalize-path-CojS-CgQ-aOM0agxS.mjs";
@@ -978,7 +978,7 @@ async function buildDiscoveredWorkflows(options) {
978
978
  const failures = [...buildPlan.failures];
979
979
  const warnings = [];
980
980
  if (buildPlan.workflows.length > 0) {
981
- const { buildWorkflowArtifacts } = await import("./build-workflows-BZ_m97Pr-HQZY4xBV.mjs");
981
+ const { buildWorkflowArtifacts } = await import("./build-workflows-BZ_m97Pr-BiyptCrn.mjs");
982
982
  const result = await buildWorkflowArtifacts({
983
983
  entries: buildPlan.workflows,
984
984
  workflowsByKey,
@@ -993,7 +993,7 @@ async function buildDiscoveredWorkflows(options) {
993
993
  warnings.push(...result.warnings);
994
994
  }
995
995
  if (buildPlan.agents.length > 0) {
996
- const { buildAgentArtifacts } = await import("./build-agents-DseUtzd4-Cmd-kNNO.mjs");
996
+ const { buildAgentArtifacts } = await import("./build-agents-DseUtzd4-CSGpNXur.mjs");
997
997
  const result = await buildAgentArtifacts({
998
998
  entries: buildPlan.agents,
999
999
  projectRoot: options.projectRoot
@@ -1002,7 +1002,7 @@ async function buildDiscoveredWorkflows(options) {
1002
1002
  failures.push(...result.failures);
1003
1003
  }
1004
1004
  if (buildPlan.tasks.length > 0) {
1005
- const { buildTaskArtifacts } = await import("./build-tasks-C09SdfjC-B0F7BZZG.mjs");
1005
+ const { buildTaskArtifacts } = await import("./build-tasks-C09SdfjC-BmAVLTtQ.mjs");
1006
1006
  const result = await buildTaskArtifacts({
1007
1007
  entries: buildPlan.tasks,
1008
1008
  projectRoot: options.projectRoot,
@@ -1110,7 +1110,7 @@ async function createBuildPlan(options) {
1110
1110
  const currentWorkflowIndex = workflowProgressIndex;
1111
1111
  workflowProgressIndex += 1;
1112
1112
  if (!loadResult?.ok) {
1113
- const { createWorkflowMetadataFailure } = await import("./build-workflows-BZ_m97Pr-HQZY4xBV.mjs");
1113
+ const { createWorkflowMetadataFailure } = await import("./build-workflows-BZ_m97Pr-BiyptCrn.mjs");
1114
1114
  plan.failures.push(createWorkflowMetadataFailure(discoveredWorkflow, loadResult?.error));
1115
1115
  continue;
1116
1116
  }
@@ -1333,7 +1333,7 @@ async function runBuild(config, initialTargetBindingKeys, metadataRebuildDecisio
1333
1333
  elapsedMs: performance.now() - writeStartedAt,
1334
1334
  ...writeResult.skippedWriteCount !== void 0 && writeResult.skippedWriteCount > 0 ? { skippedWriteCount: writeResult.skippedWriteCount } : {}
1335
1335
  });
1336
- const { buildMetadataArtifacts } = await import("./build-metadata-BB_L45ZS-BtGGjHIV.mjs");
1336
+ const { buildMetadataArtifacts } = await import("./build-metadata-BB_L45ZS-DSJL7dTy.mjs");
1337
1337
  const metadata = await buildMetadataArtifacts({
1338
1338
  projectRoot: config.projectRoot,
1339
1339
  outputDir,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as identifierName, o as parseSourceFile, r as isNode } from "./oxc-B3KI3rf_-B9omBIuN.mjs";
4
- import { r as formatEnvAccessError, t as createEnvAccessPlugin } from "./detect-env-access-CwkOYeYM-D4aTZv4R.mjs";
4
+ import { r as formatEnvAccessError, t as createEnvAccessPlugin } from "./detect-env-access-CwkOYeYM-COq4U-4Y.mjs";
5
5
  import * as path$1 from "node:path";
6
6
  import { existsSync, readFileSync, realpathSync } from "node:fs";
7
7
  import { createHash } from "node:crypto";
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
4
- import { t as createTypedCommand } from "./commander-BTMzBiLq.mjs";
4
+ import { t as createTypedCommand } from "./commander-BlrSdFcu.mjs";
5
5
  import { n as SHA256HashSchema, t as JsonSchemaSchema } from "./common-AK0q0Oz0.mjs";
6
6
  import { u as TriggerUploadDataSchema } from "./credential-requirements-D0mavK8j-CFMf0Xwu.mjs";
7
7
  import { a as FlowGraphSchema, r as WorkflowBuildManifestSchema } from "./workflow-build-manifest-1sC52TIG.mjs";
8
+ import { n as PaginationQuerySchema } from "./schemas-4Mq_bxob.mjs";
8
9
  import { z } from "zod";
9
10
  const GitProviderSchema = z.enum(["codestorage", "github"]);
10
11
  const GitTreeEntryTypeSchema = z.enum(["file", "directory"]);
@@ -244,39 +245,6 @@ z.object({
244
245
  publishedAt: z.string(),
245
246
  createdAt: z.string()
246
247
  });
247
- z.object({
248
- limit: z.number(),
249
- offset: z.number(),
250
- total: z.number()
251
- });
252
- /**
253
- * Pagination query parameters for list endpoints.
254
- * Uses consistent validation across all endpoints:
255
- * - limit: 1-100 (default: 20)
256
- * - offset: >= 0 (default: 0)
257
- */
258
- const PaginationQuerySchema = z.object({
259
- limit: z.coerce.number().min(1).max(100).optional().default(20),
260
- offset: z.coerce.number().min(0).optional().default(0)
261
- });
262
- z.object({
263
- error: z.string(),
264
- message: z.string().optional(),
265
- code: z.string().optional()
266
- });
267
- z.object({
268
- error: z.literal("Not found"),
269
- resource: z.string(),
270
- id: z.string()
271
- });
272
- z.object({
273
- error: z.literal("Validation failed"),
274
- message: z.string(),
275
- fields: z.record(z.string(), z.array(z.string())).optional()
276
- });
277
- /** Matches UUID v1-v5 format. Used to distinguish UUIDs from slugs at runtime. */
278
- const UUID_FORMAT = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
279
- z.string().min(1).max(255).regex(/^[a-z0-9-]+$/, "Slug must be alphanumeric and can contain hyphens").refine((val) => !UUID_FORMAT.test(val), "Slug must not be in UUID format");
280
248
  //#endregion
281
249
  //#region src/commands/workflows/build.command.ts
282
250
  const WorkflowsBuildOptionsSchema = z.object({
@@ -320,7 +288,7 @@ function createWorkflowsBuildCommand() {
320
288
  description: "Build workflows locally",
321
289
  schema: WorkflowsBuildOptionsSchema,
322
290
  optionsConfig: BUILD_OPTIONS_CONFIG,
323
- loadHandler: async () => (await import("./build.handler-5CpbMuHx.mjs")).handleWorkflowsBuild
291
+ loadHandler: async () => (await import("./build.handler-zHimoO7c.mjs")).handleWorkflowsBuild
324
292
  });
325
293
  }
326
294
  //#endregion
@@ -347,7 +315,7 @@ function createWorkflowsDiffCommand() {
347
315
  description: "Authored workflow id (preferred) or workflow name",
348
316
  key: "workflow"
349
317
  },
350
- loadHandler: async () => (await import("./diff.handler-Dcli35A1.mjs")).handleWorkflowsDiff
318
+ loadHandler: async () => (await import("./diff.handler-BwhsoAg0.mjs")).handleWorkflowsDiff
351
319
  });
352
320
  }
353
321
  //#endregion
@@ -380,7 +348,7 @@ function createWorkflowsEnvCommand() {
380
348
  key: "workflow",
381
349
  required: false
382
350
  },
383
- loadHandler: async () => (await import("./env.handler-DYOsMM-G.mjs")).handleWorkflowsEnv
351
+ loadHandler: async () => (await import("./env.handler-Dks6ZQh-.mjs")).handleWorkflowsEnv
384
352
  });
385
353
  }
386
354
  //#endregion
@@ -412,7 +380,7 @@ function createWorkflowsInspectCommand() {
412
380
  description: "Authored workflow id (preferred) or workflow name",
413
381
  key: "workflow"
414
382
  },
415
- loadHandler: async () => (await import("./inspect.handler-Bd4imZI8.mjs")).handleWorkflowsInspect
383
+ loadHandler: async () => (await import("./inspect.handler-v9snxDLi.mjs")).handleWorkflowsInspect
416
384
  });
417
385
  }
418
386
  //#endregion
@@ -508,7 +476,7 @@ function createWorkflowsLogsCommand() {
508
476
  key: "workflow",
509
477
  required: false
510
478
  },
511
- loadHandler: async () => (await import("./logs.handler-D0sNlOz4.mjs")).handleWorkflowsLogs
479
+ loadHandler: async () => (await import("./logs.handler-BfjCsAyq.mjs")).handleWorkflowsLogs
512
480
  });
513
481
  }
514
482
  //#endregion
@@ -698,7 +666,7 @@ function createWorkflowsPausedCommand() {
698
666
  key: "workflow",
699
667
  required: false
700
668
  },
701
- loadHandler: async () => (await import("./paused.handler-CzQkBKS6.mjs")).handleWorkflowsPaused
669
+ loadHandler: async () => (await import("./paused.handler-DHvxz-cC.mjs")).handleWorkflowsPaused
702
670
  });
703
671
  }
704
672
  //#endregion
@@ -792,7 +760,7 @@ function createWorkflowsRunCommand() {
792
760
  key: "payload",
793
761
  required: false
794
762
  }],
795
- loadHandler: async () => (await import("./run.handler-CUgLQrsQ.mjs")).handleWorkflowsRun
763
+ loadHandler: async () => (await import("./run.handler-BG7xitEK.mjs")).handleWorkflowsRun
796
764
  });
797
765
  }
798
766
  //#endregion
@@ -847,7 +815,7 @@ function createWorkflowsTestCommand() {
847
815
  description: "Authored workflow id (preferred) or workflow name. Multiple workflows with the same name run sequentially.",
848
816
  key: "workflow"
849
817
  },
850
- loadHandler: async () => (await import("./test.handler-DBXBhJ59.mjs")).handleWorkflowsTest
818
+ loadHandler: async () => (await import("./test.handler-DLaxrJ9V.mjs")).handleWorkflowsTest
851
819
  });
852
820
  }
853
821
  //#endregion
@@ -885,7 +853,7 @@ function createWorkflowsValidateCommand() {
885
853
  key: "workflow",
886
854
  required: false
887
855
  },
888
- loadHandler: async () => (await import("./validate.handler-DmiJmNA0.mjs")).handleWorkflowsValidate
856
+ loadHandler: async () => (await import("./validate.handler-Drf_lssw.mjs")).handleWorkflowsValidate
889
857
  });
890
858
  }
891
859
  //#endregion
@@ -904,14 +872,14 @@ function createWorkflowsCommand() {
904
872
  description: "Manage, run, inspect, and debug workflows",
905
873
  schema: WorkflowsOptionsSchema,
906
874
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
907
- loadHandler: async () => (await import("./list.handler-C78XjR-o.mjs")).handleWorkflowsList,
875
+ loadHandler: async () => (await import("./list.handler-Cq_oQY5B.mjs")).handleWorkflowsList,
908
876
  subcommands: [
909
877
  createTypedCommand({
910
878
  name: "list",
911
879
  description: "List all workflows in the project",
912
880
  schema: WorkflowsOptionsSchema,
913
881
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
914
- loadHandler: async () => (await import("./list.handler-C78XjR-o.mjs")).handleWorkflowsList
882
+ loadHandler: async () => (await import("./list.handler-Cq_oQY5B.mjs")).handleWorkflowsList
915
883
  }),
916
884
  createWorkflowsBuildCommand(),
917
885
  createWorkflowsTestCommand(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keystrokehq/cli",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
4
4
  "private": false,
5
5
  "description": "Command-line interface for creating, managing, and deploying Keystroke automations.",
6
6
  "type": "module",
@@ -32,26 +32,26 @@
32
32
  "rolldown": "1.0.0",
33
33
  "tsx": "^4.21.0",
34
34
  "zod": "4.4.3",
35
- "@keystrokehq/skills": "0.0.8"
35
+ "@keystrokehq/skills": "0.0.9"
36
36
  },
37
37
  "devDependencies": {
38
38
  "tsdown": "0.21.10",
39
39
  "typescript": "^5.9.3",
40
40
  "vitest": "^4.1.5",
41
+ "@keystroke/local-memory": "0.0.2",
41
42
  "@keystroke/env-utils": "0.0.0",
42
- "@keystroke/local-memory": "0.0.1",
43
43
  "@keystrokehq/config": "0.0.2",
44
- "@keystroke/shared-types": "0.0.8",
45
- "@keystroke/test-utils": "0.0.4",
44
+ "@keystroke/shared-types": "0.0.11",
45
+ "@keystroke/test-utils": "0.0.6",
46
46
  "@keystroke/typescript-config": "0.0.0",
47
47
  "@keystroke/utils": "0.0.0",
48
- "@keystroke/workflow-builder": "0.0.10",
49
- "@keystrokehq/core": "0.0.8",
50
- "@keystrokehq/runtime": "0.0.5",
51
- "@keystrokehq/workflow-build-contracts": "0.0.4",
52
- "@keystrokehq/testing": "0.2.3",
53
- "@keystroke/workflow-deploy": "0.0.9",
54
- "@keystroke/workflow-sdk": "0.0.7"
48
+ "@keystroke/workflow-builder": "0.0.15",
49
+ "@keystrokehq/core": "0.0.10",
50
+ "@keystrokehq/runtime": "0.0.7",
51
+ "@keystrokehq/workflow-build-contracts": "0.0.6",
52
+ "@keystrokehq/testing": "0.2.5",
53
+ "@keystroke/workflow-deploy": "0.0.13",
54
+ "@keystroke/workflow-sdk": "0.0.11"
55
55
  },
56
56
  "keywords": [
57
57
  "automation",
@@ -1,176 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
4
- import { t as createTypedCommand } from "./commander-BTMzBiLq.mjs";
5
- import { i as CredentialScopeValues, r as CredentialScopeSchema } from "./schema-DFJiNWyd.mjs";
6
- import { z } from "zod";
7
- //#region src/commands/credentials/list/list.command.ts
8
- const ListOptionsSchema = JsonOptionSchema.extend({
9
- scope: CredentialScopeSchema.optional(),
10
- credentialSetId: z.string().optional(),
11
- projectId: z.uuid().optional(),
12
- path: z.string().optional(),
13
- limit: z.coerce.number().min(1).max(100).optional().default(100),
14
- offset: z.coerce.number().min(0).optional().default(0)
15
- });
16
- const LIST_OPTIONS_CONFIG = {
17
- ...JSON_OPTION_CONFIG,
18
- scope: {
19
- flag: "--scope <scope>",
20
- description: `Filter by scope: ${CredentialScopeValues.join(" | ")}`
21
- },
22
- credentialSetId: {
23
- flag: "--credential-set-id <id>",
24
- description: "Filter by credential set ID (e.g. slack)"
25
- },
26
- projectId: {
27
- flag: "--project-id <id>",
28
- description: "Filter project-scoped credential sets to a specific project ID"
29
- },
30
- path: {
31
- flag: "--path <dir>",
32
- description: "Path to project root (for workflow manifests and .env context)"
33
- },
34
- limit: {
35
- flag: "--limit <n>",
36
- description: "Page size for server list (1–100, default: 100)"
37
- },
38
- offset: {
39
- flag: "--offset <n>",
40
- description: "Skip this many server rows before listing (pagination)"
41
- }
42
- };
43
- function createCredentialsListCommand() {
44
- return createTypedCommand({
45
- name: "list",
46
- description: "List credential sets on the server",
47
- schema: ListOptionsSchema,
48
- optionsConfig: LIST_OPTIONS_CONFIG,
49
- loadHandler: async () => (await import("./list.handler-CYChUdMF.mjs")).handleCredentialsList
50
- });
51
- }
52
- //#endregion
53
- //#region src/commands/credentials/requirements/requirements.command.ts
54
- const RequirementsOptionsSchema = JsonOptionSchema.extend({ path: z.string().optional() });
55
- const REQUIREMENTS_OPTIONS_CONFIG = {
56
- ...JSON_OPTION_CONFIG,
57
- path: {
58
- flag: "--path <dir>",
59
- description: "Path to project root"
60
- }
61
- };
62
- function createCredentialsRequirementsCommand() {
63
- return createTypedCommand({
64
- name: "requirements",
65
- description: "Show what credentials built workflows need (keys, KEYSTROKE_* env names, workflows) — from dist manifests, no API call",
66
- schema: RequirementsOptionsSchema,
67
- optionsConfig: REQUIREMENTS_OPTIONS_CONFIG,
68
- loadHandler: async () => (await import("./requirements.handler-C-5PIRvy.mjs")).handleCredentialsRequirements
69
- });
70
- }
71
- //#endregion
72
- //#region src/commands/credentials/upload/upload.command.ts
73
- const UploadOptionsSchema = JsonOptionSchema.extend({
74
- integration: z.string().optional(),
75
- credentialConnectionId: z.string().optional().describe("Credential connection ID to use for catalog-backed uploads"),
76
- credentialSet: z.string().optional(),
77
- keys: z.string().optional(),
78
- name: z.string().optional(),
79
- scope: CredentialScopeSchema.default("user"),
80
- path: z.string().optional(),
81
- dryRun: z.boolean().optional().default(false),
82
- update: z.boolean().optional().default(false)
83
- });
84
- const UPLOAD_OPTIONS_CONFIG = {
85
- ...JSON_OPTION_CONFIG,
86
- integration: {
87
- flag: "--integration <public-id>",
88
- description: "Official integration public ID (e.g. slack, github, linear). Derives the internal credential identity and keys automatically."
89
- },
90
- credentialConnectionId: {
91
- flag: "--credential-connection-id <id>",
92
- description: "Credential connection ID to use for catalog-backed uploads"
93
- },
94
- credentialSet: {
95
- flag: "--credential-set <id>",
96
- description: "Explicit custom credential set ID. Requires --keys."
97
- },
98
- keys: {
99
- flag: "--keys <key1,key2>",
100
- description: "Comma-separated credential keys. Required with --credential-set."
101
- },
102
- name: {
103
- flag: "--name <name>",
104
- description: "Credential set name (only with --credential-set; default: [CLI] <id>)"
105
- },
106
- scope: {
107
- flag: "--scope <scope>",
108
- description: `Scope: ${CredentialScopeValues.join(" | ")} (default: user; project resolves from keystroke.config.ts)`
109
- },
110
- path: {
111
- flag: "--path <dir>",
112
- description: "Path to project root"
113
- },
114
- dryRun: {
115
- flag: "--dry-run",
116
- description: "Show what would happen without making changes"
117
- },
118
- update: {
119
- flag: "--update",
120
- description: "Overwrite values for existing credential sets from current env vars"
121
- }
122
- };
123
- function createCredentialsUploadCommand() {
124
- return createTypedCommand({
125
- name: "upload",
126
- description: "Upload credentials from env vars to the server. Default: reads requirements from built workflow manifests. Use --integration for an official integration or --credential-set + --keys for a custom explicit upload.",
127
- schema: UploadOptionsSchema,
128
- optionsConfig: UPLOAD_OPTIONS_CONFIG,
129
- loadHandler: async () => (await import("./upload.handler-Capc50yH.mjs")).handleCredentialsUpload
130
- });
131
- }
132
- //#endregion
133
- //#region src/commands/credentials/credentials.command.ts
134
- const CredentialsRootSchema = JsonOptionSchema.extend({
135
- path: z.string().optional(),
136
- limit: z.coerce.number().min(1).max(100).optional().default(100),
137
- offset: z.coerce.number().min(0).optional().default(0)
138
- });
139
- function createCredentialsCommand() {
140
- return createTypedCommand({
141
- name: "credentials",
142
- description: "Manage credentials (upload, list, requirements)",
143
- schema: CredentialsRootSchema,
144
- optionsConfig: {
145
- ...JSON_OPTION_CONFIG,
146
- path: {
147
- flag: "--path <dir>",
148
- description: "Path to project root (for workflow manifests and .env context)"
149
- },
150
- limit: {
151
- flag: "--limit <n>",
152
- description: "Page size for server list (1–100, default: 100)"
153
- },
154
- offset: {
155
- flag: "--offset <n>",
156
- description: "Skip this many server rows before listing (pagination)"
157
- }
158
- },
159
- handler: async (opts, ctx) => {
160
- const { handleCredentialsList } = await import("./list.handler-CYChUdMF.mjs");
161
- await handleCredentialsList({
162
- ...opts,
163
- scope: void 0,
164
- credentialSetId: void 0,
165
- projectId: void 0
166
- }, ctx);
167
- },
168
- subcommands: [
169
- createCredentialsUploadCommand(),
170
- createCredentialsListCommand(),
171
- createCredentialsRequirementsCommand()
172
- ]
173
- });
174
- }
175
- //#endregion
176
- export { createCredentialsCommand };
@@ -6,8 +6,8 @@ import { a as FlowGraphSchema, i as WorkflowCoreManifestSchema, n as WORKFLOW_MA
6
6
  import { c as optionalDescriptionString, f as parseCronExpression, i as createStructuralSchema$1, l as optionalTrimmedNonEmptyString, o as idNoSpacesString, r as anyZodSchemaSchema$1, s as jsonSchemaObject$1, t as CredentialSetManifestSchema$1, u as trimmedNonEmptyString$1 } from "./schemas-D2zfmyC-.mjs";
7
7
  import { t as runWithConcurrency } from "./concurrency-gXn9Rw8x-CnBnF2cg.mjs";
8
8
  import { createRequire } from "node:module";
9
- import * as os from "node:os";
10
9
  import * as path$1 from "node:path";
10
+ import * as os from "node:os";
11
11
  import { pathToFileURL } from "node:url";
12
12
  import { z } from "zod";
13
13
  import { execFile } from "node:child_process";
File without changes