@kortix/sdk 0.10.16 → 0.12.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 (313) hide show
  1. package/README.md +114 -62
  2. package/dist/browser/cache/idb-sync-cache-key.d.ts +2 -0
  3. package/dist/browser/cache/idb-sync-cache-key.d.ts.map +1 -0
  4. package/dist/browser/cache/idb-sync-cache-key.js +7 -0
  5. package/dist/browser/cache/idb-sync-cache-key.js.map +1 -0
  6. package/dist/browser/cache/idb-sync-cache.d.ts +3 -3
  7. package/dist/browser/cache/idb-sync-cache.d.ts.map +1 -1
  8. package/dist/browser/cache/idb-sync-cache.js +49 -26
  9. package/dist/browser/cache/idb-sync-cache.js.map +1 -1
  10. package/dist/browser/session-sync/session-cache-ownership.d.ts +36 -0
  11. package/dist/browser/session-sync/session-cache-ownership.d.ts.map +1 -0
  12. package/dist/browser/session-sync/session-cache-ownership.js +66 -0
  13. package/dist/browser/session-sync/session-cache-ownership.js.map +1 -0
  14. package/dist/browser/session-sync/session-sync-registry.d.ts +9 -4
  15. package/dist/browser/session-sync/session-sync-registry.d.ts.map +1 -1
  16. package/dist/browser/session-sync/session-sync-registry.js +111 -29
  17. package/dist/browser/session-sync/session-sync-registry.js.map +1 -1
  18. package/dist/browser/session-sync/session-transcript-cache.d.ts +55 -0
  19. package/dist/browser/session-sync/session-transcript-cache.d.ts.map +1 -0
  20. package/dist/browser/session-sync/session-transcript-cache.js +69 -0
  21. package/dist/browser/session-sync/session-transcript-cache.js.map +1 -0
  22. package/dist/core/client/kortix.d.ts +198 -24
  23. package/dist/core/client/kortix.d.ts.map +1 -1
  24. package/dist/core/client/kortix.js +112 -20
  25. package/dist/core/client/kortix.js.map +1 -1
  26. package/dist/core/http/api-client.d.ts.map +1 -1
  27. package/dist/core/http/api-client.js +48 -68
  28. package/dist/core/http/api-client.js.map +1 -1
  29. package/dist/core/rest/platform-client/host-boundary.d.ts +121 -0
  30. package/dist/core/rest/platform-client/host-boundary.d.ts.map +1 -0
  31. package/dist/core/rest/platform-client/host-boundary.js +243 -0
  32. package/dist/core/rest/platform-client/host-boundary.js.map +1 -0
  33. package/dist/core/rest/platform-client/index.d.ts +1 -0
  34. package/dist/core/rest/platform-client/index.d.ts.map +1 -1
  35. package/dist/core/rest/platform-client/index.js +1 -0
  36. package/dist/core/rest/platform-client/index.js.map +1 -1
  37. package/dist/core/rest/projects-client/access.d.ts +1 -2
  38. package/dist/core/rest/projects-client/access.d.ts.map +1 -1
  39. package/dist/core/rest/projects-client/access.js +9 -6
  40. package/dist/core/rest/projects-client/access.js.map +1 -1
  41. package/dist/core/rest/projects-client/account-lifecycle.d.ts +22 -0
  42. package/dist/core/rest/projects-client/account-lifecycle.d.ts.map +1 -0
  43. package/dist/core/rest/projects-client/account-lifecycle.js +26 -0
  44. package/dist/core/rest/projects-client/account-lifecycle.js.map +1 -0
  45. package/dist/core/rest/projects-client/admin-providers.d.ts +10 -0
  46. package/dist/core/rest/projects-client/admin-providers.d.ts.map +1 -0
  47. package/dist/core/rest/projects-client/admin-providers.js +34 -0
  48. package/dist/core/rest/projects-client/admin-providers.js.map +1 -0
  49. package/dist/core/rest/projects-client/agent-config.d.ts +17 -2
  50. package/dist/core/rest/projects-client/agent-config.d.ts.map +1 -1
  51. package/dist/core/rest/projects-client/agent-config.js +43 -2
  52. package/dist/core/rest/projects-client/agent-config.js.map +1 -1
  53. package/dist/core/rest/projects-client/agent-scope.d.ts +4 -0
  54. package/dist/core/rest/projects-client/agent-scope.d.ts.map +1 -1
  55. package/dist/core/rest/projects-client/agent-scope.js +34 -1
  56. package/dist/core/rest/projects-client/agent-scope.js.map +1 -1
  57. package/dist/core/rest/projects-client/audit.d.ts +34 -0
  58. package/dist/core/rest/projects-client/audit.d.ts.map +1 -1
  59. package/dist/core/rest/projects-client/audit.js +49 -4
  60. package/dist/core/rest/projects-client/audit.js.map +1 -1
  61. package/dist/core/rest/projects-client/billing.d.ts +101 -0
  62. package/dist/core/rest/projects-client/billing.d.ts.map +1 -1
  63. package/dist/core/rest/projects-client/billing.js +42 -0
  64. package/dist/core/rest/projects-client/billing.js.map +1 -1
  65. package/dist/core/rest/projects-client/channels.d.ts +8 -27
  66. package/dist/core/rest/projects-client/channels.d.ts.map +1 -1
  67. package/dist/core/rest/projects-client/channels.js +12 -23
  68. package/dist/core/rest/projects-client/channels.js.map +1 -1
  69. package/dist/core/rest/projects-client/connectors.d.ts +234 -24
  70. package/dist/core/rest/projects-client/connectors.d.ts.map +1 -1
  71. package/dist/core/rest/projects-client/connectors.js +114 -15
  72. package/dist/core/rest/projects-client/connectors.js.map +1 -1
  73. package/dist/core/rest/projects-client/gateway.d.ts +1 -0
  74. package/dist/core/rest/projects-client/gateway.d.ts.map +1 -1
  75. package/dist/core/rest/projects-client/gateway.js.map +1 -1
  76. package/dist/core/rest/projects-client/iam.d.ts +509 -0
  77. package/dist/core/rest/projects-client/iam.d.ts.map +1 -0
  78. package/dist/core/rest/projects-client/iam.js +301 -0
  79. package/dist/core/rest/projects-client/iam.js.map +1 -0
  80. package/dist/core/rest/projects-client/index.d.ts +7 -0
  81. package/dist/core/rest/projects-client/index.d.ts.map +1 -1
  82. package/dist/core/rest/projects-client/index.js +7 -0
  83. package/dist/core/rest/projects-client/index.js.map +1 -1
  84. package/dist/core/rest/projects-client/marketplace-catalog.d.ts +9 -2
  85. package/dist/core/rest/projects-client/marketplace-catalog.d.ts.map +1 -1
  86. package/dist/core/rest/projects-client/marketplace-catalog.js +7 -0
  87. package/dist/core/rest/projects-client/marketplace-catalog.js.map +1 -1
  88. package/dist/core/rest/projects-client/policies.d.ts +18 -0
  89. package/dist/core/rest/projects-client/policies.d.ts.map +1 -1
  90. package/dist/core/rest/projects-client/policies.js.map +1 -1
  91. package/dist/core/rest/projects-client/presentations.d.ts +12 -0
  92. package/dist/core/rest/projects-client/presentations.d.ts.map +1 -0
  93. package/dist/core/rest/projects-client/presentations.js +9 -0
  94. package/dist/core/rest/projects-client/presentations.js.map +1 -0
  95. package/dist/core/rest/projects-client/projects.d.ts +62 -10
  96. package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
  97. package/dist/core/rest/projects-client/projects.js +14 -7
  98. package/dist/core/rest/projects-client/projects.js.map +1 -1
  99. package/dist/core/rest/projects-client/public-voice-join.d.ts +59 -0
  100. package/dist/core/rest/projects-client/public-voice-join.d.ts.map +1 -0
  101. package/dist/core/rest/projects-client/public-voice-join.js +64 -0
  102. package/dist/core/rest/projects-client/public-voice-join.js.map +1 -0
  103. package/dist/core/rest/projects-client/referrals.d.ts +53 -0
  104. package/dist/core/rest/projects-client/referrals.d.ts.map +1 -0
  105. package/dist/core/rest/projects-client/referrals.js +27 -0
  106. package/dist/core/rest/projects-client/referrals.js.map +1 -0
  107. package/dist/core/rest/projects-client/sandbox.d.ts +50 -0
  108. package/dist/core/rest/projects-client/sandbox.d.ts.map +1 -1
  109. package/dist/core/rest/projects-client/sandbox.js.map +1 -1
  110. package/dist/core/rest/projects-client/session-costs.d.ts +102 -0
  111. package/dist/core/rest/projects-client/session-costs.d.ts.map +1 -0
  112. package/dist/core/rest/projects-client/session-costs.js +25 -0
  113. package/dist/core/rest/projects-client/session-costs.js.map +1 -0
  114. package/dist/core/rest/projects-client/session-sandbox.d.ts.map +1 -1
  115. package/dist/core/rest/projects-client/session-sandbox.js +1 -0
  116. package/dist/core/rest/projects-client/session-sandbox.js.map +1 -1
  117. package/dist/core/rest/projects-client/sessions.d.ts +143 -18
  118. package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
  119. package/dist/core/rest/projects-client/sessions.js +43 -1
  120. package/dist/core/rest/projects-client/sessions.js.map +1 -1
  121. package/dist/core/rest/projects-client/setup-links.d.ts +37 -0
  122. package/dist/core/rest/projects-client/setup-links.d.ts.map +1 -1
  123. package/dist/core/rest/projects-client/setup-links.js +11 -0
  124. package/dist/core/rest/projects-client/setup-links.js.map +1 -1
  125. package/dist/core/session/index.d.ts +2 -0
  126. package/dist/core/session/index.d.ts.map +1 -1
  127. package/dist/core/session/index.js +2 -0
  128. package/dist/core/session/index.js.map +1 -1
  129. package/dist/core/session/presentation.d.ts +12 -0
  130. package/dist/core/session/presentation.d.ts.map +1 -0
  131. package/dist/core/session/presentation.js +70 -0
  132. package/dist/core/session/presentation.js.map +1 -0
  133. package/dist/core/session/preview-auth.d.ts +32 -0
  134. package/dist/core/session/preview-auth.d.ts.map +1 -0
  135. package/dist/core/session/preview-auth.js +53 -0
  136. package/dist/core/session/preview-auth.js.map +1 -0
  137. package/dist/core/session/rewind.d.ts +18 -0
  138. package/dist/core/session/rewind.d.ts.map +1 -0
  139. package/dist/core/session/rewind.js +17 -0
  140. package/dist/core/session/rewind.js.map +1 -0
  141. package/dist/core/session/server-store/url-helpers.d.ts.map +1 -1
  142. package/dist/core/session/server-store/url-helpers.js +5 -3
  143. package/dist/core/session/server-store/url-helpers.js.map +1 -1
  144. package/dist/core/session/url.d.ts +43 -0
  145. package/dist/core/session/url.d.ts.map +1 -1
  146. package/dist/core/session/url.js +81 -0
  147. package/dist/core/session/url.js.map +1 -1
  148. package/dist/core/session-sync/session-sync-controller.d.ts +40 -1
  149. package/dist/core/session-sync/session-sync-controller.d.ts.map +1 -1
  150. package/dist/core/session-sync/session-sync-controller.js +161 -6
  151. package/dist/core/session-sync/session-sync-controller.js.map +1 -1
  152. package/dist/core/stream/fetch-sse.d.ts +23 -0
  153. package/dist/core/stream/fetch-sse.d.ts.map +1 -0
  154. package/dist/core/stream/fetch-sse.js +119 -0
  155. package/dist/core/stream/fetch-sse.js.map +1 -0
  156. package/dist/core/turns/state.d.ts.map +1 -1
  157. package/dist/core/turns/state.js +11 -4
  158. package/dist/core/turns/state.js.map +1 -1
  159. package/dist/core/turns/types.d.ts +6 -0
  160. package/dist/core/turns/types.d.ts.map +1 -1
  161. package/dist/index.d.ts +6 -2
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +5 -1
  164. package/dist/index.js.map +1 -1
  165. package/dist/kortix.esm.min.js +19 -16
  166. package/dist/kortix.global.js +19 -16
  167. package/dist/node/server.d.ts +14 -0
  168. package/dist/node/server.d.ts.map +1 -1
  169. package/dist/node/server.js +42 -0
  170. package/dist/node/server.js.map +1 -1
  171. package/dist/react/agent-selection-scope.d.ts +8 -0
  172. package/dist/react/agent-selection-scope.d.ts.map +1 -0
  173. package/dist/react/agent-selection-scope.js +4 -0
  174. package/dist/react/agent-selection-scope.js.map +1 -0
  175. package/dist/react/index.d.ts +12 -0
  176. package/dist/react/index.d.ts.map +1 -1
  177. package/dist/react/index.js +12 -0
  178. package/dist/react/index.js.map +1 -1
  179. package/dist/react/initial-session-pin.d.ts +8 -0
  180. package/dist/react/initial-session-pin.d.ts.map +1 -0
  181. package/dist/react/initial-session-pin.js +4 -0
  182. package/dist/react/initial-session-pin.js.map +1 -0
  183. package/dist/react/model-flatten.d.ts +8 -0
  184. package/dist/react/model-flatten.d.ts.map +1 -1
  185. package/dist/react/model-flatten.js +1 -0
  186. package/dist/react/model-flatten.js.map +1 -1
  187. package/dist/react/opencode.d.ts +25 -2
  188. package/dist/react/opencode.d.ts.map +1 -1
  189. package/dist/react/opencode.js +24 -1
  190. package/dist/react/opencode.js.map +1 -1
  191. package/dist/react/provider-selection.d.ts +1 -0
  192. package/dist/react/provider-selection.d.ts.map +1 -1
  193. package/dist/react/provider-selection.js +22 -0
  194. package/dist/react/provider-selection.js.map +1 -1
  195. package/dist/react/run-pty-command.d.ts +5 -0
  196. package/dist/react/run-pty-command.d.ts.map +1 -0
  197. package/dist/react/run-pty-command.js +42 -0
  198. package/dist/react/run-pty-command.js.map +1 -0
  199. package/dist/react/runtime-actions.d.ts +51 -0
  200. package/dist/react/runtime-actions.d.ts.map +1 -0
  201. package/dist/react/runtime-actions.js +105 -0
  202. package/dist/react/runtime-actions.js.map +1 -0
  203. package/dist/react/session-agent-name-guard.d.ts +16 -0
  204. package/dist/react/session-agent-name-guard.d.ts.map +1 -0
  205. package/dist/react/session-agent-name-guard.js +22 -0
  206. package/dist/react/session-agent-name-guard.js.map +1 -0
  207. package/dist/react/session-title-sync.d.ts +23 -0
  208. package/dist/react/session-title-sync.d.ts.map +1 -0
  209. package/dist/react/session-title-sync.js +85 -0
  210. package/dist/react/session-title-sync.js.map +1 -0
  211. package/dist/react/use-admin-accounts.d.ts +122 -0
  212. package/dist/react/use-admin-accounts.d.ts.map +1 -0
  213. package/dist/react/use-admin-accounts.js +146 -0
  214. package/dist/react/use-admin-accounts.js.map +1 -0
  215. package/dist/react/use-admin-analytics.d.ts +332 -0
  216. package/dist/react/use-admin-analytics.d.ts.map +1 -0
  217. package/dist/react/use-admin-analytics.js +518 -0
  218. package/dist/react/use-admin-analytics.js.map +1 -0
  219. package/dist/react/use-admin-billing.d.ts +27 -0
  220. package/dist/react/use-admin-billing.d.ts.map +1 -0
  221. package/dist/react/use-admin-billing.js +61 -0
  222. package/dist/react/use-admin-billing.js.map +1 -0
  223. package/dist/react/use-admin-feedback.d.ts +119 -0
  224. package/dist/react/use-admin-feedback.d.ts.map +1 -0
  225. package/dist/react/use-admin-feedback.js +148 -0
  226. package/dist/react/use-admin-feedback.js.map +1 -0
  227. package/dist/react/use-admin-sandboxes.d.ts +157 -0
  228. package/dist/react/use-admin-sandboxes.d.ts.map +1 -0
  229. package/dist/react/use-admin-sandboxes.js +145 -0
  230. package/dist/react/use-admin-sandboxes.js.map +1 -0
  231. package/dist/react/use-authenticated-preview-url.d.ts +24 -0
  232. package/dist/react/use-authenticated-preview-url.d.ts.map +1 -0
  233. package/dist/react/use-authenticated-preview-url.js +137 -0
  234. package/dist/react/use-authenticated-preview-url.js.map +1 -0
  235. package/dist/react/use-canonical-opencode-session.d.ts +4 -0
  236. package/dist/react/use-canonical-opencode-session.d.ts.map +1 -1
  237. package/dist/react/use-canonical-opencode-session.js +9 -4
  238. package/dist/react/use-canonical-opencode-session.js.map +1 -1
  239. package/dist/react/use-model-defaults.d.ts +22 -0
  240. package/dist/react/use-model-defaults.d.ts.map +1 -0
  241. package/dist/react/use-model-defaults.js +104 -0
  242. package/dist/react/use-model-defaults.js.map +1 -0
  243. package/dist/react/use-model-store.d.ts +6 -14
  244. package/dist/react/use-model-store.d.ts.map +1 -1
  245. package/dist/react/use-model-store.js +41 -52
  246. package/dist/react/use-model-store.js.map +1 -1
  247. package/dist/react/use-opencode-events/handle-event.d.ts.map +1 -1
  248. package/dist/react/use-opencode-events/handle-event.js +103 -41
  249. package/dist/react/use-opencode-events/handle-event.js.map +1 -1
  250. package/dist/react/use-opencode-events/index.d.ts +3 -1
  251. package/dist/react/use-opencode-events/index.d.ts.map +1 -1
  252. package/dist/react/use-opencode-events/index.js +6 -2
  253. package/dist/react/use-opencode-events/index.js.map +1 -1
  254. package/dist/react/use-opencode-local.d.ts.map +1 -1
  255. package/dist/react/use-opencode-local.js +10 -1
  256. package/dist/react/use-opencode-local.js.map +1 -1
  257. package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -1
  258. package/dist/react/use-opencode-sessions/agents.js +5 -3
  259. package/dist/react/use-opencode-sessions/agents.js.map +1 -1
  260. package/dist/react/use-opencode-sessions/commands.d.ts +7 -2
  261. package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -1
  262. package/dist/react/use-opencode-sessions/commands.js +13 -9
  263. package/dist/react/use-opencode-sessions/commands.js.map +1 -1
  264. package/dist/react/use-opencode-sessions/keys.d.ts +3 -1
  265. package/dist/react/use-opencode-sessions/keys.d.ts.map +1 -1
  266. package/dist/react/use-opencode-sessions/keys.js +2 -0
  267. package/dist/react/use-opencode-sessions/keys.js.map +1 -1
  268. package/dist/react/use-opencode-sessions/provider-load-plan.d.ts +6 -0
  269. package/dist/react/use-opencode-sessions/provider-load-plan.d.ts.map +1 -0
  270. package/dist/react/use-opencode-sessions/provider-load-plan.js +4 -0
  271. package/dist/react/use-opencode-sessions/provider-load-plan.js.map +1 -0
  272. package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -1
  273. package/dist/react/use-opencode-sessions/providers.js +39 -27
  274. package/dist/react/use-opencode-sessions/providers.js.map +1 -1
  275. package/dist/react/use-opencode-sessions/sessions.d.ts +1 -1
  276. package/dist/react/use-opencode-sessions/sessions.d.ts.map +1 -1
  277. package/dist/react/use-opencode-sessions/sessions.js +18 -9
  278. package/dist/react/use-opencode-sessions/sessions.js.map +1 -1
  279. package/dist/react/use-opencode-sessions/shared.d.ts +3 -2
  280. package/dist/react/use-opencode-sessions/shared.d.ts.map +1 -1
  281. package/dist/react/use-opencode-sessions/shared.js +6 -3
  282. package/dist/react/use-opencode-sessions/shared.js.map +1 -1
  283. package/dist/react/use-opencode-sessions/sharing.js +2 -2
  284. package/dist/react/use-opencode-sessions/sharing.js.map +1 -1
  285. package/dist/react/use-ops-overview.d.ts +64 -0
  286. package/dist/react/use-ops-overview.d.ts.map +1 -0
  287. package/dist/react/use-ops-overview.js +16 -0
  288. package/dist/react/use-ops-overview.js.map +1 -0
  289. package/dist/react/use-session-model-selection.d.ts +15 -0
  290. package/dist/react/use-session-model-selection.d.ts.map +1 -0
  291. package/dist/react/use-session-model-selection.js +27 -0
  292. package/dist/react/use-session-model-selection.js.map +1 -0
  293. package/dist/react/use-session-sync.d.ts +13 -1
  294. package/dist/react/use-session-sync.d.ts.map +1 -1
  295. package/dist/react/use-session-sync.js +87 -17
  296. package/dist/react/use-session-sync.js.map +1 -1
  297. package/dist/react/use-session.d.ts +72 -1
  298. package/dist/react/use-session.d.ts.map +1 -1
  299. package/dist/react/use-session.js +222 -32
  300. package/dist/react/use-session.js.map +1 -1
  301. package/dist/react/use-system-status.d.ts +39 -0
  302. package/dist/react/use-system-status.d.ts.map +1 -0
  303. package/dist/react/use-system-status.js +68 -0
  304. package/dist/react/use-system-status.js.map +1 -0
  305. package/dist/react/use-teams-installations.d.ts +36 -0
  306. package/dist/react/use-teams-installations.d.ts.map +1 -0
  307. package/dist/react/use-teams-installations.js +94 -0
  308. package/dist/react/use-teams-installations.js.map +1 -0
  309. package/dist/react/use-tunnel.d.ts +120 -0
  310. package/dist/react/use-tunnel.d.ts.map +1 -0
  311. package/dist/react/use-tunnel.js +268 -0
  312. package/dist/react/use-tunnel.js.map +1 -0
  313. package/package.json +2 -2
@@ -16,4 +16,6 @@
16
16
  export * from './url.js';
17
17
  export * from './health.js';
18
18
  export * from './preview.js';
19
+ export * from './preview-auth.js';
20
+ export * from './presentation.js';
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/session/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type RuntimePresentationFormat = 'pdf' | 'pptx';
2
+ export declare function buildPresentationTemplatePdfUrl(backendUrl: string, templateId: string): string;
3
+ export declare function buildPresentationTemplateImageUrl(backendUrl: string, templateId: string): string;
4
+ export declare function buildRuntimePresentationConversionUrl(runtimeUrl: string, format: RuntimePresentationFormat): string;
5
+ export interface ConvertRuntimePresentationOptions {
6
+ pollIntervalMs?: number;
7
+ timeoutMs?: number;
8
+ signal?: AbortSignal;
9
+ onGenerating?: () => void;
10
+ }
11
+ export declare function convertRuntimePresentation(format: RuntimePresentationFormat, runtimeUrl: string, presentationPath: string, options?: ConvertRuntimePresentationOptions): Promise<Blob>;
12
+ //# sourceMappingURL=presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../src/core/session/presentation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,MAAM,CAAC;AAQvD,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,yBAAyB,GAChC,MAAM,CAER;AAED,MAAM,WAAW,iCAAiC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,yBAAyB,EACjC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,iCAAiC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAyDf"}
@@ -0,0 +1,70 @@
1
+ function trimTrailingSlashes(value) {
2
+ let trimmed = value;
3
+ while (trimmed.endsWith('/'))
4
+ trimmed = trimmed.slice(0, -1);
5
+ return trimmed;
6
+ }
7
+ export function buildPresentationTemplatePdfUrl(backendUrl, templateId) {
8
+ return `${trimTrailingSlashes(backendUrl)}/presentation-templates/${encodeURIComponent(templateId)}/pdf#toolbar=0&navpanes=0&scrollbar=0&view=FitH`;
9
+ }
10
+ export function buildPresentationTemplateImageUrl(backendUrl, templateId) {
11
+ return `${trimTrailingSlashes(backendUrl)}/presentation-templates/${encodeURIComponent(templateId)}/image.png`;
12
+ }
13
+ export function buildRuntimePresentationConversionUrl(runtimeUrl, format) {
14
+ return `${trimTrailingSlashes(runtimeUrl)}/presentation/convert-to-${format}`;
15
+ }
16
+ export async function convertRuntimePresentation(format, runtimeUrl, presentationPath, options) {
17
+ const endpoint = buildRuntimePresentationConversionUrl(runtimeUrl, format);
18
+ const pollIntervalMs = options?.pollIntervalMs ?? 2_500;
19
+ const timeoutMs = options?.timeoutMs ?? 4 * 60_000;
20
+ const startedAt = Date.now();
21
+ let notifiedGenerating = false;
22
+ for (;;) {
23
+ const response = await fetch(endpoint, {
24
+ method: 'POST',
25
+ headers: { 'Content-Type': 'application/json' },
26
+ body: JSON.stringify({ presentation_path: presentationPath, download: true }),
27
+ ...(options?.signal ? { signal: options.signal } : {}),
28
+ });
29
+ const contentType = response.headers.get('content-type') || '';
30
+ const isFile = response.ok &&
31
+ (contentType.includes('pdf') ||
32
+ contentType.includes('presentation') ||
33
+ contentType.includes('octet-stream'));
34
+ if (isFile) {
35
+ const blob = await response.blob();
36
+ if (blob.size === 0)
37
+ throw new Error('Downloaded file is empty');
38
+ return blob;
39
+ }
40
+ if (response.status === 202) {
41
+ if (!notifiedGenerating) {
42
+ notifiedGenerating = true;
43
+ options?.onGenerating?.();
44
+ }
45
+ if (Date.now() - startedAt > timeoutMs) {
46
+ throw new Error(`Timed out waiting for the ${format.toUpperCase()} to generate`);
47
+ }
48
+ await new Promise((resolve, reject) => {
49
+ const timeout = setTimeout(resolve, pollIntervalMs);
50
+ options?.signal?.addEventListener('abort', () => {
51
+ clearTimeout(timeout);
52
+ reject(options.signal?.reason ?? new DOMException('Aborted', 'AbortError'));
53
+ }, { once: true });
54
+ });
55
+ continue;
56
+ }
57
+ const text = await response.text().catch(() => '');
58
+ let detail = response.statusText;
59
+ try {
60
+ const json = JSON.parse(text);
61
+ detail = String(json.error || json.detail || json.message || detail);
62
+ }
63
+ catch {
64
+ if (text)
65
+ detail = text;
66
+ }
67
+ throw new Error(`Failed to download ${format.toUpperCase()}: ${detail} (HTTP ${response.status})`);
68
+ }
69
+ }
70
+ //# sourceMappingURL=presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../../src/core/session/presentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Preview-proxy cookie exchange (side-effecting).
3
+ *
4
+ * `preview.ts` next door is pure — it only decides endpoints and token rules.
5
+ * This module performs the actual `POST /…/p/auth` that mints the
6
+ * `__preview_session` cookie, so the two concerns stay separable and the pure
7
+ * helpers remain trivially testable.
8
+ *
9
+ * Two callers need this, for different reasons:
10
+ * - `react/use-authenticated-preview-url` — keeps an iframe's cookie warm on
11
+ * an interval while a preview is mounted.
12
+ * - opening a workspace file in a real browser tab — a one-shot mint, because
13
+ * nothing has necessarily rendered a preview for that sandbox yet, so no
14
+ * cookie may exist at click time.
15
+ *
16
+ * Without the one-shot case, "open in a new tab" can only hand the browser
17
+ * bytes it already has (a `blob:` URL), which is not an address: it cannot be
18
+ * reloaded, bookmarked, or sent to anyone.
19
+ */
20
+ /**
21
+ * Mint the `__preview_session` cookie for `previewUrl`'s proxy origin.
22
+ *
23
+ * Resolves `true` when the cookie was (re)issued, `false` when the URL is not a
24
+ * trusted preview-proxy URL, no token is available, or the exchange failed.
25
+ * Never throws — callers treat a false as "proceed and let the proxy answer",
26
+ * matching how the interval refresh in `use-authenticated-preview-url` already
27
+ * tolerates a failed refresh.
28
+ */
29
+ export declare function ensurePreviewSessionCookie(previewUrl: string, options?: {
30
+ serverUrl?: string;
31
+ }): Promise<boolean>;
32
+ //# sourceMappingURL=preview-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-auth.d.ts","sourceRoot":"","sources":["../../../src/core/session/preview-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Preview-proxy cookie exchange (side-effecting).
3
+ *
4
+ * `preview.ts` next door is pure — it only decides endpoints and token rules.
5
+ * This module performs the actual `POST /…/p/auth` that mints the
6
+ * `__preview_session` cookie, so the two concerns stay separable and the pure
7
+ * helpers remain trivially testable.
8
+ *
9
+ * Two callers need this, for different reasons:
10
+ * - `react/use-authenticated-preview-url` — keeps an iframe's cookie warm on
11
+ * an interval while a preview is mounted.
12
+ * - opening a workspace file in a real browser tab — a one-shot mint, because
13
+ * nothing has necessarily rendered a preview for that sandbox yet, so no
14
+ * cookie may exist at click time.
15
+ *
16
+ * Without the one-shot case, "open in a new tab" can only hand the browser
17
+ * bytes it already has (a `blob:` URL), which is not an address: it cannot be
18
+ * reloaded, bookmarked, or sent to anyone.
19
+ */
20
+ import { getAuthToken } from '../http/auth.js';
21
+ import { buildPreviewAuthEndpoint } from './preview.js';
22
+ /**
23
+ * Mint the `__preview_session` cookie for `previewUrl`'s proxy origin.
24
+ *
25
+ * Resolves `true` when the cookie was (re)issued, `false` when the URL is not a
26
+ * trusted preview-proxy URL, no token is available, or the exchange failed.
27
+ * Never throws — callers treat a false as "proceed and let the proxy answer",
28
+ * matching how the interval refresh in `use-authenticated-preview-url` already
29
+ * tolerates a failed refresh.
30
+ */
31
+ export async function ensurePreviewSessionCookie(previewUrl, options = {}) {
32
+ const authEndpoint = buildPreviewAuthEndpoint(previewUrl, options.serverUrl);
33
+ if (!authEndpoint)
34
+ return false;
35
+ const token = await getAuthToken();
36
+ if (!token)
37
+ return false;
38
+ try {
39
+ const response = await fetch(authEndpoint, {
40
+ method: 'POST',
41
+ credentials: 'include',
42
+ headers: {
43
+ Authorization: `Bearer ${token}`,
44
+ 'Content-Type': 'application/json',
45
+ },
46
+ });
47
+ return response.ok;
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ //# sourceMappingURL=preview-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-auth.js","sourceRoot":"","sources":["../../../src/core/session/preview-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,UAAkB,EAClB,UAAkC,EAAE;IAEpC,MAAM,YAAY,GAAG,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;YACzC,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare function messagesBeforeRewind<T extends {
2
+ info: {
3
+ id: string;
4
+ };
5
+ }>(messages: T[], messageId: string | null): T[];
6
+ export interface SessionRewindState {
7
+ messageId: string;
8
+ staged: boolean;
9
+ }
10
+ /** Mark the rewind as committed while its removed path remains hidden locally. */
11
+ export declare function commitSessionRewind(rewind: SessionRewindState | null): SessionRewindState | null;
12
+ /** Drop the local boundary after runtime synchronization confirms cleanup. */
13
+ export declare function reconcileCommittedSessionRewind<T extends {
14
+ info: {
15
+ id: string;
16
+ };
17
+ }>(messages: T[], rewind: SessionRewindState | null): SessionRewindState | null;
18
+ //# sourceMappingURL=rewind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.d.ts","sourceRoot":"","sources":["../../../src/core/session/rewind.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACrE,QAAQ,EAAE,CAAC,EAAE,EACb,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,CAAC,EAAE,CAIL;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAChC,kBAAkB,GAAG,IAAI,CAE3B;AAED,8EAA8E;AAC9E,wBAAgB,+BAA+B,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAChF,QAAQ,EAAE,CAAC,EAAE,EACb,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAChC,kBAAkB,GAAG,IAAI,CAG3B"}
@@ -0,0 +1,17 @@
1
+ export function messagesBeforeRewind(messages, messageId) {
2
+ if (!messageId)
3
+ return messages;
4
+ const boundary = messages.findIndex((message) => message.info.id === messageId);
5
+ return boundary < 0 ? messages : messages.slice(0, boundary);
6
+ }
7
+ /** Mark the rewind as committed while its removed path remains hidden locally. */
8
+ export function commitSessionRewind(rewind) {
9
+ return rewind?.staged ? { ...rewind, staged: false } : rewind;
10
+ }
11
+ /** Drop the local boundary after runtime synchronization confirms cleanup. */
12
+ export function reconcileCommittedSessionRewind(messages, rewind) {
13
+ if (!rewind || rewind.staged)
14
+ return rewind;
15
+ return messages.some((message) => message.info.id === rewind.messageId) ? rewind : null;
16
+ }
17
+ //# sourceMappingURL=rewind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewind.js","sourceRoot":"","sources":["../../../src/core/session/rewind.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAClC,QAAa,EACb,SAAwB;IAExB,IAAI,CAAC,SAAS;QAAE,OAAO,QAAQ,CAAC;IAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IAChF,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAOD,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CACjC,MAAiC;IAEjC,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAChE,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,+BAA+B,CAC7C,QAAa,EACb,MAAiC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"url-helpers.d.ts","sourceRoot":"","sources":["../../../../src/core/session/server-store/url-helpers.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAK7C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E"}
1
+ {"version":3,"file":"url-helpers.d.ts","sourceRoot":"","sources":["../../../../src/core/session/server-store/url-helpers.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E"}
@@ -15,9 +15,11 @@ export function getBackendUrl() {
15
15
  return stripTrailingSlashes(platformConfig().backendUrl || 'http://localhost:8008/v1');
16
16
  }
17
17
  export function getDefaultSandboxUrl() {
18
- // Self-host override only; empty in cloud (the session runtime is the source
19
- // of truth). No auto-default an unconfigured id just yields an empty path.
20
- const sandboxId = platformConfig().sandboxId || '';
18
+ // Self-host override only. Without an explicit id there is no valid target,
19
+ // so callers must wait for the active session to bind its runtime.
20
+ const sandboxId = platformConfig().sandboxId;
21
+ if (!sandboxId)
22
+ return '';
21
23
  return `${getBackendUrl()}/p/${sandboxId}/8000`;
22
24
  }
23
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"url-helpers.js","sourceRoot":"","sources":["../../../../src/core/session/server-store/url-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mEAAmE;AACnE,mEAAmE;AACnE,SAAS,oBAAoB,CAAC,CAAS;IACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS;QAAE,GAAG,EAAE,CAAC;IAChE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,oBAAoB,CAAC,cAAc,EAAE,CAAC,UAAU,IAAI,0BAA0B,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;IACnD,OAAO,GAAG,aAAa,EAAE,MAAM,SAAS,OAAO,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,GAAG,aAAa,EAAE,MAAM,SAAS,OAAO,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAa,EAAE,IAAY;IACnE,OAAO,GAAG,aAAa,EAAE,mBAAmB,KAAK,IAAI,IAAI,EAAE,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"url-helpers.js","sourceRoot":"","sources":["../../../../src/core/session/server-store/url-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mEAAmE;AACnE,mEAAmE;AACnE,SAAS,oBAAoB,CAAC,CAAS;IACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS;QAAE,GAAG,EAAE,CAAC;IAChE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,oBAAoB,CAAC,cAAc,EAAE,CAAC,UAAU,IAAI,0BAA0B,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC,SAAS,CAAC;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,GAAG,aAAa,EAAE,MAAM,SAAS,OAAO,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,GAAG,aAAa,EAAE,MAAM,SAAS,OAAO,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAa,EAAE,IAAY;IACnE,OAAO,GAAG,aAAa,EAAE,mBAAmB,KAAK,IAAI,IAAI,EAAE,CAAC;AAC9D,CAAC"}
@@ -69,6 +69,21 @@ export declare function detectLocalhostUrls(text: string): DetectedLocalhostUrl[
69
69
  * Check if a string contains any localhost URLs worth rewriting.
70
70
  */
71
71
  export declare function hasLocalhostUrls(text: string): boolean;
72
+ /**
73
+ * Whether these options can actually address a sandbox.
74
+ *
75
+ * Both proxy schemes put the sandbox id in a structural slot — the `/p/{id}/`
76
+ * path segment, or the `p{port}-{id}` hostname label. An empty id doesn't
77
+ * degrade those URLs, it *invalidates* them: `/v1/p//3000/` and
78
+ * `p3000-.localhost` are unroutable, and the first one 404s with a JSON error
79
+ * body that a reader has no way to distinguish from a broken app.
80
+ *
81
+ * The id is absent whenever no session runtime is bound yet — before
82
+ * `ensureReady()` resolves, or after the runtime is cleared. That is a
83
+ * *transient* state, not an error, which is exactly why callers must be able to
84
+ * ask rather than be handed a plausible-looking dead link.
85
+ */
86
+ export declare function hasPreviewTarget(subdomainOpts: SubdomainUrlOptions): boolean;
72
87
  /**
73
88
  * Build a preview proxy URL for a sandbox service port.
74
89
  *
@@ -84,11 +99,25 @@ export declare function hasLocalhostUrls(text: string): boolean;
84
99
  * - **Path-based** (backend remote): `{apiBaseUrl}/p/{sandboxId}/{port}/{path}`
85
100
  * Goes through Caddy → API → sandbox. Used for all deployed setups.
86
101
  *
102
+ * With no sandbox id (`hasPreviewTarget` false) there is no third option that
103
+ * works, so this returns the **internal** localhost URL unchanged rather than a
104
+ * proxy URL with an empty slot. That keeps the value honest: it still reads as
105
+ * proxiable (`isProxiableLocalhostUrl`), so a click handler re-resolving once
106
+ * the runtime binds gets a real preview URL. Callers that put the result
107
+ * somewhere a raw localhost URL must never reach — an `<iframe src>`, say —
108
+ * must gate on `hasPreviewTarget` first.
109
+ *
87
110
  * @example
88
111
  * // Local dev: → 'http://p3210-sb-abc123.localhost:8008/viewer.html'
89
112
  * // Deployed back: → 'https://e2e-test.kortix.cloud/v1/p/sb-abc123/3210/viewer.html'
113
+ * // No runtime yet: → 'http://localhost:3210/viewer.html'
90
114
  */
91
115
  export declare function rewriteLocalhostUrl(port: number, path: string, subdomainOpts: SubdomainUrlOptions): string;
116
+ export declare function buildStaticFilePreviewUrl(filePath: string | undefined, options: SubdomainUrlOptions): string | undefined;
117
+ export declare function buildStaticFileServicePath(filePath: string): string;
118
+ export declare function buildStaticFileLocalUrl(filePath: string): string;
119
+ export declare function getStaticFileHealthPath(): string;
120
+ export declare function buildStaticFileHealthPreviewUrl(options: SubdomainUrlOptions): string;
92
121
  /**
93
122
  * Build the proxy base URL for a given port (without path).
94
123
  * Used for opening preview tabs.
@@ -145,6 +174,20 @@ export declare function proxyUrlToInternal(proxyUrl: string): string | null;
145
174
  * Use this to prevent double-proxying.
146
175
  */
147
176
  export declare function isPreviewUrl(url: string): boolean;
177
+ /**
178
+ * A bare `http://localhost:PORT` URL — i.e. one that was never proxied.
179
+ *
180
+ * Note the asymmetry with `isPreviewUrl`: the subdomain preview form
181
+ * (`p3000-sb.localhost:8008`) is NOT internal, because that hostname resolves
182
+ * to the local kortix-api, which forwards to the sandbox. Only the bare host is.
183
+ *
184
+ * This is the guard for anywhere a URL becomes a *fetch or a frame* rather than
185
+ * a link: rendering a bare localhost URL into an `<iframe src>` loads whatever
186
+ * the **viewer** happens to be running on that port, which is both wrong and
187
+ * confusing in the exact way that is hardest to diagnose ("it works on my
188
+ * machine" — literally).
189
+ */
190
+ export declare function isInternalLocalhostUrl(url: string): boolean;
148
191
  /**
149
192
  * Build a web proxy URL that routes through the Kortix Master (port 8000)
150
193
  * which hosts the /web-proxy/ forward proxy.
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/core/session/url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AA0GD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CASjE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,kBAAkB,GAAG,IAAI,CAqE3B;AA0CD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAgCxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAuBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,mBAAmB,GACjC,MAAM,CAyBR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,mBAAmB,GACjC,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAW5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,aAAa,EAAE,mBAAmB,GACjC,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAY,GAAG,MAAM,CAEtE;AASD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,IAAI,CA6BP;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWlE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjD;AAMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,mBAAmB,GACjC,MAAM,GAAG,IAAI,CAaf;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAehE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMlD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMnE"}
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/core/session/url.ts"],"names":[],"mappings":"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"}
@@ -281,6 +281,23 @@ function isBackendOnLocalhost(apiBaseUrl) {
281
281
  return false;
282
282
  }
283
283
  }
284
+ /**
285
+ * Whether these options can actually address a sandbox.
286
+ *
287
+ * Both proxy schemes put the sandbox id in a structural slot — the `/p/{id}/`
288
+ * path segment, or the `p{port}-{id}` hostname label. An empty id doesn't
289
+ * degrade those URLs, it *invalidates* them: `/v1/p//3000/` and
290
+ * `p3000-.localhost` are unroutable, and the first one 404s with a JSON error
291
+ * body that a reader has no way to distinguish from a broken app.
292
+ *
293
+ * The id is absent whenever no session runtime is bound yet — before
294
+ * `ensureReady()` resolves, or after the runtime is cleared. That is a
295
+ * *transient* state, not an error, which is exactly why callers must be able to
296
+ * ask rather than be handed a plausible-looking dead link.
297
+ */
298
+ export function hasPreviewTarget(subdomainOpts) {
299
+ return subdomainOpts.sandboxId.trim().length > 0;
300
+ }
284
301
  /**
285
302
  * Build a preview proxy URL for a sandbox service port.
286
303
  *
@@ -296,12 +313,23 @@ function isBackendOnLocalhost(apiBaseUrl) {
296
313
  * - **Path-based** (backend remote): `{apiBaseUrl}/p/{sandboxId}/{port}/{path}`
297
314
  * Goes through Caddy → API → sandbox. Used for all deployed setups.
298
315
  *
316
+ * With no sandbox id (`hasPreviewTarget` false) there is no third option that
317
+ * works, so this returns the **internal** localhost URL unchanged rather than a
318
+ * proxy URL with an empty slot. That keeps the value honest: it still reads as
319
+ * proxiable (`isProxiableLocalhostUrl`), so a click handler re-resolving once
320
+ * the runtime binds gets a real preview URL. Callers that put the result
321
+ * somewhere a raw localhost URL must never reach — an `<iframe src>`, say —
322
+ * must gate on `hasPreviewTarget` first.
323
+ *
299
324
  * @example
300
325
  * // Local dev: → 'http://p3210-sb-abc123.localhost:8008/viewer.html'
301
326
  * // Deployed back: → 'https://e2e-test.kortix.cloud/v1/p/sb-abc123/3210/viewer.html'
327
+ * // No runtime yet: → 'http://localhost:3210/viewer.html'
302
328
  */
303
329
  export function rewriteLocalhostUrl(port, path, subdomainOpts) {
304
330
  const safePath = normalizePath(path);
331
+ if (!hasPreviewTarget(subdomainOpts))
332
+ return toInternalUrl(port, safePath);
305
333
  // Path-based proxy whenever the backend is NOT on the user's machine.
306
334
  // The subdomain scheme below relies on *.localhost DNS pointing at 127.0.0.1
307
335
  // (browser-native) to reach kortix-api. That only works when kortix-api is
@@ -325,6 +353,37 @@ export function rewriteLocalhostUrl(port, path, subdomainOpts) {
325
353
  // this hostname pattern, validates first-request auth, and forwards.
326
354
  return `http://p${port}-${subdomainOpts.sandboxId}.localhost:${subdomainOpts.backendPort}${safePath}`;
327
355
  }
356
+ export function buildStaticFilePreviewUrl(filePath, options) {
357
+ if (!filePath)
358
+ return undefined;
359
+ const relativePath = filePath.replace(/^\/workspace\//, '').replace(/^\/+/, '');
360
+ const encodedPath = relativePath
361
+ .split('/')
362
+ .filter(Boolean)
363
+ .map((segment) => encodeURIComponent(segment))
364
+ .join('/');
365
+ return rewriteLocalhostUrl(3211, `/open?path=/workspace/${encodedPath}`, options);
366
+ }
367
+ export function buildStaticFileServicePath(filePath) {
368
+ const absolutePath = filePath.startsWith('/workspace')
369
+ ? filePath
370
+ : `/workspace/${filePath.replace(/^\/+/, '')}`;
371
+ const encodedPath = absolutePath
372
+ .split('/')
373
+ .filter(Boolean)
374
+ .map((segment) => encodeURIComponent(segment))
375
+ .join('/');
376
+ return `/open?path=/${encodedPath}`;
377
+ }
378
+ export function buildStaticFileLocalUrl(filePath) {
379
+ return `http://localhost:3211${buildStaticFileServicePath(filePath)}`;
380
+ }
381
+ export function getStaticFileHealthPath() {
382
+ return '/health';
383
+ }
384
+ export function buildStaticFileHealthPreviewUrl(options) {
385
+ return rewriteLocalhostUrl(3211, getStaticFileHealthPath(), options);
386
+ }
328
387
  /**
329
388
  * Build the proxy base URL for a given port (without path).
330
389
  * Used for opening preview tabs.
@@ -448,6 +507,28 @@ export function proxyUrlToInternal(proxyUrl) {
448
507
  export function isPreviewUrl(url) {
449
508
  return isSubdomainUrl(url) || PATH_PROXY_URL_REGEX.test(url);
450
509
  }
510
+ /**
511
+ * A bare `http://localhost:PORT` URL — i.e. one that was never proxied.
512
+ *
513
+ * Note the asymmetry with `isPreviewUrl`: the subdomain preview form
514
+ * (`p3000-sb.localhost:8008`) is NOT internal, because that hostname resolves
515
+ * to the local kortix-api, which forwards to the sandbox. Only the bare host is.
516
+ *
517
+ * This is the guard for anywhere a URL becomes a *fetch or a frame* rather than
518
+ * a link: rendering a bare localhost URL into an `<iframe src>` loads whatever
519
+ * the **viewer** happens to be running on that port, which is both wrong and
520
+ * confusing in the exact way that is hardest to diagnose ("it works on my
521
+ * machine" — literally).
522
+ */
523
+ export function isInternalLocalhostUrl(url) {
524
+ try {
525
+ const { hostname, port } = new URL(url);
526
+ return (hostname === 'localhost' || hostname === '127.0.0.1') && port !== '';
527
+ }
528
+ catch {
529
+ return false;
530
+ }
531
+ }
451
532
  // ── Web Forward Proxy Utilities ─────────────────────────────────────────────
452
533
  const WEB_PROXY_PATH_PREFIX = '/web-proxy/';
453
534
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/core/session/url.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/core/session/url.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,15 @@
1
1
  import type { Message, Part, SessionStatus } from '@opencode-ai/sdk/v2/client';
2
- export declare const SESSION_SYNC_PAGE_SIZE = 10;
2
+ /**
3
+ * Messages per bounded read — the newest-first window a session opens with,
4
+ * and the step size when the transcript pulls older history.
5
+ *
6
+ * OpenCode carries tool output as *parts* of the assistant message, so a page
7
+ * is roughly half as many turns as it is messages: 50 covers ~25 turns, which
8
+ * is a whole ordinary session. That is the point — most sessions now open
9
+ * fully loaded and never pull at all, while a long one still opens bounded
10
+ * instead of dragging its entire history over the sandbox proxy.
11
+ */
12
+ export declare const SESSION_SYNC_PAGE_SIZE = 50;
3
13
  export type SessionSyncFreshness = 'idle' | 'loading' | 'fresh' | 'stale' | 'error';
4
14
  export interface SessionSyncMessage {
5
15
  info: Message;
@@ -13,11 +23,15 @@ export interface SessionSyncSnapshot {
13
23
  freshness: SessionSyncFreshness;
14
24
  hasOlder: boolean;
15
25
  isLoadingOlder: boolean;
26
+ /** True while an accepted REST prompt has not reached stable runtime idle. */
27
+ isPromptObservedBusy?: boolean;
16
28
  }
17
29
  export interface SessionSyncScheduler {
18
30
  now: () => number;
19
31
  setInterval: (handler: () => void, intervalMs: number) => unknown;
20
32
  clearInterval: (handle: unknown) => void;
33
+ setTimeout?: (handler: () => void, timeoutMs: number) => unknown;
34
+ clearTimeout?: (handle: unknown) => void;
21
35
  }
22
36
  export type SessionSyncReason = 'initial' | 'poll' | 'sse-gap' | 'compaction' | 'session-error' | 'send-recovery' | 'manual';
23
37
  export interface SessionSyncTelemetryEvent {
@@ -62,9 +76,13 @@ export declare class SessionSyncController {
62
76
  private readonly livenessIntervalMs;
63
77
  private snapshot;
64
78
  private nextCursor;
79
+ private knownUserMessageIds;
80
+ private olderHistoryStarted;
65
81
  private tailRequest;
66
82
  private olderRequest;
67
83
  private livenessTimer;
84
+ private promptSettlementTimer;
85
+ private promptObservationPhase;
68
86
  private lastActivityAt;
69
87
  private listeners;
70
88
  private destroyed;
@@ -75,14 +93,35 @@ export declare class SessionSyncController {
75
93
  reconcile(reason?: SessionSyncReason): Promise<void>;
76
94
  loadOlder: () => Promise<void>;
77
95
  noteActivity(): void;
96
+ /**
97
+ * Start monotonic completion observation for an accepted REST prompt.
98
+ *
99
+ * OpenCode can publish an idle snapshot from before the prompt and publish
100
+ * the real busy event later. Keep the public projection busy until real work
101
+ * starts and the following idle state remains quiet.
102
+ */
103
+ beginPromptObservation(): void;
104
+ /** Observe an authoritative runtime status from SSE or status reconciliation. */
105
+ observePromptStatus(status: SessionStatus): void;
106
+ /** Mark assistant output as proof that the accepted prompt started. */
107
+ observePromptActivity(): void;
108
+ /** End observation after rejection, cancellation, or a terminal runtime error. */
109
+ endPromptObservation(): void;
78
110
  setBusy(isBusy: boolean): void;
79
111
  destroy(): void;
80
112
  private loadTail;
81
113
  private loadPage;
114
+ private loadCompleteOlderTurn;
115
+ private loadCompleteTurn;
116
+ private rememberUserMessages;
82
117
  private checkLiveness;
118
+ private containsNewPromptReply;
83
119
  private reconcileStatus;
84
120
  private setCursor;
85
121
  private stopLivenessTimer;
122
+ private markPromptRunning;
123
+ private schedulePromptSettlement;
124
+ private clearPromptSettlementTimer;
86
125
  private update;
87
126
  }
88
127
  export {};