@kodycodes/cli 1.26.2 → 1.27.0

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 (296) hide show
  1. package/README.md +175 -167
  2. package/dist/add-mcp-install.d.ts +1 -1
  3. package/dist/api-token.d.ts +1 -1
  4. package/dist/auth-6ZE6QQXA.js +31 -0
  5. package/dist/auth-6ZE6QQXA.js.map +6 -0
  6. package/dist/auth-bootstrap.d.ts +1 -1
  7. package/dist/auth.d.ts +27 -3
  8. package/dist/bin.js +27 -3
  9. package/dist/bin.js.map +6 -1
  10. package/dist/capability-proxy.d.ts +1 -1
  11. package/dist/chunk-2IHISXHN.js +1413 -0
  12. package/dist/chunk-2IHISXHN.js.map +6 -0
  13. package/dist/chunk-2XPH7L2P.js +23 -0
  14. package/dist/chunk-2XPH7L2P.js.map +6 -0
  15. package/dist/chunk-3H72XY5R.js +535 -0
  16. package/dist/chunk-3H72XY5R.js.map +6 -0
  17. package/dist/chunk-46IJPEID.js +30 -0
  18. package/dist/chunk-46IJPEID.js.map +6 -0
  19. package/dist/chunk-4GIFJVGT.js +14 -0
  20. package/dist/chunk-4GIFJVGT.js.map +6 -0
  21. package/dist/chunk-5JIRHJQP.js +1016 -0
  22. package/dist/chunk-5JIRHJQP.js.map +6 -0
  23. package/dist/chunk-5ZBJAP6G.js +2005 -0
  24. package/dist/chunk-5ZBJAP6G.js.map +6 -0
  25. package/dist/chunk-6ZYUGXVW.js +26 -0
  26. package/dist/chunk-6ZYUGXVW.js.map +6 -0
  27. package/dist/chunk-7PRJ36I5.js +23 -0
  28. package/dist/chunk-7PRJ36I5.js.map +6 -0
  29. package/dist/chunk-BTL3PJ2H.js +38 -0
  30. package/dist/chunk-BTL3PJ2H.js.map +6 -0
  31. package/dist/chunk-CASGRYOF.js +21 -0
  32. package/dist/chunk-CASGRYOF.js.map +6 -0
  33. package/dist/chunk-CPS7HW4T.js +56 -0
  34. package/dist/chunk-CPS7HW4T.js.map +6 -0
  35. package/dist/chunk-CWWHR4FH.js +19 -0
  36. package/dist/chunk-CWWHR4FH.js.map +6 -0
  37. package/dist/chunk-D366STO5.js +2051 -0
  38. package/dist/chunk-D366STO5.js.map +6 -0
  39. package/dist/chunk-DW5UTJ6T.js +115 -0
  40. package/dist/chunk-DW5UTJ6T.js.map +6 -0
  41. package/dist/chunk-EJXEVGWF.js +47 -0
  42. package/dist/chunk-EJXEVGWF.js.map +6 -0
  43. package/dist/chunk-FBEZ6PZ7.js +746 -0
  44. package/dist/chunk-FBEZ6PZ7.js.map +6 -0
  45. package/dist/chunk-JOMBXQOS.js +435 -0
  46. package/dist/chunk-JOMBXQOS.js.map +6 -0
  47. package/dist/{package-local-runtime-source.js → chunk-LU7I7CQ4.js} +395 -52
  48. package/dist/chunk-LU7I7CQ4.js.map +6 -0
  49. package/dist/chunk-OZDWOZLV.js +964 -0
  50. package/dist/chunk-OZDWOZLV.js.map +6 -0
  51. package/dist/chunk-SLNAWWQK.js +64 -0
  52. package/dist/chunk-SLNAWWQK.js.map +6 -0
  53. package/dist/chunk-TUUFQYWP.js +348 -0
  54. package/dist/chunk-TUUFQYWP.js.map +6 -0
  55. package/dist/chunk-UW6AWLXX.js +43 -0
  56. package/dist/chunk-UW6AWLXX.js.map +6 -0
  57. package/dist/chunk-W2SAFAT4.js +1563 -0
  58. package/dist/chunk-W2SAFAT4.js.map +6 -0
  59. package/dist/chunk-XV6D6HSG.js +57 -0
  60. package/dist/chunk-XV6D6HSG.js.map +6 -0
  61. package/dist/chunk-Y4FOJETX.js +616 -0
  62. package/dist/chunk-Y4FOJETX.js.map +6 -0
  63. package/dist/chunk-YDWTXEKQ.js +469 -0
  64. package/dist/chunk-YDWTXEKQ.js.map +6 -0
  65. package/dist/chunk-ZILB2HWE.js +24 -0
  66. package/dist/chunk-ZILB2HWE.js.map +6 -0
  67. package/dist/cli.js +74 -1500
  68. package/dist/cli.js.map +6 -1
  69. package/dist/defaults.d.ts +1 -1
  70. package/dist/detect-running-hosts.d.ts +1 -1
  71. package/dist/dev/dev-assets.d.ts +1 -1
  72. package/dist/dev/dev-registry.d.ts +1 -1
  73. package/dist/dev/error-page.d.ts +1 -1
  74. package/dist/dev/live-reload.d.ts +2 -2
  75. package/dist/dev-command-5PDEIWOC.js +5025 -0
  76. package/dist/dev-command-5PDEIWOC.js.map +6 -0
  77. package/dist/dev-command.d.ts +1 -1
  78. package/dist/discover-login-identity.d.ts +6 -7
  79. package/dist/discover-org.d.ts +2 -3
  80. package/dist/generated/openapi-routes.d.ts +6 -0
  81. package/dist/git-credential-INB2UV4C.js +170 -0
  82. package/dist/git-credential-INB2UV4C.js.map +6 -0
  83. package/dist/install-ONEJRYZ3.js +10728 -0
  84. package/dist/install-ONEJRYZ3.js.map +6 -0
  85. package/dist/install.d.ts +1 -1
  86. package/dist/local-execute-I3BP5NEQ.js +395 -0
  87. package/dist/local-execute-I3BP5NEQ.js.map +6 -0
  88. package/dist/local-execute-auth.d.ts +2 -2
  89. package/dist/local-execute.d.ts +1 -1
  90. package/dist/local-gateway-fetch-forward.d.ts +2 -2
  91. package/dist/local-package-run-JFKNSNWM.js +23 -0
  92. package/dist/local-package-run-JFKNSNWM.js.map +6 -0
  93. package/dist/local-package-run.d.ts +2 -2
  94. package/dist/mock/mock-fetch-gateway.d.ts +2 -2
  95. package/dist/mock/mock-supported.d.ts +1 -1
  96. package/dist/mock-dep-resolve-B5ZH4U3H.js +60 -0
  97. package/dist/mock-dep-resolve-B5ZH4U3H.js.map +6 -0
  98. package/dist/mock-fetch-gateway-S2ULVFAI.js +35 -0
  99. package/dist/mock-fetch-gateway-S2ULVFAI.js.map +6 -0
  100. package/dist/mock-local-deps-2VVNJLFF.js +200 -0
  101. package/dist/mock-local-deps-2VVNJLFF.js.map +6 -0
  102. package/dist/mock-local-deps.d.ts +1 -1
  103. package/dist/mock-server-TFO7Q26H.js +22 -0
  104. package/dist/mock-server-TFO7Q26H.js.map +6 -0
  105. package/dist/oauth-browser.d.ts +42 -0
  106. package/dist/oauth-provider.d.ts +14 -19
  107. package/dist/open-api-client-SR4B7265.js +43 -0
  108. package/dist/open-api-client-SR4B7265.js.map +6 -0
  109. package/dist/open-api-client.d.ts +2 -1
  110. package/dist/org-535LB4PD.js +134 -0
  111. package/dist/org-535LB4PD.js.map +6 -0
  112. package/dist/org-resolve.d.ts +2 -0
  113. package/dist/package-app-dev.d.ts +2 -2
  114. package/dist/package-manifest-DFF6XCPV.js +15 -0
  115. package/dist/package-manifest-DFF6XCPV.js.map +6 -0
  116. package/dist/remote-execute-JN6DRFEU.js +129 -0
  117. package/dist/remote-execute-JN6DRFEU.js.map +6 -0
  118. package/dist/remote-execute.d.ts +3 -3
  119. package/dist/setup-git-MHK563LB.js +87 -0
  120. package/dist/setup-git-MHK563LB.js.map +6 -0
  121. package/dist/setup-git.d.ts +1 -1
  122. package/dist/skill-D74XVI6T.js +61 -0
  123. package/dist/skill-D74XVI6T.js.map +6 -0
  124. package/dist/store-27J4CQZ2.js +48 -0
  125. package/dist/store-27J4CQZ2.js.map +6 -0
  126. package/dist/structured-error-5MLWXYR3.js +14 -0
  127. package/dist/structured-error-5MLWXYR3.js.map +6 -0
  128. package/dist/structured-error.d.ts +1 -1
  129. package/dist/target-33ATHDUF.js +17 -0
  130. package/dist/target-33ATHDUF.js.map +6 -0
  131. package/package.json +12 -11
  132. package/skills/kody/SKILL.md +53 -50
  133. package/dist/add-mcp-install.js +0 -59
  134. package/dist/add-mcp-install.js.map +0 -1
  135. package/dist/api-token-store.js +0 -120
  136. package/dist/api-token-store.js.map +0 -1
  137. package/dist/api-token.js +0 -238
  138. package/dist/api-token.js.map +0 -1
  139. package/dist/auth-bootstrap.js +0 -373
  140. package/dist/auth-bootstrap.js.map +0 -1
  141. package/dist/auth.js +0 -386
  142. package/dist/auth.js.map +0 -1
  143. package/dist/capability-proxy.js +0 -527
  144. package/dist/capability-proxy.js.map +0 -1
  145. package/dist/credential-call-map.js +0 -155
  146. package/dist/credential-call-map.js.map +0 -1
  147. package/dist/credential-client-runtime-source.js +0 -9
  148. package/dist/credential-client-runtime-source.js.map +0 -1
  149. package/dist/credentialed-fetch-scan.js +0 -98
  150. package/dist/credentialed-fetch-scan.js.map +0 -1
  151. package/dist/defaults.js +0 -34
  152. package/dist/defaults.js.map +0 -1
  153. package/dist/detect-running-hosts.js +0 -13
  154. package/dist/detect-running-hosts.js.map +0 -1
  155. package/dist/dev/dev-assets.js +0 -202
  156. package/dist/dev/dev-assets.js.map +0 -1
  157. package/dist/dev/dev-bundler.js +0 -65
  158. package/dist/dev/dev-bundler.js.map +0 -1
  159. package/dist/dev/dev-events.js +0 -94
  160. package/dist/dev/dev-events.js.map +0 -1
  161. package/dist/dev/dev-port.js +0 -80
  162. package/dist/dev/dev-port.js.map +0 -1
  163. package/dist/dev/dev-protocol.js +0 -14
  164. package/dist/dev/dev-protocol.js.map +0 -1
  165. package/dist/dev/dev-registry.js +0 -95
  166. package/dist/dev/dev-registry.js.map +0 -1
  167. package/dist/dev/dev-watcher.js +0 -162
  168. package/dist/dev/dev-watcher.js.map +0 -1
  169. package/dist/dev/error-page.js +0 -64
  170. package/dist/dev/error-page.js.map +0 -1
  171. package/dist/dev/live-reload.js +0 -151
  172. package/dist/dev/live-reload.js.map +0 -1
  173. package/dist/dev/prebuild.js +0 -102
  174. package/dist/dev/prebuild.js.map +0 -1
  175. package/dist/dev/process-reaper.js +0 -151
  176. package/dist/dev/process-reaper.js.map +0 -1
  177. package/dist/dev/stack-trace.js +0 -56
  178. package/dist/dev/stack-trace.js.map +0 -1
  179. package/dist/dev/workerd-process.js +0 -118
  180. package/dist/dev/workerd-process.js.map +0 -1
  181. package/dist/dev-command.js +0 -676
  182. package/dist/dev-command.js.map +0 -1
  183. package/dist/discover-login-identity.js +0 -77
  184. package/dist/discover-login-identity.js.map +0 -1
  185. package/dist/discover-org.js +0 -62
  186. package/dist/discover-org.js.map +0 -1
  187. package/dist/git-credential.js +0 -147
  188. package/dist/git-credential.js.map +0 -1
  189. package/dist/help.js +0 -333
  190. package/dist/help.js.map +0 -1
  191. package/dist/host-catalog.js +0 -427
  192. package/dist/host-catalog.js.map +0 -1
  193. package/dist/host-config.js +0 -80
  194. package/dist/host-config.js.map +0 -1
  195. package/dist/http-error-body.js +0 -35
  196. package/dist/http-error-body.js.map +0 -1
  197. package/dist/install-hosts.js +0 -328
  198. package/dist/install-hosts.js.map +0 -1
  199. package/dist/install.js +0 -120
  200. package/dist/install.js.map +0 -1
  201. package/dist/invoke-passthrough.js +0 -60
  202. package/dist/invoke-passthrough.js.map +0 -1
  203. package/dist/local-bundle.js +0 -200
  204. package/dist/local-bundle.js.map +0 -1
  205. package/dist/local-execute-auth.js +0 -53
  206. package/dist/local-execute-auth.js.map +0 -1
  207. package/dist/local-execute.js +0 -338
  208. package/dist/local-execute.js.map +0 -1
  209. package/dist/local-gateway-fetch-forward.js +0 -135
  210. package/dist/local-gateway-fetch-forward.js.map +0 -1
  211. package/dist/local-host-runtime-surface.js +0 -75
  212. package/dist/local-host-runtime-surface.js.map +0 -1
  213. package/dist/local-package-graph.js +0 -405
  214. package/dist/local-package-graph.js.map +0 -1
  215. package/dist/local-package-run.js +0 -307
  216. package/dist/local-package-run.js.map +0 -1
  217. package/dist/local-runtime-bridge.js +0 -132
  218. package/dist/local-runtime-bridge.js.map +0 -1
  219. package/dist/local-runtime-source.js +0 -541
  220. package/dist/local-runtime-source.js.map +0 -1
  221. package/dist/login-callback-assets.js +0 -10
  222. package/dist/login-callback-assets.js.map +0 -1
  223. package/dist/login-callback-page.js +0 -362
  224. package/dist/login-callback-page.js.map +0 -1
  225. package/dist/mcp.d.ts +0 -34
  226. package/dist/mcp.js +0 -134
  227. package/dist/mcp.js.map +0 -1
  228. package/dist/mock/ensure-msw.js +0 -215
  229. package/dist/mock/ensure-msw.js.map +0 -1
  230. package/dist/mock/install-mock-fetch-shim.js +0 -36
  231. package/dist/mock/install-mock-fetch-shim.js.map +0 -1
  232. package/dist/mock/load-package-mocks.js +0 -136
  233. package/dist/mock/load-package-mocks.js.map +0 -1
  234. package/dist/mock/mock-fetch-gateway.js +0 -343
  235. package/dist/mock/mock-fetch-gateway.js.map +0 -1
  236. package/dist/mock/mock-gateway-fetch-shim.js +0 -104
  237. package/dist/mock/mock-gateway-fetch-shim.js.map +0 -1
  238. package/dist/mock/mock-server.js +0 -499
  239. package/dist/mock/mock-server.js.map +0 -1
  240. package/dist/mock/mock-storage.js +0 -186
  241. package/dist/mock/mock-storage.js.map +0 -1
  242. package/dist/mock/mock-supported.js +0 -63
  243. package/dist/mock/mock-supported.js.map +0 -1
  244. package/dist/mock-dep-resolve.js +0 -47
  245. package/dist/mock-dep-resolve.js.map +0 -1
  246. package/dist/mock-local-deps.js +0 -207
  247. package/dist/mock-local-deps.js.map +0 -1
  248. package/dist/network-error.js +0 -11
  249. package/dist/network-error.js.map +0 -1
  250. package/dist/node-engine.js +0 -21
  251. package/dist/node-engine.js.map +0 -1
  252. package/dist/oauth-provider.js +0 -107
  253. package/dist/oauth-provider.js.map +0 -1
  254. package/dist/onboarding-prompt.js +0 -15
  255. package/dist/onboarding-prompt.js.map +0 -1
  256. package/dist/open-api-client.js +0 -432
  257. package/dist/open-api-client.js.map +0 -1
  258. package/dist/open-url.js +0 -21
  259. package/dist/open-url.js.map +0 -1
  260. package/dist/org-resolve.js +0 -16
  261. package/dist/org-resolve.js.map +0 -1
  262. package/dist/org-slug.js +0 -11
  263. package/dist/org-slug.js.map +0 -1
  264. package/dist/org.js +0 -100
  265. package/dist/org.js.map +0 -1
  266. package/dist/package-app-dev.js +0 -922
  267. package/dist/package-app-dev.js.map +0 -1
  268. package/dist/package-collaborators.js +0 -179
  269. package/dist/package-collaborators.js.map +0 -1
  270. package/dist/package-info.js +0 -19
  271. package/dist/package-info.js.map +0 -1
  272. package/dist/package-local-runtime-source.js.map +0 -1
  273. package/dist/package-manifest.js +0 -364
  274. package/dist/package-manifest.js.map +0 -1
  275. package/dist/process-info.js +0 -14
  276. package/dist/process-info.js.map +0 -1
  277. package/dist/redact.js +0 -16
  278. package/dist/redact.js.map +0 -1
  279. package/dist/remote-execute.js +0 -108
  280. package/dist/remote-execute.js.map +0 -1
  281. package/dist/setup-git.js +0 -676
  282. package/dist/setup-git.js.map +0 -1
  283. package/dist/skill.js +0 -35
  284. package/dist/skill.js.map +0 -1
  285. package/dist/store.js +0 -597
  286. package/dist/store.js.map +0 -1
  287. package/dist/structured-error.js +0 -57
  288. package/dist/structured-error.js.map +0 -1
  289. package/dist/target.js +0 -52
  290. package/dist/target.js.map +0 -1
  291. package/dist/tool-result.js +0 -19
  292. package/dist/tool-result.js.map +0 -1
  293. package/dist/which.js +0 -22
  294. package/dist/which.js.map +0 -1
  295. package/dist/workerd-binary.js +0 -98
  296. package/dist/workerd-binary.js.map +0 -1
@@ -1,107 +0,0 @@
1
- import { validateClientMetadataUrl, } from '@modelcontextprotocol/client';
2
- import { cliClientMetadataUrl, cliClientUri, cliName, cliRedirectUrl, defaultScopes, } from './defaults.js';
3
- import { orgSlugFromFlag } from './org-slug.js';
4
- import { openUrl } from './open-url.js';
5
- export { orgSlugFromFlag } from './org-slug.js';
6
- export function buildCliClientMetadata() {
7
- return {
8
- client_name: cliName,
9
- client_uri: cliClientUri,
10
- redirect_uris: [cliRedirectUrl().href],
11
- grant_types: ['authorization_code', 'refresh_token'],
12
- response_types: ['code'],
13
- token_endpoint_auth_method: 'none',
14
- application_type: 'native',
15
- scope: defaultScopes.join(' '),
16
- };
17
- }
18
- /** SEP-2352 issuer stamp restored from durable CLI storage. */
19
- export function issuerFromStoredCredentials(credentials) {
20
- const recorded = credentials.authorizationServerUrl?.trim();
21
- if (recorded)
22
- return recorded;
23
- return new URL(credentials.mcpUrl).origin;
24
- }
25
- export function createCliOAuthProvider(input) {
26
- const clientMetadataUrl = cliClientMetadataUrl(input.mcpUrl);
27
- validateClientMetadataUrl(clientMetadataUrl);
28
- let codeVerifier = '';
29
- let discoveryState;
30
- // Leave clientInformation unset on a fresh login. Seeding `{ client_id }`
31
- // without an `issuer` stamp makes auth() warn (SEP-2352) on the first
32
- // read. With `clientMetadataUrl` set, the SDK writes
33
- // `{ client_id: clientMetadataUrl, issuer }` when the AS advertises CIMD.
34
- // When reloading stored credentials, stamp `issuer` from durable storage
35
- // so SEP-2352 isolation stays active without a relogin.
36
- let clientInformation = input.existing
37
- ? {
38
- client_id: input.existing.clientId,
39
- ...(input.existing.clientSecret
40
- ? { client_secret: input.existing.clientSecret }
41
- : {}),
42
- issuer: issuerFromStoredCredentials(input.existing),
43
- }
44
- : undefined;
45
- let tokens = input.loadStoredTokens && input.existing
46
- ? {
47
- access_token: input.existing.accessToken,
48
- token_type: input.existing.tokenType,
49
- ...(input.existing.refreshToken
50
- ? { refresh_token: input.existing.refreshToken }
51
- : {}),
52
- ...(input.existing.scope ? { scope: input.existing.scope } : {}),
53
- issuer: issuerFromStoredCredentials(input.existing),
54
- }
55
- : undefined;
56
- return {
57
- clientMetadataUrl,
58
- get redirectUrl() {
59
- return input.redirectUri;
60
- },
61
- get clientMetadata() {
62
- return buildCliClientMetadata();
63
- },
64
- state() {
65
- return input.expectedState;
66
- },
67
- clientInformation() {
68
- return clientInformation;
69
- },
70
- saveClientInformation(next) {
71
- // Round-trip the SEP-2352 `issuer` stamp verbatim.
72
- clientInformation = next;
73
- },
74
- tokens() {
75
- return tokens;
76
- },
77
- saveTokens(next) {
78
- // Round-trip the SEP-2352 `issuer` stamp verbatim.
79
- tokens = next;
80
- },
81
- async redirectToAuthorization(authorizationUrl) {
82
- if (input.org !== undefined) {
83
- authorizationUrl.searchParams.set('org', orgSlugFromFlag(input.org));
84
- }
85
- input.onAuthorizationUrl?.(authorizationUrl);
86
- if (input.openBrowser) {
87
- await openUrl(authorizationUrl.href);
88
- }
89
- },
90
- saveCodeVerifier(next) {
91
- codeVerifier = next;
92
- },
93
- codeVerifier() {
94
- if (!codeVerifier) {
95
- throw new Error('OAuth PKCE verifier is missing.');
96
- }
97
- return codeVerifier;
98
- },
99
- saveDiscoveryState(next) {
100
- discoveryState = next;
101
- },
102
- discoveryState() {
103
- return discoveryState;
104
- },
105
- };
106
- }
107
- //# sourceMappingURL=oauth-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth-provider.js","sourceRoot":"","sources":["../src/oauth-provider.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { onboardingUrl } from './defaults.js';
2
- export function buildOnboardingContinuationPrompt() {
3
- return [
4
- 'Kody is connected as an MCP server in this agent.',
5
- 'Help me get started with Kody.',
6
- 'First, briefly explain what Kody can do for me in plain language.',
7
- 'Then help me connect one integration I care about: check coding_guide_get for a matching provider guide (for example provider_github or provider_google) and follow it; otherwise use search and the official guides to find the right setup steps, walk me through the connect or secrets flow, and verify the connection with a small ad hoc execute smoke test.',
8
- 'Do not create any packages until the integration works — start with ad hoc execute calls.',
9
- 'Once the integration works, check community_search for a trusted community package that is close to what I want, fork or adapt it (community_fork, or point me at one-click install on /onboarding or the listing detail), and only create a new package if nothing suitable exists.',
10
- ].join(' ');
11
- }
12
- export function webClientsOnboardingNote(mcpUrl) {
13
- return `For web-based clients (ChatGPT, Claude.ai, Grok), see ${onboardingUrl(mcpUrl)}`;
14
- }
15
- //# sourceMappingURL=onboarding-prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onboarding-prompt.js","sourceRoot":"","sources":["../src/onboarding-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,UAAU,iCAAiC;IAChD,OAAO;QACN,mDAAmD;QACnD,gCAAgC;QAChC,mEAAmE;QACnE,oWAAoW;QACpW,2FAA2F;QAC3F,sRAAsR;KACtR,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACtD,OAAO,yDAAyD,aAAa,CAAC,MAAM,CAAC,EAAE,CAAA;AACxF,CAAC"}
@@ -1,432 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';
3
- import { join } from 'node:path';
4
- import { currentStoredTokenLifetimeAlias, insufficientScopeMessage, readInsufficientScopeDetails, } from './api-token.js';
5
- import { apiTokenEnvVar, cliName, defaultApiUrl } from './defaults.js';
6
- import { assertTokenSafeApiUrl, capabilityProxyUrl } from './capability-proxy.js';
7
- import { describeNetworkError } from './network-error.js';
8
- import { readPackageVersion } from './package-info.js';
9
- import { userCacheDir } from './workerd-binary.js';
10
- export class OpenApiError extends Error {
11
- status;
12
- code;
13
- constructor(message, options = {}) {
14
- super(message);
15
- this.name = 'OpenApiError';
16
- this.status = options.status ?? null;
17
- this.code = options.code ?? null;
18
- }
19
- }
20
- /** Path to the live OpenAPI document on the Kody API origin. */
21
- export const openApiDocumentPath = 'openapi.json';
22
- /**
23
- * Bootstrap redeem returns a `kody_at_…` once. Agents must use
24
- * `kody auth bootstrap --code` so the token is stored and never printed.
25
- */
26
- export const cliCredentialBootstrapRedeemOperationId = 'cliCredentialBootstrapRedeem';
27
- /** Per API origin, for the lifetime of the process. */
28
- const openApiRouteCache = new Map();
29
- /**
30
- * Parsed route maps persist under `<cache dir>/openapi/<sha256(etag)>.json`,
31
- * keyed by the document's content hash, with `<sha256(origin)>.etag` naming
32
- * the current hash per API origin. Every process revalidates once with
33
- * `If-None-Match`: 304 reuses the stored map without downloading the ~400KB
34
- * document, 200 replaces it. There is no time-based expiry.
35
- */
36
- const openApiRouteCacheVersion = 1;
37
- function openApiCacheDir() {
38
- return join(userCacheDir(), 'openapi');
39
- }
40
- function sha256Hex(text) {
41
- return createHash('sha256').update(text).digest('hex');
42
- }
43
- function originPointerPath(origin) {
44
- return join(openApiCacheDir(), `${sha256Hex(origin)}.etag`);
45
- }
46
- function routeMapPath(etag) {
47
- return join(openApiCacheDir(), `${sha256Hex(etag)}.json`);
48
- }
49
- function isOperationRoute(value) {
50
- if (!value || typeof value !== 'object')
51
- return false;
52
- const route = value;
53
- return (typeof route.operationId === 'string' &&
54
- typeof route.method === 'string' &&
55
- typeof route.pathTemplate === 'string' &&
56
- Array.isArray(route.pathParamNames) &&
57
- route.pathParamNames.every((name) => typeof name === 'string'));
58
- }
59
- /** Unreadable, corrupt or mismatched files count as a miss and get replaced by the next 200. */
60
- async function readPersistedRoutes(origin) {
61
- try {
62
- const etag = (await readFile(originPointerPath(origin), 'utf8')).trim();
63
- if (!etag)
64
- return null;
65
- const raw = JSON.parse(await readFile(routeMapPath(etag), 'utf8'));
66
- if (!raw || typeof raw !== 'object')
67
- return null;
68
- const entry = raw;
69
- if (entry.version !== openApiRouteCacheVersion || entry.etag !== etag)
70
- return null;
71
- if (!Array.isArray(entry.operations) || !entry.operations.every(isOperationRoute))
72
- return null;
73
- return {
74
- etag,
75
- operations: new Map(entry.operations.map((route) => [route.operationId, route])),
76
- };
77
- }
78
- catch {
79
- return null;
80
- }
81
- }
82
- /** Best effort: the response is already parsed, so a read-only cache dir must not fail the command. */
83
- async function persistRoutes(origin, previousEtag, entry) {
84
- if (!entry.etag)
85
- return;
86
- try {
87
- await mkdir(openApiCacheDir(), { recursive: true });
88
- await writeFile(routeMapPath(entry.etag), JSON.stringify({
89
- version: openApiRouteCacheVersion,
90
- etag: entry.etag,
91
- operations: [...entry.operations.values()],
92
- }));
93
- await writeFile(originPointerPath(origin), entry.etag);
94
- if (previousEtag && previousEtag !== entry.etag) {
95
- await rm(routeMapPath(previousEtag), { force: true });
96
- }
97
- }
98
- catch {
99
- // Cache writes are an optimization only.
100
- }
101
- }
102
- export async function openApiGet(input) {
103
- return openApiRequest({
104
- ...input,
105
- method: 'GET',
106
- path: input.path,
107
- query: input.query,
108
- });
109
- }
110
- /**
111
- * Authenticated Open API request (Bearer `kody_at_…`). Shared by search/whoami
112
- * helpers and `kody api <operationId>`.
113
- */
114
- export async function openApiRequest(input) {
115
- const apiUrl = input.apiUrl || defaultApiUrl;
116
- assertTokenSafeApiUrl(apiUrl);
117
- const url = capabilityProxyUrl(apiUrl, input.path.replace(/^\//, ''));
118
- if (input.org) {
119
- url.searchParams.set('org', input.org);
120
- }
121
- if (input.query) {
122
- appendQueryParams(url.searchParams, input.query);
123
- }
124
- const method = input.method.toUpperCase();
125
- const headers = {
126
- accept: 'application/json',
127
- authorization: `Bearer ${input.token}`,
128
- 'user-agent': `${cliName}/${readPackageVersion()}`,
129
- };
130
- let body;
131
- if (input.body !== undefined && method !== 'GET' && method !== 'HEAD') {
132
- headers['content-type'] = 'application/json';
133
- body = JSON.stringify(input.body);
134
- }
135
- const fetchFn = input.fetchFn ?? fetch;
136
- let response;
137
- try {
138
- response = await fetchFn(url, { method, headers, body });
139
- }
140
- catch (error) {
141
- const reason = describeNetworkError(error);
142
- throw new OpenApiError(`Could not reach the Kody API at ${url.origin} (${reason}). Check --api-url / KODY_API_URL and your network.`);
143
- }
144
- const responseBody = await readJson(response);
145
- if (!response.ok) {
146
- throw describeOpenApiFailure(response.status, responseBody, url);
147
- }
148
- return responseBody;
149
- }
150
- /**
151
- * Call one Open API operation by `operationId` + flat `params`, matching the
152
- * MCP `api` tool shape. Resolves method/path from `/openapi.json`.
153
- */
154
- export async function callOpenApiOperation(input) {
155
- const operationId = input.operationId.trim();
156
- if (!operationId) {
157
- throw new OpenApiError('Provide an Open API operationId (e.g. usageGet, metaGetCurrentUser).');
158
- }
159
- assertApiOperationAllowed(operationId);
160
- const apiUrl = input.apiUrl || defaultApiUrl;
161
- const operations = input.operations ?? (await loadOpenApiOperations({ apiUrl, fetchFn: input.fetchFn }));
162
- const route = operations.get(operationId);
163
- if (!route) {
164
- throw new OpenApiError(`Unknown operationId "${operationId}". Operation ids are listed in ${capabilityProxyUrl(apiUrl, openApiDocumentPath).href} and match Kody capability names (plus token operations such as tokenCreate).`, { status: 404, code: 'not_found' });
165
- }
166
- const built = buildOpenApiHttpRequest({
167
- route,
168
- params: input.params ?? {},
169
- });
170
- return openApiRequest({
171
- token: input.token,
172
- apiUrl,
173
- fetchFn: input.fetchFn,
174
- ...(input.org ? { org: input.org } : {}),
175
- method: built.method,
176
- path: built.path,
177
- query: built.query,
178
- body: built.body,
179
- });
180
- }
181
- export function assertApiOperationAllowed(operationId) {
182
- if (operationId === cliCredentialBootstrapRedeemOperationId) {
183
- throw new OpenApiError(`Refusing to call ${cliCredentialBootstrapRedeemOperationId}: redeem returns a kody_at_… token that must not print to stdout. Use \`kody auth bootstrap --code <kody_bc_…>\` instead (stores the token; never prints it).`, { status: null, code: 'refused' });
184
- }
185
- }
186
- /**
187
- * Split flat MCP-style params into path / query / body for an Open API route.
188
- * GET and DELETE send non-path fields as query; other methods send them as JSON body.
189
- */
190
- export function buildOpenApiHttpRequest(input) {
191
- const remaining = { ...input.params };
192
- const pathParams = {};
193
- for (const name of input.route.pathParamNames) {
194
- if (!(name in remaining) || remaining[name] === undefined || remaining[name] === null) {
195
- throw new OpenApiError(`Missing required path parameter "${name}" for ${input.route.operationId} (${input.route.pathTemplate}).`);
196
- }
197
- pathParams[name] = String(remaining[name]);
198
- delete remaining[name];
199
- }
200
- const path = fillPathTemplate(input.route.pathTemplate, pathParams);
201
- const method = input.route.method.toUpperCase();
202
- if (apiOperationUsesQueryInputs(method)) {
203
- return {
204
- method,
205
- path,
206
- ...(Object.keys(remaining).length > 0 ? { query: remaining } : {}),
207
- };
208
- }
209
- return {
210
- method,
211
- path,
212
- body: remaining,
213
- };
214
- }
215
- export function apiOperationUsesQueryInputs(method) {
216
- const upper = method.toUpperCase();
217
- return upper === 'GET' || upper === 'DELETE';
218
- }
219
- export async function loadOpenApiOperations(input) {
220
- const apiUrl = input.apiUrl || defaultApiUrl;
221
- assertTokenSafeApiUrl(apiUrl);
222
- const cacheKey = new URL(apiUrl).origin;
223
- if (!input.bustCache) {
224
- const cached = openApiRouteCache.get(cacheKey);
225
- if (cached)
226
- return cached.operations;
227
- }
228
- const persisted = input.bustCache ? null : await readPersistedRoutes(cacheKey);
229
- const url = capabilityProxyUrl(apiUrl, openApiDocumentPath);
230
- const fetchFn = input.fetchFn ?? fetch;
231
- let response;
232
- try {
233
- response = await fetchFn(url, {
234
- method: 'GET',
235
- headers: {
236
- accept: 'application/json',
237
- 'user-agent': `${cliName}/${readPackageVersion()}`,
238
- ...(persisted?.etag ? { 'if-none-match': persisted.etag } : {}),
239
- },
240
- });
241
- }
242
- catch (error) {
243
- const reason = describeNetworkError(error);
244
- throw new OpenApiError(`Could not load OpenAPI from ${url.href} (${reason}). Check --api-url / KODY_API_URL and your network.`);
245
- }
246
- if (response.status === 304 && persisted) {
247
- openApiRouteCache.set(cacheKey, persisted);
248
- return persisted.operations;
249
- }
250
- const body = await readJson(response);
251
- if (!response.ok) {
252
- throw new OpenApiError(`Could not load OpenAPI from ${url.href} (HTTP ${response.status}).`, { status: response.status });
253
- }
254
- const entry = { etag: response.headers.get('etag'), operations: indexOpenApiOperations(body) };
255
- openApiRouteCache.set(cacheKey, entry);
256
- await persistRoutes(cacheKey, persisted?.etag ?? null, entry);
257
- return entry.operations;
258
- }
259
- /** Visible for tests. */
260
- export function indexOpenApiOperations(document) {
261
- if (!isRecord(document) || !isRecord(document.paths)) {
262
- throw new OpenApiError('OpenAPI document is missing a paths object.');
263
- }
264
- const operations = new Map();
265
- for (const [pathTemplate, methods] of Object.entries(document.paths)) {
266
- if (!isRecord(methods))
267
- continue;
268
- for (const [method, operation] of Object.entries(methods)) {
269
- if (!isRecord(operation))
270
- continue;
271
- const operationId = typeof operation.operationId === 'string' ? operation.operationId : '';
272
- if (!operationId)
273
- continue;
274
- operations.set(operationId, {
275
- operationId,
276
- method: method.toUpperCase(),
277
- pathTemplate,
278
- pathParamNames: pathParamNamesFromTemplate(pathTemplate),
279
- });
280
- }
281
- }
282
- return operations;
283
- }
284
- /** Clear the in-memory OpenAPI route cache (tests). */
285
- export function clearOpenApiRouteCache() {
286
- openApiRouteCache.clear();
287
- }
288
- function pathParamNamesFromTemplate(pathTemplate) {
289
- const names = [];
290
- for (const match of pathTemplate.matchAll(/\{([^{}/]+)\}/g)) {
291
- const name = match[1];
292
- if (name)
293
- names.push(name);
294
- }
295
- return names;
296
- }
297
- function fillPathTemplate(pathTemplate, pathParams) {
298
- return pathTemplate.replace(/\{([^{}/]+)\}/g, (_full, name) => {
299
- const value = pathParams[name];
300
- if (value === undefined) {
301
- throw new OpenApiError(`Missing path parameter "${name}" for ${pathTemplate}.`);
302
- }
303
- return encodeURIComponent(value);
304
- });
305
- }
306
- function appendQueryParams(searchParams, query) {
307
- for (const [key, value] of Object.entries(query)) {
308
- if (value === undefined || value === null || value === '')
309
- continue;
310
- if (Array.isArray(value)) {
311
- for (const entry of value) {
312
- if (entry === undefined || entry === null)
313
- continue;
314
- searchParams.append(key, stringifyQueryValue(entry));
315
- }
316
- continue;
317
- }
318
- searchParams.set(key, stringifyQueryValue(value));
319
- }
320
- }
321
- function stringifyQueryValue(value) {
322
- if (typeof value === 'string')
323
- return value;
324
- if (typeof value === 'number' || typeof value === 'boolean')
325
- return String(value);
326
- return JSON.stringify(value);
327
- }
328
- export async function searchWithApiToken(input) {
329
- if (input.entity) {
330
- throw new OpenApiError(`Open API search does not support --entity yet. Run \`kody login\` and use MCP search, or omit --entity.`, { status: null, code: 'unsupported' });
331
- }
332
- const body = await openApiGet({
333
- ...input,
334
- path: 'v1/search',
335
- query: {
336
- query: input.query,
337
- domain: input.domain,
338
- limit: input.limit,
339
- },
340
- });
341
- const text = JSON.stringify(body, null, 2);
342
- return {
343
- content: [{ type: 'text', text }],
344
- structuredContent: body,
345
- isError: false,
346
- };
347
- }
348
- export async function whoamiWithApiToken(input) {
349
- const apiUrl = input.apiUrl || defaultApiUrl;
350
- const current = (await openApiGet({
351
- ...input,
352
- apiUrl,
353
- path: 'v1/tokens/current',
354
- }));
355
- let user = null;
356
- try {
357
- const me = (await openApiGet({
358
- ...input,
359
- apiUrl,
360
- path: 'v1/me',
361
- }));
362
- user = {
363
- userId: String(me.user_id ?? ''),
364
- email: String(me.email ?? ''),
365
- displayName: String(me.display_name ?? ''),
366
- };
367
- }
368
- catch (error) {
369
- // account:read is optional; tokens/current needs no scope.
370
- if (!(error instanceof OpenApiError && error.status === 403))
371
- throw error;
372
- }
373
- return {
374
- apiUrl,
375
- token: {
376
- id: String(current.id ?? ''),
377
- name: typeof current.name === 'string' ? current.name : null,
378
- scopes: Array.isArray(current.scopes)
379
- ? current.scopes.filter((scope) => typeof scope === 'string')
380
- : [],
381
- expiresAt: typeof current.expires_at === 'string' ? current.expires_at : null,
382
- maxExpiresAt: typeof current.max_expires_at === 'string' ? current.max_expires_at : null,
383
- },
384
- user,
385
- };
386
- }
387
- async function readJson(response) {
388
- const text = await response.text();
389
- if (!text)
390
- return null;
391
- try {
392
- return JSON.parse(text);
393
- }
394
- catch {
395
- return text;
396
- }
397
- }
398
- function readErrorBody(body) {
399
- if (!isRecord(body) || body.error == null)
400
- return null;
401
- const { error } = body;
402
- if (typeof error === 'string')
403
- return { code: null, message: error };
404
- if (isRecord(error)) {
405
- const code = typeof error.code === 'string' ? error.code : null;
406
- const message = typeof error.message === 'string' ? error.message : code ?? JSON.stringify(error);
407
- return { code, message };
408
- }
409
- return { code: null, message: String(error) };
410
- }
411
- function describeOpenApiFailure(status, body, url) {
412
- const failure = readErrorBody(body);
413
- const code = failure?.code ?? null;
414
- const detail = failure?.message ? ` Server said: ${failure.message}` : '';
415
- if (status === 401) {
416
- return new OpenApiError(`Kody rejected the API token (expired, revoked, or malformed). Mint a fresh scoped token and pass it with --token or ${apiTokenEnvVar}.${detail}`, { status, code });
417
- }
418
- if (status === 403 && code === 'insufficient_scope') {
419
- return new OpenApiError(`${insufficientScopeMessage({
420
- ...readInsufficientScopeDetails(body),
421
- currentLifetime: currentStoredTokenLifetimeAlias(url.origin),
422
- })}${detail}`, { status, code });
423
- }
424
- if (code === 'feature_disabled') {
425
- return new OpenApiError(`Kody returned feature_disabled.${detail}`, { status, code });
426
- }
427
- return new OpenApiError(failure?.message ?? `Kody API request failed with HTTP ${status} (${url.pathname}).`, { status, code });
428
- }
429
- function isRecord(value) {
430
- return value !== null && typeof value === 'object' && !Array.isArray(value);
431
- }
432
- //# sourceMappingURL=open-api-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-api-client.js","sourceRoot":"","sources":["../src/open-api-client.ts"],"names":[],"mappings":"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"}
package/dist/open-url.js DELETED
@@ -1,21 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- export async function openUrl(url) {
3
- const platform = process.platform;
4
- const command = platform === 'darwin'
5
- ? 'open'
6
- : platform === 'win32'
7
- ? 'cmd'
8
- : 'xdg-open';
9
- const args = platform === 'win32' ? ['/c', 'start', '', url] : [url];
10
- return await new Promise((resolve) => {
11
- const child = spawn(command, args, {
12
- detached: true,
13
- stdio: 'ignore',
14
- windowsHide: true,
15
- });
16
- child.on('error', () => resolve(false));
17
- child.unref();
18
- resolve(true);
19
- });
20
- }
21
- //# sourceMappingURL=open-url.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"open-url.js","sourceRoot":"","sources":["../src/open-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACjC,MAAM,OAAO,GACZ,QAAQ,KAAK,QAAQ;QACpB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,QAAQ,KAAK,OAAO;YACrB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,UAAU,CAAA;IACf,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpE,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YAClC,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;SACjB,CAAC,CAAA;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QACvC,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,OAAO,CAAC,IAAI,CAAC,CAAA;IACd,CAAC,CAAC,CAAA;AACH,CAAC"}
@@ -1,16 +0,0 @@
1
- import { orgEnvVar, orgSlugFromFlag } from './org-slug.js';
2
- export { orgEnvVar, orgSlugFromFlag } from './org-slug.js';
3
- /**
4
- * Precedence for which org a command acts as: `--org` flag, then `KODY_ORG`,
5
- * then the active org in the credential store.
6
- */
7
- export function resolveOrgSlug(input) {
8
- if (input.flag !== undefined)
9
- return orgSlugFromFlag(input.flag);
10
- const fromEnv = input.env?.[orgEnvVar] ?? process.env[orgEnvVar];
11
- if (typeof fromEnv === 'string' && fromEnv.trim()) {
12
- return orgSlugFromFlag(fromEnv);
13
- }
14
- return undefined;
15
- }
16
- //# sourceMappingURL=org-resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"org-resolve.js","sourceRoot":"","sources":["../src/org-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE1D;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAG9B;IACA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACnD,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC"}
package/dist/org-slug.js DELETED
@@ -1,11 +0,0 @@
1
- /** Env var for the default org slug (overridden by `--org`). */
2
- export const orgEnvVar = 'KODY_ORG';
3
- /** Public org slug: trim and lowercase, matching the server's `?org=` rules. */
4
- export function orgSlugFromFlag(value) {
5
- const slug = value.trim().toLowerCase();
6
- if (!slug) {
7
- throw new Error('`--org` requires an organization slug. Example: `kody login --org acme`.');
8
- }
9
- return slug;
10
- }
11
- //# sourceMappingURL=org-slug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"org-slug.js","sourceRoot":"","sources":["../src/org-slug.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAA;AAEnC,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,KAAa;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACd,0EAA0E,CAC1E,CAAA;IACF,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC"}