@markusylisiurunen/tau 0.3.17 → 0.3.19
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 +27 -25
- package/dist/core/cli.js +2 -2
- package/dist/core/cli.js.map +1 -1
- package/dist/core/commands/registry.js +1 -1
- package/dist/core/commands/registry.js.map +1 -1
- package/dist/core/config/builtin_themes.js +31 -0
- package/dist/core/config/builtin_themes.js.map +1 -1
- package/dist/core/models/catalog.js +14 -1
- package/dist/core/models/catalog.js.map +1 -1
- package/dist/core/nook/cli.js +62 -1
- package/dist/core/nook/cli.js.map +1 -1
- package/dist/core/nook/client.js +156 -2
- package/dist/core/nook/client.js.map +1 -1
- package/dist/core/nook/deploy.js +27 -8
- package/dist/core/nook/deploy.js.map +1 -1
- package/dist/core/nook/index.js +2 -2
- package/dist/core/nook/index.js.map +1 -1
- package/dist/core/nook/validation.js +25 -10
- package/dist/core/nook/validation.js.map +1 -1
- package/dist/core/personas.js +8 -8
- package/dist/core/personas.js.map +1 -1
- package/dist/core/runtime/chat_runtime.js +3 -0
- package/dist/core/runtime/chat_runtime.js.map +1 -1
- package/dist/core/runtime/conversation_turn_runtime.js +7 -0
- package/dist/core/runtime/conversation_turn_runtime.js.map +1 -1
- package/dist/core/telegram/adapter.js +54 -11
- package/dist/core/telegram/adapter.js.map +1 -1
- package/dist/core/telegram/cli.js +0 -25
- package/dist/core/telegram/cli.js.map +1 -1
- package/dist/core/telegram/runtime.js +6 -1
- package/dist/core/telegram/runtime.js.map +1 -1
- package/dist/core/telegram/session_manager.js +269 -20
- package/dist/core/telegram/session_manager.js.map +1 -1
- package/dist/core/telegram/workspace.js +55 -32
- package/dist/core/telegram/workspace.js.map +1 -1
- package/dist/core/tools/execution_backend.js +12 -0
- package/dist/core/tools/execution_backend.js.map +1 -1
- package/dist/core/tools/nook.js +80 -5
- package/dist/core/tools/nook.js.map +1 -1
- package/dist/core/types.js +1 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/model_stream.js +2 -1
- package/dist/core/utils/model_stream.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/execution/cloudflare_sandbox_execution_environment.js +8 -0
- package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -1
- package/dist/execution/fly_sprite_execution_environment.js +8 -0
- package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
- package/dist/host/local_session_host.js +18 -2
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/host/session_protocol_handler.js +132 -34
- package/dist/host/session_protocol_handler.js.map +1 -1
- package/dist/nook/README.md +23 -0
- package/dist/nook/worker/index.js +318 -18
- package/dist/nook/worker/index.js.map +1 -1
- package/dist/protocol/index.d.ts +2 -2
- package/dist/protocol/index.js +1 -1
- package/dist/protocol/index.js.map +1 -1
- package/dist/protocol/session_protocol.d.ts +52 -7
- package/dist/protocol/session_protocol.js +120 -3
- package/dist/protocol/session_protocol.js.map +1 -1
- package/dist/sdk/index.d.ts +3 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/session.js +72 -10
- package/dist/sdk/session.js.map +1 -1
- package/dist/sdk/types.d.ts +11 -3
- package/dist/transport/in_process_session_transport.js +15 -1
- package/dist/transport/in_process_session_transport.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/session_protocol_transport_helpers.js +14 -0
- package/dist/transport/session_protocol_transport_helpers.js.map +1 -1
- package/dist/transport/session_transport.d.ts +3 -1
- package/dist/transport/stdio_session_transport.d.ts +3 -1
- package/dist/transport/stdio_session_transport.js +15 -1
- package/dist/transport/stdio_session_transport.js.map +1 -1
- package/dist/transport/websocket_session_transport.d.ts +3 -1
- package/dist/transport/websocket_session_transport.js +15 -1
- package/dist/transport/websocket_session_transport.js.map +1 -1
- package/dist/tui/chat_view.js +9 -10
- package/dist/tui/chat_view.js.map +1 -1
- package/dist/tui/session_chat_app.js +0 -3
- package/dist/tui/session_chat_app.js.map +1 -1
- package/dist/tui/session_chat_controller.js +47 -78
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/dist/tui/session_tool_execution_backend.js +9 -4
- package/dist/tui/session_tool_execution_backend.js.map +1 -1
- package/dist/tui/ui/custom_editor.js +0 -12
- package/dist/tui/ui/custom_editor.js.map +1 -1
- package/dist/tui/ui/{queued_messages.js → pending_messages.js} +14 -11
- package/dist/tui/ui/pending_messages.js.map +1 -0
- package/dist/tui/ui/subagent_panel.js +0 -7
- package/dist/tui/ui/subagent_panel.js.map +1 -1
- package/dist/tui/ui/theme/palette.js +1 -0
- package/dist/tui/ui/theme/palette.js.map +1 -1
- package/dist/tui/ui/theme/theme.js +2 -0
- package/dist/tui/ui/theme/theme.js.map +1 -1
- package/package.json +3 -3
- package/dist/tui/chat_controller/queued_user_messages.js +0 -80
- package/dist/tui/chat_controller/queued_user_messages.js.map +0 -1
- package/dist/tui/ui/queued_messages.js.map +0 -1
package/dist/protocol/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { applySessionProtocolDelta, createSessionProtocolDeltaMessage, createSessionProtocolEphemeralMessage, createSessionProtocolError, createSessionProtocolErrorResponse, createSessionProtocolReadyMessage, createSessionProtocolRequest, createSessionProtocolSuccessResponse, isSessionProtocolMethod, parseSessionProtocolOutgoingLine, parseSessionProtocolRequestLine, SESSION_PROTOCOL_ERROR_CODES, SESSION_PROTOCOL_METHODS, SESSION_PROTOCOL_VERSION, serializeSessionProtocolMessage, validateSessionProtocolParams, validateSessionProtocolResult, } from "./session_protocol.js";
|
|
1
|
+
export { applySessionProtocolDelta, createSessionProtocolDeltaMessage, createSessionProtocolEphemeralMessage, createSessionProtocolError, createSessionProtocolErrorResponse, createSessionProtocolPendingUserMessagesMessage, createSessionProtocolReadyMessage, createSessionProtocolRequest, createSessionProtocolSuccessResponse, isSessionProtocolMethod, parseSessionProtocolOutgoingLine, parseSessionProtocolRequestLine, SESSION_PROTOCOL_ERROR_CODES, SESSION_PROTOCOL_METHODS, SESSION_PROTOCOL_VERSION, serializeSessionProtocolMessage, validateSessionProtocolParams, validateSessionProtocolResult, } from "./session_protocol.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/protocol/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/protocol/index.ts"],"names":[],"mappings":"AA2HA,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,qCAAqC,EACrC,0BAA0B,EAC1B,kCAAkC,EAClC,+CAA+C,EAC/C,iCAAiC,EACjC,4BAA4B,EAC5B,oCAAoC,EACpC,uBAAuB,EACvB,gCAAgC,EAChC,+BAA+B,EAC/B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Message, TextContent, ThinkingContent, ToolCall } from "@earendil-works/pi-ai";
|
|
2
2
|
export declare const SESSION_PROTOCOL_VERSION: 1;
|
|
3
|
-
export declare const SESSION_PROTOCOL_METHODS: readonly ["initialize", "session.create", "session.list", "session.observe", "session.unobserve", "session.record", "session.submit", "session.queue", "session.steer", "session.retry", "session.exec", "session.interrupt", "session.snapshot", "session.setRisk", "session.setReasoning", "session.setPersona", "session.resolvePrompt", "session.autocompletePaths", "session.reload", "session.compact", "session.prune", "session.rewind", "session.terminateSubagent", "session.ephemeral.create", "session.ephemeral.submit", "session.ephemeral.close", "session.clientTool.ack", "session.clientTool.result"];
|
|
3
|
+
export declare const SESSION_PROTOCOL_METHODS: readonly ["initialize", "session.create", "session.list", "session.observe", "session.unobserve", "session.record", "session.submit", "session.queue", "session.steer", "session.cancelPendingMessages", "session.retry", "session.exec", "session.interrupt", "session.snapshot", "session.setRisk", "session.setReasoning", "session.setPersona", "session.resolvePrompt", "session.autocompletePaths", "session.reload", "session.compact", "session.prune", "session.rewind", "session.terminateSubagent", "session.ephemeral.create", "session.ephemeral.submit", "session.ephemeral.close", "session.clientTool.ack", "session.clientTool.result"];
|
|
4
4
|
export type SessionProtocolMethod = (typeof SESSION_PROTOCOL_METHODS)[number];
|
|
5
5
|
export declare const SESSION_PROTOCOL_ERROR_CODES: {
|
|
6
6
|
readonly parseError: "parse_error";
|
|
@@ -9,6 +9,7 @@ export declare const SESSION_PROTOCOL_ERROR_CODES: {
|
|
|
9
9
|
readonly invalidParams: "invalid_params";
|
|
10
10
|
readonly notFound: "not_found";
|
|
11
11
|
readonly busy: "busy";
|
|
12
|
+
readonly cancelled: "cancelled";
|
|
12
13
|
readonly internalError: "internal_error";
|
|
13
14
|
};
|
|
14
15
|
export type SessionProtocolErrorCode = (typeof SESSION_PROTOCOL_ERROR_CODES)[keyof typeof SESSION_PROTOCOL_ERROR_CODES];
|
|
@@ -62,6 +63,7 @@ export type SessionProtocolUserMessageParams = {
|
|
|
62
63
|
export type SessionProtocolSubmitParams = SessionProtocolUserMessageParams;
|
|
63
64
|
export type SessionProtocolQueueParams = SessionProtocolUserMessageParams;
|
|
64
65
|
export type SessionProtocolSteerParams = SessionProtocolUserMessageParams;
|
|
66
|
+
export type SessionProtocolCancelPendingMessagesParams = SessionProtocolSessionIdParams;
|
|
65
67
|
export type SessionProtocolRecordParams = SessionProtocolSessionIdParams & {
|
|
66
68
|
text: string;
|
|
67
69
|
historyEntryId?: string;
|
|
@@ -145,6 +147,7 @@ export type SessionProtocolParamsByMethod = {
|
|
|
145
147
|
"session.submit": SessionProtocolSubmitParams;
|
|
146
148
|
"session.queue": SessionProtocolQueueParams;
|
|
147
149
|
"session.steer": SessionProtocolSteerParams;
|
|
150
|
+
"session.cancelPendingMessages": SessionProtocolCancelPendingMessagesParams;
|
|
148
151
|
"session.retry": SessionProtocolRetryParams;
|
|
149
152
|
"session.exec": SessionProtocolExecParams;
|
|
150
153
|
"session.interrupt": SessionProtocolSessionIdParams;
|
|
@@ -185,6 +188,25 @@ export type SessionProtocolUserMessageTurnResult = SessionProtocolTurnResult & {
|
|
|
185
188
|
export type SessionProtocolSubmitResult = SessionProtocolUserMessageTurnResult;
|
|
186
189
|
export type SessionProtocolQueueResult = SessionProtocolUserMessageTurnResult;
|
|
187
190
|
export type SessionProtocolSteerResult = SessionProtocolUserMessageTurnResult;
|
|
191
|
+
export type SessionProtocolPendingUserMessage = {
|
|
192
|
+
id: string;
|
|
193
|
+
mode: "queue" | "steer";
|
|
194
|
+
text: string;
|
|
195
|
+
};
|
|
196
|
+
export type SessionProtocolPendingUserMessagesState = {
|
|
197
|
+
revision: number;
|
|
198
|
+
messages: SessionProtocolPendingUserMessage[];
|
|
199
|
+
};
|
|
200
|
+
export type SessionProtocolCreateResult = {
|
|
201
|
+
sessionId: string;
|
|
202
|
+
};
|
|
203
|
+
export type SessionProtocolObserveResult = {
|
|
204
|
+
snapshot: SessionProtocolSnapshot;
|
|
205
|
+
pendingUserMessages: SessionProtocolPendingUserMessagesState;
|
|
206
|
+
};
|
|
207
|
+
export type SessionProtocolCancelPendingMessagesResult = {
|
|
208
|
+
cancelled: SessionProtocolPendingUserMessage[];
|
|
209
|
+
};
|
|
188
210
|
export type SessionProtocolRecordResult = {
|
|
189
211
|
snapshot: SessionProtocolSnapshot;
|
|
190
212
|
userHistoryEntryId: string;
|
|
@@ -254,8 +276,8 @@ export type SessionProtocolPromptCompositionSnapshot = {
|
|
|
254
276
|
environmentTag: string;
|
|
255
277
|
subagentPrompts: Record<string, string>;
|
|
256
278
|
};
|
|
257
|
-
export type SessionProtocolReasoningEffort = "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
258
|
-
export type SessionProtocolThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
279
|
+
export type SessionProtocolReasoningEffort = "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
280
|
+
export type SessionProtocolThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
259
281
|
export type SessionProtocolServiceTier = "priority" | "flex";
|
|
260
282
|
export type SessionProtocolModelSnapshot = {
|
|
261
283
|
id: string;
|
|
@@ -271,6 +293,13 @@ export type SessionProtocolModelSnapshot = {
|
|
|
271
293
|
output: number;
|
|
272
294
|
cacheRead: number;
|
|
273
295
|
cacheWrite: number;
|
|
296
|
+
tiers?: Array<{
|
|
297
|
+
inputTokensAbove: number;
|
|
298
|
+
input: number;
|
|
299
|
+
output: number;
|
|
300
|
+
cacheRead: number;
|
|
301
|
+
cacheWrite: number;
|
|
302
|
+
}>;
|
|
274
303
|
};
|
|
275
304
|
contextWindow: number;
|
|
276
305
|
maxTokens: number;
|
|
@@ -346,6 +375,7 @@ export type SessionProtocolSnapshot = {
|
|
|
346
375
|
sessionId: string;
|
|
347
376
|
revision: number;
|
|
348
377
|
lifecycle: SessionProtocolSessionLifecycle;
|
|
378
|
+
costTotal: number;
|
|
349
379
|
settings: SessionProtocolSettingsSnapshot;
|
|
350
380
|
bootstrap: SessionProtocolBootstrapSnapshot;
|
|
351
381
|
catalog: SessionProtocolContentCatalogSnapshot;
|
|
@@ -483,14 +513,15 @@ export type SessionProtocolClientToolResultResult = {
|
|
|
483
513
|
};
|
|
484
514
|
export type SessionProtocolResultByMethod = {
|
|
485
515
|
initialize: SessionProtocolInitializeResult;
|
|
486
|
-
"session.create":
|
|
516
|
+
"session.create": SessionProtocolCreateResult;
|
|
487
517
|
"session.list": SessionProtocolListResult;
|
|
488
|
-
"session.observe":
|
|
518
|
+
"session.observe": SessionProtocolObserveResult;
|
|
489
519
|
"session.unobserve": SessionProtocolUnobserveResult;
|
|
490
520
|
"session.record": SessionProtocolRecordResult;
|
|
491
521
|
"session.submit": SessionProtocolSubmitResult;
|
|
492
522
|
"session.queue": SessionProtocolQueueResult;
|
|
493
523
|
"session.steer": SessionProtocolSteerResult;
|
|
524
|
+
"session.cancelPendingMessages": SessionProtocolCancelPendingMessagesResult;
|
|
494
525
|
"session.retry": SessionProtocolRetryResult;
|
|
495
526
|
"session.exec": SessionProtocolExecResult;
|
|
496
527
|
"session.interrupt": SessionProtocolInterruptResult;
|
|
@@ -548,6 +579,9 @@ export type SessionProtocolDeltaReason = "user-message" | "assistant-stream" | "
|
|
|
548
579
|
export type SessionProtocolChange = {
|
|
549
580
|
type: "lifecycle.set";
|
|
550
581
|
lifecycle: SessionProtocolSessionLifecycle;
|
|
582
|
+
} | {
|
|
583
|
+
type: "cost.set";
|
|
584
|
+
costTotal: number;
|
|
551
585
|
} | {
|
|
552
586
|
type: "settings.set";
|
|
553
587
|
settings: SessionProtocolSettingsSnapshot;
|
|
@@ -655,8 +689,14 @@ export type SessionProtocolEphemeralMessage = {
|
|
|
655
689
|
sessionId: string;
|
|
656
690
|
event: SessionProtocolEphemeralEvent;
|
|
657
691
|
};
|
|
658
|
-
export type
|
|
659
|
-
|
|
692
|
+
export type SessionProtocolPendingUserMessagesMessage = {
|
|
693
|
+
version: typeof SESSION_PROTOCOL_VERSION;
|
|
694
|
+
type: "session.pendingUserMessages";
|
|
695
|
+
sessionId: string;
|
|
696
|
+
state: SessionProtocolPendingUserMessagesState;
|
|
697
|
+
};
|
|
698
|
+
export type SessionProtocolOutgoingMessage = SessionProtocolResponseMessage | SessionProtocolDeltaMessage | SessionProtocolEphemeralMessage | SessionProtocolPendingUserMessagesMessage | SessionProtocolClientToolMessage | SessionProtocolReadyMessage;
|
|
699
|
+
export type SessionProtocolParsedOutgoingMessage = SessionProtocolParsedResponseMessage | SessionProtocolDeltaMessage | SessionProtocolEphemeralMessage | SessionProtocolPendingUserMessagesMessage | SessionProtocolClientToolMessage | SessionProtocolReadyMessage;
|
|
660
700
|
export type SessionProtocolOutgoingParseFailureReason = "invalid_payload" | "empty_line" | "parse_error" | "unsupported_version" | "unsupported_message_type" | "response_invalid_id";
|
|
661
701
|
export type SessionProtocolOutgoingParseFailure = {
|
|
662
702
|
ok: false;
|
|
@@ -709,6 +749,10 @@ export declare function createSessionProtocolEphemeralMessage(options: {
|
|
|
709
749
|
sessionId: string;
|
|
710
750
|
event: SessionProtocolEphemeralEvent;
|
|
711
751
|
}): SessionProtocolEphemeralMessage;
|
|
752
|
+
export declare function createSessionProtocolPendingUserMessagesMessage(options: {
|
|
753
|
+
sessionId: string;
|
|
754
|
+
state: SessionProtocolPendingUserMessagesState;
|
|
755
|
+
}): SessionProtocolPendingUserMessagesMessage;
|
|
712
756
|
export declare function applySessionProtocolDelta(snapshot: SessionProtocolSnapshot, message: SessionProtocolDeltaMessage): SessionProtocolSnapshot;
|
|
713
757
|
export declare function createSessionProtocolReadyMessage(): SessionProtocolReadyMessage;
|
|
714
758
|
export declare function serializeSessionProtocolMessage(message: SessionProtocolOutgoingMessage): string;
|
|
@@ -724,6 +768,7 @@ export declare function validateSessionProtocolParams(method: "session.record",
|
|
|
724
768
|
export declare function validateSessionProtocolParams(method: "session.submit", params: unknown): SessionProtocolParamsValidationResult<SessionProtocolSubmitParams>;
|
|
725
769
|
export declare function validateSessionProtocolParams(method: "session.queue", params: unknown): SessionProtocolParamsValidationResult<SessionProtocolQueueParams>;
|
|
726
770
|
export declare function validateSessionProtocolParams(method: "session.steer", params: unknown): SessionProtocolParamsValidationResult<SessionProtocolSteerParams>;
|
|
771
|
+
export declare function validateSessionProtocolParams(method: "session.cancelPendingMessages", params: unknown): SessionProtocolParamsValidationResult<SessionProtocolCancelPendingMessagesParams>;
|
|
727
772
|
export declare function validateSessionProtocolParams(method: "session.retry", params: unknown): SessionProtocolParamsValidationResult<SessionProtocolRetryParams>;
|
|
728
773
|
export declare function validateSessionProtocolParams(method: "session.exec", params: unknown): SessionProtocolParamsValidationResult<SessionProtocolExecParams>;
|
|
729
774
|
export declare function validateSessionProtocolParams(method: "session.interrupt", params: unknown): SessionProtocolParamsValidationResult<SessionProtocolSessionIdParams>;
|
|
@@ -10,6 +10,7 @@ export const SESSION_PROTOCOL_METHODS = [
|
|
|
10
10
|
"session.submit",
|
|
11
11
|
"session.queue",
|
|
12
12
|
"session.steer",
|
|
13
|
+
"session.cancelPendingMessages",
|
|
13
14
|
"session.retry",
|
|
14
15
|
"session.exec",
|
|
15
16
|
"session.interrupt",
|
|
@@ -46,6 +47,7 @@ export const SESSION_PROTOCOL_ERROR_CODES = {
|
|
|
46
47
|
invalidParams: "invalid_params",
|
|
47
48
|
notFound: "not_found",
|
|
48
49
|
busy: "busy",
|
|
50
|
+
cancelled: "cancelled",
|
|
49
51
|
internalError: "internal_error",
|
|
50
52
|
};
|
|
51
53
|
const SESSION_PROTOCOL_ERROR_CODE_VALUES = [
|
|
@@ -55,6 +57,7 @@ const SESSION_PROTOCOL_ERROR_CODE_VALUES = [
|
|
|
55
57
|
SESSION_PROTOCOL_ERROR_CODES.invalidParams,
|
|
56
58
|
SESSION_PROTOCOL_ERROR_CODES.notFound,
|
|
57
59
|
SESSION_PROTOCOL_ERROR_CODES.busy,
|
|
60
|
+
SESSION_PROTOCOL_ERROR_CODES.cancelled,
|
|
58
61
|
SESSION_PROTOCOL_ERROR_CODES.internalError,
|
|
59
62
|
];
|
|
60
63
|
const sessionProtocolMethodSchema = z.enum(SESSION_PROTOCOL_METHODS);
|
|
@@ -129,6 +132,7 @@ const sessionProtocolOutgoingRoutingSchema = z
|
|
|
129
132
|
"ready",
|
|
130
133
|
"session.delta",
|
|
131
134
|
"session.ephemeral",
|
|
135
|
+
"session.pendingUserMessages",
|
|
132
136
|
"session.clientTool.call",
|
|
133
137
|
"session.clientTool.cancel",
|
|
134
138
|
"response",
|
|
@@ -216,6 +220,7 @@ const sessionProtocolReasoningEffortSchema = z.enum([
|
|
|
216
220
|
"medium",
|
|
217
221
|
"high",
|
|
218
222
|
"xhigh",
|
|
223
|
+
"max",
|
|
219
224
|
]);
|
|
220
225
|
const sessionProtocolSetReasoningParamsSchema = z
|
|
221
226
|
.object({
|
|
@@ -377,7 +382,7 @@ const sessionProtocolModelSnapshotSchema = z
|
|
|
377
382
|
baseUrl: z.string(),
|
|
378
383
|
reasoning: z.boolean(),
|
|
379
384
|
thinkingLevelMap: z
|
|
380
|
-
.partialRecord(z.enum(["off", "minimal", "low", "medium", "high", "xhigh"]), z.string().nullable())
|
|
385
|
+
.partialRecord(z.enum(["off", "minimal", "low", "medium", "high", "xhigh", "max"]), z.string().nullable())
|
|
381
386
|
.optional(),
|
|
382
387
|
input: z.array(z.enum(["text", "image"])),
|
|
383
388
|
cost: z
|
|
@@ -386,6 +391,17 @@ const sessionProtocolModelSnapshotSchema = z
|
|
|
386
391
|
output: z.number().nonnegative(),
|
|
387
392
|
cacheRead: z.number().nonnegative(),
|
|
388
393
|
cacheWrite: z.number().nonnegative(),
|
|
394
|
+
tiers: z
|
|
395
|
+
.array(z
|
|
396
|
+
.object({
|
|
397
|
+
inputTokensAbove: z.number().int().nonnegative(),
|
|
398
|
+
input: z.number().nonnegative(),
|
|
399
|
+
output: z.number().nonnegative(),
|
|
400
|
+
cacheRead: z.number().nonnegative(),
|
|
401
|
+
cacheWrite: z.number().nonnegative(),
|
|
402
|
+
})
|
|
403
|
+
.strict())
|
|
404
|
+
.optional(),
|
|
389
405
|
})
|
|
390
406
|
.strict(),
|
|
391
407
|
contextWindow: z.number().int().positive(),
|
|
@@ -629,6 +645,7 @@ const sessionProtocolSnapshotSchema = z
|
|
|
629
645
|
sessionId: nonEmptyStringSchema,
|
|
630
646
|
revision: z.number().int().positive(),
|
|
631
647
|
lifecycle: sessionProtocolSessionLifecycleSchema,
|
|
648
|
+
costTotal: z.number().nonnegative(),
|
|
632
649
|
settings: sessionProtocolSettingsSnapshotSchema,
|
|
633
650
|
bootstrap: sessionProtocolBootstrapSnapshotSchema,
|
|
634
651
|
catalog: sessionProtocolContentCatalogSnapshotSchema,
|
|
@@ -690,6 +707,12 @@ const sessionProtocolChangeSchema = z.discriminatedUnion("type", [
|
|
|
690
707
|
lifecycle: sessionProtocolSessionLifecycleSchema,
|
|
691
708
|
})
|
|
692
709
|
.strict(),
|
|
710
|
+
z
|
|
711
|
+
.object({
|
|
712
|
+
type: z.literal("cost.set"),
|
|
713
|
+
costTotal: z.number().nonnegative(),
|
|
714
|
+
})
|
|
715
|
+
.strict(),
|
|
693
716
|
z
|
|
694
717
|
.object({
|
|
695
718
|
type: z.literal("settings.set"),
|
|
@@ -860,6 +883,40 @@ const sessionProtocolEphemeralMessageSchema = z
|
|
|
860
883
|
event: sessionProtocolEphemeralEventSchema,
|
|
861
884
|
})
|
|
862
885
|
.strict();
|
|
886
|
+
const sessionProtocolPendingUserMessageSchema = z
|
|
887
|
+
.object({
|
|
888
|
+
id: nonEmptyStringSchema,
|
|
889
|
+
mode: z.enum(["queue", "steer"]),
|
|
890
|
+
text: nonEmptyStringSchema,
|
|
891
|
+
})
|
|
892
|
+
.strict();
|
|
893
|
+
const sessionProtocolPendingUserMessagesStateSchema = z
|
|
894
|
+
.object({
|
|
895
|
+
revision: z.number().int().positive(),
|
|
896
|
+
messages: z.array(sessionProtocolPendingUserMessageSchema),
|
|
897
|
+
})
|
|
898
|
+
.strict()
|
|
899
|
+
.superRefine((state, ctx) => {
|
|
900
|
+
const ids = new Set();
|
|
901
|
+
for (const message of state.messages) {
|
|
902
|
+
if (ids.has(message.id)) {
|
|
903
|
+
ctx.addIssue({
|
|
904
|
+
code: "custom",
|
|
905
|
+
path: ["messages"],
|
|
906
|
+
message: `duplicate pending user message id '${message.id}'`,
|
|
907
|
+
});
|
|
908
|
+
}
|
|
909
|
+
ids.add(message.id);
|
|
910
|
+
}
|
|
911
|
+
});
|
|
912
|
+
const sessionProtocolPendingUserMessagesMessageSchema = z
|
|
913
|
+
.object({
|
|
914
|
+
version: z.literal(SESSION_PROTOCOL_VERSION),
|
|
915
|
+
type: z.literal("session.pendingUserMessages"),
|
|
916
|
+
sessionId: nonEmptyStringSchema,
|
|
917
|
+
state: sessionProtocolPendingUserMessagesStateSchema,
|
|
918
|
+
})
|
|
919
|
+
.strict();
|
|
863
920
|
const sessionProtocolInitializeResultSchema = z
|
|
864
921
|
.object({
|
|
865
922
|
protocolVersion: z.literal(SESSION_PROTOCOL_VERSION),
|
|
@@ -867,6 +924,17 @@ const sessionProtocolInitializeResultSchema = z
|
|
|
867
924
|
alreadyInitialized: z.boolean(),
|
|
868
925
|
})
|
|
869
926
|
.strict();
|
|
927
|
+
const sessionProtocolCreateResultSchema = z
|
|
928
|
+
.object({
|
|
929
|
+
sessionId: nonEmptyStringSchema,
|
|
930
|
+
})
|
|
931
|
+
.strict();
|
|
932
|
+
const sessionProtocolObserveResultSchema = z
|
|
933
|
+
.object({
|
|
934
|
+
snapshot: sessionProtocolSnapshotSchema,
|
|
935
|
+
pendingUserMessages: sessionProtocolPendingUserMessagesStateSchema,
|
|
936
|
+
})
|
|
937
|
+
.strict();
|
|
870
938
|
const sessionProtocolListResultSchema = z
|
|
871
939
|
.object({
|
|
872
940
|
sessions: z.array(sessionProtocolSessionSummarySchema),
|
|
@@ -895,6 +963,11 @@ const sessionProtocolSubmitWithUserResultSchema = sessionProtocolTurnResultSchem
|
|
|
895
963
|
userHistoryEntryId: nonEmptyStringSchema,
|
|
896
964
|
})
|
|
897
965
|
.strict();
|
|
966
|
+
const sessionProtocolCancelPendingMessagesResultSchema = z
|
|
967
|
+
.object({
|
|
968
|
+
cancelled: z.array(sessionProtocolPendingUserMessageSchema),
|
|
969
|
+
})
|
|
970
|
+
.strict();
|
|
898
971
|
const sessionProtocolRecordResultSchema = z
|
|
899
972
|
.object({
|
|
900
973
|
snapshot: sessionProtocolSnapshotSchema,
|
|
@@ -1075,6 +1148,19 @@ export function createSessionProtocolEphemeralMessage(options) {
|
|
|
1075
1148
|
}
|
|
1076
1149
|
return parsedMessage.data;
|
|
1077
1150
|
}
|
|
1151
|
+
export function createSessionProtocolPendingUserMessagesMessage(options) {
|
|
1152
|
+
const message = {
|
|
1153
|
+
version: SESSION_PROTOCOL_VERSION,
|
|
1154
|
+
type: "session.pendingUserMessages",
|
|
1155
|
+
sessionId: options.sessionId,
|
|
1156
|
+
state: options.state,
|
|
1157
|
+
};
|
|
1158
|
+
const parsedMessage = sessionProtocolPendingUserMessagesMessageSchema.safeParse(message);
|
|
1159
|
+
if (!parsedMessage.success) {
|
|
1160
|
+
throw new Error(`session protocol pending user messages message is invalid: ${formatZodError(parsedMessage.error)}`);
|
|
1161
|
+
}
|
|
1162
|
+
return parsedMessage.data;
|
|
1163
|
+
}
|
|
1078
1164
|
export function applySessionProtocolDelta(snapshot, message) {
|
|
1079
1165
|
if (message.sessionId !== snapshot.sessionId) {
|
|
1080
1166
|
throw new Error(`session delta targets '${message.sessionId}' but current snapshot is '${snapshot.sessionId}'`);
|
|
@@ -1100,6 +1186,9 @@ export function applySessionProtocolDelta(snapshot, message) {
|
|
|
1100
1186
|
case "lifecycle.set":
|
|
1101
1187
|
next.lifecycle = change.lifecycle;
|
|
1102
1188
|
break;
|
|
1189
|
+
case "cost.set":
|
|
1190
|
+
next.costTotal = change.costTotal;
|
|
1191
|
+
break;
|
|
1103
1192
|
case "settings.set":
|
|
1104
1193
|
next.settings = structuredClone(change.settings);
|
|
1105
1194
|
break;
|
|
@@ -1478,6 +1567,9 @@ export function parseSessionProtocolOutgoingLine(line) {
|
|
|
1478
1567
|
if (routing.data.type === "session.ephemeral") {
|
|
1479
1568
|
return parseSessionProtocolEphemeralMessage(parsed);
|
|
1480
1569
|
}
|
|
1570
|
+
if (routing.data.type === "session.pendingUserMessages") {
|
|
1571
|
+
return parseSessionProtocolPendingUserMessagesMessage(parsed);
|
|
1572
|
+
}
|
|
1481
1573
|
if (routing.data.type === "session.clientTool.call" ||
|
|
1482
1574
|
routing.data.type === "session.clientTool.cancel") {
|
|
1483
1575
|
return parseSessionProtocolClientToolMessage(parsed);
|
|
@@ -1504,6 +1596,7 @@ export function validateSessionProtocolParams(method, params) {
|
|
|
1504
1596
|
return validateExecParams(params);
|
|
1505
1597
|
case "session.list":
|
|
1506
1598
|
return validateNoParams(method, params);
|
|
1599
|
+
case "session.cancelPendingMessages":
|
|
1507
1600
|
case "session.retry":
|
|
1508
1601
|
case "session.interrupt":
|
|
1509
1602
|
case "session.snapshot":
|
|
@@ -1544,7 +1637,9 @@ export function validateSessionProtocolResult(method, result) {
|
|
|
1544
1637
|
case "initialize":
|
|
1545
1638
|
return validateResult(method, result, sessionProtocolInitializeResultSchema);
|
|
1546
1639
|
case "session.create":
|
|
1640
|
+
return validateResult(method, result, sessionProtocolCreateResultSchema);
|
|
1547
1641
|
case "session.observe":
|
|
1642
|
+
return validateResult(method, result, sessionProtocolObserveResultSchema);
|
|
1548
1643
|
case "session.snapshot":
|
|
1549
1644
|
case "session.setRisk":
|
|
1550
1645
|
case "session.setPersona":
|
|
@@ -1583,6 +1678,8 @@ export function validateSessionProtocolResult(method, result) {
|
|
|
1583
1678
|
case "session.queue":
|
|
1584
1679
|
case "session.steer":
|
|
1585
1680
|
return validateResult(method, result, sessionProtocolSubmitWithUserResultSchema);
|
|
1681
|
+
case "session.cancelPendingMessages":
|
|
1682
|
+
return validateResult(method, result, sessionProtocolCancelPendingMessagesResultSchema);
|
|
1586
1683
|
case "session.record":
|
|
1587
1684
|
return validateResult(method, result, sessionProtocolRecordResultSchema);
|
|
1588
1685
|
case "session.retry":
|
|
@@ -1751,7 +1848,7 @@ function validateSetReasoningParams(params) {
|
|
|
1751
1848
|
: hasIssue(parsed.error, ["sessionId"])
|
|
1752
1849
|
? "session.setReasoning params.sessionId must be a non-empty string"
|
|
1753
1850
|
: hasIssue(parsed.error, ["reasoning"])
|
|
1754
|
-
? "session.setReasoning params.reasoning must be one of none, minimal, low, medium, high, or
|
|
1851
|
+
? "session.setReasoning params.reasoning must be one of none, minimal, low, medium, high, xhigh, or max"
|
|
1755
1852
|
: `session.setReasoning params are invalid: ${formatZodError(parsed.error)}`;
|
|
1756
1853
|
return invalidParams(message);
|
|
1757
1854
|
}
|
|
@@ -2048,7 +2145,7 @@ function validateCreateParams(params) {
|
|
|
2048
2145
|
: hasIssue(parsed.error, ["riskLevel"])
|
|
2049
2146
|
? "session.create params.riskLevel must be 'read-only' or 'read-write'"
|
|
2050
2147
|
: hasIssue(parsed.error, ["reasoning"])
|
|
2051
|
-
? "session.create params.reasoning must be one of none, minimal, low, medium, high, or
|
|
2148
|
+
? "session.create params.reasoning must be one of none, minimal, low, medium, high, xhigh, or max"
|
|
2052
2149
|
: `session.create params are invalid: ${formatZodError(parsed.error)}`;
|
|
2053
2150
|
return invalidParams(message);
|
|
2054
2151
|
}
|
|
@@ -2166,6 +2263,26 @@ function parseSessionProtocolEphemeralMessage(payload) {
|
|
|
2166
2263
|
message: ephemeralMessage.data,
|
|
2167
2264
|
};
|
|
2168
2265
|
}
|
|
2266
|
+
function parseSessionProtocolPendingUserMessagesMessage(payload) {
|
|
2267
|
+
const fail = (message) => outgoingParseFailure("session.pendingUserMessages", null, SESSION_PROTOCOL_ERROR_CODES.invalidRequest, message);
|
|
2268
|
+
const message = sessionProtocolPendingUserMessagesMessageSchema.safeParse(payload);
|
|
2269
|
+
if (!message.success) {
|
|
2270
|
+
if (hasIssue(message.error, [], "unrecognized_keys")) {
|
|
2271
|
+
return fail("session.pendingUserMessages message contains unsupported fields");
|
|
2272
|
+
}
|
|
2273
|
+
if (hasIssue(message.error, ["sessionId"])) {
|
|
2274
|
+
return fail("session.pendingUserMessages.sessionId must be a non-empty string");
|
|
2275
|
+
}
|
|
2276
|
+
if (hasIssue(message.error, ["state"])) {
|
|
2277
|
+
return fail("session.pendingUserMessages.state is invalid");
|
|
2278
|
+
}
|
|
2279
|
+
return fail(`invalid session.pendingUserMessages message: ${formatZodError(message.error)}`);
|
|
2280
|
+
}
|
|
2281
|
+
return {
|
|
2282
|
+
ok: true,
|
|
2283
|
+
message: message.data,
|
|
2284
|
+
};
|
|
2285
|
+
}
|
|
2169
2286
|
function parseSessionProtocolResponseMessage(payload) {
|
|
2170
2287
|
const parsedIdField = sessionProtocolIdFieldSchema.safeParse(payload);
|
|
2171
2288
|
const responseId = parseNullableRequestId(parsedIdField.success ? parsedIdField.data.id : undefined);
|