mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-06 08:24:46 +00:00
feat(usage): resolve reports from active session accounts
Resolve source inputs at fetch time so model and credential changes select the account each session spends. Keep the legacy discovered-account RPC for existing clients. Sync OpenCode model events outside foreground turns so usage follows model switches.
This commit is contained in:
@@ -18,6 +18,7 @@ export const PROVIDER_CAPABILITIES = [
|
||||
"session.revert.files",
|
||||
"session.subsession",
|
||||
"session.unarchive",
|
||||
"session.usage_reference",
|
||||
"permission",
|
||||
"permission.tool_policy",
|
||||
"timeline.plugin",
|
||||
@@ -227,6 +228,7 @@ export type ProviderInput =
|
||||
}
|
||||
| { type: "session.prompt"; sessionId: string; prompt: ProviderPrompt }
|
||||
| { type: "session.interrupt"; requestId: string; sessionId: string }
|
||||
| { type: "session.usage_reference"; requestId: string; sessionId: string }
|
||||
| {
|
||||
type: "session.permission";
|
||||
sessionId: string;
|
||||
@@ -526,6 +528,11 @@ export type ProviderEvent =
|
||||
| { type: "catalog"; requestId: string; catalog: ProviderCatalog }
|
||||
| { type: "sessions"; requestId: string; sessions: ProviderSessionSummary[] }
|
||||
| { type: "request.completed"; requestId: string }
|
||||
| {
|
||||
type: "usage_reference";
|
||||
requestId: string;
|
||||
reference: { source: string; input: JsonValue } | null;
|
||||
}
|
||||
| { type: "request.failed"; requestId: string; error: ProviderError }
|
||||
| {
|
||||
type: "session.opened";
|
||||
@@ -609,6 +616,8 @@ export function requiredProviderCapabilities(input: ProviderInput): readonly Pro
|
||||
case "session.interrupt":
|
||||
case "session.close":
|
||||
return [];
|
||||
case "session.usage_reference":
|
||||
return ["session.usage_reference"];
|
||||
case "sessions":
|
||||
return ["session.list"];
|
||||
case "session.open": {
|
||||
@@ -887,6 +896,13 @@ export const ProviderInputSchema: z.ZodType<ProviderInput> = z.discriminatedUnio
|
||||
z
|
||||
.object({ type: z.literal("session.interrupt"), requestId: idSchema, sessionId: idSchema })
|
||||
.strict(),
|
||||
z
|
||||
.object({
|
||||
type: z.literal("session.usage_reference"),
|
||||
requestId: idSchema,
|
||||
sessionId: idSchema,
|
||||
})
|
||||
.strict(),
|
||||
z
|
||||
.object({
|
||||
type: z.literal("session.permission"),
|
||||
@@ -1272,6 +1288,13 @@ export const ProviderEventSchema: z.ZodType<ProviderEvent> = z.discriminatedUnio
|
||||
})
|
||||
.strip(),
|
||||
z.object({ type: z.literal("request.completed"), requestId: idSchema }).strip(),
|
||||
z
|
||||
.object({
|
||||
type: z.literal("usage_reference"),
|
||||
requestId: idSchema,
|
||||
reference: z.object({ source: idSchema, input: z.json() }).nullable(),
|
||||
})
|
||||
.strip(),
|
||||
z
|
||||
.object({ type: z.literal("request.failed"), requestId: idSchema, error: providerErrorSchema })
|
||||
.strip(),
|
||||
|
||||
Reference in New Issue
Block a user