@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
package/README.md CHANGED
@@ -89,8 +89,10 @@ keystroke --api-key sk_... --server-url https://api.example.com workflows list
89
89
  | `keystroke test` | Test agent-callable tools. |
90
90
  | `keystroke connect` | Connect official integrations through OAuth. |
91
91
  | `keystroke listen` | Create a temporary URL and print the first captured request body. |
92
- | `keystroke integrations` | List available integrations and registration metadata. |
93
- | `keystroke credentials` | List credential sets, inspect requirements, and upload credential values. |
92
+ | `keystroke search` | Ranked discovery across operations, integrations, or credential definitions. |
93
+ | `keystroke operations` | List and show operations (catalog metadata, including JSON schemas). |
94
+ | `keystroke integrations` | List integrations; `integrations show` returns one integration and its operations. |
95
+ | `keystroke credentials` | Per-org credential sets, requirements, and upload. Use `credentials definitions` for catalog auth shapes. |
94
96
  | `keystroke org` | View and switch organization context. |
95
97
  | `keystroke projects` | List or clear locally tracked projects. |
96
98
  | `keystroke runs inspect` | Inspect workflow and agent runs. |
@@ -174,6 +176,37 @@ The relevant configuration sources are:
174
176
 
175
177
  Use `--debug` on any command to show diagnostic output.
176
178
 
179
+ ## Catalog discovery
180
+
181
+ Discovery commands call the server catalog API via `@keystroke/workflow-sdk`. They require the same auth as deploy: API key plus organization context.
182
+
183
+ ```bash
184
+ export KEYSTROKE_API_KEY=sk_...
185
+ export KEYSTROKE_ORG_ID=<your-org-uuid>
186
+ export SERVER_URL=http://localhost:3001 # local API (port 3001, not the web app on 3000)
187
+
188
+ keystroke search "put object"
189
+ keystroke search "slack" --type integrations
190
+ keystroke search "oauth" --type credentials --integration keystroke:slack
191
+
192
+ keystroke operations list --integration aws-s3
193
+ keystroke operations show aws-s3.put-object
194
+ keystroke operations show aws-s3.put-object --schema --json
195
+
196
+ keystroke integrations list
197
+ keystroke integrations show keystroke:slack # bare `slack` also works today
198
+
199
+ keystroke credentials definitions list --role connection
200
+ keystroke credentials definitions show keystroke:aws-s3
201
+ ```
202
+
203
+ Flags shared across discovery commands:
204
+
205
+ - `--json` — machine-readable output (field names match shared-types schemas).
206
+ - `--full` on `search`, `operations list`, and `credentials definitions list` — pass `include=full` for schemas and extended fields in one round-trip.
207
+
208
+ `keystroke credentials list` lists **your organization's credential sets**, not catalog definitions.
209
+
177
210
  ## Integrations And Credentials
178
211
 
179
212
  Connect an OAuth integration:
@@ -188,6 +221,7 @@ Inspect integration and credential state:
188
221
 
189
222
  ```bash
190
223
  keystroke integrations list
224
+ keystroke credentials definitions list --role connection
191
225
  keystroke credentials requirements --path .
192
226
  keystroke credentials list
193
227
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { a as ui } from "./keystroke.mjs";
4
4
  import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
- import { i as requireClient } from "./context-DHOTSgPb.mjs";
5
+ import { i as requireClient } from "./context-sgKhRc5v.mjs";
6
6
  import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-CSZj4XlH.mjs";
7
7
  //#region src/commands/invites/accept.handler.ts
8
8
  async function handleInvitesAccept(options, ctx) {
@@ -1,7 +1,7 @@
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 { t as OrgRoleSchema } from "./schema-Lbp5lGJu.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/admin/orgs.command.ts
@@ -28,21 +28,21 @@ function createAdminOrgsCommand() {
28
28
  description: "Manage organizations as a platform admin",
29
29
  schema: AdminOrgsListOptionsSchema,
30
30
  optionsConfig: { ...JSON_OPTION_CONFIG },
31
- loadHandler: async () => (await import("./orgs.list.handler-ZRdb-yu5.mjs")).handleAdminOrgsList,
31
+ loadHandler: async () => (await import("./orgs.list.handler--5HutMkl.mjs")).handleAdminOrgsList,
32
32
  subcommands: [
33
33
  createTypedCommand({
34
34
  name: "create",
35
35
  description: "Create an organization (requires system.create_org)",
36
36
  schema: AdminOrgsCreateOptionsSchema,
37
37
  optionsConfig: CREATE_OPTIONS_CONFIG,
38
- loadHandler: async () => (await import("./orgs.create.handler-B_7WjV3s.mjs")).handleAdminOrgsCreate
38
+ loadHandler: async () => (await import("./orgs.create.handler-BO70zIdp.mjs")).handleAdminOrgsCreate
39
39
  }),
40
40
  createTypedCommand({
41
41
  name: "list",
42
42
  description: "List organizations (requires system.view_orgs)",
43
43
  schema: AdminOrgsListOptionsSchema,
44
44
  optionsConfig: { ...JSON_OPTION_CONFIG },
45
- loadHandler: async () => (await import("./orgs.list.handler-ZRdb-yu5.mjs")).handleAdminOrgsList
45
+ loadHandler: async () => (await import("./orgs.list.handler--5HutMkl.mjs")).handleAdminOrgsList
46
46
  }),
47
47
  createTypedCommand({
48
48
  name: "get",
@@ -54,7 +54,7 @@ function createAdminOrgsCommand() {
54
54
  description: "Organization ID",
55
55
  key: "orgId"
56
56
  },
57
- loadHandler: async () => (await import("./orgs.get.handler-BgjeDmfl.mjs")).handleAdminOrgsGet
57
+ loadHandler: async () => (await import("./orgs.get.handler-BuGg5bc9.mjs")).handleAdminOrgsGet
58
58
  })
59
59
  ]
60
60
  });
@@ -157,14 +157,14 @@ function createAdminUsersCommand() {
157
157
  description: "Manage platform users",
158
158
  schema: AdminUsersListOptionsSchema,
159
159
  optionsConfig: { ...JSON_OPTION_CONFIG },
160
- loadHandler: async () => (await import("./users.list.handler-CRk2J8mi.mjs")).handleAdminUsersList,
160
+ loadHandler: async () => (await import("./users.list.handler-Dvl90grq.mjs")).handleAdminUsersList,
161
161
  subcommands: [
162
162
  createTypedCommand({
163
163
  name: "list",
164
164
  description: "List platform users",
165
165
  schema: AdminUsersListOptionsSchema,
166
166
  optionsConfig: { ...JSON_OPTION_CONFIG },
167
- loadHandler: async () => (await import("./users.list.handler-CRk2J8mi.mjs")).handleAdminUsersList
167
+ loadHandler: async () => (await import("./users.list.handler-Dvl90grq.mjs")).handleAdminUsersList
168
168
  }),
169
169
  createTypedCommand({
170
170
  name: "get",
@@ -176,7 +176,7 @@ function createAdminUsersCommand() {
176
176
  description: "User ID",
177
177
  key: "userId"
178
178
  },
179
- loadHandler: async () => (await import("./users.get.handler-DoajzImx.mjs")).handleAdminUsersGet
179
+ loadHandler: async () => (await import("./users.get.handler-C4t1vXwi.mjs")).handleAdminUsersGet
180
180
  }),
181
181
  createTypedCommand({
182
182
  name: "set-role",
@@ -188,7 +188,7 @@ function createAdminUsersCommand() {
188
188
  description: "User ID",
189
189
  key: "userId"
190
190
  },
191
- loadHandler: async () => (await import("./users.set-role.handler-CHYjbx5M.mjs")).handleAdminUsersSetRole
191
+ loadHandler: async () => (await import("./users.set-role.handler-Djw1_VGf.mjs")).handleAdminUsersSetRole
192
192
  })
193
193
  ]
194
194
  });
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { a as ui, j as throwReportedCliExit, n as style, t as ANSI, y as toErrorMessage } from "./keystroke.mjs";
4
- import { i as projects } from "./dist-D_KgdxW5.mjs";
4
+ import { i as projects } from "./dist-Dw7gCE7y.mjs";
5
5
  import { i as writeJson, n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
6
- import { t as createTypedCommand } from "./commander-BTMzBiLq.mjs";
6
+ import { t as createTypedCommand } from "./commander-BlrSdFcu.mjs";
7
7
  import { i as readAgentManifestsFromOutDir } from "./dist-CTEtWDW4.mjs";
8
- import { t as requireWorkflowsDir } from "./resolve-project-DJJZIOmu.mjs";
8
+ import { t as requireWorkflowsDir } from "./resolve-project-E9mrh_el.mjs";
9
9
  import { t as createSpinnerProgress } from "./spinner-progress-lrKDs4YF.mjs";
10
- import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-DPqt_edf.mjs";
11
- import { i as resolveTypeHint } from "./schema-display-XrRCdFL0.mjs";
10
+ import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-Begvjfq8.mjs";
11
+ import { a as resolveTypeHint } from "./schema-display-FvI8QjOQ.mjs";
12
12
  import { z } from "zod";
13
13
  //#region src/commands/agents/inspect-display.ts
14
14
  function renderAgentManifestInspect(manifest, options = {}) {
@@ -1,7 +1,65 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as CredentialConnectionIdSchema, r as CredentialScopeSchema, t as ConnectionStatusSchema } from "./schema-DFJiNWyd.mjs";
4
+ import { t as CatalogDefinitionSourceSchema } from "./schemas-4Mq_bxob.mjs";
4
5
  import { z } from "zod";
6
+ //#region ../../packages/shared-types/src/operations/operations.ts
7
+ const JsonRecordSchema = z.record(z.string(), z.unknown());
8
+ const OperationDefinitionSourceSchema = CatalogDefinitionSourceSchema;
9
+ const OperationDefinitionQuerySourceSchema = z.enum([
10
+ "official",
11
+ "custom",
12
+ "all"
13
+ ]);
14
+ const CsvStringArraySchema = z.preprocess((value) => {
15
+ if (value === void 0 || value === null || value === "") return void 0;
16
+ const values = (Array.isArray(value) ? value : String(value).split(",")).flatMap((entry) => String(entry).split(",")).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
17
+ return values.length === 0 ? void 0 : values;
18
+ }, z.array(z.string().min(1)).optional());
19
+ const OperationCatalogEntrySummarySchema = z.object({
20
+ id: z.string().min(1),
21
+ source: OperationDefinitionSourceSchema,
22
+ tenantId: z.string().nullable(),
23
+ integrationId: z.string().min(1),
24
+ npmPackageName: z.string().min(1),
25
+ credentialSetId: z.string().min(1),
26
+ name: z.string().min(1),
27
+ description: z.string(),
28
+ tags: z.array(z.string())
29
+ });
30
+ const OperationCatalogEntrySchema = OperationCatalogEntrySummarySchema.extend({
31
+ needsApproval: z.boolean(),
32
+ requiredOauthScopes: z.array(z.string()).nullable(),
33
+ inputSchemaJson: JsonRecordSchema,
34
+ outputSchemaJson: JsonRecordSchema,
35
+ schemaFingerprint: z.string().min(1),
36
+ createdAt: z.iso.datetime(),
37
+ updatedAt: z.iso.datetime(),
38
+ deprecatedAt: z.iso.datetime().nullable()
39
+ });
40
+ z.object({
41
+ integrationId: z.string().min(1).optional(),
42
+ credentialSetId: z.string().min(1).optional(),
43
+ tags: CsvStringArraySchema,
44
+ needsApproval: z.stringbool().optional(),
45
+ requiresOauth: z.stringbool().optional(),
46
+ source: OperationDefinitionQuerySourceSchema.optional(),
47
+ includeDeprecated: z.stringbool().optional(),
48
+ cursor: z.string().min(1).optional(),
49
+ limit: z.coerce.number().int().positive().max(200).optional(),
50
+ include: z.enum(["full"]).optional()
51
+ }).strict();
52
+ const ListOperationsResponseSummarySchema = z.object({
53
+ items: z.array(OperationCatalogEntrySummarySchema),
54
+ nextCursor: z.string().nullable()
55
+ });
56
+ const ListOperationsResponseFullSchema = z.object({
57
+ items: z.array(OperationCatalogEntrySchema),
58
+ nextCursor: z.string().nullable()
59
+ });
60
+ z.union([ListOperationsResponseFullSchema, ListOperationsResponseSummarySchema]);
61
+ z.object({ operation: OperationCatalogEntrySchema });
62
+ //#endregion
5
63
  //#region ../../packages/shared-types/src/connections/api.ts
6
64
  /**
7
65
  * API request/response types for the integration catalog and connection endpoints.
@@ -138,6 +196,8 @@ const CredentialConnectionCatalogEntrySchema = z.object({
138
196
  });
139
197
  const IntegrationCatalogEntryBaseSchema = z.object({
140
198
  publicId: z.string(),
199
+ source: CatalogDefinitionSourceSchema.optional(),
200
+ npmPackageName: z.string().min(1).optional(),
141
201
  /**
142
202
  * Lookup IDs for this catalog entry. The canonical credential definition
143
203
  * ID is always included; servers may add aliases later if they reintroduce
@@ -207,15 +267,29 @@ z.object({
207
267
  /**
208
268
  * Case-insensitive substring match against `publicId`, `aliases`, and `name`.
209
269
  */
210
- q: z.string().min(1).optional(),
270
+ q: z.string().trim().min(1).optional(),
271
+ /** Exact package-name match, e.g. "@keystrokehq/aws-s3". */
272
+ npmPackageName: z.string().min(1).optional(),
211
273
  /**
212
274
  * Opt into `internalCredentialSets[]` on each entry. Defaults to `false`
213
275
  * so the common catalog call stays lean. CLI commands that need to render
214
276
  * credential-set display names set this to `true`.
215
277
  */
216
- includeInternal: z.stringbool().optional().default(false)
278
+ includeInternal: z.stringbool().optional().default(false),
279
+ /** Cursor returned by the previous page. */
280
+ cursor: z.string().min(1).optional(),
281
+ /** Maximum integrations to return. */
282
+ limit: z.coerce.number().int().positive().max(200).optional()
217
283
  }).strict();
218
- z.object({ integrations: z.array(IntegrationCatalogEntrySchema) });
284
+ z.object({
285
+ integrations: z.array(IntegrationCatalogEntrySchema),
286
+ nextCursor: z.string().nullable().optional()
287
+ });
288
+ z.object({ integration: IntegrationCatalogEntrySchema });
289
+ z.object({
290
+ operations: z.array(OperationCatalogEntrySummarySchema),
291
+ nextCursor: z.string().nullable()
292
+ });
219
293
  const ConnectionEntrySchema = z.object({
220
294
  id: z.string(),
221
295
  credentialConnectionId: CredentialConnectionIdSchema,
@@ -1,7 +1,7 @@
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 { z } from "zod";
6
6
  //#region src/commands/api-keys/api-keys.command.ts
7
7
  const ApiKeysCreateOptionsSchema = JsonOptionSchema.extend({ name: z.string().optional() });
@@ -23,21 +23,21 @@ function createApiKeysCommand() {
23
23
  description: "Manage API keys for your organization",
24
24
  schema: JsonOptionSchema,
25
25
  optionsConfig: { ...JSON_OPTION_CONFIG },
26
- loadHandler: async () => (await import("./list.handler-DrY5bgm1.mjs")).handleApiKeysList,
26
+ loadHandler: async () => (await import("./list.handler-BiY5NFWd.mjs")).handleApiKeysList,
27
27
  subcommands: [
28
28
  createTypedCommand({
29
29
  name: "list",
30
30
  description: "List all API keys for your organization",
31
31
  schema: JsonOptionSchema,
32
32
  optionsConfig: { ...JSON_OPTION_CONFIG },
33
- loadHandler: async () => (await import("./list.handler-DrY5bgm1.mjs")).handleApiKeysList
33
+ loadHandler: async () => (await import("./list.handler-BiY5NFWd.mjs")).handleApiKeysList
34
34
  }),
35
35
  createTypedCommand({
36
36
  name: "create",
37
37
  description: "Create a new API key (raw key shown once)",
38
38
  schema: ApiKeysCreateOptionsSchema,
39
39
  optionsConfig: CREATE_OPTIONS_CONFIG,
40
- loadHandler: async () => (await import("./create.handler-BuxP18uj.mjs")).handleApiKeysCreate
40
+ loadHandler: async () => (await import("./create.handler-BovbO_g0.mjs")).handleApiKeysCreate
41
41
  }),
42
42
  createTypedCommand({
43
43
  name: "delete",
@@ -49,7 +49,7 @@ function createApiKeysCommand() {
49
49
  description: "API key ID to delete",
50
50
  key: "apiKeyId"
51
51
  },
52
- loadHandler: async () => (await import("./delete.handler-CpYOMtsv.mjs")).handleApiKeysDelete
52
+ loadHandler: async () => (await import("./delete.handler-DkAK396w.mjs")).handleApiKeysDelete
53
53
  })
54
54
  ]
55
55
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { n as DEFAULT_CLI_WEB_URL } from "./default-urls-BoSm4s9C.mjs";
4
4
  import { b as AUTH_TIMEOUT_SECONDS } from "./keystroke.mjs";
5
- import { t as createTypedCommand } from "./commander-BTMzBiLq.mjs";
5
+ import { t as createTypedCommand } from "./commander-BlrSdFcu.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/auth/auth.command.ts
8
8
  const AuthOptionsSchema = z.object({
@@ -31,7 +31,7 @@ function createAuthCommand() {
31
31
  schema: AuthOptionsSchema,
32
32
  optionsConfig: AUTH_OPTIONS_CONFIG,
33
33
  contextMode: "auth-metadata",
34
- loadHandler: async () => (await import("./auth.handler-Dq2fXO3S.mjs")).handleAuth,
34
+ loadHandler: async () => (await import("./auth.handler-CznN_vfz.mjs")).handleAuth,
35
35
  subcommands: [
36
36
  createTypedCommand({
37
37
  name: "clear",
@@ -39,14 +39,14 @@ function createAuthCommand() {
39
39
  schema: AuthClearOptionsSchema,
40
40
  optionsConfig: AUTH_CLEAR_OPTIONS_CONFIG,
41
41
  contextMode: "auth-metadata",
42
- loadHandler: async () => (await import("./clear.handler-FzohTmpU.mjs")).handleAuthClear
42
+ loadHandler: async () => (await import("./clear.handler-PsA5QKHx.mjs")).handleAuthClear
43
43
  }),
44
44
  createTypedCommand({
45
45
  name: "test",
46
46
  description: "Verify that the saved API key is valid",
47
47
  schema: z.object({}),
48
48
  optionsConfig: {},
49
- loadHandler: async () => (await import("./test.handler-CLqnDqY6.mjs")).handleAuthTest
49
+ loadHandler: async () => (await import("./test.handler-BCW0YBPd.mjs")).handleAuthTest
50
50
  }),
51
51
  createTypedCommand({
52
52
  name: "status",
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { n as DEFAULT_CLI_WEB_URL, t as DEFAULT_CLI_SERVER_URL } from "./default-urls-BoSm4s9C.mjs";
4
4
  import { C as CALLBACK_LOOPBACK_ORIGIN, D as CliExitError, P as logger, S as CALLBACK_LOOPBACK_HOST, T as CLI_AUTH_COMMAND, a as ui, d as resolveCliWebUrl, u as resolveCliServerUrl, w as CALLBACK_PATH, x as AUTH_URL_PATH, y as toErrorMessage } from "./keystroke.mjs";
5
- import { n as credentials } from "./dist-D_KgdxW5.mjs";
5
+ import { n as credentials } from "./dist-Dw7gCE7y.mjs";
6
6
  import { t as openBrowser } from "./browser-Dvv5OQrt.mjs";
7
7
  import { hostname } from "node:os";
8
8
  import { z } from "zod";
@@ -3,8 +3,8 @@
3
3
  import { n as readOptionalJsonSchemaKeys, t as manifestToDeclaredCredentialRequirement } from "./declared-credential-requirements-B6h4WRv4.mjs";
4
4
  import { t as AgentVersionManifestSchema } from "./agent-manifest-De5TCxZq.mjs";
5
5
  import { i as createAgentSandboxPackage, n as AGENT_VM_PI_SKILLS_ROOT, r as AGENT_VM_TOOLS_RUNTIME_RELATIVE_PATH, t as AGENT_VM_HOST_CALL_RELATIVE_PATH } from "./agent-bundle-package-DWV6B_5q-B-qzc3zC.mjs";
6
- import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-aLuQvlIq.mjs";
7
- import { t as bundleSandboxAgentTarget } from "./workflow-bundler-BzHk73PM-xQwAF08W.mjs";
6
+ import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-DGK5XTQp.mjs";
7
+ import { t as bundleSandboxAgentTarget } from "./workflow-bundler-BzHk73PM-muPv1yGG.mjs";
8
8
  import { builtinModules } from "node:module";
9
9
  import path from "node:path";
10
10
  import { lstat, readFile, readdir, realpath } from "node:fs/promises";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as TaskBuildManifestSchema } from "./task-BWuIKWh4.mjs";
4
- import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-xQwAF08W.mjs";
5
- import { t as buildTriggerArtifacts } from "./trigger-artifacts-BcRScRSp-C-JBJ6y8.mjs";
4
+ import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-muPv1yGG.mjs";
5
+ import { t as buildTriggerArtifacts } from "./trigger-artifacts-BcRScRSp-BiD2h6do.mjs";
6
6
  import { performance } from "node:perf_hooks";
7
7
  //#region ../../packages/workflow-builder/dist/build-tasks-C09SdfjC.mjs
8
8
  async function buildTaskArtifact(options) {
@@ -4,10 +4,10 @@ import { p as deduplicateCredentialRequirementEntries } from "./credential-requi
4
4
  import { r as WorkflowBuildManifestSchema, t as WORKFLOW_MANIFEST_GENERATOR } from "./workflow-build-manifest-1sC52TIG.mjs";
5
5
  import { a as MANIFEST_FILE_NAME, i as FLOW_FILE_NAME, r as BUNDLE_FILE_NAME, s as SOURCE_MAP_FILE_NAME, t as BUILD_DIR_NAME } from "./layout-B95Tku8F.mjs";
6
6
  import { t as runWithConcurrency } from "./concurrency-gXn9Rw8x-CnBnF2cg.mjs";
7
- import { n as WorkflowLoaderProtocolError, r as WorkflowMetadataLoadError, s as createLoaderProtocolFailure } from "./import-module-y0glInUe-BwuOxEY3.mjs";
7
+ import { n as WorkflowLoaderProtocolError, r as WorkflowMetadataLoadError, s as createLoaderProtocolFailure } from "./import-module-y0glInUe-DV_3dsU0.mjs";
8
8
  import { r as toRelativeFilePath } from "./normalize-path-CojS-CgQ-aOM0agxS.mjs";
9
- import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-xQwAF08W.mjs";
10
- import { t as buildTriggerArtifacts } from "./trigger-artifacts-BcRScRSp-C-JBJ6y8.mjs";
9
+ import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-muPv1yGG.mjs";
10
+ import { t as buildTriggerArtifacts } from "./trigger-artifacts-BcRScRSp-BiD2h6do.mjs";
11
11
  import * as path$1 from "node:path";
12
12
  import { readFile } from "node:fs/promises";
13
13
  import { realpathSync } from "node:fs";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { D as CliExitError } from "./keystroke.mjs";
4
- import { i as projects } from "./dist-D_KgdxW5.mjs";
5
- import { t as requireWorkflowsDir } from "./resolve-project-DJJZIOmu.mjs";
6
- import { a as runWorkflowBuild, i as renderBuildSummary, n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-DPqt_edf.mjs";
7
- import { t as createBuildProgress } from "./build-progress-O9f-4Z4D.mjs";
8
- import { t as withErrorBoundary } from "./error-boundary-DVZipk-A.mjs";
4
+ import { i as projects } from "./dist-Dw7gCE7y.mjs";
5
+ import { t as requireWorkflowsDir } from "./resolve-project-E9mrh_el.mjs";
6
+ import { a as runWorkflowBuild, i as renderBuildSummary, n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-Begvjfq8.mjs";
7
+ import { t as createBuildProgress } from "./build-progress-DLM1Bt4T.mjs";
8
+ import { t as withErrorBoundary } from "./error-boundary-0veZ_RDS.mjs";
9
9
  //#region src/commands/workflows/build.handler.ts
10
10
  async function handleWorkflowsBuild(options, _ctx) {
11
11
  return withErrorBoundary("Build", async () => {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { a as ui } from "./keystroke.mjs";
4
- import { i as projects } from "./dist-D_KgdxW5.mjs";
4
+ import { i as projects } from "./dist-Dw7gCE7y.mjs";
5
5
  //#region src/commands/projects/clear-cache.handler.ts
6
6
  async function handleProjectsClearCache(_options, _ctx) {
7
7
  if (await projects.clear()) ui.success("Projects cache cleared.");
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { P as logger, a as ui, p as AUTH_HINT, y as toErrorMessage } from "./keystroke.mjs";
4
- import { n as credentials } from "./dist-D_KgdxW5.mjs";
5
- import { createClient } from "./src-DNhUmpSl.mjs";
4
+ import { n as credentials } from "./dist-Dw7gCE7y.mjs";
5
+ import { createClient } from "./src-DI-ybNjR.mjs";
6
6
  //#region src/commands/auth/clear.handler.ts
7
7
  async function tryRevokeKey(apiKey, apiKeyId, baseUrl, organizationId) {
8
8
  try {
@@ -78,7 +78,7 @@ function createTypedCommand(params) {
78
78
  const globalOpts = cmd.optsWithGlobals();
79
79
  if (globalOpts.debug) setDebug(true);
80
80
  const contextMode = params.contextMode ?? "full";
81
- const contextModule = await import("./context-DHOTSgPb.mjs").then((n) => n.n);
81
+ const contextModule = await import("./context-sgKhRc5v.mjs").then((n) => n.n);
82
82
  const contextOptions = {
83
83
  apiKey: globalOpts.apiKey,
84
84
  serverUrl: globalOpts.serverUrl,
@@ -1,7 +1,7 @@
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 { z } from "zod";
6
6
  //#region src/commands/connect/connect.command.ts
7
7
  const ConnectOptionsSchema = JsonOptionSchema.extend({
@@ -61,7 +61,7 @@ function createConnectCommand() {
61
61
  description: "Connect an official integration via OAuth (e.g., keystroke connect slack)",
62
62
  schema: ConnectOptionsSchema,
63
63
  optionsConfig: CONNECT_OPTIONS_CONFIG,
64
- loadHandler: async () => (await import("./connect.handler-D1orna55.mjs")).handleConnect,
64
+ loadHandler: async () => (await import("./connect.handler-BthE-7Wg.mjs")).handleConnect,
65
65
  argument: {
66
66
  name: "integrationId",
67
67
  description: "Integration to connect (e.g., slack, linear)",
@@ -3,10 +3,10 @@
3
3
  import { a as ui, j as throwReportedCliExit, p as AUTH_HINT, v as isNetworkError, y as toErrorMessage } from "./keystroke.mjs";
4
4
  import { t as assertWorkflowProjectRoot } from "./project-config-DudGRFPO.mjs";
5
5
  import { i as writeJson } from "./output-BWcVRt-T.mjs";
6
- import { n as resolveWorkflowsDir } from "./resolve-project-DJJZIOmu.mjs";
6
+ import { n as resolveWorkflowsDir } from "./resolve-project-E9mrh_el.mjs";
7
7
  import { t as openBrowser } from "./browser-Dvv5OQrt.mjs";
8
- import { i as InitiateConnectionResponseSchema, n as ConnectionStatusResponseSchema, r as InitiateConnectionRequestSchema } from "./api-O5tdGdzc.mjs";
9
- import { t as getIntegrationCatalog } from "./integration-catalog-Cub_7xCw.mjs";
8
+ import { i as InitiateConnectionResponseSchema, n as ConnectionStatusResponseSchema, r as InitiateConnectionRequestSchema } from "./api-BK3EhPvs.mjs";
9
+ import { t as getIntegrationCatalog } from "./integration-catalog-CiZ62hb_.mjs";
10
10
  //#region src/commands/connect/connect.handler.ts
11
11
  function formatIntegrationLabel(catalog, integrationId) {
12
12
  return catalog.lookupByPublicId(integrationId)?.name ?? integrationId;
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { n as __exportAll } from "./chunk-CH6r78ws.mjs";
4
4
  import { D as CliExitError, E as AuthenticationError, P as logger, _ as isAuthError, a as ui, c as getProcessEnv, m as REAUTH_HINT, p as AUTH_HINT, s as getEnv, y as toErrorMessage } from "./keystroke.mjs";
5
- import { n as credentials } from "./dist-D_KgdxW5.mjs";
6
- import { t as resolveCliCredentials } from "./resolve-cli-credentials-B4crOe_y.mjs";
5
+ import { n as credentials } from "./dist-Dw7gCE7y.mjs";
6
+ import { t as resolveCliCredentials } from "./resolve-cli-credentials-CAOSVMJP.mjs";
7
7
  import { a as writeJsonError } from "./output-BWcVRt-T.mjs";
8
8
  //#region src/lib/context.ts
9
9
  var context_exports = /* @__PURE__ */ __exportAll({
@@ -38,7 +38,7 @@ async function resolveBaseContext(overrides = {}) {
38
38
  const authContext = await resolveAuthContext(overrides);
39
39
  let client = null;
40
40
  if (authContext.apiKey && authContext.baseUrl) try {
41
- const { createClient } = await import("./src-DNhUmpSl.mjs");
41
+ const { createClient } = await import("./src-DI-ybNjR.mjs");
42
42
  client = createClient({
43
43
  apiKey: authContext.apiKey,
44
44
  baseUrl: authContext.baseUrl,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { a as ui, j as throwReportedCliExit, y as toErrorMessage } from "./keystroke.mjs";
4
4
  import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
- import { i as requireClient } from "./context-DHOTSgPb.mjs";
5
+ import { i as requireClient } from "./context-sgKhRc5v.mjs";
6
6
  //#region src/commands/api-keys/create.handler.ts
7
7
  async function handleApiKeysCreate(options, ctx) {
8
8
  const client = requireClient(ctx);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { r as getKeystrokeProjectPath } from "./paths-JzzFkXQA-CEipIeVl.mjs";
4
- import "./dist-D_KgdxW5.mjs";
3
+ import { r as getKeystrokeProjectPath } from "./paths-DpHfoaXN-CdPimpky.mjs";
4
+ import "./dist-Dw7gCE7y.mjs";
5
5
  import * as fs from "node:fs/promises";
6
6
  import { z } from "zod";
7
7
  //#region src/lib/credential-env-map.ts