fix(core): enforce one step settlement
This commit is contained in:
parent
59e8dbb066
commit
db664db5f3
8 changed files with 71 additions and 43 deletions
|
|
@ -165,7 +165,7 @@ export namespace Step {
|
|||
schema: {
|
||||
...Base,
|
||||
assistantMessageID: SessionMessage.ID,
|
||||
finish: Schema.String,
|
||||
finish: SessionMessage.Finish,
|
||||
cost: Schema.Finite,
|
||||
tokens: Schema.Struct({
|
||||
input: Schema.Finite,
|
||||
|
|
@ -195,7 +195,7 @@ export namespace Step {
|
|||
|
||||
export const Interrupted = Event.define({
|
||||
type: "session.next.step.interrupted",
|
||||
...options,
|
||||
...stepSettlementOptions,
|
||||
schema: {
|
||||
...Base,
|
||||
assistantMessageID: SessionMessage.ID,
|
||||
|
|
|
|||
|
|
@ -21,6 +21,17 @@ export const UnknownError = Schema.Struct({
|
|||
message: Schema.String,
|
||||
}).annotate({ identifier: "Session.Error.Unknown" })
|
||||
|
||||
export const Finish = Schema.Literals([
|
||||
"stop",
|
||||
"length",
|
||||
"tool-calls",
|
||||
"content-filter",
|
||||
"error",
|
||||
"unknown",
|
||||
"interrupted",
|
||||
])
|
||||
export type Finish = typeof Finish.Type
|
||||
|
||||
const Base = {
|
||||
id: ID,
|
||||
metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),
|
||||
|
|
@ -169,7 +180,7 @@ export const Assistant = Schema.Struct({
|
|||
end: Schema.String.pipe(optional),
|
||||
files: Schema.Array(RelativePath).pipe(optional),
|
||||
}).pipe(optional),
|
||||
finish: Schema.String.pipe(optional),
|
||||
finish: Finish.pipe(optional),
|
||||
cost: Schema.Finite.pipe(optional),
|
||||
tokens: Schema.Struct({
|
||||
input: Schema.Finite,
|
||||
|
|
|
|||
|
|
@ -42,11 +42,14 @@ describe("public event manifest", () => {
|
|||
expect(Reference.Event.Definitions).toEqual([Reference.Event.Updated])
|
||||
expect(EventManifest.Latest.has("ide.installed")).toBe(false)
|
||||
expect(IdeEvent.Definitions).toEqual([IdeEvent.Installed])
|
||||
expect(EventManifest.Definitions.slice(44, 47)).toEqual([
|
||||
const partDelta = EventManifest.Definitions.indexOf(SessionV1.Event.PartDelta)
|
||||
expect(partDelta).toBeGreaterThanOrEqual(0)
|
||||
expect(EventManifest.Definitions.slice(partDelta, partDelta + 3)).toEqual([
|
||||
SessionV1.Event.PartDelta,
|
||||
SessionV1.Event.Diff,
|
||||
SessionV1.Event.Error,
|
||||
])
|
||||
expect(EventManifest.Latest.get("session.next.step.interrupted")).toBe(SessionEvent.Step.Interrupted)
|
||||
expect(EventManifest.Durable.has("session.next.step.ended.1")).toBe(false)
|
||||
expect(EventManifest.Durable.get("session.next.step.ended.2")).toBe(SessionEvent.Step.Ended)
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue