@allixsenos/asu 0.4.0 → 0.6.0

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 CHANGED
@@ -11,31 +11,31 @@ npx --yes @allixsenos/asu --table
11
11
  ```
12
12
 
13
13
  ```text
14
- ASU · 2026-09-08T09:22:58.225Z
14
+ ASU · 2026-09-08T12:54:06.628Z
15
15
  ┌──────────────────┬────────────────────┬───────────────────────┬───────────────────────┬────────────────────┐
16
16
  │ Provider │ Plan / status │ Window / balance │ Usage │ Resets in │
17
17
  ├──────────────────┼────────────────────┼───────────────────────┼───────────────────────┼────────────────────┤
18
- │ Claude │ Max 20x │ 5 hours │ 22% used │ 7m
19
- │ │ available │ │ │ │
18
+ │ Claude │ Max 20x │ 5 hours │ 35% used │ 1h36m
19
+ │ │ active │ │ │ │
20
20
  │ │ fresh │ │ │ │
21
- │ │ │ Weekly │ 5% used 6d19h (Tue 15 Sep) │
22
- │ │ │ Weekly · Fable │ 7% used 6d19h (Tue 15 Sep) │
21
+ │ │ │ Weekly │ 11% used 6d16h (Tue 15 Sep) │
22
+ │ │ │ Weekly · Fable │ 11% used 6d16h (Tue 15 Sep) │
23
23
  │ │ │ Extra usage │ Disabled │ — │
24
24
  ├──────────────────┼────────────────────┼───────────────────────┼───────────────────────┼────────────────────┤
25
25
  │ Codex │ Plus │ 5 hours │ 0% used │ 5h │
26
- │ │ available │ │ │ │
26
+ │ │ active │ │ │ │
27
27
  │ │ fresh │ │ │ │
28
28
  │ │ │ Weekly │ 0% used │ 7d (Tue 15 Sep) │
29
29
  │ │ │ Gpt Reserve · Weekly │ 0% used │ 7d (Tue 15 Sep) │
30
30
  │ │ │ Credits │ 0 credits left │ — │
31
31
  │ │ │ Credits available │ No │ — │
32
32
  ├──────────────────┼────────────────────┼───────────────────────┼───────────────────────┼────────────────────┤
33
- │ GitHub Copilot │ Individual │ Chat │ 0% used │ 22d14h (Thu 1 Oct) │
34
- │ │ available │ │ 0 / 200 requests │ │
33
+ │ GitHub Copilot │ Individual │ Chat │ 0% used │ 22d11h (Thu 1 Oct) │
34
+ │ │ active │ │ 0 / 200 requests │ │
35
35
  │ │ fresh │ │ │ │
36
- │ │ │ Completions │ 0% used │ 22d14h (Thu 1 Oct) │
36
+ │ │ │ Completions │ 0% used │ 22d11h (Thu 1 Oct) │
37
37
  │ │ │ │ 0 / 2,000 requests │ │
38
- │ │ │ Premium Interactions │ 100% used │ 22d14h (Thu 1 Oct) │
38
+ │ │ │ Premium Interactions │ 100% used │ 22d11h (Thu 1 Oct) │
39
39
  │ │ │ │ 0 / 0 requests │ │
40
40
  └──────────────────┴────────────────────┴───────────────────────┴───────────────────────┴────────────────────┘
41
41
  Claude: fetched <1m ago; cache expires in 5m.
@@ -84,7 +84,7 @@ This needs Git. The repository commits the built `dist/` directory, so the insta
84
84
 
85
85
  ## Real account output
86
86
 
87
- We fetched the snapshot below on **2026-09-07 at 12:18 UTC** from the maintainer's authenticated Claude, Codex, and GitHub Copilot accounts on Linux. These are real provider-reported figures, not fixtures or estimates. They become stale as usage changes.
87
+ We fetched the snapshot below on **2026-09-08 at 12:54 UTC** from the maintainer's authenticated Claude, Codex, and GitHub Copilot accounts on Linux. These are real provider-reported figures, not fixtures or estimates. They become stale as usage changes.
88
88
 
89
89
  The capture used the local checkout:
90
90
 
@@ -101,37 +101,36 @@ Without `--utc`, the table and the plain text show reset, fetch, and expiry time
101
101
  Use `--table` for this view. It is also the default in an interactive terminal that is wide enough. When a cell would wrap, the default falls back to plain text. Pass `--table` to force the table.
102
102
 
103
103
  ```text
104
- ASU · 2026-09-07T12:18:06.253Z
104
+ ASU · 2026-09-08T12:54:06.628Z
105
105
  ┌──────────────────┬────────────────────┬───────────────────────┬───────────────────────┬────────────────────┐
106
106
  │ Provider │ Plan / status │ Window / balance │ Usage │ Resets (UTC) │
107
107
  ├──────────────────┼────────────────────┼───────────────────────┼───────────────────────┼────────────────────┤
108
- │ Claude │ Max 20x │ 5 hours │ 45% used │ 2026-09-07 14:29
109
- │ │ available │ │ │ │
108
+ │ Claude │ Max 20x │ 5 hours │ 35% used │ 2026-09-08 14:30
109
+ │ │ active │ │ │ │
110
110
  │ │ fresh │ │ │ │
111
- │ │ │ Weekly │ 78% used │ 2026-09-08 04:59
112
- │ │ │ Weekly · Fable │ 45% used │ 2026-09-08 04:59
111
+ │ │ │ Weekly │ 11% used │ 2026-09-15 05:00
112
+ │ │ │ Weekly · Fable │ 11% used │ 2026-09-15 05:00
113
+ │ │ │ Extra usage │ Disabled │ — │
113
114
  ├──────────────────┼────────────────────┼───────────────────────┼───────────────────────┼────────────────────┤
114
- │ Codex │ Plus │ 5 hours │ 41% used │ 2026-09-07 16:48
115
- │ │ available │ │ │ │
115
+ │ Codex │ Plus │ 5 hours │ 0% used │ 2026-09-08 17:54
116
+ │ │ active │ │ │ │
116
117
  │ │ fresh │ │ │ │
117
- │ │ │ Weekly │ 6% used │ 2026-09-14 11:48
118
- │ │ │ Gpt Reserve · Weekly │ 0% used │ 2026-09-14 12:18
118
+ │ │ │ Weekly │ 0% used │ 2026-09-15 12:54
119
+ │ │ │ Gpt Reserve · Weekly │ 0% used │ 2026-09-15 12:54
119
120
  │ │ │ Credits │ 0 credits left │ — │
121
+ │ │ │ Credits available │ No │ — │
120
122
  ├──────────────────┼────────────────────┼───────────────────────┼───────────────────────┼────────────────────┤
121
123
  │ GitHub Copilot │ Individual │ Chat │ 0% used │ 2026-10-01 00:00 │
122
- │ │ available │ │ 0 / 200 requests │ │
124
+ │ │ active │ │ 0 / 200 requests │ │
123
125
  │ │ fresh │ │ │ │
124
126
  │ │ │ Completions │ 0% used │ 2026-10-01 00:00 │
125
127
  │ │ │ │ 0 / 2,000 requests │ │
126
128
  │ │ │ Premium Interactions │ 100% used │ 2026-10-01 00:00 │
127
129
  │ │ │ │ 0 / 0 requests │ │
128
130
  └──────────────────┴────────────────────┴───────────────────────┴───────────────────────┴────────────────────┘
129
- Claude: installed: yes, authenticated: yes. Fetched 2026-09-07T12:18:06.042Z; cache expires 2026-09-07T12:23:06.042Z.
130
- Extra usage: Disabled
131
- Codex: installed: yes, authenticated: yes. Fetched 2026-09-07T12:18:06.217Z; cache expires 2026-09-07T12:23:06.217Z.
132
- Credits available: No
133
- GitHub Copilot: installed: yes, authenticated: yes. Fetched 2026-09-07T12:18:06.252Z; cache expires 2026-09-07T12:23:06.252Z.
134
- Quota reset: 2026-10-01T00:00:00.000Z
131
+ Claude: fetched 2026-09-08T12:54:06.286Z; cache expires 2026-09-08T12:59:06.286Z.
132
+ Codex: fetched 2026-09-08T12:54:06.628Z; cache expires 2026-09-08T12:59:06.628Z.
133
+ GitHub Copilot: fetched 2026-09-08T12:54:06.283Z; cache expires 2026-09-08T12:59:06.283Z.
135
134
  ```
136
135
 
137
136
  Read Copilot's premium row with care. The endpoint returned zero entitlement, zero remaining requests, and zero percent remaining. ASU therefore shows `100% used` next to `0 / 0 requests`. This does **not** show that anyone consumed a premium request. The internal endpoint can return legacy quota information. Treat its quantities as the provider's reported snapshot, not as a complete billing statement.
@@ -144,35 +143,34 @@ Use `--plain` for readable output in logs and pipes. It is the default when stdo
144
143
  <summary>Show the complete plain-text output</summary>
145
144
 
146
145
  ```text
147
- ASU · 2026-09-07T12:18:06.253Z
146
+ ASU · 2026-09-08T12:54:06.628Z
148
147
 
149
148
  Claude (claude)
150
- available; installed: yes, authenticated: yes
149
+ active
151
150
  Plan: Max 20x
152
- 5 hours: 45% used; resets 2026-09-07T14:29:59.895Z
153
- Weekly: 78% used; resets 2026-09-08T04:59:59.895Z
154
- Weekly · Fable: 45% used; resets 2026-09-08T04:59:59.895Z
151
+ 5 hours: 35% used; resets 2026-09-08T14:30:00.000Z
152
+ Weekly: 11% used; resets 2026-09-15T05:00:00.000Z
153
+ Weekly · Fable: 11% used; resets 2026-09-15T05:00:00.000Z
155
154
  Extra usage: Disabled
156
- Fetched 2026-09-07T12:18:06.042Z; fresh; expires 2026-09-07T12:23:06.042Z
155
+ Fetched 2026-09-08T12:54:06.286Z; fresh; expires 2026-09-08T12:59:06.286Z
157
156
 
158
157
  Codex (codex)
159
- available; installed: yes, authenticated: yes
158
+ active
160
159
  Plan: Plus
161
- 5 hours: 41% used; resets 2026-09-07T16:48:37.000Z
162
- Weekly: 6% used; resets 2026-09-14T11:48:37.000Z
163
- Gpt Reserve · Weekly: 0% used; resets 2026-09-14T12:18:06.000Z
160
+ 5 hours: 0% used; resets 2026-09-08T17:54:06.000Z
161
+ Weekly: 0% used; resets 2026-09-15T12:54:06.000Z
162
+ Gpt Reserve · Weekly: 0% used; resets 2026-09-15T12:54:06.000Z
164
163
  Credits: 0 credits left
165
164
  Credits available: No
166
- Fetched 2026-09-07T12:18:06.217Z; fresh; expires 2026-09-07T12:23:06.217Z
165
+ Fetched 2026-09-08T12:54:06.628Z; fresh; expires 2026-09-08T12:59:06.628Z
167
166
 
168
167
  GitHub Copilot (copilot)
169
- available; installed: yes, authenticated: yes
168
+ active
170
169
  Plan: Individual
171
170
  Chat: 0% used; 0 / 200 requests; resets 2026-10-01T00:00:00.000Z
172
171
  Completions: 0% used; 0 / 2,000 requests; resets 2026-10-01T00:00:00.000Z
173
172
  Premium Interactions: 100% used; 0 / 0 requests; resets 2026-10-01T00:00:00.000Z
174
- Quota reset: 2026-10-01T00:00:00.000Z
175
- Fetched 2026-09-07T12:18:06.252Z; fresh; expires 2026-09-07T12:23:06.252Z
173
+ Fetched 2026-09-08T12:54:06.283Z; fresh; expires 2026-09-08T12:59:06.283Z
176
174
  ```
177
175
 
178
176
  </details>
@@ -187,7 +185,7 @@ Use `--json` for agents and scripts. Stdout contains the report. An ASU invocati
187
185
  ```json
188
186
  {
189
187
  "schemaVersion": 1,
190
- "generatedAt": "2026-09-07T12:18:06.253Z",
188
+ "generatedAt": "2026-09-08T12:54:06.628Z",
191
189
  "warnings": [],
192
190
  "providers": [
193
191
  {
@@ -196,20 +194,20 @@ Use `--json` for agents and scripts. Stdout contains the report. An ASU invocati
196
194
  {
197
195
  "id": "five_hour",
198
196
  "label": "5 hours",
199
- "percentUsed": 45,
200
- "resetsAt": "2026-09-07T14:29:59.895Z"
197
+ "percentUsed": 35,
198
+ "resetsAt": "2026-09-08T14:30:00.000Z"
201
199
  },
202
200
  {
203
201
  "id": "seven_day",
204
202
  "label": "Weekly",
205
- "percentUsed": 78,
206
- "resetsAt": "2026-09-08T04:59:59.895Z"
203
+ "percentUsed": 11,
204
+ "resetsAt": "2026-09-15T05:00:00.000Z"
207
205
  },
208
206
  {
209
207
  "id": "weekly-model-fable",
210
208
  "label": "Weekly · Fable",
211
- "percentUsed": 45,
212
- "resetsAt": "2026-09-08T04:59:59.895Z",
209
+ "percentUsed": 11,
210
+ "resetsAt": "2026-09-15T05:00:00.000Z",
213
211
  "scope": {
214
212
  "model": "Fable"
215
213
  }
@@ -230,8 +228,8 @@ Use `--json` for agents and scripts. Stdout contains the report. An ASU invocati
230
228
  "authenticated": true,
231
229
  "availability": "available",
232
230
  "reason": null,
233
- "fetchedAt": "2026-09-07T12:18:06.042Z",
234
- "expiresAt": "2026-09-07T12:23:06.042Z",
231
+ "fetchedAt": "2026-09-08T12:54:06.286Z",
232
+ "expiresAt": "2026-09-08T12:59:06.286Z",
235
233
  "cached": false
236
234
  },
237
235
  {
@@ -240,20 +238,20 @@ Use `--json` for agents and scripts. Stdout contains the report. An ASU invocati
240
238
  {
241
239
  "id": "usage-primary_window",
242
240
  "label": "5 hours",
243
- "percentUsed": 41,
244
- "resetsAt": "2026-09-07T16:48:37.000Z"
241
+ "percentUsed": 0,
242
+ "resetsAt": "2026-09-08T17:54:06.000Z"
245
243
  },
246
244
  {
247
245
  "id": "usage-secondary_window",
248
246
  "label": "Weekly",
249
- "percentUsed": 6,
250
- "resetsAt": "2026-09-14T11:48:37.000Z"
247
+ "percentUsed": 0,
248
+ "resetsAt": "2026-09-15T12:54:06.000Z"
251
249
  },
252
250
  {
253
251
  "id": "additional-0-gpt-reserve-primary_window",
254
252
  "label": "Gpt Reserve · Weekly",
255
253
  "percentUsed": 0,
256
- "resetsAt": "2026-09-14T12:18:06.000Z"
254
+ "resetsAt": "2026-09-15T12:54:06.000Z"
257
255
  }
258
256
  ],
259
257
  "balances": [
@@ -279,8 +277,8 @@ Use `--json` for agents and scripts. Stdout contains the report. An ASU invocati
279
277
  "authenticated": true,
280
278
  "availability": "available",
281
279
  "reason": null,
282
- "fetchedAt": "2026-09-07T12:18:06.217Z",
283
- "expiresAt": "2026-09-07T12:23:06.217Z",
280
+ "fetchedAt": "2026-09-08T12:54:06.628Z",
281
+ "expiresAt": "2026-09-08T12:59:06.628Z",
284
282
  "cached": false
285
283
  },
286
284
  {
@@ -318,12 +316,7 @@ Use `--json` for agents and scripts. Stdout contains the report. An ASU invocati
318
316
  }
319
317
  ],
320
318
  "balances": [],
321
- "details": [
322
- {
323
- "label": "Quota reset",
324
- "value": "2026-10-01T00:00:00.000Z"
325
- }
326
- ],
319
+ "details": [],
327
320
  "providerId": "copilot",
328
321
  "displayName": "GitHub Copilot",
329
322
  "experimental": false,
@@ -332,8 +325,8 @@ Use `--json` for agents and scripts. Stdout contains the report. An ASU invocati
332
325
  "authenticated": true,
333
326
  "availability": "available",
334
327
  "reason": null,
335
- "fetchedAt": "2026-09-07T12:18:06.252Z",
336
- "expiresAt": "2026-09-07T12:23:06.252Z",
328
+ "fetchedAt": "2026-09-08T12:54:06.283Z",
329
+ "expiresAt": "2026-09-08T12:59:06.283Z",
337
330
  "cached": false
338
331
  }
339
332
  ]
@@ -365,7 +358,7 @@ When you run ASU through `npx`, put the ASU options after the package name.
365
358
  | `--help`, `-h` | Show help |
366
359
  | `--version`, `-v` | Print the package version |
367
360
 
368
- Without `--all` or `--provider`, ASU omits a provider that has no detected installation, no credentials, and no discovery error. Credentials can work even when the provider's executable is not on `PATH`. Installation and authentication are separate fields. `null` means unknown.
361
+ Without `--all` or `--provider`, ASU omits a provider that has no detected installation, no credentials, and no discovery error. Credentials can work even when the provider's executable is not on `PATH`. The table and the plain text show one status per provider: `active` when usage came back, `not logged in` when credentials are missing or rejected, `not installed` when neither credentials nor the provider's executable were found, and `error` when the request failed. JSON keeps `installed`, `credentialsPresent`, and `authenticated` as separate fields, where `null` means unknown.
369
362
 
370
363
  ### Exit codes
371
364
 
@@ -404,7 +397,7 @@ A consumer must examine `schemaVersion` before it processes a report. Version 1
404
397
  | `details` | Additional normalized label and value pairs |
405
398
  | `fetchedAt`, `expiresAt`, `cached` | Timestamp and freshness of each provider snapshot |
406
399
 
407
- An unknown percentage or reset time is `null`. A missing quantity or balance does not mean zero. An unlimited allowance is explicit. A percentage can exceed 100 if a provider reports overage. Do not assume a fixed number or order of windows. See the [report contract](docs/architecture.md#report-contract) and the [schemas](src/models.ts) for the full model. An agent that wants to watch its own budget can follow [Use ASU from an agent](docs/agent-usage.md).
400
+ An unknown percentage or reset time is `null`. A missing quantity or balance does not mean zero. An unlimited allowance is explicit. A percentage can exceed 100 if a provider reports overage. Do not assume a fixed number or order of windows. See the [report contract](docs/architecture.md#report-contract) and the [schemas](src/models.ts) for the full model. An agent that wants to watch its own budget can follow [Use ASU from an agent](docs/agent-usage.md). The [asu-usage skill](skills/asu-usage/SKILL.md) measures what one command costs, and `npx skills add allixsenos/asu` installs it.
408
401
 
409
402
  ## Supported providers
410
403
 
package/dist/output.js CHANGED
@@ -38,7 +38,6 @@ function detailValue(value, options) {
38
38
  return Date.parse(value) > (options.now ?? Date.now()) ? ahead(value, options) : ago(value, options);
39
39
  }
40
40
  const amount = (value) => new Intl.NumberFormat('en-US', { maximumFractionDigits: 2 }).format(value);
41
- const yesNo = (value) => value === null ? 'unknown' : value ? 'yes' : 'no';
42
41
  function windowValue(window) {
43
42
  if (window.unlimited)
44
43
  return 'Unlimited';
@@ -61,13 +60,20 @@ function balanceValue(balance) {
61
60
  parts.push(`limit ${amount(balance.limit)} ${balance.unit}`);
62
61
  return parts.join('; ') || 'Balance unknown';
63
62
  }
64
- function providerSummary(provider) {
65
- return `installed: ${yesNo(provider.installed)}, authenticated: ${yesNo(provider.authenticated)}`;
63
+ /** One word per provider. Usage that came back wins, whatever the install check said. */
64
+ function status(provider) {
65
+ if (provider.availability === 'available')
66
+ return 'active';
67
+ if (provider.availability === 'error')
68
+ return 'error';
69
+ if (provider.credentialsPresent)
70
+ return 'not logged in';
71
+ return provider.installed === false ? 'not installed' : 'not logged in';
66
72
  }
67
73
  export function renderPlain(report, options = {}) {
68
74
  const lines = [`ASU · ${report.generatedAt}`];
69
75
  for (const provider of report.providers) {
70
- lines.push('', `${provider.displayName} (${provider.providerId})${provider.experimental ? ' [experimental]' : ''}`, ` ${provider.availability}; ${providerSummary(provider)}`);
76
+ lines.push('', `${provider.displayName} (${provider.providerId})${provider.experimental ? ' [experimental]' : ''}`, ` ${status(provider)}`);
71
77
  if (provider.planLabel)
72
78
  lines.push(` Plan: ${provider.planLabel}`);
73
79
  for (const window of provider.windows)
@@ -158,7 +164,7 @@ function buildTable(report, options) {
158
164
  if (!rows.length)
159
165
  rows.push(['—', '—', '—']);
160
166
  rows.forEach((cells, index) => row([index ? '' : provider.displayName + (provider.experimental ? ' *' : ''),
161
- index ? '' : [provider.planLabel, provider.availability, provider.cached ? 'cached' : 'fresh'].filter(Boolean).join('\n'), ...cells]));
167
+ index ? '' : [provider.planLabel, status(provider), provider.cached ? 'cached' : 'fresh'].filter(Boolean).join('\n'), ...cells]));
162
168
  }
163
169
  lines.push(border('└', '┴', '┘'));
164
170
  if (!report.providers.length)
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
@@ -39,8 +39,9 @@ export function timestamp(value) {
39
39
  : numeric < 100_000_000_000 ? numeric * 1000 : numeric;
40
40
  if (!Number.isFinite(ms))
41
41
  throw new UsageError('invalid_response');
42
+ // Providers compute reset times relative to the request, so the milliseconds jitter between calls. Whole seconds are stable enough.
42
43
  try {
43
- return new Date(ms).toISOString();
44
+ return new Date(Math.round(ms / 1000) * 1000).toISOString();
44
45
  }
45
46
  catch {
46
47
  throw new UsageError('invalid_response');
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/providers/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/providers/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC1G,OAAO,KAAY,CAAC;AACtB,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,KAAc,IAAS,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClG,MAAM,UAAU,IAAI,CAAC,KAAc;IACjC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACjH,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC,CAAC,2DAA2D;AACvE,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACtF,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACnE,oIAAoI;IACpI,IAAI,CAAC;QAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAAC,CAAC;AAC1H,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC;AACxG,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACnF,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,IAAa,EAAE,KAAc;IACjD,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,EAAU,EAAE,KAAa,EAAE,GAAQ,EAAE,KAAc,EAAE,IAAI,GAAG,UAAU;IAChG,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACxF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AACvG,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;QAC1F,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC;QAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAAC,CAAC;AACtF,CAAC"}
@@ -23,7 +23,7 @@ For each entry in `providers`:
23
23
  - `availability` is `available`, `unavailable`, or `error`. Only `available` carries usage.
24
24
  - `windows` is the list of rate-limit windows. Each has `label`, `percentUsed`, and `resetsAt`. A provider can have any number of windows, in any order. Do not assume a fixed set.
25
25
  - `percentUsed` is `null` when the provider did not report it. It can exceed 100 when the provider reports overage.
26
- - `resetsAt` is a UTC timestamp or `null`. Time until reset is `resetsAt` minus now.
26
+ - `resetsAt` is a UTC timestamp or `null`. Time until reset is `resetsAt` minus now. Providers compute it relative to each request, so the value can jitter by a second or more between calls, and an idle Codex window moves with the clock. Treat a change of less than a few minutes as the same reset. A real reset moves it forward by a whole window.
27
27
  - `reason.code` explains an unavailable or failed provider: `missing_credentials`, `invalid_credentials`, `unauthorized`, `timeout`, `rate_limited`, `http_error`, `invalid_response`, or `provider_error`.
28
28
  - `cached` is true when the figures come from ASU's five-minute cache. `fetchedAt` is the time of that fetch.
29
29
 
@@ -70,3 +70,7 @@ Do not run it more than once per five minutes.
70
70
  ```
71
71
 
72
72
  Replace `claude` with the provider you run on.
73
+
74
+ ## Measure one command
75
+
76
+ The [asu-usage skill](../skills/asu-usage/SKILL.md) in this repository takes a snapshot before and after a command, prints the percentage points each window consumed, and appends the result to a ledger. Install it with `npx skills add allixsenos/asu`, or copy the directory into your agent's skills folder.
@@ -74,7 +74,7 @@ ASU resolves an installed package name from the current working directory. It ne
74
74
 
75
75
  `schemaVersion: 1` is the machine interface. `generatedAt` describes the report. `fetchedAt` and `expiresAt` describe each provider snapshot. A result includes `providerId`, `displayName`, `experimental`, `installed`, `credentialsPresent`, `authenticated`, `availability`, an optional `reason`, `planLabel`, `windows`, `balances`, `details`, and `cached`.
76
76
 
77
- A window has a stable ID, a label, `percentUsed`, and a UTC `resetsAt`. It can also have quantities, a unit, an unlimited flag, and a model or surface scope. An unknown percentage or reset is `null`. An absent balance or quantity is not zero. A percentage can exceed 100 when the provider reports overage. The human renderers round to two decimals. JSON keeps the normalized precision. An unlimited window shows no percentage.
77
+ A window has a stable ID, a label, `percentUsed`, and a UTC `resetsAt`. It can also have quantities, a unit, an unlimited flag, and a model or surface scope. An unknown percentage or reset is `null`. `resetsAt` has whole-second precision. Providers compute it relative to the request, so two calls can still differ by a second or more for the same window, and an idle Codex window moves with the clock. Compare reset times with a tolerance of a few minutes. An absent balance or quantity is not zero. A percentage can exceed 100 when the provider reports overage. The human renderers round to two decimals. JSON keeps the normalized precision. An unlimited window shows no percentage.
78
78
 
79
79
  Availability is one of three values. `available` means the provider returned usage. `unavailable` means the credentials are missing, rejected, or unreadable. `error` means the fetch or the normalization failed. `authenticated` is `true` only after a recognized successful usage response. It is `false` for unavailable credentials. It is `null` after a request failure that cannot establish authentication. These are snapshot values. They do not promise that the token stays valid after `fetchedAt`.
80
80
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allixsenos/asu",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Agent subscription usage for humans and agents",
5
5
  "type": "module",
6
6
  "bin": {