--- a/dsh-client-connection/lib/client.js +++ b/dsh-client-connection/lib/client.js @@ -0,0 +0,0 @@ }); /** session.fork response value (the child session id). */ const sessionForkValueSchema = object({ sessionId: sessionIdSchema }); - object({ + const sessionTruncateValueSchema = object({ lastSeq: number().int().nonnegative().optional() }); object({ sessionId: sessionIdSchema, beforeSeq: number().int().nonnegative().optional(), maxMessages: number().int().positive().optional() @@ -0,0 +0,0 @@ lastSeq: number().int() }), object({ + type: literal("session/reload"), + sessionId: sessionIdSchema, + lastSeq: number().int() + }), + object({ type: literal("approval/requested"), sessionId: sessionIdSchema, approvalId: approvalRequestIdSchema, @@ -0,0 +0,0 @@ "session.selectModel": sessionSelectModelValueSchema, "session.rename": sessionRenameValueSchema, "session.fork": sessionForkValueSchema, - "session.prompt": sessionPromptValueSchema, + "session.truncate": sessionTruncateValueSchema, "session.prompt": sessionPromptValueSchema, "session.attachment": sessionAttachmentValueSchema, "session.updateQueue": sessionUpdateQueueValueSchema, "session.cancel": sessionCancelValueSchema, @@ -0,0 +0,0 @@ selectModel: (payload, signal) => this.callUnary("session.selectModel", payload, signal), rename: (payload, signal) => this.callUnary("session.rename", payload, signal), fork: (payload, signal) => this.callUnary("session.fork", payload, signal), - prompt: (payload, signal) => this.callUnary("session.prompt", payload, signal), + truncate: (payload, signal) => this.callUnary("session.truncate", payload, signal), prompt: (payload, signal) => this.callUnary("session.prompt", payload, signal), attachment: (payload, signal) => this.callUnary("session.attachment", payload, signal), updateQueue: (payload, signal) => this.callUnary("session.updateQueue", payload, signal), cancel: (payload, signal) => this.callUnary("session.cancel", payload, signal) @@ -0,0 +0,0 @@ - if (sources.size !== raw.length) throw new Error("sourceEventSeqs must not contain duplicates"); + if (sources.size !== raw.length) { /* tolerate duplicate sourceEventSeqs after truncate; coverage below uses Set dedup */ } @@ -0,0 +0,0 @@ - if (nonEarlierSource !== void 0) throw new Error(`sourceEventSeqs must reference earlier events: ${nonEarlierSource} >= current seq ${event.seq}`); + if (nonEarlierSource !== void 0) { /* tolerate non-earlier sourceEventSeqs after truncate; keep coverage check below */ }