@beeuni/sdk 0.1.0 → 0.3.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 (291) hide show
  1. package/README.md +53 -92
  2. package/dist/beeuni.esm.min.js +36 -34
  3. package/dist/beeuni.global.js +36 -34
  4. package/dist/browser/cache/idb-sync-cache.js +15 -5
  5. package/dist/browser/session-sync/server-transcript-mirror.d.ts +7 -1
  6. package/dist/browser/session-sync/server-transcript-mirror.js +30 -24
  7. package/dist/browser/session-sync/session-sync-registry.d.ts +3 -1
  8. package/dist/browser/session-sync/session-sync-registry.js +48 -3
  9. package/dist/browser/stores/sync-store/keep-unchanged.d.ts +4 -0
  10. package/dist/browser/stores/sync-store/keep-unchanged.js +34 -0
  11. package/dist/browser/stores/sync-store.d.ts +7 -0
  12. package/dist/browser/stores/sync-store.js +122 -35
  13. package/dist/core/attachments/prompt-attachments.d.ts +4 -0
  14. package/dist/core/attachments/prompt-attachments.js +34 -0
  15. package/dist/core/capture/rules.d.ts +17 -0
  16. package/dist/core/capture/rules.js +27 -0
  17. package/dist/core/client/beeuni.d.ts +99 -34
  18. package/dist/core/client/beeuni.js +5 -11
  19. package/dist/core/client/capture.d.ts +105 -0
  20. package/dist/core/client/capture.js +48 -0
  21. package/dist/core/client/facade-catalog.d.ts +0 -4
  22. package/dist/core/client/facade-catalog.js +1 -5
  23. package/dist/core/client/facade-identity.d.ts +1 -0
  24. package/dist/core/client/facade-identity.js +1 -0
  25. package/dist/core/client/project-access-resources.d.ts +3 -1
  26. package/dist/core/client/project-access-resources.js +1 -1
  27. package/dist/core/client/project-connections.d.ts +2 -2
  28. package/dist/core/client/project-connections.js +2 -2
  29. package/dist/core/client/project-operations-admin.d.ts +4 -4
  30. package/dist/core/client/project-operations-review.d.ts +2 -3
  31. package/dist/core/client/project-operations-review.js +1 -0
  32. package/dist/core/client/project-operations-workspace.d.ts +4 -4
  33. package/dist/core/client/project-operations-workspace.js +1 -1
  34. package/dist/core/client/project-operations.d.ts +9 -19
  35. package/dist/core/client/project-operations.js +2 -6
  36. package/dist/core/client/project-platform-security.d.ts +1 -1
  37. package/dist/core/client/project-platform-settings.d.ts +1 -1
  38. package/dist/core/client/session-context.d.ts +2 -0
  39. package/dist/core/client/session-handle.d.ts +13 -0
  40. package/dist/core/client/session-lifecycle-resources.d.ts +11 -0
  41. package/dist/core/client/session-lifecycle-resources.js +4 -0
  42. package/dist/core/client/session-lifecycle-security.d.ts +2 -0
  43. package/dist/core/client/session-lifecycle-security.js +1 -0
  44. package/dist/core/client/session-readiness.d.ts +2 -0
  45. package/dist/core/client/session-readiness.js +20 -1
  46. package/dist/core/http/api-client.d.ts +1 -7
  47. package/dist/core/http/api-client.js +2 -37
  48. package/dist/core/http/auth.d.ts +2 -4
  49. package/dist/core/http/auth.js +2 -8
  50. package/dist/core/http/config.d.ts +2 -0
  51. package/dist/core/http/response-error.js +26 -11
  52. package/dist/core/http/transport.js +6 -1
  53. package/dist/core/models/composer-model.d.ts +14 -0
  54. package/dist/core/models/composer-model.js +21 -1
  55. package/dist/core/rest/platform-client/capture.d.ts +363 -0
  56. package/dist/core/rest/platform-client/capture.js +116 -0
  57. package/dist/core/rest/platform-client/client-policy.d.ts +8 -0
  58. package/dist/core/rest/platform-client/client-policy.js +30 -0
  59. package/dist/core/rest/platform-client/index.d.ts +4 -4
  60. package/dist/core/rest/platform-client/index.js +4 -4
  61. package/dist/core/rest/platform-client/lifecycle.js +18 -12
  62. package/dist/core/rest/platform-client/shared.d.ts +5 -0
  63. package/dist/core/rest/platform-client/shared.js +18 -0
  64. package/dist/core/rest/platform-client/types.d.ts +1 -1
  65. package/dist/core/rest/projects-client/account-secret-resources.d.ts +2 -1
  66. package/dist/core/rest/projects-client/accounts.d.ts +34 -0
  67. package/dist/core/rest/projects-client/accounts.js +10 -0
  68. package/dist/core/rest/projects-client/admin-providers.d.ts +0 -61
  69. package/dist/core/rest/projects-client/admin-providers.js +0 -6
  70. package/dist/core/rest/projects-client/agent-config.d.ts +3 -0
  71. package/dist/core/rest/projects-client/apps-fleet.d.ts +5 -1
  72. package/dist/core/rest/projects-client/apps-fleet.js +2 -2
  73. package/dist/core/rest/projects-client/apps.d.ts +11 -1
  74. package/dist/core/rest/projects-client/change-requests.d.ts +2 -0
  75. package/dist/core/rest/projects-client/change-requests.js +2 -0
  76. package/dist/core/rest/projects-client/connectors.d.ts +13 -55
  77. package/dist/core/rest/projects-client/connectors.js +5 -29
  78. package/dist/core/rest/projects-client/files.d.ts +3 -0
  79. package/dist/core/rest/projects-client/files.js +4 -0
  80. package/dist/core/rest/projects-client/gateway.d.ts +5 -0
  81. package/dist/core/rest/projects-client/git-backend.d.ts +1 -10
  82. package/dist/core/rest/projects-client/git-backend.js +0 -10
  83. package/dist/core/rest/projects-client/iam-actions.d.ts +76 -0
  84. package/dist/core/rest/projects-client/iam-actions.js +101 -0
  85. package/dist/core/rest/projects-client/iam-sso.d.ts +0 -10
  86. package/dist/core/rest/projects-client/iam-sso.js +0 -3
  87. package/dist/core/rest/projects-client/iam.d.ts +1 -0
  88. package/dist/core/rest/projects-client/iam.js +1 -0
  89. package/dist/core/rest/projects-client/index.d.ts +1 -4
  90. package/dist/core/rest/projects-client/index.js +1 -4
  91. package/dist/core/rest/projects-client/notifications.d.ts +1 -1
  92. package/dist/core/rest/projects-client/notifications.js +4 -0
  93. package/dist/core/rest/projects-client/projects.d.ts +4 -2
  94. package/dist/core/rest/projects-client/projects.js +4 -2
  95. package/dist/core/rest/projects-client/review-items.d.ts +2 -0
  96. package/dist/core/rest/projects-client/review-items.js +4 -0
  97. package/dist/core/rest/projects-client/review.d.ts +17 -3
  98. package/dist/core/rest/projects-client/review.js +11 -0
  99. package/dist/core/rest/projects-client/sandbox.d.ts +8 -9
  100. package/dist/core/rest/projects-client/secrets.d.ts +3 -0
  101. package/dist/core/rest/projects-client/session-attachments.js +14 -1
  102. package/dist/core/rest/projects-client/session-sandbox.d.ts +1 -1
  103. package/dist/core/rest/projects-client/sessions.d.ts +31 -4
  104. package/dist/core/rest/projects-client/sessions.js +34 -4
  105. package/dist/core/runtime/runtime-rest-client.js +1 -1
  106. package/dist/core/runtime/runtime-types.d.ts +1 -0
  107. package/dist/core/session/control-stream.d.ts +1 -0
  108. package/dist/core/session/control-stream.js +18 -1
  109. package/dist/core/session/open-bundle.d.ts +4 -4
  110. package/dist/core/session/open-bundle.js +29 -46
  111. package/dist/core/session/turn-end-watch.d.ts +47 -0
  112. package/dist/core/session/turn-end-watch.js +141 -0
  113. package/dist/core/session-log/guard.d.ts +6 -0
  114. package/dist/core/session-log/guard.js +109 -0
  115. package/dist/core/session-log/index.d.ts +7 -0
  116. package/dist/core/session-log/index.js +5 -0
  117. package/dist/core/session-log/saved-log.d.ts +10 -0
  118. package/dist/core/session-log/saved-log.js +25 -0
  119. package/dist/core/session-log/source.d.ts +25 -0
  120. package/dist/core/session-log/source.js +30 -0
  121. package/dist/core/session-log/store.d.ts +21 -0
  122. package/dist/core/session-log/store.js +126 -0
  123. package/dist/core/session-log/tool-call.d.ts +11 -0
  124. package/dist/core/session-log/tool-call.js +65 -0
  125. package/dist/core/session-log/turns/blocks.d.ts +60 -0
  126. package/dist/core/session-log/turns/blocks.js +124 -0
  127. package/dist/core/session-log/turns/history.d.ts +32 -0
  128. package/dist/core/session-log/turns/history.js +99 -0
  129. package/dist/core/session-log/turns/index.d.ts +4 -0
  130. package/dist/core/session-log/turns/index.js +4 -0
  131. package/dist/core/session-log/turns/metrics.d.ts +21 -0
  132. package/dist/core/session-log/turns/metrics.js +29 -0
  133. package/dist/core/session-log/turns/turn.d.ts +55 -0
  134. package/dist/core/session-log/turns/turn.js +279 -0
  135. package/dist/core/session-log/turns/v1-parts.d.ts +8 -0
  136. package/dist/core/session-log/turns/v1-parts.js +43 -0
  137. package/dist/core/session-log/types.d.ts +264 -0
  138. package/dist/core/session-log/types.js +6 -0
  139. package/dist/core/session-log/v1-view.d.ts +13 -0
  140. package/dist/core/session-log/v1-view.js +215 -0
  141. package/dist/core/session-log/v1.d.ts +31 -0
  142. package/dist/core/session-log/v1.js +473 -0
  143. package/dist/core/session-sync/copy-store-types.d.ts +19 -0
  144. package/dist/core/session-sync/copy-store-types.js +1 -0
  145. package/dist/core/session-sync/saved-copy-store.js +25 -4
  146. package/dist/core/session-sync/saved-transcript.d.ts +15 -1
  147. package/dist/core/session-sync/saved-transcript.js +55 -0
  148. package/dist/core/session-sync/session-sync-controller.js +3 -0
  149. package/dist/core/stream/event-stream.js +2 -2
  150. package/dist/core/turns/classify.d.ts +2 -1
  151. package/dist/core/turns/classify.js +7 -3
  152. package/dist/core/turns/edit-blocks.d.ts +1 -0
  153. package/dist/core/turns/edit-blocks.js +15 -0
  154. package/dist/core/turns/parts.d.ts +3 -2
  155. package/dist/core/turns/parts.js +4 -2
  156. package/dist/core/turns/segments/burst-summary.d.ts +1 -0
  157. package/dist/core/turns/segments/burst-summary.js +24 -0
  158. package/dist/core/turns/segments/group-steps.d.ts +4 -3
  159. package/dist/core/turns/segments/group-steps.js +9 -6
  160. package/dist/core/turns/segments/index.d.ts +1 -0
  161. package/dist/core/turns/segments/index.js +1 -0
  162. package/dist/core/turns/segments/narration.d.ts +5 -4
  163. package/dist/core/turns/segments/narration.js +12 -3
  164. package/dist/core/turns/segments/session-activity-groups.d.ts +2 -1
  165. package/dist/core/turns/segments/session-activity-groups.js +3 -1
  166. package/dist/core/turns/segments/step-label.d.ts +2 -1
  167. package/dist/core/turns/segments/step-label.js +3 -1
  168. package/dist/core/turns/segments/work-split.d.ts +10 -0
  169. package/dist/core/turns/segments/work-split.js +40 -0
  170. package/dist/core/turns/segments/working-turn.d.ts +4 -2
  171. package/dist/core/turns/segments/working-turn.js +9 -8
  172. package/dist/core/turns/state.d.ts +2 -7
  173. package/dist/core/turns/state.js +28 -134
  174. package/dist/core/turns/tool-kind.d.ts +1 -1
  175. package/dist/core/turns/tool-kind.js +3 -2
  176. package/dist/core/turns/tool-registry.js +1 -0
  177. package/dist/core/turns/tools/tool-meta.d.ts +3 -2
  178. package/dist/core/turns/tools/tool-meta.js +5 -2
  179. package/dist/core/turns/tools/tool-outcome.d.ts +2 -1
  180. package/dist/core/turns/tools/tool-outcome.js +3 -1
  181. package/dist/core/turns/types.d.ts +1 -1
  182. package/dist/core/turns/view-model.js +1 -13
  183. package/dist/core/warm-session-pool.d.ts +29 -0
  184. package/dist/core/warm-session-pool.js +127 -0
  185. package/dist/genui/catalog.d.ts +28 -0
  186. package/dist/genui/catalog.js +396 -0
  187. package/dist/genui/expansion.d.ts +3 -0
  188. package/dist/genui/expansion.js +295 -0
  189. package/dist/genui/fence-entry.d.ts +2 -0
  190. package/dist/genui/fence-entry.js +1 -0
  191. package/dist/genui/fence.d.ts +21 -0
  192. package/dist/genui/fence.js +138 -0
  193. package/dist/genui/index.d.ts +6 -0
  194. package/dist/genui/index.js +6 -0
  195. package/dist/genui/markdown.d.ts +12 -0
  196. package/dist/genui/markdown.js +104 -0
  197. package/dist/genui/parse.d.ts +6 -0
  198. package/dist/genui/parse.js +75 -0
  199. package/dist/genui/prompt.d.ts +2 -0
  200. package/dist/genui/prompt.js +206 -0
  201. package/dist/genui/react/default-components.d.ts +2 -0
  202. package/dist/genui/react/default-components.js +72 -0
  203. package/dist/genui/react/default-components.test.d.ts +1 -0
  204. package/dist/genui/react/default-components.test.js +94 -0
  205. package/dist/genui/react/genui-block-disabled.test.d.ts +1 -0
  206. package/dist/genui/react/genui-block-disabled.test.js +50 -0
  207. package/dist/genui/react/genui-block.d.ts +28 -0
  208. package/dist/genui/react/genui-block.js +91 -0
  209. package/dist/genui/react/genui-block.test.d.ts +1 -0
  210. package/dist/genui/react/genui-block.test.js +205 -0
  211. package/dist/genui/react/index.d.ts +2 -0
  212. package/dist/genui/react/index.js +2 -0
  213. package/dist/genui/share.d.ts +5 -0
  214. package/dist/genui/share.js +30 -0
  215. package/dist/genui/test-fixtures.d.ts +2 -0
  216. package/dist/genui/test-fixtures.js +16 -0
  217. package/dist/genui/types.d.ts +29 -0
  218. package/dist/genui/types.js +1 -0
  219. package/dist/genui/urls.d.ts +1 -0
  220. package/dist/genui/urls.js +18 -0
  221. package/dist/genui/validate.d.ts +9 -0
  222. package/dist/genui/validate.js +116 -0
  223. package/dist/index.d.ts +4 -4
  224. package/dist/index.js +4 -4
  225. package/dist/internal/connector-catalog.d.ts +48 -0
  226. package/dist/internal/connector-catalog.js +27 -0
  227. package/dist/internal/host-configuration.d.ts +22 -0
  228. package/dist/internal/host-configuration.js +28 -0
  229. package/dist/internal/platform-admin-react.d.ts +12 -0
  230. package/dist/internal/platform-admin-react.js +13 -0
  231. package/dist/internal/platform-admin.d.ts +9 -0
  232. package/dist/internal/platform-admin.js +9 -0
  233. package/dist/platform/ui.d.ts +8 -2
  234. package/dist/platform/ui.js +19 -4
  235. package/dist/react/chat/use-chat-turns.d.ts +1 -1
  236. package/dist/react/human-presence.d.ts +9 -0
  237. package/dist/react/human-presence.js +12 -0
  238. package/dist/react/index.d.ts +4 -13
  239. package/dist/react/index.js +4 -13
  240. package/dist/react/opencode.d.ts +1 -0
  241. package/dist/react/opencode.js +1 -0
  242. package/dist/react/query-contracts.d.ts +6 -0
  243. package/dist/react/query-contracts.js +6 -0
  244. package/dist/react/query-keys.d.ts +17 -2
  245. package/dist/react/query-keys.js +24 -2
  246. package/dist/react/reset-identity-state.js +2 -0
  247. package/dist/react/session-cache-write.d.ts +1 -0
  248. package/dist/react/session-cache-write.js +20 -0
  249. package/dist/react/session-transcript-subscription.js +3 -1
  250. package/dist/react/sign-in-with-beeuni.d.ts +6 -6
  251. package/dist/react/turn-end-handoff.d.ts +13 -0
  252. package/dist/react/turn-end-handoff.js +101 -0
  253. package/dist/react/use-admin-providers.d.ts +3 -6
  254. package/dist/react/use-admin-providers.js +1 -11
  255. package/dist/react/use-capture.d.ts +47 -0
  256. package/dist/react/use-capture.js +173 -0
  257. package/dist/react/use-feature-flag.js +1 -0
  258. package/dist/react/use-opencode-events/handle-event.d.ts +1 -0
  259. package/dist/react/use-opencode-events/handle-event.js +5 -0
  260. package/dist/react/use-opencode-events/handle-interaction-event.js +8 -3
  261. package/dist/react/use-opencode-events/handle-session-event.js +13 -8
  262. package/dist/react/use-opencode-events/handler-context.d.ts +1 -0
  263. package/dist/react/use-opencode-events/helpers.d.ts +1 -0
  264. package/dist/react/use-opencode-events/helpers.js +11 -1
  265. package/dist/react/use-opencode-events/index.js +1 -0
  266. package/dist/react/use-opencode-local.d.ts +5 -1
  267. package/dist/react/use-opencode-local.js +15 -2
  268. package/dist/react/use-opencode-sessions/commands.d.ts +11 -1
  269. package/dist/react/use-opencode-sessions/commands.js +21 -1
  270. package/dist/react/use-opencode-sessions/permissions.js +28 -1
  271. package/dist/react/use-project-sessions.d.ts +1 -1
  272. package/dist/react/use-project-sessions.js +6 -5
  273. package/dist/react/use-prompt-attachments.js +1 -0
  274. package/dist/react/use-review-summary.d.ts +13 -0
  275. package/dist/react/use-review-summary.js +32 -0
  276. package/dist/react/use-runtime-reconnect.js +1 -1
  277. package/dist/react/use-session-list-state.d.ts +6 -0
  278. package/dist/react/use-session-list-state.js +33 -0
  279. package/dist/react/use-session-log.d.ts +16 -0
  280. package/dist/react/use-session-log.js +143 -0
  281. package/dist/react/use-session-messages.d.ts +2 -1
  282. package/dist/react/use-session-messages.js +15 -14
  283. package/dist/react/use-session-stream.js +12 -1
  284. package/dist/react/use-session-sync.d.ts +2 -2
  285. package/dist/react/use-session-sync.js +10 -8
  286. package/dist/react/use-session-transcript-history.js +2 -12
  287. package/dist/react/use-session-working.d.ts +2 -0
  288. package/dist/react/use-session-working.js +10 -0
  289. package/dist/react/use-session.d.ts +6 -0
  290. package/dist/react/use-session.js +88 -6
  291. package/package.json +62 -8
@@ -0,0 +1,29 @@
1
+ export declare const GENUI_SCHEMA_VERSION: 1;
2
+ export interface GenuiNode {
3
+ id: string;
4
+ type: string;
5
+ props: Record<string, unknown>;
6
+ partial: boolean;
7
+ }
8
+ export type GenuiIssueCode = 'schema' | 'unknown-component' | 'wrong-child' | 'url' | 'depth' | 'version' | 'no-root' | 'cut-off' | 'unsupported-statement' | 'too-many-nodes' | 'too-large' | 'parse-failed';
9
+ export interface GenuiIssue {
10
+ code: GenuiIssueCode;
11
+ component?: string;
12
+ statementId?: string;
13
+ message: string;
14
+ }
15
+ export interface GenuiParseResult {
16
+ root: GenuiNode | null;
17
+ pending: string[];
18
+ issues: GenuiIssue[];
19
+ streaming: boolean;
20
+ }
21
+ export type GenuiSegment = {
22
+ kind: 'markdown';
23
+ text: string;
24
+ } | {
25
+ kind: 'genui';
26
+ code: string;
27
+ version: number;
28
+ closed: boolean;
29
+ };
@@ -0,0 +1 @@
1
+ export const GENUI_SCHEMA_VERSION = 1;
@@ -0,0 +1 @@
1
+ export declare function safeUrl(raw: unknown): string | null;
@@ -0,0 +1,18 @@
1
+ const MAX_URL_LENGTH = 2048;
2
+ export function safeUrl(raw) {
3
+ if (typeof raw !== 'string')
4
+ return null;
5
+ const value = raw.trim();
6
+ if (!value || value.length > MAX_URL_LENGTH)
7
+ return null;
8
+ let url;
9
+ try {
10
+ url = new URL(value);
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ if (url.username || url.password)
16
+ return null;
17
+ return url.protocol === 'https:' || url.protocol === 'http:' ? url.toString() : null;
18
+ }
@@ -0,0 +1,9 @@
1
+ import type { ElementNode } from '@openuidev/lang-core';
2
+ import type { GenuiIssue, GenuiNode } from './types.js';
3
+ export declare function sanitizeTree(root: ElementNode | null, options: {
4
+ streaming: boolean;
5
+ unfinished: string | null;
6
+ }): {
7
+ root: GenuiNode | null;
8
+ issues: GenuiIssue[];
9
+ };
@@ -0,0 +1,116 @@
1
+ import { GENUI_BLOCKS, GENUI_MAX_DEPTH, GENUI_MAX_NODES, GENUI_SPECS } from './catalog.js';
2
+ import { safeUrl } from './urls.js';
3
+ const isElement = (value) => typeof value === 'object' && value !== null && value.type === 'element';
4
+ function fit(node, accepts) {
5
+ const spec = GENUI_SPECS[node.type];
6
+ if (accepts.includes(node.type) || spec?.block)
7
+ return [node];
8
+ const children = Object.keys(spec?.slots ?? {}).flatMap((key) => (node.props[key] ?? []));
9
+ return children.flatMap((child) => fit(child, accepts));
10
+ }
11
+ export function sanitizeTree(root, options) {
12
+ const issues = [];
13
+ const usedIds = new Map();
14
+ let nodeCount = 0;
15
+ const uniqueId = (base) => {
16
+ const seen = usedIds.get(base) ?? 0;
17
+ usedIds.set(base, seen + 1);
18
+ return seen === 0 ? base : `${base}#${seen}`;
19
+ };
20
+ function visit(value, path, depth, accepts, parentPartial) {
21
+ if (!isElement(value))
22
+ return [];
23
+ const { typeName, statementId } = value;
24
+ const partial = statementId !== undefined ? statementId === options.unfinished : parentPartial;
25
+ const spec = GENUI_SPECS[typeName];
26
+ if (!spec) {
27
+ issues.push({ code: 'unknown-component', component: typeName, statementId, message: `Unknown component ${typeName}` });
28
+ return [];
29
+ }
30
+ if (!accepts.includes(typeName)) {
31
+ issues.push({ code: 'wrong-child', component: typeName, statementId, message: `${typeName} is not allowed here` });
32
+ return visit(value, path, depth, [typeName], parentPartial).flatMap((node) => fit(node, accepts));
33
+ }
34
+ const nextDepth = spec.container ? depth + 1 : depth;
35
+ if (nextDepth > GENUI_MAX_DEPTH) {
36
+ issues.push({ code: 'depth', component: typeName, statementId, message: `Nesting deeper than ${GENUI_MAX_DEPTH}` });
37
+ return [];
38
+ }
39
+ if (nodeCount >= GENUI_MAX_NODES) {
40
+ if (!issues.some((issue) => issue.code === 'too-many-nodes')) {
41
+ issues.push({ code: 'too-many-nodes', message: `Block expands to more than ${GENUI_MAX_NODES} nodes; the rest is dropped` });
42
+ }
43
+ return [];
44
+ }
45
+ nodeCount++;
46
+ if (partial && !options.streaming) {
47
+ issues.push({ code: 'cut-off', component: typeName, statementId, message: `${typeName} was cut off` });
48
+ return [];
49
+ }
50
+ const id = uniqueId(statementId ?? path);
51
+ const props = {};
52
+ for (const [key, prop] of Object.entries(value.props)) {
53
+ if (prop !== null && prop !== undefined)
54
+ props[key] = prop;
55
+ }
56
+ const subtrees = [];
57
+ const rising = [];
58
+ for (const [key, slot] of Object.entries(spec.slots)) {
59
+ const raw = props[key];
60
+ if (raw === undefined)
61
+ continue;
62
+ const children = Array.isArray(raw) ? raw : [raw];
63
+ const kept = [];
64
+ children.forEach((child, index) => {
65
+ const nodes = visit(child, `${id}.${key}.${index}`, nextDepth, slot.accepts, partial);
66
+ for (const node of nodes.flatMap((n) => fit(n, slot.accepts))) {
67
+ subtrees.push(node);
68
+ (slot.accepts.includes(node.type) ? kept : rising).push(node);
69
+ }
70
+ });
71
+ props[key] = kept;
72
+ }
73
+ for (const [key, need] of Object.entries(spec.urls)) {
74
+ if (props[key] === undefined)
75
+ continue;
76
+ const safe = safeUrl(props[key]);
77
+ if (safe) {
78
+ props[key] = safe;
79
+ continue;
80
+ }
81
+ issues.push({ code: 'url', component: typeName, statementId, message: `Unsafe URL in ${typeName}.${key}` });
82
+ if (need === 'required')
83
+ return [];
84
+ delete props[key];
85
+ }
86
+ if (!partial) {
87
+ const schema = options.streaming ? spec.streaming : spec.strict;
88
+ let result = schema.safeParse(props);
89
+ if (!result.success) {
90
+ const first = result.error.issues[0];
91
+ issues.push({
92
+ code: 'schema',
93
+ component: typeName,
94
+ statementId,
95
+ message: `${typeName}.${first?.path.join('.') ?? ''}: ${first?.message ?? 'invalid'}`,
96
+ });
97
+ const shape = schema.shape;
98
+ const failed = new Set(result.error.issues.map((issue) => String(issue.path[0])));
99
+ if (![...failed].every((key) => shape[key]?.safeParse(undefined).success))
100
+ return subtrees;
101
+ for (const key of failed)
102
+ delete props[key];
103
+ result = schema.safeParse(props);
104
+ if (!result.success)
105
+ return subtrees;
106
+ }
107
+ }
108
+ return [{ id, type: typeName, props, partial }, ...rising];
109
+ }
110
+ const top = visit(root, 'root', 0, GENUI_BLOCKS, false);
111
+ if (top.length === 0)
112
+ return { root: null, issues };
113
+ if (top.length === 1 && top[0].type === 'Stack')
114
+ return { root: top[0], issues };
115
+ return { root: { id: uniqueId('root'), type: 'Stack', props: { children: top }, partial: false }, issues };
116
+ }
package/dist/index.d.ts CHANGED
@@ -30,8 +30,6 @@ export * from './core/http/authenticated-request.js';
30
30
  export * from './core/http/config.js';
31
31
  export * from './core/http/feature-flags.js';
32
32
  export * from './core/http/fresh-sessions.js';
33
- export * from './core/http/impersonation.js';
34
- export * from './core/http/instance-routes.js';
35
33
  export * from './core/http/runtime-errors.js';
36
34
  export * from './core/rest/platform-client/index.js';
37
35
  export * from './core/rest/projects-client/index.js';
@@ -41,9 +39,11 @@ export * from './core/attachments/prompt-attachments.js';
41
39
  export * from './core/runtime/client.js';
42
40
  export * from './core/runtime/attachment-part.js';
43
41
  export * from './core/session/index.js';
42
+ export * from './core/session-log/index.js';
43
+ export * from './core/warm-session-pool.js';
44
44
  export { createHttpSessionSyncController, loadHttpSessionHistory, type SessionSyncMessage, } from './core/session-sync/session-sync-controller.js';
45
45
  export * from './core/session-sync/saved-copy-store.js';
46
- export { type EmptyConversationInput, isEmptyConversation, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
46
+ export { type EmptyConversationInput, type SavedSessionCopy, isEmptyConversation, readSavedSessionCopy, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
47
47
  export * from './core/session/url.js';
48
48
  export { getSandboxUrlForExternalId } from './core/session/server-store/url-helpers.js';
49
49
  export { loadPreviewUrlTemplate } from './core/session/preview-config.js';
@@ -58,4 +58,4 @@ export { flattenModels, isOfferedModel, type FlatModel, type ModelOption } from
58
58
  export { modelRefToKey, type ModelKey } from './core/models/model-key.js';
59
59
  export { createModelVisibility, modelInDefaultView, type ModelVisibilityPin, } from './core/models/model-visibility.js';
60
60
  export { pickerProviderList, type PickerProviderListInput, } from './core/models/provider-selection.js';
61
- export { resolveComposerModel, resolveModelDefault, type ComposerModelResolution, } from './core/models/composer-model.js';
61
+ export { latestPromptModel, resolveComposerModel, resolveModelDefault, sessionModelCandidates, type ComposerModelResolution, } from './core/models/composer-model.js';
package/dist/index.js CHANGED
@@ -22,8 +22,6 @@ export * from './core/http/authenticated-request.js';
22
22
  export * from './core/http/config.js';
23
23
  export * from './core/http/feature-flags.js';
24
24
  export * from './core/http/fresh-sessions.js';
25
- export * from './core/http/impersonation.js';
26
- export * from './core/http/instance-routes.js';
27
25
  export * from './core/http/runtime-errors.js';
28
26
  export * from './core/rest/platform-client/index.js';
29
27
  export * from './core/rest/projects-client/index.js';
@@ -33,9 +31,11 @@ export * from './core/attachments/prompt-attachments.js';
33
31
  export * from './core/runtime/client.js';
34
32
  export * from './core/runtime/attachment-part.js';
35
33
  export * from './core/session/index.js';
34
+ export * from './core/session-log/index.js';
35
+ export * from './core/warm-session-pool.js';
36
36
  export { createHttpSessionSyncController, loadHttpSessionHistory, } from './core/session-sync/session-sync-controller.js';
37
37
  export * from './core/session-sync/saved-copy-store.js';
38
- export { isEmptyConversation, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
38
+ export { isEmptyConversation, readSavedSessionCopy, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
39
39
  export * from './core/session/url.js';
40
40
  export { getSandboxUrlForExternalId } from './core/session/server-store/url-helpers.js';
41
41
  export { loadPreviewUrlTemplate } from './core/session/preview-config.js';
@@ -50,4 +50,4 @@ export { flattenModels, isOfferedModel } from './core/models/model-flatten.js';
50
50
  export { modelRefToKey } from './core/models/model-key.js';
51
51
  export { createModelVisibility, modelInDefaultView, } from './core/models/model-visibility.js';
52
52
  export { pickerProviderList, } from './core/models/provider-selection.js';
53
- export { resolveComposerModel, resolveModelDefault, } from './core/models/composer-model.js';
53
+ export { latestPromptModel, resolveComposerModel, resolveModelDefault, sessionModelCandidates, } from './core/models/composer-model.js';
@@ -0,0 +1,48 @@
1
+ export interface PipedreamApp {
2
+ slug: string;
3
+ name: string;
4
+ description: string | null;
5
+ imgSrc: string | null;
6
+ authType: string | null;
7
+ categories: string[];
8
+ hasActions: boolean;
9
+ hasTriggers: boolean;
10
+ featuredWeight: number;
11
+ directId?: string | null;
12
+ directMcpUrl?: string | null;
13
+ }
14
+ export interface PipedreamCategory {
15
+ key: string;
16
+ label: string;
17
+ count: number;
18
+ }
19
+ export interface PipedreamCatalogQuery {
20
+ q?: string;
21
+ category?: string;
22
+ cursor?: string;
23
+ limit?: number;
24
+ }
25
+ export interface PipedreamCatalogPage {
26
+ apps: PipedreamApp[];
27
+ categories: PipedreamCategory[];
28
+ total?: number;
29
+ nextCursor?: string;
30
+ hasMore: boolean;
31
+ indexReady?: boolean;
32
+ excludedNoActions?: number;
33
+ }
34
+ export declare function listPipedreamApps(projectId: string, qOrQuery?: string | PipedreamCatalogQuery, cursor?: string): Promise<PipedreamCatalogPage>;
35
+ export interface PipedreamSection {
36
+ key: string;
37
+ label: string;
38
+ total: number;
39
+ apps: PipedreamApp[];
40
+ }
41
+ export declare function listPipedreamSections(projectId: string, opts?: {
42
+ perCategory?: number;
43
+ maxCategories?: number;
44
+ }): Promise<{
45
+ sections: PipedreamSection[];
46
+ categories: PipedreamCategory[];
47
+ indexReady?: boolean;
48
+ }>;
@@ -0,0 +1,27 @@
1
+ import { backendApi } from '../core/http/api-client.js';
2
+ import { unwrap } from '../core/rest/projects-client/shared.js';
3
+ export async function listPipedreamApps(projectId, qOrQuery, cursor) {
4
+ const query = typeof qOrQuery === 'string' || qOrQuery === undefined
5
+ ? { ...(qOrQuery ? { q: qOrQuery } : {}), ...(cursor ? { cursor } : {}) }
6
+ : qOrQuery;
7
+ const params = new URLSearchParams();
8
+ if (query.q)
9
+ params.set('q', query.q);
10
+ if (query.category)
11
+ params.set('category', query.category);
12
+ if (query.cursor)
13
+ params.set('cursor', query.cursor);
14
+ if (query.limit)
15
+ params.set('limit', String(query.limit));
16
+ const qs = params.toString();
17
+ return unwrap(await backendApi.get(`/connectors/projects/${projectId}/pipedream/apps${qs ? `?${qs}` : ''}`));
18
+ }
19
+ export async function listPipedreamSections(projectId, opts) {
20
+ const params = new URLSearchParams();
21
+ if (opts?.perCategory)
22
+ params.set('perCategory', String(opts.perCategory));
23
+ if (opts?.maxCategories)
24
+ params.set('maxCategories', String(opts.maxCategories));
25
+ const qs = params.toString();
26
+ return unwrap(await backendApi.get(`/connectors/projects/${projectId}/pipedream/sections${qs ? `?${qs}` : ''}`));
27
+ }
@@ -0,0 +1,22 @@
1
+ import { type SsoProvider as PublicSsoProvider } from '../core/rest/projects-client/iam-sso.js';
2
+ import type { GitHubRepository } from '../core/rest/projects-client/github.js';
3
+ export type HostSsoProvider = PublicSsoProvider & {
4
+ supabase_sso_provider_id: string;
5
+ };
6
+ export declare function getHostSsoProvider(accountId: string): Promise<HostSsoProvider | null>;
7
+ export declare function upsertSsoProvider(accountId: string, input: {
8
+ supabase_sso_provider_id: string;
9
+ name: string;
10
+ primary_domain: string;
11
+ group_claim_name?: string;
12
+ auto_create_members?: boolean;
13
+ auto_provision_groups?: boolean;
14
+ enforce_sso?: boolean;
15
+ }): Promise<HostSsoProvider>;
16
+ export declare function listManagedGitRepositories(options?: {
17
+ search?: string;
18
+ limit?: number;
19
+ }): Promise<{
20
+ owner: string;
21
+ repositories: GitHubRepository[];
22
+ }>;
@@ -0,0 +1,28 @@
1
+ import { backendApi } from '../core/http/api-client.js';
2
+ import { getSsoProvider as readSsoProvider } from '../core/rest/projects-client/iam-sso.js';
3
+ export async function getHostSsoProvider(accountId) {
4
+ return await readSsoProvider(accountId);
5
+ }
6
+ export async function upsertSsoProvider(accountId, input) {
7
+ const response = await backendApi.put(`/accounts/${accountId}/iam/sso/provider`, input, { showErrors: false });
8
+ if (response.error)
9
+ throw response.error;
10
+ if (!response.data)
11
+ throw new Error('SSO configuration could not be saved');
12
+ return response.data.provider;
13
+ }
14
+ export async function listManagedGitRepositories(options) {
15
+ const params = new URLSearchParams();
16
+ const search = options?.search?.trim();
17
+ if (search)
18
+ params.set('search', search);
19
+ if (options?.limit !== undefined)
20
+ params.set('limit', String(options.limit));
21
+ const query = params.toString();
22
+ const response = await backendApi.get(`/projects/git/backend/repositories${query ? `?${query}` : ''}`, { showErrors: false });
23
+ if (response.error)
24
+ throw response.error;
25
+ if (!response.data)
26
+ throw new Error('Repositories could not be loaded');
27
+ return response.data;
28
+ }
@@ -0,0 +1,12 @@
1
+ export * from '../react/use-admin-accounts.js';
2
+ export * from '../react/use-admin-role.js';
3
+ export * from '../react/use-admin-projects.js';
4
+ export * from '../react/use-admin-analytics.js';
5
+ export * from '../react/use-admin-activity-analytics.js';
6
+ export * from '../react/use-admin-feedback.js';
7
+ export * from '../react/use-system-status.js';
8
+ export * from '../react/use-ops-overview.js';
9
+ export * from '../react/use-admin-billing.js';
10
+ export * from '../react/use-impersonation.js';
11
+ export * from '../react/use-admin-sandboxes.js';
12
+ export * from '../react/use-admin-providers.js';
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ export * from '../react/use-admin-accounts.js';
3
+ export * from '../react/use-admin-role.js';
4
+ export * from '../react/use-admin-projects.js';
5
+ export * from '../react/use-admin-analytics.js';
6
+ export * from '../react/use-admin-activity-analytics.js';
7
+ export * from '../react/use-admin-feedback.js';
8
+ export * from '../react/use-system-status.js';
9
+ export * from '../react/use-ops-overview.js';
10
+ export * from '../react/use-admin-billing.js';
11
+ export * from '../react/use-impersonation.js';
12
+ export * from '../react/use-admin-sandboxes.js';
13
+ export * from '../react/use-admin-providers.js';
@@ -0,0 +1,9 @@
1
+ export * from './host-configuration.js';
2
+ export * from '../core/rest/platform-client/github-app.js';
3
+ export * from '../core/rest/projects-client/admin-providers.js';
4
+ export * from '../core/http/impersonation.js';
5
+ export * from '../core/http/instance-routes.js';
6
+ export { isAdminBypassEnabled, setAdminBypass } from '../core/http/transport.js';
7
+ export { getAdminRole, type AdminRole } from '../core/rest/projects-client/account-lifecycle.js';
8
+ export { getMaintenanceConfig, setMaintenanceConfig, openStressTestStream, getUserRolesWithToken, } from '../core/rest/platform-client/host-boundary.js';
9
+ export { getSandboxUpdateStatus, triggerSandboxUpdate, resetSandboxUpdateStatus, cancelSandboxUpdate, DESTRUCTIVE_PHASES, isDestructivePhase, type SandboxUpdateResult, type SandboxUpdateStatus, type UpdatePhase, } from '../core/rest/platform-client/updates.js';
@@ -0,0 +1,9 @@
1
+ export * from './host-configuration.js';
2
+ export * from '../core/rest/platform-client/github-app.js';
3
+ export * from '../core/rest/projects-client/admin-providers.js';
4
+ export * from '../core/http/impersonation.js';
5
+ export * from '../core/http/instance-routes.js';
6
+ export { isAdminBypassEnabled, setAdminBypass } from '../core/http/transport.js';
7
+ export { getAdminRole } from '../core/rest/projects-client/account-lifecycle.js';
8
+ export { getMaintenanceConfig, setMaintenanceConfig, openStressTestStream, getUserRolesWithToken, } from '../core/rest/platform-client/host-boundary.js';
9
+ export { getSandboxUpdateStatus, triggerSandboxUpdate, resetSandboxUpdateStatus, cancelSandboxUpdate, DESTRUCTIVE_PHASES, isDestructivePhase, } from '../core/rest/platform-client/updates.js';
@@ -1,5 +1,11 @@
1
1
  export declare function infoToast(message: string, options?: unknown): void;
2
- export declare function notifyTaskComplete(sessionId: string, sessionTitle?: string): void;
3
- export declare function notifySessionError(sessionId: string, errorTitle: string, sessionTitle?: string): void;
2
+ export declare function notifyTaskComplete(sessionId: string, sessionTitle?: string, extra?: {
3
+ watchedSinceMs?: number;
4
+ projectId?: string;
5
+ }): void;
6
+ export declare function hasNotifySink(): boolean;
7
+ export declare function notifySessionError(sessionId: string, errorTitle: string, sessionTitle?: string, extra?: {
8
+ projectId?: string;
9
+ }): void;
4
10
  export declare function notifyQuestion(sessionId: string, questionText: string, sessionTitle?: string): void;
5
11
  export declare function notifyPermissionRequest(sessionId: string, toolName: string, sessionTitle?: string): void;
@@ -2,11 +2,26 @@ import { platformConfig } from '../core/http/config.js';
2
2
  export function infoToast(message, options) {
3
3
  platformConfig().onToast?.('info', message, options);
4
4
  }
5
- export function notifyTaskComplete(sessionId, sessionTitle) {
6
- platformConfig().onNotify?.({ kind: 'task-complete', sessionId, sessionTitle });
5
+ export function notifyTaskComplete(sessionId, sessionTitle, extra) {
6
+ platformConfig().onNotify?.({
7
+ kind: 'task-complete',
8
+ sessionId,
9
+ sessionTitle,
10
+ ...(extra?.watchedSinceMs !== undefined ? { watchedSinceMs: extra.watchedSinceMs } : {}),
11
+ ...(extra?.projectId ? { projectId: extra.projectId } : {}),
12
+ });
7
13
  }
8
- export function notifySessionError(sessionId, errorTitle, sessionTitle) {
9
- platformConfig().onNotify?.({ kind: 'session-error', sessionId, errorTitle, sessionTitle });
14
+ export function hasNotifySink() {
15
+ return typeof platformConfig().onNotify === 'function';
16
+ }
17
+ export function notifySessionError(sessionId, errorTitle, sessionTitle, extra) {
18
+ platformConfig().onNotify?.({
19
+ kind: 'session-error',
20
+ sessionId,
21
+ errorTitle,
22
+ sessionTitle,
23
+ ...(extra?.projectId ? { projectId: extra.projectId } : {}),
24
+ });
10
25
  }
11
26
  export function notifyQuestion(sessionId, questionText, sessionTitle) {
12
27
  platformConfig().onNotify?.({ kind: 'question', sessionId, questionText, sessionTitle });
@@ -6,4 +6,4 @@ export interface TurnView {
6
6
  error?: TurnError;
7
7
  isEmpty: boolean;
8
8
  }
9
- export declare function useChatTurns(messages: MessageWithParts[]): TurnView[];
9
+ export declare function useChatTurns(messages: readonly MessageWithParts[]): TurnView[];
@@ -1,5 +1,6 @@
1
1
  export declare const PRESENCE_INPUT_WINDOW_MS: number;
2
2
  export declare const PRESENCE_CHECK_MS = 30000;
3
+ export declare const PRESENCE_AWAKE_REFRESH_MS: number;
3
4
  export interface HumanPresenceEnv {
4
5
  doc: Pick<Document, 'hidden' | 'addEventListener' | 'removeEventListener'>;
5
6
  win: Pick<Window, 'addEventListener' | 'removeEventListener' | 'setInterval' | 'clearInterval'>;
@@ -12,4 +13,12 @@ export declare function presenceReporter(put: (report: {
12
13
  }) => void, alerts: boolean): {
13
14
  report(active: boolean): void;
14
15
  setAlerts(next: boolean): void;
16
+ refresh(): void;
15
17
  };
18
+ export declare function presenceAwakeFrom(body: {
19
+ awake_until?: string | null;
20
+ awake_cap_at?: string | null;
21
+ }): {
22
+ until: Date;
23
+ capAt: Date;
24
+ } | null;
@@ -1,5 +1,6 @@
1
1
  export const PRESENCE_INPUT_WINDOW_MS = 10 * 60_000;
2
2
  export const PRESENCE_CHECK_MS = 30_000;
3
+ export const PRESENCE_AWAKE_REFRESH_MS = 5 * 60_000;
3
4
  const INPUT_EVENTS = ['pointerdown', 'pointermove', 'keydown', 'wheel', 'touchstart', 'scroll', 'focus'];
4
5
  export function watchHumanPresence(env, send, streamConnected, pageExit = () => false) {
5
6
  const now = env.now ?? Date.now;
@@ -58,5 +59,16 @@ export function presenceReporter(put, alerts) {
58
59
  if (present)
59
60
  put({ active: true, alerts });
60
61
  },
62
+ refresh() {
63
+ if (present)
64
+ put({ active: true, alerts });
65
+ },
61
66
  };
62
67
  }
68
+ export function presenceAwakeFrom(body) {
69
+ if (!body.awake_until || !body.awake_cap_at)
70
+ return null;
71
+ const until = new Date(body.awake_until);
72
+ const capAt = new Date(body.awake_cap_at);
73
+ return Number.isNaN(until.getTime()) || Number.isNaN(capAt.getTime()) ? null : { until, capAt };
74
+ }
@@ -1,5 +1,5 @@
1
1
  export * from './use-prompt-attachments.js';
2
- export * from './use-project-starter-suggestions.js';
2
+ export { useSessionLogRecord } from './use-session-log.js';
3
3
  export { useConnectorSetup, useConnectorLinkInfo, type ConnectorSetupOptions, type ConnectorSetupPhase, type ConnectorPopupOpener, } from './connector-setup.js';
4
4
  export { useConnectorQuery, type ConnectorQueryOptions } from './use-connector-query.js';
5
5
  export { resetIdentityState } from './reset-identity-state.js';
@@ -17,25 +17,15 @@ export { useProjectSecrets, projectSecretsKey } from './use-project-secrets.js';
17
17
  export { useAccountSecretResources, useSessionProviderSecretPools } from './use-provider-secrets.js';
18
18
  export { useProjectTriggers, projectTriggersKey, useProjectTriggerEventTypes, useProjectTriggerEventApps, projectTriggerEventAppsKey, projectTriggerEventTypesKey, } from './use-project-triggers.js';
19
19
  export { useProjectReminders, useSessionReminders } from './use-reminders.js';
20
+ export * from './use-capture.js';
20
21
  export { useSessionMessageAuthors } from './use-session-message-authors.js';
21
22
  export { useSessionModelUsage } from './use-session-model-usage.js';
22
23
  export { useChangeRequests, changeRequestsKey } from './use-change-requests.js';
23
24
  export { useGatewayRoutingPolicy, gatewayRoutingPolicyKey } from './use-gateway-routing-policy.js';
24
25
  export { useProjectApps, useAppDeployments, useAppDeployment, useAppMachines, useAppVolumes, useAppVolumeSnapshots, appMachinesKey, appVolumesKey, useAppAccess, projectAppsKey, appDeploymentsKey, appDeploymentKey, } from './use-project-apps.js';
25
26
  export { NoCompactionModelError } from './use-opencode-sessions/no-compaction-model-error.js';
26
- export * from './use-admin-accounts.js';
27
- export * from './use-admin-role.js';
28
- export * from './use-admin-projects.js';
29
- export * from './use-admin-analytics.js';
30
- export * from './use-admin-activity-analytics.js';
31
- export * from './use-admin-feedback.js';
32
- export * from './use-system-status.js';
33
- export * from './use-ops-overview.js';
34
- export * from './use-admin-billing.js';
35
- export * from './use-impersonation.js';
36
27
  export * from './use-teams-installations.js';
37
28
  export * from './use-tunnel.js';
38
- export * from './use-admin-sandboxes.js';
39
29
  export * from './use-authenticated-preview-url.js';
40
30
  export * from './use-static-file-preview.js';
41
31
  export * from './run-pty-command.js';
@@ -51,6 +41,8 @@ export * from './use-project-sessions.js';
51
41
  export * from './use-sessions-needing-input.js';
52
42
  export * from './use-notifications.js';
53
43
  export * from './session-cache-write.js';
44
+ export * from './use-review-summary.js';
45
+ export * from './use-session-list-state.js';
54
46
  export * from './invalidate-project.js';
55
47
  export * from './use-feature-flag.js';
56
48
  export * from './use-project-files.js';
@@ -59,4 +51,3 @@ export { useBeeuniAppViewer, type BeeuniAppViewerState, } from './use-beeuni-app
59
51
  export { useModelAccess } from './use-model-access.js';
60
52
  export { formatMegabytes, useSandboxImage } from './use-sandbox-image.js';
61
53
  export { GATEWAY_LOGS_PAGE_SIZE, useGatewayOverview, useGatewaySeries, useGatewayBreakdown, useGatewaySessions, useGatewayErrors, useGatewayLogs, useGatewayLog, useGatewayBudgets, useSetGatewayBudget, useDeleteGatewayBudget, useGatewayKeys, useCreateGatewayKey, useRevokeGatewayKey, } from './use-project-gateway.js';
62
- export * from './use-admin-providers.js';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  export * from './use-prompt-attachments.js';
3
- export * from './use-project-starter-suggestions.js';
3
+ export { useSessionLogRecord } from './use-session-log.js';
4
4
  export { useConnectorSetup, useConnectorLinkInfo, } from './connector-setup.js';
5
5
  export { useConnectorQuery } from './use-connector-query.js';
6
6
  export { resetIdentityState } from './reset-identity-state.js';
@@ -18,25 +18,15 @@ export { useProjectSecrets, projectSecretsKey } from './use-project-secrets.js';
18
18
  export { useAccountSecretResources, useSessionProviderSecretPools } from './use-provider-secrets.js';
19
19
  export { useProjectTriggers, projectTriggersKey, useProjectTriggerEventTypes, useProjectTriggerEventApps, projectTriggerEventAppsKey, projectTriggerEventTypesKey, } from './use-project-triggers.js';
20
20
  export { useProjectReminders, useSessionReminders } from './use-reminders.js';
21
+ export * from './use-capture.js';
21
22
  export { useSessionMessageAuthors } from './use-session-message-authors.js';
22
23
  export { useSessionModelUsage } from './use-session-model-usage.js';
23
24
  export { useChangeRequests, changeRequestsKey } from './use-change-requests.js';
24
25
  export { useGatewayRoutingPolicy, gatewayRoutingPolicyKey } from './use-gateway-routing-policy.js';
25
26
  export { useProjectApps, useAppDeployments, useAppDeployment, useAppMachines, useAppVolumes, useAppVolumeSnapshots, appMachinesKey, appVolumesKey, useAppAccess, projectAppsKey, appDeploymentsKey, appDeploymentKey, } from './use-project-apps.js';
26
27
  export { NoCompactionModelError } from './use-opencode-sessions/no-compaction-model-error.js';
27
- export * from './use-admin-accounts.js';
28
- export * from './use-admin-role.js';
29
- export * from './use-admin-projects.js';
30
- export * from './use-admin-analytics.js';
31
- export * from './use-admin-activity-analytics.js';
32
- export * from './use-admin-feedback.js';
33
- export * from './use-system-status.js';
34
- export * from './use-ops-overview.js';
35
- export * from './use-admin-billing.js';
36
- export * from './use-impersonation.js';
37
28
  export * from './use-teams-installations.js';
38
29
  export * from './use-tunnel.js';
39
- export * from './use-admin-sandboxes.js';
40
30
  export * from './use-authenticated-preview-url.js';
41
31
  export * from './use-static-file-preview.js';
42
32
  export * from './run-pty-command.js';
@@ -52,6 +42,8 @@ export * from './use-project-sessions.js';
52
42
  export * from './use-sessions-needing-input.js';
53
43
  export * from './use-notifications.js';
54
44
  export * from './session-cache-write.js';
45
+ export * from './use-review-summary.js';
46
+ export * from './use-session-list-state.js';
55
47
  export * from './invalidate-project.js';
56
48
  export * from './use-feature-flag.js';
57
49
  export * from './use-project-files.js';
@@ -60,4 +52,3 @@ export { useBeeuniAppViewer, } from './use-beeuni-app-viewer.js';
60
52
  export { useModelAccess } from './use-model-access.js';
61
53
  export { formatMegabytes, useSandboxImage } from './use-sandbox-image.js';
62
54
  export { GATEWAY_LOGS_PAGE_SIZE, useGatewayOverview, useGatewaySeries, useGatewayBreakdown, useGatewaySessions, useGatewayErrors, useGatewayLogs, useGatewayLog, useGatewayBudgets, useSetGatewayBudget, useDeleteGatewayBudget, useGatewayKeys, useCreateGatewayKey, useRevokeGatewayKey, } from './use-project-gateway.js';
63
- export * from './use-admin-providers.js';
@@ -30,6 +30,7 @@ export { useProjectConfig } from './use-project-config.js';
30
30
  export type { ProjectConfigSummary } from '../core/rest/projects-client/index.js';
31
31
  export { useSession, type SessionPhase, type UseSessionResult, type UseSessionOptions, } from './use-session.js';
32
32
  export { useSessionMessages, type SessionMessagesOptions, type SessionMessagesSource, } from './use-session-messages.js';
33
+ export { useSessionLog, useSessionLogRecord, useSessionLogThread } from './use-session-log.js';
33
34
  export { useSessionPicks, type SessionPicks } from './use-session-picks.js';
34
35
  export { useSessionPrompts, sessionPromptsPollMs, startSessionWithPrompt, isOptimisticSessionPrompt, optimisticSessionPrompt, applyOptimisticPrompt, settleOptimisticPrompt, removeOptimisticPrompt, reconcileOptimisticPrompts, OPTIMISTIC_PROMPT_PREFIX, SESSION_PROMPTS_POLL_MS, SESSION_PROMPTS_IDLE_POLL_MS, type StartSessionWithPromptAdapters, type UseSessionPromptsResult, } from './use-session-prompts.js';
35
36
  export { readSessionAudit } from './use-session-audit.js';
@@ -30,6 +30,7 @@ export { useProjectModelPickerCatalog, useProjectModels } from './use-project-mo
30
30
  export { useProjectConfig } from './use-project-config.js';
31
31
  export { useSession, } from './use-session.js';
32
32
  export { useSessionMessages, } from './use-session-messages.js';
33
+ export { useSessionLog, useSessionLogRecord, useSessionLogThread } from './use-session-log.js';
33
34
  export { useSessionPicks } from './use-session-picks.js';
34
35
  export { useSessionPrompts, sessionPromptsPollMs, startSessionWithPrompt, isOptimisticSessionPrompt, optimisticSessionPrompt, applyOptimisticPrompt, settleOptimisticPrompt, removeOptimisticPrompt, reconcileOptimisticPrompts, OPTIMISTIC_PROMPT_PREFIX, SESSION_PROMPTS_POLL_MS, SESSION_PROMPTS_IDLE_POLL_MS, } from './use-session-prompts.js';
35
36
  export { readSessionAudit } from './use-session-audit.js';