openlimiter 1.3.1 → 1.3.3
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/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +130 -78
- package/dist/cli.js.map +1 -1
- package/dist/codex-device-login.d.ts +2 -1
- package/dist/codex-device-login.d.ts.map +1 -1
- package/dist/codex-device-login.js +6 -4
- package/dist/codex-device-login.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/hub-auth.d.ts +12 -14
- package/dist/hub-auth.d.ts.map +1 -1
- package/dist/hub-auth.js +232 -47
- package/dist/hub-auth.js.map +1 -1
- package/dist/hub-sync.d.ts +14 -13
- package/dist/hub-sync.d.ts.map +1 -1
- package/dist/hub-sync.js +139 -18
- package/dist/hub-sync.js.map +1 -1
- package/dist/hub.d.ts +6 -3
- package/dist/hub.d.ts.map +1 -1
- package/dist/hub.js +47 -11
- package/dist/hub.js.map +1 -1
- package/dist/ingest.d.ts.map +1 -1
- package/dist/ingest.js +16 -21
- package/dist/ingest.js.map +1 -1
- package/dist/session.d.ts +16 -8
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +144 -31
- package/dist/session.js.map +1 -1
- package/dist/statusline.d.ts +1 -1
- package/dist/statusline.d.ts.map +1 -1
- package/dist/statusline.js +10 -8
- package/dist/statusline.js.map +1 -1
- package/dist/terminal-backup.d.ts +5 -0
- package/dist/terminal-backup.d.ts.map +1 -0
- package/dist/terminal-backup.js +88 -0
- package/dist/terminal-backup.js.map +1 -0
- package/dist/terminal-launcher.d.ts +12 -0
- package/dist/terminal-launcher.d.ts.map +1 -0
- package/dist/terminal-launcher.js +208 -0
- package/dist/terminal-launcher.js.map +1 -0
- package/dist/terminal-toml.d.ts +38 -0
- package/dist/terminal-toml.d.ts.map +1 -0
- package/dist/terminal-toml.js +357 -0
- package/dist/terminal-toml.js.map +1 -0
- package/dist/terminal.d.ts +10 -37
- package/dist/terminal.d.ts.map +1 -1
- package/dist/terminal.js +390 -619
- package/dist/terminal.js.map +1 -1
- package/package.json +4 -4
package/dist/hub-auth.js
CHANGED
|
@@ -10,14 +10,18 @@
|
|
|
10
10
|
* lifetime, so a stubbed or misbehaving transport in a test cannot spin it
|
|
11
11
|
* forever.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
13
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
14
|
+
import { cliLoginAckRequest, cliLoginPollRequest, cliLoginStartRequest, grantRenewRequest, hubConfigured, parseHubJson } from "./hub.js";
|
|
15
|
+
import { sessionIsFresh, StorageDiagnosticError } from "./session.js";
|
|
15
16
|
/** The sentence a hub side revocation prints, word for word. */
|
|
16
17
|
export const REVOKED_SENTENCE = "Signed out on the hub, run openlimiter login";
|
|
17
18
|
/** The sentence a login code the hub already consumed prints, word for word. */
|
|
18
19
|
export const CODE_CONSUMED_SENTENCE = "That code was already used, run openlimiter login again";
|
|
20
|
+
export const DELIVERY_UNCONFIRMED_SENTENCE = "The server could not confirm delivery, but the session is usable.";
|
|
19
21
|
/** Extra polls past the hub's own stated lifetime, before this build gives up. */
|
|
20
22
|
export const LOGIN_SAFETY_MARGIN_POLLS = 5;
|
|
23
|
+
export const MAX_SERVER_ERROR_RETRIES = 3;
|
|
24
|
+
const MAX_RETRY_INTERVAL_SECONDS = 30;
|
|
21
25
|
function isFiniteInRange(value, minimum, maximum) {
|
|
22
26
|
return typeof value === "number" && Number.isFinite(value) && value >= minimum && value <= maximum;
|
|
23
27
|
}
|
|
@@ -27,6 +31,24 @@ function isBoundedString(value, minimum, maximum) {
|
|
|
27
31
|
function isInstant(value) {
|
|
28
32
|
return isBoundedString(value, 1, 64) && Number.isFinite(Date.parse(value));
|
|
29
33
|
}
|
|
34
|
+
function serverMessage(body, secrets = []) {
|
|
35
|
+
const parsed = parseHubJson(body);
|
|
36
|
+
if (parsed === null)
|
|
37
|
+
return null;
|
|
38
|
+
for (const field of ["message", "error", "detail"]) {
|
|
39
|
+
const value = parsed[field];
|
|
40
|
+
if (isBoundedString(value, 1, 512) &&
|
|
41
|
+
secrets.every((secret) => secret.length === 0 || !value.includes(secret))) {
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function nextBackoffInterval(intervalSeconds, retryAfterSeconds) {
|
|
48
|
+
return Math.min(MAX_RETRY_INTERVAL_SECONDS, Math.max(intervalSeconds * 2, typeof retryAfterSeconds === "number" && Number.isFinite(retryAfterSeconds)
|
|
49
|
+
? retryAfterSeconds
|
|
50
|
+
: 0));
|
|
51
|
+
}
|
|
30
52
|
/**
|
|
31
53
|
* Whether Ctrl C asked this poll loop to stop.
|
|
32
54
|
*
|
|
@@ -154,6 +176,95 @@ export function accountLabelFromToken(token, fallback) {
|
|
|
154
176
|
}
|
|
155
177
|
return fallback;
|
|
156
178
|
}
|
|
179
|
+
async function acknowledgeDelivery(options, start, deviceCode, token, clientProof, initialIntervalSeconds, deadline, signal) {
|
|
180
|
+
let intervalSeconds = initialIntervalSeconds;
|
|
181
|
+
const maxAttempts = Math.ceil(start.expiresInSeconds / initialIntervalSeconds) + LOGIN_SAFETY_MARGIN_POLLS;
|
|
182
|
+
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
183
|
+
if (isAborted(signal) || Date.now() >= deadline)
|
|
184
|
+
return { kind: "unconfirmed" };
|
|
185
|
+
const request = cliLoginAckRequest(options.environment, deviceCode, token, clientProof);
|
|
186
|
+
if (request === null)
|
|
187
|
+
return { kind: "error", message: "the delivery acknowledgement could not be sent" };
|
|
188
|
+
let reply;
|
|
189
|
+
try {
|
|
190
|
+
reply = await awaitWithSignal(options.transport(request, signal), signal);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
if (attempt + 1 >= maxAttempts || Date.now() >= deadline)
|
|
194
|
+
return { kind: "unconfirmed" };
|
|
195
|
+
if (!(await sleepWithSignal(options, Math.min(intervalSeconds * 1_000, Math.max(0, deadline - Date.now())), signal))) {
|
|
196
|
+
return { kind: "unconfirmed" };
|
|
197
|
+
}
|
|
198
|
+
intervalSeconds = Math.min(MAX_RETRY_INTERVAL_SECONDS, intervalSeconds * 2);
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
if (isAborted(signal) || Date.now() >= deadline)
|
|
202
|
+
return { kind: "unconfirmed" };
|
|
203
|
+
if (reply.status === 403 || reply.status === 404 || reply.status === 410) {
|
|
204
|
+
return { kind: "unconfirmed" };
|
|
205
|
+
}
|
|
206
|
+
if (reply.status >= 200 && reply.status < 300) {
|
|
207
|
+
const parsed = parseHubJson(reply.body);
|
|
208
|
+
return parsed?.["status"] === "consumed"
|
|
209
|
+
? { kind: "confirmed" }
|
|
210
|
+
: { kind: "unconfirmed" };
|
|
211
|
+
}
|
|
212
|
+
if (reply.status === 429 || reply.status === 503 || (reply.status >= 500 && reply.status <= 599)) {
|
|
213
|
+
if (attempt + 1 >= maxAttempts || Date.now() >= deadline)
|
|
214
|
+
return { kind: "unconfirmed" };
|
|
215
|
+
intervalSeconds = nextBackoffInterval(intervalSeconds, reply.retryAfterSeconds);
|
|
216
|
+
if (!(await sleepWithSignal(options, Math.min(intervalSeconds * 1_000, Math.max(0, deadline - Date.now())), signal))) {
|
|
217
|
+
return { kind: "unconfirmed" };
|
|
218
|
+
}
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
kind: "error",
|
|
223
|
+
message: "the hub returned status " + reply.status + " while confirming sign in"
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
return { kind: "unconfirmed" };
|
|
227
|
+
}
|
|
228
|
+
function awaitWithSignal(operation, signal) {
|
|
229
|
+
if (signal.aborted)
|
|
230
|
+
return Promise.reject(new Error("aborted"));
|
|
231
|
+
return new Promise((resolve, reject) => {
|
|
232
|
+
let settled = false;
|
|
233
|
+
const onAbort = () => {
|
|
234
|
+
if (settled)
|
|
235
|
+
return;
|
|
236
|
+
settled = true;
|
|
237
|
+
reject(new Error("aborted"));
|
|
238
|
+
};
|
|
239
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
240
|
+
operation.then((value) => {
|
|
241
|
+
if (settled)
|
|
242
|
+
return;
|
|
243
|
+
settled = true;
|
|
244
|
+
signal.removeEventListener("abort", onAbort);
|
|
245
|
+
resolve(value);
|
|
246
|
+
}, (error) => {
|
|
247
|
+
if (settled)
|
|
248
|
+
return;
|
|
249
|
+
settled = true;
|
|
250
|
+
signal.removeEventListener("abort", onAbort);
|
|
251
|
+
reject(error);
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
async function sleepWithSignal(options, milliseconds, signal) {
|
|
256
|
+
if (milliseconds <= 0 || isAborted(signal))
|
|
257
|
+
return false;
|
|
258
|
+
try {
|
|
259
|
+
await awaitWithSignal(options.sleep(milliseconds, signal), signal);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
if (isAborted(signal))
|
|
263
|
+
return false;
|
|
264
|
+
throw error;
|
|
265
|
+
}
|
|
266
|
+
return !isAborted(signal);
|
|
267
|
+
}
|
|
157
268
|
/**
|
|
158
269
|
* Run the whole device flow: start, show the code, poll until an ending.
|
|
159
270
|
*
|
|
@@ -167,74 +278,148 @@ export function accountLabelFromToken(token, fallback) {
|
|
|
167
278
|
export async function runDeviceLogin(options) {
|
|
168
279
|
if (!hubConfigured(options.environment))
|
|
169
280
|
return { kind: "not_configured" };
|
|
170
|
-
const
|
|
281
|
+
const clientProof = randomBytes(32).toString("base64url");
|
|
282
|
+
const clientProofHash = createHash("sha256").update(clientProof, "utf8").digest("base64url");
|
|
283
|
+
const startRequest = cliLoginStartRequest(options.environment, clientProofHash);
|
|
171
284
|
if (startRequest === null)
|
|
172
285
|
return { kind: "not_configured" };
|
|
286
|
+
const loginController = new AbortController();
|
|
287
|
+
const signal = loginController.signal;
|
|
288
|
+
const forwardAbort = () => loginController.abort();
|
|
289
|
+
if (options.interruptSignal?.aborted)
|
|
290
|
+
loginController.abort();
|
|
291
|
+
else
|
|
292
|
+
options.interruptSignal?.addEventListener("abort", forwardAbort, { once: true });
|
|
173
293
|
let startReply;
|
|
174
294
|
try {
|
|
175
|
-
startReply = await options.transport(startRequest);
|
|
295
|
+
startReply = await awaitWithSignal(options.transport(startRequest, signal), signal);
|
|
176
296
|
}
|
|
177
297
|
catch {
|
|
298
|
+
options.interruptSignal?.removeEventListener("abort", forwardAbort);
|
|
299
|
+
if (isAborted(signal))
|
|
300
|
+
return { kind: "cancelled" };
|
|
178
301
|
return { kind: "error", message: "could not reach the hub" };
|
|
179
302
|
}
|
|
180
303
|
if (startReply.status < 200 || startReply.status >= 300) {
|
|
304
|
+
options.interruptSignal?.removeEventListener("abort", forwardAbort);
|
|
181
305
|
return { kind: "error", message: "the hub refused the sign in request" };
|
|
182
306
|
}
|
|
183
307
|
const start = parseLoginStart(startReply.body);
|
|
184
308
|
if (start === null) {
|
|
309
|
+
options.interruptSignal?.removeEventListener("abort", forwardAbort);
|
|
185
310
|
return { kind: "error", message: "the hub answered with something this build could not read" };
|
|
186
311
|
}
|
|
312
|
+
const deadline = Date.now() + start.expiresInSeconds * 1_000;
|
|
187
313
|
options.emit("Enter this code: " + start.userCode);
|
|
188
314
|
options.emit("At: " + start.verificationUrl);
|
|
189
315
|
if (options.open)
|
|
190
316
|
options.openBrowser?.(start.verificationUrl);
|
|
317
|
+
const deadlineTimer = setTimeout(() => loginController.abort(), Math.max(0, deadline - Date.now()));
|
|
191
318
|
let intervalSeconds = start.intervalSeconds;
|
|
319
|
+
let serverErrorRetries = 0;
|
|
192
320
|
const maxAttempts = Math.ceil(start.expiresInSeconds / intervalSeconds) + LOGIN_SAFETY_MARGIN_POLLS;
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
321
|
+
try {
|
|
322
|
+
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
323
|
+
if (isAborted(signal))
|
|
324
|
+
return { kind: Date.now() >= deadline ? "expired" : "cancelled" };
|
|
325
|
+
const remaining = deadline - Date.now();
|
|
326
|
+
if (remaining <= 0)
|
|
327
|
+
return { kind: "expired" };
|
|
328
|
+
if (!(await sleepWithSignal(options, Math.min(intervalSeconds * 1_000, remaining), signal))) {
|
|
329
|
+
return { kind: Date.now() >= deadline ? "expired" : "cancelled" };
|
|
330
|
+
}
|
|
331
|
+
if (isAborted(signal) || Date.now() >= deadline)
|
|
332
|
+
return { kind: "expired" };
|
|
333
|
+
const pollRequest = cliLoginPollRequest(options.environment, start.deviceCode, clientProof);
|
|
334
|
+
if (pollRequest === null)
|
|
335
|
+
return { kind: "error", message: "the device code could not be sent" };
|
|
336
|
+
let pollReply;
|
|
337
|
+
try {
|
|
338
|
+
pollReply = await awaitWithSignal(options.transport(pollRequest, signal), signal);
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
if (isAborted(signal))
|
|
342
|
+
return { kind: Date.now() >= deadline ? "expired" : "cancelled" };
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
if (isAborted(signal))
|
|
346
|
+
return { kind: Date.now() >= deadline ? "expired" : "cancelled" };
|
|
347
|
+
if (pollReply.status === 403) {
|
|
348
|
+
const message = serverMessage(pollReply.body, [clientProof]);
|
|
349
|
+
return message === null ? { kind: "denied" } : { kind: "denied", message };
|
|
350
|
+
}
|
|
351
|
+
if (pollReply.status === 409)
|
|
352
|
+
return { kind: "expired", message: CODE_CONSUMED_SENTENCE };
|
|
353
|
+
if (pollReply.status === 404 || pollReply.status === 410)
|
|
354
|
+
return { kind: "expired" };
|
|
355
|
+
if (pollReply.status === 429 || pollReply.status === 503) {
|
|
356
|
+
const retryAfter = pollReply.retryAfterSeconds;
|
|
357
|
+
intervalSeconds = nextBackoffInterval(intervalSeconds, retryAfter);
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
if (pollReply.status >= 500 && pollReply.status <= 599) {
|
|
361
|
+
serverErrorRetries += 1;
|
|
362
|
+
if (serverErrorRetries > MAX_SERVER_ERROR_RETRIES) {
|
|
363
|
+
return {
|
|
364
|
+
kind: "error",
|
|
365
|
+
message: "the hub returned status " + pollReply.status + " while checking sign in"
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
intervalSeconds = Math.min(MAX_RETRY_INTERVAL_SECONDS, intervalSeconds * 2);
|
|
369
|
+
continue;
|
|
370
|
+
}
|
|
371
|
+
if (pollReply.status === 202)
|
|
372
|
+
continue;
|
|
373
|
+
if (pollReply.status !== 200) {
|
|
374
|
+
return {
|
|
375
|
+
kind: "error",
|
|
376
|
+
message: "the hub returned status " + pollReply.status + " while checking sign in"
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
const poll = parseLoginPoll(pollReply.body);
|
|
380
|
+
if (poll === null)
|
|
381
|
+
continue;
|
|
382
|
+
if (poll.status === "pending")
|
|
383
|
+
continue;
|
|
384
|
+
if (poll.status === "slow_down") {
|
|
385
|
+
intervalSeconds += 5;
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
388
|
+
if (poll.status === "denied")
|
|
389
|
+
return { kind: "denied" };
|
|
390
|
+
if (poll.status === "expired")
|
|
391
|
+
return { kind: "expired" };
|
|
392
|
+
if (poll.status === "consumed")
|
|
393
|
+
return { kind: "expired", message: CODE_CONSUMED_SENTENCE };
|
|
394
|
+
const session = {
|
|
395
|
+
version: 1,
|
|
396
|
+
token: poll.token,
|
|
397
|
+
expiresAt: poll.expiresAt,
|
|
398
|
+
refreshCredential: poll.refreshCredential,
|
|
399
|
+
refreshExpiresAt: poll.refreshExpiresAt,
|
|
400
|
+
deviceId: poll.deviceId,
|
|
401
|
+
accountLabel: accountLabelFromToken(poll.token, poll.deviceId)
|
|
402
|
+
};
|
|
403
|
+
try {
|
|
404
|
+
await options.storeSession?.(session);
|
|
405
|
+
}
|
|
406
|
+
catch (error) {
|
|
407
|
+
if (error instanceof StorageDiagnosticError) {
|
|
408
|
+
return { kind: "storage_error", message: error.message, diagnostic: error.diagnostic };
|
|
409
|
+
}
|
|
410
|
+
return { kind: "error", message: "could not save the signed in session" };
|
|
411
|
+
}
|
|
412
|
+
const acknowledgement = await acknowledgeDelivery(options, start, start.deviceCode, session.token, clientProof, intervalSeconds, deadline, signal);
|
|
413
|
+
if (acknowledgement.kind === "error")
|
|
414
|
+
return acknowledgement;
|
|
415
|
+
return { kind: "signed_in", session, deliveryConfirmed: acknowledgement.kind === "confirmed" };
|
|
219
416
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
return { kind: "expired", message: CODE_CONSUMED_SENTENCE };
|
|
226
|
-
const session = {
|
|
227
|
-
version: 1,
|
|
228
|
-
token: poll.token,
|
|
229
|
-
expiresAt: poll.expiresAt,
|
|
230
|
-
refreshCredential: poll.refreshCredential,
|
|
231
|
-
refreshExpiresAt: poll.refreshExpiresAt,
|
|
232
|
-
deviceId: poll.deviceId,
|
|
233
|
-
accountLabel: accountLabelFromToken(poll.token, poll.deviceId)
|
|
234
|
-
};
|
|
235
|
-
return { kind: "signed_in", session };
|
|
417
|
+
return { kind: "expired" };
|
|
418
|
+
}
|
|
419
|
+
finally {
|
|
420
|
+
clearTimeout(deadlineTimer);
|
|
421
|
+
options.interruptSignal?.removeEventListener("abort", forwardAbort);
|
|
236
422
|
}
|
|
237
|
-
return { kind: "expired" };
|
|
238
423
|
}
|
|
239
424
|
/**
|
|
240
425
|
* Make sure a session is good for one more upload, renewing if it is not.
|
package/dist/hub-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-auth.js","sourceRoot":"","sources":["../src/hub-auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hub-auth.js","sourceRoot":"","sources":["../src/hub-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/hub-sync.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type Snapshot } from "@openlimiter/core";
|
|
2
2
|
import { type HubTransport } from "./hub.js";
|
|
3
3
|
export declare const SYNC_CURSOR_FILE_NAME = "openlimiter-sync-cursor.json";
|
|
4
|
+
export declare const OPENROUTER_BASELINE_FILE_NAME = "openlimiter-openrouter-baseline.json";
|
|
5
|
+
export declare function syncIsDue(directory: string, now: string): Promise<boolean>;
|
|
6
|
+
export declare function recordSyncAttempt(directory: string, now: string): Promise<void>;
|
|
4
7
|
/** The contract version this build speaks, and nothing else. */
|
|
5
8
|
export declare const SYNC_SCHEMA_VERSION = 2;
|
|
6
9
|
/**
|
|
@@ -11,7 +14,7 @@ export declare const SYNC_SCHEMA_VERSION = 2;
|
|
|
11
14
|
* inside a command a status line depends on. See `acquire/identity.ts` in the
|
|
12
15
|
* core package for the same choice, made for the same reason.
|
|
13
16
|
*/
|
|
14
|
-
export declare const SYNC_CLIENT_VERSION = "1.3.
|
|
17
|
+
export declare const SYNC_CLIENT_VERSION = "1.3.3";
|
|
15
18
|
/** Most rows one envelope may carry, usage and spend counted together. */
|
|
16
19
|
export declare const SYNC_MAX_ROWS = 128;
|
|
17
20
|
/** How long an unresolved upload may still be retried as itself. */
|
|
@@ -83,18 +86,18 @@ export declare function usageSamplesFromSnapshots(snapshots: readonly Snapshot[]
|
|
|
83
86
|
/**
|
|
84
87
|
* Every spend row the cache has enough to build.
|
|
85
88
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
89
|
+
* Fixed windows spanning the observation's complete calendar month establish
|
|
90
|
+
* monthly spending directly. OpenRouter lifetime readings use a local per
|
|
91
|
+
* account baseline and contribute only the delta since that reading. Other
|
|
92
|
+
* lifetime credits and rolling windows stay local. The source period ends at
|
|
93
|
+
* the observation, never at the upload.
|
|
91
94
|
* `usedAmount`, `limitAmount` and `currency` travel together or not at all
|
|
92
95
|
* (see `Snapshot` in the core package), which is what this reads as "the
|
|
93
96
|
* cache has one".
|
|
94
97
|
*/
|
|
95
98
|
/** The providers the hub accepts an API spend sample for (mirrors API_PROVIDERS in the server contract); every other provider's spend stays local, otherwise one row would void the whole envelope. */
|
|
96
99
|
export declare const SYNC_API_SPEND_PROVIDERS: ReadonlySet<string>;
|
|
97
|
-
export declare function apiSpendSamplesFromSnapshots(snapshots: readonly Snapshot[],
|
|
100
|
+
export declare function apiSpendSamplesFromSnapshots(snapshots: readonly Snapshot[], _envelopeObservedAt: string, directory?: string): Promise<ApiSpendSample[]>;
|
|
98
101
|
export interface EnvelopeIdentity {
|
|
99
102
|
readonly deviceId: string;
|
|
100
103
|
readonly eventId: string;
|
|
@@ -118,6 +121,8 @@ export interface RunSyncOptions {
|
|
|
118
121
|
readonly token: string;
|
|
119
122
|
readonly deviceId: string;
|
|
120
123
|
readonly snapshots: readonly Snapshot[];
|
|
124
|
+
/** Set only when the caller already owns the session lock. */
|
|
125
|
+
readonly sessionLockHeld?: boolean;
|
|
121
126
|
}
|
|
122
127
|
export type SyncResult = {
|
|
123
128
|
readonly kind: "nothing_to_sync";
|
|
@@ -129,15 +134,11 @@ export type SyncResult = {
|
|
|
129
134
|
readonly kind: "revoked";
|
|
130
135
|
} | {
|
|
131
136
|
readonly kind: "rejected";
|
|
137
|
+
} | {
|
|
138
|
+
readonly kind: "sequence_mismatch";
|
|
132
139
|
} | {
|
|
133
140
|
readonly kind: "unavailable";
|
|
134
141
|
};
|
|
135
|
-
/**
|
|
136
|
-
* One upload, on the version 2 contract, with the same three way ending the
|
|
137
|
-
* hub's cursor rule requires: accepted advances the cursor, a reply that
|
|
138
|
-
* never arrived leaves the same upload pending for the next run, and a
|
|
139
|
-
* conflict names the hub's own sequence and is retried once.
|
|
140
|
-
*/
|
|
141
142
|
export declare function runSync(options: RunSyncOptions): Promise<SyncResult>;
|
|
142
143
|
/** The state directory's default, exported so a caller need not repeat it. */
|
|
143
144
|
export declare function defaultSyncDirectory(): string;
|
package/dist/hub-sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-sync.d.ts","sourceRoot":"","sources":["../src/hub-sync.ts"],"names":[],"mappings":"AAuBA,OAAO,
|
|
1
|
+
{"version":3,"file":"hub-sync.d.ts","sourceRoot":"","sources":["../src/hub-sync.ts"],"names":[],"mappings":"AAuBA,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGjF,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AACpE,eAAO,MAAM,6BAA6B,yCAAyC,CAAC;AAGpF,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKhF;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;AAED,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAE3C,0EAA0E;AAC1E,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;CACvD;AAqBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,GAAG,EAAE,MAAM,GACV,WAAW,EAAE,CAoBf;AAyED;;;;;;;;;;;GAWG;AACH,uMAAuM;AACvM,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAyD,CAAC;AAEnH,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,mBAAmB,EAAE,MAAM,EAC3B,SAAS,SAA0B,GAClC,OAAO,CAAC,cAAc,EAAE,CAAC,CAqF3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,eAAe,EAAE,SAAS,cAAc,EAAE,GACzC,YAAY,CAkBd;AAkJD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IACxC,8DAA8D;IAC9D,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACpC;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAmFrC,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAG1E;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
|