@kodycodes/cli 1.26.2 → 1.26.3

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 (270) hide show
  1. package/dist/auth-4FW6GCLG.js +26 -0
  2. package/dist/auth-4FW6GCLG.js.map +6 -0
  3. package/dist/bin.js +27 -3
  4. package/dist/bin.js.map +6 -1
  5. package/dist/chunk-46IJPEID.js +30 -0
  6. package/dist/chunk-46IJPEID.js.map +6 -0
  7. package/dist/chunk-4D6ORNXY.js +24404 -0
  8. package/dist/chunk-4D6ORNXY.js.map +6 -0
  9. package/dist/chunk-64IM6G4Z.js +341 -0
  10. package/dist/chunk-64IM6G4Z.js.map +6 -0
  11. package/dist/{package-local-runtime-source.js → chunk-64XN367G.js} +373 -52
  12. package/dist/chunk-64XN367G.js.map +6 -0
  13. package/dist/chunk-6XQP5SWX.js +26 -0
  14. package/dist/chunk-6XQP5SWX.js.map +6 -0
  15. package/dist/chunk-75RZUXQL.js +62 -0
  16. package/dist/chunk-75RZUXQL.js.map +6 -0
  17. package/dist/chunk-BISUL7CE.js +106 -0
  18. package/dist/chunk-BISUL7CE.js.map +6 -0
  19. package/dist/chunk-BPGY4IE7.js +57 -0
  20. package/dist/chunk-BPGY4IE7.js.map +6 -0
  21. package/dist/chunk-CASGRYOF.js +21 -0
  22. package/dist/chunk-CASGRYOF.js.map +6 -0
  23. package/dist/chunk-CWWHR4FH.js +19 -0
  24. package/dist/chunk-CWWHR4FH.js.map +6 -0
  25. package/dist/chunk-D55XPY3T.js +1382 -0
  26. package/dist/chunk-D55XPY3T.js.map +6 -0
  27. package/dist/chunk-EOCV74B2.js +948 -0
  28. package/dist/chunk-EOCV74B2.js.map +6 -0
  29. package/dist/chunk-FBVNFWR6.js +437 -0
  30. package/dist/chunk-FBVNFWR6.js.map +6 -0
  31. package/dist/chunk-G4YN6XP5.js +14 -0
  32. package/dist/chunk-G4YN6XP5.js.map +6 -0
  33. package/dist/chunk-G6LJWROP.js +18 -0
  34. package/dist/chunk-G6LJWROP.js.map +6 -0
  35. package/dist/chunk-IHP6PV6X.js +49 -0
  36. package/dist/chunk-IHP6PV6X.js.map +6 -0
  37. package/dist/chunk-JWEFKKAD.js +24 -0
  38. package/dist/chunk-JWEFKKAD.js.map +6 -0
  39. package/dist/chunk-LWNB26KO.js +147 -0
  40. package/dist/chunk-LWNB26KO.js.map +6 -0
  41. package/dist/chunk-OVGXPRSY.js +20 -0
  42. package/dist/chunk-OVGXPRSY.js.map +6 -0
  43. package/dist/chunk-PDWCKWQF.js +453 -0
  44. package/dist/chunk-PDWCKWQF.js.map +6 -0
  45. package/dist/chunk-QHBCP4OB.js +44 -0
  46. package/dist/chunk-QHBCP4OB.js.map +6 -0
  47. package/dist/chunk-R4IUV5P5.js +664 -0
  48. package/dist/chunk-R4IUV5P5.js.map +6 -0
  49. package/dist/chunk-RM34N3KI.js +525 -0
  50. package/dist/chunk-RM34N3KI.js.map +6 -0
  51. package/dist/chunk-RTWUNV76.js +309 -0
  52. package/dist/chunk-RTWUNV76.js.map +6 -0
  53. package/dist/chunk-SMURF26I.js +23 -0
  54. package/dist/chunk-SMURF26I.js.map +6 -0
  55. package/dist/chunk-SXHULGL4.js +426 -0
  56. package/dist/chunk-SXHULGL4.js.map +6 -0
  57. package/dist/chunk-TIL35OWA.js +1959 -0
  58. package/dist/chunk-TIL35OWA.js.map +6 -0
  59. package/dist/chunk-VQS5YSCI.js +54 -0
  60. package/dist/chunk-VQS5YSCI.js.map +6 -0
  61. package/dist/chunk-XDCOWU5R.js +696 -0
  62. package/dist/chunk-XDCOWU5R.js.map +6 -0
  63. package/dist/chunk-XOPPGRUP.js +605 -0
  64. package/dist/chunk-XOPPGRUP.js.map +6 -0
  65. package/dist/cli.js +74 -1500
  66. package/dist/cli.js.map +6 -1
  67. package/dist/dev-command-3LX234N6.js +4900 -0
  68. package/dist/dev-command-3LX234N6.js.map +6 -0
  69. package/dist/git-credential-FUE3JE3T.js +163 -0
  70. package/dist/git-credential-FUE3JE3T.js.map +6 -0
  71. package/dist/install-ZML2TCDG.js +10694 -0
  72. package/dist/install-ZML2TCDG.js.map +6 -0
  73. package/dist/local-execute-SZV6XN4T.js +368 -0
  74. package/dist/local-execute-SZV6XN4T.js.map +6 -0
  75. package/dist/local-package-run-2TMCAZZ2.js +23 -0
  76. package/dist/local-package-run-2TMCAZZ2.js.map +6 -0
  77. package/dist/mcp-G2AWTIXR.js +21 -0
  78. package/dist/mcp-G2AWTIXR.js.map +6 -0
  79. package/dist/mock-dep-resolve-TVABDNR7.js +52 -0
  80. package/dist/mock-dep-resolve-TVABDNR7.js.map +6 -0
  81. package/dist/mock-fetch-gateway-B5TFGGQS.js +34 -0
  82. package/dist/mock-fetch-gateway-B5TFGGQS.js.map +6 -0
  83. package/dist/mock-local-deps-5SZT3PWT.js +197 -0
  84. package/dist/mock-local-deps-5SZT3PWT.js.map +6 -0
  85. package/dist/mock-server-SV2IKC4I.js +21 -0
  86. package/dist/mock-server-SV2IKC4I.js.map +6 -0
  87. package/dist/open-api-client-DVVMLY7P.js +42 -0
  88. package/dist/open-api-client-DVVMLY7P.js.map +6 -0
  89. package/dist/org-X7B5BI4R.js +132 -0
  90. package/dist/org-X7B5BI4R.js.map +6 -0
  91. package/dist/package-manifest-QH2RU64C.js +14 -0
  92. package/dist/package-manifest-QH2RU64C.js.map +6 -0
  93. package/dist/remote-execute-QMQDVHOY.js +110 -0
  94. package/dist/remote-execute-QMQDVHOY.js.map +6 -0
  95. package/dist/setup-git-5KCUBYPB.js +88 -0
  96. package/dist/setup-git-5KCUBYPB.js.map +6 -0
  97. package/dist/skill-ENPATRIW.js +43 -0
  98. package/dist/skill-ENPATRIW.js.map +6 -0
  99. package/dist/store-WTMRH527.js +48 -0
  100. package/dist/store-WTMRH527.js.map +6 -0
  101. package/dist/structured-error-C65GQ53Z.js +13 -0
  102. package/dist/structured-error-C65GQ53Z.js.map +6 -0
  103. package/dist/target-3QHY7JT4.js +45 -0
  104. package/dist/target-3QHY7JT4.js.map +6 -0
  105. package/dist/webapi-NTVP4BO3.js +2482 -0
  106. package/dist/webapi-NTVP4BO3.js.map +6 -0
  107. package/package.json +8 -8
  108. package/dist/add-mcp-install.js +0 -59
  109. package/dist/add-mcp-install.js.map +0 -1
  110. package/dist/api-token-store.js +0 -120
  111. package/dist/api-token-store.js.map +0 -1
  112. package/dist/api-token.js +0 -238
  113. package/dist/api-token.js.map +0 -1
  114. package/dist/auth-bootstrap.js +0 -373
  115. package/dist/auth-bootstrap.js.map +0 -1
  116. package/dist/auth.js +0 -386
  117. package/dist/auth.js.map +0 -1
  118. package/dist/capability-proxy.js +0 -527
  119. package/dist/capability-proxy.js.map +0 -1
  120. package/dist/credential-call-map.js +0 -155
  121. package/dist/credential-call-map.js.map +0 -1
  122. package/dist/credential-client-runtime-source.js +0 -9
  123. package/dist/credential-client-runtime-source.js.map +0 -1
  124. package/dist/credentialed-fetch-scan.js +0 -98
  125. package/dist/credentialed-fetch-scan.js.map +0 -1
  126. package/dist/defaults.js +0 -34
  127. package/dist/defaults.js.map +0 -1
  128. package/dist/detect-running-hosts.js +0 -13
  129. package/dist/detect-running-hosts.js.map +0 -1
  130. package/dist/dev/dev-assets.js +0 -202
  131. package/dist/dev/dev-assets.js.map +0 -1
  132. package/dist/dev/dev-bundler.js +0 -65
  133. package/dist/dev/dev-bundler.js.map +0 -1
  134. package/dist/dev/dev-events.js +0 -94
  135. package/dist/dev/dev-events.js.map +0 -1
  136. package/dist/dev/dev-port.js +0 -80
  137. package/dist/dev/dev-port.js.map +0 -1
  138. package/dist/dev/dev-protocol.js +0 -14
  139. package/dist/dev/dev-protocol.js.map +0 -1
  140. package/dist/dev/dev-registry.js +0 -95
  141. package/dist/dev/dev-registry.js.map +0 -1
  142. package/dist/dev/dev-watcher.js +0 -162
  143. package/dist/dev/dev-watcher.js.map +0 -1
  144. package/dist/dev/error-page.js +0 -64
  145. package/dist/dev/error-page.js.map +0 -1
  146. package/dist/dev/live-reload.js +0 -151
  147. package/dist/dev/live-reload.js.map +0 -1
  148. package/dist/dev/prebuild.js +0 -102
  149. package/dist/dev/prebuild.js.map +0 -1
  150. package/dist/dev/process-reaper.js +0 -151
  151. package/dist/dev/process-reaper.js.map +0 -1
  152. package/dist/dev/stack-trace.js +0 -56
  153. package/dist/dev/stack-trace.js.map +0 -1
  154. package/dist/dev/workerd-process.js +0 -118
  155. package/dist/dev/workerd-process.js.map +0 -1
  156. package/dist/dev-command.js +0 -676
  157. package/dist/dev-command.js.map +0 -1
  158. package/dist/discover-login-identity.js +0 -77
  159. package/dist/discover-login-identity.js.map +0 -1
  160. package/dist/discover-org.js +0 -62
  161. package/dist/discover-org.js.map +0 -1
  162. package/dist/git-credential.js +0 -147
  163. package/dist/git-credential.js.map +0 -1
  164. package/dist/help.js +0 -333
  165. package/dist/help.js.map +0 -1
  166. package/dist/host-catalog.js +0 -427
  167. package/dist/host-catalog.js.map +0 -1
  168. package/dist/host-config.js +0 -80
  169. package/dist/host-config.js.map +0 -1
  170. package/dist/http-error-body.js +0 -35
  171. package/dist/http-error-body.js.map +0 -1
  172. package/dist/install-hosts.js +0 -328
  173. package/dist/install-hosts.js.map +0 -1
  174. package/dist/install.js +0 -120
  175. package/dist/install.js.map +0 -1
  176. package/dist/invoke-passthrough.js +0 -60
  177. package/dist/invoke-passthrough.js.map +0 -1
  178. package/dist/local-bundle.js +0 -200
  179. package/dist/local-bundle.js.map +0 -1
  180. package/dist/local-execute-auth.js +0 -53
  181. package/dist/local-execute-auth.js.map +0 -1
  182. package/dist/local-execute.js +0 -338
  183. package/dist/local-execute.js.map +0 -1
  184. package/dist/local-gateway-fetch-forward.js +0 -135
  185. package/dist/local-gateway-fetch-forward.js.map +0 -1
  186. package/dist/local-host-runtime-surface.js +0 -75
  187. package/dist/local-host-runtime-surface.js.map +0 -1
  188. package/dist/local-package-graph.js +0 -405
  189. package/dist/local-package-graph.js.map +0 -1
  190. package/dist/local-package-run.js +0 -307
  191. package/dist/local-package-run.js.map +0 -1
  192. package/dist/local-runtime-bridge.js +0 -132
  193. package/dist/local-runtime-bridge.js.map +0 -1
  194. package/dist/local-runtime-source.js +0 -541
  195. package/dist/local-runtime-source.js.map +0 -1
  196. package/dist/login-callback-assets.js +0 -10
  197. package/dist/login-callback-assets.js.map +0 -1
  198. package/dist/login-callback-page.js +0 -362
  199. package/dist/login-callback-page.js.map +0 -1
  200. package/dist/mcp.js +0 -134
  201. package/dist/mcp.js.map +0 -1
  202. package/dist/mock/ensure-msw.js +0 -215
  203. package/dist/mock/ensure-msw.js.map +0 -1
  204. package/dist/mock/install-mock-fetch-shim.js +0 -36
  205. package/dist/mock/install-mock-fetch-shim.js.map +0 -1
  206. package/dist/mock/load-package-mocks.js +0 -136
  207. package/dist/mock/load-package-mocks.js.map +0 -1
  208. package/dist/mock/mock-fetch-gateway.js +0 -343
  209. package/dist/mock/mock-fetch-gateway.js.map +0 -1
  210. package/dist/mock/mock-gateway-fetch-shim.js +0 -104
  211. package/dist/mock/mock-gateway-fetch-shim.js.map +0 -1
  212. package/dist/mock/mock-server.js +0 -499
  213. package/dist/mock/mock-server.js.map +0 -1
  214. package/dist/mock/mock-storage.js +0 -186
  215. package/dist/mock/mock-storage.js.map +0 -1
  216. package/dist/mock/mock-supported.js +0 -63
  217. package/dist/mock/mock-supported.js.map +0 -1
  218. package/dist/mock-dep-resolve.js +0 -47
  219. package/dist/mock-dep-resolve.js.map +0 -1
  220. package/dist/mock-local-deps.js +0 -207
  221. package/dist/mock-local-deps.js.map +0 -1
  222. package/dist/network-error.js +0 -11
  223. package/dist/network-error.js.map +0 -1
  224. package/dist/node-engine.js +0 -21
  225. package/dist/node-engine.js.map +0 -1
  226. package/dist/oauth-provider.js +0 -107
  227. package/dist/oauth-provider.js.map +0 -1
  228. package/dist/onboarding-prompt.js +0 -15
  229. package/dist/onboarding-prompt.js.map +0 -1
  230. package/dist/open-api-client.js +0 -432
  231. package/dist/open-api-client.js.map +0 -1
  232. package/dist/open-url.js +0 -21
  233. package/dist/open-url.js.map +0 -1
  234. package/dist/org-resolve.js +0 -16
  235. package/dist/org-resolve.js.map +0 -1
  236. package/dist/org-slug.js +0 -11
  237. package/dist/org-slug.js.map +0 -1
  238. package/dist/org.js +0 -100
  239. package/dist/org.js.map +0 -1
  240. package/dist/package-app-dev.js +0 -922
  241. package/dist/package-app-dev.js.map +0 -1
  242. package/dist/package-collaborators.js +0 -179
  243. package/dist/package-collaborators.js.map +0 -1
  244. package/dist/package-info.js +0 -19
  245. package/dist/package-info.js.map +0 -1
  246. package/dist/package-local-runtime-source.js.map +0 -1
  247. package/dist/package-manifest.js +0 -364
  248. package/dist/package-manifest.js.map +0 -1
  249. package/dist/process-info.js +0 -14
  250. package/dist/process-info.js.map +0 -1
  251. package/dist/redact.js +0 -16
  252. package/dist/redact.js.map +0 -1
  253. package/dist/remote-execute.js +0 -108
  254. package/dist/remote-execute.js.map +0 -1
  255. package/dist/setup-git.js +0 -676
  256. package/dist/setup-git.js.map +0 -1
  257. package/dist/skill.js +0 -35
  258. package/dist/skill.js.map +0 -1
  259. package/dist/store.js +0 -597
  260. package/dist/store.js.map +0 -1
  261. package/dist/structured-error.js +0 -57
  262. package/dist/structured-error.js.map +0 -1
  263. package/dist/target.js +0 -52
  264. package/dist/target.js.map +0 -1
  265. package/dist/tool-result.js +0 -19
  266. package/dist/tool-result.js.map +0 -1
  267. package/dist/which.js +0 -22
  268. package/dist/which.js.map +0 -1
  269. package/dist/workerd-binary.js +0 -98
  270. package/dist/workerd-binary.js.map +0 -1
@@ -0,0 +1,525 @@
1
+ import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
+ import {
3
+ defaultMcpUrl,
4
+ keyringService
5
+ } from "./chunk-IHP6PV6X.js";
6
+
7
+ // src/store.ts
8
+ import {
9
+ chmodSync,
10
+ mkdirSync,
11
+ readFileSync,
12
+ unlinkSync,
13
+ writeFileSync
14
+ } from "node:fs";
15
+ import { dirname, join } from "node:path";
16
+ import { homedir } from "node:os";
17
+ import { Entry } from "@napi-rs/keyring";
18
+ var secretServiceKeyringOptions = {
19
+ linux: { store: "secret-service" }
20
+ };
21
+ function accountForMcpUrl(mcpUrl) {
22
+ return `cli:${new URL(mcpUrl).origin}`;
23
+ }
24
+ function fileStorePath(mcpUrl, home = homedir()) {
25
+ const origin = new URL(mcpUrl).host.replace(/[^a-zA-Z0-9.-]/g, "_");
26
+ const base = process.platform === "win32" ? join(process.env.APPDATA || join(home, "AppData", "Roaming"), "kody") : process.platform === "darwin" ? join(home, "Library", "Application Support", "kody") : join(process.env.XDG_CONFIG_HOME || join(home, ".config"), "kody");
27
+ return join(base, `credentials-${origin}.json`);
28
+ }
29
+ function createFileBackend(path) {
30
+ return {
31
+ kind: "file",
32
+ path,
33
+ get() {
34
+ try {
35
+ return readFileSync(path, "utf8");
36
+ } catch {
37
+ return null;
38
+ }
39
+ },
40
+ set(value) {
41
+ mkdirSync(dirname(path), { recursive: true, mode: 448 });
42
+ writeFileSync(path, value, { mode: 384 });
43
+ try {
44
+ chmodSync(path, 384);
45
+ } catch {
46
+ }
47
+ },
48
+ delete() {
49
+ try {
50
+ unlinkSync(path);
51
+ return true;
52
+ } catch {
53
+ return false;
54
+ }
55
+ }
56
+ };
57
+ }
58
+ function createKeyringBackend(mcpUrl) {
59
+ const entry = new Entry(
60
+ keyringService,
61
+ accountForMcpUrl(mcpUrl),
62
+ secretServiceKeyringOptions
63
+ );
64
+ return {
65
+ kind: "keyring",
66
+ get() {
67
+ try {
68
+ return entry.getPassword();
69
+ } catch {
70
+ return null;
71
+ }
72
+ },
73
+ set(value) {
74
+ entry.setPassword(value);
75
+ },
76
+ delete() {
77
+ try {
78
+ return entry.deleteCredential();
79
+ } catch {
80
+ return false;
81
+ }
82
+ }
83
+ };
84
+ }
85
+ function fileBackendFor(mcpUrl, resolution) {
86
+ const path = resolution?.fileStorePath?.(mcpUrl) ?? fileStorePath(mcpUrl);
87
+ return createFileBackend(path);
88
+ }
89
+ function resolveBackend(mcpUrl, preferred, resolution) {
90
+ if (preferred) return preferred;
91
+ try {
92
+ return (resolution?.createKeyring ?? createKeyringBackend)(mcpUrl);
93
+ } catch {
94
+ return fileBackendFor(mcpUrl, resolution);
95
+ }
96
+ }
97
+ function withDerivedIssuer(parsed) {
98
+ if (typeof parsed.authorizationServerUrl === "string" && parsed.authorizationServerUrl.trim()) {
99
+ return parsed;
100
+ }
101
+ if (typeof parsed.mcpUrl !== "string" || !parsed.mcpUrl) {
102
+ throw new Error("Stored Kody credentials are invalid. Run `kody login`.");
103
+ }
104
+ return {
105
+ ...parsed,
106
+ authorizationServerUrl: new URL(parsed.mcpUrl).origin
107
+ };
108
+ }
109
+ function recordToCredentials(mcpUrl, record, org) {
110
+ const slug = org ?? record.org;
111
+ return withDerivedIssuer({
112
+ version: 1,
113
+ mcpUrl,
114
+ ...slug ? { org: slug } : {},
115
+ resource: record.resource,
116
+ authorizationServerUrl: record.authorizationServerUrl,
117
+ clientId: record.clientId,
118
+ ...record.clientSecret !== void 0 ? { clientSecret: record.clientSecret } : {},
119
+ accessToken: record.accessToken,
120
+ ...record.refreshToken !== void 0 ? { refreshToken: record.refreshToken } : {},
121
+ tokenType: record.tokenType,
122
+ ...record.expiresAt !== void 0 ? { expiresAt: record.expiresAt } : {},
123
+ ...record.scope !== void 0 ? { scope: record.scope } : {}
124
+ });
125
+ }
126
+ function credentialsToRecord(credentials) {
127
+ return {
128
+ ...credentials.org ? { org: credentials.org } : {},
129
+ resource: credentials.resource,
130
+ authorizationServerUrl: credentials.authorizationServerUrl,
131
+ clientId: credentials.clientId,
132
+ ...credentials.clientSecret !== void 0 ? { clientSecret: credentials.clientSecret } : {},
133
+ accessToken: credentials.accessToken,
134
+ ...credentials.refreshToken !== void 0 ? { refreshToken: credentials.refreshToken } : {},
135
+ tokenType: credentials.tokenType,
136
+ ...credentials.expiresAt !== void 0 ? { expiresAt: credentials.expiresAt } : {},
137
+ ...credentials.scope !== void 0 ? { scope: credentials.scope } : {}
138
+ };
139
+ }
140
+ function isRecord(value) {
141
+ return value !== null && typeof value === "object" && !Array.isArray(value);
142
+ }
143
+ function parseOrgRecord(value) {
144
+ if (!isRecord(value)) return null;
145
+ if (typeof value.accessToken !== "string" || !value.accessToken) return null;
146
+ if (typeof value.clientId !== "string" || !value.clientId) return null;
147
+ if (typeof value.resource !== "string" || !value.resource) return null;
148
+ if (typeof value.tokenType !== "string" || !value.tokenType) return null;
149
+ const authorizationServerUrl = typeof value.authorizationServerUrl === "string" ? value.authorizationServerUrl : "";
150
+ return {
151
+ ...typeof value.org === "string" && value.org.trim() ? { org: value.org.trim().toLowerCase() } : {},
152
+ resource: value.resource,
153
+ authorizationServerUrl,
154
+ clientId: value.clientId,
155
+ ...typeof value.clientSecret === "string" ? { clientSecret: value.clientSecret } : {},
156
+ accessToken: value.accessToken,
157
+ ...typeof value.refreshToken === "string" ? { refreshToken: value.refreshToken } : {},
158
+ tokenType: value.tokenType,
159
+ ...typeof value.expiresAt === "number" ? { expiresAt: value.expiresAt } : {},
160
+ ...typeof value.scope === "string" ? { scope: value.scope } : {}
161
+ };
162
+ }
163
+ function parseCredentialStore(raw, fallbackMcpUrl = defaultMcpUrl) {
164
+ const parsed = JSON.parse(raw);
165
+ if (!isRecord(parsed) || typeof parsed.version !== "number") {
166
+ throw new Error("Stored Kody credentials are invalid. Run `kody login`.");
167
+ }
168
+ if (parsed.version === 2) {
169
+ const mcpUrl = typeof parsed.mcpUrl === "string" && parsed.mcpUrl ? parsed.mcpUrl : fallbackMcpUrl;
170
+ const orgs = {};
171
+ if (isRecord(parsed.orgs)) {
172
+ for (const [key, value] of Object.entries(parsed.orgs)) {
173
+ const record = parseOrgRecord(value);
174
+ if (!record) {
175
+ throw new Error("Stored Kody credentials are invalid. Run `kody login`.");
176
+ }
177
+ const slug = (record.org ?? key).trim().toLowerCase();
178
+ if (!slug) {
179
+ throw new Error("Stored Kody credentials are invalid. Run `kody login`.");
180
+ }
181
+ orgs[slug] = { ...record, org: slug };
182
+ }
183
+ }
184
+ const pending = parsed.pending !== void 0 ? parseOrgRecord(parsed.pending) : void 0;
185
+ if (parsed.pending !== void 0 && !pending) {
186
+ throw new Error("Stored Kody credentials are invalid. Run `kody login`.");
187
+ }
188
+ const activeOrgRaw = typeof parsed.activeOrg === "string" ? parsed.activeOrg.trim().toLowerCase() : null;
189
+ const activeOrg = activeOrgRaw && orgs[activeOrgRaw] ? activeOrgRaw : Object.keys(orgs).sort((a, b) => a.localeCompare(b))[0] ?? null;
190
+ return {
191
+ version: 2,
192
+ mcpUrl,
193
+ activeOrg,
194
+ orgs,
195
+ ...pending ? { pending } : {}
196
+ };
197
+ }
198
+ if (parsed.version === 1) {
199
+ const credentials = parseCredentials(JSON.stringify(parsed));
200
+ return migrateV1ToMultiOrg(credentials);
201
+ }
202
+ throw new Error("Stored Kody credentials are invalid. Run `kody login`.");
203
+ }
204
+ function migrateV1ToMultiOrg(credentials) {
205
+ const record = credentialsToRecord(withDerivedIssuer(credentials));
206
+ const slug = typeof credentials.org === "string" && credentials.org.trim() ? credentials.org.trim().toLowerCase() : null;
207
+ if (slug) {
208
+ return {
209
+ version: 2,
210
+ mcpUrl: credentials.mcpUrl,
211
+ activeOrg: slug,
212
+ orgs: { [slug]: { ...record, org: slug } }
213
+ };
214
+ }
215
+ return {
216
+ version: 2,
217
+ mcpUrl: credentials.mcpUrl,
218
+ activeOrg: null,
219
+ orgs: {},
220
+ pending: record
221
+ };
222
+ }
223
+ function parseCredentials(raw) {
224
+ const parsed = JSON.parse(raw);
225
+ if (parsed.version !== 1 || !parsed.accessToken || !parsed.clientId) {
226
+ throw new Error("Stored Kody credentials are invalid. Run `kody login`.");
227
+ }
228
+ const withOrg = typeof parsed.org === "string" && parsed.org.trim() ? { ...parsed, org: parsed.org.trim().toLowerCase() } : parsed;
229
+ return withDerivedIssuer(withOrg);
230
+ }
231
+ function readStore(store, mcpUrl) {
232
+ const raw = store.get();
233
+ if (!raw) return null;
234
+ return parseCredentialStore(raw, mcpUrl);
235
+ }
236
+ function writeStore(store, snapshot) {
237
+ store.set(JSON.stringify(snapshot));
238
+ }
239
+ function emptyStore(mcpUrl) {
240
+ return { version: 2, mcpUrl, activeOrg: null, orgs: {} };
241
+ }
242
+ function loadCredentialStore(mcpUrl = defaultMcpUrl, backend, resolution) {
243
+ const store = resolveBackend(mcpUrl, backend, resolution);
244
+ try {
245
+ const loaded = readStore(store, mcpUrl);
246
+ if (loaded) return loaded;
247
+ } catch (error) {
248
+ if (!(store.kind === "keyring" && !backend)) throw error;
249
+ }
250
+ if (store.kind === "keyring" && !backend) {
251
+ return readStore(fileBackendFor(mcpUrl, resolution), mcpUrl);
252
+ }
253
+ return null;
254
+ }
255
+ function saveCredentialStore(snapshot, backend, resolution) {
256
+ const store = resolveBackend(snapshot.mcpUrl, backend, resolution);
257
+ try {
258
+ writeStore(store, snapshot);
259
+ return { backend: store };
260
+ } catch (error) {
261
+ if (store.kind === "keyring" && !backend) {
262
+ const fallback = fileBackendFor(snapshot.mcpUrl, resolution);
263
+ writeStore(fallback, snapshot);
264
+ return { backend: fallback };
265
+ }
266
+ throw error;
267
+ }
268
+ }
269
+ function loadCredentials(mcpUrl = defaultMcpUrl, backend, resolution, options) {
270
+ const snapshot = loadCredentialStore(mcpUrl, backend, resolution);
271
+ if (!snapshot) return null;
272
+ return pickCredentialsFromStore(snapshot, options?.org);
273
+ }
274
+ function loadPendingCredentials(mcpUrl = defaultMcpUrl, backend, resolution) {
275
+ const snapshot = loadCredentialStore(mcpUrl, backend, resolution);
276
+ if (!snapshot?.pending) return null;
277
+ return recordToCredentials(snapshot.mcpUrl, snapshot.pending);
278
+ }
279
+ function pickCredentialsFromStore(snapshot, org) {
280
+ const requested = org?.trim().toLowerCase();
281
+ if (requested) {
282
+ const record = snapshot.orgs[requested];
283
+ if (record) return recordToCredentials(snapshot.mcpUrl, record, requested);
284
+ if (snapshot.pending && Object.keys(snapshot.orgs).length === 0) {
285
+ return recordToCredentials(snapshot.mcpUrl, snapshot.pending);
286
+ }
287
+ return null;
288
+ }
289
+ if (snapshot.activeOrg && snapshot.orgs[snapshot.activeOrg]) {
290
+ return recordToCredentials(
291
+ snapshot.mcpUrl,
292
+ snapshot.orgs[snapshot.activeOrg],
293
+ snapshot.activeOrg
294
+ );
295
+ }
296
+ if (snapshot.pending) {
297
+ return recordToCredentials(snapshot.mcpUrl, snapshot.pending);
298
+ }
299
+ const only = Object.keys(snapshot.orgs);
300
+ if (only.length === 1) {
301
+ const slug = only[0];
302
+ return recordToCredentials(snapshot.mcpUrl, snapshot.orgs[slug], slug);
303
+ }
304
+ return null;
305
+ }
306
+ function saveCredentials(credentials, backend, resolution, options) {
307
+ const mcpUrl = credentials.mcpUrl;
308
+ const existing = loadCredentialStore(mcpUrl, backend, resolution) ?? emptyStore(mcpUrl);
309
+ const slug = typeof credentials.org === "string" && credentials.org.trim() ? credentials.org.trim().toLowerCase() : null;
310
+ const record = credentialsToRecord({
311
+ ...credentials,
312
+ ...slug ? { org: slug } : {},
313
+ authorizationServerUrl: withDerivedIssuer(credentials).authorizationServerUrl
314
+ });
315
+ const activate = options?.activate !== false;
316
+ let next;
317
+ if (slug) {
318
+ const currentActive = typeof existing.activeOrg === "string" && existing.activeOrg.length > 0 && existing.orgs[existing.activeOrg] ? existing.activeOrg : null;
319
+ next = {
320
+ version: 2,
321
+ mcpUrl,
322
+ activeOrg: activate || !currentActive ? slug : currentActive,
323
+ orgs: {
324
+ ...existing.orgs,
325
+ [slug]: { ...record, org: slug }
326
+ },
327
+ // Keep an unresolved legacy session unless this save is promoting it
328
+ // (pending tokens matched / were the only login being named).
329
+ ...existing.pending && existing.pending.accessToken !== record.accessToken ? { pending: existing.pending } : {}
330
+ };
331
+ } else {
332
+ next = {
333
+ version: 2,
334
+ mcpUrl,
335
+ activeOrg: existing.activeOrg,
336
+ orgs: existing.orgs,
337
+ pending: record
338
+ };
339
+ }
340
+ return saveCredentialStore(next, backend, resolution);
341
+ }
342
+ function promotePendingOrg(mcpUrl, org, backend, resolution) {
343
+ const snapshot = loadCredentialStore(mcpUrl, backend, resolution);
344
+ if (!snapshot?.pending) return snapshot;
345
+ const slug = org.trim().toLowerCase();
346
+ if (!slug) {
347
+ throw new Error("Organization slug is required to finish credential migration.");
348
+ }
349
+ const existingNamed = snapshot.orgs[slug];
350
+ const orgs = existingNamed ? snapshot.orgs : {
351
+ ...snapshot.orgs,
352
+ [slug]: { ...snapshot.pending, org: slug }
353
+ };
354
+ const activeIsNamed = typeof snapshot.activeOrg === "string" && snapshot.activeOrg.length > 0 && snapshot.orgs[snapshot.activeOrg] != null;
355
+ const next = {
356
+ version: 2,
357
+ mcpUrl: snapshot.mcpUrl,
358
+ activeOrg: activeIsNamed ? snapshot.activeOrg : slug,
359
+ orgs
360
+ };
361
+ saveCredentialStore(next, backend, resolution);
362
+ return next;
363
+ }
364
+ function setActiveOrg(mcpUrl, org, backend, resolution) {
365
+ const snapshot = loadCredentialStore(mcpUrl, backend, resolution);
366
+ if (!snapshot) {
367
+ throw new Error("Not logged in. Run `kody login`.");
368
+ }
369
+ const slug = org.trim().toLowerCase();
370
+ if (!snapshot.orgs[slug]) {
371
+ const known = listOrgSlugs(snapshot);
372
+ throw new Error(
373
+ known.length > 0 ? `No login stored for org "${slug}". Logged-in orgs: ${known.join(", ")}. Run \`kody login --org ${slug}\`.` : `No login stored for org "${slug}". Run \`kody login --org ${slug}\`.`
374
+ );
375
+ }
376
+ const next = {
377
+ ...snapshot,
378
+ activeOrg: slug
379
+ };
380
+ saveCredentialStore(next, backend, resolution);
381
+ return next;
382
+ }
383
+ function listOrgSlugs(snapshot) {
384
+ return Object.keys(snapshot.orgs).sort((a, b) => a.localeCompare(b));
385
+ }
386
+ function listStoredOrgs(mcpUrl = defaultMcpUrl, backend, resolution) {
387
+ const snapshot = loadCredentialStore(mcpUrl, backend, resolution);
388
+ if (!snapshot) return [];
389
+ const rows = listOrgSlugs(snapshot).map((slug) => ({
390
+ slug,
391
+ active: snapshot.activeOrg === slug
392
+ }));
393
+ if (snapshot.pending && rows.length === 0) {
394
+ rows.push({ slug: "(pending)", active: true, pending: true });
395
+ }
396
+ return rows;
397
+ }
398
+ function deleteCredentials(mcpUrl = defaultMcpUrl, backend, resolution, options) {
399
+ const store = resolveBackend(mcpUrl, backend, resolution);
400
+ const snapshot = (() => {
401
+ try {
402
+ return readStore(store, mcpUrl);
403
+ } catch {
404
+ return null;
405
+ }
406
+ })();
407
+ if (!options?.org) {
408
+ if (!snapshot) {
409
+ if (store.kind === "keyring" && !backend) {
410
+ const file = fileBackendFor(mcpUrl, resolution);
411
+ const fileSnap = readStore(file, mcpUrl);
412
+ if (!fileSnap) return { deleted: false, backend: store, remaining: 0 };
413
+ return deleteCredentials(mcpUrl, file, resolution, options);
414
+ }
415
+ return { deleted: false, backend: store, remaining: 0 };
416
+ }
417
+ const target = snapshot.activeOrg ?? (snapshot.pending ? null : listOrgSlugs(snapshot)[0] ?? null);
418
+ if (target) {
419
+ return deleteOrgFromStore(snapshot, target, store, backend, resolution);
420
+ }
421
+ if (snapshot.pending) {
422
+ const next = {
423
+ version: 2,
424
+ mcpUrl: snapshot.mcpUrl,
425
+ activeOrg: snapshot.activeOrg,
426
+ orgs: snapshot.orgs
427
+ };
428
+ if (Object.keys(next.orgs).length === 0) {
429
+ return wipeStore(mcpUrl, store, backend, resolution);
430
+ }
431
+ writeStore(store, next);
432
+ return {
433
+ deleted: true,
434
+ backend: store,
435
+ remaining: Object.keys(next.orgs).length
436
+ };
437
+ }
438
+ return wipeStore(mcpUrl, store, backend, resolution);
439
+ }
440
+ const slug = options.org.trim().toLowerCase();
441
+ if (!snapshot) {
442
+ if (store.kind === "keyring" && !backend) {
443
+ const file = fileBackendFor(mcpUrl, resolution);
444
+ const fileSnap = readStore(file, mcpUrl);
445
+ if (!fileSnap) return { deleted: false, backend: store, remaining: 0 };
446
+ return deleteCredentials(mcpUrl, file, resolution, options);
447
+ }
448
+ return { deleted: false, backend: store, remaining: 0 };
449
+ }
450
+ return deleteOrgFromStore(snapshot, slug, store, backend, resolution);
451
+ }
452
+ function deleteOrgFromStore(snapshot, slug, store, backend, resolution) {
453
+ if (!snapshot.orgs[slug]) {
454
+ return {
455
+ deleted: false,
456
+ backend: store,
457
+ remaining: Object.keys(snapshot.orgs).length + (snapshot.pending ? 1 : 0)
458
+ };
459
+ }
460
+ const { [slug]: _removed, ...rest } = snapshot.orgs;
461
+ const remainingSlugs = Object.keys(rest);
462
+ if (remainingSlugs.length === 0 && !snapshot.pending) {
463
+ return wipeStore(snapshot.mcpUrl, store, backend, resolution);
464
+ }
465
+ const nextActive = snapshot.activeOrg === slug ? remainingSlugs.sort((a, b) => a.localeCompare(b))[0] ?? null : snapshot.activeOrg;
466
+ const next = {
467
+ version: 2,
468
+ mcpUrl: snapshot.mcpUrl,
469
+ activeOrg: nextActive,
470
+ orgs: rest,
471
+ ...snapshot.pending ? { pending: snapshot.pending } : {}
472
+ };
473
+ try {
474
+ writeStore(store, next);
475
+ return { deleted: true, backend: store, remaining: remainingSlugs.length };
476
+ } catch (error) {
477
+ if (store.kind === "keyring" && !backend) {
478
+ const fallback = fileBackendFor(snapshot.mcpUrl, resolution);
479
+ writeStore(fallback, next);
480
+ try {
481
+ store.delete();
482
+ } catch {
483
+ }
484
+ return { deleted: true, backend: fallback, remaining: remainingSlugs.length };
485
+ }
486
+ throw error;
487
+ }
488
+ }
489
+ function wipeStore(mcpUrl, store, backend, resolution) {
490
+ let deleted = false;
491
+ try {
492
+ deleted = store.delete();
493
+ } catch {
494
+ deleted = false;
495
+ }
496
+ if (store.kind === "keyring" && !backend) {
497
+ const file = fileBackendFor(mcpUrl, resolution);
498
+ deleted = file.delete() || deleted;
499
+ }
500
+ return { deleted, backend: store, remaining: 0 };
501
+ }
502
+
503
+ export {
504
+ secretServiceKeyringOptions,
505
+ accountForMcpUrl,
506
+ fileStorePath,
507
+ createFileBackend,
508
+ createKeyringBackend,
509
+ resolveBackend,
510
+ parseCredentialStore,
511
+ migrateV1ToMultiOrg,
512
+ parseCredentials,
513
+ loadCredentialStore,
514
+ saveCredentialStore,
515
+ loadCredentials,
516
+ loadPendingCredentials,
517
+ pickCredentialsFromStore,
518
+ saveCredentials,
519
+ promotePendingOrg,
520
+ setActiveOrg,
521
+ listOrgSlugs,
522
+ listStoredOrgs,
523
+ deleteCredentials
524
+ };
525
+ //# sourceMappingURL=chunk-RM34N3KI.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/store.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }