@theoremjs/react 0.0.0-stage → 0.3.1

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 (320) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +772 -2
  3. package/client/attachment-hover-preview.d.ts +11 -0
  4. package/client/attachment-hover-preview.js +36 -0
  5. package/client/audio-level.d.ts +5 -0
  6. package/client/audio-level.js +24 -0
  7. package/client/composer-attachments.d.ts +30 -0
  8. package/client/composer-attachments.js +33 -0
  9. package/client/composer-drawer.d.ts +19 -0
  10. package/client/composer-drawer.js +15 -0
  11. package/client/composer-hints.d.ts +25 -0
  12. package/client/composer-hints.js +20 -0
  13. package/client/composer-primary.d.ts +16 -0
  14. package/client/composer-primary.js +25 -0
  15. package/client/decision-images.d.ts +76 -0
  16. package/client/decision-images.js +139 -0
  17. package/client/decision-transport.d.ts +70 -0
  18. package/client/decision-transport.js +175 -0
  19. package/client/decode-composer-draft.d.ts +11 -0
  20. package/client/decode-composer-draft.js +12 -0
  21. package/client/embedding-input.d.ts +84 -0
  22. package/client/embedding-input.js +194 -0
  23. package/client/embedding-space.d.ts +82 -0
  24. package/client/embedding-space.js +389 -0
  25. package/client/embedding-transport.d.ts +40 -0
  26. package/client/embedding-transport.js +71 -0
  27. package/client/encode-composer-draft.d.ts +9 -0
  28. package/client/encode-composer-draft.js +34 -0
  29. package/client/encode-files.d.ts +18 -0
  30. package/client/encode-files.js +54 -0
  31. package/client/failure.d.ts +29 -0
  32. package/client/failure.js +34 -0
  33. package/client/generation-selection.d.ts +15 -0
  34. package/client/generation-selection.js +24 -0
  35. package/client/host-call.d.ts +51 -0
  36. package/client/host-call.js +47 -0
  37. package/client/host-transport.d.ts +70 -0
  38. package/client/host-transport.js +75 -0
  39. package/client/image-output.d.ts +6 -0
  40. package/client/image-output.js +13 -0
  41. package/client/index.d.ts +28 -0
  42. package/client/index.js +22 -0
  43. package/client/ink-waveform.d.ts +17 -0
  44. package/client/ink-waveform.js +68 -0
  45. package/client/live/apply-live-turn-tool-event.d.ts +14 -0
  46. package/client/live/apply-live-turn-tool-event.js +39 -0
  47. package/client/live/live-captions.d.ts +53 -0
  48. package/client/live/live-captions.js +174 -0
  49. package/client/live/live-mic-forward.d.ts +30 -0
  50. package/client/live/live-mic-forward.js +46 -0
  51. package/client/live/live-page-tool.d.ts +34 -0
  52. package/client/live/live-page-tool.js +11 -0
  53. package/client/live/live-state.d.ts +13 -0
  54. package/client/live/live-state.js +22 -0
  55. package/client/live/live-tool.d.ts +11 -0
  56. package/client/live/live-tool.js +1 -0
  57. package/client/live/live-video.d.ts +10 -0
  58. package/client/live/live-video.js +71 -0
  59. package/client/live/run-live-tool-call.d.ts +22 -0
  60. package/client/live/run-live-tool-call.js +70 -0
  61. package/client/live/use-live-caption-log.d.ts +17 -0
  62. package/client/live/use-live-caption-log.js +51 -0
  63. package/client/live-client.d.ts +189 -0
  64. package/client/live-client.js +829 -0
  65. package/client/live-errors.d.ts +2 -0
  66. package/client/live-errors.js +9 -0
  67. package/client/live-messages.d.ts +148 -0
  68. package/client/live-messages.js +100 -0
  69. package/client/mic-capture.d.ts +4 -0
  70. package/client/mic-capture.js +6 -0
  71. package/client/oauth-popup.d.ts +26 -0
  72. package/client/oauth-popup.js +30 -0
  73. package/client/page-dispatch.d.ts +15 -0
  74. package/client/page-dispatch.js +63 -0
  75. package/client/pcm-downsample.d.ts +4 -0
  76. package/client/pcm-downsample.js +45 -0
  77. package/client/run-commit.d.ts +34 -0
  78. package/client/run-commit.js +49 -0
  79. package/client/run-session.d.ts +79 -0
  80. package/client/run-session.js +207 -0
  81. package/client/schema-fields.d.ts +63 -0
  82. package/client/schema-fields.js +199 -0
  83. package/client/shaped-data.d.ts +118 -0
  84. package/client/shaped-data.js +343 -0
  85. package/client/source-citations.d.ts +13 -0
  86. package/client/source-citations.js +56 -0
  87. package/client/space-geometry.d.ts +39 -0
  88. package/client/space-geometry.js +183 -0
  89. package/client/state-fields.d.ts +16 -0
  90. package/client/state-fields.js +44 -0
  91. package/client/tool-result.d.ts +78 -0
  92. package/client/tool-result.js +293 -0
  93. package/client/tool-resume.d.ts +50 -0
  94. package/client/tool-resume.js +14 -0
  95. package/client/trace-feed.d.ts +13 -0
  96. package/client/trace-feed.js +18 -0
  97. package/client/trace-story.d.ts +163 -0
  98. package/client/trace-story.js +440 -0
  99. package/client/trace-view.d.ts +130 -0
  100. package/client/trace-view.js +333 -0
  101. package/client/transcript-groups.d.ts +140 -0
  102. package/client/transcript-groups.js +217 -0
  103. package/client/transcript-schema.d.ts +10 -0
  104. package/client/transcript-schema.js +120 -0
  105. package/client/transcript-scroll.d.ts +7 -0
  106. package/client/transcript-scroll.js +6 -0
  107. package/client/transport.d.ts +264 -0
  108. package/client/transport.js +330 -0
  109. package/client/turn-client.d.ts +44 -0
  110. package/client/turn-client.js +88 -0
  111. package/client/voice-label.d.ts +2 -0
  112. package/client/voice-label.js +15 -0
  113. package/client/voice-recorder.d.ts +27 -0
  114. package/client/voice-recorder.js +162 -0
  115. package/client/wire-line.d.ts +56 -0
  116. package/client/wire-line.js +90 -0
  117. package/client/worklets/mic-capture.js +16 -0
  118. package/components/InkWaveform.d.ts +21 -0
  119. package/components/InkWaveform.js +131 -0
  120. package/components/live/use-live-runner-controls.d.ts +47 -0
  121. package/components/live/use-live-runner-controls.js +96 -0
  122. package/components/live/use-live-runner-model.d.ts +49 -0
  123. package/components/live/use-live-runner-model.js +190 -0
  124. package/components/live/use-live-runner-ui.d.ts +67 -0
  125. package/components/live/use-live-runner-ui.js +167 -0
  126. package/components/live/use-live-session-client.d.ts +41 -0
  127. package/components/live/use-live-session-client.js +126 -0
  128. package/components/use-composer-voice.d.ts +28 -0
  129. package/components/use-composer-voice.js +90 -0
  130. package/components/use-editor-selection.d.ts +3 -0
  131. package/components/use-editor-selection.js +19 -0
  132. package/components/use-voice-playback.d.ts +17 -0
  133. package/components/use-voice-playback.js +68 -0
  134. package/hooks/use-described.d.ts +12 -0
  135. package/hooks/use-described.js +25 -0
  136. package/hooks/use-embedding-index.d.ts +27 -0
  137. package/hooks/use-embedding-index.js +43 -0
  138. package/hooks/use-one-call.d.ts +31 -0
  139. package/hooks/use-one-call.js +76 -0
  140. package/hooks/use-page-tool-warnings.d.ts +6 -0
  141. package/hooks/use-page-tool-warnings.js +25 -0
  142. package/hooks/use-second-ticker.d.ts +2 -0
  143. package/hooks/use-second-ticker.js +13 -0
  144. package/hooks/use-theorem-chat-actions.d.ts +79 -0
  145. package/hooks/use-theorem-chat-actions.js +287 -0
  146. package/hooks/use-theorem-chat-state.d.ts +66 -0
  147. package/hooks/use-theorem-chat-state.js +122 -0
  148. package/hooks/use-theorem-chat.d.ts +97 -0
  149. package/hooks/use-theorem-chat.js +528 -0
  150. package/hooks/use-theorem-decision.d.ts +18 -0
  151. package/hooks/use-theorem-decision.js +12 -0
  152. package/hooks/use-theorem-embedding.d.ts +18 -0
  153. package/hooks/use-theorem-embedding.js +12 -0
  154. package/hooks/use-theorem-host.d.ts +45 -0
  155. package/hooks/use-theorem-host.js +135 -0
  156. package/hooks/use-theorem-interface.d.ts +22 -0
  157. package/hooks/use-theorem-interface.js +15 -0
  158. package/hooks/use-trace-records.d.ts +4 -0
  159. package/hooks/use-trace-records.js +7 -0
  160. package/index.d.ts +17 -0
  161. package/index.js +17 -0
  162. package/live.d.ts +9 -0
  163. package/live.js +10 -0
  164. package/package.json +74 -4
  165. package/server/checkpoint-ownership.d.ts +6 -0
  166. package/server/checkpoint-ownership.js +42 -0
  167. package/server/conversation-store.d.ts +92 -0
  168. package/server/conversation-store.js +131 -0
  169. package/server/conversation.d.ts +193 -0
  170. package/server/conversation.js +552 -0
  171. package/server/credential-store.d.ts +24 -0
  172. package/server/credential-store.js +14 -0
  173. package/server/decision-handler.d.ts +42 -0
  174. package/server/decision-handler.js +46 -0
  175. package/server/embedding-handler.d.ts +33 -0
  176. package/server/embedding-handler.js +45 -0
  177. package/server/handler.d.ts +152 -0
  178. package/server/handler.js +771 -0
  179. package/server/json-response.d.ts +2 -0
  180. package/server/json-response.js +7 -0
  181. package/server/mod.d.ts +25 -0
  182. package/server/mod.js +23 -0
  183. package/server/page-dispatch.d.ts +22 -0
  184. package/server/page-dispatch.js +127 -0
  185. package/server/request-body.d.ts +2 -0
  186. package/server/request-body.js +42 -0
  187. package/server/request-check.d.ts +21 -0
  188. package/server/request-check.js +49 -0
  189. package/server/session-authority.d.ts +8 -0
  190. package/server/session-authority.js +78 -0
  191. package/server/session-boundary.d.ts +26 -0
  192. package/server/session-boundary.js +64 -0
  193. package/server/session-identity.d.ts +16 -0
  194. package/server/session-identity.js +41 -0
  195. package/server/session-limits.d.ts +12 -0
  196. package/server/session-limits.js +59 -0
  197. package/server/session-store.d.ts +123 -0
  198. package/server/session-store.js +264 -0
  199. package/server/single-action.d.ts +21 -0
  200. package/server/single-action.js +30 -0
  201. package/server/steer-inbox.d.ts +35 -0
  202. package/server/steer-inbox.js +52 -0
  203. package/server/tool-operations.d.ts +6 -0
  204. package/server/tool-operations.js +132 -0
  205. package/server/turn-input.d.ts +10 -0
  206. package/server/turn-input.js +29 -0
  207. package/styles/ink-controls.css +134 -0
  208. package/ui/CardWall.d.ts +10 -0
  209. package/ui/CardWall.js +61 -0
  210. package/ui/ChatComposerBar.d.ts +62 -0
  211. package/ui/ChatComposerBar.js +306 -0
  212. package/ui/ChatTranscript.d.ts +43 -0
  213. package/ui/ChatTranscript.js +527 -0
  214. package/ui/ConsoleFrame.d.ts +104 -0
  215. package/ui/ConsoleFrame.js +146 -0
  216. package/ui/DecisionAnswers.d.ts +53 -0
  217. package/ui/DecisionAnswers.js +233 -0
  218. package/ui/DecisionImages.d.ts +16 -0
  219. package/ui/DecisionImages.js +46 -0
  220. package/ui/EmbeddingDocuments.d.ts +78 -0
  221. package/ui/EmbeddingDocuments.js +278 -0
  222. package/ui/EmbeddingQuery.d.ts +27 -0
  223. package/ui/EmbeddingQuery.js +95 -0
  224. package/ui/EmbeddingResults.d.ts +41 -0
  225. package/ui/EmbeddingResults.js +165 -0
  226. package/ui/EmbeddingSpace.d.ts +26 -0
  227. package/ui/EmbeddingSpace.js +106 -0
  228. package/ui/LiveCaptionsPanel.d.ts +22 -0
  229. package/ui/LiveCaptionsPanel.js +27 -0
  230. package/ui/LiveRunner.d.ts +30 -0
  231. package/ui/LiveRunner.js +180 -0
  232. package/ui/PaneState.d.ts +33 -0
  233. package/ui/PaneState.js +50 -0
  234. package/ui/SchemaFields.d.ts +10 -0
  235. package/ui/SchemaFields.js +150 -0
  236. package/ui/ShapedData.d.ts +11 -0
  237. package/ui/ShapedData.js +196 -0
  238. package/ui/SidePanel.d.ts +126 -0
  239. package/ui/SidePanel.js +123 -0
  240. package/ui/StateFields.d.ts +44 -0
  241. package/ui/StateFields.js +139 -0
  242. package/ui/TheoremChat.d.ts +122 -0
  243. package/ui/TheoremChat.js +134 -0
  244. package/ui/TheoremDecision.d.ts +30 -0
  245. package/ui/TheoremDecision.js +130 -0
  246. package/ui/TheoremEmbedding.d.ts +27 -0
  247. package/ui/TheoremEmbedding.js +122 -0
  248. package/ui/TheoremHost.d.ts +55 -0
  249. package/ui/TheoremHost.js +240 -0
  250. package/ui/ToolGateCard.d.ts +32 -0
  251. package/ui/ToolGateCard.js +107 -0
  252. package/ui/ToolResult.d.ts +10 -0
  253. package/ui/ToolResult.js +62 -0
  254. package/ui/ToolResultCharts.d.ts +5 -0
  255. package/ui/ToolResultCharts.js +103 -0
  256. package/ui/TraceCharts.d.ts +13 -0
  257. package/ui/TraceCharts.js +266 -0
  258. package/ui/TraceGuardrails.d.ts +11 -0
  259. package/ui/TraceGuardrails.js +74 -0
  260. package/ui/TraceInspector.d.ts +16 -0
  261. package/ui/TraceInspector.js +206 -0
  262. package/ui/TraceInspectorPanel.d.ts +46 -0
  263. package/ui/TraceInspectorPanel.js +95 -0
  264. package/ui/TraceOverview.d.ts +38 -0
  265. package/ui/TraceOverview.js +126 -0
  266. package/ui/TraceSpanDetail.d.ts +10 -0
  267. package/ui/TraceSpanDetail.js +190 -0
  268. package/ui/TraceStory.d.ts +20 -0
  269. package/ui/TraceStory.js +108 -0
  270. package/ui/TraceValues.d.ts +36 -0
  271. package/ui/TraceValues.js +123 -0
  272. package/ui/TraceWaterfall.d.ts +13 -0
  273. package/ui/TraceWaterfall.js +135 -0
  274. package/ui/VoiceNote.d.ts +12 -0
  275. package/ui/VoiceNote.js +28 -0
  276. package/ui/approval-heading.d.ts +4 -0
  277. package/ui/approval-heading.js +9 -0
  278. package/ui/arrive.d.ts +18 -0
  279. package/ui/arrive.js +46 -0
  280. package/ui/built/theme.css +792 -0
  281. package/ui/built/theme.css.d.ts +9 -0
  282. package/ui/built/theorem.d.ts +13 -0
  283. package/ui/built/theorem.js +660 -0
  284. package/ui/built/theorem.variants.d.ts +22 -0
  285. package/ui/code-language.d.ts +12 -0
  286. package/ui/code-language.js +50 -0
  287. package/ui/disclosure-motion.d.ts +6 -0
  288. package/ui/disclosure-motion.js +207 -0
  289. package/ui/embedding-space-gl.d.ts +37 -0
  290. package/ui/embedding-space-gl.js +663 -0
  291. package/ui/embedding-space-view.d.ts +8 -0
  292. package/ui/embedding-space-view.js +8 -0
  293. package/ui/glide.d.ts +7 -0
  294. package/ui/glide.js +44 -0
  295. package/ui/icons.d.ts +4 -0
  296. package/ui/icons.js +38 -0
  297. package/ui/index.d.ts +36 -0
  298. package/ui/index.js +39 -0
  299. package/ui/labels-provider.d.ts +16 -0
  300. package/ui/labels-provider.js +64 -0
  301. package/ui/labels.d.ts +1442 -0
  302. package/ui/labels.js +1443 -0
  303. package/ui/markdown-plugins.d.ts +9 -0
  304. package/ui/markdown-plugins.js +13 -0
  305. package/ui/mcp-icon.d.ts +6 -0
  306. package/ui/mcp-icon.js +8 -0
  307. package/ui/row-keys.d.ts +19 -0
  308. package/ui/row-keys.js +33 -0
  309. package/ui/theme.d.ts +10 -0
  310. package/ui/theme.js +13 -0
  311. package/ui/theorem-theme.d.ts +10 -0
  312. package/ui/theorem-theme.js +105 -0
  313. package/ui/trace-palette.d.ts +10 -0
  314. package/ui/trace-palette.js +10 -0
  315. package/ui/trace-patterns.d.ts +40 -0
  316. package/ui/trace-patterns.js +57 -0
  317. package/ui/transcript-copy-text.d.ts +4 -0
  318. package/ui/transcript-copy-text.js +40 -0
  319. package/ui/wall-columns.d.ts +8 -0
  320. package/ui/wall-columns.js +19 -0
@@ -0,0 +1,33 @@
1
+ import { type EmbeddingInput, type EmbeddingProfile, type EmbeddingProfileDefinition, type KeyVault, type ProviderHostOptions, type TraceSink, z } from '@theoremjs/agents';
2
+ import type { ClientTurnOptions } from '@theoremjs/agents/host';
3
+ export type TheoremEmbeddingHandlerOptions = {
4
+ profile: EmbeddingProfile | EmbeddingProfileDefinition;
5
+ vault?: KeyVault;
6
+ fetch?: typeof globalThis.fetch;
7
+ provider?: ProviderHostOptions | ((ctx: {
8
+ request: Request;
9
+ model?: string;
10
+ }) => ProviderHostOptions | Promise<ProviderHostOptions>);
11
+ sink?: TraceSink;
12
+ metadata?: (request: Request) => Record<string, unknown> | undefined;
13
+ clientEvents?: ClientTurnOptions;
14
+ onError?: (err: unknown, ctx: {
15
+ request: Request;
16
+ }) => void;
17
+ };
18
+ /** The body an embedding request posts: the input, and optionally the model and the task. */
19
+ export declare const embedBodySchema: z.ZodObject<{
20
+ input: z.ZodUnknown;
21
+ model: z.ZodOptional<z.ZodString>;
22
+ task: z.ZodOptional<z.ZodEnum<{
23
+ document: "document";
24
+ query: "query";
25
+ }>>;
26
+ }, z.core.$strip>;
27
+ /** The body as the embedding request `runEmbedding` takes, less its profile. */
28
+ export declare function embedRequest(body: z.infer<typeof embedBodySchema>): {
29
+ task?: "document" | "query" | undefined;
30
+ model?: string | undefined;
31
+ input: EmbeddingInput | readonly EmbeddingInput[];
32
+ };
33
+ export declare function createTheoremEmbeddingHandler(options: TheoremEmbeddingHandlerOptions): (request: Request) => Promise<Response>;
@@ -0,0 +1,45 @@
1
+ import { defineProfile, registerProfile, runEmbedding, z, } from '@theoremjs/agents';
2
+ import { embeddingInterface } from "../client/embedding-transport.js";
3
+ import { readBody } from "./handler.js";
4
+ import { singleActionHandler } from "./single-action.js";
5
+ /** The body an embedding request posts: the input, and optionally the model and the task. */
6
+ export const embedBodySchema = z.object({
7
+ input: z.unknown(),
8
+ model: z.string().min(1).optional(),
9
+ task: z.enum(['query', 'document']).optional(),
10
+ });
11
+ /** The body as the embedding request `runEmbedding` takes, less its profile. */
12
+ export function embedRequest(body) {
13
+ return {
14
+ input: body.input,
15
+ ...(body.model === undefined ? {} : { model: body.model }),
16
+ ...(body.task === undefined ? {} : { task: body.task }),
17
+ };
18
+ }
19
+ export function createTheoremEmbeddingHandler(options) {
20
+ const profile = defineProfile(options.profile);
21
+ if (profile.type !== 'embedding') {
22
+ throw new Error(`createTheoremEmbeddingHandler serves type 'embedding'; got type '${profile.type}'.`);
23
+ }
24
+ registerProfile(profile);
25
+ return singleActionHandler({
26
+ action: 'embed',
27
+ iface: embeddingInterface(profile),
28
+ labels: profile.labels,
29
+ clientEvents: options.clientEvents,
30
+ onError: options.onError,
31
+ }, async (request) => {
32
+ const body = await readBody(request, embedBodySchema);
33
+ const provider = typeof options.provider === 'function'
34
+ ? await options.provider({ request, model: body.model })
35
+ : options.provider;
36
+ return runEmbedding({
37
+ profile: profile.id,
38
+ ...embedRequest(body),
39
+ signal: request.signal,
40
+ metadata: options.metadata?.(request),
41
+ }, provider
42
+ ? { ...provider, ...(options.sink ? { sink: options.sink } : {}) }
43
+ : { vault: options.vault, fetch: options.fetch, sink: options.sink });
44
+ });
45
+ }
@@ -0,0 +1,152 @@
1
+ import { type PageToolBroker } from './page-dispatch.ts';
2
+ /**
3
+ * One Web-standard handler that serves a Theorem chat UI for a single profile.
4
+ *
5
+ * Mount it on any framework that speaks `Request` → `Response` (Deno.serve,
6
+ * Hono, Next route handlers, SvelteKit, Workers) under a catch-all route:
7
+ *
8
+ * - `GET <base>` → `{ interface }` client-safe profile interface
9
+ * - `POST <base>/turn` → NDJSON turn events; a message sent while the reply
10
+ * waits on gates walks away from them first (`abandon`)
11
+ * - `POST <base>/invoke` → NDJSON events for the user's answer to a paused tool call
12
+ * - `POST <base>/steer` → inject messages into a running turn
13
+ * - `POST <base>/conversation` → the transcript and the paused reply, to draw
14
+ * - `POST <base>/rewind` → `{ conversation, view }` the conversation cut after one block, and its new ref
15
+ *
16
+ * `createTheoremHostHandler` serves a host profile the same way, with no model:
17
+ *
18
+ * - `GET <base>` → `{ interface }` the tools the page may call, with their schemas
19
+ * - `POST <base>/call` → NDJSON events for one call of one of those tools
20
+ * - `POST <base>/invoke` → NDJSON events for the user's answer to a paused call
21
+ * - `POST <base>/page-result` → grant-correlated browser result receipt
22
+ *
23
+ * Trust boundary: the host owns the conversation and every decision that grants
24
+ * authority. Two stores keep them. The `conversationStore` owns the transcript,
25
+ * the history the model reads and the paused reply; the browser sends only what
26
+ * the person did now, with the opaque ref the store issued. The session store
27
+ * owns which paused calls may run (and with what input) and the tool
28
+ * permissions — request bodies can't grant any of them. A profile whose `providerContinuation.history` is
29
+ * `'stateless'` keeps no conversation, and takes no store.
30
+ * Tool credentials are held on the server too: a key the user types at a gate
31
+ * is sent once and saved, and no credential is ever sent back to the browser.
32
+ *
33
+ * @module
34
+ */
35
+ import { type Profile, type ProfileDefinition, type ProviderHostOptions, type ToolGate, type z } from '@theoremjs/agents';
36
+ import { type ClientTurnOptions } from '@theoremjs/agents/host';
37
+ import { type TheoremConversationStore } from './conversation-store.ts';
38
+ import { type TheoremCredentialStore } from './credential-store.ts';
39
+ export { theoremSession, theoremSessionId } from './session-identity.ts';
40
+ import { type TheoremSessionLimits } from './session-limits.ts';
41
+ import { type SessionToolOperation, type TheoremSessionStore } from './session-store.ts';
42
+ import { type SteerInbox } from './steer-inbox.ts';
43
+ export type TheoremRequestContext = {
44
+ request: Request;
45
+ /** Selected model id, when the client picked one. */
46
+ model?: string;
47
+ };
48
+ export type TheoremHandlerOptions = {
49
+ /** Profile to serve. Registered with the kernel when the handler is created. */
50
+ profile: Profile | ProfileDefinition;
51
+ /**
52
+ * Host options for registered providers, or a factory for hosts that
53
+ * pick keys per request (BYOK, tenant vaults). Tools are registered by the host.
54
+ */
55
+ provider: ProviderHostOptions | ((ctx: TheoremRequestContext) => ProviderHostOptions | Promise<ProviderHostOptions>);
56
+ /**
57
+ * Opaque app context for tool handlers (`ctx.host`) — e.g. the signed-in user. A promise is
58
+ * awaited before the run starts, so the tools read what it settles to.
59
+ */
60
+ host?: (request: Request) => unknown;
61
+ /**
62
+ * What the host wants the agent to know on each turn: any JSON. The profile's
63
+ * `inputs.context.from` must list `server`. The page's own context arrives in the
64
+ * request and is read as untrusted; this one is the host's.
65
+ */
66
+ context?: (request: Request) => unknown;
67
+ /**
68
+ * Resolve the caller's session id — e.g. `${userId}:${conversationId}` from your
69
+ * auth. Return `undefined` to refuse the request (401). Default: an opaque id
70
+ * in an HttpOnly, SameSite=Lax cookie the handler issues on first contact.
71
+ */
72
+ session?: (request: Request) => string | undefined | Promise<string | undefined>;
73
+ /** Default: in-process memory. Use a shared store when requests can reach different instances. */
74
+ sessionStore?: TheoremSessionStore;
75
+ /**
76
+ * Where the chat's conversation lives: the transcript, the history the model
77
+ * reads and a reply paused on gates. Required unless the profile's
78
+ * `providerContinuation.history` is `'stateless'`, which keeps none and takes
79
+ * no store. `createMemoryConversationStore` for one instance,
80
+ * `createSealedConversationStore` to keep nothing on the server, or your
81
+ * own database.
82
+ */
83
+ conversationStore?: TheoremConversationStore;
84
+ /**
85
+ * How long a gate (permission, confirmation, sign-in) waits for its answer, in
86
+ * milliseconds. An answer after that is refused with `session.gate_expired`.
87
+ * Default: 30 minutes.
88
+ */
89
+ gateTtlMs?: number;
90
+ /** Retain settled tool results in milliseconds. Default: 24 hours. */
91
+ operationRetentionMs?: number;
92
+ /** Finite per-session bounds. Unresolved authority is never evicted to satisfy them. */
93
+ sessionLimits?: Partial<TheoremSessionLimits>;
94
+ /** Maximum UTF-8 request body bytes before JSON parsing. Default: 16 MiB. */
95
+ maxRequestBytes?: number;
96
+ pageToolBroker?: PageToolBroker;
97
+ /** Check current resource access before disclosing a saved tool result. This callback must be read-only. */
98
+ authorizeToolReplay?: (context: {
99
+ request: Request;
100
+ operation: Extract<SessionToolOperation, {
101
+ status: 'settled';
102
+ }>;
103
+ }) => boolean | Promise<boolean>;
104
+ /**
105
+ * Tool credentials by session. Your OAuth callback route saves the token here
106
+ * under the same session id; every turn reads from here. Default: in-process
107
+ * memory — pass the same instance to your callback route.
108
+ */
109
+ credentialStore?: TheoremCredentialStore;
110
+ /**
111
+ * The sign-in URL for an OAuth gate: begin the flow with `createOAuthPkceFlow`,
112
+ * binding it to `sessionId`, and return its `authorizationUrl`. Without it an
113
+ * OAuth gate carries no sign-in URL.
114
+ */
115
+ authorizationUrl?: (challenge: Extract<ToolGate, {
116
+ kind: 'auth';
117
+ }>['authChallenge'], ctx: {
118
+ request: Request;
119
+ sessionId: string;
120
+ }) => string | Promise<string>;
121
+ /** Default: in-process memory. Use a shared store when turns and steers can land on different instances. */
122
+ steerInbox?: SteerInbox;
123
+ /**
124
+ * Who reads this host's replies, and what an event keeps for them: forwarded to `forClient`
125
+ * for each event and to `clientError` for a failure the handler catches.
126
+ */
127
+ clientEvents?: ClientTurnOptions;
128
+ /**
129
+ * Called with any error the handler catches, for reporting. Users read the
130
+ * profile's labels wording for the error's kind, never the error itself.
131
+ */
132
+ onError?: (err: unknown, ctx: {
133
+ request: Request;
134
+ }) => void;
135
+ };
136
+ /** A host profile runs no model, and takes no turns to steer. */
137
+ export type TheoremHostHandlerOptions = Omit<TheoremHandlerOptions, 'profile' | 'provider' | 'steerInbox' | 'conversationStore'> & {
138
+ /** Host profile to serve. Registered with the kernel when the handler is created. */
139
+ profile: Extract<Profile, {
140
+ type: 'host';
141
+ }> | Extract<ProfileDefinition, {
142
+ type: 'host';
143
+ }>;
144
+ };
145
+ /** A JSON body checked against `schema`; a missing or malformed field is a `request` error (400). */
146
+ export declare function readBody<T>(request: Request, schema: z.ZodType<T>, maxBytes?: number): Promise<T>;
147
+ export declare function createTheoremHandler(options: TheoremHandlerOptions): (request: Request) => Promise<Response>;
148
+ /**
149
+ * Serves a host profile to `<TheoremHost />`: the page calls the profile's tools
150
+ * directly, and every call runs through the kernel's gates and guardrails.
151
+ */
152
+ export declare function createTheoremHostHandler(options: TheoremHostHandlerOptions): (request: Request) => Promise<Response>;