@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
@@ -0,0 +1,190 @@
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
+ /** Error names whose mere presence identifies an abort, no text sniff needed. */
28
+ const ABORT_ERROR_NAMES = new Set(['AbortError', 'MessageAbortedError']);
29
+ /**
30
+ * Phrases that mean a HUMAN stopped this, not that a connection died.
31
+ *
32
+ * Phrases, never bare words: "aborted" is a substring of transport-failure
33
+ * messages too ("The operation was aborted" is exactly how an aborted fetch
34
+ * against an unreachable upstream describes itself), so a substring alone is
35
+ * not evidence of intent.
36
+ */
37
+ const ABORT_TEXT_PATTERNS = [
38
+ 'operation was aborted',
39
+ 'aborted by user',
40
+ 'interrupted by user',
41
+ 'cancelled by user',
42
+ 'canceled by user',
43
+ 'request was cancelled',
44
+ 'request was canceled',
45
+ 'aborterror',
46
+ ];
47
+ /**
48
+ * Words that mean the TRANSPORT failed. Their presence disqualifies the text
49
+ * sniff outright, however abort-ish the rest of the prose reads.
50
+ */
51
+ const TRANSPORT_FAILURE_TEXT_PATTERNS = [
52
+ 'unreachable',
53
+ 'upstream',
54
+ 'econnreset',
55
+ 'econnrefused',
56
+ 'socket hang up',
57
+ 'network',
58
+ 'fetch failed',
59
+ 'timed out',
60
+ 'timeout',
61
+ 'gateway',
62
+ '502',
63
+ '503',
64
+ '504',
65
+ ];
66
+ /**
67
+ * LAST RESORT ONLY — a substring sniff over arbitrary error prose. Used
68
+ * internally by `isAbortError` when no `name` identity is available (a bare
69
+ * string caller) or when `name` doesn't match a known abort shape but the
70
+ * error's own nested text does (some producers carry an abort-ish message
71
+ * under an unrelated/unknown `name`).
72
+ */
73
+ function looksLikeAbortText(text) {
74
+ const lower = text.toLowerCase();
75
+ if (TRANSPORT_FAILURE_TEXT_PATTERNS.some((p) => lower.includes(p)))
76
+ return false;
77
+ return ABORT_TEXT_PATTERNS.some((p) => lower.includes(p));
78
+ }
79
+ /** The text a structured error carries about itself — `data.message` (the
80
+ * shape every producer above uses) or a bare top-level `message`. */
81
+ function nestedErrorText(rec) {
82
+ const data = rec.data;
83
+ const dataMessage = data && typeof data === 'object' ? data.message : undefined;
84
+ if (typeof dataMessage === 'string')
85
+ return dataMessage;
86
+ return typeof rec.message === 'string' ? rec.message : undefined;
87
+ }
88
+ /**
89
+ * Was this error an abort — a user-initiated stop, or a client-synthesized
90
+ * stand-in for one — as opposed to a genuine failure?
91
+ *
92
+ * Identity first: a `name` matching a known abort shape (`AbortError`,
93
+ * `MessageAbortedError`) is always an abort, regardless of message text.
94
+ * Falls back to sniffing the error's own nested text only when identity
95
+ * doesn't resolve it — a plain string (the last-resort case: a caller that
96
+ * only has a formatted display message, not the original structured error),
97
+ * or a structured error whose `name` doesn't match but whose message reads
98
+ * as an abort anyway.
99
+ */
100
+ export function isAbortError(error) {
101
+ if (typeof error === 'string')
102
+ return looksLikeAbortText(error);
103
+ if (!error || typeof error !== 'object')
104
+ return false;
105
+ const rec = error;
106
+ const name = rec.name;
107
+ if (typeof name === 'string' && ABORT_ERROR_NAMES.has(name))
108
+ return true;
109
+ const text = nestedErrorText(rec);
110
+ return typeof text === 'string' ? looksLikeAbortText(text) : false;
111
+ }
112
+ /**
113
+ * Every value a producer can stamp into `data.reason` on a
114
+ * `SyntheticAbortError` — the machine-readable WHY behind an abort, read by
115
+ * `abortErrorReason` below. Closed on purpose: a renderer branches on this
116
+ * value (`'user'` → show "Interrupted", anything else → show nothing), so a
117
+ * free-text reason would not fail loudly, it would just silently render
118
+ * wrong.
119
+ */
120
+ export const ABORT_REASONS = [
121
+ /** `applyOptimisticAbort` (`react/use-session-send.ts`) — a real user Stop
122
+ * click, patched instantly so the "Interrupted" row appears before the
123
+ * SSE round-trip. */
124
+ 'user',
125
+ /** `markSessionAbortedLocally` (`react/use-opencode-events/use-event-stream-refs.ts`),
126
+ * invoked from the `server.instance.disposed` handler in `handle-event.ts`.
127
+ * Pure infrastructure — OpenCode disposed and respawned mid-stream — for
128
+ * EVERY non-idle session in the tab, not a user action. Must render
129
+ * nothing: a respawn that recovers cleanly should not scar the transcript. */
130
+ 'runtime-disposed',
131
+ /** NOT YET EMITTED — see `ABORT_REASONS_NOT_YET_EMITTED` below. */
132
+ 'orphan-finalized',
133
+ /** NOT YET EMITTED — see `ABORT_REASONS_NOT_YET_EMITTED` below. */
134
+ 'wake',
135
+ ];
136
+ /**
137
+ * Members that NO code path writes today. Read this before reading a zero.
138
+ *
139
+ * `'orphan-finalized'` is reserved for the sandbox daemon's orphan-turn
140
+ * finalizer (`apps/kortix-sandbox-agent-server/src/main.ts`,
141
+ * `finalizeOrphanedTurn` / `abortOpencodeTurn`). That finalizer aborts through
142
+ * OpenCode's OWN `/session/{id}/abort` REST endpoint — a bare `POST` with no
143
+ * body — so the resulting `MessageAbortedError` is entirely opencode's wire
144
+ * shape. There is no hook to inject a client-chosen `data.reason` into it;
145
+ * doing so would mean forking opencode's abort response, which is worse than
146
+ * leaving it untagged. So a genuine wire abort (no synthetic patch involved)
147
+ * stays reason-less on purpose — see `abortErrorReason`'s doc comment.
148
+ *
149
+ * `'wake'` is reserved for a not-yet-built producer (a session woken from a
150
+ * park mid-turn) and is declared ahead of that work for the same reason
151
+ * `apps/api/src/projects/stop-reason.ts` pre-declares `idle_grace` /
152
+ * `boot_floor_expired`: a renderer branching on this union should see a
153
+ * closed set, not discover a new member via a runtime string it never typed.
154
+ */
155
+ export const ABORT_REASONS_NOT_YET_EMITTED = [
156
+ 'orphan-finalized',
157
+ 'wake',
158
+ ];
159
+ /**
160
+ * The machine-readable reason an abort happened, when the producer sent one
161
+ * (`data.reason`, e.g. `'runtime-disposed'`). Set by `applyOptimisticAbort`
162
+ * (`'user'`) and `markSessionAbortedLocally` (`'runtime-disposed'`). A real
163
+ * opencode wire `MessageAbortedError` — the daemon's own `/abort` call, see
164
+ * `ABORT_REASONS_NOT_YET_EMITTED` above — carries no `data.reason` and never
165
+ * will, so this returns `undefined` for it: that is a genuine, once-only
166
+ * cut turn, not a fabricated marker, and callers render it as "Interrupted"
167
+ * exactly like a `reason: 'user'` abort. Returns `undefined` when absent,
168
+ * never a guess.
169
+ *
170
+ * Validated against `ABORT_REASONS`, not merely typed as `string`: a
171
+ * renderer branches on this value (`'user'` → "Interrupted", anything else →
172
+ * nothing), so an unrecognized/typo'd string previously reached that branch
173
+ * unfiltered and silently suppressed the error UI. An unknown value now
174
+ * returns `undefined` — the same safe default as a reason-less real wire
175
+ * abort — instead of propagating an unvalidated string.
176
+ */
177
+ export function abortErrorReason(error) {
178
+ if (!error || typeof error !== 'object')
179
+ return undefined;
180
+ const data = error.data;
181
+ if (!data || typeof data !== 'object')
182
+ return undefined;
183
+ const reason = data.reason;
184
+ if (typeof reason !== 'string' || !reason)
185
+ return undefined;
186
+ return ABORT_REASONS.includes(reason)
187
+ ? reason
188
+ : undefined;
189
+ }
190
+ //# sourceMappingURL=abort-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-error.js","sourceRoot":"","sources":["../../../src/core/http/abort-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iFAAiF;AACjF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG;IAC1B,uBAAuB;IACvB,iBAAiB;IACjB,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,sBAAsB;IACtB,YAAY;CACb,CAAC;AAEF;;;GAGG;AACH,MAAM,+BAA+B,GAAG;IACtC,aAAa;IACb,UAAU;IACV,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,SAAS;IACT,cAAc;IACd,WAAW;IACX,SAAS;IACT,SAAS;IACT,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;sEACsE;AACtE,SAAS,eAAe,CAAC,GAA4B;IACnD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,WAAW,GACf,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,IAAI,OAAO,WAAW,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC;IACxD,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEtD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzE,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;;0BAEsB;IACtB,MAAM;IACN;;;;mFAI+E;IAC/E,kBAAkB;IAClB,mEAAmE;IACnE,kBAAkB;IAClB,mEAAmE;IACnE,MAAM;CACE,CAAC;AAIX;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,kBAAkB;IAClB,MAAM;CACmC,CAAC;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,IAAI,GAAI,KAAiC,CAAC,IAAI,CAAC;IACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,MAAM,GAAI,IAAgC,CAAC,MAAM,CAAC;IACxD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAQ,aAAmC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1D,CAAC,CAAE,MAAsB;QACzB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/core/http/api-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAsD,MAAM,cAAc,CAAC;AAS5F,OAAO,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAuD9D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAErD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AA0UD,eAAO,MAAM,cAAc;YACX,CAAC,iBACJ,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,iBACvC,YAAY,GAC1B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAuC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,iBAAe,UAAU,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CA0BnB;AAED,eAAO,MAAM,UAAU;UACf,CAAC,kBACK,MAAM,YACN,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;WAG5D,CAAC,kBACI,MAAM,SACT,GAAG,YACA,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC;UAQpD,CAAC,kBACK,MAAM,SACT,GAAG,YACA,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC;YAQlD,CAAC,kBACG,MAAM,SACT,GAAG,YACA,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC;aAQjD,CAAC,kBACE,MAAM,YACN,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;aAO1D,CAAC,kBACE,MAAM,YACN,QAAQ,YACR,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;gBAcvD,CAAC,kBACD,MAAM,YACN,QAAQ,YACR,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;;CAepE,CAAC"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/core/http/api-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAsD,MAAM,cAAc,CAAC;AAU5F,OAAO,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAuD9D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAErD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AA8VD,eAAO,MAAM,cAAc;YACX,CAAC,iBACJ,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,iBACvC,YAAY,GAC1B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAuC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,iBAAe,UAAU,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CA8BnB;AAED,eAAO,MAAM,UAAU;UACf,CAAC,kBACK,MAAM,YACN,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;WAG5D,CAAC,kBACI,MAAM,SACT,GAAG,YACA,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC;UAQpD,CAAC,kBACK,MAAM,SACT,GAAG,YACA,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC;YAQlD,CAAC,kBACG,MAAM,SACT,GAAG,YACA,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC;aAQjD,CAAC,kBACE,MAAM,YACN,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;aAO1D,CAAC,kBACE,MAAM,YACN,QAAQ,YACR,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;gBAcvD,CAAC,kBACD,MAAM,YACN,QAAQ,YACR,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC;;CAepE,CAAC"}
@@ -2,6 +2,7 @@ import { normalizeClientSource } from '../../platform/auth-core.js';
2
2
  import { getSupabaseAccessTokenWithRetry } from './auth.js';
3
3
  import { ApiError, AuthError, parseBillingError, RequestTooLargeError } from './api/errors.js';
4
4
  import { platformConfig } from './config.js';
5
+ import { impersonationHeaders } from './impersonation.js';
5
6
  const getApiUrl = () => platformConfig().backendUrl || '';
6
7
  // Ported from web's error-handler. User-facing error handling is routed
7
8
  // through platformConfig().onError?.() instead of web's handleApiError.
@@ -130,6 +131,11 @@ async function makeRequest(url, options = {}) {
130
131
  if (adminBypassEnabled) {
131
132
  headers['x-kortix-admin-bypass'] = '1';
132
133
  }
134
+ // Act-as: while a platform admin holds a live grant, EVERY platform request
135
+ // from this tab carries it, exactly as the banner claims. Attached after the
136
+ // caller's own headers so a call site cannot accidentally drop it, and
137
+ // before `Authorization` because the server validates the pair together.
138
+ Object.assign(headers, impersonationHeaders(url));
133
139
  if (token) {
134
140
  headers['Authorization'] = `Bearer ${token}`;
135
141
  }
@@ -196,10 +202,19 @@ async function makeRequest(url, options = {}) {
196
202
  let errorData = null;
197
203
  try {
198
204
  errorData = await response.json();
199
- if (typeof errorData.reason === 'string') {
200
- errorMessage = errorData.reason;
201
- }
202
- else if (typeof errorData.message === 'string') {
205
+ // ORDER MATTERS, and `reason` is LAST on purpose.
206
+ //
207
+ // A Kortix error body pairs a machine slug with the sentence written for
208
+ // the user, e.g. the 409 from `POST /sessions/:id/restart`:
209
+ // { error: "The original sandbox is unavailable. …",
210
+ // code: "SESSION_RUNTIME_IDENTITY_UNAVAILABLE",
211
+ // reason: "runtime_identity_unavailable" }
212
+ // `reason` used to be read first, so that customer saw the bare slug
213
+ // `runtime_identity_unavailable` as the card detail AND the toast.
214
+ // Not one `reason` value in the API is a sentence — they are all
215
+ // snake_case slugs — so preferring it could only ever downgrade the
216
+ // message. Branch on `code` (kept below); render the human field.
217
+ if (typeof errorData.message === 'string') {
203
218
  errorMessage = errorData.message;
204
219
  }
205
220
  else if (errorData.error && typeof errorData.error === 'string') {
@@ -212,6 +227,11 @@ async function makeRequest(url, options = {}) {
212
227
  else if (typeof errorData.detail?.message === 'string') {
213
228
  errorMessage = errorData.detail.message;
214
229
  }
230
+ else if (typeof errorData.reason === 'string') {
231
+ // Last resort: a body with no prose at all still says something more
232
+ // useful than `HTTP 409: Conflict`.
233
+ errorMessage = errorData.reason;
234
+ }
215
235
  }
216
236
  catch { }
217
237
  const isRequestDeadline = isRequestDeadlineResponse(response.status, errorData, errorMessage);
@@ -447,6 +467,10 @@ async function postStream(endpoint, data, options = {}) {
447
467
  headers['X-Kortix-Client'] = clientSource;
448
468
  if (adminBypassEnabled)
449
469
  headers['x-kortix-admin-bypass'] = '1';
470
+ // Same act-as rule as makeRequest — a streamed POST is still a platform
471
+ // request, and an SSE stream opened without the header would silently read
472
+ // the OPERATOR's account while the banner named the customer's.
473
+ Object.assign(headers, impersonationHeaders(endpoint));
450
474
  if (token)
451
475
  headers['Authorization'] = `Bearer ${token}`;
452
476
  const controller = new AbortController();
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/core/http/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/core/http/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Client half of platform-admin act-as impersonation.
3
+ *
4
+ * The client holds an ID, never a capability. `X-Kortix-Impersonate: <grantId>`
5
+ * is only meaningful next to the operator's own Supabase JWT, and the API
6
+ * re-validates ownership, expiry, revocation and the operator's CURRENT
7
+ * platform role on every request (see apps/api/src/shared/impersonation.ts).
8
+ * So nothing here is a security boundary — losing this value to another tab or
9
+ * another user grants them nothing. What this module owes the user is honesty:
10
+ * while a session is stored, EVERY request carries the header, and the app
11
+ * shell shows the banner that says so.
12
+ *
13
+ * Persisted in `sessionStorage`, not `localStorage`: acting as an account is
14
+ * per-tab and must not outlive the tab. `window`/`sessionStorage` are globals,
15
+ * not imports, so every access is guarded — the SDK core has to load in Node,
16
+ * a Worker, and React Native, where neither exists.
17
+ */
18
+ /** The request header. Matches `IMPERSONATION_HEADER` in the API. */
19
+ export declare const IMPERSONATION_HEADER = "X-Kortix-Impersonate";
20
+ /** What the console stores after minting a grant. */
21
+ export interface ImpersonationSession {
22
+ /** `impersonation_grants.id`. The only part sent to the server. */
23
+ grantId: string;
24
+ /** The account being acted as — what the banner names. */
25
+ accountId: string;
26
+ /** Display name, for the banner. Null when the account has none. */
27
+ accountName?: string | null;
28
+ /** ISO-8601 instant the grant dies. The server caps this at one hour. */
29
+ expiresAt: string;
30
+ }
31
+ /**
32
+ * A session with no parseable future expiry is NOT a session. Treating an
33
+ * unreadable date as "no expiry" would leave a banner up, and a header
34
+ * attached, forever after one corrupt write.
35
+ */
36
+ export declare function isImpersonationSessionLive(session: ImpersonationSession | null | undefined, now?: number): boolean;
37
+ /**
38
+ * The live session, or null. Reads through to `sessionStorage` once per JS
39
+ * context so a full page navigation (admin console → app shell) keeps acting
40
+ * as the account, then serves the in-memory mirror.
41
+ *
42
+ * An expired session is DROPPED here — the store never hands back a value the
43
+ * server would 403 — and dropping it notifies subscribers, so the banner
44
+ * disappears on its own when the hour is up.
45
+ */
46
+ export declare function getImpersonationSession(): ImpersonationSession | null;
47
+ export declare function setImpersonationSession(session: ImpersonationSession | null): void;
48
+ export declare function clearImpersonationSession(): void;
49
+ /** Subscribe to session changes (the banner's data source). Returns an unsubscribe. */
50
+ export declare function subscribeToImpersonation(listener: () => void): () => void;
51
+ export declare function shouldAttachImpersonation(url: string): boolean;
52
+ /**
53
+ * Headers a platform request adds while acting as an account. `{}` when there
54
+ * is no live session, so the ordinary path allocates one empty object and
55
+ * touches nothing else.
56
+ */
57
+ export declare function impersonationHeaders(url?: string): Record<string, string>;
58
+ //# sourceMappingURL=impersonation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impersonation.d.ts","sourceRoot":"","sources":["../../../src/core/http/impersonation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAI3D,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CACnB;AAgBD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAChD,GAAG,GAAE,MAAmB,GACvB,OAAO,CAIT;AA6BD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,IAAI,CAUrE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAclF;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAUhD;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKzE;AAuBD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU9D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIzE"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Client half of platform-admin act-as impersonation.
3
+ *
4
+ * The client holds an ID, never a capability. `X-Kortix-Impersonate: <grantId>`
5
+ * is only meaningful next to the operator's own Supabase JWT, and the API
6
+ * re-validates ownership, expiry, revocation and the operator's CURRENT
7
+ * platform role on every request (see apps/api/src/shared/impersonation.ts).
8
+ * So nothing here is a security boundary — losing this value to another tab or
9
+ * another user grants them nothing. What this module owes the user is honesty:
10
+ * while a session is stored, EVERY request carries the header, and the app
11
+ * shell shows the banner that says so.
12
+ *
13
+ * Persisted in `sessionStorage`, not `localStorage`: acting as an account is
14
+ * per-tab and must not outlive the tab. `window`/`sessionStorage` are globals,
15
+ * not imports, so every access is guarded — the SDK core has to load in Node,
16
+ * a Worker, and React Native, where neither exists.
17
+ */
18
+ /** The request header. Matches `IMPERSONATION_HEADER` in the API. */
19
+ export const IMPERSONATION_HEADER = 'X-Kortix-Impersonate';
20
+ const STORAGE_KEY = 'kortix.impersonation';
21
+ let current = null;
22
+ let hydrated = false;
23
+ const listeners = new Set();
24
+ function storage() {
25
+ try {
26
+ if (typeof sessionStorage === 'undefined')
27
+ return null;
28
+ return sessionStorage;
29
+ }
30
+ catch {
31
+ // Access to storage throws outright in some privacy modes.
32
+ return null;
33
+ }
34
+ }
35
+ /**
36
+ * A session with no parseable future expiry is NOT a session. Treating an
37
+ * unreadable date as "no expiry" would leave a banner up, and a header
38
+ * attached, forever after one corrupt write.
39
+ */
40
+ export function isImpersonationSessionLive(session, now = Date.now()) {
41
+ if (!session || !session.grantId || !session.accountId)
42
+ return false;
43
+ const expiry = Date.parse(session.expiresAt);
44
+ return Number.isFinite(expiry) && expiry > now;
45
+ }
46
+ function parse(raw) {
47
+ if (!raw)
48
+ return null;
49
+ try {
50
+ const parsed = JSON.parse(raw);
51
+ if (typeof parsed?.grantId !== 'string' || typeof parsed?.accountId !== 'string')
52
+ return null;
53
+ return {
54
+ grantId: parsed.grantId,
55
+ accountId: parsed.accountId,
56
+ accountName: typeof parsed.accountName === 'string' ? parsed.accountName : null,
57
+ expiresAt: typeof parsed.expiresAt === 'string' ? parsed.expiresAt : '',
58
+ };
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ function notify() {
65
+ for (const listener of listeners) {
66
+ try {
67
+ listener();
68
+ }
69
+ catch {
70
+ // A broken subscriber must not stop the others, and must never break the
71
+ // request that triggered the change.
72
+ }
73
+ }
74
+ }
75
+ /**
76
+ * The live session, or null. Reads through to `sessionStorage` once per JS
77
+ * context so a full page navigation (admin console → app shell) keeps acting
78
+ * as the account, then serves the in-memory mirror.
79
+ *
80
+ * An expired session is DROPPED here — the store never hands back a value the
81
+ * server would 403 — and dropping it notifies subscribers, so the banner
82
+ * disappears on its own when the hour is up.
83
+ */
84
+ export function getImpersonationSession() {
85
+ if (!hydrated) {
86
+ hydrated = true;
87
+ current = parse(storage()?.getItem(STORAGE_KEY) ?? null);
88
+ }
89
+ if (current && !isImpersonationSessionLive(current)) {
90
+ clearImpersonationSession();
91
+ return null;
92
+ }
93
+ return current;
94
+ }
95
+ export function setImpersonationSession(session) {
96
+ hydrated = true;
97
+ if (!session) {
98
+ clearImpersonationSession();
99
+ return;
100
+ }
101
+ current = session;
102
+ try {
103
+ storage()?.setItem(STORAGE_KEY, JSON.stringify(session));
104
+ }
105
+ catch {
106
+ // Quota or privacy mode. The in-memory mirror still works for this tab's
107
+ // lifetime; only reload-survival is lost.
108
+ }
109
+ notify();
110
+ }
111
+ export function clearImpersonationSession() {
112
+ hydrated = true;
113
+ const had = current !== null;
114
+ current = null;
115
+ try {
116
+ storage()?.removeItem(STORAGE_KEY);
117
+ }
118
+ catch {
119
+ /* see setImpersonationSession */
120
+ }
121
+ if (had)
122
+ notify();
123
+ }
124
+ /** Subscribe to session changes (the banner's data source). Returns an unsubscribe. */
125
+ export function subscribeToImpersonation(listener) {
126
+ listeners.add(listener);
127
+ return () => {
128
+ listeners.delete(listener);
129
+ };
130
+ }
131
+ /**
132
+ * The admin console is the ONE surface that is never impersonated.
133
+ *
134
+ * The server refuses an impersonated `/v1/admin/*` request outright — no
135
+ * nesting, no minting a second grant, no changing platform roles from inside a
136
+ * customer's context. The revoke route lives under that same prefix, so a
137
+ * client that attached the header everywhere would 403 its own Exit button and
138
+ * strand the operator until the grant expired.
139
+ *
140
+ * Skipping it here is UX, not a security decision: the server's denial is the
141
+ * control, and it still fires for any client that does send the header.
142
+ *
143
+ * Matched on `admin/` FOLLOWED BY one of the console's two sub-routers, not on
144
+ * the bare word: every admin route is `/admin/api/…` or `/admin/analytics/…`,
145
+ * while `/projects/admin/sessions` is an ordinary product path for a project
146
+ * that happens to be called "admin". Anchoring on the pair keeps a
147
+ * customer-controlled name from silently exempting itself, and keeps working
148
+ * when the backend URL carries a path prefix of its own.
149
+ */
150
+ const ADMIN_CONSOLE_PATH_RE = /(^|\/)admin\/(api|analytics)(\/|$)/;
151
+ export function shouldAttachImpersonation(url) {
152
+ let path = url;
153
+ if (/^https?:\/\//.test(url)) {
154
+ try {
155
+ path = new URL(url).pathname;
156
+ }
157
+ catch {
158
+ path = url;
159
+ }
160
+ }
161
+ return !ADMIN_CONSOLE_PATH_RE.test(path);
162
+ }
163
+ /**
164
+ * Headers a platform request adds while acting as an account. `{}` when there
165
+ * is no live session, so the ordinary path allocates one empty object and
166
+ * touches nothing else.
167
+ */
168
+ export function impersonationHeaders(url) {
169
+ if (url !== undefined && !shouldAttachImpersonation(url))
170
+ return {};
171
+ const session = getImpersonationSession();
172
+ return session ? { [IMPERSONATION_HEADER]: session.grantId } : {};
173
+ }
174
+ //# sourceMappingURL=impersonation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impersonation.js","sourceRoot":"","sources":["../../../src/core/http/impersonation.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,12 @@ export interface GitHubAppStatus {
20
20
  * 'pat' = a personal/fine-grained access token, via `setGitHubAppPat` or
21
21
  * `MANAGED_GIT_GITHUB_TOKEN`. 'none' = unconfigured. */
22
22
  source: 'db' | 'env' | 'pat' | 'none';
23
+ /** Whether the App's own OAuth client (client_id/client_secret) is set —
24
+ * required for the account-linking "Continue with GitHub" identity proof
25
+ * (apps/(auth)/github/setup). Independent of `configured`: the manifest
26
+ * flow always sets both together, but `setGitHubAppFromExisting` can leave
27
+ * this false if an operator pastes App creds without OAuth credentials. */
28
+ oauth_configured: boolean;
23
29
  }
24
30
  /** Whether a GitHub App is configured for this platform, and (if so) which one. */
25
31
  export declare function getGitHubAppStatus(): Promise<GitHubAppStatus>;
@@ -50,6 +56,13 @@ export interface GitHubAppExistingInput {
50
56
  /** The id of this App's installation on the target account/org. */
51
57
  installationId: string;
52
58
  slug?: string;
59
+ /** The App's own OAuth client id/secret (GitHub settings → General →
60
+ * "Client secrets"). Optional — without these the App-JWT/installation
61
+ * half still works, but the account-linking "Continue with GitHub"
62
+ * identity proof stays unconfigured for this App until they're supplied
63
+ * here or via KORTIX_GITHUB_APP_CLIENT_ID/SECRET. */
64
+ clientId?: string;
65
+ clientSecret?: string;
53
66
  }
54
67
  /**
55
68
  * "Paste an existing GitHub App" — an alternative to the manifest flow for an
@@ -1 +1 @@
1
- {"version":3,"file":"github-app.d.ts","sourceRoot":"","sources":["../../../../src/core/rest/platform-client/github-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;6DAIyD;IACzD,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;CACvC;AAED,mFAAmF;AACnF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAOnE;AAED,MAAM,WAAW,2BAA2B;IAC1C,4FAA4F;IAC5F,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,0FAA0F;IAC1F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,qGAAqG;IACrG,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,GAAE,2BAAgC,GACtC,OAAO,CAAC,sBAAsB,CAAC,CASjC;AAED,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CActC;AAED,MAAM,WAAW,iBAAiB;IAChC,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAOrF;AAED,mFAAmF;AACnF,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAOjE"}
1
+ {"version":3,"file":"github-app.d.ts","sourceRoot":"","sources":["../../../../src/core/rest/platform-client/github-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;6DAIyD;IACzD,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACtC;;;;gFAI4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAOnE;AAED,MAAM,WAAW,2BAA2B;IAC1C,4FAA4F;IAC5F,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,0FAA0F;IAC1F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,qGAAqG;IACrG,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,GAAE,2BAAgC,GACtC,OAAO,CAAC,sBAAsB,CAAC,CASjC;AAED,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;0DAIsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBtC;AAED,MAAM,WAAW,iBAAiB;IAChC,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAOrF;AAED,mFAAmF;AACnF,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAOjE"}
@@ -46,6 +46,8 @@ export async function setGitHubAppFromExisting(input) {
46
46
  private_key: input.privateKey,
47
47
  installation_id: input.installationId,
48
48
  slug: input.slug,
49
+ client_id: input.clientId,
50
+ client_secret: input.clientSecret,
49
51
  }, { showErrors: false });
50
52
  if (response.error)
51
53
  throw response.error;