@kortix/sdk 0.10.16 → 0.11.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 (285) hide show
  1. package/README.md +17 -2
  2. package/dist/browser/session-sync/session-sync-registry.d.ts +3 -0
  3. package/dist/browser/session-sync/session-sync-registry.d.ts.map +1 -1
  4. package/dist/browser/session-sync/session-sync-registry.js +31 -2
  5. package/dist/browser/session-sync/session-sync-registry.js.map +1 -1
  6. package/dist/core/acp/client.d.ts +45 -0
  7. package/dist/core/acp/client.d.ts.map +1 -0
  8. package/dist/core/acp/client.js +277 -0
  9. package/dist/core/acp/client.js.map +1 -0
  10. package/dist/core/acp/index.d.ts +5 -0
  11. package/dist/core/acp/index.d.ts.map +1 -0
  12. package/dist/core/acp/index.js +5 -0
  13. package/dist/core/acp/index.js.map +1 -0
  14. package/dist/core/acp/projection.d.ts +23 -0
  15. package/dist/core/acp/projection.d.ts.map +1 -0
  16. package/dist/core/acp/projection.js +603 -0
  17. package/dist/core/acp/projection.js.map +1 -0
  18. package/dist/core/acp/session-controller.d.ts +90 -0
  19. package/dist/core/acp/session-controller.d.ts.map +1 -0
  20. package/dist/core/acp/session-controller.js +530 -0
  21. package/dist/core/acp/session-controller.js.map +1 -0
  22. package/dist/core/acp/types.d.ts +66 -0
  23. package/dist/core/acp/types.d.ts.map +1 -0
  24. package/dist/core/acp/types.js +21 -0
  25. package/dist/core/acp/types.js.map +1 -0
  26. package/dist/core/client/kortix.d.ts +141 -14
  27. package/dist/core/client/kortix.d.ts.map +1 -1
  28. package/dist/core/client/kortix.js +40 -7
  29. package/dist/core/client/kortix.js.map +1 -1
  30. package/dist/core/http/api-client.d.ts.map +1 -1
  31. package/dist/core/http/api-client.js +48 -68
  32. package/dist/core/http/api-client.js.map +1 -1
  33. package/dist/core/rest/platform-client/host-boundary.d.ts +114 -0
  34. package/dist/core/rest/platform-client/host-boundary.d.ts.map +1 -0
  35. package/dist/core/rest/platform-client/host-boundary.js +229 -0
  36. package/dist/core/rest/platform-client/host-boundary.js.map +1 -0
  37. package/dist/core/rest/platform-client/index.d.ts +1 -0
  38. package/dist/core/rest/platform-client/index.d.ts.map +1 -1
  39. package/dist/core/rest/platform-client/index.js +1 -0
  40. package/dist/core/rest/platform-client/index.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 +7 -0
  50. package/dist/core/rest/projects-client/agent-config.d.ts.map +1 -1
  51. package/dist/core/rest/projects-client/agent-config.js.map +1 -1
  52. package/dist/core/rest/projects-client/billing.d.ts +89 -0
  53. package/dist/core/rest/projects-client/billing.d.ts.map +1 -1
  54. package/dist/core/rest/projects-client/billing.js +43 -0
  55. package/dist/core/rest/projects-client/billing.js.map +1 -1
  56. package/dist/core/rest/projects-client/channels.d.ts +8 -27
  57. package/dist/core/rest/projects-client/channels.d.ts.map +1 -1
  58. package/dist/core/rest/projects-client/channels.js +12 -23
  59. package/dist/core/rest/projects-client/channels.js.map +1 -1
  60. package/dist/core/rest/projects-client/connectors.d.ts +162 -13
  61. package/dist/core/rest/projects-client/connectors.d.ts.map +1 -1
  62. package/dist/core/rest/projects-client/connectors.js +64 -2
  63. package/dist/core/rest/projects-client/connectors.js.map +1 -1
  64. package/dist/core/rest/projects-client/gateway.d.ts +1 -0
  65. package/dist/core/rest/projects-client/gateway.d.ts.map +1 -1
  66. package/dist/core/rest/projects-client/gateway.js.map +1 -1
  67. package/dist/core/rest/projects-client/iam.d.ts +492 -0
  68. package/dist/core/rest/projects-client/iam.d.ts.map +1 -0
  69. package/dist/core/rest/projects-client/iam.js +287 -0
  70. package/dist/core/rest/projects-client/iam.js.map +1 -0
  71. package/dist/core/rest/projects-client/index.d.ts +6 -0
  72. package/dist/core/rest/projects-client/index.d.ts.map +1 -1
  73. package/dist/core/rest/projects-client/index.js +6 -0
  74. package/dist/core/rest/projects-client/index.js.map +1 -1
  75. package/dist/core/rest/projects-client/marketplace-catalog.d.ts +9 -2
  76. package/dist/core/rest/projects-client/marketplace-catalog.d.ts.map +1 -1
  77. package/dist/core/rest/projects-client/marketplace-catalog.js +7 -0
  78. package/dist/core/rest/projects-client/marketplace-catalog.js.map +1 -1
  79. package/dist/core/rest/projects-client/presentations.d.ts +12 -0
  80. package/dist/core/rest/projects-client/presentations.d.ts.map +1 -0
  81. package/dist/core/rest/projects-client/presentations.js +9 -0
  82. package/dist/core/rest/projects-client/presentations.js.map +1 -0
  83. package/dist/core/rest/projects-client/projects.d.ts +55 -10
  84. package/dist/core/rest/projects-client/projects.d.ts.map +1 -1
  85. package/dist/core/rest/projects-client/projects.js +14 -7
  86. package/dist/core/rest/projects-client/projects.js.map +1 -1
  87. package/dist/core/rest/projects-client/public-voice-join.d.ts +59 -0
  88. package/dist/core/rest/projects-client/public-voice-join.d.ts.map +1 -0
  89. package/dist/core/rest/projects-client/public-voice-join.js +64 -0
  90. package/dist/core/rest/projects-client/public-voice-join.js.map +1 -0
  91. package/dist/core/rest/projects-client/referrals.d.ts +53 -0
  92. package/dist/core/rest/projects-client/referrals.d.ts.map +1 -0
  93. package/dist/core/rest/projects-client/referrals.js +27 -0
  94. package/dist/core/rest/projects-client/referrals.js.map +1 -0
  95. package/dist/core/rest/projects-client/session-sandbox.d.ts +2 -0
  96. package/dist/core/rest/projects-client/session-sandbox.d.ts.map +1 -1
  97. package/dist/core/rest/projects-client/session-sandbox.js +10 -0
  98. package/dist/core/rest/projects-client/session-sandbox.js.map +1 -1
  99. package/dist/core/rest/projects-client/sessions.d.ts +89 -0
  100. package/dist/core/rest/projects-client/sessions.d.ts.map +1 -1
  101. package/dist/core/rest/projects-client/sessions.js +49 -1
  102. package/dist/core/rest/projects-client/sessions.js.map +1 -1
  103. package/dist/core/session/index.d.ts +2 -0
  104. package/dist/core/session/index.d.ts.map +1 -1
  105. package/dist/core/session/index.js +2 -0
  106. package/dist/core/session/index.js.map +1 -1
  107. package/dist/core/session/presentation.d.ts +12 -0
  108. package/dist/core/session/presentation.d.ts.map +1 -0
  109. package/dist/core/session/presentation.js +70 -0
  110. package/dist/core/session/presentation.js.map +1 -0
  111. package/dist/core/session/rewind.d.ts +18 -0
  112. package/dist/core/session/rewind.d.ts.map +1 -0
  113. package/dist/core/session/rewind.js +17 -0
  114. package/dist/core/session/rewind.js.map +1 -0
  115. package/dist/core/session/runtime-transport.d.ts +16 -0
  116. package/dist/core/session/runtime-transport.d.ts.map +1 -0
  117. package/dist/core/session/runtime-transport.js +30 -0
  118. package/dist/core/session/runtime-transport.js.map +1 -0
  119. package/dist/core/session/url.d.ts +43 -0
  120. package/dist/core/session/url.d.ts.map +1 -1
  121. package/dist/core/session/url.js +81 -0
  122. package/dist/core/session/url.js.map +1 -1
  123. package/dist/core/session-sync/session-sync-controller.d.ts +28 -0
  124. package/dist/core/session-sync/session-sync-controller.d.ts.map +1 -1
  125. package/dist/core/session-sync/session-sync-controller.js +127 -4
  126. package/dist/core/session-sync/session-sync-controller.js.map +1 -1
  127. package/dist/core/stream/fetch-sse.d.ts +23 -0
  128. package/dist/core/stream/fetch-sse.d.ts.map +1 -0
  129. package/dist/core/stream/fetch-sse.js +119 -0
  130. package/dist/core/stream/fetch-sse.js.map +1 -0
  131. package/dist/core/turns/state.d.ts.map +1 -1
  132. package/dist/core/turns/state.js +11 -4
  133. package/dist/core/turns/state.js.map +1 -1
  134. package/dist/core/turns/types.d.ts +6 -0
  135. package/dist/core/turns/types.d.ts.map +1 -1
  136. package/dist/index.d.ts +6 -1
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +6 -1
  139. package/dist/index.js.map +1 -1
  140. package/dist/kortix.esm.min.js +24 -16
  141. package/dist/kortix.global.js +24 -16
  142. package/dist/node/server.d.ts +14 -0
  143. package/dist/node/server.d.ts.map +1 -1
  144. package/dist/node/server.js +42 -0
  145. package/dist/node/server.js.map +1 -1
  146. package/dist/platform/auth-core.d.ts +3 -5
  147. package/dist/platform/auth-core.d.ts.map +1 -1
  148. package/dist/platform/auth-core.js +4 -6
  149. package/dist/platform/auth-core.js.map +1 -1
  150. package/dist/react/agent-selection-scope.d.ts +8 -0
  151. package/dist/react/agent-selection-scope.d.ts.map +1 -0
  152. package/dist/react/agent-selection-scope.js +4 -0
  153. package/dist/react/agent-selection-scope.js.map +1 -0
  154. package/dist/react/index.d.ts +13 -0
  155. package/dist/react/index.d.ts.map +1 -1
  156. package/dist/react/index.js +13 -0
  157. package/dist/react/index.js.map +1 -1
  158. package/dist/react/initial-session-pin.d.ts +8 -0
  159. package/dist/react/initial-session-pin.d.ts.map +1 -0
  160. package/dist/react/initial-session-pin.js +4 -0
  161. package/dist/react/initial-session-pin.js.map +1 -0
  162. package/dist/react/opencode.d.ts +25 -2
  163. package/dist/react/opencode.d.ts.map +1 -1
  164. package/dist/react/opencode.js +24 -1
  165. package/dist/react/opencode.js.map +1 -1
  166. package/dist/react/provider-selection.d.ts +1 -0
  167. package/dist/react/provider-selection.d.ts.map +1 -1
  168. package/dist/react/provider-selection.js +22 -0
  169. package/dist/react/provider-selection.js.map +1 -1
  170. package/dist/react/run-pty-command.d.ts +5 -0
  171. package/dist/react/run-pty-command.d.ts.map +1 -0
  172. package/dist/react/run-pty-command.js +42 -0
  173. package/dist/react/run-pty-command.js.map +1 -0
  174. package/dist/react/runtime-actions.d.ts +51 -0
  175. package/dist/react/runtime-actions.d.ts.map +1 -0
  176. package/dist/react/runtime-actions.js +105 -0
  177. package/dist/react/runtime-actions.js.map +1 -0
  178. package/dist/react/session-agent-name-guard.d.ts +16 -0
  179. package/dist/react/session-agent-name-guard.d.ts.map +1 -0
  180. package/dist/react/session-agent-name-guard.js +22 -0
  181. package/dist/react/session-agent-name-guard.js.map +1 -0
  182. package/dist/react/session-busy.d.ts +8 -0
  183. package/dist/react/session-busy.d.ts.map +1 -0
  184. package/dist/react/session-busy.js +4 -0
  185. package/dist/react/session-busy.js.map +1 -0
  186. package/dist/react/session-title-sync.d.ts +19 -0
  187. package/dist/react/session-title-sync.d.ts.map +1 -0
  188. package/dist/react/session-title-sync.js +81 -0
  189. package/dist/react/session-title-sync.js.map +1 -0
  190. package/dist/react/use-acp-session-runtime.d.ts +34 -0
  191. package/dist/react/use-acp-session-runtime.d.ts.map +1 -0
  192. package/dist/react/use-acp-session-runtime.js +84 -0
  193. package/dist/react/use-acp-session-runtime.js.map +1 -0
  194. package/dist/react/use-admin-accounts.d.ts +122 -0
  195. package/dist/react/use-admin-accounts.d.ts.map +1 -0
  196. package/dist/react/use-admin-accounts.js +146 -0
  197. package/dist/react/use-admin-accounts.js.map +1 -0
  198. package/dist/react/use-admin-analytics.d.ts +332 -0
  199. package/dist/react/use-admin-analytics.d.ts.map +1 -0
  200. package/dist/react/use-admin-analytics.js +518 -0
  201. package/dist/react/use-admin-analytics.js.map +1 -0
  202. package/dist/react/use-admin-billing.d.ts +27 -0
  203. package/dist/react/use-admin-billing.d.ts.map +1 -0
  204. package/dist/react/use-admin-billing.js +61 -0
  205. package/dist/react/use-admin-billing.js.map +1 -0
  206. package/dist/react/use-admin-feedback.d.ts +119 -0
  207. package/dist/react/use-admin-feedback.d.ts.map +1 -0
  208. package/dist/react/use-admin-feedback.js +148 -0
  209. package/dist/react/use-admin-feedback.js.map +1 -0
  210. package/dist/react/use-admin-sandboxes.d.ts +157 -0
  211. package/dist/react/use-admin-sandboxes.d.ts.map +1 -0
  212. package/dist/react/use-admin-sandboxes.js +145 -0
  213. package/dist/react/use-admin-sandboxes.js.map +1 -0
  214. package/dist/react/use-admin-users.d.ts +98 -0
  215. package/dist/react/use-admin-users.d.ts.map +1 -0
  216. package/dist/react/use-admin-users.js +121 -0
  217. package/dist/react/use-admin-users.js.map +1 -0
  218. package/dist/react/use-authenticated-preview-url.d.ts +24 -0
  219. package/dist/react/use-authenticated-preview-url.d.ts.map +1 -0
  220. package/dist/react/use-authenticated-preview-url.js +137 -0
  221. package/dist/react/use-authenticated-preview-url.js.map +1 -0
  222. package/dist/react/use-canonical-opencode-session.d.ts +4 -0
  223. package/dist/react/use-canonical-opencode-session.d.ts.map +1 -1
  224. package/dist/react/use-canonical-opencode-session.js +9 -4
  225. package/dist/react/use-canonical-opencode-session.js.map +1 -1
  226. package/dist/react/use-model-defaults.d.ts +22 -0
  227. package/dist/react/use-model-defaults.d.ts.map +1 -0
  228. package/dist/react/use-model-defaults.js +104 -0
  229. package/dist/react/use-model-defaults.js.map +1 -0
  230. package/dist/react/use-model-store.d.ts.map +1 -1
  231. package/dist/react/use-model-store.js +11 -0
  232. package/dist/react/use-model-store.js.map +1 -1
  233. package/dist/react/use-opencode-events/index.d.ts +3 -1
  234. package/dist/react/use-opencode-events/index.d.ts.map +1 -1
  235. package/dist/react/use-opencode-events/index.js +6 -2
  236. package/dist/react/use-opencode-events/index.js.map +1 -1
  237. package/dist/react/use-opencode-local.d.ts.map +1 -1
  238. package/dist/react/use-opencode-local.js +10 -1
  239. package/dist/react/use-opencode-local.js.map +1 -1
  240. package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -1
  241. package/dist/react/use-opencode-sessions/agents.js +5 -3
  242. package/dist/react/use-opencode-sessions/agents.js.map +1 -1
  243. package/dist/react/use-opencode-sessions/commands.d.ts +7 -2
  244. package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -1
  245. package/dist/react/use-opencode-sessions/commands.js +13 -9
  246. package/dist/react/use-opencode-sessions/commands.js.map +1 -1
  247. package/dist/react/use-opencode-sessions/provider-load-plan.d.ts +6 -0
  248. package/dist/react/use-opencode-sessions/provider-load-plan.d.ts.map +1 -0
  249. package/dist/react/use-opencode-sessions/provider-load-plan.js +4 -0
  250. package/dist/react/use-opencode-sessions/provider-load-plan.js.map +1 -0
  251. package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -1
  252. package/dist/react/use-opencode-sessions/providers.js +39 -27
  253. package/dist/react/use-opencode-sessions/providers.js.map +1 -1
  254. package/dist/react/use-opencode-sessions/sessions.d.ts +1 -1
  255. package/dist/react/use-opencode-sessions/sessions.d.ts.map +1 -1
  256. package/dist/react/use-opencode-sessions/sessions.js +2 -2
  257. package/dist/react/use-opencode-sessions/sessions.js.map +1 -1
  258. package/dist/react/use-ops-overview.d.ts +64 -0
  259. package/dist/react/use-ops-overview.d.ts.map +1 -0
  260. package/dist/react/use-ops-overview.js +16 -0
  261. package/dist/react/use-ops-overview.js.map +1 -0
  262. package/dist/react/use-session-model-selection.d.ts +15 -0
  263. package/dist/react/use-session-model-selection.d.ts.map +1 -0
  264. package/dist/react/use-session-model-selection.js +27 -0
  265. package/dist/react/use-session-model-selection.js.map +1 -0
  266. package/dist/react/use-session-sync.d.ts.map +1 -1
  267. package/dist/react/use-session-sync.js +3 -1
  268. package/dist/react/use-session-sync.js.map +1 -1
  269. package/dist/react/use-session.d.ts +78 -4
  270. package/dist/react/use-session.d.ts.map +1 -1
  271. package/dist/react/use-session.js +329 -34
  272. package/dist/react/use-session.js.map +1 -1
  273. package/dist/react/use-system-status.d.ts +39 -0
  274. package/dist/react/use-system-status.d.ts.map +1 -0
  275. package/dist/react/use-system-status.js +68 -0
  276. package/dist/react/use-system-status.js.map +1 -0
  277. package/dist/react/use-teams-installations.d.ts +36 -0
  278. package/dist/react/use-teams-installations.d.ts.map +1 -0
  279. package/dist/react/use-teams-installations.js +94 -0
  280. package/dist/react/use-teams-installations.js.map +1 -0
  281. package/dist/react/use-tunnel.d.ts +120 -0
  282. package/dist/react/use-tunnel.d.ts.map +1 -0
  283. package/dist/react/use-tunnel.js +268 -0
  284. package/dist/react/use-tunnel.js.map +1 -0
  285. package/package.json +2 -2
@@ -0,0 +1,105 @@
1
+ 'use client';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { useMemo } from 'react';
4
+ import { getClient } from '../core/runtime/client.js';
5
+ import { deriveSubdomainOpts, getActiveOpenCodeUrl, } from '../browser/stores/server-store.js';
6
+ import { buildStaticFileHealthPreviewUrl, buildStaticFilePreviewUrl, hasPreviewTarget, } from '../core/session/url.js';
7
+ import { useCurrentRuntime } from './use-current-runtime.js';
8
+ import { opencodeKeys, useOpenCodeRuntimeReady } from './use-opencode-sessions/keys.js';
9
+ function unwrapRuntimeResult(result) {
10
+ if (result.error) {
11
+ const error = result.error;
12
+ throw new Error(error.data?.message || error.message || 'Runtime request failed');
13
+ }
14
+ return result.data;
15
+ }
16
+ export function getRuntimeProjectInfo() {
17
+ return getClient().project.current().then(unwrapRuntimeResult);
18
+ }
19
+ export function getRuntimePathInfo() {
20
+ return getClient().path.get().then(unwrapRuntimeResult);
21
+ }
22
+ export function readRuntimeTextFile(path) {
23
+ return getClient().file.read({ path }).then(unwrapRuntimeResult);
24
+ }
25
+ export function getRuntimeProviderAuthMethods() {
26
+ return getClient().provider.auth().then(unwrapRuntimeResult);
27
+ }
28
+ export function authorizeRuntimeProvider(providerID, method) {
29
+ return getClient().provider.oauth.authorize({ providerID, method }).then(unwrapRuntimeResult);
30
+ }
31
+ export function completeRuntimeProviderOAuth(providerID, method, code) {
32
+ return getClient().provider.oauth.callback({
33
+ providerID,
34
+ method,
35
+ ...(code ? { code } : {}),
36
+ }).then(unwrapRuntimeResult);
37
+ }
38
+ export function setRuntimeProviderApiKey(providerID, key) {
39
+ return getClient().auth.set({
40
+ providerID,
41
+ auth: { type: 'api', key },
42
+ }).then(unwrapRuntimeResult);
43
+ }
44
+ export function getRuntimeConfig() {
45
+ return getClient().global.config.get().then(unwrapRuntimeResult);
46
+ }
47
+ export function updateRuntimeConfig(config) {
48
+ return getClient().global.config.update({ config }).then(unwrapRuntimeResult);
49
+ }
50
+ export async function refreshRuntimeConfiguration() {
51
+ unwrapRuntimeResult(await getClient().global.dispose());
52
+ }
53
+ export function logRuntimeEvent(input) {
54
+ void getClient().app.log(input);
55
+ }
56
+ /** Opaque identity for caches that must reset when the active runtime changes. */
57
+ export function getRuntimeCacheKey() {
58
+ return getActiveOpenCodeUrl();
59
+ }
60
+ export function createActiveSandboxProxyContext() {
61
+ const subdomainOpts = deriveSubdomainOpts();
62
+ return {
63
+ serverUrl: getActiveOpenCodeUrl(),
64
+ subdomainOpts,
65
+ isReady: hasPreviewTarget(subdomainOpts),
66
+ };
67
+ }
68
+ /**
69
+ * Reactive form of `createActiveSandboxProxyContext`.
70
+ *
71
+ * The plain factory reads ambient state once. Anything that *renders* from it
72
+ * must re-read when the runtime binds, because the binding is asynchronous: a
73
+ * transcript paints as soon as messages load, which is routinely before
74
+ * `ensureReady()` resolves the sandbox. A component that memoized the factory's
75
+ * result on mount froze `sandboxId: ''` for its whole life and emitted
76
+ * `/v1/p//3000/` preview links forever after.
77
+ *
78
+ * `version` bumps on every `setCurrentRuntime`, so it is the exact invalidation
79
+ * signal — including the session-switch case, where the id changes but the
80
+ * shape does not.
81
+ */
82
+ export function useActiveSandboxProxyContext() {
83
+ const version = useCurrentRuntime((state) => state.version);
84
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- `version` IS the dep;
85
+ // the factory reads module state that only changes when version bumps.
86
+ return useMemo(() => createActiveSandboxProxyContext(), [version]);
87
+ }
88
+ export function getActiveStaticFilePreviewUrl(path) {
89
+ return buildStaticFilePreviewUrl(path, deriveSubdomainOpts()) ?? '';
90
+ }
91
+ export function getActiveStaticFileHealthUrl() {
92
+ return buildStaticFileHealthPreviewUrl(deriveSubdomainOpts());
93
+ }
94
+ export function useRuntimeProjectInfo(options) {
95
+ const runtimeReady = useOpenCodeRuntimeReady();
96
+ return useQuery({
97
+ queryKey: opencodeKeys.currentProject(),
98
+ queryFn: getRuntimeProjectInfo,
99
+ enabled: runtimeReady && options?.enabled !== false,
100
+ staleTime: Infinity,
101
+ gcTime: 5 * 60_000,
102
+ refetchOnWindowFocus: false,
103
+ });
104
+ }
105
+ //# sourceMappingURL=runtime-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-actions.js","sourceRoot":"","sources":["../../src/react/runtime-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Idempotency guard for `setSessionAgentName`.
3
+ *
4
+ * `setSessionAgentName` writes to a `useSyncExternalStore`-backed store whose
5
+ * snapshot identity changes on every write (a fresh `sessionAgentName` record).
6
+ * Without a read-then-write guard, any render/effect path that re-fires the
7
+ * setter with the SAME value drives an infinite render loop — React #185
8
+ * ("Maximum update depth exceeded"). See Better Stack pattern
9
+ * `351da94339c2eed61380ce8ef1c9e78c7afed102bc18707ef65c36f3049887eb`, which
10
+ * surfaced as `Object.setSessionAgentName` in the co-worker session page.
11
+ *
12
+ * Returning `false` here (no-op when the value is unchanged) is what breaks
13
+ * the loop: no store mutation → no snapshot change → no re-render → no re-fire.
14
+ */
15
+ export declare function shouldSetSessionAgentName(current: string | undefined, next: string | undefined): boolean;
16
+ //# sourceMappingURL=session-agent-name-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-agent-name-guard.d.ts","sourceRoot":"","sources":["../../src/react/session-agent-name-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAMT"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Idempotency guard for `setSessionAgentName`.
3
+ *
4
+ * `setSessionAgentName` writes to a `useSyncExternalStore`-backed store whose
5
+ * snapshot identity changes on every write (a fresh `sessionAgentName` record).
6
+ * Without a read-then-write guard, any render/effect path that re-fires the
7
+ * setter with the SAME value drives an infinite render loop — React #185
8
+ * ("Maximum update depth exceeded"). See Better Stack pattern
9
+ * `351da94339c2eed61380ce8ef1c9e78c7afed102bc18707ef65c36f3049887eb`, which
10
+ * surfaced as `Object.setSessionAgentName` in the co-worker session page.
11
+ *
12
+ * Returning `false` here (no-op when the value is unchanged) is what breaks
13
+ * the loop: no store mutation → no snapshot change → no re-render → no re-fire.
14
+ */
15
+ export function shouldSetSessionAgentName(current, next) {
16
+ // Normalize so `undefined` (delete) and `''` (falsy → delete) are treated as
17
+ // the same "clear" intent, matching the setter's `if (name) ... else delete`.
18
+ const normalizedNext = next ? next : undefined;
19
+ const normalizedCurrent = current ? current : undefined;
20
+ return normalizedNext !== normalizedCurrent;
21
+ }
22
+ //# sourceMappingURL=session-agent-name-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-agent-name-guard.js","sourceRoot":"","sources":["../../src/react/session-agent-name-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAA2B,EAC3B,IAAwB;IAExB,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,MAAM,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,OAAO,cAAc,KAAK,iBAAiB,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface SessionBusyInput {
2
+ syncBusy: boolean;
3
+ hasPendingText: boolean;
4
+ usesAcp: boolean;
5
+ acpSending: boolean;
6
+ }
7
+ export declare function resolveSessionBusy(input: SessionBusyInput): boolean;
8
+ //# sourceMappingURL=session-busy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-busy.d.ts","sourceRoot":"","sources":["../../src/react/session-busy.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAEnE"}
@@ -0,0 +1,4 @@
1
+ export function resolveSessionBusy(input) {
2
+ return input.syncBusy || input.hasPendingText || (input.usesAcp && input.acpSending);
3
+ }
4
+ //# sourceMappingURL=session-busy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-busy.js","sourceRoot":"","sources":["../../src/react/session-busy.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,kBAAkB,CAAC,KAAuB;IACxD,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACvF,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { QueryClient } from '@tanstack/react-query';
2
+ type SessionTitleQueryClient = Pick<QueryClient, 'getQueryData' | 'refetchQueries'>;
3
+ interface SessionTitleRefreshOptions {
4
+ delaysMs?: number[];
5
+ signal?: AbortSignal;
6
+ sleep?: (delayMs: number, signal?: AbortSignal) => Promise<void>;
7
+ }
8
+ export declare function readAcpSessionTitle(sessionInfo: Record<string, unknown> | null): string | null;
9
+ /**
10
+ * Refetch the authoritative Kortix session until its generated title appears.
11
+ *
12
+ * OpenCode generates titles asynchronously. ACP does not guarantee a
13
+ * session_info_update notification, so runtime events are only a fast path.
14
+ * This bounded loop covers both ACP and REST without permanent sidebar polling.
15
+ */
16
+ export declare function refreshSessionTitleQueryUntilResolved(queryClient: SessionTitleQueryClient, projectId: string, sessionId: string, options?: SessionTitleRefreshOptions): Promise<boolean>;
17
+ export declare function syncAcpSessionTitleQuery(queryClient: Pick<QueryClient, 'refetchQueries'>, projectId: string, sessionId: string, sessionInfo: Record<string, unknown> | null): void;
18
+ export {};
19
+ //# sourceMappingURL=session-title-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-title-sync.d.ts","sourceRoot":"","sources":["../../src/react/session-title-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,KAAK,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAC;AAEpF,UAAU,0BAA0B;IAClC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAUD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE9F;AAsDD;;;;;;GAMG;AACH,wBAAsB,qCAAqC,CACzD,WAAW,EAAE,uBAAuB,EACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAChD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC1C,IAAI,CAGN"}
@@ -0,0 +1,81 @@
1
+ const DEFAULT_TITLE_REFRESH_DELAYS_MS = [0, 5_000, 5_000, 10_000, 10_000, 15_000, 20_000];
2
+ function readRealTitle(value) {
3
+ const title = typeof value === 'string' ? value.trim() : '';
4
+ if (!title || /^new session\b/i.test(title))
5
+ return null;
6
+ return title;
7
+ }
8
+ export function readAcpSessionTitle(sessionInfo) {
9
+ return readRealTitle(sessionInfo?.title);
10
+ }
11
+ function cachedSessionHasTitle(queryClient, projectId, sessionId) {
12
+ const list = queryClient.getQueryData(['project-sessions', projectId]);
13
+ const detail = queryClient.getQueryData(['project-session', projectId, sessionId]);
14
+ const candidates = [...(Array.isArray(list) ? list : []), detail];
15
+ return candidates.some((candidate) => {
16
+ if (!candidate || typeof candidate !== 'object')
17
+ return false;
18
+ const session = candidate;
19
+ const candidateId = typeof session.session_id === 'string'
20
+ ? session.session_id
21
+ : typeof session.sessionId === 'string'
22
+ ? session.sessionId
23
+ : null;
24
+ if (candidateId !== sessionId)
25
+ return false;
26
+ return Boolean(readRealTitle(session.custom_name) || readRealTitle(session.name));
27
+ });
28
+ }
29
+ function refetchSessionTitleQueries(queryClient, projectId, sessionId) {
30
+ return Promise.all([
31
+ queryClient.refetchQueries({
32
+ queryKey: ['project-sessions', projectId],
33
+ type: 'active',
34
+ }),
35
+ queryClient.refetchQueries({
36
+ queryKey: ['project-session', projectId, sessionId],
37
+ type: 'active',
38
+ }),
39
+ ]);
40
+ }
41
+ function sleep(delayMs, signal) {
42
+ if (delayMs <= 0 || signal?.aborted)
43
+ return Promise.resolve();
44
+ return new Promise((resolve) => {
45
+ const finish = () => {
46
+ clearTimeout(timer);
47
+ signal?.removeEventListener('abort', finish);
48
+ resolve();
49
+ };
50
+ const timer = setTimeout(finish, delayMs);
51
+ signal?.addEventListener('abort', finish, { once: true });
52
+ });
53
+ }
54
+ /**
55
+ * Refetch the authoritative Kortix session until its generated title appears.
56
+ *
57
+ * OpenCode generates titles asynchronously. ACP does not guarantee a
58
+ * session_info_update notification, so runtime events are only a fast path.
59
+ * This bounded loop covers both ACP and REST without permanent sidebar polling.
60
+ */
61
+ export async function refreshSessionTitleQueryUntilResolved(queryClient, projectId, sessionId, options = {}) {
62
+ const delays = options.delaysMs ?? DEFAULT_TITLE_REFRESH_DELAYS_MS;
63
+ const wait = options.sleep ?? sleep;
64
+ for (const delayMs of delays) {
65
+ await wait(delayMs, options.signal);
66
+ if (options.signal?.aborted)
67
+ return false;
68
+ if (cachedSessionHasTitle(queryClient, projectId, sessionId))
69
+ return true;
70
+ await refetchSessionTitleQueries(queryClient, projectId, sessionId);
71
+ if (cachedSessionHasTitle(queryClient, projectId, sessionId))
72
+ return true;
73
+ }
74
+ return false;
75
+ }
76
+ export function syncAcpSessionTitleQuery(queryClient, projectId, sessionId, sessionInfo) {
77
+ if (!readAcpSessionTitle(sessionInfo))
78
+ return;
79
+ void refetchSessionTitleQueries(queryClient, projectId, sessionId);
80
+ }
81
+ //# sourceMappingURL=session-title-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-title-sync.js","sourceRoot":"","sources":["../../src/react/session-title-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type AcpContentBlock } from '../core/acp/index.js';
2
+ export declare function cancelAcpSession(controller: {
3
+ cancel(): Promise<void>;
4
+ } | null): Promise<void>;
5
+ export declare function useAcpSessionRuntime(input: {
6
+ runtimeUrl: string | null;
7
+ sessionId: string | null;
8
+ enabled: boolean;
9
+ }): {
10
+ rewindState: {
11
+ messageId: string;
12
+ } | null;
13
+ send: (prompt: AcpContentBlock[], options?: {
14
+ model?: string | null;
15
+ agent?: string | null;
16
+ }) => Promise<void>;
17
+ cancel: () => Promise<void>;
18
+ runCommand: (command: string, args: string, options?: {
19
+ model?: string | null;
20
+ agent?: string | null;
21
+ }) => Promise<void>;
22
+ rewind: (messageId: string) => Promise<void>;
23
+ restoreRewind: () => Promise<void>;
24
+ answerPermission: (requestId: string, reply: "once" | "always" | "reject") => Promise<void>;
25
+ answerQuestion: (requestId: string, answers: string[][]) => Promise<void>;
26
+ rejectQuestion: (requestId: string) => Promise<void>;
27
+ ready: boolean;
28
+ sending: boolean;
29
+ connection: "idle" | "connecting" | "open" | "closed" | "error";
30
+ error: Error | null;
31
+ projection: import("../index.js").AcpProjection;
32
+ configOptions: Array<Record<string, unknown>>;
33
+ };
34
+ //# sourceMappingURL=use-acp-session-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-acp-session-runtime.d.ts","sourceRoot":"","sources":["../../src/react/use-acp-session-runtime.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,aAAa,CAAC;AAarB,wBAAsB,gBAAgB,CACpC,UAAU,EAAE;IAAE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,IAAI,GAC7C,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;;;;mBAyBY,eAAe,EAAE,YAAY;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;;0BAU5E,MAAM,QAAQ,MAAM,YAAY;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;wBAO9E,MAAM;;kCAWN,MAAM,SAAS,MAAM,GAAG,QAAQ,GAAG,QAAQ;gCAO3C,MAAM,WAAW,MAAM,EAAE,EAAE;gCAO3B,MAAM;;;;;;;EAmBrB"}
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+ import { useCallback, useEffect, useMemo, useSyncExternalStore } from 'react';
3
+ import { createAcpProjection, createAcpSessionController, } from '../core/acp/index.js';
4
+ const EMPTY_SNAPSHOT = {
5
+ ready: false,
6
+ sending: false,
7
+ connection: 'idle',
8
+ error: null,
9
+ projection: createAcpProjection(''),
10
+ configOptions: [],
11
+ rewind: null,
12
+ };
13
+ const noopSubscribe = () => () => { };
14
+ export async function cancelAcpSession(controller) {
15
+ if (!controller)
16
+ return;
17
+ await controller.cancel();
18
+ }
19
+ export function useAcpSessionRuntime(input) {
20
+ const controller = useMemo(() => input.runtimeUrl && input.sessionId
21
+ ? createAcpSessionController({
22
+ runtimeUrl: input.runtimeUrl,
23
+ sessionId: input.sessionId,
24
+ })
25
+ : null, [input.runtimeUrl, input.sessionId]);
26
+ useEffect(() => {
27
+ if (!input.enabled || !controller)
28
+ return;
29
+ void controller.connect().catch(() => { });
30
+ return () => controller.close();
31
+ }, [controller, input.enabled]);
32
+ const snapshot = useSyncExternalStore(controller?.subscribe ?? noopSubscribe, controller?.getSnapshot ?? (() => EMPTY_SNAPSHOT), controller?.getSnapshot ?? (() => EMPTY_SNAPSHOT));
33
+ const send = useCallback((prompt, options) => {
34
+ if (!controller)
35
+ throw new Error('ACP session runtime is not ready');
36
+ return controller.send(prompt, options);
37
+ }, [controller]);
38
+ const cancel = useCallback(async () => {
39
+ await cancelAcpSession(controller);
40
+ }, [controller]);
41
+ const runCommand = useCallback((command, args, options) => {
42
+ if (!controller)
43
+ throw new Error('ACP session runtime is not ready');
44
+ return controller.runCommand(command, args, options);
45
+ }, [controller]);
46
+ const rewind = useCallback((messageId) => {
47
+ if (!controller)
48
+ throw new Error('ACP session runtime is not ready');
49
+ return controller.rewind(messageId);
50
+ }, [controller]);
51
+ const restoreRewind = useCallback(() => {
52
+ if (!controller)
53
+ throw new Error('ACP session runtime is not ready');
54
+ return controller.restoreRewind();
55
+ }, [controller]);
56
+ const answerPermission = useCallback((requestId, reply) => {
57
+ if (!controller)
58
+ throw new Error('ACP session runtime is not ready');
59
+ return controller.answerPermission(requestId, reply);
60
+ }, [controller]);
61
+ const answerQuestion = useCallback((requestId, answers) => {
62
+ if (!controller)
63
+ throw new Error('ACP session runtime is not ready');
64
+ return controller.answerQuestion(requestId, answers);
65
+ }, [controller]);
66
+ const rejectQuestion = useCallback((requestId) => {
67
+ if (!controller)
68
+ throw new Error('ACP session runtime is not ready');
69
+ return controller.rejectQuestion(requestId);
70
+ }, [controller]);
71
+ return {
72
+ ...snapshot,
73
+ rewindState: snapshot.rewind,
74
+ send,
75
+ cancel,
76
+ runCommand,
77
+ rewind,
78
+ restoreRewind,
79
+ answerPermission,
80
+ answerQuestion,
81
+ rejectQuestion,
82
+ };
83
+ }
84
+ //# sourceMappingURL=use-acp-session-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-acp-session-runtime.js","sourceRoot":"","sources":["../../src/react/use-acp-session-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ export interface AdminAccount {
2
+ accountId: string;
3
+ name: string | null;
4
+ ownerEmail: string | null;
5
+ memberCount: number;
6
+ balance: string | null;
7
+ expiringCredits: string | null;
8
+ nonExpiringCredits: string | null;
9
+ dailyCreditsBalance: string | null;
10
+ tier: string | null;
11
+ paymentStatus: string | null;
12
+ provider: string | null;
13
+ planType: string | null;
14
+ stripeSubscriptionId: string | null;
15
+ billingCustomerId: string | null;
16
+ billingCustomerEmail: string | null;
17
+ createdAt: string | null;
18
+ }
19
+ export interface AdminAccountsSummary {
20
+ totalCredits: string;
21
+ paidCount: number;
22
+ negativeCount: number;
23
+ pastDueCount: number;
24
+ }
25
+ export interface AdminAccountsResponse {
26
+ accounts: AdminAccount[];
27
+ total: number;
28
+ page: number;
29
+ limit: number;
30
+ summary: AdminAccountsSummary | null;
31
+ error?: string;
32
+ }
33
+ export interface AdminAccountUser {
34
+ user_id: string;
35
+ email: string;
36
+ account_role: string;
37
+ signed_up_at: string | null;
38
+ last_sign_in_at: string | null;
39
+ email_confirmed_at: string | null;
40
+ banned_until: string | null;
41
+ provider: string | null;
42
+ providers: string[] | null;
43
+ }
44
+ export interface AdminAccountSandbox {
45
+ sandboxId: string;
46
+ name: string | null;
47
+ provider: string | null;
48
+ externalId: string | null;
49
+ status: string | null;
50
+ baseUrl: string | null;
51
+ metadata: unknown;
52
+ createdAt: string;
53
+ updatedAt: string;
54
+ lastUsedAt: string | null;
55
+ }
56
+ export type AdminAccountsSortBy = 'balance' | 'members' | 'name' | 'created';
57
+ export type AdminAccountsSortDir = 'asc' | 'desc';
58
+ export interface AdminAccountsFilters {
59
+ search?: string;
60
+ tier?: string[];
61
+ paymentStatus?: string[];
62
+ paidOnly?: boolean;
63
+ hasSubscription?: boolean | null;
64
+ minBalance?: number | null;
65
+ maxBalance?: number | null;
66
+ sortBy?: AdminAccountsSortBy;
67
+ sortDir?: AdminAccountsSortDir;
68
+ page?: number;
69
+ limit?: number;
70
+ }
71
+ export declare function useAdminAccounts(filters?: AdminAccountsFilters): import("@tanstack/react-query").UseQueryResult<NoInfer<AdminAccountsResponse>, Error>;
72
+ export declare function useAdminAccountUsers(accountId: string | null): import("@tanstack/react-query").UseQueryResult<NoInfer<{
73
+ users: AdminAccountUser[];
74
+ }>, Error>;
75
+ export declare function useAdminGrantCredits(): import("@tanstack/react-query").UseMutationResult<unknown, Error, {
76
+ accountId: string;
77
+ amount: number;
78
+ description: string;
79
+ isExpiring: boolean;
80
+ }, unknown>;
81
+ export declare function useAdminDebitCredits(): import("@tanstack/react-query").UseMutationResult<unknown, Error, {
82
+ accountId: string;
83
+ amount: number;
84
+ description: string;
85
+ }, unknown>;
86
+ export declare function useAdminSetTier(): import("@tanstack/react-query").UseMutationResult<unknown, Error, {
87
+ accountId: string;
88
+ tier: string;
89
+ }, unknown>;
90
+ export interface AdminLedgerEntry {
91
+ id: string;
92
+ amount: string;
93
+ balanceAfter: string;
94
+ type: string;
95
+ description: string | null;
96
+ isExpiring: boolean | null;
97
+ createdAt: string | null;
98
+ createdBy: string | null;
99
+ }
100
+ export declare function useAdminAccountLedger(accountId: string | null, limit?: number): import("@tanstack/react-query").UseQueryResult<NoInfer<{
101
+ entries: AdminLedgerEntry[];
102
+ }>, Error>;
103
+ export interface AdminAccountProject {
104
+ projectId: string;
105
+ name: string;
106
+ status: string | null;
107
+ repoUrl: string | null;
108
+ defaultBranch: string | null;
109
+ createdAt: string | null;
110
+ updatedAt: string | null;
111
+ lastOpenedAt: string | null;
112
+ sessionCount: number;
113
+ activeSessionCount: number;
114
+ lastSessionAt: string | null;
115
+ }
116
+ export declare function useAdminAccountProjects(accountId: string | null): import("@tanstack/react-query").UseQueryResult<NoInfer<{
117
+ projects: AdminAccountProject[];
118
+ }>, Error>;
119
+ export declare function useAdminAccountSandboxes(accountId: string | null): import("@tanstack/react-query").UseQueryResult<NoInfer<{
120
+ sandboxes: AdminAccountSandbox[];
121
+ }>, Error>;
122
+ //# sourceMappingURL=use-admin-accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-admin-accounts.d.ts","sourceRoot":"","sources":["../../src/react/use-admin-accounts.ts"],"names":[],"mappings":"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"}