Skip to content

Commit 72965d3

Browse files
authored
feat(api): add finite durable session history pages (#34097)
1 parent 50eb267 commit 72965d3

23 files changed

Lines changed: 1235 additions & 112 deletions

File tree

‎packages/client/src/generated-effect/client.ts‎

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -149,30 +149,42 @@ const Endpoint0_12 = (raw: RawClient["server.session"]) => (input: Endpoint0_12I
149149
Effect.map((value) => value.data),
150150
)
151151

152-
type Endpoint0_13Request = Parameters<RawClient["server.session"]["session.events"]>[0]
152+
type Endpoint0_13Request = Parameters<RawClient["server.session"]["session.history"]>[0]
153153
type Endpoint0_13Input = {
154154
readonly sessionID: Endpoint0_13Request["params"]["sessionID"]
155+
readonly limit?: Endpoint0_13Request["query"]["limit"]
155156
readonly after?: Endpoint0_13Request["query"]["after"]
156157
}
157158
const Endpoint0_13 = (raw: RawClient["server.session"]) => (input: Endpoint0_13Input) =>
159+
raw["session.history"]({
160+
params: { sessionID: input.sessionID },
161+
query: { limit: input.limit, after: input.after },
162+
}).pipe(Effect.mapError(mapClientError))
163+
164+
type Endpoint0_14Request = Parameters<RawClient["server.session"]["session.events"]>[0]
165+
type Endpoint0_14Input = {
166+
readonly sessionID: Endpoint0_14Request["params"]["sessionID"]
167+
readonly after?: Endpoint0_14Request["query"]["after"]
168+
}
169+
const Endpoint0_14 = (raw: RawClient["server.session"]) => (input: Endpoint0_14Input) =>
158170
Stream.unwrap(
159171
raw["session.events"]({ params: { sessionID: input.sessionID }, query: { after: input.after } }).pipe(
160172
Effect.mapError(mapClientError),
161173
Effect.map((stream) => stream.pipe(Stream.mapError(mapClientError))),
162174
),
163175
)
164176

165-
type Endpoint0_14Request = Parameters<RawClient["server.session"]["session.interrupt"]>[0]
166-
type Endpoint0_14Input = { readonly sessionID: Endpoint0_14Request["params"]["sessionID"] }
167-
const Endpoint0_14 = (raw: RawClient["server.session"]) => (input: Endpoint0_14Input) =>
177+
type Endpoint0_15Request = Parameters<RawClient["server.session"]["session.interrupt"]>[0]
178+
type Endpoint0_15Input = { readonly sessionID: Endpoint0_15Request["params"]["sessionID"] }
179+
const Endpoint0_15 = (raw: RawClient["server.session"]) => (input: Endpoint0_15Input) =>
168180
raw["session.interrupt"]({ params: { sessionID: input.sessionID } }).pipe(Effect.mapError(mapClientError))
169181

170-
type Endpoint0_15Request = Parameters<RawClient["server.session"]["session.message"]>[0]
171-
type Endpoint0_15Input = {
172-
readonly sessionID: Endpoint0_15Request["params"]["sessionID"]
173-
readonly messageID: Endpoint0_15Request["params"]["messageID"]
182+
type Endpoint0_16Request = Parameters<RawClient["server.session"]["session.message"]>[0]
183+
type Endpoint0_16Input = {
184+
readonly sessionID: Endpoint0_16Request["params"]["sessionID"]
185+
readonly messageID: Endpoint0_16Request["params"]["messageID"]
174186
}
175-
const Endpoint0_15 = (raw: RawClient["server.session"]) => (input: Endpoint0_15Input) =>
187+
const Endpoint0_16 = (raw: RawClient["server.session"]) => (input: Endpoint0_16Input) =>
176188
raw["session.message"]({ params: { sessionID: input.sessionID, messageID: input.messageID } }).pipe(
177189
Effect.mapError(mapClientError),
178190
Effect.map((value) => value.data),
@@ -192,9 +204,10 @@ const adaptGroup0 = (raw: RawClient["server.session"]) => ({
192204
clear: Endpoint0_10(raw),
193205
commit: Endpoint0_11(raw),
194206
context: Endpoint0_12(raw),
195-
events: Endpoint0_13(raw),
196-
interrupt: Endpoint0_14(raw),
197-
message: Endpoint0_15(raw),
207+
history: Endpoint0_13(raw),
208+
events: Endpoint0_14(raw),
209+
interrupt: Endpoint0_15(raw),
210+
message: Endpoint0_16(raw),
198211
})
199212

200213
const adaptClient = (raw: RawClient) => ({ sessions: adaptGroup0(raw["server.session"]) })

‎packages/client/src/generated/client.ts‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import type {
2424
SessionsCommitOutput,
2525
SessionsContextInput,
2626
SessionsContextOutput,
27+
SessionsHistoryInput,
28+
SessionsHistoryOutput,
2729
SessionsEventsInput,
2830
SessionsEventsOutput,
2931
SessionsInterruptInput,
@@ -324,6 +326,18 @@ export function make(options: ClientOptions) {
324326
},
325327
requestOptions,
326328
).then((value) => value.data),
329+
history: (input: SessionsHistoryInput, requestOptions?: RequestOptions) =>
330+
request<SessionsHistoryOutput>(
331+
{
332+
method: "GET",
333+
path: `/api/session/${encodeURIComponent(input.sessionID)}/history`,
334+
query: { limit: input.limit, after: input.after },
335+
successStatus: 200,
336+
declaredStatuses: [404, 400, 401],
337+
empty: false,
338+
},
339+
requestOptions,
340+
),
327341
events: (input: SessionsEventsInput, requestOptions?: RequestOptions): AsyncIterable<SessionsEventsOutput> =>
328342
sse<SessionsEventsOutput>(
329343
{

0 commit comments

Comments
 (0)