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-sync.js
CHANGED
|
@@ -21,9 +21,21 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { randomUUID, createHash } from "node:crypto";
|
|
23
23
|
import path from "node:path";
|
|
24
|
-
import { canonicalJson, freshness, readJsonFileSafely, resolveStateDirectory, writeFileAtomically } from "@openlimiter/core";
|
|
24
|
+
import { canonicalJson, freshness, prepareStateDirectory, readJsonFileSafely, resolveStateDirectory, writeFileAtomically } from "@openlimiter/core";
|
|
25
25
|
import { parseHubJson, syncSnapshotsRequest } from "./hub.js";
|
|
26
|
+
import { withSessionLock } from "./session.js";
|
|
26
27
|
export const SYNC_CURSOR_FILE_NAME = "openlimiter-sync-cursor.json";
|
|
28
|
+
export const OPENROUTER_BASELINE_FILE_NAME = "openlimiter-openrouter-baseline.json";
|
|
29
|
+
const SYNC_ATTEMPT_FILE_NAME = "openlimiter-sync-attempt.json";
|
|
30
|
+
export async function syncIsDue(directory, now) {
|
|
31
|
+
const result = await readJsonFileSafely(path.join(directory, SYNC_ATTEMPT_FILE_NAME));
|
|
32
|
+
const at = result.ok && isRecord(result.value) ? result.value["at"] : undefined;
|
|
33
|
+
const age = typeof at === "string" ? Date.parse(now) - Date.parse(at) : NaN;
|
|
34
|
+
return !Number.isFinite(age) || age < 0 || age >= 60_000;
|
|
35
|
+
}
|
|
36
|
+
export async function recordSyncAttempt(directory, now) {
|
|
37
|
+
await writeFileAtomically(path.join(directory, SYNC_ATTEMPT_FILE_NAME), canonicalJson({ at: now }));
|
|
38
|
+
}
|
|
27
39
|
/** The contract version this build speaks, and nothing else. */
|
|
28
40
|
export const SYNC_SCHEMA_VERSION = 2;
|
|
29
41
|
/**
|
|
@@ -34,7 +46,7 @@ export const SYNC_SCHEMA_VERSION = 2;
|
|
|
34
46
|
* inside a command a status line depends on. See `acquire/identity.ts` in the
|
|
35
47
|
* core package for the same choice, made for the same reason.
|
|
36
48
|
*/
|
|
37
|
-
export const SYNC_CLIENT_VERSION = "1.3.
|
|
49
|
+
export const SYNC_CLIENT_VERSION = "1.3.3";
|
|
38
50
|
/** Most rows one envelope may carry, usage and spend counted together. */
|
|
39
51
|
export const SYNC_MAX_ROWS = 128;
|
|
40
52
|
/** How long an unresolved upload may still be retried as itself. */
|
|
@@ -116,25 +128,117 @@ function monthStartDate(observedAt) {
|
|
|
116
128
|
.toISOString()
|
|
117
129
|
.slice(0, 10);
|
|
118
130
|
}
|
|
131
|
+
function utcMonth(observedAt) {
|
|
132
|
+
const parsed = new Date(observedAt);
|
|
133
|
+
if (Number.isNaN(parsed.getTime()))
|
|
134
|
+
return null;
|
|
135
|
+
return parsed.toISOString().slice(0, 7);
|
|
136
|
+
}
|
|
137
|
+
function isSafeUsage(value) {
|
|
138
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 1_000_000_000_000;
|
|
139
|
+
}
|
|
140
|
+
function readOpenrouterBaselines(value) {
|
|
141
|
+
if (!isRecord(value) || value["version"] !== 1 || !isRecord(value["accounts"])) {
|
|
142
|
+
return new Map();
|
|
143
|
+
}
|
|
144
|
+
const result = new Map();
|
|
145
|
+
for (const [accountId, raw] of Object.entries(value["accounts"])) {
|
|
146
|
+
if (!ACCOUNT_ID_PATTERN.test(accountId) || !isRecord(raw))
|
|
147
|
+
continue;
|
|
148
|
+
const totalUsage = raw["totalUsage"];
|
|
149
|
+
const month = raw["month"];
|
|
150
|
+
const observedAt = raw["observedAt"];
|
|
151
|
+
if (!isSafeUsage(totalUsage) || typeof month !== "string" || !/^\d{4}-\d{2}$/u.test(month) ||
|
|
152
|
+
typeof observedAt !== "string" || !Number.isFinite(Date.parse(observedAt)))
|
|
153
|
+
continue;
|
|
154
|
+
result.set(accountId, { totalUsage, month, observedAt });
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
async function loadOpenrouterBaselines(directory) {
|
|
159
|
+
const result = await readJsonFileSafely(path.join(directory, OPENROUTER_BASELINE_FILE_NAME));
|
|
160
|
+
return readOpenrouterBaselines(result.ok ? result.value : null);
|
|
161
|
+
}
|
|
162
|
+
async function saveOpenrouterBaselines(directory, baselines) {
|
|
163
|
+
const accounts = {};
|
|
164
|
+
for (const [accountId, baseline] of baselines)
|
|
165
|
+
accounts[accountId] = baseline;
|
|
166
|
+
await prepareStateDirectory(directory);
|
|
167
|
+
await writeFileAtomically(path.join(directory, OPENROUTER_BASELINE_FILE_NAME), canonicalJson({ version: 1, accounts }));
|
|
168
|
+
}
|
|
119
169
|
/**
|
|
120
170
|
* Every spend row the cache has enough to build.
|
|
121
171
|
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
172
|
+
* Fixed windows spanning the observation's complete calendar month establish
|
|
173
|
+
* monthly spending directly. OpenRouter lifetime readings use a local per
|
|
174
|
+
* account baseline and contribute only the delta since that reading. Other
|
|
175
|
+
* lifetime credits and rolling windows stay local. The source period ends at
|
|
176
|
+
* the observation, never at the upload.
|
|
127
177
|
* `usedAmount`, `limitAmount` and `currency` travel together or not at all
|
|
128
178
|
* (see `Snapshot` in the core package), which is what this reads as "the
|
|
129
179
|
* cache has one".
|
|
130
180
|
*/
|
|
131
181
|
/** 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. */
|
|
132
182
|
export const SYNC_API_SPEND_PROVIDERS = new Set(["OPENAI", "ANTHROPIC", "XAI", "OPENROUTER"]);
|
|
133
|
-
export function apiSpendSamplesFromSnapshots(snapshots,
|
|
183
|
+
export async function apiSpendSamplesFromSnapshots(snapshots, _envelopeObservedAt, directory = resolveStateDirectory()) {
|
|
134
184
|
const rows = [];
|
|
185
|
+
let baselines = null;
|
|
186
|
+
let baselinesChanged = false;
|
|
135
187
|
for (const snapshot of snapshots) {
|
|
136
188
|
if (!SYNC_API_SPEND_PROVIDERS.has(snapshot.provider))
|
|
137
189
|
continue;
|
|
190
|
+
const isOpenrouterLifetime = snapshot.provider === "OPENROUTER" && snapshot.window.kind === "lifetime";
|
|
191
|
+
if (isOpenrouterLifetime) {
|
|
192
|
+
if (snapshot.usedAmount === undefined ||
|
|
193
|
+
snapshot.limitAmount === undefined ||
|
|
194
|
+
snapshot.currency === undefined ||
|
|
195
|
+
!isSafeUsage(snapshot.usedAmount) ||
|
|
196
|
+
!isSafeUsage(snapshot.limitAmount) ||
|
|
197
|
+
snapshot.currency !== "USD")
|
|
198
|
+
continue;
|
|
199
|
+
const accountId = accountIdOf(snapshot);
|
|
200
|
+
const month = utcMonth(snapshot.observedAt);
|
|
201
|
+
if (accountId === null || month === null)
|
|
202
|
+
continue;
|
|
203
|
+
baselines ??= await loadOpenrouterBaselines(directory);
|
|
204
|
+
const previous = baselines.get(accountId);
|
|
205
|
+
if (previous === undefined || previous.month !== month || snapshot.usedAmount < previous.totalUsage) {
|
|
206
|
+
baselines.set(accountId, {
|
|
207
|
+
totalUsage: snapshot.usedAmount,
|
|
208
|
+
month,
|
|
209
|
+
observedAt: snapshot.observedAt
|
|
210
|
+
});
|
|
211
|
+
baselinesChanged = true;
|
|
212
|
+
/* The server contract has no note field. The first observation is
|
|
213
|
+
stored locally and the first upload starts its source period at that
|
|
214
|
+
reading, with period_complete false to mean since first reading. */
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
rows.push({
|
|
218
|
+
source_id: stableSourceId(snapshot.provider + ":" + accountId),
|
|
219
|
+
account_id: accountId,
|
|
220
|
+
provider: snapshot.provider,
|
|
221
|
+
key_label: snapshot.accountLabel ?? accountId,
|
|
222
|
+
month: monthStartDate(snapshot.observedAt),
|
|
223
|
+
spend_usd: snapshot.usedAmount - previous.totalUsage,
|
|
224
|
+
budget_usd: snapshot.limitAmount,
|
|
225
|
+
source_period: [previous.observedAt, snapshot.observedAt],
|
|
226
|
+
currency_source: "PROVIDER_USD",
|
|
227
|
+
raw_unit_scale: 1,
|
|
228
|
+
forecast_date: null,
|
|
229
|
+
forecast_input: null,
|
|
230
|
+
period_complete: false
|
|
231
|
+
});
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
if (snapshot.window.kind !== "fixed" || snapshot.resetAt === null)
|
|
235
|
+
continue;
|
|
236
|
+
const monthStart = monthStartDate(snapshot.observedAt) + "T00:00:00.000Z";
|
|
237
|
+
const nextMonth = new Date(monthStart);
|
|
238
|
+
nextMonth.setUTCMonth(nextMonth.getUTCMonth() + 1);
|
|
239
|
+
if (snapshot.resetAt !== nextMonth.toISOString() ||
|
|
240
|
+
snapshot.window.durationSeconds !== (nextMonth.getTime() - Date.parse(monthStart)) / 1000)
|
|
241
|
+
continue;
|
|
138
242
|
if (snapshot.usedAmount === undefined ||
|
|
139
243
|
snapshot.limitAmount === undefined ||
|
|
140
244
|
snapshot.currency === undefined) {
|
|
@@ -155,7 +259,7 @@ export function apiSpendSamplesFromSnapshots(snapshots, envelopeObservedAt) {
|
|
|
155
259
|
month: monthStartDate(snapshot.observedAt),
|
|
156
260
|
spend_usd: snapshot.usedAmount,
|
|
157
261
|
budget_usd: snapshot.limitAmount,
|
|
158
|
-
source_period: [
|
|
262
|
+
source_period: [monthStart, snapshot.observedAt],
|
|
159
263
|
currency_source: "PROVIDER_USD",
|
|
160
264
|
raw_unit_scale: 1,
|
|
161
265
|
forecast_date: null,
|
|
@@ -163,6 +267,8 @@ export function apiSpendSamplesFromSnapshots(snapshots, envelopeObservedAt) {
|
|
|
163
267
|
period_complete: false
|
|
164
268
|
});
|
|
165
269
|
}
|
|
270
|
+
if (baselines !== null && baselinesChanged)
|
|
271
|
+
await saveOpenrouterBaselines(directory, baselines);
|
|
166
272
|
return rows.slice(0, SYNC_MAX_ROWS);
|
|
167
273
|
}
|
|
168
274
|
/**
|
|
@@ -195,6 +301,9 @@ export function buildSyncEnvelope(identity, usageSamples, apiSpendSamples) {
|
|
|
195
301
|
function envelopeDigest(envelope) {
|
|
196
302
|
return createHash("sha256").update(canonicalJson(envelope)).digest("hex");
|
|
197
303
|
}
|
|
304
|
+
function isSafeSequence(value) {
|
|
305
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
306
|
+
}
|
|
198
307
|
function isRecord(value) {
|
|
199
308
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
200
309
|
}
|
|
@@ -205,14 +314,14 @@ function normalizeCursor(value, deviceId) {
|
|
|
205
314
|
if (value["version"] !== 1 || value["deviceId"] !== deviceId)
|
|
206
315
|
return empty;
|
|
207
316
|
const sequence = value["sequence"];
|
|
208
|
-
if (
|
|
317
|
+
if (!isSafeSequence(sequence))
|
|
209
318
|
return empty;
|
|
210
319
|
const pendingEventId = value["pendingEventId"];
|
|
211
320
|
const pendingSequence = value["pendingSequence"];
|
|
212
321
|
const pendingObservedAt = value["pendingObservedAt"];
|
|
213
322
|
const pendingDigest = value["pendingDigest"];
|
|
214
323
|
const pendingComplete = typeof pendingEventId === "string" &&
|
|
215
|
-
|
|
324
|
+
isSafeSequence(pendingSequence) &&
|
|
216
325
|
typeof pendingObservedAt === "string" &&
|
|
217
326
|
typeof pendingDigest === "string";
|
|
218
327
|
if (!pendingComplete)
|
|
@@ -279,17 +388,20 @@ function resumableEnvelope(cursor, usageSamples, apiSpendSamples, now) {
|
|
|
279
388
|
}, usageSamples, apiSpendSamples);
|
|
280
389
|
return envelopeDigest(candidate) === cursor.pendingDigest ? candidate : null;
|
|
281
390
|
}
|
|
282
|
-
function classifySyncReply(status, body, sentSequence) {
|
|
391
|
+
function classifySyncReply(status, body, sentSequence, storedSequence) {
|
|
283
392
|
if (status === 200 && body["accepted"] === true) {
|
|
284
|
-
const
|
|
393
|
+
const rawSequence = body["sequence"];
|
|
394
|
+
const sequence = rawSequence === undefined ? sentSequence : rawSequence;
|
|
395
|
+
if (!isSafeSequence(sequence) || sequence !== sentSequence)
|
|
396
|
+
return { kind: "sequence_mismatch" };
|
|
285
397
|
const tier = typeof body["tier"] === "string" ? body["tier"] : null;
|
|
286
398
|
return { kind: "accepted", sequence, tier };
|
|
287
399
|
}
|
|
288
400
|
if (status === 409) {
|
|
289
401
|
const currentSequence = body["current_sequence"];
|
|
290
|
-
return
|
|
402
|
+
return isSafeSequence(currentSequence) && currentSequence >= storedSequence
|
|
291
403
|
? { kind: "reconcile", sequence: currentSequence }
|
|
292
|
-
: { kind: "
|
|
404
|
+
: { kind: "sequence_mismatch" };
|
|
293
405
|
}
|
|
294
406
|
if (status >= 400 && status < 500)
|
|
295
407
|
return { kind: "rejected" };
|
|
@@ -301,10 +413,10 @@ function classifySyncReply(status, body, sentSequence) {
|
|
|
301
413
|
* never arrived leaves the same upload pending for the next run, and a
|
|
302
414
|
* conflict names the hub's own sequence and is retried once.
|
|
303
415
|
*/
|
|
304
|
-
|
|
416
|
+
async function runSyncLocked(options) {
|
|
305
417
|
const usageSamples = usageSamplesFromSnapshots(options.snapshots, options.now);
|
|
306
418
|
const room = Math.max(0, SYNC_MAX_ROWS - usageSamples.length);
|
|
307
|
-
const apiSpendSamples = apiSpendSamplesFromSnapshots(options.snapshots, options.now).slice(0, room);
|
|
419
|
+
const apiSpendSamples = (await apiSpendSamplesFromSnapshots(options.snapshots, options.now, options.directory)).slice(0, room);
|
|
308
420
|
if (usageSamples.length === 0 && apiSpendSamples.length === 0) {
|
|
309
421
|
return { kind: "nothing_to_sync" };
|
|
310
422
|
}
|
|
@@ -339,7 +451,11 @@ export async function runSync(options) {
|
|
|
339
451
|
}
|
|
340
452
|
if (reply.status === 401)
|
|
341
453
|
return { kind: "revoked" };
|
|
342
|
-
const outcome = classifySyncReply(reply.status, parseHubJson(reply.body) ?? {}, envelope.sequence);
|
|
454
|
+
const outcome = classifySyncReply(reply.status, parseHubJson(reply.body) ?? {}, envelope.sequence, cursor.sequence);
|
|
455
|
+
if (outcome.kind === "sequence_mismatch") {
|
|
456
|
+
await saveCursor(options.directory, cursorSettled(cursor, cursor.sequence));
|
|
457
|
+
return { kind: "sequence_mismatch" };
|
|
458
|
+
}
|
|
343
459
|
if (outcome.kind === "accepted") {
|
|
344
460
|
cursor = cursorSettled(cursor, outcome.sequence);
|
|
345
461
|
await saveCursor(options.directory, cursor);
|
|
@@ -363,6 +479,11 @@ export async function runSync(options) {
|
|
|
363
479
|
}
|
|
364
480
|
return { kind: "unavailable" };
|
|
365
481
|
}
|
|
482
|
+
export async function runSync(options) {
|
|
483
|
+
if (options.sessionLockHeld === true)
|
|
484
|
+
return await runSyncLocked(options);
|
|
485
|
+
return await withSessionLock(options.directory, async () => await runSyncLocked(options));
|
|
486
|
+
}
|
|
366
487
|
/** The state directory's default, exported so a caller need not repeat it. */
|
|
367
488
|
export function defaultSyncDirectory() {
|
|
368
489
|
return resolveStateDirectory();
|
package/dist/hub-sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-sync.js","sourceRoot":"","sources":["../src/hub-sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hub-sync.js","sourceRoot":"","sources":["../src/hub-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/hub.d.ts
CHANGED
|
@@ -37,14 +37,17 @@ export interface HubRequest {
|
|
|
37
37
|
export interface HubReply {
|
|
38
38
|
readonly status: number;
|
|
39
39
|
readonly body: string;
|
|
40
|
+
readonly retryAfterSeconds?: number | null;
|
|
40
41
|
}
|
|
41
|
-
export type HubTransport = (request: HubRequest) => Promise<HubReply>;
|
|
42
|
+
export type HubTransport = (request: HubRequest, signal?: AbortSignal) => Promise<HubReply>;
|
|
42
43
|
/** The device flow's first call: mint a user code and a device code. */
|
|
43
|
-
export declare function cliLoginStartRequest(environment: Readonly<Record<string, string | undefined
|
|
44
|
+
export declare function cliLoginStartRequest(environment: Readonly<Record<string, string | undefined>>, clientProofHash?: string): HubRequest | null;
|
|
44
45
|
/** The device flow's poll: ask whether somebody has approved the code yet. */
|
|
45
|
-
export declare function cliLoginPollRequest(environment: Readonly<Record<string, string | undefined>>, deviceCode: string): HubRequest | null;
|
|
46
|
+
export declare function cliLoginPollRequest(environment: Readonly<Record<string, string | undefined>>, deviceCode: string, clientProof?: string): HubRequest | null;
|
|
46
47
|
/** Trade a refresh credential for a new token, rotating the credential. */
|
|
47
48
|
export declare function grantRenewRequest(environment: Readonly<Record<string, string | undefined>>, refreshCredential: string): HubRequest | null;
|
|
49
|
+
/** Acknowledge delivery of an approved grant without sending a bearer header. */
|
|
50
|
+
export declare function cliLoginAckRequest(environment: Readonly<Record<string, string | undefined>>, deviceCode: string, token: string, clientProof: string): HubRequest | null;
|
|
48
51
|
/** Upload one sync envelope under the signed in account. */
|
|
49
52
|
export declare function syncSnapshotsRequest(environment: Readonly<Record<string, string | undefined>>, token: string, envelope: unknown): HubRequest | null;
|
|
50
53
|
/**
|
package/dist/hub.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"AAmBA,qEAAqE;AACrE,eAAO,MAAM,eAAe,6CAA6C,CAAC;AAE1E,+HAA+H;AAC/H,eAAO,MAAM,2BAA2B,qNAAqN,CAAC;AAE9P,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,UAAY,CAAC;AAEhD,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAU7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAS5F;AAED,mIAAmI;AACnI,wBAAgB,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAI5F;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,CAEhG;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAQ3E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"AAmBA,qEAAqE;AACrE,eAAO,MAAM,eAAe,6CAA6C,CAAC;AAE1E,+HAA+H;AAC/H,eAAO,MAAM,2BAA2B,qNAAqN,CAAC;AAE9P,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,UAAY,CAAC;AAEhD,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAU7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAS5F;AAED,mIAAmI;AACnI,wBAAgB,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAI5F;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,CAEhG;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAQ3E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AA+B5F,wEAAwE;AACxE,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,eAAe,CAAC,EAAE,MAAM,GACvB,UAAU,GAAG,IAAI,CASnB;AAMD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,UAAU,GAAG,IAAI,CAWnB;AAKD,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,iBAAiB,EAAE,MAAM,GACxB,UAAU,GAAG,IAAI,CAMnB;AAKD,iFAAiF;AACjF,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,UAAU,GAAG,IAAI,CAcnB;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,GAChB,UAAU,GAAG,IAAI,CAGnB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,mBAAmB,GAAE,OAAO,UAAU,CAAC,KAAwB,GAC9D,YAAY,CA8Bd;AAQD,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAUzE"}
|
package/dist/hub.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* configured answers every hub command with "not configured" rather than
|
|
16
16
|
* sending a request with an empty credential.
|
|
17
17
|
*/
|
|
18
|
-
import { OPENLIMITER_USER_AGENT } from "@openlimiter/core";
|
|
18
|
+
import { OPENLIMITER_USER_AGENT, readBoundedResponse } from "@openlimiter/core";
|
|
19
19
|
/** The project this build talks to, absent a build time override. */
|
|
20
20
|
export const DEFAULT_HUB_URL = "https://dsaonzonizvxtxgclwud.supabase.co";
|
|
21
21
|
/** The hub's publishable key: public by design, shipped in every client, overridable through OPENLIMITER_SUPABASE_ANON_KEY. */
|
|
@@ -98,16 +98,24 @@ function buildRequest(environment, endpoint, body, bearer) {
|
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
100
|
/** The device flow's first call: mint a user code and a device code. */
|
|
101
|
-
export function cliLoginStartRequest(environment) {
|
|
102
|
-
|
|
101
|
+
export function cliLoginStartRequest(environment, clientProofHash) {
|
|
102
|
+
if (clientProofHash !== undefined && !CLIENT_PROOF_PATTERN.test(clientProofHash))
|
|
103
|
+
return null;
|
|
104
|
+
return buildRequest(environment, "cli_login", clientProofHash === undefined
|
|
105
|
+
? { action: "start" }
|
|
106
|
+
: { action: "start", client_proof_hash: clientProofHash });
|
|
103
107
|
}
|
|
104
108
|
/** Shape of a device code this build will still poll with. */
|
|
105
109
|
const DEVICE_CODE_PATTERN = /^[A-Za-z0-9_.-]{8,256}$/u;
|
|
110
|
+
const CLIENT_PROOF_PATTERN = /^[A-Za-z0-9_-]{43}$/u;
|
|
106
111
|
/** The device flow's poll: ask whether somebody has approved the code yet. */
|
|
107
|
-
export function cliLoginPollRequest(environment, deviceCode) {
|
|
108
|
-
if (!DEVICE_CODE_PATTERN.test(deviceCode))
|
|
112
|
+
export function cliLoginPollRequest(environment, deviceCode, clientProof) {
|
|
113
|
+
if (!DEVICE_CODE_PATTERN.test(deviceCode) || (clientProof !== undefined && !CLIENT_PROOF_PATTERN.test(clientProof))) {
|
|
109
114
|
return null;
|
|
110
|
-
|
|
115
|
+
}
|
|
116
|
+
return buildRequest(environment, "cli_login", clientProof === undefined
|
|
117
|
+
? { action: "poll", device_code: deviceCode }
|
|
118
|
+
: { action: "poll", device_code: deviceCode, client_proof: clientProof });
|
|
111
119
|
}
|
|
112
120
|
/** Shape of a refresh credential this build will still spend. */
|
|
113
121
|
const REFRESH_CREDENTIAL_PATTERN = /^[\x21-\x7E]{16,4096}$/u;
|
|
@@ -122,6 +130,20 @@ export function grantRenewRequest(environment, refreshCredential) {
|
|
|
122
130
|
}
|
|
123
131
|
/** Shape of a bearer token this build will still send. */
|
|
124
132
|
const BEARER_TOKEN_PATTERN = /^[\x21-\x7E]{16,32768}$/u;
|
|
133
|
+
/** Acknowledge delivery of an approved grant without sending a bearer header. */
|
|
134
|
+
export function cliLoginAckRequest(environment, deviceCode, token, clientProof) {
|
|
135
|
+
if (!DEVICE_CODE_PATTERN.test(deviceCode) ||
|
|
136
|
+
!BEARER_TOKEN_PATTERN.test(token) ||
|
|
137
|
+
!CLIENT_PROOF_PATTERN.test(clientProof)) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
return buildRequest(environment, "cli_login", {
|
|
141
|
+
action: "ack",
|
|
142
|
+
device_code: deviceCode,
|
|
143
|
+
token,
|
|
144
|
+
client_proof: clientProof
|
|
145
|
+
});
|
|
146
|
+
}
|
|
125
147
|
/** Upload one sync envelope under the signed in account. */
|
|
126
148
|
export function syncSnapshotsRequest(environment, token, envelope) {
|
|
127
149
|
if (!BEARER_TOKEN_PATTERN.test(token))
|
|
@@ -136,9 +158,14 @@ export function syncSnapshotsRequest(environment, token, envelope) {
|
|
|
136
158
|
* transport in the core package does it.
|
|
137
159
|
*/
|
|
138
160
|
export function createFetchHubTransport(fetchImplementation = globalThis.fetch) {
|
|
139
|
-
return async (request) => {
|
|
161
|
+
return async (request, signal) => {
|
|
140
162
|
const controller = new AbortController();
|
|
141
163
|
const timer = setTimeout(() => controller.abort(), HUB_TIMEOUT_MILLISECONDS);
|
|
164
|
+
const forwardAbort = () => controller.abort();
|
|
165
|
+
if (signal?.aborted)
|
|
166
|
+
controller.abort();
|
|
167
|
+
else
|
|
168
|
+
signal?.addEventListener("abort", forwardAbort, { once: true });
|
|
142
169
|
try {
|
|
143
170
|
const response = await fetchImplementation(request.url, {
|
|
144
171
|
method: request.method,
|
|
@@ -147,20 +174,29 @@ export function createFetchHubTransport(fetchImplementation = globalThis.fetch)
|
|
|
147
174
|
signal: controller.signal,
|
|
148
175
|
body: request.body
|
|
149
176
|
});
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
177
|
+
const retryAfter = parseRetryAfterSeconds(response.headers.get("retry-after"));
|
|
178
|
+
const buffer = await readBoundedResponse(response, MAX_HUB_RESPONSE_BYTES, controller);
|
|
179
|
+
if (buffer === null) {
|
|
180
|
+
return { status: response.status, body: "", retryAfterSeconds: retryAfter };
|
|
153
181
|
}
|
|
154
182
|
return {
|
|
155
183
|
status: response.status,
|
|
156
|
-
body: new TextDecoder("utf-8", { fatal: false }).decode(buffer)
|
|
184
|
+
body: new TextDecoder("utf-8", { fatal: false }).decode(buffer),
|
|
185
|
+
retryAfterSeconds: retryAfter
|
|
157
186
|
};
|
|
158
187
|
}
|
|
159
188
|
finally {
|
|
160
189
|
clearTimeout(timer);
|
|
190
|
+
signal?.removeEventListener("abort", forwardAbort);
|
|
161
191
|
}
|
|
162
192
|
};
|
|
163
193
|
}
|
|
194
|
+
function parseRetryAfterSeconds(value) {
|
|
195
|
+
if (value === null)
|
|
196
|
+
return null;
|
|
197
|
+
const seconds = Number(value.trim());
|
|
198
|
+
return Number.isFinite(seconds) && seconds >= 0 && seconds <= 86_400 ? seconds : null;
|
|
199
|
+
}
|
|
164
200
|
/** Parse a hub response body as JSON, or hand back nothing readable. */
|
|
165
201
|
export function parseHubJson(body) {
|
|
166
202
|
if (body.length === 0 || body.length > MAX_HUB_RESPONSE_BYTES)
|
package/dist/hub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"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"}
|
package/dist/ingest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAG3B,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,SAAU,CAAC;AAExC,mEAAmE;AACnE,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,GAAE,MAAM,CAAC,UAA0B,EACzC,mBAAmB,SAA6B,GAC/C,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,GAAE,MAAM,CAAC,UAA0B,EACzC,SAAS,SAAmB,EAC5B,mBAAmB,SAA6B,EAChD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+CxB;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAS3D;AAED;;;;;;;;GAQG;AAEH,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,EAAE,kBAGnC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,iCAAiC,EAAE,kBAG/C,CAAC;AAEF,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,GACV,QAAQ,EAAE,GAAG,IAAI,CAiEnB;AAED,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,EAAE,kBAGxC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,GACV,QAAQ,EAAE,GAAG,IAAI,CAEnB;AAED,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,kBAGpC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,UAAU,EAAE,kBAAkB,GAC7B,QAAQ,EAAE,CAEZ;AAMD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAMvF;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAQ7C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,CAAC,CAO3B"}
|
package/dist/ingest.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { MANUAL_FILE_MARKER, MANUAL_FILE_NAME, parseGrokPayload } from "@openlimiter/connectors";
|
|
3
|
-
import { mergeSnapshotCache, readJsonFileSafely, resolveStateDirectory } from "@openlimiter/core";
|
|
3
|
+
import { mergeSnapshotCache, antigravityMeter, readJsonFileSafely, resolveStateDirectory } from "@openlimiter/core";
|
|
4
4
|
import { writeAgentContextSnapshot } from "@openlimiter/adapters";
|
|
5
5
|
/** Largest document accepted on standard input. */
|
|
6
6
|
export const STDIN_BYTE_LIMIT = 262_144;
|
|
@@ -18,6 +18,7 @@ export async function readStandardInputBuffer(stream = process.stdin, timeoutMil
|
|
|
18
18
|
return Buffer.alloc(0);
|
|
19
19
|
return await new Promise((resolve) => {
|
|
20
20
|
const chunks = [];
|
|
21
|
+
let total = 0;
|
|
21
22
|
let settled = false;
|
|
22
23
|
const finish = () => {
|
|
23
24
|
if (settled)
|
|
@@ -31,6 +32,14 @@ export async function readStandardInputBuffer(stream = process.stdin, timeoutMil
|
|
|
31
32
|
resolve(Buffer.concat(chunks));
|
|
32
33
|
};
|
|
33
34
|
const onData = (chunk) => {
|
|
35
|
+
const length = typeof chunk === "string" ? Buffer.byteLength(chunk) : chunk.length;
|
|
36
|
+
if (length > STDIN_BYTE_LIMIT - total) {
|
|
37
|
+
chunks.length = 0;
|
|
38
|
+
finish();
|
|
39
|
+
stream.destroy();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
total += length;
|
|
34
43
|
chunks.push(Buffer.from(chunk));
|
|
35
44
|
};
|
|
36
45
|
const onEnd = () => finish();
|
|
@@ -89,6 +98,7 @@ export async function readStandardInputText(stream = process.stdin, byteLimit =
|
|
|
89
98
|
total += chunk.length;
|
|
90
99
|
if (total > byteLimit) {
|
|
91
100
|
finish(null);
|
|
101
|
+
stream.destroy();
|
|
92
102
|
return;
|
|
93
103
|
}
|
|
94
104
|
chunks.push(chunk);
|
|
@@ -157,25 +167,10 @@ export function parseAntigravityStatuslinePayload(payload, now) {
|
|
|
157
167
|
continue;
|
|
158
168
|
const fraction = Math.max(0, Math.min(1, remaining));
|
|
159
169
|
const value = Math.round(Math.max(0, Math.min(100, (1 - fraction) * 100)) * 10) / 10;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const idLower = bucketId.toLowerCase();
|
|
163
|
-
if (idLower === "gemini-5h" || idLower === "3p-5h" || idLower.endsWith("-5h") || idLower.includes("5h")) {
|
|
164
|
-
meterCode = "FIVE_HOUR";
|
|
165
|
-
durationSeconds = 18_000;
|
|
166
|
-
}
|
|
167
|
-
else if (idLower === "gemini-weekly" ||
|
|
168
|
-
idLower === "3p-weekly" ||
|
|
169
|
-
idLower.endsWith("-weekly") ||
|
|
170
|
-
idLower.includes("weekly") ||
|
|
171
|
-
idLower.includes("7d")) {
|
|
172
|
-
meterCode = "SEVEN_DAY";
|
|
173
|
-
durationSeconds = 604_800;
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
// Drop unknown bucket IDs; do not fabricate fake meters
|
|
170
|
+
const mapped = antigravityMeter(bucketId.toLowerCase());
|
|
171
|
+
if (mapped === null)
|
|
177
172
|
continue;
|
|
178
|
-
}
|
|
173
|
+
const { meter: meterCode, durationSeconds } = mapped;
|
|
179
174
|
const resetTime = typeof b["reset_time"] === "string"
|
|
180
175
|
? b["reset_time"]
|
|
181
176
|
: typeof b["resetTime"] === "string"
|
|
@@ -185,8 +180,8 @@ export function parseAntigravityStatuslinePayload(payload, now) {
|
|
|
185
180
|
? b["reset_in_seconds"]
|
|
186
181
|
: typeof b["resetInSeconds"] === "number"
|
|
187
182
|
? b["resetInSeconds"]
|
|
188
|
-
: null;
|
|
189
|
-
let resetAt =
|
|
183
|
+
: typeof b["resetsInSeconds"] === "number" ? b["resetsInSeconds"] : null;
|
|
184
|
+
let resetAt = null;
|
|
190
185
|
if (resetTime && !Number.isNaN(Date.parse(resetTime))) {
|
|
191
186
|
resetAt = new Date(resetTime).toISOString();
|
|
192
187
|
}
|