@keystrokehq/cli 0.0.32 → 0.0.37

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 (147) hide show
  1. package/README.md +25 -4
  2. package/dist/{accept.handler-DNfIXPSP.mjs → accept.handler-DCsud1s5.mjs} +4 -4
  3. package/dist/{admin-CJp8XksD.mjs → admin-BaOtHeZ2.mjs} +10 -10
  4. package/dist/{agent-manifest-De5TCxZq.mjs → agent-manifest-DfWD5tvv.mjs} +17 -27
  5. package/dist/{agents-G37PM35Z.mjs → agents-BVAVfMR_.mjs} +9 -9
  6. package/dist/{api-keys-4igNHJ_W.mjs → api-keys-BhEEsHUh.mjs} +6 -6
  7. package/dist/{api-BK3EhPvs.mjs → api-sWkB_Wta.mjs} +1 -1
  8. package/dist/{auth-CIOmmV4x.mjs → auth-BnsitjzT.mjs} +6 -6
  9. package/dist/{auth.handler-CznN_vfz.mjs → auth.handler-W_xk14TL.mjs} +3 -3
  10. package/dist/authored-workflow-ref-fkHEEVnd.mjs +113 -0
  11. package/dist/{build-agents-DseUtzd4-CSGpNXur.mjs → build-agents-CUzBnlAG-3ePFZiJ6.mjs} +12 -11
  12. package/dist/{build-progress-DLM1Bt4T.mjs → build-progress-CM-b6Bby.mjs} +2 -2
  13. package/dist/{build-tasks-C09SdfjC-BmAVLTtQ.mjs → build-tasks-5eOvI19S-tbN6CRx9.mjs} +4 -4
  14. package/dist/{build-workflows-BZ_m97Pr-BiyptCrn.mjs → build-workflows-C-gQM3l5-_zcBHE3M.mjs} +14 -9
  15. package/dist/{build.handler-zHimoO7c.mjs → build.handler-CpAsAsBc.mjs} +12 -9
  16. package/dist/{clear-cache.handler-BP0K1-uN.mjs → clear-cache.handler-gJpwslkK.mjs} +2 -2
  17. package/dist/{clear.handler-T27GpgSu.mjs → clear.handler-CDyG6-dk.mjs} +1 -1
  18. package/dist/{clear.handler-PsA5QKHx.mjs → clear.handler-_sR33Hp8.mjs} +2 -2
  19. package/dist/{commander-BlrSdFcu.mjs → commander-C6SSTQJ2.mjs} +22 -3
  20. package/dist/{connect-BbLJhlIA.mjs → connect-27EgnljZ.mjs} +3 -3
  21. package/dist/{connect.handler-BthE-7Wg.mjs → connect.handler-COM1LnNg.mjs} +5 -5
  22. package/dist/{context-sgKhRc5v.mjs → context-ebZssGCY.mjs} +4 -4
  23. package/dist/{create.handler-BovbO_g0.mjs → create.handler-CAWJAGzQ.mjs} +3 -3
  24. package/dist/{credential-env-map-CRs0llf0.mjs → credential-env-map-5a41jLwM.mjs} +1 -1
  25. package/dist/{credential-requirements-D0mavK8j-CFMf0Xwu.mjs → credential-requirements-B5Alhu1v-DanlSKnT.mjs} +3 -3
  26. package/dist/{credential-schema-mismatch-ClQgEVtO.mjs → credential-schema-mismatch-c17ktoNU.mjs} +1 -1
  27. package/dist/{credentials-CsncZ52a.mjs → credentials-C0ssbMlp.mjs} +10 -10
  28. package/dist/{credentials-DKrSaaLw.mjs → credentials-DtwLbee6.mjs} +1 -1
  29. package/dist/current-deployment-workflow-C6x65imE.mjs +20 -0
  30. package/dist/current.handler-DP1L_hm3.mjs +19 -0
  31. package/dist/{delete.handler-DkAK396w.mjs → delete.handler-C-5XFkgN.mjs} +2 -2
  32. package/dist/{deploy-DvPfR9fC.mjs → deploy-BcVQJza8.mjs} +2 -2
  33. package/dist/{deploy-progress-BsUH7fGE.mjs → deploy-progress-Bt86Yc1r.mjs} +2 -2
  34. package/dist/{deploy.handler-BW3f2N2G.mjs → deploy.handler-GPS9lxGk.mjs} +16 -16
  35. package/dist/{diff-utils-Bs--xmoV.mjs → diff-utils-YEUYtSRs.mjs} +1 -1
  36. package/dist/{diff.handler-BwhsoAg0.mjs → diff.handler-DkM5dhaN.mjs} +15 -9
  37. package/dist/{dist-Dw7gCE7y.mjs → dist-B5jy238v.mjs} +37 -11
  38. package/dist/{dist-CTEtWDW4.mjs → dist-BmbFJq8U.mjs} +8 -27
  39. package/dist/{env.handler-Dks6ZQh-.mjs → env.handler-V_isbSi2.mjs} +52 -29
  40. package/dist/{error-boundary-0veZ_RDS.mjs → error-boundary-BRxUsPi7.mjs} +3 -3
  41. package/dist/{iam-command-utils-CSZj4XlH.mjs → iam-command-utils-DNDN0wT6.mjs} +3 -13
  42. package/dist/{import-module-y0glInUe-DV_3dsU0.mjs → import-module-y0glInUe-EuAWaw9g.mjs} +506 -128
  43. package/dist/{init-BOCDwqKR.mjs → init-D1OmmclX.mjs} +3 -3
  44. package/dist/{init.handler-B3T4J6u_.mjs → init.handler-CUbYlUgP.mjs} +5 -5
  45. package/dist/{inspect.handler-v9snxDLi.mjs → inspect.handler-BE6coOuW.mjs} +24 -13
  46. package/dist/{integration-catalog-CiZ62hb_.mjs → integration-catalog-pSmWHFLQ.mjs} +3 -3
  47. package/dist/{integrations-m7_tb3GV.mjs → integrations-DZD5t8n2.mjs} +7 -7
  48. package/dist/{invites-BuatfJmN.mjs → invites-BuR1H-tA.mjs} +5 -5
  49. package/dist/{invites.list.handler-CK6mL10z.mjs → invites.list.handler-Dj4a6XOg.mjs} +6 -5
  50. package/dist/{invites.resend.handler-CKZouK1Z.mjs → invites.resend.handler-DEGF4vlB.mjs} +6 -5
  51. package/dist/{invites.revoke.handler-H0VI-3sp.mjs → invites.revoke.handler-Dg4ZvlFS.mjs} +6 -5
  52. package/dist/keystroke.mjs +122 -77
  53. package/dist/{list-enrichment-DP1wEyBZ.mjs → list-enrichment-dqbkXJzy.mjs} +2 -2
  54. package/dist/{list.handler-LxZInip2.mjs → list.handler-2g1CZAvB.mjs} +4 -4
  55. package/dist/{list.handler-DbYUk6ko.mjs → list.handler-7MkJfkak.mjs} +5 -5
  56. package/dist/list.handler-BTYVIn6z.mjs +39 -0
  57. package/dist/{list.handler-BiY5NFWd.mjs → list.handler-Bchcr3-e.mjs} +3 -3
  58. package/dist/list.handler-Choc4SZz.mjs +64 -0
  59. package/dist/{list.handler-CMRQKH4b.mjs → list.handler-D47C1z3m.mjs} +4 -4
  60. package/dist/{list.handler-DVnFrlis.mjs → list.handler-DYE48apa.mjs} +7 -7
  61. package/dist/{list.handler-DIMWZx78.mjs → list.handler-KcCaG3PZ.mjs} +4 -4
  62. package/dist/list2.handler-BIaIyrQf.mjs +99 -0
  63. package/dist/{listen-C_7Rgwkb.mjs → listen-CVY-_F29.mjs} +3 -3
  64. package/dist/{listen.handler-dJgorIzr.mjs → listen.handler-D_nEvXRn.mjs} +4 -4
  65. package/dist/{logs-B9YMhUGt.mjs → logs-CZ2qnsSH.mjs} +3 -3
  66. package/dist/{logs.handler-BfjCsAyq.mjs → logs.handler-BRUzZC9Z.mjs} +26 -29
  67. package/dist/{logs.handler-DGGVPMOX.mjs → logs.handler-Wk6mYyAZ.mjs} +1 -1
  68. package/dist/{members.add.handler-DSRCRxsI.mjs → members.add.handler-BJ0wr6rP.mjs} +6 -5
  69. package/dist/{members.invite.handler-BNpHn1dY.mjs → members.invite.handler-DyveDMuq.mjs} +6 -5
  70. package/dist/{members.list.handler-Bn9LJEPG.mjs → members.list.handler-CyQxH_zS.mjs} +6 -5
  71. package/dist/{members.remove.handler-Dkr2t_tX.mjs → members.remove.handler-Dtv9PooY.mjs} +6 -5
  72. package/dist/{members.update.handler-DBtUYuAY.mjs → members.update.handler-CeK-tCjT.mjs} +6 -5
  73. package/dist/{operations-CF2nUiBs.mjs → operations-CxQlt0S0.mjs} +5 -5
  74. package/dist/{org-DOH7YHk2.mjs → org-B8MPHJJu.mjs} +35 -28
  75. package/dist/org-context-BI9OSpbb.mjs +112 -0
  76. package/dist/org-output-DffU7DKn.mjs +64 -0
  77. package/dist/{orgs.create.handler-BO70zIdp.mjs → orgs.create.handler-BKvSmkU3.mjs} +4 -4
  78. package/dist/{orgs.get.handler-BuGg5bc9.mjs → orgs.get.handler-BA-CexIY.mjs} +4 -4
  79. package/dist/{orgs.list.handler--5HutMkl.mjs → orgs.list.handler-eCEg5kC1.mjs} +4 -4
  80. package/dist/{output-BWcVRt-T.mjs → output-DnIFEmi5.mjs} +1 -1
  81. package/dist/{package-manager-CvY4IW7X.mjs → package-manager-BP3-q8hh.mjs} +27 -2
  82. package/dist/{paused.handler-DHvxz-cC.mjs → paused.handler-4wKMTKZ-.mjs} +20 -33
  83. package/dist/{projects-C5GZ5Jrf.mjs → projects-Wu_2fB_x.mjs} +11 -9
  84. package/dist/{register.handler-CKMZ2WmD.mjs → register.handler-BvAkXCwE.mjs} +2 -2
  85. package/dist/{render-credential-Bn15FEUC.mjs → render-credential-D-H1ECDt.mjs} +1 -1
  86. package/dist/{render-operation-DWbMwhfc.mjs → render-operation-VdEPhoII.mjs} +2 -2
  87. package/dist/{requirements.handler-B5rqCjMu.mjs → requirements.handler-Bab4kBtw.mjs} +7 -7
  88. package/dist/{resolve-cli-credentials-CAOSVMJP.mjs → resolve-cli-credentials-GVOOedoQ.mjs} +1 -1
  89. package/dist/{resolve-project-E9mrh_el.mjs → resolve-project-DLKlAy0z.mjs} +24 -8
  90. package/dist/{run-polling-DawiBus-.mjs → run-polling-C5fI7xTp.mjs} +97 -14
  91. package/dist/{run.handler-BG7xitEK.mjs → run.handler-BKD5Xu0A.mjs} +42 -30
  92. package/dist/{runs-swYYBT6C.mjs → runs-CT31dczt.mjs} +4 -4
  93. package/dist/{schema-display-FvI8QjOQ.mjs → schema-display-sZ6ConJd.mjs} +33 -26
  94. package/dist/schemas-ClAIoIrX.mjs +281 -0
  95. package/dist/{search-CA0J5NOY.mjs → search-BeQW_pf4.mjs} +3 -3
  96. package/dist/{search.handler-BVDsYZlJ.mjs → search.handler-BJ-ZlDL4.mjs} +6 -6
  97. package/dist/{show.handler-nkK6Erbb.mjs → show.handler-BrIHUH28.mjs} +4 -4
  98. package/dist/{show.handler-CsidInW8.mjs → show.handler-Cqe_hCqU.mjs} +5 -5
  99. package/dist/{show.handler-CwwnCmbp.mjs → show.handler-DB8xl5FU.mjs} +6 -6
  100. package/dist/{skill-installer-DG8kTaQR.mjs → skill-installer-DuMhavmM.mjs} +3 -1
  101. package/dist/{skills-sync.handler-yRmi3OgP.mjs → skills-sync.handler-BGs-_YD9.mjs} +13 -7
  102. package/dist/{skills.command-COYd3k4Z.mjs → skills.command-DUWn6FbL.mjs} +5 -5
  103. package/dist/skills.handler-DqLXJepA.mjs +9 -0
  104. package/dist/{spinner-progress-lrKDs4YF.mjs → spinner-progress-BYxlr3lY.mjs} +1 -1
  105. package/dist/status.handler-DAId4bVU.mjs +72 -0
  106. package/dist/{switch.handler-BwYndsP-.mjs → switch.handler-Cd4Yg2n8.mjs} +17 -4
  107. package/dist/{sync-6fZkIUtn.mjs → sync-DgC4lcxh.mjs} +2 -2
  108. package/dist/{sync.handler-Ctr-cN9X.mjs → sync.handler-Cm_WtGmH.mjs} +8 -8
  109. package/dist/{task-BWuIKWh4.mjs → task-DTvLzUkA.mjs} +2 -88
  110. package/dist/{task-target-build-QllcCfoN.mjs → task-target-build-CtvRyVjH.mjs} +5 -5
  111. package/dist/task-target-deploy-runner.mjs +6 -6
  112. package/dist/{test-C8VIZe9V.mjs → test-4V7nh67i.mjs} +5 -5
  113. package/dist/{test.handler-BCW0YBPd.mjs → test.handler-BdCYcwR4.mjs} +2 -2
  114. package/dist/{test.handler-DLaxrJ9V.mjs → test.handler-Bo4YTs2Z.mjs} +19 -16
  115. package/dist/{tool.handler-8qNmgdRe.mjs → tool.handler-CPCrSDq2.mjs} +12 -12
  116. package/dist/{trigger-artifacts-BcRScRSp-BiD2h6do.mjs → trigger-artifacts-BcRScRSp-BRpU-He5.mjs} +2 -2
  117. package/dist/{trigger-manifest-C07EM-b2.mjs → trigger-manifest-BVqjDhxU.mjs} +1 -1
  118. package/dist/{upgrade-DgOcc8IT.mjs → upgrade-2qUOcjxb.mjs} +4 -8
  119. package/dist/upgrade.handler-PqlKSuUE.mjs +99 -0
  120. package/dist/{upload.handler-B7xle1oX.mjs → upload.handler-CS-vLpzC.mjs} +9 -9
  121. package/dist/{users.get.handler-C4t1vXwi.mjs → users.get.handler-CH1c6Lnj.mjs} +4 -4
  122. package/dist/{users.list.handler-Dvl90grq.mjs → users.list.handler-CxbZFgjO.mjs} +4 -4
  123. package/dist/{users.set-role.handler-Djw1_VGf.mjs → users.set-role.handler-CBRE-Ws6.mjs} +4 -4
  124. package/dist/{validate.handler-Drf_lssw.mjs → validate.handler-1d-UmtXB.mjs} +171 -26
  125. package/dist/{workflow-build-Begvjfq8.mjs → workflow-build-Bm8JoVv4.mjs} +234 -32
  126. package/dist/{workflow-build-manifest-1sC52TIG.mjs → workflow-build-manifest-CV6bBmDO.mjs} +1 -1
  127. package/dist/{workflow-bundler-BzHk73PM-muPv1yGG.mjs → workflow-bundler-Bs3zQNQv-Dy7lXxy3.mjs} +15 -4
  128. package/dist/{workflows-DjMlxuBX.mjs → workflows-ny7rOdeH.mjs} +34 -37
  129. package/dist/{writer-byNNUjRm-B-on1n6c.mjs → writer-BLg0RuZa-Y6ExdYH9.mjs} +6 -4
  130. package/package.json +10 -10
  131. package/dist/current-deployment-workflow-B1VQCYC-.mjs +0 -94
  132. package/dist/current.handler-BaGaCLzB.mjs +0 -21
  133. package/dist/list.handler-BEMj3FyH.mjs +0 -76
  134. package/dist/list.handler-Cq_oQY5B.mjs +0 -52
  135. package/dist/list.handler-htR9TeiS.mjs +0 -24
  136. package/dist/schemas-D2zfmyC-.mjs +0 -671
  137. package/dist/skills.handler-DYIQK0Vu.mjs +0 -9
  138. package/dist/status.handler-Ch_DtyBp.mjs +0 -109
  139. package/dist/upgrade.handler-DSZuw7-9.mjs +0 -80
  140. /package/dist/{build-metadata-BB_L45ZS-DSJL7dTy.mjs → build-metadata-BB_L45ZS-DRQsV6JK.mjs} +0 -0
  141. /package/dist/{deploy-DhCbYFc7.mjs → deploy-BiKBH25R.mjs} +0 -0
  142. /package/dist/{detect-env-access-CwkOYeYM-COq4U-4Y.mjs → detect-env-access-CwkOYeYM-r4aynBU0.mjs} +0 -0
  143. /package/dist/{read-credential-keys-77a91T8M-DGK5XTQp.mjs → read-credential-keys-77a91T8M-I07NYwfH.mjs} +0 -0
  144. /package/dist/{run-polling-fBouPjJ2.mjs → run-polling-1c0ckC1A.mjs} +0 -0
  145. /package/dist/{schemas-4Mq_bxob.mjs → schemas-8nhXlXWh.mjs} +0 -0
  146. /package/dist/{task-target-deploy-B_3HPSo2.mjs → task-target-deploy-m9LfE488.mjs} +0 -0
  147. /package/dist/{types-AlA-ifK9.mjs → types-Cb0eWmUU.mjs} +0 -0
@@ -3,15 +3,15 @@
3
3
  import { n as __exportAll } from "./chunk-CH6r78ws.mjs";
4
4
  import { t as assertWorkflowProjectRoot } from "./project-config-DudGRFPO.mjs";
5
5
  import { n as SHA256HashSchema } from "./common-AK0q0Oz0.mjs";
6
- import { f as collectCredentialRequirementEntries, u as TriggerUploadDataSchema } from "./credential-requirements-D0mavK8j-CFMf0Xwu.mjs";
7
- import { a as FlowGraphSchema, r as WorkflowBuildManifestSchema } from "./workflow-build-manifest-1sC52TIG.mjs";
8
- import { t as AgentVersionManifestSchema } from "./agent-manifest-De5TCxZq.mjs";
9
- import { n as TaskBuildManifestSchema } from "./task-BWuIKWh4.mjs";
6
+ import { f as collectCredentialRequirementEntries, u as TriggerUploadDataSchema } from "./credential-requirements-B5Alhu1v-DanlSKnT.mjs";
7
+ import { a as FlowGraphSchema, r as WorkflowBuildManifestSchema } from "./workflow-build-manifest-CV6bBmDO.mjs";
8
+ import { t as AgentVersionManifestSchema } from "./agent-manifest-DfWD5tvv.mjs";
9
+ import { n as TaskBuildManifestSchema } from "./task-DTvLzUkA.mjs";
10
10
  import { n as FileMetadataSchema } from "./file-metadata-DQVDjr7M.mjs";
11
11
  import { t as computeProjectSnapshotHash } from "./task-target-deploy-dQYnMO8n-d2vdeqXH.mjs";
12
12
  import { a as MANIFEST_FILE_NAME, d as getMetadataRoot, f as getTriggersDir, m as getWorkflowManifestPath, p as getWorkflowArtifactPaths, t as BUILD_DIR_NAME } from "./layout-B95Tku8F.mjs";
13
13
  import { n as resolveProjectBuildOutputDir } from "./utils-BaxDlCsW.mjs";
14
- import { t as TriggerBuildManifestSchema } from "./trigger-manifest-C07EM-b2.mjs";
14
+ import { t as TriggerBuildManifestSchema } from "./trigger-manifest-BVqjDhxU.mjs";
15
15
  import { t as batchUpload } from "./upload-CE4H5R1h.mjs";
16
16
  import * as path$1 from "node:path";
17
17
  import path from "node:path";
@@ -33,11 +33,7 @@ var dist_exports = /* @__PURE__ */ __exportAll({
33
33
  const AGENT_ARTIFACT_DIR_PREFIX$1 = "agent_";
34
34
  /**
35
35
  * Reads all workflow manifests from the dist output directory.
36
- * Optionally filters by workflow ref: tries authored id first, then name.
37
- *
38
- * When ref is provided:
39
- * - First match: manifest.id === ref
40
- * - Fallback: manifest.name === ref
36
+ * When `ref` is provided, returns manifests whose authored workflow id matches exactly.
41
37
  *
42
38
  * Returns [] when the dist directory does not exist or is unreadable.
43
39
  */
@@ -45,8 +41,6 @@ async function readManifestsFromOutDir(workflowsDir, ref) {
45
41
  const distDir = await resolveProjectBuildOutputDir(workflowsDir);
46
42
  const entries = await fs.readdir(distDir, { withFileTypes: true }).catch(() => null);
47
43
  if (!entries) return [];
48
- const byId = [];
49
- const byName = [];
50
44
  const all = [];
51
45
  for (const entry of entries) {
52
46
  if (!entry.isDirectory()) continue;
@@ -55,26 +49,13 @@ async function readManifestsFromOutDir(workflowsDir, ref) {
55
49
  const raw = await fs.readFile(manifestPath, "utf-8");
56
50
  const parsed = WorkflowBuildManifestSchema.safeParse(JSON.parse(raw));
57
51
  if (!parsed.success) continue;
58
- if (ref === void 0) {
59
- all.push({
60
- manifest: parsed.data,
61
- manifestPath
62
- });
63
- continue;
64
- }
65
- if (parsed.data.id === ref) byId.push({
66
- manifest: parsed.data,
67
- manifestPath
68
- });
69
- else if (parsed.data.name === ref) byName.push({
52
+ if (ref === void 0 || parsed.data.id === ref) all.push({
70
53
  manifest: parsed.data,
71
54
  manifestPath
72
55
  });
73
56
  } catch {}
74
57
  }
75
- if (ref === void 0) return all;
76
- if (byId.length > 0) return byId;
77
- return byName;
58
+ return all;
78
59
  }
79
60
  /**
80
61
  * Reads all built agent version manifests from the dist output directory.
@@ -1,14 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { D as CliExitError, _ as isAuthError, a as ui, j as throwReportedCliExit, m as REAUTH_HINT, n as style, t as ANSI, v as isNetworkError, y as toErrorMessage } from "./keystroke.mjs";
4
- import { i as projects } from "./dist-Dw7gCE7y.mjs";
5
- import { i as writeJson } from "./output-BWcVRt-T.mjs";
6
- import { i as requireClient } from "./context-sgKhRc5v.mjs";
3
+ import { N as throwReportedCliExit, b as isNetworkError, g as REAUTH_HINT, k as CliExitError, n as style, p as ui, t as ANSI, x as toErrorMessage, y as isAuthError } from "./keystroke.mjs";
4
+ import { i as projects } from "./dist-B5jy238v.mjs";
5
+ import { i as writeJson } from "./output-DnIFEmi5.mjs";
6
+ import { i as requireClient } from "./context-ebZssGCY.mjs";
7
7
  import { n as CredentialConnectionIdSchema, r as CredentialScopeSchema, t as ConnectionStatusSchema } from "./schema-DFJiNWyd.mjs";
8
- import { a as readManifestsFromOutDir } from "./dist-CTEtWDW4.mjs";
9
- import { t as requireWorkflowsDir } from "./resolve-project-E9mrh_el.mjs";
10
- import { t as getIntegrationCatalog } from "./integration-catalog-CiZ62hb_.mjs";
11
- import { t as groupCredentialRequirements } from "./credentials-DKrSaaLw.mjs";
8
+ import { a as readManifestsFromOutDir } from "./dist-BmbFJq8U.mjs";
9
+ import { t as requireWorkflowsDir } from "./resolve-project-DLKlAy0z.mjs";
10
+ import { t as getIntegrationCatalog } from "./integration-catalog-pSmWHFLQ.mjs";
11
+ import { t as groupCredentialRequirements } from "./credentials-DtwLbee6.mjs";
12
+ import { n as assertAuthoredWorkflowId, t as WORKFLOW_ID_COMMANDS } from "./authored-workflow-ref-fkHEEVnd.mjs";
12
13
  import { z } from "zod";
13
14
  import Table from "cli-table3";
14
15
  //#region ../../packages/shared-types/src/credentials/api/responses.ts
@@ -120,14 +121,24 @@ async function handleWorkflowsEnv(options, ctx) {
120
121
  const client = requireClient(ctx);
121
122
  const workflowsDir = await requireWorkflowsDir(options.path);
122
123
  projects.track(workflowsDir);
124
+ if (options.workflow) await assertAuthoredWorkflowId(options.workflow, workflowsDir, WORKFLOW_ID_COMMANDS.env);
123
125
  const manifests = await readManifestsFromOutDir(workflowsDir, options.workflow);
124
- if (manifests.length === 0) if (options.workflow) {
125
- ui.error(`Workflow "${options.workflow}" not found.`);
126
- ui.hint("Run `keystroke workflows build` first, then re-run this command.");
127
- throwReportedCliExit(`Workflow "${options.workflow}" not found.`);
128
- } else {
126
+ if (manifests.length === 0) {
127
+ if (ctx.jsonMode && !options.workflow) {
128
+ writeJson([]);
129
+ return;
130
+ }
131
+ if (options.workflow) {
132
+ const allManifests = await readManifestsFromOutDir(workflowsDir);
133
+ renderWorkflowNotFound(options.workflow, allManifests.map(({ manifest }) => manifest.id));
134
+ throwReportedCliExit(`Workflow "${options.workflow}" not found.`);
135
+ }
129
136
  ui.hint("No built manifests found.");
130
137
  ui.hint("Run `keystroke workflows build` first, then re-run this command.");
138
+ if (options.check) throw new CliExitError("No built workflow manifests found.", {
139
+ exitCode: 1,
140
+ reported: true
141
+ });
131
142
  return;
132
143
  }
133
144
  const catalog = await getIntegrationCatalog(ctx);
@@ -150,24 +161,36 @@ async function handleWorkflowsEnv(options, ctx) {
150
161
  }
151
162
  throw error;
152
163
  }
153
- if (ctx.jsonMode) writeJson(results.map((r) => ({
154
- workflowName: r.workflowName,
155
- requirements: r.requirements.map((req) => ({
156
- varName: req.varName,
157
- credentialSetId: req.credentialSetId,
158
- sourceLabel: req.sourceLabel,
159
- scope: req.scope,
160
- isPresent: req.status === "set"
161
- }))
162
- })));
164
+ if (ctx.jsonMode) writeJson(results.map(toWorkflowEnvJsonResult));
163
165
  else renderTable(results);
164
166
  if (options.check) {
165
- if (results.some((r) => r.requirements.some((req) => req.status === "missing"))) throw new CliExitError("Missing workflow environment requirements.", {
167
+ if (results.some((r) => r.requirements.some((req) => req.status === "missing"))) throw new CliExitError("Missing workflow credential configuration.", {
166
168
  exitCode: 1,
167
169
  reported: true
168
170
  });
169
171
  }
170
172
  }
173
+ function renderWorkflowNotFound(workflowId, availableWorkflowIds) {
174
+ ui.error(`Workflow "${workflowId}" not found.`);
175
+ if (availableWorkflowIds.length > 0) {
176
+ ui.hint(`Available workflow ids: ${availableWorkflowIds.join(", ")}`);
177
+ return;
178
+ }
179
+ ui.hint("Run `keystroke workflows build` first, then re-run this command.");
180
+ }
181
+ function toWorkflowEnvJsonResult(result) {
182
+ return {
183
+ workflowName: result.workflowName,
184
+ requirements: result.requirements.map((req) => ({
185
+ varName: req.varName,
186
+ credentialSetId: req.credentialSetId,
187
+ sourceLabel: req.sourceLabel,
188
+ scope: req.scope,
189
+ status: req.status
190
+ })),
191
+ fixes: result.fixes
192
+ };
193
+ }
171
194
  async function buildWorkflowEnvResult(manifest, client, catalog) {
172
195
  const seen = /* @__PURE__ */ new Set();
173
196
  const requirements = [];
@@ -224,14 +247,14 @@ function renderTable(results) {
224
247
  for (const result of results) {
225
248
  ui.text(style(`◆ Workflow: ${result.workflowName}`, ANSI.bold));
226
249
  if (result.requirements.length === 0) {
227
- ui.hint(" No environment variables required.");
250
+ ui.hint(" No server-side credentials required.");
228
251
  ui.br();
229
252
  continue;
230
253
  }
231
254
  const table = new Table({
232
255
  head: [
233
- "Variable",
234
- "Source",
256
+ "Credential Key",
257
+ "Credential Set",
235
258
  "Scope",
236
259
  "Status"
237
260
  ],
@@ -250,12 +273,12 @@ function renderTable(results) {
250
273
  const missingCount = result.requirements.filter((r) => r.status === "missing").length;
251
274
  const total = result.requirements.length;
252
275
  if (missingCount > 0) {
253
- ui.warn(`${missingCount} of ${total} required credential(s) are missing on the server.`);
276
+ ui.warn(`${missingCount} of ${total} required server-side credential(s) are not configured.`);
254
277
  if (result.fixes.length > 0) {
255
278
  ui.text("Suggested fixes:");
256
279
  for (const fix of result.fixes) ui.hint(` ${fix.summary}`);
257
280
  }
258
- } else if (total > 0) ui.success(`All ${total} required credential(s) are set on the server.`);
281
+ } else if (total > 0) ui.success(`All ${total} required server-side credential(s) are configured.`);
259
282
  ui.br();
260
283
  }
261
284
  }
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { D as CliExitError, P as logger, a as ui, v as isNetworkError, y as toErrorMessage } from "./keystroke.mjs";
4
- import { r as isJsonMode } from "./output-BWcVRt-T.mjs";
5
- import { n as renderCredentialSchemaMismatchText, r as writeCredentialSchemaMismatchJson, t as isCredentialSchemaMismatchErrorLike } from "./credential-schema-mismatch-ClQgEVtO.mjs";
3
+ import { I as logger, b as isNetworkError, k as CliExitError, p as ui, x as toErrorMessage } from "./keystroke.mjs";
4
+ import { r as isJsonMode } from "./output-DnIFEmi5.mjs";
5
+ import { n as renderCredentialSchemaMismatchText, r as writeCredentialSchemaMismatchJson, t as isCredentialSchemaMismatchErrorLike } from "./credential-schema-mismatch-c17ktoNU.mjs";
6
6
  //#region src/lib/error-boundary.ts
7
7
  async function withErrorBoundary(commandName, fn, options = {}) {
8
8
  const jsonMode = options.json ?? isJsonMode({});
@@ -1,18 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { a as ui, g as getHttpStatus, j as throwReportedCliExit, y as toErrorMessage } from "./keystroke.mjs";
4
- import { a as writeJsonError } from "./output-BWcVRt-T.mjs";
3
+ import { N as throwReportedCliExit, p as ui, v as getHttpStatus, x as toErrorMessage } from "./keystroke.mjs";
4
+ import { a as writeJsonError } from "./output-DnIFEmi5.mjs";
5
5
  //#region src/lib/iam-command-utils.ts
6
- function requireOrganizationId(ctx) {
7
- if (ctx.organizationId) return ctx.organizationId;
8
- const message = "Organization context is required. Pass --org or run `keystroke org switch`.";
9
- if (ctx.jsonMode) writeJsonError(message, {
10
- code: "ORG_REQUIRED",
11
- hint: "Pass --org <organization-id> or run `keystroke org switch`."
12
- });
13
- ui.error(message);
14
- throwReportedCliExit(message);
15
- }
16
6
  function isIamJsonMode(options, ctx) {
17
7
  return options.json === true || ctx.jsonMode;
18
8
  }
@@ -69,4 +59,4 @@ async function readApiErrorBody(error) {
69
59
  }
70
60
  }
71
61
  //#endregion
72
- export { requireOrganizationId as i, isIamJsonMode as n, requireConfirmation as r, handleIamError as t };
62
+ export { isIamJsonMode as n, requireConfirmation as r, handleIamError as t };