@slopus/happy-agent-client 0.0.99 → 0.0.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/HappyAgentClient.d.ts +33 -2
- package/dist/HappyAgentClient.d.ts.map +1 -1
- package/dist/HappyAgentClient.js +84 -0
- package/dist/HappyAgentClient.js.map +1 -1
- package/dist/protocol/daemon.d.ts +6 -3
- package/dist/protocol/daemon.d.ts.map +1 -1
- package/dist/protocol/daemon.js +6 -3
- package/dist/protocol/daemon.js.map +1 -1
- package/dist/protocol/events.d.ts +106 -2
- package/dist/protocol/events.d.ts.map +1 -1
- package/dist/protocol/events.js +28 -1
- package/dist/protocol/events.js.map +1 -1
- package/dist/protocol/surfaces.d.ts +260 -0
- package/dist/protocol/surfaces.d.ts.map +1 -1
- package/dist/protocol/surfaces.js +81 -0
- package/dist/protocol/surfaces.js.map +1 -1
- package/dist/protocol/usage.d.ts +222 -37
- package/dist/protocol/usage.d.ts.map +1 -1
- package/dist/protocol/usage.js +81 -1
- package/dist/protocol/usage.js.map +1 -1
- package/package.json +1 -1
package/dist/protocol/usage.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* is always by provider and then by model; a client wanting a rollup computes
|
|
6
6
|
* its own.
|
|
7
7
|
*/
|
|
8
|
+
import { type Static } from "@sinclair/typebox";
|
|
8
9
|
/** Token counts for one model. */
|
|
9
10
|
export interface ModelUsage {
|
|
10
11
|
input: number;
|
|
@@ -15,47 +16,231 @@ export interface ModelUsage {
|
|
|
15
16
|
/** Provider key, then model ID, then the counts. */
|
|
16
17
|
export type UsageBreakdown = Record<string, Record<string, ModelUsage>>;
|
|
17
18
|
/** One normalized account-usage window reported by a provider. */
|
|
18
|
-
export
|
|
19
|
-
usedPercent:
|
|
20
|
-
resetsAt:
|
|
21
|
-
startsAt:
|
|
22
|
-
durationMs:
|
|
23
|
-
|
|
19
|
+
export declare const providerAccountUsageWindowSchema: import("@sinclair/typebox").TObject<{
|
|
20
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
21
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
22
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
23
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
24
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
25
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
26
|
+
}>;
|
|
27
|
+
export type ProviderAccountUsageWindow = Static<typeof providerAccountUsageWindowSchema>;
|
|
24
28
|
/** Spendable balance reported alongside a provider's account limits. */
|
|
25
|
-
export
|
|
26
|
-
available:
|
|
27
|
-
remainingCents:
|
|
28
|
-
unlimited:
|
|
29
|
-
usedPercent:
|
|
30
|
-
}
|
|
29
|
+
export declare const providerAccountUsageCreditsSchema: import("@sinclair/typebox").TObject<{
|
|
30
|
+
available: import("@sinclair/typebox").TBoolean;
|
|
31
|
+
remainingCents: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
32
|
+
unlimited: import("@sinclair/typebox").TBoolean;
|
|
33
|
+
usedPercent: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
34
|
+
}>;
|
|
35
|
+
export type ProviderAccountUsageCredits = Static<typeof providerAccountUsageCreditsSchema>;
|
|
31
36
|
/** The complete latest normalized account-usage reading from one vendor. */
|
|
32
|
-
export
|
|
33
|
-
providerId:
|
|
34
|
-
vendor: "claude"
|
|
35
|
-
capturedAt:
|
|
36
|
-
planName:
|
|
37
|
-
exhausted:
|
|
38
|
-
windows: {
|
|
39
|
-
fiveHour:
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
export declare const providerAccountUsageSchema: import("@sinclair/typebox").TObject<{
|
|
38
|
+
providerId: import("@sinclair/typebox").TString;
|
|
39
|
+
vendor: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"claude">, import("@sinclair/typebox").TLiteral<"codex">, import("@sinclair/typebox").TLiteral<"grok">]>;
|
|
40
|
+
capturedAt: import("@sinclair/typebox").TNumber;
|
|
41
|
+
planName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
42
|
+
exhausted: import("@sinclair/typebox").TBoolean;
|
|
43
|
+
windows: import("@sinclair/typebox").TObject<{
|
|
44
|
+
fiveHour: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
45
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
46
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
47
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
48
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
49
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
50
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
51
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
52
|
+
weekly: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
53
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
54
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
55
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
56
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
57
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
58
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
59
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
60
|
+
monthly: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
61
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
62
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
63
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
64
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
65
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
66
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
67
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
42
68
|
/** Claude's separate weekly Fable allowance. Omitted or null when unreported. */
|
|
43
|
-
fableWeekly
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
69
|
+
fableWeekly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
70
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
71
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
72
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
73
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
74
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
75
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
76
|
+
}>, import("@sinclair/typebox").TNull]>>;
|
|
77
|
+
}>;
|
|
78
|
+
credits: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
79
|
+
available: import("@sinclair/typebox").TBoolean;
|
|
80
|
+
remainingCents: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
81
|
+
unlimited: import("@sinclair/typebox").TBoolean;
|
|
82
|
+
usedPercent: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
83
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
84
|
+
}>;
|
|
85
|
+
export type ProviderAccountUsage = Static<typeof providerAccountUsageSchema>;
|
|
86
|
+
/**
|
|
87
|
+
* Everything the daemon knows about reading one provider account, without its configuration.
|
|
88
|
+
*
|
|
89
|
+
* The refresh fields are optional only for compatibility with older daemons: a protocol-29 daemon
|
|
90
|
+
* always sends them, so an entry without `refreshedAt` comes from a daemon that neither publishes
|
|
91
|
+
* `provider.usage.updated` nor serves `POST /v0/usage/refresh`.
|
|
92
|
+
*/
|
|
93
|
+
export declare const providerAccountUsageStateSchema: import("@sinclair/typebox").TObject<{
|
|
94
|
+
providerId: import("@sinclair/typebox").TString;
|
|
95
|
+
/** The latest successful normalized reading, or `null` when none is available. */
|
|
96
|
+
usage: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
97
|
+
providerId: import("@sinclair/typebox").TString;
|
|
98
|
+
vendor: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"claude">, import("@sinclair/typebox").TLiteral<"codex">, import("@sinclair/typebox").TLiteral<"grok">]>;
|
|
99
|
+
capturedAt: import("@sinclair/typebox").TNumber;
|
|
100
|
+
planName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
101
|
+
exhausted: import("@sinclair/typebox").TBoolean;
|
|
102
|
+
windows: import("@sinclair/typebox").TObject<{
|
|
103
|
+
fiveHour: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
104
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
105
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
106
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
107
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
108
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
109
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
110
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
111
|
+
weekly: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
112
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
113
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
114
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
115
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
116
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
117
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
118
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
119
|
+
monthly: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
120
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
121
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
122
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
123
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
124
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
125
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
126
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
127
|
+
/** Claude's separate weekly Fable allowance. Omitted or null when unreported. */
|
|
128
|
+
fableWeekly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
129
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
130
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
131
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
132
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
133
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
134
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
135
|
+
}>, import("@sinclair/typebox").TNull]>>;
|
|
136
|
+
}>;
|
|
137
|
+
credits: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
138
|
+
available: import("@sinclair/typebox").TBoolean;
|
|
139
|
+
remainingCents: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
140
|
+
unlimited: import("@sinclair/typebox").TBoolean;
|
|
141
|
+
usedPercent: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
142
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
143
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
144
|
+
/** When the daemon last finished asking, successfully or not. */
|
|
145
|
+
checkedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
146
|
+
/** Why no reading is available at all. */
|
|
147
|
+
error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
148
|
+
/** When the last successful reading arrived, from a poll or from inference. */
|
|
149
|
+
refreshedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
|
|
150
|
+
/** Why the latest read failed, kept even while an older reading is shown. */
|
|
151
|
+
refreshError: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
|
|
152
|
+
/** The instant before which the vendor asked not to be asked again. */
|
|
153
|
+
retryAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
|
|
154
|
+
/** Whether a read of this account is in flight. */
|
|
155
|
+
refreshing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
156
|
+
}>;
|
|
157
|
+
export type ProviderAccountUsageState = Static<typeof providerAccountUsageStateSchema>;
|
|
47
158
|
/** One configured provider, its complete model catalog, and its latest account limits. */
|
|
48
|
-
export
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
159
|
+
export declare const providerUsageEntrySchema: import("@sinclair/typebox").TObject<{
|
|
160
|
+
checkedAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
161
|
+
enabled: import("@sinclair/typebox").TBoolean;
|
|
162
|
+
error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
163
|
+
models: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
164
|
+
defaultEffort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
165
|
+
efforts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
166
|
+
enabled: import("@sinclair/typebox").TBoolean;
|
|
167
|
+
id: import("@sinclair/typebox").TString;
|
|
168
|
+
name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
169
|
+
serviceTierOptions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
|
|
170
|
+
id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
171
|
+
label: import("@sinclair/typebox").TString;
|
|
172
|
+
}>>>;
|
|
173
|
+
serviceTiers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
174
|
+
}>>;
|
|
175
|
+
providerId: import("@sinclair/typebox").TString;
|
|
176
|
+
refreshError: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>>;
|
|
177
|
+
refreshedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
|
|
178
|
+
refreshing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
179
|
+
retryAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
|
|
180
|
+
type: import("@sinclair/typebox").TString;
|
|
181
|
+
usage: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
182
|
+
providerId: import("@sinclair/typebox").TString;
|
|
183
|
+
vendor: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"claude">, import("@sinclair/typebox").TLiteral<"codex">, import("@sinclair/typebox").TLiteral<"grok">]>;
|
|
184
|
+
capturedAt: import("@sinclair/typebox").TNumber;
|
|
185
|
+
planName: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
|
|
186
|
+
exhausted: import("@sinclair/typebox").TBoolean;
|
|
187
|
+
windows: import("@sinclair/typebox").TObject<{
|
|
188
|
+
fiveHour: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
189
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
190
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
191
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
192
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
193
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
194
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
195
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
196
|
+
weekly: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
197
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
198
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
199
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
200
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
201
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
202
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
203
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
204
|
+
monthly: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
205
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
206
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
207
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
208
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
209
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
210
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
211
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
212
|
+
/** Claude's separate weekly Fable allowance. Omitted or null when unreported. */
|
|
213
|
+
fableWeekly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
214
|
+
usedPercent: import("@sinclair/typebox").TNumber;
|
|
215
|
+
resetsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
216
|
+
startsAt: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
217
|
+
durationMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
218
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
219
|
+
capturedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
220
|
+
}>, import("@sinclair/typebox").TNull]>>;
|
|
221
|
+
}>;
|
|
222
|
+
credits: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
223
|
+
available: import("@sinclair/typebox").TBoolean;
|
|
224
|
+
remainingCents: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
225
|
+
unlimited: import("@sinclair/typebox").TBoolean;
|
|
226
|
+
usedPercent: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>;
|
|
227
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
228
|
+
}>, import("@sinclair/typebox").TNull]>;
|
|
229
|
+
}>;
|
|
230
|
+
export type ProviderUsageEntry = Static<typeof providerUsageEntrySchema>;
|
|
231
|
+
/** `POST /v0/usage/refresh` request body, protocol 29 or newer. */
|
|
232
|
+
export declare const providerUsageRefreshRequestSchema: import("@sinclair/typebox").TObject<{
|
|
233
|
+
/** The accounts to consider; every enabled account when omitted. */
|
|
234
|
+
providerIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
235
|
+
/** Read only accounts older than this; defaults to 300000 and is at least 60000. */
|
|
236
|
+
olderThanMs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
237
|
+
}>;
|
|
238
|
+
export type ProviderUsageRefreshRequest = Static<typeof providerUsageRefreshRequestSchema>;
|
|
239
|
+
/** `POST /v0/usage/refresh` — `202`; the results arrive as `provider.usage.updated`. */
|
|
240
|
+
export declare const providerUsageRefreshResponseSchema: import("@sinclair/typebox").TObject<{
|
|
241
|
+
started: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
|
|
242
|
+
}>;
|
|
243
|
+
export type ProviderUsageRefreshResponse = Static<typeof providerUsageRefreshResponseSchema>;
|
|
59
244
|
/** The latest exact provider measurement of one agent's active conversation context. */
|
|
60
245
|
export interface AgentContextUsage {
|
|
61
246
|
approximate: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../sources/protocol/usage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kCAAkC;AAClC,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAExE,kEAAkE;AAClE,MAAM,
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../sources/protocol/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol/usage.js
CHANGED
|
@@ -5,5 +5,85 @@
|
|
|
5
5
|
* is always by provider and then by model; a client wanting a rollup computes
|
|
6
6
|
* its own.
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
import { Type } from "@sinclair/typebox";
|
|
9
|
+
import { Nullable } from "./common.js";
|
|
10
|
+
import { providerModelReferenceSchema } from "./daemon.js";
|
|
11
|
+
/** One normalized account-usage window reported by a provider. */
|
|
12
|
+
export const providerAccountUsageWindowSchema = Type.Object({
|
|
13
|
+
usedPercent: Type.Number(),
|
|
14
|
+
resetsAt: Nullable(Type.Number()),
|
|
15
|
+
startsAt: Nullable(Type.Number()),
|
|
16
|
+
durationMs: Nullable(Type.Number()),
|
|
17
|
+
/** When this window itself was last measured, protocol 29 or newer. */
|
|
18
|
+
capturedAt: Type.Optional(Type.Number()),
|
|
19
|
+
});
|
|
20
|
+
/** Spendable balance reported alongside a provider's account limits. */
|
|
21
|
+
export const providerAccountUsageCreditsSchema = Type.Object({
|
|
22
|
+
available: Type.Boolean(),
|
|
23
|
+
remainingCents: Nullable(Type.Number()),
|
|
24
|
+
unlimited: Type.Boolean(),
|
|
25
|
+
usedPercent: Nullable(Type.Number()),
|
|
26
|
+
});
|
|
27
|
+
/** The complete latest normalized account-usage reading from one vendor. */
|
|
28
|
+
export const providerAccountUsageSchema = Type.Object({
|
|
29
|
+
providerId: Type.String(),
|
|
30
|
+
vendor: Type.Union([Type.Literal("claude"), Type.Literal("codex"), Type.Literal("grok")]),
|
|
31
|
+
capturedAt: Type.Number(),
|
|
32
|
+
planName: Nullable(Type.String()),
|
|
33
|
+
exhausted: Type.Boolean(),
|
|
34
|
+
windows: Type.Object({
|
|
35
|
+
fiveHour: Nullable(providerAccountUsageWindowSchema),
|
|
36
|
+
weekly: Nullable(providerAccountUsageWindowSchema),
|
|
37
|
+
monthly: Nullable(providerAccountUsageWindowSchema),
|
|
38
|
+
/** Claude's separate weekly Fable allowance. Omitted or null when unreported. */
|
|
39
|
+
fableWeekly: Type.Optional(Nullable(providerAccountUsageWindowSchema)),
|
|
40
|
+
}),
|
|
41
|
+
credits: Nullable(providerAccountUsageCreditsSchema),
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Everything the daemon knows about reading one provider account, without its configuration.
|
|
45
|
+
*
|
|
46
|
+
* The refresh fields are optional only for compatibility with older daemons: a protocol-29 daemon
|
|
47
|
+
* always sends them, so an entry without `refreshedAt` comes from a daemon that neither publishes
|
|
48
|
+
* `provider.usage.updated` nor serves `POST /v0/usage/refresh`.
|
|
49
|
+
*/
|
|
50
|
+
export const providerAccountUsageStateSchema = Type.Object({
|
|
51
|
+
providerId: Type.String(),
|
|
52
|
+
/** The latest successful normalized reading, or `null` when none is available. */
|
|
53
|
+
usage: Nullable(providerAccountUsageSchema),
|
|
54
|
+
/** When the daemon last finished asking, successfully or not. */
|
|
55
|
+
checkedAt: Nullable(Type.Number()),
|
|
56
|
+
/** Why no reading is available at all. */
|
|
57
|
+
error: Nullable(Type.String()),
|
|
58
|
+
/** When the last successful reading arrived, from a poll or from inference. */
|
|
59
|
+
refreshedAt: Type.Optional(Nullable(Type.Number())),
|
|
60
|
+
/** Why the latest read failed, kept even while an older reading is shown. */
|
|
61
|
+
refreshError: Type.Optional(Nullable(Type.String())),
|
|
62
|
+
/** The instant before which the vendor asked not to be asked again. */
|
|
63
|
+
retryAt: Type.Optional(Nullable(Type.Number())),
|
|
64
|
+
/** Whether a read of this account is in flight. */
|
|
65
|
+
refreshing: Type.Optional(Type.Boolean()),
|
|
66
|
+
});
|
|
67
|
+
/** One configured provider, its complete model catalog, and its latest account limits. */
|
|
68
|
+
export const providerUsageEntrySchema = Type.Composite([
|
|
69
|
+
providerAccountUsageStateSchema,
|
|
70
|
+
Type.Object({
|
|
71
|
+
/** The canonical provider key from the effective configuration. */
|
|
72
|
+
type: Type.String(),
|
|
73
|
+
enabled: Type.Boolean(),
|
|
74
|
+
/** The same complete model-reference list returned for this provider by `GET /v0/config`. */
|
|
75
|
+
models: Type.Array(providerModelReferenceSchema),
|
|
76
|
+
}),
|
|
77
|
+
]);
|
|
78
|
+
/** `POST /v0/usage/refresh` request body, protocol 29 or newer. */
|
|
79
|
+
export const providerUsageRefreshRequestSchema = Type.Object({
|
|
80
|
+
/** The accounts to consider; every enabled account when omitted. */
|
|
81
|
+
providerIds: Type.Optional(Type.Array(Type.String())),
|
|
82
|
+
/** Read only accounts older than this; defaults to 300000 and is at least 60000. */
|
|
83
|
+
olderThanMs: Type.Optional(Type.Number({ minimum: 0 })),
|
|
84
|
+
}, { additionalProperties: false });
|
|
85
|
+
/** `POST /v0/usage/refresh` — `202`; the results arrive as `provider.usage.updated`. */
|
|
86
|
+
export const providerUsageRefreshResponseSchema = Type.Object({
|
|
87
|
+
started: Type.Array(Type.String()),
|
|
88
|
+
});
|
|
9
89
|
//# sourceMappingURL=usage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../sources/protocol/usage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../sources/protocol/usage.ts"],"names":[],"mappings":"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"}
|