@keystrokehq/cli 0.0.11 → 0.0.13

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 (146) hide show
  1. package/dist/{accept.handler-DWuxmMuY.mjs → accept.handler-BU6kg8ET.mjs} +1 -1
  2. package/dist/{admin-BK4bFTTd.mjs → admin-B4GNbCl5.mjs} +9 -9
  3. package/dist/{agent-manifest-sJFbH5H8.mjs → agent-manifest-CZdlCTFs.mjs} +5 -5
  4. package/dist/{agents-DYnw2VPX.mjs → agents-LtoIcJGY.mjs} +6 -6
  5. package/dist/api-DuKKdCpF.mjs +246 -0
  6. package/dist/{api-keys-Dizx3YqE.mjs → api-keys-BE_hLonn.mjs} +5 -5
  7. package/dist/{auth-BqsKd4IA.mjs → auth-DNK5MYm4.mjs} +5 -5
  8. package/dist/{auth.handler-BsoWeCFD.mjs → auth.handler-DrjDODhZ.mjs} +1 -1
  9. package/dist/{build-agents-DfbiMZ_e-CgnKa9A6.mjs → build-agents-DseUtzd4-DIDGsZWL.mjs} +12 -13
  10. package/dist/{build-metadata-zidV9Cai-Bq37kBOM.mjs → build-metadata-qebrtraZ-D4SQNsBw.mjs} +19 -35
  11. package/dist/{build-progress-DigAP-BN.mjs → build-progress-CITED2tv.mjs} +1 -1
  12. package/dist/{build-tasks-O1jYtlv1-Bkw0w1r3.mjs → build-tasks-GVuMLS0h-DnS9QWzf.mjs} +4 -4
  13. package/dist/{build-workflows-3fdvdHHf-BDTy9QgT.mjs → build-workflows-Dmzay1vP-DKVuBAjD.mjs} +17 -18
  14. package/dist/{build.handler-B2UDhh72.mjs → build.handler-BZnLQt0_.mjs} +4 -4
  15. package/dist/{clear.handler-BR97yudD.mjs → clear.handler-B1c17nAi.mjs} +1 -1
  16. package/dist/{commander-DcftG6dX.mjs → commander-BwtBoukr.mjs} +2 -2
  17. package/dist/{common-B3bLe3Mk.mjs → common-BaGFkj3n.mjs} +2 -2
  18. package/dist/{connect-DQ4xIcyE.mjs → connect-IPcL37np.mjs} +12 -6
  19. package/dist/{connect.handler-CWSLgf87.mjs → connect.handler-ToY6qmMz.mjs} +74 -224
  20. package/dist/{context-1VgRbzr-.mjs → context-DQ4IA0yO.mjs} +1 -1
  21. package/dist/{create.handler-C2CkPWsy.mjs → create.handler-BAyG0PmG.mjs} +1 -1
  22. package/dist/credential-requirements-FtBk5JVB.mjs +250 -0
  23. package/dist/credentials-Bu1MBiCL.mjs +182 -0
  24. package/dist/{credentials-D8_AwH9o.mjs → credentials-CZiu-534.mjs} +12 -7
  25. package/dist/{current-deployment-workflow-B05z0EQa.mjs → current-deployment-workflow-zTmYbUjh.mjs} +5 -5
  26. package/dist/{current.handler-CuAtMZmm.mjs → current.handler-DA4FGfUP.mjs} +1 -1
  27. package/dist/{declared-credential-requirements-BtlcsEVn.mjs → declared-credential-requirements-B6h4WRv4.mjs} +5 -34
  28. package/dist/{delete.handler-DDY3X1Zm.mjs → delete.handler-CJcyvnUF.mjs} +1 -1
  29. package/dist/{deploy-B8TYutOi.mjs → deploy-BvaFgVvf.mjs} +1 -1
  30. package/dist/{deploy-Cn6FFnOM.mjs → deploy-DdMP-YaQ.mjs} +2 -2
  31. package/dist/{deploy-progress-XAfautnA.mjs → deploy-progress-CLO-yidq.mjs} +1 -1
  32. package/dist/{deploy.handler-D1DcAe-h.mjs → deploy.handler-Bag7rBG-.mjs} +16 -16
  33. package/dist/{detect-env-access-CwkOYeYM-D4o8gRZs.mjs → detect-env-access-CwkOYeYM-EmkYvbfJ.mjs} +1 -1
  34. package/dist/{diff.handler-BU6IewNG.mjs → diff.handler-Brgc-Ccl.mjs} +3 -3
  35. package/dist/{dist-DvO0q6Fo.mjs → dist-BMkNN03r.mjs} +16 -16
  36. package/dist/{env.handler-C6YAmHLi.mjs → env.handler-DFKzjIQT.mjs} +10 -7
  37. package/dist/{error-boundary-CpaVvFXk.mjs → error-boundary-B2ZKRkZI.mjs} +1 -1
  38. package/dist/{file-metadata-BvGM-B2v.mjs → file-metadata-Dwy9KKq_.mjs} +2 -2
  39. package/dist/{import-module-DDPnzlJ1-BIBSgOhK.mjs → import-module-DEI7R8Yh-Xz-KAPvB.mjs} +248 -246
  40. package/dist/{init-Da6_obl0.mjs → init-DhnABm3J.mjs} +2 -2
  41. package/dist/{init.handler-Cq2nk8DO.mjs → init.handler-QgehN8B4.mjs} +4 -4
  42. package/dist/{inspect.handler-D4YGryQB.mjs → inspect.handler-CMOFOb4G.mjs} +3 -3
  43. package/dist/{integration-catalog-DtNWaMvh.mjs → integration-catalog-BRrJIAVz.mjs} +5 -5
  44. package/dist/{integrations-CB_Ukq2g.mjs → integrations-7-U7nmkh.mjs} +7 -6
  45. package/dist/{invites-BOhuBtoq.mjs → invites-CmGmnUla.mjs} +4 -4
  46. package/dist/{invites.list.handler-C-Wv6E1g.mjs → invites.list.handler-CmkIf-uW.mjs} +1 -1
  47. package/dist/{invites.resend.handler-CI78XlQS.mjs → invites.resend.handler-FZl20yat.mjs} +1 -1
  48. package/dist/{invites.revoke.handler-DigAgNwB.mjs → invites.revoke.handler-D95mrfmB.mjs} +1 -1
  49. package/dist/keystroke.mjs +21 -21
  50. package/dist/{list-enrichment-Cxlq6BB9.mjs → list-enrichment-I4XQaMg0.mjs} +5 -1
  51. package/dist/{list.handler-OiLEylzS.mjs → list.handler-BrTW2viq.mjs} +1 -1
  52. package/dist/{list.handler-CsODcH6e.mjs → list.handler-Cp767f5l.mjs} +1 -1
  53. package/dist/{list.handler-BsyGhXns.mjs → list.handler-DRnHsEa0.mjs} +1 -1
  54. package/dist/{list.handler-B6IByHHB.mjs → list.handler-DXl8igi2.mjs} +13 -5
  55. package/dist/{list.handler-BpVNYShU.mjs → list.handler-DsYyTUhA.mjs} +1 -1
  56. package/dist/{list.handler--a1JEGSD.mjs → list.handler-H8aQSsFM.mjs} +3 -3
  57. package/dist/{list.handler-Dr9Ti-dt.mjs → list.handler-uzC77oIy.mjs} +3 -3
  58. package/dist/{listen-DUPk6cZC.mjs → listen-DckJq0y0.mjs} +2 -2
  59. package/dist/{listen.handler-B5WimrfF.mjs → listen.handler-Bf5MXKPO.mjs} +2 -2
  60. package/dist/{logs-C5_4lh3p.mjs → logs-D_l5BIn2.mjs} +3 -3
  61. package/dist/{logs.handler-CBHPwDuC.mjs → logs.handler-kYO3Uv9t.mjs} +2 -2
  62. package/dist/{members.add.handler-LcQJYBsu.mjs → members.add.handler-C2cppd-9.mjs} +1 -1
  63. package/dist/{members.invite.handler-p279O2aC.mjs → members.invite.handler-DY6kS4LN.mjs} +1 -1
  64. package/dist/{members.list.handler-Cjukjuot.mjs → members.list.handler-CFBG3SBw.mjs} +1 -1
  65. package/dist/{members.remove.handler-CzxPiQFv.mjs → members.remove.handler-LQ61_qip.mjs} +1 -1
  66. package/dist/{members.update.handler-CX5q86e3.mjs → members.update.handler-CqISA1mf.mjs} +1 -1
  67. package/dist/{normalize-path-CojS-CgQ-D_WTiHKw.mjs → normalize-path-CojS-CgQ-D5D0AIHR.mjs} +1 -1
  68. package/dist/{org-CnlKW-Hl.mjs → org-KQ2nD0yN.mjs} +15 -15
  69. package/dist/{orgs.create.handler-DRILhxdn.mjs → orgs.create.handler-Mv5CTGcG.mjs} +1 -1
  70. package/dist/{orgs.get.handler-Cue6stoX.mjs → orgs.get.handler-DvvOhshX.mjs} +1 -1
  71. package/dist/{orgs.list.handler-fuDLNI5X.mjs → orgs.list.handler-wWAg6cKg.mjs} +1 -1
  72. package/dist/{paused.handler-CuOVH4DZ.mjs → paused.handler-CbMkPD9e.mjs} +1 -1
  73. package/dist/{project-config-D9eFU8Jk.mjs → project-config-CJGSh2RQ.mjs} +4 -7
  74. package/dist/{projects-DN7dX6nN.mjs → projects-CWLOF5x4.mjs} +656 -3
  75. package/dist/{projects-DdgHbUpR.mjs → projects-CYqeKQGT.mjs} +4 -4
  76. package/dist/{requirements.handler-CX13XiXT.mjs → requirements.handler-CnDTBcH5.mjs} +5 -5
  77. package/dist/{resolve-project-C6UAOfAG.mjs → resolve-project-bVPMcs-y.mjs} +1 -1
  78. package/dist/{run-polling-1CTIeDea.mjs → run-polling-49w3PYAv.mjs} +3 -3
  79. package/dist/{run.handler-BxLH75WW.mjs → run.handler-Bma88649.mjs} +5 -5
  80. package/dist/{runs-lfE7r6i2.mjs → runs-HJejvQnQ.mjs} +2 -2
  81. package/dist/{schema-BgGlAs8a.mjs → schema-DFJiNWyd.mjs} +2 -1
  82. package/dist/schemas-DodkHgnS.mjs +280 -0
  83. package/dist/{skills-sync.handler-CntKndFm.mjs → skills-sync.handler-Cf74vKJA.mjs} +1 -1
  84. package/dist/{skills.command-X5zZwz2d.mjs → skills.command-KyAwBeST.mjs} +3 -3
  85. package/dist/{source-analysis-CHkWMC40.mjs → source-analysis-CJPymdaA.mjs} +1 -1
  86. package/dist/{source-analysis-DEEChuND-Csu0oOlw.mjs → source-analysis-DTnwNwKq-DoBxUDCg.mjs} +5 -5
  87. package/dist/{src--fCtOxNX.mjs → src-D-dFmoAF.mjs} +1 -1
  88. package/dist/{switch.handler-RaeKZ3ZB.mjs → switch.handler-DfsKVtR6.mjs} +1 -1
  89. package/dist/{sync-C89mJp7Y.mjs → sync-Bi2M_TUK.mjs} +2 -2
  90. package/dist/{sync.handler-BoAHHUQs.mjs → sync.handler-D6YFuVlq.mjs} +6 -6
  91. package/dist/{schedule-BWAI6qLx.mjs → task-BBgEvdG1.mjs} +395 -25
  92. package/dist/{task-target-build-D5IrHqSl.mjs → task-target-build-atWwwnSF.mjs} +8 -8
  93. package/dist/task-target-deploy-CRsrQTOy.mjs +4 -0
  94. package/dist/{task-target-deploy-Bf5i3ox1-2K0hAwzk.mjs → task-target-deploy-CZBGNC0H-BwPSfaJQ.mjs} +2 -2
  95. package/dist/task-target-deploy-runner.mjs +5 -5
  96. package/dist/{test-gPQJRkqa.mjs → test-Ctjy8mwC.mjs} +32 -144
  97. package/dist/{test.handler-B5GF5txS.mjs → test.handler-St9sBXyH.mjs} +1 -1
  98. package/dist/{trigger-artifacts-B3OCTX9K-ME6IVdUB.mjs → trigger-artifacts-RizI57RC-C-yCtEi-.mjs} +9 -9
  99. package/dist/{trigger-manifest-B3Gq1739.mjs → trigger-manifest-D5rnpPkA.mjs} +1 -1
  100. package/dist/{try-deploy.handler-dA_YGWRq.mjs → try-deploy.handler-BMcWQVST.mjs} +9 -9
  101. package/dist/{upgrade-xByIxaYu.mjs → upgrade-YavAf8AC.mjs} +2 -2
  102. package/dist/{upload.handler-BFDM6n_6.mjs → upload.handler-DemogvI1.mjs} +129 -18
  103. package/dist/{users.get.handler-CzaYM2bi.mjs → users.get.handler-B20PMSbl.mjs} +1 -1
  104. package/dist/{users.list.handler-CpOWwzBb.mjs → users.list.handler-BplFTjv3.mjs} +1 -1
  105. package/dist/{users.set-role.handler-BjiSNP2d.mjs → users.set-role.handler-wdmI6o3G.mjs} +1 -1
  106. package/dist/{utils-C_qCshBA.mjs → utils-DpEtybzI.mjs} +2 -2
  107. package/dist/{validate.handler-BtDSKAFY.mjs → validate.handler-DSAvNgns.mjs} +3 -3
  108. package/dist/{workflow-build-Z2_jkOsZ.mjs → workflow-build-Cmu1TOFu.mjs} +32 -32
  109. package/dist/{workflow-manifest-BfL74mjp.mjs → workflow-build-manifest-OPFqFD6f.mjs} +26 -28
  110. package/dist/{workflow-bundler-BzHk73PM-tt09RbIA.mjs → workflow-bundler-BzHk73PM-UJQa7Ubk.mjs} +2 -2
  111. package/dist/{workflows-V09d2r2H.mjs → workflows-DTlypo2t.mjs} +26 -27
  112. package/dist/{writer-CtvttJdP-DZJ0mZCm.mjs → writer-CtvttJdP-BfNsrheU.mjs} +5 -5
  113. package/package.json +11 -9
  114. package/dist/constants-BUgIAu2a.mjs +0 -8
  115. package/dist/credential-requirements-BCW8aQWS.mjs +0 -480
  116. package/dist/credentials-DAQfKqn0.mjs +0 -152025
  117. package/dist/get-intrinsic-BjqiGgLt.mjs +0 -658
  118. package/dist/hosted-action-dispatcher-registry-BWEtn13o.mjs +0 -126
  119. package/dist/schema-B-Wgo4rJ.mjs +0 -81
  120. package/dist/schemas-9FmGqrPT.mjs +0 -42
  121. package/dist/task-1qz1XNq7.mjs +0 -96
  122. package/dist/task-target-deploy-Bzfftyru.mjs +0 -4
  123. /package/dist/{agent-bundle-package-DWV6B_5q-B-qzc3zC.mjs → agent-bundle-package-DWV6B_5q-cB76j6UL.mjs} +0 -0
  124. /package/dist/{browser-CvuyMLhI.mjs → browser-B4K0VW8p.mjs} +0 -0
  125. /package/dist/{clear-cache.handler-D-wboLB6.mjs → clear-cache.handler-Dywqc7TG.mjs} +0 -0
  126. /package/dist/{clear.handler-BC6pz0x-.mjs → clear.handler-ui4e1CnJ.mjs} +0 -0
  127. /package/dist/{concurrency-gXn9Rw8x-CnBnF2cg.mjs → concurrency-gXn9Rw8x-CaI6Vtbu.mjs} +0 -0
  128. /package/dist/{credential-env-map-C23GV6LN.mjs → credential-env-map-D0zgoUl0.mjs} +0 -0
  129. /package/dist/{credential-schema-mismatch-DM9Y91jL.mjs → credential-schema-mismatch-8pqwvswO.mjs} +0 -0
  130. /package/dist/{diff-utils-AATn2n56.mjs → diff-utils-BoXI705D.mjs} +0 -0
  131. /package/dist/{layout-CXkZEsXI.mjs → layout-DRf9qUf8.mjs} +0 -0
  132. /package/dist/{logs.handler-ClIIOeQB.mjs → logs.handler-DxSKmDCq.mjs} +0 -0
  133. /package/dist/{metadata-layout-C6ed-9dl-C6Bylr_z.mjs → metadata-layout-C6ed-9dl-EF5pCtIH.mjs} +0 -0
  134. /package/dist/{options-CIVqkc8V.mjs → options-DFPs-tAB.mjs} +0 -0
  135. /package/dist/{oxc-B3KI3rf_-ghZc3xZ5.mjs → oxc-B3KI3rf_-CHDUXsus.mjs} +0 -0
  136. /package/dist/{read-credential-keys-77a91T8M-B0eiobOd.mjs → read-credential-keys-77a91T8M-CzXPGxdU.mjs} +0 -0
  137. /package/dist/{register.handler-CpP_KB2u.mjs → register.handler-D7ZZAnGP.mjs} +0 -0
  138. /package/dist/{rolldown-runtime-twds-ZHy-RuJszab7.mjs → rolldown-runtime-twds-ZHy-3DMm_Sby.mjs} +0 -0
  139. /package/dist/{run-polling-DDpkIvwy.mjs → run-polling-Cb4ssXIE.mjs} +0 -0
  140. /package/dist/{schema-display-DuWBmkwk.mjs → schema-display-CyCWSgfY.mjs} +0 -0
  141. /package/dist/{skills.handler-CofL4oKs.mjs → skills.handler-C_4VzVmc.mjs} +0 -0
  142. /package/dist/{spinner-progress-Bt8zXPOc.mjs → spinner-progress-CS1BEdNB.mjs} +0 -0
  143. /package/dist/{status.handler-6cuHa0R0.mjs → status.handler-Cm9aNUBn.mjs} +0 -0
  144. /package/dist/{sync-keystroke-agent-skills-D746f2W_.mjs → sync-keystroke-agent-skills-CX9fS5nQ.mjs} +0 -0
  145. /package/dist/{upgrade.handler-DhKeyCy5.mjs → upgrade.handler-C2eZ_tg3.mjs} +0 -0
  146. /package/dist/{upload-C1qFWMm0.mjs → upload-C0kaZu08.mjs} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { n as ui } from "./keystroke.mjs";
4
4
  import { i as writeJson } from "./output-CGdYhH0p.mjs";
5
- import { i as requireClient } from "./context-1VgRbzr-.mjs";
5
+ import { i as requireClient } from "./context-DQ4IA0yO.mjs";
6
6
  import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-ByLX0A-V.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-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-DcftG6dX.mjs";
4
+ import { t as createTypedCommand } from "./commander-BwtBoukr.mjs";
5
5
  import { t as OrgRoleSchema } from "./schema-_FQrHcIS.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-fuDLNI5X.mjs")).handleAdminOrgsList,
31
+ loadHandler: async () => (await import("./orgs.list.handler-wWAg6cKg.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-DRILhxdn.mjs")).handleAdminOrgsCreate
38
+ loadHandler: async () => (await import("./orgs.create.handler-Mv5CTGcG.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-fuDLNI5X.mjs")).handleAdminOrgsList
45
+ loadHandler: async () => (await import("./orgs.list.handler-wWAg6cKg.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-Cue6stoX.mjs")).handleAdminOrgsGet
57
+ loadHandler: async () => (await import("./orgs.get.handler-DvvOhshX.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-CpOWwzBb.mjs")).handleAdminUsersList,
160
+ loadHandler: async () => (await import("./users.list.handler-BplFTjv3.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-CpOWwzBb.mjs")).handleAdminUsersList
167
+ loadHandler: async () => (await import("./users.list.handler-BplFTjv3.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-CzaYM2bi.mjs")).handleAdminUsersGet
179
+ loadHandler: async () => (await import("./users.get.handler-B20PMSbl.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-BjiSNP2d.mjs")).handleAdminUsersSetRole
191
+ loadHandler: async () => (await import("./users.set-role.handler-wdmI6o3G.mjs")).handleAdminUsersSetRole
192
192
  })
193
193
  ]
194
194
  });
@@ -35,7 +35,7 @@ const CredentialSetProxyConfigSchema = z.object({
35
35
  hostPatterns: z.array(z.string().min(1)).optional(),
36
36
  injection: CredentialSetProxyInjectionSchema.optional()
37
37
  });
38
- const ResolvedCredentialSetIdSchema = z.string().trim().min(1).max(255).refine((value) => /^[a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+)?$/.test(value), { error: "resolvedId must be a valid credential set ID, optionally namespaced (e.g. \"slack\" or \"keystroke:slack\")" });
38
+ const CredentialDefinitionIdSchema = z.string().trim().min(1).max(255).refine((value) => /^[a-zA-Z0-9_-]+$/.test(value), { error: "resolvedId must be a valid credential definition id (e.g. \"slack\")" });
39
39
  const McpTransportSchema = z.discriminatedUnion("type", [
40
40
  z.object({
41
41
  type: z.literal("stdio"),
@@ -64,7 +64,7 @@ const McpCredentialBindingsSchema = z.object({
64
64
  });
65
65
  const AgentMcpCredentialSetSchema = z.object({
66
66
  id: z.string().trim().min(1),
67
- resolvedId: ResolvedCredentialSetIdSchema,
67
+ resolvedId: CredentialDefinitionIdSchema,
68
68
  credentialKeys: z.array(z.string()),
69
69
  /** Persistence-layer schema fingerprint (same contract as workflow manifests). */
70
70
  schemaFingerprint: z.string().min(1).optional()
@@ -201,7 +201,7 @@ const AgentVersionManifestSchema = z.object({
201
201
  midSessionSnapshot: z.boolean().optional(),
202
202
  suspensions: z.array(AgentToolSuspensionReasonSchema).optional(),
203
203
  credentialSets: z.array(z.object({
204
- id: ResolvedCredentialSetIdSchema,
204
+ id: CredentialDefinitionIdSchema,
205
205
  required: z.boolean().default(true)
206
206
  })).optional(),
207
207
  /**
@@ -213,7 +213,7 @@ const AgentVersionManifestSchema = z.object({
213
213
  outputSchemaIsTabular: z.boolean().optional()
214
214
  })).optional(),
215
215
  credentialSets: z.array(z.object({
216
- resolvedId: ResolvedCredentialSetIdSchema,
216
+ resolvedId: CredentialDefinitionIdSchema,
217
217
  scope: IntegrationScopeSchema.optional(),
218
218
  credentialKeys: z.array(z.string()),
219
219
  /** Subset of `credentialKeys` that may be absent from the vault
@@ -232,7 +232,7 @@ const AgentVersionManifestSchema = z.object({
232
232
  provider: z.string(),
233
233
  mode: z.enum(["platform", "custom"]),
234
234
  credentialSet: z.object({
235
- resolvedId: ResolvedCredentialSetIdSchema,
235
+ resolvedId: CredentialDefinitionIdSchema,
236
236
  credentialKeys: z.array(z.string()),
237
237
  /** Persistence-layer schema fingerprint (same contract as workflow manifests). */
238
238
  schemaFingerprint: z.string().min(1).optional()
@@ -3,12 +3,12 @@
3
3
  import { N as throwReportedCliExit, f as ANSI, n as ui, p as style, x as toErrorMessage } from "./keystroke.mjs";
4
4
  import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
5
  import { i as writeJson, n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
6
- import { t as createTypedCommand } from "./commander-DcftG6dX.mjs";
7
- import { i as readAgentManifestsFromOutDir } from "./dist-DvO0q6Fo.mjs";
8
- import { t as requireWorkflowsDir } from "./resolve-project-C6UAOfAG.mjs";
9
- import { t as createSpinnerProgress } from "./spinner-progress-Bt8zXPOc.mjs";
10
- import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-Z2_jkOsZ.mjs";
11
- import { i as resolveTypeHint } from "./schema-display-DuWBmkwk.mjs";
6
+ import { t as createTypedCommand } from "./commander-BwtBoukr.mjs";
7
+ import { i as readAgentManifestsFromOutDir } from "./dist-BMkNN03r.mjs";
8
+ import { t as requireWorkflowsDir } from "./resolve-project-bVPMcs-y.mjs";
9
+ import { t as createSpinnerProgress } from "./spinner-progress-CS1BEdNB.mjs";
10
+ import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-Cmu1TOFu.mjs";
11
+ import { i as resolveTypeHint } from "./schema-display-CyCWSgfY.mjs";
12
12
  import { z } from "zod";
13
13
  //#region src/commands/agents/inspect-display.ts
14
14
  function renderAgentManifestInspect(manifest, options = {}) {
@@ -0,0 +1,246 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { n as CredentialConnectionIdSchema, r as CredentialScopeSchema, t as ConnectionStatusSchema } from "./schema-DFJiNWyd.mjs";
4
+ import { z } from "zod";
5
+ //#region ../../packages/shared-types/src/connections/api.ts
6
+ /**
7
+ * API request/response types for the integration catalog and connection endpoints.
8
+ *
9
+ * These types are shared between the server route handlers, the Keystroke SDK, and
10
+ * any in-repo consumer (CLI, web). They divide the surface into two clearly-scoped
11
+ * endpoints:
12
+ *
13
+ * GET /api/v1/integrations — the static Keystroke integration catalog (what can
14
+ * be connected). Auth required; not org-scoped; long-cached.
15
+ *
16
+ * GET /api/v1/connections — the caller's configured connections for the current
17
+ * org (what has been connected). Auth + org required; no-cache.
18
+ *
19
+ * Each endpoint validates its query string with the exported `*QuerySchema`, and
20
+ * the SDK types its method signatures against the same schema so that invalid
21
+ * params cannot be sent or accepted.
22
+ */
23
+ const InitiateConnectionRequestSchema = z.object({
24
+ credentialConnectionId: CredentialConnectionIdSchema.optional(),
25
+ providerAppId: z.string().optional(),
26
+ /**
27
+ * Connection-specific setup input. For example, a Shopify OAuth connection
28
+ * can require `{ shopDomain: "example.myshopify.com" }` to build a
29
+ * tenant-specific authorize URL.
30
+ */
31
+ input: z.record(z.string(), z.unknown()).optional(),
32
+ requestedScopes: z.array(z.string()).optional()
33
+ });
34
+ const InitiateConnectionResponseSchema = z.object({
35
+ authUrl: z.string(),
36
+ initiatedAt: z.number()
37
+ });
38
+ const ConnectionFailureReasonSchema = z.enum([
39
+ "missing_state",
40
+ "invalid_state",
41
+ "provider_denied",
42
+ "unknown_integration",
43
+ "provider_app_not_configured",
44
+ "token_exchange_failed",
45
+ "installation_metadata_invalid",
46
+ "validation_failed",
47
+ "persist_failed",
48
+ "unknown_error"
49
+ ]);
50
+ const ConnectionStatusNotStartedSchema = z.object({ status: z.literal("not_started") });
51
+ const ConnectionStatusPendingSchema = z.object({ status: z.literal("pending") });
52
+ const ConnectionStatusConnectedSchema = z.object({ status: z.literal("connected") });
53
+ const ConnectionStatusFailedSchema = z.object({
54
+ status: z.literal("failed"),
55
+ reason: ConnectionFailureReasonSchema,
56
+ /**
57
+ * Optional human-readable detail. Truncated by the server to
58
+ * {@link CONNECTION_FAILURE_DETAIL_MAX_CHARS} characters before being
59
+ * persisted in `credential_sets.last_callback_error_detail` and
60
+ * before being echoed in the callback redirect query.
61
+ */
62
+ message: z.string().max(300).optional(),
63
+ /** ISO-8601 timestamp of when the failure was recorded. */
64
+ failedAt: z.string()
65
+ });
66
+ const ConnectionStatusResponseSchema = z.discriminatedUnion("status", [
67
+ ConnectionStatusNotStartedSchema,
68
+ ConnectionStatusPendingSchema,
69
+ ConnectionStatusConnectedSchema,
70
+ ConnectionStatusFailedSchema
71
+ ]);
72
+ const ConnectionKindValues = [
73
+ "oauth",
74
+ "manual",
75
+ "credentials-exchange"
76
+ ];
77
+ const ConnectionKindSchema = z.enum(ConnectionKindValues);
78
+ const InternalCredentialSetEntrySchema = z.object({
79
+ credentialDefinitionId: z.string(),
80
+ publicId: z.string(),
81
+ displayName: z.string(),
82
+ /**
83
+ * Internal credential-set role. Currently the only first-class role is
84
+ * `'provider-app-definition'`; other values are accepted for forward-compat
85
+ * so newer servers can introduce roles without breaking older SDKs.
86
+ */
87
+ role: z.string()
88
+ });
89
+ const CredentialConnectionCatalogEntrySchema = z.object({
90
+ id: z.string(),
91
+ kind: z.string(),
92
+ label: z.string().optional(),
93
+ description: z.string().optional(),
94
+ recommended: z.boolean().optional(),
95
+ advanced: z.boolean().optional(),
96
+ needsRawSecret: z.boolean().optional(),
97
+ generated: z.boolean().optional(),
98
+ instructions: z.string().optional(),
99
+ input: z.record(z.string(), z.unknown()).optional(),
100
+ fields: z.array(z.record(z.string(), z.unknown())).optional(),
101
+ authUrl: z.string().optional(),
102
+ tokenUrl: z.string().optional(),
103
+ scopes: z.array(z.string()).optional(),
104
+ tokenType: z.enum(["long-lived", "refreshable"]).optional(),
105
+ vault: z.record(z.string(), z.unknown()).optional(),
106
+ oauth: z.record(z.string(), z.unknown()).optional(),
107
+ revokeUrl: z.string().nullable().optional(),
108
+ pkce: z.boolean().optional(),
109
+ defaultExpiresInSeconds: z.number().optional(),
110
+ exchange: z.record(z.string(), z.unknown()).optional(),
111
+ resolver: z.record(z.string(), z.unknown()).optional()
112
+ });
113
+ const IntegrationCatalogEntryBaseSchema = z.object({
114
+ publicId: z.string(),
115
+ /**
116
+ * Public-facing aliases that resolve to this canonical `publicId`
117
+ * (e.g., `"github"` aliases `"github-account"`). Includes the canonical
118
+ * ID itself — callers can key a lookup table by every entry in this
119
+ * list and get the same catalog record back.
120
+ */
121
+ aliases: z.array(z.string()),
122
+ name: z.string(),
123
+ description: z.string().optional(),
124
+ /**
125
+ * Credential definition metadata for the integration's primary connection.
126
+ * `storedKeys` drives upload flows (what the vault stores), while
127
+ * `authKeys` describes the post-resolve runtime shape.
128
+ */
129
+ credentialSet: z.object({
130
+ credentialDefinitionId: z.string(),
131
+ authKeys: z.array(z.string()),
132
+ storedKeys: z.array(z.string()),
133
+ optionalStoredKeys: z.array(z.string()).optional(),
134
+ schemaFingerprint: z.string().optional()
135
+ }),
136
+ /** Serialized credential acquisition paths rendered by connect/upload UIs. */
137
+ connections: z.array(CredentialConnectionCatalogEntrySchema),
138
+ /**
139
+ * Internal credential sets associated with the integration (e.g., provider
140
+ * app definitions). Populated only when the caller requests
141
+ * `includeInternal=true`; otherwise empty.
142
+ */
143
+ internalCredentialSets: z.array(InternalCredentialSetEntrySchema)
144
+ });
145
+ const OAuthIntegrationCatalogEntrySchema = IntegrationCatalogEntryBaseSchema.extend({
146
+ connectionKind: z.literal("oauth"),
147
+ tokenType: z.enum(["long-lived", "refreshable"]),
148
+ scopes: z.array(z.string())
149
+ });
150
+ const ManualIntegrationCatalogEntrySchema = IntegrationCatalogEntryBaseSchema.extend({ connectionKind: z.literal("manual") });
151
+ /**
152
+ * Catalog entry for `credentials-exchange`-kind integrations.
153
+ *
154
+ * Carries the JSON-schema projection of the connection's `input` schema so
155
+ * the CLI and web UI can render an input form without re-loading the
156
+ * original Zod schema (which only exists in the integration bundle's
157
+ * runtime module). `credentialSet.storedKeys` reflects the stored-schema
158
+ * keys that get persisted after exchange.
159
+ *
160
+ * @see packages/core/src/credential-set/connection.ts CredentialsExchangeConnectionConfig
161
+ */
162
+ const CredentialsExchangeIntegrationCatalogEntrySchema = IntegrationCatalogEntryBaseSchema.extend({
163
+ connectionKind: z.literal("credentials-exchange"),
164
+ /** JSON-schema projection of the connection's `input` schema. */
165
+ input: z.record(z.string(), z.unknown()),
166
+ /** Optional free-form copy rendered above the input form. */
167
+ instructions: z.string().optional()
168
+ });
169
+ const IntegrationCatalogEntrySchema = z.discriminatedUnion("connectionKind", [
170
+ OAuthIntegrationCatalogEntrySchema,
171
+ ManualIntegrationCatalogEntrySchema,
172
+ CredentialsExchangeIntegrationCatalogEntrySchema
173
+ ]);
174
+ z.object({
175
+ /** Restrict results to one connection kind. */
176
+ connectionKind: ConnectionKindSchema.optional(),
177
+ /**
178
+ * Return only the integration whose `publicId` (or alias) matches.
179
+ * When no integration matches, the endpoint returns an empty array.
180
+ */
181
+ publicId: z.string().min(1).optional(),
182
+ /**
183
+ * Case-insensitive substring match against `publicId`, `aliases`, and `name`.
184
+ */
185
+ q: z.string().min(1).optional(),
186
+ /**
187
+ * Opt into `internalCredentialSets[]` on each entry. Defaults to `false`
188
+ * so the common catalog call stays lean. CLI commands that need to render
189
+ * credential-set display names set this to `true`.
190
+ */
191
+ includeInternal: z.stringbool().optional().default(false)
192
+ }).strict();
193
+ z.object({ integrations: z.array(IntegrationCatalogEntrySchema) });
194
+ const ConnectionEntrySchema = z.object({
195
+ id: z.string(),
196
+ credentialConnectionId: CredentialConnectionIdSchema,
197
+ /**
198
+ * Public-facing integration ID this connection is associated with
199
+ * (post alias resolution). `null` when the underlying credential set is
200
+ * not backed by an official Keystroke integration (e.g., user-defined
201
+ * custom credential sets).
202
+ */
203
+ integrationPublicId: z.string().nullable(),
204
+ /**
205
+ * Credential definition id, e.g., `"slack"` or a custom set's
206
+ * identifier. Stable across alias resolution.
207
+ */
208
+ credentialSetId: z.string(),
209
+ name: z.string(),
210
+ scope: CredentialScopeSchema,
211
+ platformConnected: z.boolean(),
212
+ connectionStatus: ConnectionStatusSchema,
213
+ expiresAt: z.string().nullable(),
214
+ isDefault: z.boolean(),
215
+ createdAt: z.string()
216
+ });
217
+ /**
218
+ * Coerces a `status` query-param value that may arrive as a single string,
219
+ * a comma-separated string, or (in Hono/ky's query handling) an array of
220
+ * strings, into a canonical `ConnectionStatus[]`. Invalid entries cause the
221
+ * surrounding Zod parse to fail with a helpful issue.
222
+ *
223
+ * The field itself is made optional at the object level (see
224
+ * `ListConnectionsQuerySchema`), so passing `undefined` / omitting the key
225
+ * is always valid; this preprocessor only runs when a value is actually
226
+ * present.
227
+ */
228
+ const ConnectionStatusQueryParam = z.preprocess((value) => {
229
+ if (value === void 0 || value === null || value === "") return void 0;
230
+ const trimmed = (Array.isArray(value) ? value : String(value).split(",")).flatMap((entry) => String(entry).split(",")).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
231
+ return trimmed.length === 0 ? void 0 : trimmed;
232
+ }, z.array(ConnectionStatusSchema));
233
+ z.object({
234
+ /** Filter to connections for a specific integration's public ID (alias-resolved). */
235
+ integrationPublicId: z.string().min(1).optional(),
236
+ /**
237
+ * Filter by one or more connection statuses. Accepts a single value, a
238
+ * comma-separated string, or repeated query keys. Omit to return all statuses.
239
+ */
240
+ status: ConnectionStatusQueryParam.optional(),
241
+ scope: CredentialScopeSchema.optional(),
242
+ projectId: z.uuid().optional()
243
+ }).strict();
244
+ z.object({ connections: z.array(ConnectionEntrySchema) });
245
+ //#endregion
246
+ export { InitiateConnectionResponseSchema as i, ConnectionStatusResponseSchema as n, InitiateConnectionRequestSchema as r, ConnectionKindValues as t };
@@ -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-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-DcftG6dX.mjs";
4
+ import { t as createTypedCommand } from "./commander-BwtBoukr.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-CsODcH6e.mjs")).handleApiKeysList,
26
+ loadHandler: async () => (await import("./list.handler-Cp767f5l.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-CsODcH6e.mjs")).handleApiKeysList
33
+ loadHandler: async () => (await import("./list.handler-Cp767f5l.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-C2CkPWsy.mjs")).handleApiKeysCreate
40
+ loadHandler: async () => (await import("./create.handler-BAyG0PmG.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-DDY3X1Zm.mjs")).handleApiKeysDelete
52
+ loadHandler: async () => (await import("./delete.handler-CJcyvnUF.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-BS4twrsS.mjs";
4
4
  import { S as AUTH_TIMEOUT_SECONDS } from "./keystroke.mjs";
5
- import { t as createTypedCommand } from "./commander-DcftG6dX.mjs";
5
+ import { t as createTypedCommand } from "./commander-BwtBoukr.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/auth/auth.command.ts
8
8
  const AuthOptionsSchema = z.object({
@@ -25,28 +25,28 @@ function createAuthCommand() {
25
25
  description: "Authenticate Keystroke CLI via device flow",
26
26
  schema: AuthOptionsSchema,
27
27
  optionsConfig: AUTH_OPTIONS_CONFIG,
28
- loadHandler: async () => (await import("./auth.handler-BsoWeCFD.mjs")).handleAuth,
28
+ loadHandler: async () => (await import("./auth.handler-DrjDODhZ.mjs")).handleAuth,
29
29
  subcommands: [
30
30
  createTypedCommand({
31
31
  name: "clear",
32
32
  description: "Revoke the saved API key and remove local credentials",
33
33
  schema: z.object({}),
34
34
  optionsConfig: {},
35
- loadHandler: async () => (await import("./clear.handler-BR97yudD.mjs")).handleAuthClear
35
+ loadHandler: async () => (await import("./clear.handler-B1c17nAi.mjs")).handleAuthClear
36
36
  }),
37
37
  createTypedCommand({
38
38
  name: "test",
39
39
  description: "Verify that the saved API key is valid",
40
40
  schema: z.object({}),
41
41
  optionsConfig: {},
42
- loadHandler: async () => (await import("./test.handler-B5GF5txS.mjs")).handleAuthTest
42
+ loadHandler: async () => (await import("./test.handler-St9sBXyH.mjs")).handleAuthTest
43
43
  }),
44
44
  createTypedCommand({
45
45
  name: "status",
46
46
  description: "Show the current signed-in identity and organization context",
47
47
  schema: z.object({}),
48
48
  optionsConfig: {},
49
- loadHandler: async () => (await import("./status.handler-6cuHa0R0.mjs")).handleAuthStatus
49
+ loadHandler: async () => (await import("./status.handler-Cm9aNUBn.mjs")).handleAuthStatus
50
50
  })
51
51
  ]
52
52
  });
@@ -3,7 +3,7 @@
3
3
  import { n as DEFAULT_CLI_WEB_URL, t as DEFAULT_CLI_SERVER_URL } from "./default-urls-BS4twrsS.mjs";
4
4
  import { C as AUTH_URL_PATH, D as CLI_AUTH_COMMAND, E as CALLBACK_PATH, T as CALLBACK_LOOPBACK_ORIGIN, c as resolveCliWebUrl, k as CliExitError, n as ui, s as resolveCliServerUrl, u as logger, w as CALLBACK_LOOPBACK_HOST, x as toErrorMessage } from "./keystroke.mjs";
5
5
  import { f as upsertOrgCredentials, i as getCredentialsFilePath } from "./dist-BF6r1hfv.mjs";
6
- import { t as openBrowser } from "./browser-CvuyMLhI.mjs";
6
+ import { t as openBrowser } from "./browser-B4K0VW8p.mjs";
7
7
  import { hostname } from "node:os";
8
8
  import { z } from "zod";
9
9
  import { confirm, isCancel } from "@clack/prompts";
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as readOptionalJsonSchemaKeys, t as manifestToDeclaredCredentialRequirement } from "./declared-credential-requirements-BtlcsEVn.mjs";
4
- import { t as AgentVersionManifestSchema } from "./agent-manifest-sJFbH5H8.mjs";
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-B0eiobOd.mjs";
7
- import { t as bundleSandboxAgentTarget } from "./workflow-bundler-BzHk73PM-tt09RbIA.mjs";
3
+ import { n as readOptionalJsonSchemaKeys, t as manifestToDeclaredCredentialRequirement } from "./declared-credential-requirements-B6h4WRv4.mjs";
4
+ import { t as AgentVersionManifestSchema } from "./agent-manifest-CZdlCTFs.mjs";
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-cB76j6UL.mjs";
6
+ import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-CzXPGxdU.mjs";
7
+ import { t as bundleSandboxAgentTarget } from "./workflow-bundler-BzHk73PM-UJQa7Ubk.mjs";
8
8
  import { builtinModules } from "node:module";
9
9
  import { lstat, readFile, readdir, realpath } from "node:fs/promises";
10
10
  import path from "node:path";
@@ -166,7 +166,7 @@ const HOST_CALL_STUB_SOURCE = [
166
166
  "}"
167
167
  ].join("\n");
168
168
  //#endregion
169
- //#region ../../packages/workflow-builder/dist/build-agents-DfbiMZ_e.mjs
169
+ //#region ../../packages/workflow-builder/dist/build-agents-DseUtzd4.mjs
170
170
  const STAGED_LOCAL_SOURCES_PREFIX = ".keystroke/staged-local-sources";
171
171
  function normalizeRelativeSandboxPath(targetPath) {
172
172
  const normalized = path.posix.normalize(targetPath);
@@ -246,11 +246,10 @@ async function resolveSkillSourceDirectory(projectRoot, skillPath) {
246
246
  return resolveSkillSourceDirectory(projectRoot, resolvedPath);
247
247
  }
248
248
  if (!stats.isDirectory()) throw new Error(`Skill source path must point to a directory containing SKILL.md: ${skillPath}`);
249
- const skillManifestStats = await lstat(path.join(absolutePath, "SKILL.md")).catch((error) => {
249
+ if (!(await lstat(path.join(absolutePath, "SKILL.md")).catch((error) => {
250
250
  if (error && typeof error === "object" && "code" in error && error.code === "ENOENT") return null;
251
251
  throw error;
252
- });
253
- if (!skillManifestStats || !skillManifestStats.isFile()) throw new Error(`Skill source directory must contain SKILL.md: ${skillPath}`);
252
+ }))?.isFile()) throw new Error(`Skill source directory must contain SKILL.md: ${skillPath}`);
254
253
  return absolutePath;
255
254
  }
256
255
  function resolveSkillSourceTarget(absolutePath) {
@@ -299,7 +298,7 @@ async function buildAgentSandboxPackage(params) {
299
298
  }
300
299
  function schemaFingerprintForManifestCredentialSet(credentialSet) {
301
300
  const { schemaFingerprint } = manifestToDeclaredCredentialRequirement(credentialSet);
302
- if (!schemaFingerprint) throw new Error(`Cannot compute schema fingerprint for credential set "${credentialSet.resolvedCredentialSetId}"`);
301
+ if (!schemaFingerprint) throw new Error(`Cannot compute schema fingerprint for credential set "${credentialSet.id}"`);
303
302
  return schemaFingerprint;
304
303
  }
305
304
  function createSessionRuntimePlacement() {
@@ -343,7 +342,7 @@ function createResolvedMcpServers(agentManifest) {
343
342
  transport: server.transport,
344
343
  credentialSets: server.credentialSets.map((credentialSet) => ({
345
344
  id: credentialSet.id,
346
- resolvedId: credentialSet.resolvedCredentialSetId,
345
+ resolvedId: credentialSet.id,
347
346
  credentialKeys: readCredentialKeysFromSchemaObject(credentialSet.auth),
348
347
  schemaFingerprint: schemaFingerprintForManifestCredentialSet(credentialSet)
349
348
  })),
@@ -399,7 +398,7 @@ function createAgentVersionManifest(discoveredWorkflow, agentManifest, toolEnric
399
398
  ...runtimeCredentialSets.length > 0 ? { credentialSets: runtimeCredentialSets.map((credentialSet) => {
400
399
  const optionalCredentialKeys = readOptionalJsonSchemaKeys(credentialSet.auth);
401
400
  return {
402
- resolvedId: credentialSet.resolvedCredentialSetId,
401
+ resolvedId: credentialSet.id,
403
402
  credentialKeys: readCredentialKeysFromSchemaObject(credentialSet.auth),
404
403
  schemaFingerprint: schemaFingerprintForManifestCredentialSet(credentialSet),
405
404
  ...optionalCredentialKeys.length > 0 ? { optionalCredentialKeys } : {},
@@ -414,7 +413,7 @@ function createAgentVersionManifest(discoveredWorkflow, agentManifest, toolEnric
414
413
  provider: gateway.provider,
415
414
  mode: gateway.mode,
416
415
  credentialSet: {
417
- resolvedId: gateway.credentialSet.resolvedCredentialSetId,
416
+ resolvedId: gateway.credentialSet.id,
418
417
  credentialKeys: readCredentialKeysFromSchemaObject(gateway.credentialSet.auth),
419
418
  schemaFingerprint: schemaFingerprintForManifestCredentialSet(gateway.credentialSet)
420
419
  },