@keystrokehq/cli 0.0.16 → 0.0.18

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 (150) hide show
  1. package/dist/{accept.handler-BPwp_UAE.mjs → accept.handler-B7QzdKCh.mjs} +4 -4
  2. package/dist/{admin-Bb9Hx-gO.mjs → admin-CYpulx_A.mjs} +11 -11
  3. package/dist/{agents-CbmvvOAx.mjs → agents-Co6Jy_N8.mjs} +10 -10
  4. package/dist/{api-jkf0TTgD.mjs → api-DsK8M-ZH.mjs} +1 -1
  5. package/dist/{api-keys-DJlyIf10.mjs → api-keys-BUCLzRv_.mjs} +6 -6
  6. package/dist/{auth-DpDEkJz7.mjs → auth-niNm-yNT.mjs} +12 -7
  7. package/dist/{auth.handler-u3qmoUX0.mjs → auth.handler-BTH-Qb00.mjs} +59 -26
  8. package/dist/{build-agents-DseUtzd4-VYWtIZy9.mjs → build-agents-DseUtzd4-CthuIecx.mjs} +6 -6
  9. package/dist/{build-metadata-C8Ra_Gi--BdoyLQMl.mjs → build-metadata-C8Ra_Gi--L3l8w0rh.mjs} +7 -7
  10. package/dist/{build-progress-BZivcVz4.mjs → build-progress-AR8xow4_.mjs} +2 -2
  11. package/dist/{build-tasks-GVuMLS0h-p08mMOyK.mjs → build-tasks-GVuMLS0h-CCxCqd02.mjs} +3 -3
  12. package/dist/{build-workflows-CV4tBo6S-knCnBKTc.mjs → build-workflows-CV4tBo6S-DhFBlp6m.mjs} +10 -10
  13. package/dist/{build.handler-BNSC_zhQ.mjs → build.handler-BmlXPhed.mjs} +7 -7
  14. package/dist/{clear-cache.handler-gr5VmEYB.mjs → clear-cache.handler-CTLQ1PIN.mjs} +3 -3
  15. package/dist/clear.handler-BDlwBzX4.mjs +68 -0
  16. package/dist/{clear.handler-CtOZ4aRn.mjs → clear.handler-C_pXAeBG.mjs} +3 -2
  17. package/dist/{commander-D15UZVjp.mjs → commander-BE37hxR3.mjs} +4 -4
  18. package/dist/{connect-DzSNDSmI.mjs → connect-C9NMD8Ky.mjs} +3 -3
  19. package/dist/{connect.handler-DRO05ak3.mjs → connect.handler-C7kysvhz.mjs} +5 -5
  20. package/dist/{context-B1L8pZsH.mjs → context-Bid-Rqj7.mjs} +49 -17
  21. package/dist/{create.handler-DF1Ye4nr.mjs → create.handler-Cp9CV6SN.mjs} +3 -3
  22. package/dist/{credential-env-map-B2nVJXPn.mjs → credential-env-map-BA4LNI7x.mjs} +6 -5
  23. package/dist/{credential-requirements-FtBk5JVB.mjs → credential-requirements-DrrQ9x9P.mjs} +3 -3
  24. package/dist/{credential-schema-mismatch-CfyBUMPS.mjs → credential-schema-mismatch-z74ud-YZ.mjs} +1 -1
  25. package/dist/{credentials-CiOwDS5y.mjs → credentials-DUkVbhvj.mjs} +1 -1
  26. package/dist/{credentials-VidBoOd7.mjs → credentials-fMfKVlEn.mjs} +7 -7
  27. package/dist/{current-deployment-workflow-BRUEdPrN.mjs → current-deployment-workflow-DiwUcKoB.mjs} +6 -6
  28. package/dist/{current.handler-QZQ-l84v.mjs → current.handler-eCR4nClu.mjs} +3 -3
  29. package/dist/{delete.handler-Bude0SVP.mjs → delete.handler-D4ElSAcr.mjs} +2 -2
  30. package/dist/{deploy-eshEEiP-.mjs → deploy-B7LRWcp6.mjs} +2 -2
  31. package/dist/{deploy-CJbVB7e2.mjs → deploy-DyZh--f7.mjs} +1 -1
  32. package/dist/{deploy-progress-DJHph1Fz.mjs → deploy-progress-DK87VKJ-.mjs} +2 -2
  33. package/dist/{deploy.handler-BxxWI7nV.mjs → deploy.handler-DVnH-Niv.mjs} +20 -20
  34. package/dist/{detect-env-access-CwkOYeYM-CZIixHeR.mjs → detect-env-access-CwkOYeYM-CNTyUzme.mjs} +1 -1
  35. package/dist/{diff-utils-4OQTpP5s.mjs → diff-utils-B0ED-Igv.mjs} +1 -1
  36. package/dist/{diff.handler-CzrKCj7N.mjs → diff.handler-lIA2pRBX.mjs} +7 -7
  37. package/dist/dist-CIInPRGh.mjs +1071 -0
  38. package/dist/{dist-FQYQ2FLm.mjs → dist-WFPTDQB3.mjs} +15 -15
  39. package/dist/{env.handler-B3YDQIVE.mjs → env.handler-BIzQLlmo.mjs} +10 -10
  40. package/dist/{error-boundary-CyLcinp1.mjs → error-boundary-B8cmSwJH.mjs} +3 -3
  41. package/dist/{file-metadata-DaPPpiTh.mjs → file-metadata-lrX05iRt.mjs} +1 -1
  42. package/dist/{iam-command-utils-ByLX0A-V.mjs → iam-command-utils-CSZj4XlH.mjs} +2 -2
  43. package/dist/{import-module--8x5SLum-DaUNACER.mjs → import-module--8x5SLum-D7EiPjwl.mjs} +6 -6
  44. package/dist/{init-PTwX63_P.mjs → init-jaqNLGmB.mjs} +3 -3
  45. package/dist/{init.handler-CdytFiFt.mjs → init.handler-DamvbPEw.mjs} +11 -9
  46. package/dist/{inspect.handler-umc7of-r.mjs → inspect.handler-_UcN7dxE.mjs} +8 -8
  47. package/dist/{integration-catalog-BgT4mLzW.mjs → integration-catalog-m8tj_XlD.mjs} +3 -3
  48. package/dist/{integrations-B0Gv-L0s.mjs → integrations-DRL3JmC8.mjs} +12 -7
  49. package/dist/{invites-Cqi7iyIN.mjs → invites-VntHNMYk.mjs} +5 -5
  50. package/dist/{invites.list.handler-CErgY35S.mjs → invites.list.handler-CPl4QHfc.mjs} +4 -4
  51. package/dist/{invites.resend.handler-DRCRIA4F.mjs → invites.resend.handler-BAtb3AX4.mjs} +4 -4
  52. package/dist/{invites.revoke.handler-C0FZdAR0.mjs → invites.revoke.handler-qXOF1Vgx.mjs} +4 -4
  53. package/dist/keystroke.mjs +558 -207
  54. package/dist/{list-enrichment-C6u5eI0j.mjs → list-enrichment-DYvr3XDb.mjs} +3 -3
  55. package/dist/{list.handler-c-8RpgB9.mjs → list.handler-BLkQKiV1.mjs} +17 -16
  56. package/dist/{list.handler-CBEXiTAK.mjs → list.handler-BdRsjRlf.mjs} +3 -3
  57. package/dist/{list.handler-BjutlIkE.mjs → list.handler-CEjKSezx.mjs} +59 -13
  58. package/dist/{list2.handler-T5v4EK20.mjs → list.handler-CJUFdmaU.mjs} +7 -7
  59. package/dist/{list.handler-Cr_DFAae.mjs → list.handler-C_iBLBmS.mjs} +3 -3
  60. package/dist/{list.handler-FlchXrKz.mjs → list.handler-DUz1bJ4x.mjs} +4 -4
  61. package/dist/{list.handler-D-YFoKLU.mjs → list.handler-pHnPFep8.mjs} +7 -7
  62. package/dist/{listen-rHLiCWbn.mjs → listen-DLGZEQRL.mjs} +3 -3
  63. package/dist/{listen.handler-B9T58yAj.mjs → listen.handler-kaAvYk-B.mjs} +4 -4
  64. package/dist/logs-CcYqFKRU.mjs +58 -0
  65. package/dist/logs.handler-DyRoevtO.mjs +53 -0
  66. package/dist/{logs.handler-DGcGN2qb.mjs → logs.handler-lboRKNoE.mjs} +4 -4
  67. package/dist/{members.add.handler-DmYI43rZ.mjs → members.add.handler-DBydP0SR.mjs} +4 -4
  68. package/dist/{members.invite.handler-B_KVxv5m.mjs → members.invite.handler-D4-7fiYC.mjs} +4 -4
  69. package/dist/{members.list.handler-BtuuIgQS.mjs → members.list.handler-Z4cIbcNg.mjs} +4 -4
  70. package/dist/{members.remove.handler-Lvg-CqVv.mjs → members.remove.handler-J56D83O7.mjs} +4 -4
  71. package/dist/{members.update.handler-D-8izeso.mjs → members.update.handler-B5rBv6dt.mjs} +4 -4
  72. package/dist/{normalize-path-CojS-CgQ-DFTvyA27.mjs → normalize-path-CojS-CgQ-D4wSBHgG.mjs} +1 -1
  73. package/dist/{org-DUCts2MV.mjs → org-DGS91uc-.mjs} +17 -17
  74. package/dist/{orgs.create.handler-vXQgDJZ_.mjs → orgs.create.handler-B4naNUSN.mjs} +4 -4
  75. package/dist/{orgs.get.handler-D_Jfl18x.mjs → orgs.get.handler-Ci_JrT08.mjs} +4 -4
  76. package/dist/{orgs.list.handler-BNjoTJvV.mjs → orgs.list.handler-CJ2byIEj.mjs} +4 -4
  77. package/dist/{output-CGdYhH0p.mjs → output-BWcVRt-T.mjs} +1 -1
  78. package/dist/paths-JzzFkXQA-CEipIeVl.mjs +36 -0
  79. package/dist/{paused.handler-ST9dCe8E.mjs → paused.handler-BQSQvQhB.mjs} +3 -3
  80. package/dist/{projects-CbquwUlm.mjs → projects-D90_uEC2.mjs} +5 -5
  81. package/dist/{projects-DfaG_3WP.mjs → projects-fWvIJQ80.mjs} +1 -1
  82. package/dist/{register.handler-BAx0IC-u.mjs → register.handler-CleQJhtQ.mjs} +2 -2
  83. package/dist/{requirements.handler-D5dFi7XZ.mjs → requirements.handler-B51sxQSy.mjs} +7 -7
  84. package/dist/resolve-cli-credentials-DytxgMwn.mjs +47 -0
  85. package/dist/{resolve-project-CURYMjex.mjs → resolve-project-CNQtOWE4.mjs} +7 -7
  86. package/dist/{run-polling-BWcLQvm0.mjs → run-polling-CC6y2XXI.mjs} +5 -5
  87. package/dist/{run.handler-BiBDLoeH.mjs → run.handler-B31BpZJP.mjs} +9 -9
  88. package/dist/{runs-Bc3zjk7V.mjs → runs-Bg_qDeQi.mjs} +4 -4
  89. package/dist/{skill-installer-DkRJ6oLi.mjs → skill-installer-BBgN2tzW.mjs} +2 -2
  90. package/dist/{skills-sync.handler-C4ztv1Vu.mjs → skills-sync.handler-DOxudKmV.mjs} +3 -3
  91. package/dist/{skills.command-DuL4kLUi.mjs → skills.command-JwKWpGvU.mjs} +5 -5
  92. package/dist/{skills.handler-R5KAbioE.mjs → skills.handler-Do9I3dQS.mjs} +1 -1
  93. package/dist/{source-analysis-BBg2E_6G-BQqm16RR.mjs → source-analysis-BBg2E_6G-Ut7kYHOz.mjs} +4 -4
  94. package/dist/{spinner-progress-DfkMzwGx.mjs → spinner-progress-Bx-fYItP.mjs} +1 -1
  95. package/dist/{src-BQdOWkyv.mjs → src-B0tNjKMg.mjs} +1 -1
  96. package/dist/{status.handler-DxCJRm1n.mjs → status.handler-BsVtDW_V.mjs} +19 -4
  97. package/dist/{switch.handler-CTwhIcaQ.mjs → switch.handler-Cu81T2HY.mjs} +5 -5
  98. package/dist/{sync-Pssitj6K.mjs → sync-CXNveL61.mjs} +2 -2
  99. package/dist/{sync.handler-Be0U3x-n.mjs → sync.handler-7g1yDt0H.mjs} +9 -9
  100. package/dist/{task-BNXDZU71.mjs → task-BguWXIiH.mjs} +2 -2
  101. package/dist/{task-target-build-BG6cC3bz.mjs → task-target-build-BaMtXnN7.mjs} +8 -7
  102. package/dist/{task-target-deploy-CZBGNC0H-Ck724yF4.mjs → task-target-deploy-CZBGNC0H-I-tvkGCC.mjs} +1 -1
  103. package/dist/{task-target-deploy-gMQC8kXU.mjs → task-target-deploy-DmpCWE3u.mjs} +1 -1
  104. package/dist/task-target-deploy-runner.mjs +22 -17
  105. package/dist/{test-BISghlKg.mjs → test-A5hz3c7j.mjs} +4 -4
  106. package/dist/{test.handler-DkizZhVu.mjs → test.handler-CJtaMZVy.mjs} +12 -12
  107. package/dist/{test.handler-Dk3CmTa7.mjs → test.handler-Cq2l7SAr.mjs} +2 -2
  108. package/dist/{tool.handler-Bu130Vcz.mjs → tool.handler-B-mOL128.mjs} +115 -95
  109. package/dist/{trigger-artifacts-RizI57RC-CxHwCkQ_.mjs → trigger-artifacts-RizI57RC-DjhOsdOm.mjs} +4 -4
  110. package/dist/{trigger-manifest-PTjVYL1r.mjs → trigger-manifest-Bq2zRbkV.mjs} +1 -1
  111. package/dist/{upgrade-cH9I_pZq.mjs → upgrade-DhfpoyRV.mjs} +2 -2
  112. package/dist/{upgrade.handler-CXEF4ue0.mjs → upgrade.handler-5qSzPC7D.mjs} +1 -1
  113. package/dist/{upload.handler-CpKuAaQ_.mjs → upload.handler-D3-W_1kq.mjs} +10 -10
  114. package/dist/{users.get.handler-D0WO6D1K.mjs → users.get.handler-Bd0OBI-E.mjs} +4 -4
  115. package/dist/{users.list.handler-BSTIniF1.mjs → users.list.handler-CacJz6eC.mjs} +4 -4
  116. package/dist/{users.set-role.handler-DAKdSkbn.mjs → users.set-role.handler-bZMQtUR0.mjs} +4 -4
  117. package/dist/{utils-VC0Vl_pm.mjs → utils-BMUWnz1P.mjs} +2 -2
  118. package/dist/{validate.handler-I8LY-UkG.mjs → validate.handler-Ccq66ki4.mjs} +8 -8
  119. package/dist/{workflow-build-C9rQQ4qU.mjs → workflow-build-_WNsLKwW.mjs} +23 -23
  120. package/dist/{workflow-build-manifest-OPFqFD6f.mjs → workflow-build-manifest-B2GqHyWE.mjs} +3 -3
  121. package/dist/{workflow-bundler-BzHk73PM-AIB4-u4Y.mjs → workflow-bundler-BzHk73PM-WI31RJjH.mjs} +3 -3
  122. package/dist/{workflows-CL1jYSLR.mjs → workflows-Dy2M9bEr.mjs} +16 -16
  123. package/dist/{writer-B-SpZ0G2-olEAgSLc.mjs → writer-B-SpZ0G2-tq1MFgid.mjs} +6 -6
  124. package/package.json +6 -6
  125. package/dist/clear.handler-Dpe05eTq.mjs +0 -42
  126. package/dist/dist-BF6r1hfv.mjs +0 -308
  127. package/dist/logs-DUwdYZB-.mjs +0 -28
  128. package/dist/logs.handler-dcRq-zoc.mjs +0 -35
  129. package/dist/{agent-bundle-package-DWV6B_5q-rRTPU13L.mjs → agent-bundle-package-DWV6B_5q-FPT0bJaA.mjs} +0 -0
  130. package/dist/{agent-manifest-CZdlCTFs.mjs → agent-manifest-tIsqF2OP.mjs} +0 -0
  131. package/dist/{browser-3cUiPlk2.mjs → browser-BpJ8ut9z.mjs} +0 -0
  132. package/dist/{common-BaGFkj3n.mjs → common-AK0q0Oz0.mjs} +0 -0
  133. package/dist/{concurrency-gXn9Rw8x-BI6HQNfC.mjs → concurrency-gXn9Rw8x-BTlfau8D.mjs} +0 -0
  134. package/dist/{cron-parser-C2eJD0yD.mjs → cron-parser-Dw_cWzFu.mjs} +0 -0
  135. package/dist/{declared-credential-requirements-B6h4WRv4.mjs → declared-credential-requirements-D6KT-r-e.mjs} +0 -0
  136. package/dist/{default-urls-BS4twrsS.mjs → default-urls-CTQqM1_A.mjs} +0 -0
  137. package/dist/{layout-CXkZEsXI.mjs → layout-P1v-Gssz.mjs} +0 -0
  138. package/dist/{metadata-layout-Bv-B0nHj-CqlcZz_g.mjs → metadata-layout-Bv-B0nHj-B1c5giJ7.mjs} +1 -1
  139. package/dist/{oxc-B3KI3rf_-DdiZWqe2.mjs → oxc-B3KI3rf_-Cvx4Z-4H.mjs} +0 -0
  140. package/dist/{project-config-CsBMT4TL.mjs → project-config-DudGRFPO.mjs} +1 -1
  141. package/dist/{read-credential-keys-77a91T8M-DMmY6oDW.mjs → read-credential-keys-77a91T8M-B0eiobOd.mjs} +0 -0
  142. package/dist/{rolldown-runtime-twds-ZHy-CO5ir_za.mjs → rolldown-runtime-twds-ZHy-8uqgIurC.mjs} +0 -0
  143. package/dist/{run-polling-CwlzB5-9.mjs → run-polling-DARidqo-.mjs} +0 -0
  144. package/dist/{schema-O9xTWad_.mjs → schema-BjH_e4Fo.mjs} +0 -0
  145. package/dist/{schema-_FQrHcIS.mjs → schema-Lbp5lGJu.mjs} +0 -0
  146. package/dist/{schema-display-CNqiYBIb.mjs → schema-display-NVEl_DFY.mjs} +0 -0
  147. package/dist/{schemas-DodkHgnS.mjs → schemas-B8c7Z5Iy.mjs} +0 -0
  148. package/dist/{source-analysis-CJPymdaA.mjs → source-analysis-Cs0CTBQk.mjs} +0 -0
  149. package/dist/{types-D04ah3uY.mjs → types-BMBuhHhW.mjs} +0 -0
  150. package/dist/{upload-wwSPAC5_.mjs → upload-BbcMkyVl.mjs} +1 -1
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
- import { t as OrgRoleSchema } from "./schema-_FQrHcIS.mjs";
3
+ import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
4
+ import { t as createTypedCommand } from "./commander-BE37hxR3.mjs";
5
+ import { t as OrgRoleSchema } from "./schema-Lbp5lGJu.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/org/invites.command.ts
8
8
  const ConfirmJsonSchema$1 = JsonOptionSchema.extend({ confirm: z.boolean().optional() });
@@ -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-CErgY35S.mjs")).handleOrgInvitesList,
39
+ loadHandler: async () => (await import("./invites.list.handler-CPl4QHfc.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-CErgY35S.mjs")).handleOrgInvitesList
46
+ loadHandler: async () => (await import("./invites.list.handler-CPl4QHfc.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-DRCRIA4F.mjs")).handleOrgInvitesResend
58
+ loadHandler: async () => (await import("./invites.resend.handler-BAtb3AX4.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-C0FZdAR0.mjs")).handleOrgInvitesRevoke
70
+ loadHandler: async () => (await import("./invites.revoke.handler-qXOF1Vgx.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-BtuuIgQS.mjs")).handleMembersList,
145
+ loadHandler: async () => (await import("./members.list.handler-Z4cIbcNg.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-BtuuIgQS.mjs")).handleMembersList
152
+ loadHandler: async () => (await import("./members.list.handler-Z4cIbcNg.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-B_KVxv5m.mjs")).handleMembersInvite
159
+ loadHandler: async () => (await import("./members.invite.handler-D4-7fiYC.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-DmYI43rZ.mjs")).handleMembersAdd
166
+ loadHandler: async () => (await import("./members.add.handler-DBydP0SR.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-D-8izeso.mjs")).handleMembersUpdate
178
+ loadHandler: async () => (await import("./members.update.handler-B5rBv6dt.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-Lvg-CqVv.mjs")).handleMembersRemove
190
+ loadHandler: async () => (await import("./members.remove.handler-J56D83O7.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-Cr_DFAae.mjs")).handleOrgList,
205
+ loadHandler: async () => (await import("./list.handler-C_iBLBmS.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-Cr_DFAae.mjs")).handleOrgList
212
+ loadHandler: async () => (await import("./list.handler-C_iBLBmS.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-QZQ-l84v.mjs")).handleOrgCurrent
219
+ loadHandler: async () => (await import("./current.handler-eCR4nClu.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-CTwhIcaQ.mjs")).handleOrgSwitch
226
+ loadHandler: async () => (await import("./switch.handler-Cu81T2HY.mjs")).handleOrgSwitch
227
227
  }),
228
228
  createOrgMembersCommand(),
229
229
  createOrgInvitesCommand()
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as ui } from "./keystroke.mjs";
4
- import { i as writeJson } from "./output-CGdYhH0p.mjs";
5
- import { i as requireClient } from "./context-B1L8pZsH.mjs";
6
- import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-ByLX0A-V.mjs";
3
+ import { a as ui } from "./keystroke.mjs";
4
+ import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
+ import { i as requireClient } from "./context-Bid-Rqj7.mjs";
6
+ import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-CSZj4XlH.mjs";
7
7
  //#region src/commands/admin/orgs.create.handler.ts
8
8
  async function handleAdminOrgsCreate(options, ctx) {
9
9
  const client = requireClient(ctx);
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as ui } from "./keystroke.mjs";
4
- import { i as writeJson } from "./output-CGdYhH0p.mjs";
5
- import { i as requireClient } from "./context-B1L8pZsH.mjs";
6
- import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-ByLX0A-V.mjs";
3
+ import { a as ui } from "./keystroke.mjs";
4
+ import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
+ import { i as requireClient } from "./context-Bid-Rqj7.mjs";
6
+ import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-CSZj4XlH.mjs";
7
7
  //#region src/commands/admin/orgs.get.handler.ts
8
8
  async function handleAdminOrgsGet(options, ctx) {
9
9
  const client = requireClient(ctx);
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as ui } from "./keystroke.mjs";
4
- import { i as writeJson } from "./output-CGdYhH0p.mjs";
5
- import { i as requireClient } from "./context-B1L8pZsH.mjs";
6
- import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-ByLX0A-V.mjs";
3
+ import { a as ui } from "./keystroke.mjs";
4
+ import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
+ import { i as requireClient } from "./context-Bid-Rqj7.mjs";
6
+ import { n as isIamJsonMode, t as handleIamError } from "./iam-command-utils-CSZj4XlH.mjs";
7
7
  import Table from "cli-table3";
8
8
  //#region src/commands/admin/orgs.list.handler.ts
9
9
  async function handleAdminOrgsList(_options, ctx) {
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { N as throwReportedCliExit } from "./keystroke.mjs";
3
+ import { j as throwReportedCliExit } from "./keystroke.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/lib/output.ts
6
6
  /**
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+
3
+ import * as os from "node:os";
4
+ import * as path$1 from "node:path";
5
+ //#region ../../packages/local-memory/dist/paths-JzzFkXQA.mjs
6
+ /**
7
+ * Single source of truth for the Keystroke local-memory directory name.
8
+ * Every path under ~/.keystroke (and projectRoot/.keystroke) must derive
9
+ * from this constant. This is the only place in the repo where the literal
10
+ * '.keystroke' should appear.
11
+ */
12
+ const KEYSTROKE_DIR = ".keystroke";
13
+ /**
14
+ * Returns the absolute path to the Keystroke base directory.
15
+ *
16
+ * Defaults to `~/.keystroke` (using `os.homedir()`); tests pass a custom
17
+ * `homeDir` to isolate from the real user home.
18
+ */
19
+ function getKeystrokeBaseDir(homeDir = os.homedir()) {
20
+ return path$1.join(homeDir, KEYSTROKE_DIR);
21
+ }
22
+ function validateKeystrokePathSegment(segment) {
23
+ if (segment.length === 0 || segment.includes("\\") || segment === ".." || segment.split("/").includes("..") || path$1.isAbsolute(segment)) throw new Error(`Invalid .keystroke path segment: ${JSON.stringify(segment)}.`);
24
+ }
25
+ /**
26
+ * Returns an absolute path under a project's local `.keystroke` directory.
27
+ *
28
+ * Use this for project-local state owned by other build/runtime packages while
29
+ * keeping the `.keystroke` directory name centralized in local-memory.
30
+ */
31
+ function getKeystrokeProjectPath(projectRoot, ...segments) {
32
+ for (const segment of segments) validateKeystrokePathSegment(segment);
33
+ return path$1.join(path$1.resolve(projectRoot), KEYSTROKE_DIR, ...segments.flatMap((segment) => segment.split("/")));
34
+ }
35
+ //#endregion
36
+ export { getKeystrokeBaseDir as n, getKeystrokeProjectPath as r, KEYSTROKE_DIR as t };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { N as throwReportedCliExit, n as ui, x as toErrorMessage } from "./keystroke.mjs";
4
- import { i as writeJson } from "./output-CGdYhH0p.mjs";
5
- import { i as requireClient } from "./context-B1L8pZsH.mjs";
3
+ import { a as ui, j as throwReportedCliExit, y as toErrorMessage } from "./keystroke.mjs";
4
+ import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
+ import { i as requireClient } from "./context-Bid-Rqj7.mjs";
6
6
  //#region src/commands/workflows/paused/paused.handler.ts
7
7
  async function handleWorkflowsPaused(options, ctx) {
8
8
  const client = requireClient(ctx);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
3
+ import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
4
+ import { t as createTypedCommand } from "./commander-BE37hxR3.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-c-8RpgB9.mjs")).handleProjectsList,
13
+ loadHandler: async () => (await import("./list.handler-BLkQKiV1.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-c-8RpgB9.mjs")).handleProjectsList
19
+ loadHandler: async () => (await import("./list.handler-BLkQKiV1.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-gr5VmEYB.mjs")).handleProjectsClearCache
25
+ loadHandler: async () => (await import("./clear-cache.handler-CTLQ1PIN.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-wwSPAC5_.mjs").then((n) => n.n);
2207
+ const { batchUpload } = await import("./upload-BbcMkyVl.mjs").then((n) => n.n);
2208
2208
  return batchUpload(workflows.map((wf) => ({
2209
2209
  name: wf.workflowName,
2210
2210
  bundle: wf.bundle,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { N as throwReportedCliExit, b as isNetworkError, h as AUTH_HINT, n as ui, x as toErrorMessage } from "./keystroke.mjs";
4
- import { i as writeJson } from "./output-CGdYhH0p.mjs";
3
+ import { a as ui, j as throwReportedCliExit, p as AUTH_HINT, v as isNetworkError, y as toErrorMessage } from "./keystroke.mjs";
4
+ import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
5
  //#region src/commands/integrations/register.handler.ts
6
6
  function exitWithError(ctx, message, opts) {
7
7
  if (ctx.jsonMode) {
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { a as getProcessEnv, f as ANSI, n as ui, p as style } from "./keystroke.mjs";
4
- import { i as writeJson } from "./output-CGdYhH0p.mjs";
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";
3
+ import { a as ui, c as getProcessEnv, n as style, t as ANSI } from "./keystroke.mjs";
4
+ import { i as writeJson } from "./output-BWcVRt-T.mjs";
5
+ import { a as readManifestsFromOutDir } from "./dist-WFPTDQB3.mjs";
6
+ import { t as requireWorkflowsDir } from "./resolve-project-CNQtOWE4.mjs";
7
+ import { t as readCredentialEnvMap } from "./credential-env-map-BA4LNI7x.mjs";
8
+ import { a as loadProjectDotenvFile, c as getTerminalContentWidth, o as manifestGroupKey, s as normalizeManifestScopeToServer, t as buildCredentialWorkflowConsumersByGroup, u as truncateWithEllipsis } from "./list-enrichment-DYvr3XDb.mjs";
9
+ import { t as groupCredentialRequirements } from "./credentials-DUkVbhvj.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);
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { n as credentials } from "./dist-CIInPRGh.mjs";
4
+ //#region src/lib/resolve-cli-credentials.ts
5
+ /**
6
+ * Resolves CLI credential inputs using explicit overrides first, then stored
7
+ * credentials. Logger calls (when provided) describe which source won so the
8
+ * user understands the fallback chain.
9
+ *
10
+ * Precedence:
11
+ * 1. `input.apiKey` (e.g. `--api-key` flag)
12
+ * 2. The active org's API key from stored credentials
13
+ *
14
+ * Same precedence for `serverUrl`. Never throws — returns undefined fields
15
+ * when no source is available, leaving the decision to the caller.
16
+ */
17
+ async function resolveCliCredentials(input = {}) {
18
+ const cred = input.credentials ?? credentials;
19
+ let active = null;
20
+ let urls = null;
21
+ let readErrorMessage;
22
+ try {
23
+ active = await cred.getActiveOrg();
24
+ urls = await cred.getServerUrls();
25
+ } catch (error) {
26
+ const message = error instanceof Error ? error.message : String(error);
27
+ readErrorMessage = message;
28
+ input.logger?.warn(`Could not read saved credentials from ${cred.metadataFilePath}: ${message}`);
29
+ }
30
+ const apiKey = input.apiKey ?? active?.apiKey;
31
+ const serverUrl = input.serverUrl ?? urls?.serverUrl;
32
+ if (!input.apiKey && active?.apiKey) input.logger?.info(`Using saved API key from ${cred.metadataFilePath}`);
33
+ if (!input.serverUrl && urls?.serverUrl) input.logger?.info(`Using saved API URL from ${cred.metadataFilePath}`);
34
+ return {
35
+ apiKey,
36
+ serverUrl,
37
+ activeOrg: active ? {
38
+ organizationId: active.org.organizationId,
39
+ organizationName: active.org.organizationName,
40
+ apiKey: active.apiKey
41
+ } : void 0,
42
+ metadataFilePath: cred.metadataFilePath,
43
+ readErrorMessage
44
+ };
45
+ }
46
+ //#endregion
47
+ export { resolveCliCredentials as t };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { j as ProjectNotFoundError, n as ui } from "./keystroke.mjs";
4
- import { s as readStoredProjects } from "./dist-BF6r1hfv.mjs";
5
- import { n as findProjectRoot } from "./project-config-CsBMT4TL.mjs";
3
+ import { a as ui, k as ProjectNotFoundError } from "./keystroke.mjs";
4
+ import { i as projects } from "./dist-CIInPRGh.mjs";
5
+ import { n as findProjectRoot } from "./project-config-DudGRFPO.mjs";
6
6
  import path from "node:path";
7
7
  //#region src/lib/resolve-project.ts
8
8
  /**
@@ -23,10 +23,10 @@ async function requireWorkflowsDir(explicitPath) {
23
23
  const dir = await resolveWorkflowsDir(explicitPath);
24
24
  if (dir) return dir;
25
25
  ui.warn("No keystroke.config.ts found in this directory or any parent directory.");
26
- const stored = await readStoredProjects();
27
- if (stored?.lastProject) {
28
- ui.hint(`Last used project: ${stored.lastProject}`);
29
- ui.hint(` cd ${stored.lastProject}`);
26
+ const lastProject = await projects.getLast();
27
+ if (lastProject) {
28
+ ui.hint(`Last used project: ${lastProject}`);
29
+ ui.hint(` cd ${lastProject}`);
30
30
  }
31
31
  ui.hint("Run `keystroke init` to initialize a project, or use --path.");
32
32
  throw new ProjectNotFoundError("No keystroke.config.ts found");
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { A as InputValidationError, n as ui, x as toErrorMessage } from "./keystroke.mjs";
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-CwlzB5-9.mjs";
7
- import * as fs from "node:fs/promises";
3
+ import { O as InputValidationError, a as ui, y as toErrorMessage } from "./keystroke.mjs";
4
+ import { a as readManifestsFromOutDir } from "./dist-WFPTDQB3.mjs";
5
+ import { a as validateRequiredFields, n as formatValidationError, t as formatMissingInputError } from "./schema-display-NVEl_DFY.mjs";
6
+ import { n as sleep, t as TERMINAL_STATUSES } from "./run-polling-DARidqo-.mjs";
8
7
  import * as path$1 from "node:path";
8
+ import * as fs from "node:fs/promises";
9
9
  import { z } from "zod";
10
10
  //#region ../../packages/utils/src/json-schema-validation.ts
11
11
  const SCHEMA_CACHE_LIMIT = 256;
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { N as throwReportedCliExit, k as CliExitError, n as ui, x as toErrorMessage } from "./keystroke.mjs";
4
- import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
- import { t as assertWorkflowProjectRoot } from "./project-config-CsBMT4TL.mjs";
6
- import { i as writeJson } from "./output-CGdYhH0p.mjs";
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-BRUEdPrN.mjs";
10
- import { i as resolveWorkflowGlobals, o as validateInputOrExit, r as resolveRunInput, s as validateWorkflowGlobalsOrExit, t as pollForCompletion } from "./run-polling-BWcLQvm0.mjs";
3
+ import { D as CliExitError, a as ui, j as throwReportedCliExit, y as toErrorMessage } from "./keystroke.mjs";
4
+ import { i as projects } from "./dist-CIInPRGh.mjs";
5
+ import { t as assertWorkflowProjectRoot } from "./project-config-DudGRFPO.mjs";
6
+ import { i as writeJson } from "./output-BWcVRt-T.mjs";
7
+ import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-Bid-Rqj7.mjs";
8
+ import { n as resolveWorkflowsDir } from "./resolve-project-CNQtOWE4.mjs";
9
+ import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-DiwUcKoB.mjs";
10
+ import { i as resolveWorkflowGlobals, o as validateInputOrExit, r as resolveRunInput, s as validateWorkflowGlobalsOrExit, t as pollForCompletion } from "./run-polling-CC6y2XXI.mjs";
11
11
  //#region src/commands/workflows/run.handler.ts
12
12
  async function handleWorkflowsRun(options, ctx) {
13
13
  const client = requireClient(ctx);
@@ -72,7 +72,7 @@ async function resolveProjectId(options, ctx) {
72
72
  }
73
73
  const projectConfig = await assertWorkflowProjectRoot(workflowsDir);
74
74
  await assertProjectConfigMatchesAuthenticatedOrg(requireClient(ctx), projectConfig);
75
- trackProject(workflowsDir);
75
+ projects.track(workflowsDir);
76
76
  return projectConfig.projectId;
77
77
  }
78
78
  async function loadCurrentDeploymentWorkflow(client, params) {
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { N as throwReportedCliExit, f as ANSI, n as ui, p as style, x as toErrorMessage } from "./keystroke.mjs";
4
- import { i as writeJson, n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
5
- import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
6
- import { i as requireClient } from "./context-B1L8pZsH.mjs";
3
+ import { a as ui, j as throwReportedCliExit, n as style, t as ANSI, y as toErrorMessage } from "./keystroke.mjs";
4
+ import { i as writeJson, n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
5
+ import { t as createTypedCommand } from "./commander-BE37hxR3.mjs";
6
+ import { i as requireClient } from "./context-Bid-Rqj7.mjs";
7
7
  import { z } from "zod";
8
8
  //#region src/commands/runs/inspect-display.ts
9
9
  function renderRunInspect(input) {
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { k as CliExitError, n as ui } from "./keystroke.mjs";
3
+ import { D as CliExitError, a as ui } from "./keystroke.mjs";
4
4
  import { createRequire } from "node:module";
5
- import { access, cp, mkdir, readFile, readdir, rm, symlink, writeFile } from "node:fs/promises";
6
5
  import path from "node:path";
6
+ import { access, cp, mkdir, readFile, readdir, rm, symlink, writeFile } from "node:fs/promises";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import { autocompleteMultiselect, cancel, isCancel, select } from "@clack/prompts";
9
9
  //#region src/lib/skill-installer/package.ts
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { k as CliExitError, n as ui } from "./keystroke.mjs";
4
- import { i as writeJson, r as isJsonMode } from "./output-CGdYhH0p.mjs";
5
- import { i as UnknownSkillAgentError, n as resolveSkillInstallChoices, r as installKeystrokeAgentSkills, t as summarizeSkillInstall } from "./skill-installer-DkRJ6oLi.mjs";
3
+ import { D as CliExitError, a as ui } from "./keystroke.mjs";
4
+ import { i as writeJson, r as isJsonMode } from "./output-BWcVRt-T.mjs";
5
+ import { i as UnknownSkillAgentError, n as resolveSkillInstallChoices, r as installKeystrokeAgentSkills, t as summarizeSkillInstall } from "./skill-installer-BBgN2tzW.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,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
- import { t as SKILL_INSTALL_METHODS } from "./types-D04ah3uY.mjs";
3
+ import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-BWcVRt-T.mjs";
4
+ import { t as createTypedCommand } from "./commander-BE37hxR3.mjs";
5
+ import { t as SKILL_INSTALL_METHODS } from "./types-BMBuhHhW.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/skills/skills.command.ts
8
8
  const SkillsCommandOptionsSchema = JsonOptionSchema.extend({
@@ -32,13 +32,13 @@ function createSkillsCommand() {
32
32
  description: "Sync Keystroke agent skills (SKILL.md) from @keystrokehq/skills",
33
33
  schema: SkillsCommandOptionsSchema,
34
34
  optionsConfig: SKILLS_OPTIONS_CONFIG,
35
- loadHandler: async () => (await import("./skills.handler-R5KAbioE.mjs")).handleSkillsParent,
35
+ loadHandler: async () => (await import("./skills.handler-Do9I3dQS.mjs")).handleSkillsParent,
36
36
  subcommands: [createTypedCommand({
37
37
  name: "sync",
38
38
  description: "Install bundled Keystroke skills into selected agent skill directories",
39
39
  schema: SkillsCommandOptionsSchema,
40
40
  optionsConfig: SKILLS_OPTIONS_CONFIG,
41
- loadHandler: async () => (await import("./skills-sync.handler-C4ztv1Vu.mjs")).handleSkillsSync
41
+ loadHandler: async () => (await import("./skills-sync.handler-DOxudKmV.mjs")).handleSkillsSync
42
42
  })]
43
43
  });
44
44
  cmd.enablePositionalOptions();
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { n as ui } from "./keystroke.mjs";
3
+ import { a as ui } from "./keystroke.mjs";
4
4
  //#region src/commands/skills/skills.handler.ts
5
5
  async function handleSkillsParent(_options, _ctx) {
6
6
  ui.hint("Run `keystroke skills sync --agent claude-code --method symlink` to install bundled Keystroke skills for selected agents.");
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
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
- import { readFile, readdir, rm } from "node:fs/promises";
3
+ import { d as getMetadataRoot } from "./layout-P1v-Gssz.mjs";
4
+ import { t as BASE_IGNORE_PATTERNS } from "./metadata-layout-Bv-B0nHj-B1c5giJ7.mjs";
5
+ import { a as literalString, l as unwrapExpression, n as identifierName, r as isNode } from "./oxc-B3KI3rf_-Cvx4Z-4H.mjs";
7
6
  import path from "node:path";
7
+ import { readFile, readdir, rm } from "node:fs/promises";
8
8
  //#region ../../packages/workflow-builder/dist/source-analysis-BBg2E_6G.mjs
9
9
  async function removeAllMetadataArtifacts(outputDir) {
10
10
  await rm(getMetadataRoot(outputDir), {
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { d as originalConsole, f as ANSI, m as isTTY, p as style, u as logger } from "./keystroke.mjs";
3
+ import { F as originalConsole, P as logger, n as style, r as isTTY, t as ANSI } from "./keystroke.mjs";
4
4
  import { writeSync } from "node:fs";
5
5
  import { Worker } from "node:worker_threads";
6
6
  //#region src/lib/spinner-progress.ts
@@ -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-DfaG_3WP.mjs";
3
+ import { a as createKyInstance, i as buildSearchParams, n as auth, r as bundles, s as getClientEnv, t as projects$1 } from "./projects-fWvIJQ80.mjs";
4
4
  //#region ../../packages/workflow-sdk/src/v1/admin.ts
5
5
  const admin = (api) => ({
6
6
  orgs: {
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { b as isNetworkError, g as REAUTH_HINT, h as AUTH_HINT, n as ui, x as toErrorMessage, y as isAuthError } from "./keystroke.mjs";
3
+ import { _ as isAuthError, a as ui, m as REAUTH_HINT, p as AUTH_HINT, v as isNetworkError, y as toErrorMessage } from "./keystroke.mjs";
4
4
  //#region src/commands/auth/status.handler.ts
5
5
  async function getValidationStatus(ctx) {
6
6
  if (!ctx.client) return { kind: "not_authenticated" };
@@ -35,7 +35,7 @@ async function getLiveUser(ctx, validation) {
35
35
  }
36
36
  function getLocalOrganization(ctx) {
37
37
  if (!ctx.organizationId) return;
38
- const org = ctx.storedCredentials?.orgs.find((entry) => entry.organizationId === ctx.organizationId);
38
+ const org = ctx.storedOrgs.find((entry) => entry.organizationId === ctx.organizationId);
39
39
  if (!org) return { id: ctx.organizationId };
40
40
  return {
41
41
  id: org.organizationId,
@@ -82,11 +82,25 @@ function printValidationStatus(validation) {
82
82
  return;
83
83
  }
84
84
  }
85
+ function printCredentialStorage(ctx) {
86
+ const info = ctx.credentialStorageInfo;
87
+ if (info.secretStorageKind === "keychain") {
88
+ ui.hint("Credential storage: OS credential store");
89
+ if (ctx.credentialReadError) {
90
+ ui.warn("Saved credential metadata exists, but the OS credential store is unavailable.");
91
+ ui.hint("Unlock your keychain or rerun `keystroke auth`.");
92
+ ui.hint(`Credential store error: ${ctx.credentialReadError}`);
93
+ }
94
+ return;
95
+ }
96
+ ui.warn("Credential storage: plaintext file (insecure)");
97
+ ui.hint(`Secrets: ${info.legacySecretsFilePath}`);
98
+ }
85
99
  async function handleAuthStatus(_options, ctx) {
86
100
  const validation = await getValidationStatus(ctx);
87
101
  const liveUser = await getLiveUser(ctx, validation);
88
102
  const organization = getLiveOrganization(liveUser, ctx.organizationId ?? (validation.kind === "valid" ? validation.organizationId : void 0)) ?? getLocalOrganization(ctx);
89
- const userEmail = liveUser?.email ?? ctx.storedCredentials?.user?.email;
103
+ const userEmail = liveUser?.email ?? ctx.storedUser?.email;
90
104
  ui.header("Keystroke CLI auth status");
91
105
  if (userEmail) ui.text(`Signed in as: ${userEmail}`);
92
106
  else if (validation.kind === "not_authenticated") ui.hint("No saved user identity found.");
@@ -95,7 +109,8 @@ async function handleAuthStatus(_options, ctx) {
95
109
  if (ctx.orgSource) ui.hint(`Source: ${ctx.orgSource}`);
96
110
  printValidationStatus(validation);
97
111
  if (ctx.baseUrl) ui.hint(`API URL: ${ctx.baseUrl}`);
98
- ui.hint(`Credentials: ${ctx.credentialsPath}`);
112
+ printCredentialStorage(ctx);
113
+ ui.hint(`Credentials: ${ctx.metadataFilePath}`);
99
114
  }
100
115
  //#endregion
101
116
  export { handleAuthStatus };