@kortix/sdk 0.12.7 → 0.13.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 (287) hide show
  1. package/README.md +13 -6
  2. package/dist/browser/session-sync/session-sync-registry.d.ts +7 -2
  3. package/dist/browser/session-sync/session-sync-registry.d.ts.map +1 -1
  4. package/dist/browser/session-sync/session-sync-registry.js +33 -44
  5. package/dist/browser/session-sync/session-sync-registry.js.map +1 -1
  6. package/dist/browser/stores/opencode-compaction-store.d.ts +9 -3
  7. package/dist/browser/stores/opencode-compaction-store.d.ts.map +1 -1
  8. package/dist/browser/stores/opencode-compaction-store.js +5 -12
  9. package/dist/browser/stores/opencode-compaction-store.js.map +1 -1
  10. package/dist/browser/stores/sandbox-connection-store.d.ts +28 -17
  11. package/dist/browser/stores/sandbox-connection-store.d.ts.map +1 -1
  12. package/dist/browser/stores/sandbox-connection-store.js +32 -84
  13. package/dist/browser/stores/sandbox-connection-store.js.map +1 -1
  14. package/dist/browser/stores/session-working-store.d.ts +73 -0
  15. package/dist/browser/stores/session-working-store.d.ts.map +1 -0
  16. package/dist/browser/stores/session-working-store.js +86 -0
  17. package/dist/browser/stores/session-working-store.js.map +1 -0
  18. package/dist/browser/stores/sync-store/types.d.ts +14 -4
  19. package/dist/browser/stores/sync-store/types.d.ts.map +1 -1
  20. package/dist/browser/stores/sync-store.d.ts +140 -3
  21. package/dist/browser/stores/sync-store.d.ts.map +1 -1
  22. package/dist/browser/stores/sync-store.js +425 -36
  23. package/dist/browser/stores/sync-store.js.map +1 -1
  24. package/dist/core/client/kortix.d.ts +102 -1
  25. package/dist/core/client/kortix.d.ts.map +1 -1
  26. package/dist/core/client/kortix.js +78 -0
  27. package/dist/core/client/kortix.js.map +1 -1
  28. package/dist/core/files/client.d.ts +50 -2
  29. package/dist/core/files/client.d.ts.map +1 -1
  30. package/dist/core/files/client.js +253 -44
  31. package/dist/core/files/client.js.map +1 -1
  32. package/dist/core/files/types.d.ts +11 -0
  33. package/dist/core/files/types.d.ts.map +1 -1
  34. package/dist/core/http/abort-error.d.ts +89 -0
  35. package/dist/core/http/abort-error.d.ts.map +1 -0
  36. package/dist/core/http/abort-error.js +190 -0
  37. package/dist/core/http/abort-error.js.map +1 -0
  38. package/dist/core/http/api-client.d.ts.map +1 -1
  39. package/dist/core/http/api-client.js +28 -4
  40. package/dist/core/http/api-client.js.map +1 -1
  41. package/dist/core/http/impersonation.d.ts +58 -0
  42. package/dist/core/http/impersonation.d.ts.map +1 -0
  43. package/dist/core/http/impersonation.js +174 -0
  44. package/dist/core/http/impersonation.js.map +1 -0
  45. package/dist/core/rest/platform-client/github-app.d.ts +13 -0
  46. package/dist/core/rest/platform-client/github-app.d.ts.map +1 -1
  47. package/dist/core/rest/platform-client/github-app.js +2 -0
  48. package/dist/core/rest/platform-client/github-app.js.map +1 -1
  49. package/dist/core/rest/platform-client/members.d.ts +10 -64
  50. package/dist/core/rest/platform-client/members.d.ts.map +1 -1
  51. package/dist/core/rest/platform-client/members.js +10 -28
  52. package/dist/core/rest/platform-client/members.js.map +1 -1
  53. package/dist/core/rest/projects-client/accounts.d.ts +30 -1
  54. package/dist/core/rest/projects-client/accounts.d.ts.map +1 -1
  55. package/dist/core/rest/projects-client/accounts.js +1 -1
  56. package/dist/core/rest/projects-client/accounts.js.map +1 -1
  57. package/dist/core/rest/projects-client/agent-config.d.ts +21 -0
  58. package/dist/core/rest/projects-client/agent-config.d.ts.map +1 -1
  59. package/dist/core/rest/projects-client/agent-config.js +14 -0
  60. package/dist/core/rest/projects-client/agent-config.js.map +1 -1
  61. package/dist/core/rest/projects-client/apps.d.ts +13 -0
  62. package/dist/core/rest/projects-client/apps.d.ts.map +1 -1
  63. package/dist/core/rest/projects-client/apps.js.map +1 -1
  64. package/dist/core/rest/projects-client/assignments.d.ts +114 -0
  65. package/dist/core/rest/projects-client/assignments.d.ts.map +1 -0
  66. package/dist/core/rest/projects-client/assignments.js +91 -0
  67. package/dist/core/rest/projects-client/assignments.js.map +1 -0
  68. package/dist/core/rest/projects-client/billing.d.ts +80 -1
  69. package/dist/core/rest/projects-client/billing.d.ts.map +1 -1
  70. package/dist/core/rest/projects-client/billing.js +61 -2
  71. package/dist/core/rest/projects-client/billing.js.map +1 -1
  72. package/dist/core/rest/projects-client/connectors.d.ts +2 -0
  73. package/dist/core/rest/projects-client/connectors.d.ts.map +1 -1
  74. package/dist/core/rest/projects-client/connectors.js.map +1 -1
  75. package/dist/core/rest/projects-client/files.js +2 -2
  76. package/dist/core/rest/projects-client/files.js.map +1 -1
  77. package/dist/core/rest/projects-client/gateway.d.ts +51 -0
  78. package/dist/core/rest/projects-client/gateway.d.ts.map +1 -1
  79. package/dist/core/rest/projects-client/gateway.js.map +1 -1
  80. package/dist/core/rest/projects-client/iam.d.ts +51 -3
  81. package/dist/core/rest/projects-client/iam.d.ts.map +1 -1
  82. package/dist/core/rest/projects-client/iam.js +18 -1
  83. package/dist/core/rest/projects-client/iam.js.map +1 -1
  84. package/dist/core/rest/projects-client/index.d.ts +1 -0
  85. package/dist/core/rest/projects-client/index.d.ts.map +1 -1
  86. package/dist/core/rest/projects-client/index.js +1 -0
  87. package/dist/core/rest/projects-client/index.js.map +1 -1
  88. package/dist/core/rest/projects-client/projects.d.ts +1 -1
  89. package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
  90. package/dist/core/rest/projects-client/projects.js +3 -0
  91. package/dist/core/rest/projects-client/projects.js.map +1 -1
  92. package/dist/core/rest/projects-client/secrets.d.ts +11 -0
  93. package/dist/core/rest/projects-client/secrets.d.ts.map +1 -1
  94. package/dist/core/rest/projects-client/secrets.js +1 -1
  95. package/dist/core/rest/projects-client/secrets.js.map +1 -1
  96. package/dist/core/rest/projects-client/session-costs.d.ts +33 -0
  97. package/dist/core/rest/projects-client/session-costs.d.ts.map +1 -1
  98. package/dist/core/rest/projects-client/session-costs.js.map +1 -1
  99. package/dist/core/rest/projects-client/sessions.d.ts +253 -4
  100. package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
  101. package/dist/core/rest/projects-client/sessions.js +101 -4
  102. package/dist/core/rest/projects-client/sessions.js.map +1 -1
  103. package/dist/core/rest/projects-client/shared.d.ts +10 -1
  104. package/dist/core/rest/projects-client/shared.d.ts.map +1 -1
  105. package/dist/core/rest/projects-client/shared.js.map +1 -1
  106. package/dist/core/rest/projects-client/tokens.d.ts +13 -1
  107. package/dist/core/rest/projects-client/tokens.d.ts.map +1 -1
  108. package/dist/core/rest/projects-client/tokens.js +7 -2
  109. package/dist/core/rest/projects-client/tokens.js.map +1 -1
  110. package/dist/core/rest/projects-client/triggers.d.ts +69 -2
  111. package/dist/core/rest/projects-client/triggers.d.ts.map +1 -1
  112. package/dist/core/rest/projects-client/triggers.js +1 -1
  113. package/dist/core/rest/projects-client/triggers.js.map +1 -1
  114. package/dist/core/session/compaction.d.ts +98 -0
  115. package/dist/core/session/compaction.d.ts.map +1 -0
  116. package/dist/core/session/compaction.js +108 -0
  117. package/dist/core/session/compaction.js.map +1 -0
  118. package/dist/core/session/health.d.ts +22 -0
  119. package/dist/core/session/health.d.ts.map +1 -1
  120. package/dist/core/session/health.js +31 -5
  121. package/dist/core/session/health.js.map +1 -1
  122. package/dist/core/session/index.d.ts +2 -0
  123. package/dist/core/session/index.d.ts.map +1 -1
  124. package/dist/core/session/index.js +2 -0
  125. package/dist/core/session/index.js.map +1 -1
  126. package/dist/core/session/message-queue.d.ts +79 -15
  127. package/dist/core/session/message-queue.d.ts.map +1 -1
  128. package/dist/core/session/message-queue.js +73 -27
  129. package/dist/core/session/message-queue.js.map +1 -1
  130. package/dist/core/session/rewind.d.ts +76 -10
  131. package/dist/core/session/rewind.d.ts.map +1 -1
  132. package/dist/core/session/rewind.js +68 -11
  133. package/dist/core/session/rewind.js.map +1 -1
  134. package/dist/core/session/working.d.ts +241 -0
  135. package/dist/core/session/working.d.ts.map +1 -0
  136. package/dist/core/session/working.js +261 -0
  137. package/dist/core/session/working.js.map +1 -0
  138. package/dist/core/session-sync/session-sync-controller.d.ts +35 -20
  139. package/dist/core/session-sync/session-sync-controller.d.ts.map +1 -1
  140. package/dist/core/session-sync/session-sync-controller.js +48 -115
  141. package/dist/core/session-sync/session-sync-controller.js.map +1 -1
  142. package/dist/core/stream/event-stream.d.ts +22 -0
  143. package/dist/core/stream/event-stream.d.ts.map +1 -1
  144. package/dist/core/stream/event-stream.js +132 -36
  145. package/dist/core/stream/event-stream.js.map +1 -1
  146. package/dist/core/turns/classify.d.ts +5 -2
  147. package/dist/core/turns/classify.d.ts.map +1 -1
  148. package/dist/core/turns/classify.js +1 -0
  149. package/dist/core/turns/classify.js.map +1 -1
  150. package/dist/core/turns/errors.d.ts +11 -0
  151. package/dist/core/turns/errors.d.ts.map +1 -1
  152. package/dist/core/turns/errors.js +49 -2
  153. package/dist/core/turns/errors.js.map +1 -1
  154. package/dist/core/turns/grouping.d.ts +32 -2
  155. package/dist/core/turns/grouping.d.ts.map +1 -1
  156. package/dist/core/turns/grouping.js +31 -2
  157. package/dist/core/turns/grouping.js.map +1 -1
  158. package/dist/core/turns/index.d.ts +1 -0
  159. package/dist/core/turns/index.d.ts.map +1 -1
  160. package/dist/core/turns/index.js +1 -0
  161. package/dist/core/turns/index.js.map +1 -1
  162. package/dist/core/turns/open-turn.d.ts +81 -0
  163. package/dist/core/turns/open-turn.d.ts.map +1 -0
  164. package/dist/core/turns/open-turn.js +77 -0
  165. package/dist/core/turns/open-turn.js.map +1 -0
  166. package/dist/core/turns/state.d.ts +1 -1
  167. package/dist/core/turns/state.d.ts.map +1 -1
  168. package/dist/core/turns/state.js +29 -27
  169. package/dist/core/turns/state.js.map +1 -1
  170. package/dist/core/turns/types.d.ts +8 -0
  171. package/dist/core/turns/types.d.ts.map +1 -1
  172. package/dist/index.d.ts +3 -1
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +3 -1
  175. package/dist/index.js.map +1 -1
  176. package/dist/kortix.esm.min.js +25 -25
  177. package/dist/kortix.global.js +25 -25
  178. package/dist/node/server.d.ts.map +1 -1
  179. package/dist/node/server.js +14 -2
  180. package/dist/node/server.js.map +1 -1
  181. package/dist/react/index.d.ts +3 -1
  182. package/dist/react/index.d.ts.map +1 -1
  183. package/dist/react/index.js +8 -1
  184. package/dist/react/index.js.map +1 -1
  185. package/dist/react/initial-session-pin.d.ts +17 -0
  186. package/dist/react/initial-session-pin.d.ts.map +1 -1
  187. package/dist/react/initial-session-pin.js +58 -0
  188. package/dist/react/initial-session-pin.js.map +1 -1
  189. package/dist/react/opencode.d.ts +6 -2
  190. package/dist/react/opencode.d.ts.map +1 -1
  191. package/dist/react/opencode.js +5 -1
  192. package/dist/react/opencode.js.map +1 -1
  193. package/dist/react/prefetch-session-start.d.ts +10 -4
  194. package/dist/react/prefetch-session-start.d.ts.map +1 -1
  195. package/dist/react/prefetch-session-start.js +10 -4
  196. package/dist/react/prefetch-session-start.js.map +1 -1
  197. package/dist/react/query-keys.d.ts +8 -2
  198. package/dist/react/query-keys.d.ts.map +1 -1
  199. package/dist/react/query-keys.js +8 -2
  200. package/dist/react/query-keys.js.map +1 -1
  201. package/dist/react/session-start-stash.d.ts +25 -0
  202. package/dist/react/session-start-stash.d.ts.map +1 -1
  203. package/dist/react/session-start-stash.js +34 -3
  204. package/dist/react/session-start-stash.js.map +1 -1
  205. package/dist/react/session-title-sync.d.ts +5 -1
  206. package/dist/react/session-title-sync.d.ts.map +1 -1
  207. package/dist/react/session-title-sync.js +16 -4
  208. package/dist/react/session-title-sync.js.map +1 -1
  209. package/dist/react/use-admin-accounts.d.ts +121 -0
  210. package/dist/react/use-admin-accounts.d.ts.map +1 -1
  211. package/dist/react/use-admin-accounts.js +92 -0
  212. package/dist/react/use-admin-accounts.js.map +1 -1
  213. package/dist/react/use-can.d.ts +105 -0
  214. package/dist/react/use-can.d.ts.map +1 -0
  215. package/dist/react/use-can.js +190 -0
  216. package/dist/react/use-can.js.map +1 -0
  217. package/dist/react/use-canonical-opencode-session.d.ts +6 -1
  218. package/dist/react/use-canonical-opencode-session.d.ts.map +1 -1
  219. package/dist/react/use-canonical-opencode-session.js +46 -3
  220. package/dist/react/use-canonical-opencode-session.js.map +1 -1
  221. package/dist/react/use-impersonation.d.ts +54 -0
  222. package/dist/react/use-impersonation.d.ts.map +1 -0
  223. package/dist/react/use-impersonation.js +91 -0
  224. package/dist/react/use-impersonation.js.map +1 -0
  225. package/dist/react/use-opencode-events/handle-event.d.ts +10 -0
  226. package/dist/react/use-opencode-events/handle-event.d.ts.map +1 -1
  227. package/dist/react/use-opencode-events/handle-event.js +76 -7
  228. package/dist/react/use-opencode-events/handle-event.js.map +1 -1
  229. package/dist/react/use-opencode-events/helpers.d.ts +21 -8
  230. package/dist/react/use-opencode-events/helpers.d.ts.map +1 -1
  231. package/dist/react/use-opencode-events/helpers.js +25 -26
  232. package/dist/react/use-opencode-events/helpers.js.map +1 -1
  233. package/dist/react/use-opencode-events/index.d.ts.map +1 -1
  234. package/dist/react/use-opencode-events/index.js +43 -26
  235. package/dist/react/use-opencode-events/index.js.map +1 -1
  236. package/dist/react/use-opencode-events/use-event-stream-refs.d.ts.map +1 -1
  237. package/dist/react/use-opencode-events/use-event-stream-refs.js +66 -3
  238. package/dist/react/use-opencode-events/use-event-stream-refs.js.map +1 -1
  239. package/dist/react/use-opencode-local.d.ts +17 -0
  240. package/dist/react/use-opencode-local.d.ts.map +1 -1
  241. package/dist/react/use-opencode-local.js +41 -7
  242. package/dist/react/use-opencode-local.js.map +1 -1
  243. package/dist/react/use-opencode-sessions/messages.d.ts +101 -1
  244. package/dist/react/use-opencode-sessions/messages.d.ts.map +1 -1
  245. package/dist/react/use-opencode-sessions/messages.js +481 -63
  246. package/dist/react/use-opencode-sessions/messages.js.map +1 -1
  247. package/dist/react/use-project-apps.d.ts +24 -1
  248. package/dist/react/use-project-apps.d.ts.map +1 -1
  249. package/dist/react/use-project-apps.js +5 -3
  250. package/dist/react/use-project-apps.js.map +1 -1
  251. package/dist/react/use-runtime-boot-stalled.d.ts +32 -0
  252. package/dist/react/use-runtime-boot-stalled.d.ts.map +1 -0
  253. package/dist/react/use-runtime-boot-stalled.js +48 -0
  254. package/dist/react/use-runtime-boot-stalled.js.map +1 -0
  255. package/dist/react/use-runtime-reconnect.d.ts +67 -1
  256. package/dist/react/use-runtime-reconnect.d.ts.map +1 -1
  257. package/dist/react/use-runtime-reconnect.js +116 -18
  258. package/dist/react/use-runtime-reconnect.js.map +1 -1
  259. package/dist/react/use-session-prompts.d.ts +113 -0
  260. package/dist/react/use-session-prompts.d.ts.map +1 -0
  261. package/dist/react/use-session-prompts.js +242 -0
  262. package/dist/react/use-session-prompts.js.map +1 -0
  263. package/dist/react/use-session-send.d.ts +169 -20
  264. package/dist/react/use-session-send.d.ts.map +1 -1
  265. package/dist/react/use-session-send.js +178 -29
  266. package/dist/react/use-session-send.js.map +1 -1
  267. package/dist/react/use-session-sync.d.ts +35 -2
  268. package/dist/react/use-session-sync.d.ts.map +1 -1
  269. package/dist/react/use-session-sync.js +46 -9
  270. package/dist/react/use-session-sync.js.map +1 -1
  271. package/dist/react/use-session-working.d.ts +57 -0
  272. package/dist/react/use-session-working.d.ts.map +1 -0
  273. package/dist/react/use-session-working.js +178 -0
  274. package/dist/react/use-session-working.js.map +1 -0
  275. package/dist/react/use-session.d.ts +122 -5
  276. package/dist/react/use-session.d.ts.map +1 -1
  277. package/dist/react/use-session.js +343 -69
  278. package/dist/react/use-session.js.map +1 -1
  279. package/package.json +2 -2
  280. package/dist/browser/stores/tab-store.d.ts +0 -91
  281. package/dist/browser/stores/tab-store.d.ts.map +0 -1
  282. package/dist/browser/stores/tab-store.js +0 -369
  283. package/dist/browser/stores/tab-store.js.map +0 -1
  284. package/dist/core/session/send-queue.d.ts +0 -70
  285. package/dist/core/session/send-queue.d.ts.map +0 -1
  286. package/dist/core/session/send-queue.js +0 -116
  287. package/dist/core/session/send-queue.js.map +0 -1
@@ -7,9 +7,9 @@
7
7
  * opencode client. DOM-bound helpers (download / zip) stay in the host UI and
8
8
  * consume `readBlob`/`list` from here.
9
9
  */
10
- import { getClient } from '../runtime/client.js';
10
+ import { getClient, RuntimeNotReadyError } from '../runtime/client.js';
11
11
  import { getActiveOpenCodeUrl } from '../session/server-store/active.js';
12
- import { getAuthToken, authenticatedFetch } from '../http/auth.js';
12
+ import { authenticatedFetch } from '../http/auth.js';
13
13
  import { ApiError } from '../http/api/errors.js';
14
14
  function unwrap(result) {
15
15
  if (result.error) {
@@ -35,14 +35,41 @@ async function errorMessage(res) {
35
35
  catch { /* not JSON */ }
36
36
  return parsed?.error || text || res.statusText || `HTTP ${res.status}`;
37
37
  }
38
+ /**
39
+ * Resolve the daemon base url for ONE operation — or refuse to run it.
40
+ *
41
+ * `getActiveOpenCodeUrl()` returns `''` on a billing-enabled deployment until a
42
+ * session runtime is bound (`session/server-store/active.ts`). Interpolating
43
+ * that `''` into a template makes the request URL RELATIVE, so the browser sent
44
+ * the user's file AND their bearer token to the WEB origin
45
+ * (`https://dev.kortix.com/file/upload`), which answered with the Next.js 404
46
+ * HTML shell — surfacing as "Upload failed (404): Not Found".
47
+ *
48
+ * The send path already refuses this race (`runtime/client.ts` `getClient()`
49
+ * throws `RuntimeNotReadyError`); the files transport now refuses it the same
50
+ * way, with the same error class, so a host can classify both with one
51
+ * `instanceof` and retry once the session is ready. An explicitly-passed empty
52
+ * string is refused too — a caller that hands us a blank base url has the same
53
+ * unresolved runtime, and falling back to the module-global would silently
54
+ * target a DIFFERENT session's sandbox.
55
+ *
56
+ * Every operation in this module goes through here. A relative-URL fetch must
57
+ * be impossible from this file.
58
+ */
59
+ function requireBaseUrl(baseUrl) {
60
+ const resolved = (baseUrl ?? getActiveOpenCodeUrl()).trim();
61
+ if (!resolved)
62
+ throw new RuntimeNotReadyError();
63
+ return resolved;
64
+ }
38
65
  /**
39
66
  * GET a daemon JSON endpoint (list/status/find), surfacing the server's error.
40
67
  * `baseUrl` defaults to the module-global "active" sandbox for back-compat —
41
68
  * pass an explicit one (e.g. from `kortix.session(pid, sid).files`) to hit a
42
69
  * SPECIFIC session's own runtime instead.
43
70
  */
44
- async function fetchDaemonJson(relUrl, baseUrl = getActiveOpenCodeUrl()) {
45
- const response = await authenticatedFetch(`${baseUrl}${relUrl}`);
71
+ async function fetchDaemonJson(relUrl, baseUrl) {
72
+ const response = await authenticatedFetch(`${requireBaseUrl(baseUrl)}${relUrl}`);
46
73
  if (!response.ok) {
47
74
  throw new ApiError(await errorMessage(response), { status: response.status, response });
48
75
  }
@@ -94,24 +121,27 @@ export const toWorkspaceRelative = toDaemonPath;
94
121
  * the module-global "active" sandbox; pass one explicitly to target a
95
122
  * specific session's runtime (see `kortix.session(pid, sid).files`).
96
123
  */
97
- export async function listFiles(dirPath, baseUrl = getActiveOpenCodeUrl()) {
124
+ export async function listFiles(dirPath, baseUrl) {
125
+ const base = requireBaseUrl(baseUrl);
98
126
  const daemonPath = toDaemonPath(dirPath) || '.';
99
- const nodes = await fetchDaemonJson(`/file?path=${encodeURIComponent(daemonPath)}`, baseUrl);
127
+ const nodes = await fetchDaemonJson(`/file?path=${encodeURIComponent(daemonPath)}`, base);
100
128
  return nodes.map((node) => ({ ...node, path: node.absolute || `/workspace/${node.path}` }));
101
129
  }
102
130
  /** Read a file's content (text, or base64 for binaries). Daemon `GET /file/content`. */
103
- export async function readFile(filePath, baseUrl = getActiveOpenCodeUrl()) {
131
+ export async function readFile(filePath, baseUrl) {
132
+ const base = requireBaseUrl(baseUrl);
104
133
  const daemonPath = toDaemonPath(filePath);
105
- const response = await authenticatedFetch(`${baseUrl}/file/content?path=${encodeURIComponent(daemonPath)}`);
134
+ const response = await authenticatedFetch(`${base}/file/content?path=${encodeURIComponent(daemonPath)}`);
106
135
  if (!response.ok) {
107
136
  throw new ApiError(await errorMessage(response), { status: response.status, response });
108
137
  }
109
138
  return response.json();
110
139
  }
111
140
  /** Raw byte read. Daemon `GET /file/raw`. Throws (so callers can fall back). */
112
- async function readFileRaw(filePath, fallbackMime, baseUrl = getActiveOpenCodeUrl()) {
141
+ async function readFileRaw(filePath, fallbackMime, baseUrl) {
142
+ const base = requireBaseUrl(baseUrl);
113
143
  const daemonPath = toDaemonPath(filePath);
114
- const response = await authenticatedFetch(`${baseUrl}/file/raw?path=${encodeURIComponent(daemonPath)}`);
144
+ const response = await authenticatedFetch(`${base}/file/raw?path=${encodeURIComponent(daemonPath)}`);
115
145
  if (!response.ok) {
116
146
  throw new ApiError(await errorMessage(response), { status: response.status, response });
117
147
  }
@@ -130,12 +160,15 @@ async function readFileRaw(filePath, fallbackMime, baseUrl = getActiveOpenCodeUr
130
160
  return blob;
131
161
  }
132
162
  /** Read a file as a Blob — prefers `/file/raw`, falls back to base64 `/file/content`. */
133
- export async function readBlob(filePath, baseUrl = getActiveOpenCodeUrl()) {
163
+ export async function readBlob(filePath, baseUrl) {
164
+ // Resolve BEFORE the try: an unresolved runtime must surface as
165
+ // `RuntimeNotReadyError`, not be swallowed into the base64 fallback path.
166
+ const base = requireBaseUrl(baseUrl);
134
167
  try {
135
- return await readFileRaw(filePath, undefined, baseUrl);
168
+ return await readFileRaw(filePath, undefined, base);
136
169
  }
137
170
  catch { /* fall back to JSON content endpoint */ }
138
- const result = await readFile(filePath, baseUrl);
171
+ const result = await readFile(filePath, base);
139
172
  if (result.encoding === 'base64' && result.content) {
140
173
  const bytes = Uint8Array.from(atob(result.content), (c) => c.charCodeAt(0));
141
174
  return new Blob([bytes], { type: result.mimeType || 'application/octet-stream' });
@@ -143,8 +176,8 @@ export async function readBlob(filePath, baseUrl = getActiveOpenCodeUrl()) {
143
176
  return new Blob([result.content ?? ''], { type: result.mimeType || 'text/plain;charset=utf-8' });
144
177
  }
145
178
  /** Git file status — uncommitted changes. Daemon `GET /file/status`. */
146
- export function getFileStatus(baseUrl = getActiveOpenCodeUrl()) {
147
- return fetchDaemonJson(`/file/status`, baseUrl);
179
+ export async function getFileStatus(baseUrl) {
180
+ return fetchDaemonJson(`/file/status`, requireBaseUrl(baseUrl));
148
181
  }
149
182
  /**
150
183
  * Find files/directories by name (fuzzy). Daemon `GET /find/file`.
@@ -158,17 +191,19 @@ export function getFileStatus(baseUrl = getActiveOpenCodeUrl()) {
158
191
  * non-breaking — verified by grepping every `findFiles(` call site in the
159
192
  * monorepo before making this change.
160
193
  */
161
- export async function findFiles(query, options, baseUrl = getActiveOpenCodeUrl()) {
194
+ export async function findFiles(query, options, baseUrl) {
195
+ const base = requireBaseUrl(baseUrl);
162
196
  const params = new URLSearchParams({ query });
163
197
  if (options?.type)
164
198
  params.set('type', options.type);
165
199
  if (options?.limit)
166
200
  params.set('limit', String(options.limit));
167
- return fetchDaemonJson(`/find/file?${params.toString()}`, baseUrl);
201
+ return fetchDaemonJson(`/find/file?${params.toString()}`, base);
168
202
  }
169
203
  /** Ripgrep text search. Daemon `GET /find`. Tolerates flat + nested rg-JSON. */
170
- export async function findText(pattern, baseUrl = getActiveOpenCodeUrl()) {
171
- const raw = await fetchDaemonJson(`/find?pattern=${encodeURIComponent(pattern)}`, baseUrl);
204
+ export async function findText(pattern, baseUrl) {
205
+ const base = requireBaseUrl(baseUrl);
206
+ const raw = await fetchDaemonJson(`/find?pattern=${encodeURIComponent(pattern)}`, base);
172
207
  return raw.map((item) => ({
173
208
  path: typeof item.path === 'string' ? item.path : (item.path?.text ?? ''),
174
209
  lines: typeof item.lines === 'string' ? item.lines : (item.lines?.text ?? ''),
@@ -200,7 +235,19 @@ function isUnretryableThrow(error) {
200
235
  }
201
236
  /** The floor for any upload — the platform-wide default request deadline. */
202
237
  const UPLOAD_TIMEOUT_FLOOR_MS = 30_000;
203
- /** The ceiling. A stuck upload must not wedge a server-side handler forever. */
238
+ /**
239
+ * The ceiling. A stuck upload must not wedge a server-side handler forever.
240
+ *
241
+ * It is NOT the API proxy's budget, and must not be clamped down to it. The
242
+ * proxy's `PROXY_RETRY_BUDGET_MS` (50s, `apps/api/src/sandbox-proxy/`) starts
243
+ * only AFTER the request body is fully buffered
244
+ * (`preview.ts` does `await c.req.raw.clone().arrayBuffer()` before
245
+ * `proxyStartedAt`), so the client-visible duration is
246
+ * `body upload time + ≤50s upstream`, not 50s total. Clamping this ceiling to
247
+ * ~60s would abort every upload whose body alone takes longer than that on a
248
+ * slow uplink — the exact failure `uploadTimeoutMsForBytes` exists to prevent.
249
+ * At the assumed 256 KB/s floor this ceiling only binds above ~222 MB.
250
+ */
204
251
  const UPLOAD_TIMEOUT_CEILING_MS = 15 * 60_000;
205
252
  /**
206
253
  * Assumed floor throughput. Deliberately pessimistic: the deadline exists to
@@ -278,53 +325,213 @@ async function uploadWithRetry(buildForm, send) {
278
325
  * module-global "active" sandbox; pass one explicitly to target a specific
279
326
  * session's runtime.
280
327
  */
281
- export function uploadFile(file, targetPath, filename, baseUrl = getActiveOpenCodeUrl()) {
328
+ export async function uploadFile(file, targetPath, filename, baseUrl) {
329
+ const base = requireBaseUrl(baseUrl);
282
330
  // The deadline follows the body. The platform-wide 30s is a hang detector
283
331
  // for a JSON call; against a 30 MB attachment it is a throughput limit, and
284
332
  // the attachment loses.
285
333
  const timeoutMs = uploadTimeoutMsForBytes(file.size);
334
+ // The name the file must land under. `File.name` is the fallback for a host
335
+ // that already named its blob; a bare `Blob` has none, and then the daemon
336
+ // resolves the destination from the `path` field alone.
337
+ const name = filename || (file instanceof File ? file.name : '') || '';
286
338
  return uploadWithRetry(() => {
287
339
  const form = new FormData();
288
340
  const rawPath = (targetPath ?? '').trim();
289
341
  if (rawPath)
290
342
  form.append('path', rawPath.startsWith('/') ? rawPath : `/${rawPath}`);
291
- if (filename)
292
- form.append('file', file, filename);
343
+ // The name travels as its OWN field, not only as the multipart part's
344
+ // `filename` parameter. Bun 1.3.14's multipart parser DROPS `filename`
345
+ // on a ZERO-LENGTH part, so a genuinely empty upload reached the daemon
346
+ // with `file.name === undefined` and landed as a file literally named
347
+ // "undefined". The SDK used to dodge that by writing a single space into
348
+ // every "new empty file" — which made every empty `.json` invalid and
349
+ // every new file 1 byte of 0x20. This field survives an empty body; the
350
+ // daemon reads it as the per-part fallback (`filenameHint` in
351
+ // `apps/kortix-sandbox-agent-server/src/routes/files.ts`).
352
+ if (name)
353
+ form.append('filename', name);
354
+ if (name)
355
+ form.append('file', file, name);
293
356
  else
294
357
  form.append('file', file);
295
358
  return form;
296
- }, (form) => authenticatedFetch(`${baseUrl}/file/upload`, { method: 'POST', body: form }, { timeoutMs }));
359
+ }, (form) => authenticatedFetch(`${base}/file/upload`, { method: 'POST', body: form }, { timeoutMs }));
297
360
  }
298
- /** Upload content to a specific path via the field-name-as-path convention. */
299
- function uploadToPath(filePath, content, baseUrl = getActiveOpenCodeUrl()) {
361
+ /**
362
+ * Upload content to a specific path via the field-name-as-path convention.
363
+ *
364
+ * Goes through `authenticatedFetch` like every other write. It used to call a
365
+ * bare `fetch()` with a hand-rolled `Authorization` header, which silently
366
+ * skipped the size-scaled deadline, the 401 stale-token refresh-and-retry, the
367
+ * `X-Kortix-Client` header, and `platformConfig().fetch` — so every host that
368
+ * injects its own fetch (mobile, whitelabel) was bypassed on this one path.
369
+ */
370
+ function uploadToPath(filePath, content, baseUrl) {
371
+ const base = requireBaseUrl(baseUrl);
372
+ const timeoutMs = uploadTimeoutMsForBytes(content.size);
300
373
  return uploadWithRetry(() => {
301
374
  const form = new FormData();
302
375
  form.append(filePath, content, filePath.split('/').pop() || 'file');
303
376
  return form;
304
- }, async (form) => {
305
- const headers = {};
306
- const token = await getAuthToken();
307
- if (token)
308
- headers['Authorization'] = `Bearer ${token}`;
309
- return fetch(`${baseUrl}/file/upload`, { method: 'POST', body: form, headers });
310
- });
377
+ }, (form) => authenticatedFetch(`${base}/file/upload`, { method: 'POST', body: form }, { timeoutMs }));
311
378
  }
312
- /** Create an empty file at a path. */
313
- export function createFile(filePath, baseUrl = getActiveOpenCodeUrl()) {
379
+ /**
380
+ * Create an EMPTY file at a path — 0 bytes, not one space.
381
+ *
382
+ * Implemented on `writeFile`, and that is a ROLLOUT requirement, not a style
383
+ * choice. The `filename` form field `uploadFile` sends is read by the daemon,
384
+ * and the daemon is **baked into the sandbox image**
385
+ * (`/usr/local/bin/kortix-agent`, `apps/sandbox/Dockerfile`). `/v1/runtime-assets`
386
+ * reconciles only the CLI binary and the managed skills (`cli_sha256`,
387
+ * `managed_skills_hash`) — it does NOT ship the daemon. So this SDK reaches
388
+ * production with the web app immediately while every sandbox provisioned
389
+ * before the image rebuild keeps its OLD daemon for the life of the box.
390
+ *
391
+ * On an old daemon a genuinely 0-byte part loses its filename in Bun's
392
+ * multipart parser and a direct upload lands as a file literally named
393
+ * "undefined". `writeFile` renames the path the daemon REPORTED onto the
394
+ * requested path, so both fleets converge on the right answer:
395
+ *
396
+ * - new daemon → temp name lands → renamed to the target;
397
+ * - old daemon → "undefined" lands → renamed to the target.
398
+ *
399
+ * Concurrency holds on the old fleet too: two simultaneous creates both aim at
400
+ * "undefined", the daemon's `O_EXCL` + suffix retry hands the second one
401
+ * `undefined-<suffix>`, and each call renames only the path IT was told — so
402
+ * they cannot cross.
403
+ *
404
+ * Returns `UploadResult[]` — the published shape, unchanged.
405
+ */
406
+ export async function createFile(filePath, baseUrl) {
407
+ const base = requireBaseUrl(baseUrl);
314
408
  const rawPath = filePath.trim();
315
409
  const absolutePath = rawPath.startsWith('/') ? rawPath : `/${rawPath}`;
316
410
  const parts = absolutePath.split('/');
411
+ // Keep the historical fallbacks exactly: a trailing slash yields 'untitled',
412
+ // and a bare name anchors under /workspace.
317
413
  const fileName = parts.pop() || 'untitled';
318
414
  const dirPath = parts.join('/') || '/workspace';
319
- return uploadFile(new File([' '], fileName, { type: 'application/octet-stream' }), dirPath, undefined, baseUrl);
415
+ const written = await writeFile(`${dirPath}/${fileName}`, new Blob([], { type: 'application/octet-stream' }), base);
416
+ return [{ path: written.path, size: written.bytes }];
320
417
  }
321
418
  /** Copy a file (read source bytes → upload to dest). */
322
- export async function copyFile(sourcePath, destPath, baseUrl = getActiveOpenCodeUrl()) {
323
- return uploadToPath(destPath, await readBlob(sourcePath, baseUrl), baseUrl);
419
+ export async function copyFile(sourcePath, destPath, baseUrl) {
420
+ const base = requireBaseUrl(baseUrl);
421
+ return uploadToPath(destPath, await readBlob(sourcePath, base), base);
422
+ }
423
+ // ── overwrite-in-place ───────────────────────────────────────────────────────
424
+ /** Parent directory of an absolute sandbox path ('/workspace/a/b.md' → '/workspace/a'). */
425
+ /**
426
+ * Strip trailing `/` without a regex.
427
+ *
428
+ * The obvious `replace(/\/+$/, '')` is POLYNOMIAL (CodeQL js/polynomial-redos):
429
+ * `\/+$` is unanchored, so on `"a" + "/".repeat(n) + "b"` the engine retries the
430
+ * whole run from every position — O(n²). `filePath` arrives from host UI input,
431
+ * so it is uncontrolled. An index walk is O(n) and needs no backtracking.
432
+ *
433
+ * `toSandboxAbsolutePath`'s `/^\/+/` is fine by contrast: anchored at the start,
434
+ * so it is only ever attempted at position 0.
435
+ */
436
+ function stripTrailingSlashes(value) {
437
+ let end = value.length;
438
+ while (end > 0 && value.charCodeAt(end - 1) === 47 /* '/' */)
439
+ end--;
440
+ return value.slice(0, end);
441
+ }
442
+ function sandboxDirname(absPath) {
443
+ const index = absPath.lastIndexOf('/');
444
+ return index <= 0 ? '/' : absPath.slice(0, index);
445
+ }
446
+ /** Final segment of an absolute sandbox path ('/workspace/a/b.md' → 'b.md'). */
447
+ function sandboxBasename(absPath) {
448
+ return absPath.slice(absPath.lastIndexOf('/') + 1);
449
+ }
450
+ /**
451
+ * Short high-entropy token for the temp + backup names below.
452
+ *
453
+ * `crypto.randomUUID` exists only in a secure context (https or localhost), so
454
+ * a self-hosted white-label served over plain http would throw — the same trap
455
+ * `platform/session-id.ts` documents. Guarded, never bare.
456
+ */
457
+ function writeToken() {
458
+ const c = typeof crypto !== 'undefined' ? crypto : undefined;
459
+ if (c?.randomUUID)
460
+ return c.randomUUID();
461
+ if (c?.getRandomValues) {
462
+ const bytes = new Uint8Array(8);
463
+ c.getRandomValues(bytes);
464
+ return [...bytes].map((b) => b.toString(16).padStart(2, '0')).join('');
465
+ }
466
+ return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
467
+ }
468
+ /**
469
+ * Write `content` to the EXACT `filePath`, overwriting whatever is there.
470
+ *
471
+ * The daemon's upload endpoint never overwrites: it writes with `flag: 'wx'`
472
+ * (`O_CREAT | O_EXCL`) and, on `EEXIST`, retries under a suffixed name,
473
+ * returning the path the bytes actually landed at. So "save this edited file"
474
+ * used to write a DIFFERENT file (`notes-mdx8k2-3f9a1c04.md`) while the viewer
475
+ * re-read the original path and showed pre-edit bytes under a "File saved"
476
+ * toast — silent data loss.
477
+ *
478
+ * This is the missing primitive: upload to a temp name, then `POST /file/rename`
479
+ * over the target (`fs.rename` overwrites atomically). The existing file is
480
+ * moved aside first and restored if the swap fails, so a failed write can never
481
+ * destroy the original. Reported as `{ path, bytes }` for the path the bytes
482
+ * ended up at — which is always the path you asked for, or a throw.
483
+ *
484
+ * `apps/cli` (`writeSessionFile`) and `apps/mobile` each hand-rolled this; they
485
+ * are the reason it belongs here.
486
+ */
487
+ export async function writeFile(filePath, content, baseUrl) {
488
+ const base = requireBaseUrl(baseUrl);
489
+ const absPath = toSandboxAbsolutePath(stripTrailingSlashes(filePath.trim()));
490
+ const name = sandboxBasename(absPath);
491
+ if (!name) {
492
+ throw new ApiError(`writeFile needs a file path, got "${filePath}"`, { code: 'INVALID_PATH' });
493
+ }
494
+ const parent = sandboxDirname(absPath);
495
+ // A missing parent is the common case for a brand-new file; an existing one
496
+ // makes this a no-op (mkdir is recursive + idempotent server-side).
497
+ await mkdir(parent, base).catch(() => undefined);
498
+ const token = writeToken();
499
+ const results = await uploadFile(content, parent, `.${name}.kortix-write-${token}`, base);
500
+ const uploaded = results[0]?.path;
501
+ if (!uploaded) {
502
+ throw new ApiError(`Upload returned no file for ${absPath}`, { code: 'UPLOAD_NO_RESULT' });
503
+ }
504
+ // The daemon's returned path is authoritative — it may have uniquified even
505
+ // the temp name (a concurrent writer), and renaming the name we ASKED for
506
+ // would then move the wrong file.
507
+ const actual = toSandboxAbsolutePath(uploaded);
508
+ const backupPath = `${absPath}.kortix-write-backup-${token}`;
509
+ let backedUp = false;
510
+ try {
511
+ await renameFile(absPath, backupPath, base);
512
+ backedUp = true;
513
+ }
514
+ catch {
515
+ // Nothing at the target yet — no backup needed, and no failure either.
516
+ }
517
+ try {
518
+ await renameFile(actual, absPath, base);
519
+ }
520
+ catch (error) {
521
+ // Put the original back exactly where it was, then drop the orphaned temp.
522
+ if (backedUp)
523
+ await renameFile(backupPath, absPath, base).catch(() => undefined);
524
+ await deleteFile(actual, base).catch(() => undefined);
525
+ throw error;
526
+ }
527
+ if (backedUp)
528
+ await deleteFile(backupPath, base).catch(() => undefined);
529
+ const written = results[0]?.size;
530
+ return { path: absPath, bytes: typeof written === 'number' ? written : content.size };
324
531
  }
325
532
  /** Delete a file/dir (recursive). Daemon `DELETE /file`. */
326
- export async function deleteFile(filePath, baseUrl = getActiveOpenCodeUrl()) {
327
- const res = await authenticatedFetch(`${baseUrl}/file`, {
533
+ export async function deleteFile(filePath, baseUrl) {
534
+ const res = await authenticatedFetch(`${requireBaseUrl(baseUrl)}/file`, {
328
535
  method: 'DELETE',
329
536
  headers: { 'Content-Type': 'application/json' },
330
537
  body: JSON.stringify({ path: filePath }),
@@ -335,8 +542,8 @@ export async function deleteFile(filePath, baseUrl = getActiveOpenCodeUrl()) {
335
542
  return res.json();
336
543
  }
337
544
  /** Create a directory (recursive, idempotent). Daemon `POST /file/mkdir`. */
338
- export async function mkdir(dirPath, baseUrl = getActiveOpenCodeUrl()) {
339
- const res = await authenticatedFetch(`${baseUrl}/file/mkdir`, {
545
+ export async function mkdir(dirPath, baseUrl) {
546
+ const res = await authenticatedFetch(`${requireBaseUrl(baseUrl)}/file/mkdir`, {
340
547
  method: 'POST',
341
548
  headers: { 'Content-Type': 'application/json' },
342
549
  body: JSON.stringify({ path: dirPath }),
@@ -347,8 +554,8 @@ export async function mkdir(dirPath, baseUrl = getActiveOpenCodeUrl()) {
347
554
  return res.json();
348
555
  }
349
556
  /** Rename/move a file or directory. Daemon `POST /file/rename`. */
350
- export async function renameFile(from, to, baseUrl = getActiveOpenCodeUrl()) {
351
- const res = await authenticatedFetch(`${baseUrl}/file/rename`, {
557
+ export async function renameFile(from, to, baseUrl) {
558
+ const res = await authenticatedFetch(`${requireBaseUrl(baseUrl)}/file/rename`, {
352
559
  method: 'POST',
353
560
  headers: { 'Content-Type': 'application/json' },
354
561
  body: JSON.stringify({ from, to }),
@@ -382,6 +589,8 @@ export const files = {
382
589
  findFiles,
383
590
  findText,
384
591
  upload: uploadFile,
592
+ /** Overwrite-in-place. The daemon's upload NEVER overwrites — see `writeFile`. */
593
+ write: writeFile,
385
594
  create: createFile,
386
595
  copy: copyFile,
387
596
  remove: deleteFile,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/files/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/files/client.ts"],"names":[],"mappings":"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"}
@@ -79,4 +79,15 @@ export interface UploadResult {
79
79
  path: string;
80
80
  size: number;
81
81
  }
82
+ /**
83
+ * Result of an overwrite-in-place write (`writeFile`).
84
+ *
85
+ * `path` is always the path that was asked for — `writeFile` throws rather than
86
+ * report a different landing path, which is exactly what the raw upload
87
+ * endpoint does on a collision.
88
+ */
89
+ export interface WriteFileResult {
90
+ path: string;
91
+ bytes: number;
92
+ }
82
93
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/files/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6CAA6C;AAC7C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/files/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6CAA6C;AAC7C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CAC1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * The one abort classifier. Every producer of an "this turn was aborted"
3
+ * error in this codebase — the SDK's own optimistic patch, the real opencode
4
+ * wire error, and a plain `AbortController`/`fetch` abort — ends up here.
5
+ *
6
+ * Before this file, FOUR divergent detectors existed across `apps/web` and
7
+ * this package: an identity read, a prose sniff with its own pattern lists, a
8
+ * duck-typed name/message check, and a loose `/abort/i` regex. They agreed
9
+ * often enough to hide the disagreements — e.g. `/abort/i` matches "aborted"
10
+ * as a substring of a transport-failure message ("upstream unreachable …
11
+ * The operation was aborted"), mislabeling a real failure as a user-initiated
12
+ * stop. `isAbortError` is the single, documented replacement.
13
+ *
14
+ * Producers (studied, not guessed):
15
+ * - `SyntheticAbortError` — the client-synthesized marker patched onto a
16
+ * message when the user hits Stop, or when a runtime disposes mid-stream.
17
+ * `{ name: "AbortError", data: { message: string } }`. See
18
+ * `react/use-session-send.ts` (`applyOptimisticAbort`) and
19
+ * `react/use-opencode-events/use-event-stream-refs.ts`
20
+ * (`markSessionAbortedLocally`).
21
+ * - `MessageAbortedError` — the real opencode wire shape, one member of
22
+ * `AssistantMessage['error']` (`@opencode-ai/sdk` `types.gen.d.ts`).
23
+ * `{ name: "MessageAbortedError", data: { message: string } }`.
24
+ * - A `DOMException`/`Error`-shaped `AbortError` from a real
25
+ * `AbortController`/`fetch` abort. `.name === "AbortError"`.
26
+ */
27
+ /**
28
+ * Was this error an abort — a user-initiated stop, or a client-synthesized
29
+ * stand-in for one — as opposed to a genuine failure?
30
+ *
31
+ * Identity first: a `name` matching a known abort shape (`AbortError`,
32
+ * `MessageAbortedError`) is always an abort, regardless of message text.
33
+ * Falls back to sniffing the error's own nested text only when identity
34
+ * doesn't resolve it — a plain string (the last-resort case: a caller that
35
+ * only has a formatted display message, not the original structured error),
36
+ * or a structured error whose `name` doesn't match but whose message reads
37
+ * as an abort anyway.
38
+ */
39
+ export declare function isAbortError(error: unknown): boolean;
40
+ /**
41
+ * Every value a producer can stamp into `data.reason` on a
42
+ * `SyntheticAbortError` — the machine-readable WHY behind an abort, read by
43
+ * `abortErrorReason` below. Closed on purpose: a renderer branches on this
44
+ * value (`'user'` → show "Interrupted", anything else → show nothing), so a
45
+ * free-text reason would not fail loudly, it would just silently render
46
+ * wrong.
47
+ */
48
+ export declare const ABORT_REASONS: readonly ["user", "runtime-disposed", "orphan-finalized", "wake"];
49
+ export type AbortReason = (typeof ABORT_REASONS)[number];
50
+ /**
51
+ * Members that NO code path writes today. Read this before reading a zero.
52
+ *
53
+ * `'orphan-finalized'` is reserved for the sandbox daemon's orphan-turn
54
+ * finalizer (`apps/kortix-sandbox-agent-server/src/main.ts`,
55
+ * `finalizeOrphanedTurn` / `abortOpencodeTurn`). That finalizer aborts through
56
+ * OpenCode's OWN `/session/{id}/abort` REST endpoint — a bare `POST` with no
57
+ * body — so the resulting `MessageAbortedError` is entirely opencode's wire
58
+ * shape. There is no hook to inject a client-chosen `data.reason` into it;
59
+ * doing so would mean forking opencode's abort response, which is worse than
60
+ * leaving it untagged. So a genuine wire abort (no synthetic patch involved)
61
+ * stays reason-less on purpose — see `abortErrorReason`'s doc comment.
62
+ *
63
+ * `'wake'` is reserved for a not-yet-built producer (a session woken from a
64
+ * park mid-turn) and is declared ahead of that work for the same reason
65
+ * `apps/api/src/projects/stop-reason.ts` pre-declares `idle_grace` /
66
+ * `boot_floor_expired`: a renderer branching on this union should see a
67
+ * closed set, not discover a new member via a runtime string it never typed.
68
+ */
69
+ export declare const ABORT_REASONS_NOT_YET_EMITTED: readonly ["orphan-finalized", "wake"];
70
+ /**
71
+ * The machine-readable reason an abort happened, when the producer sent one
72
+ * (`data.reason`, e.g. `'runtime-disposed'`). Set by `applyOptimisticAbort`
73
+ * (`'user'`) and `markSessionAbortedLocally` (`'runtime-disposed'`). A real
74
+ * opencode wire `MessageAbortedError` — the daemon's own `/abort` call, see
75
+ * `ABORT_REASONS_NOT_YET_EMITTED` above — carries no `data.reason` and never
76
+ * will, so this returns `undefined` for it: that is a genuine, once-only
77
+ * cut turn, not a fabricated marker, and callers render it as "Interrupted"
78
+ * exactly like a `reason: 'user'` abort. Returns `undefined` when absent,
79
+ * never a guess.
80
+ *
81
+ * Validated against `ABORT_REASONS`, not merely typed as `string`: a
82
+ * renderer branches on this value (`'user'` → "Interrupted", anything else →
83
+ * nothing), so an unrecognized/typo'd string previously reached that branch
84
+ * unfiltered and silently suppressed the error UI. An unknown value now
85
+ * returns `undefined` — the same safe default as a reason-less real wire
86
+ * abort — instead of propagating an unvalidated string.
87
+ */
88
+ export declare function abortErrorReason(error: unknown): AbortReason | undefined;
89
+ //# sourceMappingURL=abort-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-error.d.ts","sourceRoot":"","sources":["../../../src/core/http/abort-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAmEH;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUpD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,mEAehB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,6BAA6B,uCAGC,CAAC;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CASxE"}