@keystrokehq/cli 0.0.28 → 0.0.30

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 (125) hide show
  1. package/dist/{accept.handler-tvT9pleH.mjs → accept.handler-DNfIXPSP.mjs} +1 -1
  2. package/dist/{admin-DsAQ0WWj.mjs → admin-CJp8XksD.mjs} +9 -9
  3. package/dist/{agents-Bc3B9_ms.mjs → agents-G37PM35Z.mjs} +5 -5
  4. package/dist/{api-O5tdGdzc.mjs → api-BK3EhPvs.mjs} +77 -3
  5. package/dist/{api-keys-tle_m3kk.mjs → api-keys-4igNHJ_W.mjs} +5 -5
  6. package/dist/{auth-DLaY5yCZ.mjs → auth-CIOmmV4x.mjs} +4 -4
  7. package/dist/{auth.handler-Dq2fXO3S.mjs → auth.handler-CznN_vfz.mjs} +1 -1
  8. package/dist/{build-agents-DseUtzd4-Cmd-kNNO.mjs → build-agents-DseUtzd4-CSGpNXur.mjs} +2 -2
  9. package/dist/{build-tasks-C09SdfjC-B0F7BZZG.mjs → build-tasks-C09SdfjC-BmAVLTtQ.mjs} +2 -2
  10. package/dist/{build-workflows-BZ_m97Pr-HQZY4xBV.mjs → build-workflows-BZ_m97Pr-BiyptCrn.mjs} +3 -3
  11. package/dist/{build.handler-5CpbMuHx.mjs → build.handler-zHimoO7c.mjs} +5 -5
  12. package/dist/{clear-cache.handler-DpP1VlbR.mjs → clear-cache.handler-BP0K1-uN.mjs} +1 -1
  13. package/dist/{clear.handler-FzohTmpU.mjs → clear.handler-PsA5QKHx.mjs} +2 -2
  14. package/dist/{commander-BTMzBiLq.mjs → commander-BlrSdFcu.mjs} +1 -1
  15. package/dist/{connect-BUu2ojK7.mjs → connect-BbLJhlIA.mjs} +2 -2
  16. package/dist/{connect.handler-D7oO_5WS.mjs → connect.handler-BthE-7Wg.mjs} +4 -4
  17. package/dist/{context-DHOTSgPb.mjs → context-sgKhRc5v.mjs} +3 -3
  18. package/dist/{create.handler-BuxP18uj.mjs → create.handler-BovbO_g0.mjs} +1 -1
  19. package/dist/{credential-env-map-CtmzNkwU.mjs → credential-env-map-CRs0llf0.mjs} +2 -2
  20. package/dist/{credentials-DQW8xxof.mjs → credentials-DKrSaaLw.mjs} +1 -1
  21. package/dist/credentials-LmhgE-Co.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-DzDtYyqj.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-BfeKNPg6.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-CCRHYslm.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-DxT7YHW7.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-wXS1s3du.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-Cje-GJ8H.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-B2vPQp8w.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-DYwiYttT.mjs → workflows-DjMlxuBX.mjs} +13 -45
  106. package/package.json +12 -12
  107. package/dist/credentials-C-MN9q-b.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/{deploy-BURTx92e.mjs → deploy-DhCbYFc7.mjs} +0 -0
  113. package/dist/{deploy-progress-C1Y73QVM.mjs → deploy-progress-BsUH7fGE.mjs} +0 -0
  114. package/dist/{detect-env-access-CwkOYeYM-D4aTZv4R.mjs → detect-env-access-CwkOYeYM-COq4U-4Y.mjs} +0 -0
  115. package/dist/{diff-utils-CXKNQUXO.mjs → diff-utils-Bs--xmoV.mjs} +0 -0
  116. package/dist/{import-module-y0glInUe-BwuOxEY3.mjs → import-module-y0glInUe-DV_3dsU0.mjs} +1 -1
  117. /package/dist/{logs.handler-Bs1DVMaO.mjs → logs.handler-DGGVPMOX.mjs} +0 -0
  118. /package/dist/{read-credential-keys-77a91T8M-aLuQvlIq.mjs → read-credential-keys-77a91T8M-DGK5XTQp.mjs} +0 -0
  119. /package/dist/{register.handler-C_NqMLir.mjs → register.handler-CePNU3sP.mjs} +0 -0
  120. /package/dist/{run-polling-DKWPGLyF.mjs → run-polling-fBouPjJ2.mjs} +0 -0
  121. /package/dist/{skill-installer-AX0X-u1J.mjs → skill-installer-D6j9IA3Z.mjs} +0 -0
  122. /package/dist/{skills.handler-KEUkV5NH.mjs → skills.handler-DYIQK0Vu.mjs} +0 -0
  123. /package/dist/{task-target-deploy-DeUyfi9H.mjs → task-target-deploy-B_3HPSo2.mjs} +0 -0
  124. /package/dist/{types-D1cVpE7_.mjs → types-AlA-ifK9.mjs} +0 -0
  125. /package/dist/{upgrade.handler-C7KvNL0x.mjs → upgrade.handler-DSZuw7-9.mjs} +0 -0
@@ -0,0 +1,460 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
4
+ import { t as createTypedCommand } from "./commander-BlrSdFcu.mjs";
5
+ import { i as CredentialScopeValues, n as CredentialConnectionIdSchema, r as CredentialScopeSchema } from "./schema-DFJiNWyd.mjs";
6
+ import { t as ConnectionKindValues } from "./api-BK3EhPvs.mjs";
7
+ import { z } from "zod";
8
+ //#region ../../packages/shared-types/src/credentials/models/definition-records.ts
9
+ const JsonRecordSchema = z.record(z.string(), z.unknown());
10
+ const CredentialDefinitionSourceSchema = z.enum(["official", "custom"]);
11
+ const CredentialExposureSchema = z.enum(["user-runtime", "platform-only"]);
12
+ const CredentialDefinitionRoleValues = [
13
+ "connection",
14
+ "provider-app-definition",
15
+ "webhook-secret",
16
+ "other"
17
+ ];
18
+ const CredentialDefinitionRoleSchema = z.enum(CredentialDefinitionRoleValues);
19
+ const CredentialRevocationPolicySchema = z.enum(["fail", "retry-once"]);
20
+ z.object({
21
+ definitionKey: z.string().min(1),
22
+ id: z.string().min(1),
23
+ organizationId: z.uuid().nullable().optional(),
24
+ source: CredentialDefinitionSourceSchema,
25
+ displayName: z.string().min(1),
26
+ description: z.string().optional(),
27
+ exposure: CredentialExposureSchema,
28
+ role: CredentialDefinitionRoleSchema,
29
+ authSchemaJson: JsonRecordSchema,
30
+ credentialKeys: z.array(z.string()),
31
+ optionalCredentialKeys: z.array(z.string()),
32
+ storedCredentialKeys: z.array(z.string()),
33
+ optionalStoredCredentialKeys: z.array(z.string()),
34
+ schemaFingerprint: z.string().min(1),
35
+ proxyConfig: JsonRecordSchema.optional(),
36
+ needsRawSecret: z.boolean(),
37
+ onCredentialRevoked: CredentialRevocationPolicySchema.optional()
38
+ });
39
+ const CredentialConnectionDefinitionKindSchema = z.enum([
40
+ "manual",
41
+ "oauth",
42
+ "credentials-exchange",
43
+ "exchange",
44
+ "dynamic",
45
+ "platform"
46
+ ]);
47
+ const OAuthClientPolicySchema = z.discriminatedUnion("kind", [z.object({
48
+ kind: z.literal("official-provider-app"),
49
+ provider: z.string().min(1),
50
+ variant: z.string().min(1).optional()
51
+ }), z.object({
52
+ kind: z.literal("custom-provider-app"),
53
+ providerAppDefinitionId: z.string().min(1)
54
+ })]);
55
+ const CredentialLifecycleHttpMethodSchema = z.enum([
56
+ "GET",
57
+ "POST",
58
+ "PATCH",
59
+ "PUT",
60
+ "DELETE"
61
+ ]);
62
+ const CredentialLifecycleValueSelectorSchema = z.lazy(() => z.discriminatedUnion("kind", [
63
+ z.object({
64
+ kind: z.literal("path"),
65
+ /** Empty path selects the whole source object. */
66
+ path: z.string()
67
+ }),
68
+ z.object({
69
+ kind: z.literal("object"),
70
+ fields: z.record(z.string(), CredentialLifecycleValueSelectorSchema)
71
+ }),
72
+ z.object({
73
+ kind: z.literal("first-array-item"),
74
+ path: z.string().min(1),
75
+ where: z.object({
76
+ path: z.string().min(1),
77
+ equals: z.union([
78
+ z.string(),
79
+ z.number(),
80
+ z.boolean(),
81
+ z.null()
82
+ ])
83
+ }).optional(),
84
+ fallbackToFirst: z.boolean().optional(),
85
+ requirePaths: z.array(z.string().min(1)).optional(),
86
+ fields: z.record(z.string(), CredentialLifecycleValueSelectorSchema)
87
+ }),
88
+ z.object({
89
+ kind: z.literal("coalesce"),
90
+ /**
91
+ * Selectors evaluated in order. The first one that resolves to a value
92
+ * other than `undefined`, `null`, or the empty string wins.
93
+ */
94
+ selectors: z.array(CredentialLifecycleValueSelectorSchema).min(1)
95
+ })
96
+ ]));
97
+ const CredentialLifecycleTemplateSchema = z.lazy(() => z.union([
98
+ z.string(),
99
+ z.number(),
100
+ z.boolean(),
101
+ z.null(),
102
+ z.array(CredentialLifecycleTemplateSchema),
103
+ z.object({
104
+ kind: z.literal("template"),
105
+ /** Interpolates {{input.foo}} and {{previous.bar}} from trusted runtime data. */
106
+ value: z.string()
107
+ }),
108
+ z.record(z.string(), CredentialLifecycleTemplateSchema)
109
+ ]));
110
+ const OAuthLifecycleConfigSchema = z.object({
111
+ kind: z.literal("oauth"),
112
+ authorization: z.object({
113
+ scopeDelimiter: z.string().min(1).optional(),
114
+ omitScope: z.boolean().optional(),
115
+ extraParams: z.record(z.string(), z.string()).optional()
116
+ }).optional(),
117
+ tokenRequest: z.object({
118
+ auth: z.enum(["body", "basic"]).optional(),
119
+ bodyFormat: z.enum(["form-urlencoded", "json"]).optional(),
120
+ requireSuccessFlag: z.object({
121
+ key: z.string().min(1),
122
+ errorKey: z.string().min(1).optional()
123
+ }).optional()
124
+ }).optional(),
125
+ postTokenRequests: z.array(z.object({
126
+ phases: z.array(z.enum(["exchange", "refresh"])).optional(),
127
+ url: z.string().min(1),
128
+ method: CredentialLifecycleHttpMethodSchema.optional(),
129
+ headers: z.record(z.string(), z.string()).optional(),
130
+ body: z.unknown().optional(),
131
+ required: z.boolean().optional(),
132
+ stash: z.record(z.string(), CredentialLifecycleValueSelectorSchema)
133
+ })).optional(),
134
+ installation: z.object({
135
+ externalInstallationId: CredentialLifecycleValueSelectorSchema.optional(),
136
+ externalWorkspaceId: CredentialLifecycleValueSelectorSchema.optional(),
137
+ externalBotUserId: CredentialLifecycleValueSelectorSchema.optional(),
138
+ metadata: z.record(z.string(), CredentialLifecycleValueSelectorSchema).optional()
139
+ }).optional(),
140
+ vault: z.object({
141
+ accessToken: z.string().min(1).optional(),
142
+ refreshToken: z.string().min(1).optional(),
143
+ instanceUrl: z.string().min(1).optional(),
144
+ raw: z.record(z.string(), CredentialLifecycleValueSelectorSchema).optional()
145
+ }).optional()
146
+ });
147
+ const ManualLifecycleConfigSchema = z.object({
148
+ kind: z.literal("manual"),
149
+ validation: z.object({
150
+ kind: z.literal("http"),
151
+ method: CredentialLifecycleHttpMethodSchema,
152
+ url: z.string().min(1),
153
+ bearerCredentialKey: z.string().min(1).optional(),
154
+ headers: z.record(z.string(), z.string()).optional(),
155
+ successStatuses: z.array(z.number().int().min(100).max(599)).optional(),
156
+ unauthorizedStatus: z.number().int().min(100).max(599).optional(),
157
+ unauthorizedMessage: z.string().min(1).optional(),
158
+ failureMessage: z.string().min(1).optional()
159
+ }).optional()
160
+ });
161
+ const CredentialsExchangeLifecycleHttpRequestSchema = z.object({
162
+ kind: z.literal("http"),
163
+ url: z.string().min(1),
164
+ method: CredentialLifecycleHttpMethodSchema.optional(),
165
+ headers: z.record(z.string(), z.string()).optional(),
166
+ body: CredentialLifecycleTemplateSchema.optional(),
167
+ successStatuses: z.array(z.number().int().min(100).max(599)).optional(),
168
+ needsReinputStatuses: z.array(z.number().int().min(100).max(599)).optional(),
169
+ needsReinputMessage: z.string().min(1).optional(),
170
+ stored: z.record(z.string(), CredentialLifecycleValueSelectorSchema),
171
+ requiredStoredKeys: z.array(z.string().min(1)).optional(),
172
+ expiresAt: CredentialLifecycleValueSelectorSchema.optional(),
173
+ expiresInSeconds: CredentialLifecycleValueSelectorSchema.optional()
174
+ });
175
+ const CredentialsExchangeLifecycleConfigSchema = z.object({
176
+ kind: z.literal("credentials-exchange"),
177
+ exchange: CredentialsExchangeLifecycleHttpRequestSchema,
178
+ rotate: CredentialsExchangeLifecycleHttpRequestSchema.optional()
179
+ });
180
+ const CredentialConnectionLifecycleConfigSchema = z.discriminatedUnion("kind", [
181
+ OAuthLifecycleConfigSchema,
182
+ ManualLifecycleConfigSchema,
183
+ CredentialsExchangeLifecycleConfigSchema
184
+ ]);
185
+ /**
186
+ * DB-backed setup path contract. Executable provider behavior stays in trusted
187
+ * declarative runtime configuration.
188
+ */
189
+ const CredentialConnectionDefinitionRecordSchema = z.object({
190
+ credentialDefinitionKey: z.string().min(1),
191
+ credentialDefinitionId: z.string().min(1),
192
+ connectionId: CredentialConnectionIdSchema,
193
+ kind: CredentialConnectionDefinitionKindSchema,
194
+ label: z.string().optional(),
195
+ description: z.string().optional(),
196
+ recommended: z.boolean(),
197
+ advanced: z.boolean(),
198
+ inputSchemaJson: JsonRecordSchema.optional(),
199
+ connectionManifest: JsonRecordSchema,
200
+ oauthClientPolicy: OAuthClientPolicySchema.optional(),
201
+ lifecycleConfig: CredentialConnectionLifecycleConfigSchema.optional(),
202
+ executableDescriptorId: z.string().min(1).optional()
203
+ });
204
+ z.enum([
205
+ "oauth",
206
+ "manual-validate",
207
+ "credentials-exchange",
208
+ "credentials-rotate",
209
+ "vault-mapper"
210
+ ]);
211
+ z.object({
212
+ credentialDefinitionKey: z.string().min(1),
213
+ credentialDefinitionId: z.string().min(1),
214
+ exposure: CredentialExposureSchema,
215
+ storedCredentialKeys: z.array(z.string()),
216
+ optionalStoredCredentialKeys: z.array(z.string()),
217
+ schemaFingerprint: z.string().min(1),
218
+ proxyConfig: JsonRecordSchema.optional(),
219
+ needsRawSecret: z.boolean(),
220
+ connections: z.array(CredentialConnectionDefinitionRecordSchema)
221
+ });
222
+ //#endregion
223
+ //#region src/commands/credentials/definitions/definitions.command.ts
224
+ const CredentialDefinitionsListOptionsSchema = JsonOptionSchema.extend({
225
+ integration: z.string().optional(),
226
+ role: z.enum(CredentialDefinitionRoleValues).optional(),
227
+ connectionKind: z.enum(ConnectionKindValues).optional(),
228
+ full: z.boolean().optional(),
229
+ limit: z.coerce.number().int().positive().max(200).optional()
230
+ });
231
+ const DEFINITIONS_LIST_OPTIONS_CONFIG = {
232
+ ...JSON_OPTION_CONFIG,
233
+ integration: {
234
+ flag: "--integration <id>",
235
+ description: "Restrict to one integration"
236
+ },
237
+ role: {
238
+ flag: "--role <role>",
239
+ description: `Filter by role: ${CredentialDefinitionRoleValues.join(" | ")}`
240
+ },
241
+ connectionKind: {
242
+ flag: "--connection-kind <kind>",
243
+ description: `Filter by connection kind: ${ConnectionKindValues.join(" | ")}`
244
+ },
245
+ full: {
246
+ flag: "--full",
247
+ description: "Include the auth schema JSON in each result"
248
+ },
249
+ limit: {
250
+ flag: "--limit <n>",
251
+ description: "Page size (1–200)"
252
+ }
253
+ };
254
+ const CredentialDefinitionShowOptionsSchema = JsonOptionSchema.extend({ id: z.string().min(1) });
255
+ const DEFINITION_SHOW_OPTIONS_CONFIG = {
256
+ ...JSON_OPTION_CONFIG,
257
+ id: {
258
+ flag: "",
259
+ description: ""
260
+ }
261
+ };
262
+ function createCredentialsDefinitionsCommand() {
263
+ return createTypedCommand({
264
+ name: "definitions",
265
+ description: "Browse and inspect credential definitions (catalog metadata; not per-org credential sets)",
266
+ schema: CredentialDefinitionsListOptionsSchema,
267
+ optionsConfig: DEFINITIONS_LIST_OPTIONS_CONFIG,
268
+ loadHandler: async () => (await import("./list.handler-DIMWZx78.mjs")).handleCredentialDefinitionsList,
269
+ subcommands: [createTypedCommand({
270
+ name: "list",
271
+ description: "List credential definitions",
272
+ schema: CredentialDefinitionsListOptionsSchema,
273
+ optionsConfig: DEFINITIONS_LIST_OPTIONS_CONFIG,
274
+ loadHandler: async () => (await import("./list.handler-DIMWZx78.mjs")).handleCredentialDefinitionsList
275
+ }), createTypedCommand({
276
+ name: "show",
277
+ description: "Show one credential definition including auth schema",
278
+ schema: CredentialDefinitionShowOptionsSchema,
279
+ optionsConfig: DEFINITION_SHOW_OPTIONS_CONFIG,
280
+ argument: {
281
+ name: "id",
282
+ description: "Credential definition id, e.g. official.aws-s3",
283
+ key: "id"
284
+ },
285
+ loadHandler: async () => (await import("./show.handler-CsidInW8.mjs")).handleCredentialDefinitionShow
286
+ })]
287
+ });
288
+ }
289
+ //#endregion
290
+ //#region src/commands/credentials/list/list.command.ts
291
+ const ListOptionsSchema = JsonOptionSchema.extend({
292
+ scope: CredentialScopeSchema.optional(),
293
+ credentialSetId: z.string().optional(),
294
+ projectId: z.uuid().optional(),
295
+ path: z.string().optional(),
296
+ limit: z.coerce.number().min(1).max(100).optional().default(100),
297
+ offset: z.coerce.number().min(0).optional().default(0)
298
+ });
299
+ const LIST_OPTIONS_CONFIG = {
300
+ ...JSON_OPTION_CONFIG,
301
+ scope: {
302
+ flag: "--scope <scope>",
303
+ description: `Filter by scope: ${CredentialScopeValues.join(" | ")}`
304
+ },
305
+ credentialSetId: {
306
+ flag: "--credential-set-id <id>",
307
+ description: "Filter by credential set ID (e.g. slack)"
308
+ },
309
+ projectId: {
310
+ flag: "--project-id <id>",
311
+ description: "Filter project-scoped credential sets to a specific project ID"
312
+ },
313
+ path: {
314
+ flag: "--path <dir>",
315
+ description: "Path to project root (for workflow manifests and .env context)"
316
+ },
317
+ limit: {
318
+ flag: "--limit <n>",
319
+ description: "Page size for server list (1–100, default: 100)"
320
+ },
321
+ offset: {
322
+ flag: "--offset <n>",
323
+ description: "Skip this many server rows before listing (pagination)"
324
+ }
325
+ };
326
+ function createCredentialsListCommand() {
327
+ return createTypedCommand({
328
+ name: "list",
329
+ description: "List credential sets on the server",
330
+ schema: ListOptionsSchema,
331
+ optionsConfig: LIST_OPTIONS_CONFIG,
332
+ loadHandler: async () => (await import("./list.handler-DVnFrlis.mjs")).handleCredentialsList
333
+ });
334
+ }
335
+ //#endregion
336
+ //#region src/commands/credentials/requirements/requirements.command.ts
337
+ const RequirementsOptionsSchema = JsonOptionSchema.extend({ path: z.string().optional() });
338
+ const REQUIREMENTS_OPTIONS_CONFIG = {
339
+ ...JSON_OPTION_CONFIG,
340
+ path: {
341
+ flag: "--path <dir>",
342
+ description: "Path to project root"
343
+ }
344
+ };
345
+ function createCredentialsRequirementsCommand() {
346
+ return createTypedCommand({
347
+ name: "requirements",
348
+ description: "Show what credentials built workflows need (keys, KEYSTROKE_* env names, workflows) — from dist manifests, no API call",
349
+ schema: RequirementsOptionsSchema,
350
+ optionsConfig: REQUIREMENTS_OPTIONS_CONFIG,
351
+ loadHandler: async () => (await import("./requirements.handler-B5rqCjMu.mjs")).handleCredentialsRequirements
352
+ });
353
+ }
354
+ //#endregion
355
+ //#region src/commands/credentials/upload/upload.command.ts
356
+ const UploadOptionsSchema = JsonOptionSchema.extend({
357
+ integration: z.string().optional(),
358
+ credentialConnectionId: z.string().optional().describe("Credential connection ID to use for catalog-backed uploads"),
359
+ credentialSet: z.string().optional(),
360
+ keys: z.string().optional(),
361
+ name: z.string().optional(),
362
+ scope: CredentialScopeSchema.default("user"),
363
+ path: z.string().optional(),
364
+ dryRun: z.boolean().optional().default(false),
365
+ update: z.boolean().optional().default(false)
366
+ });
367
+ const UPLOAD_OPTIONS_CONFIG = {
368
+ ...JSON_OPTION_CONFIG,
369
+ integration: {
370
+ flag: "--integration <public-id>",
371
+ description: "Official integration public ID (e.g. slack, github, linear). Derives the internal credential identity and keys automatically."
372
+ },
373
+ credentialConnectionId: {
374
+ flag: "--credential-connection-id <id>",
375
+ description: "Credential connection ID to use for catalog-backed uploads"
376
+ },
377
+ credentialSet: {
378
+ flag: "--credential-set <id>",
379
+ description: "Explicit custom credential set ID. Requires --keys."
380
+ },
381
+ keys: {
382
+ flag: "--keys <key1,key2>",
383
+ description: "Comma-separated credential keys. Required with --credential-set."
384
+ },
385
+ name: {
386
+ flag: "--name <name>",
387
+ description: "Credential set name (only with --credential-set; default: [CLI] <id>)"
388
+ },
389
+ scope: {
390
+ flag: "--scope <scope>",
391
+ description: `Scope: ${CredentialScopeValues.join(" | ")} (default: user; project resolves from keystroke.config.ts)`
392
+ },
393
+ path: {
394
+ flag: "--path <dir>",
395
+ description: "Path to project root"
396
+ },
397
+ dryRun: {
398
+ flag: "--dry-run",
399
+ description: "Show what would happen without making changes"
400
+ },
401
+ update: {
402
+ flag: "--update",
403
+ description: "Overwrite values for existing credential sets from current env vars"
404
+ }
405
+ };
406
+ function createCredentialsUploadCommand() {
407
+ return createTypedCommand({
408
+ name: "upload",
409
+ description: "Upload credentials from env vars to the server. Default: reads requirements from built workflow manifests. Use --integration for an official integration or --credential-set + --keys for a custom explicit upload.",
410
+ schema: UploadOptionsSchema,
411
+ optionsConfig: UPLOAD_OPTIONS_CONFIG,
412
+ loadHandler: async () => (await import("./upload.handler-B7xle1oX.mjs")).handleCredentialsUpload
413
+ });
414
+ }
415
+ //#endregion
416
+ //#region src/commands/credentials/credentials.command.ts
417
+ const CredentialsRootSchema = JsonOptionSchema.extend({
418
+ path: z.string().optional(),
419
+ limit: z.coerce.number().min(1).max(100).optional().default(100),
420
+ offset: z.coerce.number().min(0).optional().default(0)
421
+ });
422
+ function createCredentialsCommand() {
423
+ return createTypedCommand({
424
+ name: "credentials",
425
+ description: "Manage credentials (upload, list, requirements)",
426
+ schema: CredentialsRootSchema,
427
+ optionsConfig: {
428
+ ...JSON_OPTION_CONFIG,
429
+ path: {
430
+ flag: "--path <dir>",
431
+ description: "Path to project root (for workflow manifests and .env context)"
432
+ },
433
+ limit: {
434
+ flag: "--limit <n>",
435
+ description: "Page size for server list (1–100, default: 100)"
436
+ },
437
+ offset: {
438
+ flag: "--offset <n>",
439
+ description: "Skip this many server rows before listing (pagination)"
440
+ }
441
+ },
442
+ handler: async (opts, ctx) => {
443
+ const { handleCredentialsList } = await import("./list.handler-DVnFrlis.mjs");
444
+ await handleCredentialsList({
445
+ ...opts,
446
+ scope: void 0,
447
+ credentialSetId: void 0,
448
+ projectId: void 0
449
+ }, ctx);
450
+ },
451
+ subcommands: [
452
+ createCredentialsDefinitionsCommand(),
453
+ createCredentialsUploadCommand(),
454
+ createCredentialsListCommand(),
455
+ createCredentialsRequirementsCommand()
456
+ ]
457
+ });
458
+ }
459
+ //#endregion
460
+ export { createCredentialsCommand };
@@ -3,9 +3,9 @@
3
3
  import { A as WorkflowResolutionError, a as ui, g as getHttpStatus, h as getApiErrorCode } from "./keystroke.mjs";
4
4
  import { t as assertWorkflowProjectRoot } from "./project-config-DudGRFPO.mjs";
5
5
  import { a as readManifestsFromOutDir } from "./dist-CTEtWDW4.mjs";
6
- import { t as requireWorkflowsDir } from "./resolve-project-DJJZIOmu.mjs";
6
+ import { t as requireWorkflowsDir } from "./resolve-project-E9mrh_el.mjs";
7
7
  import { t as createSpinnerProgress } from "./spinner-progress-lrKDs4YF.mjs";
8
- import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-DPqt_edf.mjs";
8
+ import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-Begvjfq8.mjs";
9
9
  //#region src/commands/workflows/_shared/current-deployment-workflow.ts
10
10
  /**
11
11
  * Lightweight resolution: gets projectId from keystroke.config.ts and authoredWorkflowId
@@ -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 requireClient } from "./context-DHOTSgPb.mjs";
4
+ import { i as requireClient } from "./context-sgKhRc5v.mjs";
5
5
  //#region src/commands/org/current.handler.ts
6
6
  async function handleOrgCurrent(_options, ctx) {
7
7
  if (!ctx.organizationId) {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { a as ui, j as throwReportedCliExit, y as toErrorMessage } from "./keystroke.mjs";
4
- import { i as requireClient } from "./context-DHOTSgPb.mjs";
4
+ import { i as requireClient } from "./context-sgKhRc5v.mjs";
5
5
  //#region src/commands/api-keys/delete.handler.ts
6
6
  async function handleApiKeysDelete(options, ctx) {
7
7
  const client = requireClient(ctx);
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { t as createTypedCommand } from "./commander-BTMzBiLq.mjs";
3
+ import { t as createTypedCommand } from "./commander-BlrSdFcu.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/commands/deploy/deploy.command.ts
6
6
  /**
@@ -64,7 +64,7 @@ function createDeployCommand() {
64
64
  schema: DeployOptionsSchema,
65
65
  optionsConfig: DEPLOY_OPTIONS_CONFIG,
66
66
  contextMode: "auth",
67
- loadHandler: async () => (await import("./deploy.handler-CLoYxHOr.mjs")).handleDeploy
67
+ loadHandler: async () => (await import("./deploy.handler-BW3f2N2G.mjs")).handleDeploy
68
68
  });
69
69
  cmd.enablePositionalOptions();
70
70
  cmd.passThroughOptions();
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { D as CliExitError, P as logger, a as ui, l as isLocalMode, n as style, t as ANSI } 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 { t as assertWorkflowProjectRoot } from "./project-config-DudGRFPO.mjs";
6
- import { r as requireAuthOptions, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-DHOTSgPb.mjs";
6
+ import { r as requireAuthOptions, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-sgKhRc5v.mjs";
7
7
  import { i as readAgentManifestsFromOutDir, o as readWorkflowsFromDisk } from "./dist-CTEtWDW4.mjs";
8
- import { t as requireWorkflowsDir } from "./resolve-project-DJJZIOmu.mjs";
9
- import { n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-DPqt_edf.mjs";
10
- import { t as createBuildProgress } from "./build-progress-O9f-4Z4D.mjs";
11
- import { t as createDeployProgress } from "./deploy-progress-C1Y73QVM.mjs";
12
- import { t as withErrorBoundary } from "./error-boundary-DVZipk-A.mjs";
13
- import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-Cm_aU9rQ.mjs";
14
- import { t as computeWorkflowDiff } from "./diff-utils-CXKNQUXO.mjs";
8
+ import { t as requireWorkflowsDir } from "./resolve-project-E9mrh_el.mjs";
9
+ import { n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-Begvjfq8.mjs";
10
+ import { t as createBuildProgress } from "./build-progress-DLM1Bt4T.mjs";
11
+ import { t as createDeployProgress } from "./deploy-progress-BsUH7fGE.mjs";
12
+ import { t as withErrorBoundary } from "./error-boundary-0veZ_RDS.mjs";
13
+ import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-B1VQCYC-.mjs";
14
+ import { t as computeWorkflowDiff } from "./diff-utils-Bs--xmoV.mjs";
15
15
  import path from "node:path";
16
16
  import { access } from "node:fs/promises";
17
17
  //#region src/commands/deploy/deploy-diff.ts
@@ -198,7 +198,7 @@ async function handleDeploy(options, ctx) {
198
198
  let outDir;
199
199
  let artifactFilter;
200
200
  try {
201
- const { runWorkflowBuild } = await import("./workflow-build-DPqt_edf.mjs").then((n) => n.o);
201
+ const { runWorkflowBuild } = await import("./workflow-build-Begvjfq8.mjs").then((n) => n.o);
202
202
  const buildOutcome = await runWorkflowBuild({
203
203
  workflowsDir,
204
204
  verbose: options.verbose,
@@ -271,7 +271,7 @@ function emitNewWebhookCredentials(result) {
271
271
  }
272
272
  async function handleTaskTargetDeploy(options) {
273
273
  renderBuildHeader(void 0);
274
- const buildResult = await (deployHandlerDependencies.buildTaskTargets ?? (await import("./task-target-build-CrPLSXnu.mjs")).buildTaskTargets)({
274
+ const buildResult = await (deployHandlerDependencies.buildTaskTargets ?? (await import("./task-target-build-QllcCfoN.mjs")).buildTaskTargets)({
275
275
  projectRoot: options.workflowsDir,
276
276
  targetFiles: options.targetFiles,
277
277
  disableSourcemaps: options.options.disableSourcemaps
@@ -289,7 +289,7 @@ async function handleTaskTargetDeploy(options) {
289
289
  const progress = createDeployProgress();
290
290
  let result;
291
291
  try {
292
- result = await (deployHandlerDependencies.deployTaskTargets ?? (await import("./task-target-deploy-DeUyfi9H.mjs")).deployTaskTargets)({
292
+ result = await (deployHandlerDependencies.deployTaskTargets ?? (await import("./task-target-deploy-B_3HPSo2.mjs")).deployTaskTargets)({
293
293
  preparedTasks: buildResult.preparedTasks,
294
294
  client,
295
295
  organizationId: options.projectConfig.organizationId,
@@ -312,7 +312,7 @@ async function handleTaskTargetDeploy(options) {
312
312
  }
313
313
  async function createFullDeployClient(ctx) {
314
314
  const authOptions = requireAuthOptions(ctx);
315
- const { createClient } = await import("./src-DNhUmpSl.mjs");
315
+ const { createClient } = await import("./src-DI-ybNjR.mjs");
316
316
  return createClient({
317
317
  ...authOptions,
318
318
  onRequest: (info) => logger.debug(`-> ${info.method} ${info.url}`, {
@@ -327,7 +327,7 @@ async function createFullDeployClient(ctx) {
327
327
  }
328
328
  async function createTaskDeployClient(ctx) {
329
329
  const authOptions = requireAuthOptions(ctx);
330
- return (deployHandlerDependencies.createDeployClient ?? (await import("./deploy-BURTx92e.mjs")).createDeployClient)(authOptions);
330
+ return (deployHandlerDependencies.createDeployClient ?? (await import("./deploy-DhCbYFc7.mjs")).createDeployClient)(authOptions);
331
331
  }
332
332
  function renderSuccessSummary(result) {
333
333
  const tasks = result.tasks || [];
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { D as CliExitError, a as ui, j as throwReportedCliExit, 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 } from "./output-BWcVRt-T.mjs";
6
- import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-DHOTSgPb.mjs";
7
- import { n as resolveLocalWorkflowManifest, t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-Cm_aU9rQ.mjs";
8
- import { n as renderDiff, t as computeWorkflowDiff } from "./diff-utils-CXKNQUXO.mjs";
6
+ import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-sgKhRc5v.mjs";
7
+ import { n as resolveLocalWorkflowManifest, t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-B1VQCYC-.mjs";
8
+ import { n as renderDiff, t as computeWorkflowDiff } from "./diff-utils-Bs--xmoV.mjs";
9
9
  //#region src/commands/workflows/diff/diff.handler.ts
10
10
  async function handleWorkflowsDiff(options, ctx) {
11
11
  const resolved = await resolveLocalWorkflowManifest(options.workflow, options.path, { jsonMode: ctx.jsonMode });