@keystrokehq/cli 0.0.13 → 0.0.15
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.
- package/README.md +3 -3
- package/dist/{accept.handler-BU6kg8ET.mjs → accept.handler-BsZQqmzU.mjs} +1 -1
- package/dist/{admin-B4GNbCl5.mjs → admin-CXQezpQA.mjs} +9 -9
- package/dist/{agents-LtoIcJGY.mjs → agents-CWGz8CR-.mjs} +6 -6
- package/dist/{api-DuKKdCpF.mjs → api-jkf0TTgD.mjs} +1 -1
- package/dist/{api-keys-BE_hLonn.mjs → api-keys-BZmUiIEr.mjs} +5 -5
- package/dist/{auth-DNK5MYm4.mjs → auth-CGBgi6PG.mjs} +5 -5
- package/dist/{auth.handler-DrjDODhZ.mjs → auth.handler-u3qmoUX0.mjs} +1 -2
- package/dist/{build-agents-DseUtzd4-DIDGsZWL.mjs → build-agents-DseUtzd4-DBQ82ErJ.mjs} +3 -3
- package/dist/{build-metadata-qebrtraZ-D4SQNsBw.mjs → build-metadata-C8Ra_Gi--CTCBRjFA.mjs} +7 -7
- package/dist/{build-progress-CITED2tv.mjs → build-progress-BZivcVz4.mjs} +1 -1
- package/dist/{build-tasks-GVuMLS0h-DnS9QWzf.mjs → build-tasks-GVuMLS0h-CWrrj8SF.mjs} +3 -3
- package/dist/{build-workflows-Dmzay1vP-DKVuBAjD.mjs → build-workflows-CV4tBo6S-B4SPp86e.mjs} +7 -7
- package/dist/{build.handler-BZnLQt0_.mjs → build.handler-DqnngAkl.mjs} +4 -4
- package/dist/{clear.handler-B1c17nAi.mjs → clear.handler-Dpe05eTq.mjs} +1 -1
- package/dist/{commander-BwtBoukr.mjs → commander-i-7LgOyc.mjs} +1 -1
- package/dist/{connect-IPcL37np.mjs → connect-CS6sqNfA.mjs} +2 -2
- package/dist/{connect.handler-ToY6qmMz.mjs → connect.handler-DRO05ak3.mjs} +3 -3
- package/dist/{context-DQ4IA0yO.mjs → context-B1L8pZsH.mjs} +1 -1
- package/dist/{create.handler-BAyG0PmG.mjs → create.handler-DF1Ye4nr.mjs} +1 -1
- package/dist/{credentials-CZiu-534.mjs → credentials-1CPFwx-k.mjs} +6 -6
- package/dist/cron-parser-C2eJD0yD.mjs +393 -0
- package/dist/{current-deployment-workflow-zTmYbUjh.mjs → current-deployment-workflow-CUBHcdZl.mjs} +5 -5
- package/dist/{current.handler-DA4FGfUP.mjs → current.handler-C48q2mBd.mjs} +1 -1
- package/dist/{delete.handler-CJcyvnUF.mjs → delete.handler-Bude0SVP.mjs} +1 -1
- package/dist/{deploy-BvaFgVvf.mjs → deploy-D4ILrWpx.mjs} +1 -1
- package/dist/{deploy-DdMP-YaQ.mjs → deploy-DwRwyVwR.mjs} +2 -2
- package/dist/{deploy-progress-CLO-yidq.mjs → deploy-progress-DJHph1Fz.mjs} +1 -1
- package/dist/{deploy.handler-Bag7rBG-.mjs → deploy.handler-zMb-BHLo.mjs} +16 -16
- package/dist/{detect-env-access-CwkOYeYM-EmkYvbfJ.mjs → detect-env-access-CwkOYeYM-BLtKepjx.mjs} +1 -1
- package/dist/{diff.handler-Brgc-Ccl.mjs → diff.handler-C-XqswH5.mjs} +3 -3
- package/dist/{dist-BMkNN03r.mjs → dist-FQYQ2FLm.mjs} +8 -8
- package/dist/{env.handler-DFKzjIQT.mjs → env.handler-DK3B7MLl.mjs} +6 -6
- package/dist/{error-boundary-B2ZKRkZI.mjs → error-boundary-CyLcinp1.mjs} +1 -1
- package/dist/{import-module-DEI7R8Yh-Xz-KAPvB.mjs → import-module--8x5SLum-DaUNACER.mjs} +819 -36
- package/dist/{init-DhnABm3J.mjs → init-QhRFud0x.mjs} +2 -2
- package/dist/{init.handler-QgehN8B4.mjs → init.handler-Beu-vpIu.mjs} +42 -11
- package/dist/{inspect.handler-CMOFOb4G.mjs → inspect.handler-ULT2jiVU.mjs} +3 -3
- package/dist/{integration-catalog-BRrJIAVz.mjs → integration-catalog-BgT4mLzW.mjs} +1 -1
- package/dist/{integrations-7-U7nmkh.mjs → integrations-6BiywCph.mjs} +5 -5
- package/dist/{invites-CmGmnUla.mjs → invites-BlB-hKUE.mjs} +4 -4
- package/dist/{invites.list.handler-CmkIf-uW.mjs → invites.list.handler-DmeMcezN.mjs} +1 -1
- package/dist/{invites.resend.handler-FZl20yat.mjs → invites.resend.handler-pJTPtKHE.mjs} +1 -1
- package/dist/{invites.revoke.handler-D95mrfmB.mjs → invites.revoke.handler-4NgnnfiU.mjs} +1 -1
- package/dist/keystroke.mjs +21 -21
- package/dist/{list-enrichment-I4XQaMg0.mjs → list-enrichment-C6u5eI0j.mjs} +1 -1
- package/dist/{list.handler-DRnHsEa0.mjs → list.handler-BSyrxCma.mjs} +1 -1
- package/dist/{list.handler-DsYyTUhA.mjs → list.handler-BuX-bb2y.mjs} +1 -1
- package/dist/{list.handler-H8aQSsFM.mjs → list.handler-C7AChEPW.mjs} +2 -2
- package/dist/{list.handler-Cp767f5l.mjs → list.handler-CBEXiTAK.mjs} +1 -1
- package/dist/{list.handler-DXl8igi2.mjs → list.handler-D-YFoKLU.mjs} +5 -5
- package/dist/{list.handler-BrTW2viq.mjs → list.handler-U9-KuVlh.mjs} +1 -1
- package/dist/{list.handler-uzC77oIy.mjs → list2.handler-L3BKR5ok.mjs} +4 -4
- package/dist/{listen-DckJq0y0.mjs → listen-Tx2SrMyo.mjs} +2 -2
- package/dist/{listen.handler-Bf5MXKPO.mjs → listen.handler-C7AqsKLf.mjs} +2 -2
- package/dist/{logs-D_l5BIn2.mjs → logs-NI-DyeFY.mjs} +3 -3
- package/dist/{logs.handler-kYO3Uv9t.mjs → logs.handler-BGJU1p3H.mjs} +2 -2
- package/dist/{members.add.handler-C2cppd-9.mjs → members.add.handler-B4H8Hn6x.mjs} +1 -1
- package/dist/{members.invite.handler-DY6kS4LN.mjs → members.invite.handler-D8ONlt4Y.mjs} +1 -1
- package/dist/{members.list.handler-CFBG3SBw.mjs → members.list.handler-BHJTMMiA.mjs} +1 -1
- package/dist/{members.remove.handler-LQ61_qip.mjs → members.remove.handler-_hKd_sFd.mjs} +1 -1
- package/dist/{members.update.handler-CqISA1mf.mjs → members.update.handler-CC7J0k8n.mjs} +1 -1
- package/dist/{metadata-layout-C6ed-9dl-EF5pCtIH.mjs → metadata-layout-Bv-B0nHj-CqlcZz_g.mjs} +1 -1
- package/dist/{normalize-path-CojS-CgQ-D5D0AIHR.mjs → normalize-path-CojS-CgQ-DFTvyA27.mjs} +1 -1
- package/dist/{org-KQ2nD0yN.mjs → org-8bkIZAJ4.mjs} +15 -15
- package/dist/{orgs.create.handler-Mv5CTGcG.mjs → orgs.create.handler-vXQgDJZ_.mjs} +1 -1
- package/dist/{orgs.get.handler-DvvOhshX.mjs → orgs.get.handler-D_Jfl18x.mjs} +1 -1
- package/dist/{orgs.list.handler-wWAg6cKg.mjs → orgs.list.handler-BNjoTJvV.mjs} +1 -1
- package/dist/{paused.handler-CbMkPD9e.mjs → paused.handler-9ND-i2EN.mjs} +1 -1
- package/dist/{project-config-CJGSh2RQ.mjs → project-config-CsBMT4TL.mjs} +1 -13
- package/dist/{projects-CYqeKQGT.mjs → projects-B5MRnbHS.mjs} +4 -4
- package/dist/{projects-CWLOF5x4.mjs → projects-DfaG_3WP.mjs} +1 -1
- package/dist/{requirements.handler-CnDTBcH5.mjs → requirements.handler-D5dFi7XZ.mjs} +5 -5
- package/dist/{resolve-project-bVPMcs-y.mjs → resolve-project-CURYMjex.mjs} +1 -1
- package/dist/{run-polling-Cb4ssXIE.mjs → run-polling-B4KvySvp.mjs} +1 -1
- package/dist/{run-polling-49w3PYAv.mjs → run-polling-BwyyKDwg.mjs} +3 -3
- package/dist/{run.handler-Bma88649.mjs → run.handler-TJNyF_p_.mjs} +5 -5
- package/dist/{runs-HJejvQnQ.mjs → runs-Bs8VzL8P.mjs} +2 -2
- package/dist/{schema-display-CyCWSgfY.mjs → schema-display-CNqiYBIb.mjs} +4 -4
- package/dist/{skills-sync.handler-Cf74vKJA.mjs → skills-sync.handler-DXF6IgEX.mjs} +1 -1
- package/dist/{skills.command-KyAwBeST.mjs → skills.command-B8yExFCn.mjs} +3 -3
- package/dist/{source-analysis-DTnwNwKq-DoBxUDCg.mjs → source-analysis-BBg2E_6G-BQqm16RR.mjs} +4 -4
- package/dist/{spinner-progress-CS1BEdNB.mjs → spinner-progress-DfkMzwGx.mjs} +1 -1
- package/dist/spinner-worker.d.mts +3 -0
- package/dist/spinner-worker.mjs +203 -0
- package/dist/{src-D-dFmoAF.mjs → src-BQdOWkyv.mjs} +1 -1
- package/dist/{switch.handler-DfsKVtR6.mjs → switch.handler-BFBM8rSi.mjs} +1 -1
- package/dist/{sync-Bi2M_TUK.mjs → sync-BZj7Dkhq.mjs} +2 -2
- package/dist/{sync.handler-D6YFuVlq.mjs → sync.handler-Kk4R2lJ_.mjs} +6 -6
- package/dist/{task-BBgEvdG1.mjs → task-BNXDZU71.mjs} +1 -390
- package/dist/{task-target-build-atWwwnSF.mjs → task-target-build-Du0ObGbb.mjs} +4 -4
- package/dist/{task-target-deploy-CRsrQTOy.mjs → task-target-deploy-OyxLvh3a.mjs} +1 -1
- package/dist/task-target-deploy-runner.mjs +5 -5
- package/dist/test-CJ8Vx_h5.mjs +74 -0
- package/dist/{try-deploy.handler-BMcWQVST.mjs → test.handler-BTn4NFmU.mjs} +15 -17
- package/dist/{test.handler-St9sBXyH.mjs → test.handler-Dk3CmTa7.mjs} +1 -1
- package/dist/{test-Ctjy8mwC.mjs → tool.handler-CuxoCstV.mjs} +65 -93
- package/dist/{trigger-artifacts-RizI57RC-C-yCtEi-.mjs → trigger-artifacts-RizI57RC-abdkW8-z.mjs} +3 -3
- package/dist/{upgrade-YavAf8AC.mjs → upgrade-CdA_Sw4F.mjs} +1 -1
- package/dist/{upload.handler-DemogvI1.mjs → upload.handler-CpKuAaQ_.mjs} +8 -8
- package/dist/{users.get.handler-B20PMSbl.mjs → users.get.handler-D0WO6D1K.mjs} +1 -1
- package/dist/{users.list.handler-BplFTjv3.mjs → users.list.handler-BSTIniF1.mjs} +1 -1
- package/dist/{users.set-role.handler-wdmI6o3G.mjs → users.set-role.handler-DAKdSkbn.mjs} +1 -1
- package/dist/{utils-DpEtybzI.mjs → utils-VC0Vl_pm.mjs} +2 -2
- package/dist/{validate.handler-DSAvNgns.mjs → validate.handler-COJ53qWJ.mjs} +3 -3
- package/dist/{workflow-build-Cmu1TOFu.mjs → workflow-build-kNNcU-R8.mjs} +18 -18
- package/dist/{workflow-bundler-BzHk73PM-UJQa7Ubk.mjs → workflow-bundler-BzHk73PM-CRcJvu9a.mjs} +2 -2
- package/dist/{workflows-DTlypo2t.mjs → workflows-D04CqpO-.mjs} +56 -18
- package/dist/{writer-CtvttJdP-BfNsrheU.mjs → writer-B-SpZ0G2-olEAgSLc.mjs} +8 -8
- package/package.json +8 -8
- package/dist/options-DFPs-tAB.mjs +0 -43
- /package/dist/{agent-bundle-package-DWV6B_5q-cB76j6UL.mjs → agent-bundle-package-DWV6B_5q-rRTPU13L.mjs} +0 -0
- /package/dist/{browser-B4K0VW8p.mjs → browser-3cUiPlk2.mjs} +0 -0
- /package/dist/{clear-cache.handler-Dywqc7TG.mjs → clear-cache.handler-Bkt6GKnF.mjs} +0 -0
- /package/dist/{clear.handler-ui4e1CnJ.mjs → clear.handler-BieI9Oix.mjs} +0 -0
- /package/dist/{concurrency-gXn9Rw8x-CaI6Vtbu.mjs → concurrency-gXn9Rw8x-BI6HQNfC.mjs} +0 -0
- /package/dist/{credential-env-map-D0zgoUl0.mjs → credential-env-map-B2nVJXPn.mjs} +0 -0
- /package/dist/{credential-schema-mismatch-8pqwvswO.mjs → credential-schema-mismatch-CfyBUMPS.mjs} +0 -0
- /package/dist/{credentials-Bu1MBiCL.mjs → credentials-CiOwDS5y.mjs} +0 -0
- /package/dist/{diff-utils-BoXI705D.mjs → diff-utils-4OQTpP5s.mjs} +0 -0
- /package/dist/{file-metadata-Dwy9KKq_.mjs → file-metadata-DaPPpiTh.mjs} +0 -0
- /package/dist/{layout-DRf9qUf8.mjs → layout-CXkZEsXI.mjs} +0 -0
- /package/dist/{logs.handler-DxSKmDCq.mjs → logs.handler-BqmZ4eLx.mjs} +0 -0
- /package/dist/{oxc-B3KI3rf_-CHDUXsus.mjs → oxc-B3KI3rf_-DdiZWqe2.mjs} +0 -0
- /package/dist/{read-credential-keys-77a91T8M-CzXPGxdU.mjs → read-credential-keys-77a91T8M-COvwpok_.mjs} +0 -0
- /package/dist/{register.handler-D7ZZAnGP.mjs → register.handler-CttgzybN.mjs} +0 -0
- /package/dist/{rolldown-runtime-twds-ZHy-3DMm_Sby.mjs → rolldown-runtime-twds-ZHy-CO5ir_za.mjs} +0 -0
- /package/dist/{schema-DFJiNWyd.mjs → schema-O9xTWad_.mjs} +0 -0
- /package/dist/{skills.handler-C_4VzVmc.mjs → skills.handler-CPKCf9ZK.mjs} +0 -0
- /package/dist/{status.handler-Cm9aNUBn.mjs → status.handler-DxCJRm1n.mjs} +0 -0
- /package/dist/{sync-keystroke-agent-skills-CX9fS5nQ.mjs → sync-keystroke-agent-skills-ChUj1LnK.mjs} +0 -0
- /package/dist/{task-target-deploy-CZBGNC0H-BwPSfaJQ.mjs → task-target-deploy-CZBGNC0H-Ck724yF4.mjs} +0 -0
- /package/dist/{trigger-manifest-D5rnpPkA.mjs → trigger-manifest-PTjVYL1r.mjs} +0 -0
- /package/dist/{upload-C0kaZu08.mjs → upload-wwSPAC5_.mjs} +0 -0
|
@@ -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-
|
|
4
|
+
import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
|
|
5
5
|
import { t as OrgRoleSchema } from "./schema-_FQrHcIS.mjs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
//#region src/commands/org/invites.command.ts
|
|
@@ -36,14 +36,14 @@ function createOrgInvitesCommand() {
|
|
|
36
36
|
description: "Manage organization invitations",
|
|
37
37
|
schema: OrgInvitesListOptionsSchema,
|
|
38
38
|
optionsConfig: { ...JSON_OPTION_CONFIG },
|
|
39
|
-
loadHandler: async () => (await import("./invites.list.handler-
|
|
39
|
+
loadHandler: async () => (await import("./invites.list.handler-DmeMcezN.mjs")).handleOrgInvitesList,
|
|
40
40
|
subcommands: [
|
|
41
41
|
createTypedCommand({
|
|
42
42
|
name: "list",
|
|
43
43
|
description: "List organization invites",
|
|
44
44
|
schema: OrgInvitesListOptionsSchema,
|
|
45
45
|
optionsConfig: { ...JSON_OPTION_CONFIG },
|
|
46
|
-
loadHandler: async () => (await import("./invites.list.handler-
|
|
46
|
+
loadHandler: async () => (await import("./invites.list.handler-DmeMcezN.mjs")).handleOrgInvitesList
|
|
47
47
|
}),
|
|
48
48
|
createTypedCommand({
|
|
49
49
|
name: "resend",
|
|
@@ -55,7 +55,7 @@ function createOrgInvitesCommand() {
|
|
|
55
55
|
description: "Invite ID to resend",
|
|
56
56
|
key: "inviteId"
|
|
57
57
|
},
|
|
58
|
-
loadHandler: async () => (await import("./invites.resend.handler-
|
|
58
|
+
loadHandler: async () => (await import("./invites.resend.handler-pJTPtKHE.mjs")).handleOrgInvitesResend
|
|
59
59
|
}),
|
|
60
60
|
createTypedCommand({
|
|
61
61
|
name: "revoke",
|
|
@@ -67,7 +67,7 @@ function createOrgInvitesCommand() {
|
|
|
67
67
|
description: "Invite ID to revoke",
|
|
68
68
|
key: "inviteId"
|
|
69
69
|
},
|
|
70
|
-
loadHandler: async () => (await import("./invites.revoke.handler-
|
|
70
|
+
loadHandler: async () => (await import("./invites.revoke.handler-4NgnnfiU.mjs")).handleOrgInvitesRevoke
|
|
71
71
|
})
|
|
72
72
|
]
|
|
73
73
|
});
|
|
@@ -142,28 +142,28 @@ function createOrgMembersCommand() {
|
|
|
142
142
|
description: "Manage organization members",
|
|
143
143
|
schema: MembersListOptionsSchema,
|
|
144
144
|
optionsConfig: { ...JSON_OPTION_CONFIG },
|
|
145
|
-
loadHandler: async () => (await import("./members.list.handler-
|
|
145
|
+
loadHandler: async () => (await import("./members.list.handler-BHJTMMiA.mjs")).handleMembersList,
|
|
146
146
|
subcommands: [
|
|
147
147
|
createTypedCommand({
|
|
148
148
|
name: "list",
|
|
149
149
|
description: "List organization members",
|
|
150
150
|
schema: MembersListOptionsSchema,
|
|
151
151
|
optionsConfig: { ...JSON_OPTION_CONFIG },
|
|
152
|
-
loadHandler: async () => (await import("./members.list.handler-
|
|
152
|
+
loadHandler: async () => (await import("./members.list.handler-BHJTMMiA.mjs")).handleMembersList
|
|
153
153
|
}),
|
|
154
154
|
createTypedCommand({
|
|
155
155
|
name: "invite",
|
|
156
156
|
description: "Invite a user to the current organization",
|
|
157
157
|
schema: MembersInviteOptionsSchema,
|
|
158
158
|
optionsConfig: INVITE_OPTIONS_CONFIG,
|
|
159
|
-
loadHandler: async () => (await import("./members.invite.handler-
|
|
159
|
+
loadHandler: async () => (await import("./members.invite.handler-D8ONlt4Y.mjs")).handleMembersInvite
|
|
160
160
|
}),
|
|
161
161
|
createTypedCommand({
|
|
162
162
|
name: "add",
|
|
163
163
|
description: "Add an existing user to the current organization",
|
|
164
164
|
schema: MembersAddOptionsSchema,
|
|
165
165
|
optionsConfig: ADD_OPTIONS_CONFIG,
|
|
166
|
-
loadHandler: async () => (await import("./members.add.handler-
|
|
166
|
+
loadHandler: async () => (await import("./members.add.handler-B4H8Hn6x.mjs")).handleMembersAdd
|
|
167
167
|
}),
|
|
168
168
|
createTypedCommand({
|
|
169
169
|
name: "update",
|
|
@@ -175,7 +175,7 @@ function createOrgMembersCommand() {
|
|
|
175
175
|
description: "User ID to update",
|
|
176
176
|
key: "userId"
|
|
177
177
|
},
|
|
178
|
-
loadHandler: async () => (await import("./members.update.handler-
|
|
178
|
+
loadHandler: async () => (await import("./members.update.handler-CC7J0k8n.mjs")).handleMembersUpdate
|
|
179
179
|
}),
|
|
180
180
|
createTypedCommand({
|
|
181
181
|
name: "remove",
|
|
@@ -187,7 +187,7 @@ function createOrgMembersCommand() {
|
|
|
187
187
|
description: "User ID to remove",
|
|
188
188
|
key: "userId"
|
|
189
189
|
},
|
|
190
|
-
loadHandler: async () => (await import("./members.remove.handler-
|
|
190
|
+
loadHandler: async () => (await import("./members.remove.handler-_hKd_sFd.mjs")).handleMembersRemove
|
|
191
191
|
})
|
|
192
192
|
]
|
|
193
193
|
});
|
|
@@ -202,28 +202,28 @@ function createOrgCommand() {
|
|
|
202
202
|
description: "Manage organization context",
|
|
203
203
|
schema: OrgOptionsSchema,
|
|
204
204
|
optionsConfig: ORG_OPTIONS_CONFIG,
|
|
205
|
-
loadHandler: async () => (await import("./list.handler-
|
|
205
|
+
loadHandler: async () => (await import("./list.handler-BuX-bb2y.mjs")).handleOrgList,
|
|
206
206
|
subcommands: [
|
|
207
207
|
createTypedCommand({
|
|
208
208
|
name: "list",
|
|
209
209
|
description: "List your organizations",
|
|
210
210
|
schema: OrgOptionsSchema,
|
|
211
211
|
optionsConfig: ORG_OPTIONS_CONFIG,
|
|
212
|
-
loadHandler: async () => (await import("./list.handler-
|
|
212
|
+
loadHandler: async () => (await import("./list.handler-BuX-bb2y.mjs")).handleOrgList
|
|
213
213
|
}),
|
|
214
214
|
createTypedCommand({
|
|
215
215
|
name: "current",
|
|
216
216
|
description: "Show the current organization",
|
|
217
217
|
schema: OrgOptionsSchema,
|
|
218
218
|
optionsConfig: ORG_OPTIONS_CONFIG,
|
|
219
|
-
loadHandler: async () => (await import("./current.handler-
|
|
219
|
+
loadHandler: async () => (await import("./current.handler-C48q2mBd.mjs")).handleOrgCurrent
|
|
220
220
|
}),
|
|
221
221
|
createTypedCommand({
|
|
222
222
|
name: "switch",
|
|
223
223
|
description: "Switch to a different organization",
|
|
224
224
|
schema: OrgOptionsSchema,
|
|
225
225
|
optionsConfig: ORG_OPTIONS_CONFIG,
|
|
226
|
-
loadHandler: async () => (await import("./switch.handler-
|
|
226
|
+
loadHandler: async () => (await import("./switch.handler-BFBM8rSi.mjs")).handleOrgSwitch
|
|
227
227
|
}),
|
|
228
228
|
createOrgMembersCommand(),
|
|
229
229
|
createOrgInvitesCommand()
|
|
@@ -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-
|
|
5
|
+
import { i as requireClient } from "./context-B1L8pZsH.mjs";
|
|
6
6
|
import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-ByLX0A-V.mjs";
|
|
7
7
|
//#region src/commands/admin/orgs.create.handler.ts
|
|
8
8
|
async function handleAdminOrgsCreate(options, ctx) {
|
|
@@ -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-
|
|
5
|
+
import { i as requireClient } from "./context-B1L8pZsH.mjs";
|
|
6
6
|
import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-ByLX0A-V.mjs";
|
|
7
7
|
//#region src/commands/admin/orgs.get.handler.ts
|
|
8
8
|
async function handleAdminOrgsGet(options, ctx) {
|
|
@@ -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-
|
|
5
|
+
import { i as requireClient } from "./context-B1L8pZsH.mjs";
|
|
6
6
|
import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-ByLX0A-V.mjs";
|
|
7
7
|
import Table from "cli-table3";
|
|
8
8
|
//#region src/commands/admin/orgs.list.handler.ts
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { N as throwReportedCliExit, n as ui, x as toErrorMessage } from "./keystroke.mjs";
|
|
4
4
|
import { i as writeJson } from "./output-CGdYhH0p.mjs";
|
|
5
|
-
import { i as requireClient } from "./context-
|
|
5
|
+
import { i as requireClient } from "./context-B1L8pZsH.mjs";
|
|
6
6
|
//#region src/commands/workflows/paused/paused.handler.ts
|
|
7
7
|
async function handleWorkflowsPaused(options, ctx) {
|
|
8
8
|
const client = requireClient(ctx);
|
|
@@ -5,19 +5,7 @@ import path from "node:path";
|
|
|
5
5
|
import { pathToFileURL } from "node:url";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
//#region ../../packages/project-config/src/config.ts
|
|
8
|
-
/**
|
|
9
|
-
* Canonical schema for the `build` field of a `keystroke.config.ts` file.
|
|
10
|
-
*
|
|
11
|
-
* This is the single source of truth for project-level build options.
|
|
12
|
-
* This schema is owned by `@keystroke/project-config`; nobody should redefine it downstream.
|
|
13
|
-
*/
|
|
14
8
|
const KeystrokeProjectBuildConfigSchema = z.object({ outDir: z.string().min(1).optional() });
|
|
15
|
-
/**
|
|
16
|
-
* Canonical schema for a Keystroke project's `keystroke.config.ts` file.
|
|
17
|
-
*
|
|
18
|
-
* This schema is the single source of truth for the shape a project
|
|
19
|
-
* author writes with `defineConfig(...)`. `@keystroke/project-config` validates loaded configs with this schema, and API / DB boundaries re-derive their contracts from it.
|
|
20
|
-
*/
|
|
21
9
|
const KeystrokeProjectConfigSchema = z.object({
|
|
22
10
|
name: z.string().min(1),
|
|
23
11
|
organizationId: z.uuid(),
|
|
@@ -32,7 +20,7 @@ function serializeConfigObject(config) {
|
|
|
32
20
|
}
|
|
33
21
|
function createProjectConfigContent(config) {
|
|
34
22
|
return [
|
|
35
|
-
"import { defineConfig } from '@
|
|
23
|
+
"import { defineConfig } from '@keystrokehq/config';",
|
|
36
24
|
"",
|
|
37
25
|
`export default defineConfig(${serializeConfigObject(config)});`,
|
|
38
26
|
""
|
|
@@ -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-
|
|
4
|
+
import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/commands/projects/projects.command.ts
|
|
7
7
|
function createProjectsCommand() {
|
|
@@ -10,19 +10,19 @@ function createProjectsCommand() {
|
|
|
10
10
|
description: "List tracked Keystroke projects",
|
|
11
11
|
schema: JsonOptionSchema,
|
|
12
12
|
optionsConfig: { ...JSON_OPTION_CONFIG },
|
|
13
|
-
loadHandler: async () => (await import("./list.handler-
|
|
13
|
+
loadHandler: async () => (await import("./list.handler-U9-KuVlh.mjs")).handleProjectsList,
|
|
14
14
|
subcommands: [createTypedCommand({
|
|
15
15
|
name: "list",
|
|
16
16
|
description: "List all tracked Keystroke projects",
|
|
17
17
|
schema: JsonOptionSchema,
|
|
18
18
|
optionsConfig: { ...JSON_OPTION_CONFIG },
|
|
19
|
-
loadHandler: async () => (await import("./list.handler-
|
|
19
|
+
loadHandler: async () => (await import("./list.handler-U9-KuVlh.mjs")).handleProjectsList
|
|
20
20
|
}), createTypedCommand({
|
|
21
21
|
name: "clear-cache",
|
|
22
22
|
description: "Clear the stored projects cache (projects.json)",
|
|
23
23
|
schema: z.object({}),
|
|
24
24
|
optionsConfig: {},
|
|
25
|
-
loadHandler: async () => (await import("./clear-cache.handler-
|
|
25
|
+
loadHandler: async () => (await import("./clear-cache.handler-Bkt6GKnF.mjs")).handleProjectsClearCache
|
|
26
26
|
})]
|
|
27
27
|
});
|
|
28
28
|
}
|
|
@@ -2204,7 +2204,7 @@ const bundles = (api) => ({
|
|
|
2204
2204
|
})),
|
|
2205
2205
|
purpose
|
|
2206
2206
|
} }).json();
|
|
2207
|
-
const { batchUpload } = await import("./upload-
|
|
2207
|
+
const { batchUpload } = await import("./upload-wwSPAC5_.mjs").then((n) => n.n);
|
|
2208
2208
|
return batchUpload(workflows.map((wf) => ({
|
|
2209
2209
|
name: wf.workflowName,
|
|
2210
2210
|
bundle: wf.bundle,
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { a as getProcessEnv, f as ANSI, n as ui, p as style } from "./keystroke.mjs";
|
|
4
4
|
import { i as writeJson } from "./output-CGdYhH0p.mjs";
|
|
5
|
-
import { a as readManifestsFromOutDir } from "./dist-
|
|
6
|
-
import { t as requireWorkflowsDir } from "./resolve-project-
|
|
7
|
-
import { t as readCredentialEnvMap } from "./credential-env-map-
|
|
8
|
-
import { a as loadProjectDotenvFile, c as getTerminalContentWidth, o as manifestGroupKey, s as normalizeManifestScopeToServer, t as buildCredentialWorkflowConsumersByGroup, u as truncateWithEllipsis } from "./list-enrichment-
|
|
9
|
-
import { t as groupCredentialRequirements } from "./credentials-
|
|
5
|
+
import { a as readManifestsFromOutDir } from "./dist-FQYQ2FLm.mjs";
|
|
6
|
+
import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
|
|
7
|
+
import { t as readCredentialEnvMap } from "./credential-env-map-B2nVJXPn.mjs";
|
|
8
|
+
import { a as loadProjectDotenvFile, c as getTerminalContentWidth, o as manifestGroupKey, s as normalizeManifestScopeToServer, t as buildCredentialWorkflowConsumersByGroup, u as truncateWithEllipsis } from "./list-enrichment-C6u5eI0j.mjs";
|
|
9
|
+
import { t as groupCredentialRequirements } from "./credentials-CiOwDS5y.mjs";
|
|
10
10
|
//#region src/commands/credentials/requirements/requirements-display.ts
|
|
11
11
|
function dimLabel(label, width = 10) {
|
|
12
12
|
return style(label.padEnd(width), ANSI.dim);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { j as ProjectNotFoundError, n as ui } from "./keystroke.mjs";
|
|
4
4
|
import { s as readStoredProjects } from "./dist-BF6r1hfv.mjs";
|
|
5
|
-
import { n as findProjectRoot } from "./project-config-
|
|
5
|
+
import { n as findProjectRoot } from "./project-config-CsBMT4TL.mjs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
//#region src/lib/resolve-project.ts
|
|
8
8
|
/**
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* run-polling.ts
|
|
6
6
|
*
|
|
7
7
|
* Shared utilities for polling workflow run completion status.
|
|
8
|
-
* Used by `workflows
|
|
8
|
+
* Used by `workflows test` polling and `workflows logs --follow`.
|
|
9
9
|
*/
|
|
10
10
|
const TERMINAL_STATUSES = new Set([
|
|
11
11
|
"completed",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { A as InputValidationError, n as ui, x as toErrorMessage } from "./keystroke.mjs";
|
|
4
|
-
import { a as readManifestsFromOutDir } from "./dist-
|
|
5
|
-
import { a as validateRequiredFields, n as formatValidationError, t as formatMissingInputError } from "./schema-display-
|
|
6
|
-
import { n as sleep, t as TERMINAL_STATUSES } from "./run-polling-
|
|
4
|
+
import { a as readManifestsFromOutDir } from "./dist-FQYQ2FLm.mjs";
|
|
5
|
+
import { a as validateRequiredFields, n as formatValidationError, t as formatMissingInputError } from "./schema-display-CNqiYBIb.mjs";
|
|
6
|
+
import { n as sleep, t as TERMINAL_STATUSES } from "./run-polling-B4KvySvp.mjs";
|
|
7
7
|
import * as fs from "node:fs/promises";
|
|
8
8
|
import * as path$1 from "node:path";
|
|
9
9
|
import { z } from "zod";
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { N as throwReportedCliExit, k as CliExitError, n as ui, x as toErrorMessage } from "./keystroke.mjs";
|
|
4
4
|
import { d as trackProject } from "./dist-BF6r1hfv.mjs";
|
|
5
|
-
import { t as assertWorkflowProjectRoot } from "./project-config-
|
|
5
|
+
import { t as assertWorkflowProjectRoot } from "./project-config-CsBMT4TL.mjs";
|
|
6
6
|
import { i as writeJson } from "./output-CGdYhH0p.mjs";
|
|
7
|
-
import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-
|
|
8
|
-
import { n as resolveWorkflowsDir } from "./resolve-project-
|
|
9
|
-
import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-
|
|
10
|
-
import { i as resolveWorkflowGlobals, o as validateInputOrExit, r as resolveRunInput, s as validateWorkflowGlobalsOrExit, t as pollForCompletion } from "./run-polling-
|
|
7
|
+
import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-B1L8pZsH.mjs";
|
|
8
|
+
import { n as resolveWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
|
|
9
|
+
import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-CUBHcdZl.mjs";
|
|
10
|
+
import { i as resolveWorkflowGlobals, o as validateInputOrExit, r as resolveRunInput, s as validateWorkflowGlobalsOrExit, t as pollForCompletion } from "./run-polling-BwyyKDwg.mjs";
|
|
11
11
|
//#region src/commands/workflows/run.handler.ts
|
|
12
12
|
async function handleWorkflowsRun(options, ctx) {
|
|
13
13
|
const client = requireClient(ctx);
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { N as throwReportedCliExit, f as ANSI, n as ui, p as style, x as toErrorMessage } from "./keystroke.mjs";
|
|
4
4
|
import { i as writeJson, n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
|
|
5
|
-
import { t as createTypedCommand } from "./commander-
|
|
6
|
-
import { i as requireClient } from "./context-
|
|
5
|
+
import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
|
|
6
|
+
import { i as requireClient } from "./context-B1L8pZsH.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
//#region src/commands/runs/inspect-display.ts
|
|
9
9
|
function renderRunInspect(input) {
|
|
@@ -83,7 +83,7 @@ function formatMissingInputError(workflowName, missingFields, inputSchema) {
|
|
|
83
83
|
lines.push(`Missing required input for workflow "${workflowName}"\n`);
|
|
84
84
|
if (inputSchema == null || typeof inputSchema !== "object") {
|
|
85
85
|
lines.push(" (input schema unavailable)\n");
|
|
86
|
-
lines.push(` $ keystroke workflows
|
|
86
|
+
lines.push(` $ keystroke workflows test "${workflowName}" --input '{}'`);
|
|
87
87
|
return lines.join("\n");
|
|
88
88
|
}
|
|
89
89
|
const properties = inputSchema.properties && typeof inputSchema.properties === "object" ? inputSchema.properties : {};
|
|
@@ -96,7 +96,7 @@ function formatMissingInputError(workflowName, missingFields, inputSchema) {
|
|
|
96
96
|
const exampleValue = generateExampleJson(inputSchema);
|
|
97
97
|
const exampleJson = JSON.stringify(exampleValue);
|
|
98
98
|
lines.push("Expected input:");
|
|
99
|
-
lines.push(` $ keystroke workflows
|
|
99
|
+
lines.push(` $ keystroke workflows test "${workflowName}" --input '${exampleJson}'`);
|
|
100
100
|
return lines.join("\n");
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
@@ -110,7 +110,7 @@ function formatMissingInputError(workflowName, missingFields, inputSchema) {
|
|
|
110
110
|
* num2: Required
|
|
111
111
|
*
|
|
112
112
|
* Expected input:
|
|
113
|
-
* $ keystroke workflows
|
|
113
|
+
* $ keystroke workflows test "Addition" --input '{"num":0,"num2":0}'
|
|
114
114
|
*/
|
|
115
115
|
function formatValidationError(workflowName, issues, inputSchema) {
|
|
116
116
|
const lines = [];
|
|
@@ -123,7 +123,7 @@ function formatValidationError(workflowName, issues, inputSchema) {
|
|
|
123
123
|
const exampleValue = inputSchema != null && typeof inputSchema === "object" ? generateExampleJson(inputSchema) : null;
|
|
124
124
|
const exampleJson = JSON.stringify(exampleValue);
|
|
125
125
|
lines.push(`Expected input:`);
|
|
126
|
-
lines.push(` $ keystroke workflows
|
|
126
|
+
lines.push(` $ keystroke workflows test "${workflowName}" --input '${exampleJson}'`);
|
|
127
127
|
return lines.join("\n");
|
|
128
128
|
}
|
|
129
129
|
//#endregion
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { k as CliExitError, n as ui } from "./keystroke.mjs";
|
|
4
4
|
import { i as writeJson, r as isJsonMode } from "./output-CGdYhH0p.mjs";
|
|
5
|
-
import { t as syncKeystrokeAgentSkills } from "./sync-keystroke-agent-skills-
|
|
5
|
+
import { t as syncKeystrokeAgentSkills } from "./sync-keystroke-agent-skills-ChUj1LnK.mjs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
//#region src/commands/skills/skills-sync.handler.ts
|
|
8
8
|
async function handleSkillsSync(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-
|
|
4
|
+
import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/commands/skills/skills.command.ts
|
|
7
7
|
const SkillsCommandOptionsSchema = JsonOptionSchema.extend({ path: z.string().optional().describe("Project root (default: current directory)") });
|
|
@@ -18,13 +18,13 @@ function createSkillsCommand() {
|
|
|
18
18
|
description: "Sync Keystroke agent skills (SKILL.md) from @keystrokehq/skills",
|
|
19
19
|
schema: SkillsCommandOptionsSchema,
|
|
20
20
|
optionsConfig: SKILLS_OPTIONS_CONFIG,
|
|
21
|
-
loadHandler: async () => (await import("./skills.handler-
|
|
21
|
+
loadHandler: async () => (await import("./skills.handler-CPKCf9ZK.mjs")).handleSkillsParent,
|
|
22
22
|
subcommands: [createTypedCommand({
|
|
23
23
|
name: "sync",
|
|
24
24
|
description: "Copy installed @keystrokehq/skills into .cursor/skills and .claude/skills",
|
|
25
25
|
schema: SkillsCommandOptionsSchema,
|
|
26
26
|
optionsConfig: SKILLS_OPTIONS_CONFIG,
|
|
27
|
-
loadHandler: async () => (await import("./skills-sync.handler-
|
|
27
|
+
loadHandler: async () => (await import("./skills-sync.handler-DXF6IgEX.mjs")).handleSkillsSync
|
|
28
28
|
})]
|
|
29
29
|
});
|
|
30
30
|
cmd.enablePositionalOptions();
|
package/dist/{source-analysis-DTnwNwKq-DoBxUDCg.mjs → source-analysis-BBg2E_6G-BQqm16RR.mjs}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { d as getMetadataRoot } from "./layout-
|
|
4
|
-
import { t as BASE_IGNORE_PATTERNS } from "./metadata-layout-
|
|
5
|
-
import { a as literalString, l as unwrapExpression, n as identifierName, r as isNode } from "./oxc-B3KI3rf_-
|
|
3
|
+
import { d as getMetadataRoot } from "./layout-CXkZEsXI.mjs";
|
|
4
|
+
import { t as BASE_IGNORE_PATTERNS } from "./metadata-layout-Bv-B0nHj-CqlcZz_g.mjs";
|
|
5
|
+
import { a as literalString, l as unwrapExpression, n as identifierName, r as isNode } from "./oxc-B3KI3rf_-DdiZWqe2.mjs";
|
|
6
6
|
import { readFile, readdir, rm } from "node:fs/promises";
|
|
7
7
|
import path from "node:path";
|
|
8
|
-
//#region ../../packages/workflow-builder/dist/source-analysis-
|
|
8
|
+
//#region ../../packages/workflow-builder/dist/source-analysis-BBg2E_6G.mjs
|
|
9
9
|
async function removeAllMetadataArtifacts(outputDir) {
|
|
10
10
|
await rm(getMetadataRoot(outputDir), {
|
|
11
11
|
recursive: true,
|
|
@@ -36,7 +36,7 @@ function printSkippedLine(label) {
|
|
|
36
36
|
function createWorker() {
|
|
37
37
|
if (!isTTY()) return null;
|
|
38
38
|
try {
|
|
39
|
-
return new Worker(new URL("./spinner-worker.
|
|
39
|
+
return new Worker(new URL("./spinner-worker.mjs", import.meta.url));
|
|
40
40
|
} catch {
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { writeSync } from "node:fs";
|
|
4
|
+
import { parentPort } from "node:worker_threads";
|
|
5
|
+
//#region src/lib/spinner-worker.ts
|
|
6
|
+
/** Use stdout so cursor position matches `@clack/prompts` `log` (stdout). Mixing stderr here desyncs multi-line ANSI redraws. */
|
|
7
|
+
const OUTPUT_FD = 1;
|
|
8
|
+
const SPINNER_INTERVAL_MS = 79;
|
|
9
|
+
/** Reserve space for prefix, spinner glyph, padding, and elapsed time so lines do not wrap. */
|
|
10
|
+
const LINE_RESERVE_SPINNING = 28;
|
|
11
|
+
/** Completed lines only need room for checkmark + dim duration at end (label carries timing breakdown). */
|
|
12
|
+
const LINE_RESERVE_COMPLETED = 14;
|
|
13
|
+
const BOLD = "\x1B[1m";
|
|
14
|
+
const DIM = "\x1B[2m";
|
|
15
|
+
const CYAN = "\x1B[36m";
|
|
16
|
+
const GREEN = "\x1B[32m";
|
|
17
|
+
const RED = "\x1B[31m";
|
|
18
|
+
const RESET = "\x1B[0m";
|
|
19
|
+
const CURSOR_UP = "\x1B[A";
|
|
20
|
+
const CLEAR_LINE = "\r\x1B[2K";
|
|
21
|
+
let phases = [];
|
|
22
|
+
let linesRendered = 0;
|
|
23
|
+
let intervalId = null;
|
|
24
|
+
function formatDuration(ms) {
|
|
25
|
+
if (ms < 1e3) return `${Math.round(ms)}ms`;
|
|
26
|
+
return `${(ms / 1e3).toFixed(1)}s`;
|
|
27
|
+
}
|
|
28
|
+
function moveUp(n) {
|
|
29
|
+
if (n <= 0) return "";
|
|
30
|
+
return CURSOR_UP.repeat(n);
|
|
31
|
+
}
|
|
32
|
+
function terminalColumns() {
|
|
33
|
+
const c = process.stdout.columns;
|
|
34
|
+
return typeof c === "number" && c > 0 ? c : 80;
|
|
35
|
+
}
|
|
36
|
+
function truncatePlainLabel(label, maxLen) {
|
|
37
|
+
if (label.length <= maxLen) return label;
|
|
38
|
+
if (maxLen <= 3) return "...";
|
|
39
|
+
return `${label.slice(0, maxLen - 3)}...`;
|
|
40
|
+
}
|
|
41
|
+
function maxLabelLength() {
|
|
42
|
+
return Math.max(16, terminalColumns() - LINE_RESERVE_SPINNING);
|
|
43
|
+
}
|
|
44
|
+
function maxCompletedLabelLength() {
|
|
45
|
+
/** Detail lines are split; allow longer segments per line than old single-line budget. */
|
|
46
|
+
return Math.max(72, terminalColumns() - LINE_RESERVE_COMPLETED);
|
|
47
|
+
}
|
|
48
|
+
function clearRenderedArea() {
|
|
49
|
+
if (linesRendered <= 0) return;
|
|
50
|
+
let output = "";
|
|
51
|
+
if (linesRendered > 1) output += moveUp(linesRendered - 1);
|
|
52
|
+
for (let i = 0; i < linesRendered; i++) {
|
|
53
|
+
output += CLEAR_LINE;
|
|
54
|
+
if (i < linesRendered - 1) output += "\n";
|
|
55
|
+
}
|
|
56
|
+
if (linesRendered > 1) output += moveUp(linesRendered - 1);
|
|
57
|
+
writeSync(OUTPUT_FD, output);
|
|
58
|
+
linesRendered = 0;
|
|
59
|
+
}
|
|
60
|
+
function renderPhases() {
|
|
61
|
+
if (phases.length === 0) {
|
|
62
|
+
linesRendered = 0;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const maxLabel = maxLabelLength();
|
|
66
|
+
let output = "";
|
|
67
|
+
for (const [i, phase] of phases.entries()) {
|
|
68
|
+
const label = truncatePlainLabel(phase.label, maxLabel);
|
|
69
|
+
if (phase.status === "spinning") {
|
|
70
|
+
const spinnerChar = `${BOLD}${CYAN}●${RESET}`;
|
|
71
|
+
if (phase.showElapsed) {
|
|
72
|
+
const timeStr = `${DIM}${formatDuration(Date.now() - phase.startTime)}${RESET}`;
|
|
73
|
+
output += `${CLEAR_LINE} ${spinnerChar} ${label} ${timeStr}`;
|
|
74
|
+
} else output += `${CLEAR_LINE} ${spinnerChar} ${label}`;
|
|
75
|
+
} else output += `${CLEAR_LINE} ${DIM}○ ${label}${RESET}`;
|
|
76
|
+
if (i < phases.length - 1) output += "\n";
|
|
77
|
+
}
|
|
78
|
+
writeSync(OUTPUT_FD, output);
|
|
79
|
+
linesRendered = phases.length;
|
|
80
|
+
}
|
|
81
|
+
function tick() {
|
|
82
|
+
if (phases.length === 0) return;
|
|
83
|
+
if (linesRendered > 0) writeSync(OUTPUT_FD, moveUp(linesRendered - 1));
|
|
84
|
+
renderPhases();
|
|
85
|
+
}
|
|
86
|
+
function ensureInterval() {
|
|
87
|
+
if (!intervalId && phases.some((phase) => phase.status === "spinning")) intervalId = setInterval(tick, SPINNER_INTERVAL_MS);
|
|
88
|
+
}
|
|
89
|
+
function stopIntervalIfIdle() {
|
|
90
|
+
if (intervalId && !phases.some((phase) => phase.status === "spinning")) {
|
|
91
|
+
clearInterval(intervalId);
|
|
92
|
+
intervalId = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function writeCompletedLine(label, elapsed) {
|
|
96
|
+
const check = `${BOLD}${GREEN}✓${RESET}`;
|
|
97
|
+
const segments = label.split("\n").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
98
|
+
if (segments.length === 0) {
|
|
99
|
+
if (elapsed) writeSync(OUTPUT_FD, `${CLEAR_LINE} ${check} ${`${DIM}${elapsed}${RESET}`}\n`);
|
|
100
|
+
else writeSync(OUTPUT_FD, `${CLEAR_LINE} ${check}\n`);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const maxW = maxCompletedLabelLength();
|
|
104
|
+
const first = truncatePlainLabel(segments[0] ?? "", maxW);
|
|
105
|
+
if (elapsed) writeSync(OUTPUT_FD, `${CLEAR_LINE} ${check} ${first} ${`${DIM}${elapsed}${RESET}`}\n`);
|
|
106
|
+
else writeSync(OUTPUT_FD, `${CLEAR_LINE} ${check} ${first}\n`);
|
|
107
|
+
for (const segment of segments.slice(1)) writeSync(OUTPUT_FD, `${CLEAR_LINE} ${DIM}${truncatePlainLabel(segment, maxW)}${RESET}\n`);
|
|
108
|
+
}
|
|
109
|
+
function writeFailedLine(label, elapsed, error) {
|
|
110
|
+
const cross = `${BOLD}${RED}✗${RESET}`;
|
|
111
|
+
const truncated = truncatePlainLabel(error ? `${label}: ${error}` : label, maxCompletedLabelLength());
|
|
112
|
+
if (elapsed) writeSync(OUTPUT_FD, `${CLEAR_LINE} ${cross} ${truncated} ${`${DIM}${elapsed}${RESET}`}\n`);
|
|
113
|
+
else writeSync(OUTPUT_FD, `${CLEAR_LINE} ${cross} ${truncated}\n`);
|
|
114
|
+
}
|
|
115
|
+
function writeSkippedLine(label) {
|
|
116
|
+
writeSync(OUTPUT_FD, `${CLEAR_LINE} ${`${DIM}-${RESET}`} ${truncatePlainLabel(label, maxCompletedLabelLength())}\n`);
|
|
117
|
+
}
|
|
118
|
+
function finalizePhase(id, writeLine) {
|
|
119
|
+
clearRenderedArea();
|
|
120
|
+
writeLine();
|
|
121
|
+
phases = phases.filter((p) => p.id !== id);
|
|
122
|
+
if (phases.length > 0) renderPhases();
|
|
123
|
+
stopIntervalIfIdle();
|
|
124
|
+
}
|
|
125
|
+
parentPort?.on("message", (msg) => {
|
|
126
|
+
switch (msg.type) {
|
|
127
|
+
case "addPendingPhase": {
|
|
128
|
+
const phaseId = msg.id ?? "";
|
|
129
|
+
if (!phases.find((p) => p.id === phaseId)) phases.push({
|
|
130
|
+
id: phaseId,
|
|
131
|
+
label: msg.label ?? "",
|
|
132
|
+
startTime: 0,
|
|
133
|
+
status: "pending",
|
|
134
|
+
showElapsed: msg.showElapsed ?? true
|
|
135
|
+
});
|
|
136
|
+
if (linesRendered > 0) writeSync(OUTPUT_FD, moveUp(linesRendered - 1));
|
|
137
|
+
renderPhases();
|
|
138
|
+
ensureInterval();
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
case "addPhase": {
|
|
142
|
+
const phaseId = msg.id ?? "";
|
|
143
|
+
const existing = phases.find((p) => p.id === phaseId);
|
|
144
|
+
if (existing) {
|
|
145
|
+
existing.label = msg.label ?? "";
|
|
146
|
+
existing.startTime = Date.now();
|
|
147
|
+
existing.status = "spinning";
|
|
148
|
+
existing.showElapsed = msg.showElapsed ?? existing.showElapsed;
|
|
149
|
+
} else phases.push({
|
|
150
|
+
id: phaseId,
|
|
151
|
+
label: msg.label ?? "",
|
|
152
|
+
startTime: Date.now(),
|
|
153
|
+
status: "spinning",
|
|
154
|
+
showElapsed: msg.showElapsed ?? true
|
|
155
|
+
});
|
|
156
|
+
if (linesRendered > 0) writeSync(OUTPUT_FD, moveUp(linesRendered - 1));
|
|
157
|
+
renderPhases();
|
|
158
|
+
ensureInterval();
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case "updateLabel": {
|
|
162
|
+
const phase = phases.find((p) => p.id === msg.id);
|
|
163
|
+
if (phase) {
|
|
164
|
+
phase.label = msg.label ?? "";
|
|
165
|
+
if (linesRendered > 0) writeSync(OUTPUT_FD, moveUp(linesRendered - 1));
|
|
166
|
+
renderPhases();
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case "completePhase":
|
|
171
|
+
finalizePhase(msg.id ?? "", () => {
|
|
172
|
+
writeCompletedLine(msg.label ?? "", msg.showElapsed ? msg.elapsed ?? "" : void 0);
|
|
173
|
+
});
|
|
174
|
+
break;
|
|
175
|
+
case "failPhase":
|
|
176
|
+
finalizePhase(msg.id ?? "", () => {
|
|
177
|
+
writeFailedLine(msg.label ?? "", msg.showElapsed ? msg.elapsed ?? "" : void 0, msg.error);
|
|
178
|
+
});
|
|
179
|
+
break;
|
|
180
|
+
case "skipPhase":
|
|
181
|
+
finalizePhase(msg.id ?? "", () => {
|
|
182
|
+
writeSkippedLine(msg.label ?? "");
|
|
183
|
+
});
|
|
184
|
+
break;
|
|
185
|
+
case "stopAll":
|
|
186
|
+
clearRenderedArea();
|
|
187
|
+
phases = [];
|
|
188
|
+
if (intervalId) {
|
|
189
|
+
clearInterval(intervalId);
|
|
190
|
+
intervalId = null;
|
|
191
|
+
}
|
|
192
|
+
break;
|
|
193
|
+
case "exit":
|
|
194
|
+
if (intervalId) {
|
|
195
|
+
clearInterval(intervalId);
|
|
196
|
+
intervalId = null;
|
|
197
|
+
}
|
|
198
|
+
process.exit(0);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
//#endregion
|
|
203
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { a as createKyInstance, i as buildSearchParams, n as auth, r as bundles, s as getClientEnv, t as projects$1 } from "./projects-
|
|
3
|
+
import { a as createKyInstance, i as buildSearchParams, n as auth, r as bundles, s as getClientEnv, t as projects$1 } from "./projects-DfaG_3WP.mjs";
|
|
4
4
|
//#region ../../packages/workflow-sdk/src/v1/admin.ts
|
|
5
5
|
const admin = (api) => ({
|
|
6
6
|
orgs: {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { N as throwReportedCliExit, n as ui } from "./keystroke.mjs";
|
|
4
4
|
import { u as setActiveOrg } from "./dist-BF6r1hfv.mjs";
|
|
5
|
-
import { i as requireClient } from "./context-
|
|
5
|
+
import { i as requireClient } from "./context-B1L8pZsH.mjs";
|
|
6
6
|
import { select } from "@clack/prompts";
|
|
7
7
|
//#region src/commands/org/switch.handler.ts
|
|
8
8
|
async function handleOrgSwitch(_options, ctx) {
|