Skip to content

Commit e41b535

Browse files
chore: generate
1 parent 96d6fb7 commit e41b535

2 files changed

Lines changed: 72 additions & 65 deletions

File tree

packages/opencode/src/provider/provider.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,11 @@ export namespace Provider {
557557

558558
const metadata = iife(() => {
559559
if (input.options?.metadata) return input.options.metadata
560-
try { return JSON.parse(input.options?.headers?.["cf-aig-metadata"]) }
561-
catch { return undefined }
560+
try {
561+
return JSON.parse(input.options?.headers?.["cf-aig-metadata"])
562+
} catch {
563+
return undefined
564+
}
562565
})
563566
const opts = {
564567
metadata,
@@ -572,7 +575,7 @@ export namespace Provider {
572575
accountId,
573576
gateway,
574577
apiKey: apiToken,
575-
...(Object.values(opts).some(v => v !== undefined) ? { options: opts } : {}),
578+
...(Object.values(opts).some((v) => v !== undefined) ? { options: opts } : {}),
576579
})
577580
const unified = createUnified()
578581

packages/opencode/test/session/session.test.ts

Lines changed: 66 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -73,66 +73,70 @@ describe("session.started event", () => {
7373
})
7474

7575
describe("step-finish token propagation via Bus event", () => {
76-
test("non-zero tokens propagate through PartUpdated event", async () => {
77-
await Instance.provide({
78-
directory: projectRoot,
79-
fn: async () => {
80-
const session = await Session.create({})
81-
82-
const messageID = Identifier.ascending("message")
83-
await Session.updateMessage({
84-
id: messageID,
85-
sessionID: session.id,
86-
role: "user",
87-
time: { created: Date.now() },
88-
agent: "user",
89-
model: { providerID: "test", modelID: "test" },
90-
tools: {},
91-
mode: "",
92-
} as unknown as MessageV2.Info)
93-
94-
let received: MessageV2.Part | undefined
95-
const unsub = Bus.subscribe(MessageV2.Event.PartUpdated, (event) => {
96-
received = event.properties.part
97-
})
98-
99-
const tokens = {
100-
total: 1500,
101-
input: 500,
102-
output: 800,
103-
reasoning: 200,
104-
cache: { read: 100, write: 50 },
105-
}
106-
107-
const partInput = {
108-
id: Identifier.ascending("part"),
109-
messageID,
110-
sessionID: session.id,
111-
type: "step-finish" as const,
112-
reason: "stop",
113-
cost: 0.005,
114-
tokens,
115-
}
116-
117-
await Session.updatePart(partInput)
118-
119-
await new Promise((resolve) => setTimeout(resolve, 100))
120-
121-
expect(received).toBeDefined()
122-
expect(received!.type).toBe("step-finish")
123-
const finish = received as MessageV2.StepFinishPart
124-
expect(finish.tokens.input).toBe(500)
125-
expect(finish.tokens.output).toBe(800)
126-
expect(finish.tokens.reasoning).toBe(200)
127-
expect(finish.tokens.total).toBe(1500)
128-
expect(finish.tokens.cache.read).toBe(100)
129-
expect(finish.tokens.cache.write).toBe(50)
130-
expect(finish.cost).toBe(0.005)
131-
expect(received).not.toBe(partInput)
132-
133-
unsub()
134-
await Session.remove(session.id)
135-
},
136-
})
137-
}, { timeout: 30000 })
76+
test(
77+
"non-zero tokens propagate through PartUpdated event",
78+
async () => {
79+
await Instance.provide({
80+
directory: projectRoot,
81+
fn: async () => {
82+
const session = await Session.create({})
83+
84+
const messageID = Identifier.ascending("message")
85+
await Session.updateMessage({
86+
id: messageID,
87+
sessionID: session.id,
88+
role: "user",
89+
time: { created: Date.now() },
90+
agent: "user",
91+
model: { providerID: "test", modelID: "test" },
92+
tools: {},
93+
mode: "",
94+
} as unknown as MessageV2.Info)
95+
96+
let received: MessageV2.Part | undefined
97+
const unsub = Bus.subscribe(MessageV2.Event.PartUpdated, (event) => {
98+
received = event.properties.part
99+
})
100+
101+
const tokens = {
102+
total: 1500,
103+
input: 500,
104+
output: 800,
105+
reasoning: 200,
106+
cache: { read: 100, write: 50 },
107+
}
108+
109+
const partInput = {
110+
id: Identifier.ascending("part"),
111+
messageID,
112+
sessionID: session.id,
113+
type: "step-finish" as const,
114+
reason: "stop",
115+
cost: 0.005,
116+
tokens,
117+
}
118+
119+
await Session.updatePart(partInput)
120+
121+
await new Promise((resolve) => setTimeout(resolve, 100))
122+
123+
expect(received).toBeDefined()
124+
expect(received!.type).toBe("step-finish")
125+
const finish = received as MessageV2.StepFinishPart
126+
expect(finish.tokens.input).toBe(500)
127+
expect(finish.tokens.output).toBe(800)
128+
expect(finish.tokens.reasoning).toBe(200)
129+
expect(finish.tokens.total).toBe(1500)
130+
expect(finish.tokens.cache.read).toBe(100)
131+
expect(finish.tokens.cache.write).toBe(50)
132+
expect(finish.cost).toBe(0.005)
133+
expect(received).not.toBe(partInput)
134+
135+
unsub()
136+
await Session.remove(session.id)
137+
},
138+
})
139+
},
140+
{ timeout: 30000 },
141+
)
138142
})

0 commit comments

Comments
 (0)