@theoremjs/react 0.3.0 → 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.
- package/README.md +728 -202
- package/client/composer-hints.js +1 -1
- package/client/decision-images.d.ts +76 -0
- package/client/decision-images.js +139 -0
- package/client/decision-transport.d.ts +26 -4
- package/client/decision-transport.js +79 -6
- package/client/embedding-input.d.ts +84 -0
- package/client/embedding-input.js +194 -0
- package/client/embedding-space.d.ts +82 -0
- package/client/embedding-space.js +389 -0
- package/client/embedding-transport.d.ts +40 -0
- package/client/embedding-transport.js +71 -0
- package/client/failure.d.ts +7 -10
- package/client/failure.js +9 -9
- package/client/host-call.d.ts +1 -1
- package/client/host-call.js +7 -2
- package/client/host-transport.d.ts +2 -0
- package/client/host-transport.js +3 -2
- package/client/index.d.ts +19 -11
- package/client/index.js +14 -10
- package/client/ink-waveform.d.ts +1 -1
- package/client/ink-waveform.js +1 -2
- package/client/live/apply-live-turn-tool-event.js +1 -1
- package/client/live/live-captions.d.ts +30 -0
- package/client/live/live-captions.js +105 -1
- package/client/live/live-mic-forward.d.ts +1 -0
- package/client/live/live-mic-forward.js +11 -2
- package/client/live/live-page-tool.d.ts +34 -0
- package/client/live/live-page-tool.js +11 -0
- package/client/live/live-state.d.ts +4 -2
- package/client/live/live-state.js +2 -0
- package/client/live/live-video.js +1 -1
- package/client/live/run-live-tool-call.d.ts +7 -2
- package/client/live/run-live-tool-call.js +48 -10
- package/client/live/use-live-caption-log.d.ts +17 -0
- package/client/live/use-live-caption-log.js +51 -0
- package/client/live-client.d.ts +52 -4
- package/client/live-client.js +250 -59
- package/client/live-messages.d.ts +51 -13
- package/client/live-messages.js +42 -9
- package/client/page-dispatch.d.ts +15 -0
- package/client/page-dispatch.js +63 -0
- package/client/run-commit.d.ts +16 -43
- package/client/run-commit.js +26 -101
- package/client/run-session.d.ts +40 -41
- package/client/run-session.js +104 -112
- package/client/schema-fields.js +27 -6
- package/client/shaped-data.js +37 -8
- package/client/source-citations.js +1 -1
- package/client/space-geometry.d.ts +39 -0
- package/client/space-geometry.js +183 -0
- package/client/state-fields.js +1 -1
- package/client/tool-result.js +30 -12
- package/client/tool-resume.d.ts +18 -1
- package/client/tool-resume.js +4 -1
- package/client/trace-feed.d.ts +1 -1
- package/client/trace-story.d.ts +2 -2
- package/client/trace-story.js +43 -19
- package/client/trace-view.d.ts +2 -2
- package/client/trace-view.js +56 -16
- package/client/transcript-groups.d.ts +28 -2
- package/client/transcript-groups.js +63 -13
- package/client/transcript-schema.d.ts +10 -0
- package/client/transcript-schema.js +120 -0
- package/client/transport.d.ts +114 -26
- package/client/transport.js +106 -32
- package/client/turn-client.d.ts +17 -8
- package/client/turn-client.js +26 -31
- package/client/voice-recorder.d.ts +1 -1
- package/client/voice-recorder.js +2 -5
- package/client/wire-line.js +5 -5
- package/client/worklets/mic-capture.js +9 -9
- package/components/InkWaveform.d.ts +12 -1
- package/components/InkWaveform.js +65 -42
- package/components/live/use-live-runner-controls.d.ts +3 -4
- package/components/live/use-live-runner-controls.js +6 -10
- package/components/live/use-live-runner-model.d.ts +10 -6
- package/components/live/use-live-runner-model.js +29 -14
- package/components/live/use-live-runner-ui.d.ts +10 -8
- package/components/live/use-live-runner-ui.js +19 -11
- package/components/live/use-live-session-client.d.ts +4 -4
- package/components/live/use-live-session-client.js +11 -8
- package/components/use-composer-voice.d.ts +4 -4
- package/components/use-composer-voice.js +8 -8
- package/components/use-editor-selection.js +4 -1
- package/components/use-voice-playback.d.ts +2 -1
- package/components/use-voice-playback.js +4 -4
- package/hooks/use-described.d.ts +5 -1
- package/hooks/use-described.js +11 -9
- package/hooks/use-embedding-index.d.ts +27 -0
- package/hooks/use-embedding-index.js +43 -0
- package/hooks/use-one-call.d.ts +31 -0
- package/hooks/use-one-call.js +76 -0
- package/hooks/use-page-tool-warnings.d.ts +6 -0
- package/hooks/use-page-tool-warnings.js +25 -0
- package/hooks/use-second-ticker.d.ts +2 -0
- package/hooks/use-second-ticker.js +13 -0
- package/hooks/use-theorem-chat-actions.d.ts +25 -21
- package/hooks/use-theorem-chat-actions.js +67 -45
- package/hooks/use-theorem-chat-state.d.ts +6 -6
- package/hooks/use-theorem-chat-state.js +13 -9
- package/hooks/use-theorem-chat.d.ts +48 -14
- package/hooks/use-theorem-chat.js +329 -141
- package/hooks/use-theorem-decision.d.ts +5 -10
- package/hooks/use-theorem-decision.js +4 -67
- package/hooks/use-theorem-embedding.d.ts +18 -0
- package/hooks/use-theorem-embedding.js +12 -0
- package/hooks/use-theorem-host.d.ts +5 -4
- package/hooks/use-theorem-host.js +26 -8
- package/hooks/use-theorem-interface.d.ts +6 -3
- package/hooks/use-theorem-interface.js +12 -22
- package/index.d.ts +6 -3
- package/index.js +5 -2
- package/live.d.ts +1 -0
- package/live.js +1 -1
- package/package.json +6 -5
- package/server/checkpoint-ownership.d.ts +6 -0
- package/server/checkpoint-ownership.js +42 -0
- package/server/conversation-store.d.ts +92 -0
- package/server/conversation-store.js +131 -0
- package/server/conversation.d.ts +193 -0
- package/server/conversation.js +552 -0
- package/server/decision-handler.d.ts +12 -4
- package/server/decision-handler.js +29 -38
- package/server/embedding-handler.d.ts +33 -0
- package/server/embedding-handler.js +45 -0
- package/server/handler.d.ts +58 -20
- package/server/handler.js +441 -238
- package/server/mod.d.ts +15 -6
- package/server/mod.js +13 -5
- package/server/page-dispatch.d.ts +22 -0
- package/server/page-dispatch.js +127 -0
- package/server/request-body.d.ts +2 -0
- package/server/request-body.js +42 -0
- package/server/request-check.d.ts +6 -1
- package/server/request-check.js +27 -12
- package/server/session-authority.d.ts +8 -0
- package/server/session-authority.js +78 -0
- package/server/session-boundary.d.ts +26 -0
- package/server/session-boundary.js +64 -0
- package/server/session-identity.d.ts +16 -0
- package/server/session-identity.js +41 -0
- package/server/session-limits.d.ts +12 -0
- package/server/session-limits.js +59 -0
- package/server/session-store.d.ts +69 -20
- package/server/session-store.js +220 -5
- package/server/single-action.d.ts +21 -0
- package/server/single-action.js +30 -0
- package/server/steer-inbox.js +1 -1
- package/server/tool-operations.d.ts +6 -0
- package/server/tool-operations.js +132 -0
- package/server/turn-input.d.ts +10 -0
- package/server/turn-input.js +29 -0
- package/styles/ink-controls.css +78 -78
- package/ui/CardWall.d.ts +10 -0
- package/ui/CardWall.js +61 -0
- package/ui/ChatComposerBar.d.ts +28 -5
- package/ui/ChatComposerBar.js +85 -30
- package/ui/ChatTranscript.d.ts +14 -1
- package/ui/ChatTranscript.js +110 -57
- package/ui/ConsoleFrame.d.ts +61 -4
- package/ui/ConsoleFrame.js +109 -9
- package/ui/DecisionAnswers.d.ts +40 -2
- package/ui/DecisionAnswers.js +166 -35
- package/ui/DecisionImages.d.ts +16 -0
- package/ui/DecisionImages.js +46 -0
- package/ui/EmbeddingDocuments.d.ts +78 -0
- package/ui/EmbeddingDocuments.js +278 -0
- package/ui/EmbeddingQuery.d.ts +27 -0
- package/ui/EmbeddingQuery.js +95 -0
- package/ui/EmbeddingResults.d.ts +41 -0
- package/ui/EmbeddingResults.js +165 -0
- package/ui/EmbeddingSpace.d.ts +26 -0
- package/ui/EmbeddingSpace.js +106 -0
- package/ui/LiveCaptionsPanel.d.ts +22 -0
- package/ui/LiveCaptionsPanel.js +27 -0
- package/ui/LiveRunner.d.ts +6 -4
- package/ui/LiveRunner.js +42 -55
- package/ui/PaneState.d.ts +33 -0
- package/ui/PaneState.js +50 -0
- package/ui/SchemaFields.d.ts +1 -1
- package/ui/SchemaFields.js +54 -26
- package/ui/ShapedData.js +73 -28
- package/ui/SidePanel.d.ts +74 -5
- package/ui/SidePanel.js +82 -9
- package/ui/StateFields.d.ts +10 -2
- package/ui/StateFields.js +56 -13
- package/ui/TheoremChat.d.ts +65 -14
- package/ui/TheoremChat.js +66 -78
- package/ui/TheoremDecision.d.ts +12 -20
- package/ui/TheoremDecision.js +78 -35
- package/ui/TheoremEmbedding.d.ts +27 -0
- package/ui/TheoremEmbedding.js +122 -0
- package/ui/TheoremHost.d.ts +22 -5
- package/ui/TheoremHost.js +127 -37
- package/ui/ToolGateCard.d.ts +5 -1
- package/ui/ToolGateCard.js +30 -23
- package/ui/ToolResult.js +12 -10
- package/ui/ToolResultCharts.js +29 -12
- package/ui/TraceCharts.d.ts +2 -2
- package/ui/TraceCharts.js +48 -17
- package/ui/TraceGuardrails.d.ts +3 -2
- package/ui/TraceGuardrails.js +24 -6
- package/ui/TraceInspector.d.ts +11 -1
- package/ui/TraceInspector.js +45 -28
- package/ui/TraceInspectorPanel.d.ts +31 -9
- package/ui/TraceInspectorPanel.js +77 -39
- package/ui/TraceOverview.d.ts +7 -3
- package/ui/TraceOverview.js +44 -14
- package/ui/TraceSpanDetail.js +24 -22
- package/ui/TraceStory.js +9 -8
- package/ui/TraceValues.js +19 -9
- package/ui/TraceWaterfall.js +12 -9
- package/ui/VoiceNote.js +4 -4
- package/ui/approval-heading.d.ts +4 -0
- package/ui/approval-heading.js +9 -0
- package/ui/arrive.d.ts +18 -0
- package/ui/arrive.js +46 -0
- package/ui/built/theme.css +86 -68
- package/ui/built/theme.css.d.ts +9 -0
- package/ui/built/theorem.d.ts +3 -3
- package/ui/built/theorem.js +34 -5
- package/ui/built/theorem.variants.d.ts +8 -2
- package/ui/code-language.d.ts +12 -0
- package/ui/code-language.js +50 -0
- package/ui/disclosure-motion.js +53 -9
- package/ui/embedding-space-gl.d.ts +37 -0
- package/ui/embedding-space-gl.js +663 -0
- package/ui/embedding-space-view.d.ts +8 -0
- package/ui/embedding-space-view.js +8 -0
- package/ui/glide.d.ts +7 -0
- package/ui/glide.js +44 -0
- package/ui/icons.js +2 -1
- package/ui/index.d.ts +20 -9
- package/ui/index.js +20 -10
- package/ui/labels-provider.js +5 -2
- package/ui/labels.d.ts +374 -85
- package/ui/labels.js +1028 -188
- package/ui/markdown-plugins.d.ts +9 -0
- package/ui/markdown-plugins.js +13 -0
- package/ui/mcp-icon.d.ts +6 -0
- package/ui/mcp-icon.js +8 -0
- package/ui/row-keys.d.ts +19 -0
- package/ui/row-keys.js +33 -0
- package/ui/theme.d.ts +1 -1
- package/ui/theme.js +2 -2
- package/ui/theorem-theme.js +32 -10
- package/ui/trace-palette.d.ts +2 -16
- package/ui/trace-palette.js +2 -16
- package/ui/trace-patterns.d.ts +11 -3
- package/ui/trace-patterns.js +16 -3
- package/ui/transcript-copy-text.js +1 -0
- package/ui/wall-columns.d.ts +8 -0
- package/ui/wall-columns.js +19 -0
- package/client/walk-away.d.ts +0 -34
- package/client/walk-away.js +0 -48
- package/server/walk-away.d.ts +0 -22
- package/server/walk-away.js +0 -41
|
@@ -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
|
+
}
|
package/server/handler.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type PageToolBroker } from './page-dispatch.ts';
|
|
1
2
|
/**
|
|
2
3
|
* One Web-standard handler that serves a Theorem chat UI for a single profile.
|
|
3
4
|
*
|
|
@@ -9,27 +10,35 @@
|
|
|
9
10
|
* waits on gates walks away from them first (`abandon`)
|
|
10
11
|
* - `POST <base>/invoke` → NDJSON events for the user's answer to a paused tool call
|
|
11
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
|
|
12
15
|
*
|
|
13
16
|
* `createTheoremHostHandler` serves a host profile the same way, with no model:
|
|
14
17
|
*
|
|
15
18
|
* - `GET <base>` → `{ interface }` the tools the page may call, with their schemas
|
|
16
19
|
* - `POST <base>/call` → NDJSON events for one call of one of those tools
|
|
17
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
|
|
18
22
|
*
|
|
19
|
-
* Trust boundary: the
|
|
20
|
-
*
|
|
21
|
-
*
|
|
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.
|
|
23
30
|
* Tool credentials are held on the server too: a key the user types at a gate
|
|
24
31
|
* is sent once and saved, and no credential is ever sent back to the browser.
|
|
25
32
|
*
|
|
26
33
|
* @module
|
|
27
34
|
*/
|
|
28
|
-
import { type
|
|
35
|
+
import { type Profile, type ProfileDefinition, type ProviderHostOptions, type ToolGate, type z } from '@theoremjs/agents';
|
|
29
36
|
import { type ClientTurnOptions } from '@theoremjs/agents/host';
|
|
30
|
-
import type
|
|
37
|
+
import { type TheoremConversationStore } from './conversation-store.ts';
|
|
31
38
|
import { type TheoremCredentialStore } from './credential-store.ts';
|
|
32
|
-
|
|
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';
|
|
33
42
|
import { type SteerInbox } from './steer-inbox.ts';
|
|
34
43
|
export type TheoremRequestContext = {
|
|
35
44
|
request: Request;
|
|
@@ -40,12 +49,21 @@ export type TheoremHandlerOptions = {
|
|
|
40
49
|
/** Profile to serve. Registered with the kernel when the handler is created. */
|
|
41
50
|
profile: Profile | ProfileDefinition;
|
|
42
51
|
/**
|
|
43
|
-
*
|
|
52
|
+
* Host options for registered providers, or a factory for hosts that
|
|
44
53
|
* pick keys per request (BYOK, tenant vaults). Tools are registered by the host.
|
|
45
54
|
*/
|
|
46
|
-
provider:
|
|
47
|
-
/**
|
|
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
|
+
*/
|
|
48
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;
|
|
49
67
|
/**
|
|
50
68
|
* Resolve the caller's session id — e.g. `${userId}:${conversationId}` from your
|
|
51
69
|
* auth. Return `undefined` to refuse the request (401). Default: an opaque id
|
|
@@ -54,12 +72,35 @@ export type TheoremHandlerOptions = {
|
|
|
54
72
|
session?: (request: Request) => string | undefined | Promise<string | undefined>;
|
|
55
73
|
/** Default: in-process memory. Use a shared store when requests can reach different instances. */
|
|
56
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;
|
|
57
84
|
/**
|
|
58
85
|
* How long a gate (permission, confirmation, sign-in) waits for its answer, in
|
|
59
86
|
* milliseconds. An answer after that is refused with `session.gate_expired`.
|
|
60
87
|
* Default: 30 minutes.
|
|
61
88
|
*/
|
|
62
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>;
|
|
63
104
|
/**
|
|
64
105
|
* Tool credentials by session. Your OAuth callback route saves the token here
|
|
65
106
|
* under the same session id; every turn reads from here. Default: in-process
|
|
@@ -79,18 +120,21 @@ export type TheoremHandlerOptions = {
|
|
|
79
120
|
}) => string | Promise<string>;
|
|
80
121
|
/** Default: in-process memory. Use a shared store when turns and steers can land on different instances. */
|
|
81
122
|
steerInbox?: SteerInbox;
|
|
82
|
-
/**
|
|
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
|
+
*/
|
|
83
127
|
clientEvents?: ClientTurnOptions;
|
|
84
128
|
/**
|
|
85
129
|
* Called with any error the handler catches, for reporting. Users read the
|
|
86
|
-
* profile's
|
|
130
|
+
* profile's labels wording for the error's kind, never the error itself.
|
|
87
131
|
*/
|
|
88
132
|
onError?: (err: unknown, ctx: {
|
|
89
133
|
request: Request;
|
|
90
134
|
}) => void;
|
|
91
135
|
};
|
|
92
136
|
/** A host profile runs no model, and takes no turns to steer. */
|
|
93
|
-
export type TheoremHostHandlerOptions = Omit<TheoremHandlerOptions, 'profile' | 'provider' | 'steerInbox'> & {
|
|
137
|
+
export type TheoremHostHandlerOptions = Omit<TheoremHandlerOptions, 'profile' | 'provider' | 'steerInbox' | 'conversationStore'> & {
|
|
94
138
|
/** Host profile to serve. Registered with the kernel when the handler is created. */
|
|
95
139
|
profile: Extract<Profile, {
|
|
96
140
|
type: 'host';
|
|
@@ -99,13 +143,7 @@ export type TheoremHostHandlerOptions = Omit<TheoremHandlerOptions, 'profile' |
|
|
|
99
143
|
}>;
|
|
100
144
|
};
|
|
101
145
|
/** A JSON body checked against `schema`; a missing or malformed field is a `request` error (400). */
|
|
102
|
-
export declare function readBody<T>(request: Request, schema: z.ZodType<T
|
|
103
|
-
/**
|
|
104
|
-
* The session id the handler issued in its cookie, for a host route outside the
|
|
105
|
-
* handler (an OAuth callback) that saves credentials under it. Hosts that pass
|
|
106
|
-
* a `session` resolver use their own id instead.
|
|
107
|
-
*/
|
|
108
|
-
export declare function theoremSessionId(request: Request): string | undefined;
|
|
146
|
+
export declare function readBody<T>(request: Request, schema: z.ZodType<T>, maxBytes?: number): Promise<T>;
|
|
109
147
|
export declare function createTheoremHandler(options: TheoremHandlerOptions): (request: Request) => Promise<Response>;
|
|
110
148
|
/**
|
|
111
149
|
* Serves a host profile to `<TheoremHost />`: the page calls the profile's tools
|