@cortexkit/antigravity-auth-core 3.0.29 → 3.0.31
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/agy-request-metadata.d.ts.map +1 -1
- package/dist/agy-request-metadata.js +3 -0
- package/dist/agy-request-metadata.js.map +1 -1
- package/dist/common-auth-embedded/claustrum/consumer.d.ts +12 -0
- package/dist/common-auth-embedded/claustrum/consumer.js +36 -0
- package/dist/common-auth-embedded/claustrum/custody.d.ts +16 -4
- package/dist/common-auth-embedded/claustrum/custody.js +74 -9
- package/dist/common-auth-embedded/claustrum/hub.d.ts +3 -2
- package/dist/common-auth-embedded/claustrum/hub.js +8 -0
- package/dist/common-auth-embedded/claustrum/index.d.ts +1 -0
- package/dist/common-auth-embedded/claustrum/roster.d.ts +4 -0
- package/dist/common-auth-embedded/claustrum/roster.js +34 -8
- package/dist/common-auth-embedded/claustrum/usage.d.ts +41 -0
- package/dist/common-auth-embedded/claustrum/usage.js +145 -0
- package/dist/common-auth-embedded/commands/builtins.d.ts +5 -0
- package/dist/common-auth-embedded/commands/builtins.js +38 -0
- package/dist/common-auth-embedded/fs/file-read-cache.js +10 -5
- package/dist/common-auth-embedded/fs/private-files.d.ts +5 -0
- package/dist/common-auth-embedded/fs/private-files.js +7 -0
- package/dist/common-auth-embedded/fs/refresh-file-lock.js +142 -47
- package/dist/common-auth-embedded/fs/with-lock.js +2 -5
- package/dist/common-auth-embedded/routing/admission.d.ts +7 -2
- package/dist/common-auth-embedded/routing/admission.js +17 -7
- package/dist/common-auth-embedded/source-output.json +129 -97
- package/dist/common-auth-embedded/store/attribution.js +3 -2
- package/dist/common-auth-embedded/store/errors.d.ts +1 -1
- package/dist/common-auth-embedded/store/hooks.d.ts +5 -1
- package/dist/common-auth-embedded/store/hooks.js +20 -5
- package/dist/common-auth-embedded/store/index.d.ts +1 -0
- package/dist/common-auth-embedded/store/limits-namespace.d.ts +13 -0
- package/dist/common-auth-embedded/store/limits-namespace.js +46 -0
- package/dist/common-auth-embedded/store/pool.d.ts +10 -1
- package/dist/common-auth-embedded/store/pool.js +2 -0
- package/dist/common-auth-embedded/store/provider-state.js +5 -5
- package/dist/common-auth-embedded/store/refresh.js +1 -1
- package/dist/common-auth-embedded/store/schema.js +9 -4
- package/dist/common-auth-embedded/store/settings.d.ts +2 -0
- package/dist/common-auth-embedded/store/settings.js +11 -4
- package/dist/model-registry.d.ts +1 -1
- package/dist/model-registry.d.ts.map +1 -1
- package/dist/model-registry.js +7 -41
- package/dist/model-registry.js.map +1 -1
- package/dist/transform/model-resolver.d.ts.map +1 -1
- package/dist/transform/model-resolver.js +6 -4
- package/dist/transform/model-resolver.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agy-request-metadata.d.ts","sourceRoot":"","sources":["../src/agy-request-metadata.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAQD,MAAM,WAAW,6BAA6B;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,wBAAwB,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;IAC7B,wBAAwB,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1C,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAA;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,gBAAgB,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC7C,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,KAAK,CAAA;CAC7C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,GAAG,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3D,wBAAwB,CAM1B;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;gBAGhC,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,6BAAkC;IAQ7C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB;IAmBlD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAW1C,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,KAAK;CA0Bd;
|
|
1
|
+
{"version":3,"file":"agy-request-metadata.d.ts","sourceRoot":"","sources":["../src/agy-request-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,6 +108,9 @@ export class AgyRequestSessionStore {
|
|
|
108
108
|
}
|
|
109
109
|
// Historical metadata remains readable; host admission refuses these retired routes.
|
|
110
110
|
const HISTORICAL_AGY_MODEL_ENUMS = {
|
|
111
|
+
'gemini-3.5-flash-extra-low': 'MODEL_PLACEHOLDER_M187',
|
|
112
|
+
'gemini-3.5-flash-low': 'MODEL_PLACEHOLDER_M20',
|
|
113
|
+
'gemini-3-flash-agent': 'MODEL_PLACEHOLDER_M84',
|
|
111
114
|
'gemini-3.1-pro-low': 'MODEL_PLACEHOLDER_M36',
|
|
112
115
|
'gemini-3.1-pro-high': 'MODEL_PLACEHOLDER_M37',
|
|
113
116
|
'gemini-pro-agent': 'MODEL_PLACEHOLDER_M16',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agy-request-metadata.js","sourceRoot":"","sources":["../src/agy-request-metadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agy-request-metadata.js","sourceRoot":"","sources":["../src/agy-request-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { type ClaustrumLogger } from './errors.js';
|
|
|
6
6
|
import type { CustodyLease } from './hub.js';
|
|
7
7
|
import { type InsulaQuotaOptions, type InsulaQuotaResult } from './insula.js';
|
|
8
8
|
import { type AccountMapper, type ProjectionOptions, type QuotaReceipt, type ReorderVaultRosterResult, type VaultRosterFile } from './roster.js';
|
|
9
|
+
import type { ClaustrumUsageReading, ClaustrumUsageReportState } from './usage.js';
|
|
9
10
|
import { type WatchMode } from './watch.js';
|
|
10
11
|
export interface ClaustrumConsumerOptions<Q = QuotaObservation> {
|
|
11
12
|
/**
|
|
@@ -229,6 +230,17 @@ export declare class ClaustrumConsumer<Q = QuotaObservation> {
|
|
|
229
230
|
* poll, and a route whose credential or account changed is refused.
|
|
230
231
|
*/
|
|
231
232
|
authorize(routeId: string, signal?: AbortSignal): Promise<ClaustrumScopedAttempt>;
|
|
233
|
+
/**
|
|
234
|
+
* Queue reply quota metadata without waiting or throwing. Pass rate-limit
|
|
235
|
+
* headers only, never tokens: the library does not filter header names.
|
|
236
|
+
* The credential must have been served by this host and still belong to the route.
|
|
237
|
+
*/
|
|
238
|
+
reportUsage(input: {
|
|
239
|
+
routeId: string;
|
|
240
|
+
credentialId: string;
|
|
241
|
+
reading: ClaustrumUsageReading;
|
|
242
|
+
}): void;
|
|
243
|
+
usageReportState(): ClaustrumUsageReportState;
|
|
232
244
|
reportFailure(attempt: ClaustrumScopedAttempt, status: number, source: ClaustrumReporterSource): Promise<void>;
|
|
233
245
|
/**
|
|
234
246
|
* Send on a vault route. `dispatch` builds and sends the request with the
|
|
@@ -738,6 +738,42 @@ export class ClaustrumConsumer {
|
|
|
738
738
|
combined.dispose();
|
|
739
739
|
}
|
|
740
740
|
}
|
|
741
|
+
/**
|
|
742
|
+
* Queue reply quota metadata without waiting or throwing. Pass rate-limit
|
|
743
|
+
* headers only, never tokens: the library does not filter header names.
|
|
744
|
+
* The credential must have been served by this host and still belong to the route.
|
|
745
|
+
*/
|
|
746
|
+
reportUsage(input) {
|
|
747
|
+
if (this.#shutdown.signal.aborted)
|
|
748
|
+
return;
|
|
749
|
+
try {
|
|
750
|
+
const row = this.#roster?.rows.find((row) => row.routeId === input.routeId);
|
|
751
|
+
if (!row?.enabled ||
|
|
752
|
+
row.state !== 'active' ||
|
|
753
|
+
(row.credentialId !== input.credentialId &&
|
|
754
|
+
!row.aliases?.includes(input.credentialId)))
|
|
755
|
+
return;
|
|
756
|
+
if (this.#hub) {
|
|
757
|
+
if (this.#lease && this.#hub.leaseLive(this.#lease))
|
|
758
|
+
this.#lease.custody.reportUsage(input);
|
|
759
|
+
}
|
|
760
|
+
else
|
|
761
|
+
this.#custody?.reportUsage(input);
|
|
762
|
+
}
|
|
763
|
+
catch {
|
|
764
|
+
// Quota bookkeeping must never reject a provider request.
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
usageReportState() {
|
|
768
|
+
try {
|
|
769
|
+
return ((this.#hub
|
|
770
|
+
? this.#lease?.custody
|
|
771
|
+
: this.#custody)?.usageReportState() ?? { pending: 0, inFlight: false, dropped: 0 });
|
|
772
|
+
}
|
|
773
|
+
catch {
|
|
774
|
+
return { pending: 0, inFlight: false, dropped: 0 };
|
|
775
|
+
}
|
|
776
|
+
}
|
|
741
777
|
async reportFailure(attempt, status, source) {
|
|
742
778
|
this.#assertOpen();
|
|
743
779
|
if (this.#hub) {
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { type ClaustrumClient, type ClaustrumReporterSource, type EnrollmentTokenFile } from '@cortexkit/claustrum-client';
|
|
2
2
|
import { type ClaustrumLogger } from './errors.js';
|
|
3
3
|
import type { InsulaUsageTransport } from './insula.js';
|
|
4
|
+
import { type ClaustrumUsageReading, type ClaustrumUsageReportState, type ScopedUsageSource } from './usage.js';
|
|
4
5
|
import { type ScopedWatchSource, type WatchMode } from './watch.js';
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* claustrum-client adds watchScoped in 0.12.0 and reportUsageScoped in 0.14.0.
|
|
8
|
+
* Older clients keep polling and simply do not send reply quota readings.
|
|
8
9
|
*/
|
|
9
10
|
export type ClaustrumScopedClient = Pick<ClaustrumClient, 'listScoped' | 'getScoped' | 'reportAuthFailureScoped' | 'close'> & {
|
|
10
11
|
insula?: InsulaUsageTransport;
|
|
11
|
-
} & ScopedWatchSource;
|
|
12
|
+
} & ScopedWatchSource & ScopedUsageSource;
|
|
12
13
|
/** The two credential types a plugin's family can hold; routing differs by type. */
|
|
13
14
|
export type VaultCredentialType = 'oauth' | 'api_key';
|
|
14
15
|
/**
|
|
@@ -332,7 +333,18 @@ export declare class ClaustrumScopedCustody {
|
|
|
332
333
|
* other mode the host keeps its usual list timer.
|
|
333
334
|
*/
|
|
334
335
|
watchRoster(options: ClaustrumRosterWatchOptions): ClaustrumRosterWatch;
|
|
336
|
+
/**
|
|
337
|
+
* Queue reply quota metadata and return synchronously. Pass rate-limit
|
|
338
|
+
* headers only, never tokens: the library does not filter header names.
|
|
339
|
+
* Only credentials served by this custody and retained in its roster report.
|
|
340
|
+
* Hosts managing their own roster must call retain() when that roster changes.
|
|
341
|
+
*/
|
|
342
|
+
reportUsage(input: {
|
|
343
|
+
credentialId: string;
|
|
344
|
+
reading: ClaustrumUsageReading;
|
|
345
|
+
}): void;
|
|
346
|
+
usageReportState(): ClaustrumUsageReportState;
|
|
335
347
|
close(): void;
|
|
336
|
-
/** Stop
|
|
348
|
+
/** Stop accepting work; give token reads and reply reports one shared 2 s drain. */
|
|
337
349
|
dispose(onTimeout?: (pendingOperations: number) => void): Promise<void>;
|
|
338
350
|
}
|
|
@@ -6,6 +6,7 @@ import { readClaustrumEnrollmentToken } from './enrollment.js';
|
|
|
6
6
|
import { ClaustrumConsumerError } from './errors.js';
|
|
7
7
|
import { CUSTODY_PLACEHOLDER_PREFIX } from './host-slot.js';
|
|
8
8
|
import { drainShutdown, shutdownWarning } from './shutdown.js';
|
|
9
|
+
import { ScopedUsageReporter, } from './usage.js';
|
|
9
10
|
import { ScopedRosterWatch, } from './watch.js';
|
|
10
11
|
/** Only a new version of the same account may replace an in-flight 401. */
|
|
11
12
|
export function isScopedCredentialRotation(served, current) {
|
|
@@ -28,6 +29,14 @@ function scopedRetryReason(served, current) {
|
|
|
28
29
|
return 'rotated';
|
|
29
30
|
}
|
|
30
31
|
const defaultLogger = createLogger('claustrum');
|
|
32
|
+
function checkedEnrollmentToken(value) {
|
|
33
|
+
if (!/^[0-9a-f]{64}$/.test(value.token) ||
|
|
34
|
+
!Number.isSafeInteger(value.token_generation) ||
|
|
35
|
+
value.token_generation < 1) {
|
|
36
|
+
throw new ClaustrumConsumerError('invalid-token', 'Invalid Claustrum enrollment token');
|
|
37
|
+
}
|
|
38
|
+
return value.token;
|
|
39
|
+
}
|
|
31
40
|
// Opt-in diagnostics let tests retain wait phases without logging each vault read.
|
|
32
41
|
const phaseDiagnostics = channel('common-auth.claustrum.phases');
|
|
33
42
|
/**
|
|
@@ -183,6 +192,8 @@ export class ClaustrumScopedCustody {
|
|
|
183
192
|
#reports = new WeakMap();
|
|
184
193
|
#kept = new Map();
|
|
185
194
|
#keptAttempts = new WeakMap();
|
|
195
|
+
#usage;
|
|
196
|
+
#usageServed = new Map();
|
|
186
197
|
#setTimeout;
|
|
187
198
|
#clearTimeout;
|
|
188
199
|
#outage = false;
|
|
@@ -197,6 +208,7 @@ export class ClaustrumScopedCustody {
|
|
|
197
208
|
#watches = new Set();
|
|
198
209
|
#tokenReads = new Set();
|
|
199
210
|
#warnShutdown;
|
|
211
|
+
#onDrainTimeout;
|
|
200
212
|
#disposing;
|
|
201
213
|
constructor(options) {
|
|
202
214
|
const tokenPath = options.tokenPath;
|
|
@@ -218,6 +230,14 @@ export class ClaustrumScopedCustody {
|
|
|
218
230
|
this.#warnShutdown = shutdownWarning(this.#logger);
|
|
219
231
|
this.#setTimeout = options.setTimeoutImpl ?? setTimeout;
|
|
220
232
|
this.#clearTimeout = options.clearTimeoutImpl ?? clearTimeout;
|
|
233
|
+
this.#usage = new ScopedUsageReporter({
|
|
234
|
+
client: this.#client,
|
|
235
|
+
owns: (id) => this.#usageServed.has(id),
|
|
236
|
+
token: async () => checkedEnrollmentToken(await this.#readToken()),
|
|
237
|
+
logger: this.#logger,
|
|
238
|
+
setTimeout: this.#setTimeout,
|
|
239
|
+
clearTimeout: this.#clearTimeout,
|
|
240
|
+
});
|
|
221
241
|
}
|
|
222
242
|
/** A watch losing its transport is the same outage as an unreachable read. */
|
|
223
243
|
transportLost(error) {
|
|
@@ -303,12 +323,7 @@ export class ClaustrumScopedCustody {
|
|
|
303
323
|
});
|
|
304
324
|
}
|
|
305
325
|
this.#check(signal);
|
|
306
|
-
|
|
307
|
-
!Number.isSafeInteger(value.token_generation) ||
|
|
308
|
-
value.token_generation < 1) {
|
|
309
|
-
throw new ClaustrumConsumerError('invalid-token', 'Invalid Claustrum enrollment token');
|
|
310
|
-
}
|
|
311
|
-
return value.token;
|
|
326
|
+
return checkedEnrollmentToken(value);
|
|
312
327
|
}
|
|
313
328
|
async #call(operation, signal) {
|
|
314
329
|
this.#check(signal);
|
|
@@ -370,6 +385,7 @@ export class ClaustrumScopedCustody {
|
|
|
370
385
|
}
|
|
371
386
|
catch (error) {
|
|
372
387
|
this.#kept.clear();
|
|
388
|
+
this.#clearUsageOwnership();
|
|
373
389
|
throw error;
|
|
374
390
|
}
|
|
375
391
|
if (phaseDiagnostics.hasSubscribers)
|
|
@@ -473,11 +489,19 @@ export class ClaustrumScopedCustody {
|
|
|
473
489
|
else {
|
|
474
490
|
this.reachable();
|
|
475
491
|
this.#kept.clear();
|
|
492
|
+
this.#clearUsageOwnership();
|
|
476
493
|
}
|
|
477
494
|
}
|
|
478
495
|
/** Discard bearer material when a route is removed, declined or rebound. */
|
|
479
496
|
forget(credentialId) {
|
|
480
497
|
this.#kept.delete(credentialId);
|
|
498
|
+
this.#usageServed.delete(credentialId);
|
|
499
|
+
this.#usage.forget(credentialId);
|
|
500
|
+
}
|
|
501
|
+
#clearUsageOwnership() {
|
|
502
|
+
for (const id of this.#usageServed.keys())
|
|
503
|
+
this.#usage.forget(id);
|
|
504
|
+
this.#usageServed.clear();
|
|
481
505
|
}
|
|
482
506
|
/** Apply an already-held roster; this never fetches credentials or writes it. */
|
|
483
507
|
retain(identities) {
|
|
@@ -490,6 +514,14 @@ export class ClaustrumScopedCustody {
|
|
|
490
514
|
identity.accountIdentity !== kept.attempt.expectedAccountIdentity)
|
|
491
515
|
this.forget(id);
|
|
492
516
|
}
|
|
517
|
+
for (const [id, served] of this.#usageServed) {
|
|
518
|
+
const identity = current.get(id);
|
|
519
|
+
if (!identity?.enabled ||
|
|
520
|
+
identity.state !== 'active' ||
|
|
521
|
+
identity.credentialType !== served.credentialType ||
|
|
522
|
+
identity.accountIdentity !== served.accountIdentity)
|
|
523
|
+
this.forget(id);
|
|
524
|
+
}
|
|
493
525
|
}
|
|
494
526
|
/** A frozen, non-secret summary for a plugin's status display. */
|
|
495
527
|
keptReceiptState() {
|
|
@@ -527,6 +559,7 @@ export class ClaustrumScopedCustody {
|
|
|
527
559
|
}
|
|
528
560
|
catch (error) {
|
|
529
561
|
this.#kept.clear();
|
|
562
|
+
this.#clearUsageOwnership();
|
|
530
563
|
throw error;
|
|
531
564
|
}
|
|
532
565
|
if (this.#outage && kept) {
|
|
@@ -536,6 +569,7 @@ export class ClaustrumScopedCustody {
|
|
|
536
569
|
try {
|
|
537
570
|
const attempt = await this.#authorizeFresh({ credentialId, credentialType, accountIdentity }, token, signal);
|
|
538
571
|
this.#kept.set(credentialId, { attempt, routeId, since: null });
|
|
572
|
+
this.#usageServed.set(credentialId, { ...identity });
|
|
539
573
|
return attempt;
|
|
540
574
|
}
|
|
541
575
|
catch (error) {
|
|
@@ -750,6 +784,25 @@ export class ClaustrumScopedCustody {
|
|
|
750
784
|
},
|
|
751
785
|
};
|
|
752
786
|
}
|
|
787
|
+
/**
|
|
788
|
+
* Queue reply quota metadata and return synchronously. Pass rate-limit
|
|
789
|
+
* headers only, never tokens: the library does not filter header names.
|
|
790
|
+
* Only credentials served by this custody and retained in its roster report.
|
|
791
|
+
* Hosts managing their own roster must call retain() when that roster changes.
|
|
792
|
+
*/
|
|
793
|
+
reportUsage(input) {
|
|
794
|
+
if (this.#closed)
|
|
795
|
+
return;
|
|
796
|
+
try {
|
|
797
|
+
this.#usage.report(input.credentialId, input.reading);
|
|
798
|
+
}
|
|
799
|
+
catch {
|
|
800
|
+
// Quota bookkeeping must never reject a provider request.
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
usageReportState() {
|
|
804
|
+
return this.#usage.state();
|
|
805
|
+
}
|
|
753
806
|
close() {
|
|
754
807
|
if (this.#closed)
|
|
755
808
|
return;
|
|
@@ -761,12 +814,24 @@ export class ClaustrumScopedCustody {
|
|
|
761
814
|
watch.stop();
|
|
762
815
|
this.#watches.clear();
|
|
763
816
|
this.#kept.clear();
|
|
764
|
-
this.#
|
|
817
|
+
const usage = this.#usage.close();
|
|
818
|
+
if (usage) {
|
|
819
|
+
this.#tokenReads.add(usage);
|
|
820
|
+
void usage.then(() => this.#tokenReads.delete(usage));
|
|
821
|
+
}
|
|
822
|
+
else
|
|
823
|
+
this.#client.close();
|
|
824
|
+
this.#disposing = drainShutdown(this.#tokenReads, (count) => (this.#onDrainTimeout ?? this.#warnShutdown)(count)).finally(() => {
|
|
825
|
+
this.#usage.drop();
|
|
826
|
+
this.#usageServed.clear();
|
|
827
|
+
if (usage)
|
|
828
|
+
this.#client.close();
|
|
829
|
+
});
|
|
765
830
|
}
|
|
766
|
-
/** Stop
|
|
831
|
+
/** Stop accepting work; give token reads and reply reports one shared 2 s drain. */
|
|
767
832
|
async dispose(onTimeout = this.#warnShutdown) {
|
|
833
|
+
this.#onDrainTimeout = onTimeout;
|
|
768
834
|
this.close();
|
|
769
|
-
this.#disposing ??= drainShutdown(this.#tokenReads, onTimeout);
|
|
770
835
|
await this.#disposing;
|
|
771
836
|
}
|
|
772
837
|
}
|
|
@@ -107,11 +107,12 @@ export interface ClaustrumHubMemberOptions<_Q = QuotaObservation> {
|
|
|
107
107
|
logger?: ClaustrumLogger;
|
|
108
108
|
}
|
|
109
109
|
/** What a lease may do with the shared custody. */
|
|
110
|
-
export type ClaustrumLeasedCustody = Pick<ClaustrumScopedCustody, 'authorize' | 'reportFailure' | 'forget' | 'keptReceiptState'>;
|
|
110
|
+
export type ClaustrumLeasedCustody = Pick<ClaustrumScopedCustody, 'authorize' | 'reportFailure' | 'reportUsage' | 'usageReportState' | 'forget' | 'keptReceiptState'>;
|
|
111
111
|
/**
|
|
112
112
|
* One acquisition of the hub's shared custody. `custody` throws `closed`
|
|
113
113
|
* after `release()`, and once the connection it belongs to ended for any
|
|
114
|
-
* reason, vault mode going off included. `
|
|
114
|
+
* reason, vault mode going off included. Best-effort `reportUsage` instead
|
|
115
|
+
* ignores reports through an ended lease. `release()` is idempotent.
|
|
115
116
|
*/
|
|
116
117
|
export interface CustodyLease {
|
|
117
118
|
readonly custody: ClaustrumLeasedCustody;
|
|
@@ -523,6 +523,14 @@ export class ClaustrumDiscoveryHub {
|
|
|
523
523
|
check();
|
|
524
524
|
return custody.reportFailure(attempt, status, source);
|
|
525
525
|
},
|
|
526
|
+
reportUsage: (input) => {
|
|
527
|
+
if (!state.released && !generation.ended)
|
|
528
|
+
custody.reportUsage(input);
|
|
529
|
+
},
|
|
530
|
+
usageReportState: () => {
|
|
531
|
+
check();
|
|
532
|
+
return custody.usageReportState();
|
|
533
|
+
},
|
|
526
534
|
forget: (credentialId) => {
|
|
527
535
|
check();
|
|
528
536
|
custody.forget(credentialId);
|
|
@@ -12,6 +12,7 @@ export { acquireInsulaQuotaSource, type InsulaQuotaContext, type InsulaQuotaLook
|
|
|
12
12
|
export { acceptAccount, type DeclinedAccount, declineAccount, isDeclined, } from './interlock.js';
|
|
13
13
|
export { drainVaultQuota } from './quota-writer.js';
|
|
14
14
|
export { type AccountMapper, acceptVaultRoute, DEFAULT_ROUTE_PREFIX, declineVaultRoute, type MutateVaultRosterOptions, mutateVaultRoster, type ProjectionOptions, projectVaultRoster, type QuotaReceipt, type ReorderVaultRosterOptions, type ReorderVaultRosterResult, readVaultRoster, recordVaultAccountQuota, recordVaultQuota, refreshVaultRoster, reorderVaultRoster, resolveVaultPrimary, type VaultPrimary, type VaultPrimaryBinding, type VaultPrimaryUnavailableReason, type VaultRosterFile, type VaultRosterLockContext, type VaultRosterRow, type VaultRosterSeed, vaultRosterSeed, vaultRoutingRows, } from './roster.js';
|
|
15
|
+
export type { ClaustrumUsageReading, ClaustrumUsageReportState, } from './usage.js';
|
|
15
16
|
export { type ChangeNotice, ChangeNoticeReader, RESUBSCRIBE_BACKOFF_MS, SAFETY_POLL_MS, ScopedRosterWatch, type ScopedRosterWatchOptions, type ScopedWatchEnd, type ScopedWatchHandle, type ScopedWatchNoticeShape, type ScopedWatchSource, WATCH_RETRY_MS, type WatchMode, } from './watch.js';
|
|
16
17
|
/** How long `connectClaustrumScopedClient` waits by default. */
|
|
17
18
|
export declare const SCOPED_CONNECT_TIMEOUT_MS = 10000;
|
|
@@ -48,6 +48,8 @@ export interface VaultRosterFile {
|
|
|
48
48
|
complete: boolean;
|
|
49
49
|
/** The unusable records of an incomplete reply: a safe id and a fixed reason. */
|
|
50
50
|
rejected?: SkippedVaultRecord[];
|
|
51
|
+
/** Opaque limits data; roster-only writers preserve even newer schemas. */
|
|
52
|
+
limits?: unknown;
|
|
51
53
|
rows: VaultRosterRow[];
|
|
52
54
|
declined: DeclinedAccount[];
|
|
53
55
|
}
|
|
@@ -118,6 +120,8 @@ export interface VaultRosterLockContext {
|
|
|
118
120
|
}
|
|
119
121
|
export interface MutateVaultRosterOptions {
|
|
120
122
|
signal?: AbortSignal;
|
|
123
|
+
/** Runs under the roster lock once published, even if a later step fails. Must not throw. */
|
|
124
|
+
onPublished?: () => void;
|
|
121
125
|
/**
|
|
122
126
|
* Runs when the new roster is fully staged on disk, immediately before the
|
|
123
127
|
* rename that publishes it, so a caller can confirm a lease of its own at
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { stat } from 'node:fs/promises';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
+
import { FileReadCache } from '../fs/file-read-cache.js';
|
|
4
5
|
import { acquireRefreshFileLock, LockContentionError, LockOwnershipError, lockPathFor, PrivateFileError, withLock, writeJsonAtomic, } from '../fs/index.js';
|
|
5
6
|
import { readPrivateText, windowsPrivateFiles } from '../fs/private-files.js';
|
|
6
7
|
import { decodeQuotaMap, isQuotaObservation, mergeQuotaObservation, } from '../quota/index.js';
|
|
@@ -209,6 +210,7 @@ export function projectVaultRoster(previous, inventory, options = {}) {
|
|
|
209
210
|
return {
|
|
210
211
|
version: 1,
|
|
211
212
|
view: inventory.view,
|
|
213
|
+
...(previous?.limits !== undefined && { limits: previous.limits }),
|
|
212
214
|
complete,
|
|
213
215
|
...(!complete && {
|
|
214
216
|
rejected: inventory.skipped.map((record) => ({
|
|
@@ -319,6 +321,7 @@ function decodeRoster(value) {
|
|
|
319
321
|
// that was used whole, so it reads as complete.
|
|
320
322
|
complete: value.complete !== false,
|
|
321
323
|
...(rejected && { rejected }),
|
|
324
|
+
...(value.limits !== undefined && { limits: value.limits }),
|
|
322
325
|
rows,
|
|
323
326
|
declined,
|
|
324
327
|
};
|
|
@@ -331,7 +334,18 @@ function decodeRoster(value) {
|
|
|
331
334
|
export function decodedVaultRoster(roster) {
|
|
332
335
|
return decodeRoster(JSON.parse(JSON.stringify(roster)));
|
|
333
336
|
}
|
|
337
|
+
const rosterReadCache = new FileReadCache({
|
|
338
|
+
followSymlinks: true,
|
|
339
|
+
});
|
|
334
340
|
export async function readVaultRoster(path) {
|
|
341
|
+
// Windows permission, owner and ancestry checks must still run on every read.
|
|
342
|
+
if (windowsPrivateFiles)
|
|
343
|
+
return readFreshVaultRoster(path);
|
|
344
|
+
const roster = await rosterReadCache.read([path], ([resolvedPath = path]) => readFreshVaultRoster(resolvedPath));
|
|
345
|
+
// Callers edit rows and nested limits data; none may own the cached objects.
|
|
346
|
+
return structuredClone(roster);
|
|
347
|
+
}
|
|
348
|
+
async function readFreshVaultRoster(path) {
|
|
335
349
|
let text;
|
|
336
350
|
try {
|
|
337
351
|
text = await readPrivateText(path, windowsPrivateFiles);
|
|
@@ -364,7 +378,8 @@ const DISCOVERY_LEASE = { name: 'claustrum-roster', ttlMs: 30_000 };
|
|
|
364
378
|
*/
|
|
365
379
|
export async function mutateVaultRoster(path, change, options = {}) {
|
|
366
380
|
return withLock(path, { ...WRITE_LOCK, signal: options.signal }, async (lock) => {
|
|
367
|
-
|
|
381
|
+
// A read-modify-write always observes the file under its write lock.
|
|
382
|
+
const current = await readFreshVaultRoster(path);
|
|
368
383
|
const { next, result } = await change(current, {
|
|
369
384
|
assertOwned: () => lock.assertOwned(),
|
|
370
385
|
});
|
|
@@ -372,13 +387,24 @@ export async function mutateVaultRoster(path, change, options = {}) {
|
|
|
372
387
|
await lock.assertOwned();
|
|
373
388
|
// Staging the file takes several awaited steps; check both the caller's
|
|
374
389
|
// lease and this lock again at the last moment before the rename.
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
390
|
+
try {
|
|
391
|
+
await writeJsonAtomic(path, next, {
|
|
392
|
+
beforeRename: async () => {
|
|
393
|
+
await options.beforePublish?.();
|
|
394
|
+
options.signal?.throwIfAborted();
|
|
395
|
+
await lock.assertOwned();
|
|
396
|
+
},
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
if (error &&
|
|
401
|
+
typeof error === 'object' &&
|
|
402
|
+
'published' in error &&
|
|
403
|
+
error.published === true)
|
|
404
|
+
options.onPublished?.();
|
|
405
|
+
throw error;
|
|
406
|
+
}
|
|
407
|
+
options.onPublished?.();
|
|
382
408
|
}
|
|
383
409
|
return result;
|
|
384
410
|
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ClaustrumLogger } from './errors.js';
|
|
2
|
+
/** Reply quota metadata, never authorization headers or bearer material. */
|
|
3
|
+
export interface ClaustrumUsageReading {
|
|
4
|
+
provider: string;
|
|
5
|
+
observedAtMs: number;
|
|
6
|
+
headers?: Record<string, string>;
|
|
7
|
+
frame?: unknown;
|
|
8
|
+
account?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Structural to also typecheck with the claustrum-client 0.6.2 peer minimum. */
|
|
11
|
+
export interface ScopedUsageSource {
|
|
12
|
+
reportUsageScoped?(input: {
|
|
13
|
+
credentialId: string;
|
|
14
|
+
reading: Record<string, unknown>;
|
|
15
|
+
enrollmentToken?: string;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export interface ClaustrumUsageReportState {
|
|
19
|
+
readonly pending: number;
|
|
20
|
+
readonly inFlight: boolean;
|
|
21
|
+
readonly dropped: number;
|
|
22
|
+
}
|
|
23
|
+
/** One queue per custody connection, shared by every hub member on it. */
|
|
24
|
+
export declare class ScopedUsageReporter {
|
|
25
|
+
#private;
|
|
26
|
+
private readonly options;
|
|
27
|
+
constructor(options: {
|
|
28
|
+
client: ScopedUsageSource;
|
|
29
|
+
owns: (credentialId: string) => boolean;
|
|
30
|
+
token: () => Promise<string>;
|
|
31
|
+
logger: ClaustrumLogger;
|
|
32
|
+
setTimeout: typeof setTimeout;
|
|
33
|
+
clearTimeout: typeof clearTimeout;
|
|
34
|
+
});
|
|
35
|
+
state(): ClaustrumUsageReportState;
|
|
36
|
+
report(credentialId: string, reading: ClaustrumUsageReading): void;
|
|
37
|
+
forget(credentialId: string): void;
|
|
38
|
+
/** Start the final flush; the custody's existing shutdown drain bounds it. */
|
|
39
|
+
close(): Promise<void> | undefined;
|
|
40
|
+
drop(): void;
|
|
41
|
+
}
|