fix: update v2 session usage metrics (#35468)

This commit is contained in:
Aiden Cline 2026-07-07 14:31:54 -05:00 committed by GitHub
commit 910e37f6d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
23 changed files with 1013 additions and 107 deletions

View file

@ -277,6 +277,8 @@ import type {
V2CredentialUpdateErrors,
V2CredentialUpdateResponses,
V2DebugLocationErrors,
V2DebugLocationEvictErrors,
V2DebugLocationEvictResponses,
V2DebugLocationResponses,
V2EventSubscribeErrors,
V2EventSubscribeResponses,
@ -8117,6 +8119,34 @@ export class Vcs2 extends HeyApiClient {
}
}
export class Location2 extends HeyApiClient {
/**
* Evict a loaded location
*
* Dispose the requested location's cached services so its next use boots them fresh.
*/
public evict<ThrowOnError extends boolean = false>(
parameters?: {
location?: {
directory?: string | null
workspace?: string | null
} | null
},
options?: Options<never, ThrowOnError>,
) {
const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "location" }] }])
return (options?.client ?? this.client).delete<
V2DebugLocationEvictResponses,
V2DebugLocationEvictErrors,
ThrowOnError
>({
url: "/api/debug/location",
...options,
...params,
})
}
}
export class Debug extends HeyApiClient {
/**
* List loaded locations
@ -8129,6 +8159,11 @@ export class Debug extends HeyApiClient {
...options,
})
}
private _location?: Location2
get location2(): Location2 {
return (this._location ??= new Location2({ client: this.client }))
}
}
export class V2 extends HeyApiClient {

View file

@ -21,6 +21,7 @@ export type Event =
| EventSessionModelSelected
| EventSessionMoved
| EventSessionRenamed
| EventSessionUsageUpdated
| EventSessionForked
| EventSessionPromptPromoted
| EventSessionPromptAdmitted
@ -895,6 +896,23 @@ export type GlobalEvent = {
title: string
}
}
| {
id: string
type: "session.usage.updated"
properties: {
sessionID: string
cost: number
tokens: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
| {
id: string
type: "session.forked"
@ -1042,6 +1060,16 @@ export type GlobalEvent = {
sessionID: string
assistantMessageID: string
error: SessionStructuredError
cost?: number
tokens?: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
| {
@ -3079,6 +3107,7 @@ export type V2Event =
| SessionModelSelected
| SessionMoved
| SessionRenamed
| SessionUsageUpdated
| SessionForked
| SessionPromptPromoted
| SessionPromptAdmitted
@ -3982,6 +4011,16 @@ export type SyncEventSessionStepFailed = {
sessionID: string
assistantMessageID: string
error: SessionStructuredError
cost?: number
tokens?: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
}
@ -5088,6 +5127,16 @@ export type SessionStepFailed = {
sessionID: string
assistantMessageID: string
error: SessionStructuredError
cost?: number
tokens?: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
@ -5955,6 +6004,29 @@ export type MessagePartRemoved = {
}
}
export type SessionUsageUpdated = {
id: string
created: number
metadata?: {
[key: string]: unknown
}
type: "session.usage.updated"
location?: LocationRef
data: {
sessionID: string
cost: number
tokens: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
export type SessionTextDelta = {
id: string
created: number
@ -7010,6 +7082,24 @@ export type EventSessionRenamed = {
}
}
export type EventSessionUsageUpdated = {
id: string
type: "session.usage.updated"
properties: {
sessionID: string
cost: number
tokens: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
export type EventSessionForked = {
id: string
type: "session.forked"
@ -7171,6 +7261,16 @@ export type EventSessionStepFailed = {
sessionID: string
assistantMessageID: string
error: SessionStructuredError
cost?: number
tokens?: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
@ -8525,6 +8625,7 @@ export type V2EventV2 =
| SessionModelSelectedV2
| SessionMovedV2
| SessionRenamedV2
| SessionUsageUpdatedV2
| SessionDeletedV2
| SessionForkedV2
| SessionPromptPromotedV2
@ -9272,6 +9373,16 @@ export type SessionStepFailedV2 = {
sessionID: string
assistantMessageID: string
error: SessionStructuredError
cost?: number
tokens?: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
@ -9996,6 +10107,29 @@ export type MessagePartRemovedV2 = {
}
}
export type SessionUsageUpdatedV2 = {
id: string
created: number
metadata?: {
[key: string]: unknown
}
type: "session.usage.updated"
location?: LocationRefV2
data: {
sessionID: string
cost: number
tokens: {
input: number
output: number
reasoning: number
cache: {
read: number
write: number
}
}
}
}
export type SessionTextDeltaV2 = {
id: string
created: number
@ -18549,6 +18683,40 @@ export type V2VcsDiffResponses = {
export type V2VcsDiffResponse = V2VcsDiffResponses[keyof V2VcsDiffResponses]
export type V2DebugLocationEvictData = {
body?: never
path?: never
query?: {
location?: {
directory?: string | null
workspace?: string | null
} | null
}
url: "/api/debug/location"
}
export type V2DebugLocationEvictErrors = {
/**
* InvalidRequestError
*/
400: InvalidRequestErrorV2
/**
* UnauthorizedError
*/
401: UnauthorizedError
}
export type V2DebugLocationEvictError = V2DebugLocationEvictErrors[keyof V2DebugLocationEvictErrors]
export type V2DebugLocationEvictResponses = {
/**
* <No Content>
*/
204: void
}
export type V2DebugLocationEvictResponse = V2DebugLocationEvictResponses[keyof V2DebugLocationEvictResponses]
export type V2DebugLocationData = {
body?: never
path?: never