@indigoai-us/hq-cloud 6.18.16 → 6.18.18
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/bin/sync-runner-company.d.ts.map +1 -1
- package/dist/bin/sync-runner-company.js +26 -1
- package/dist/bin/sync-runner-company.js.map +1 -1
- package/dist/bin/sync-runner-company.test.js +184 -3
- package/dist/bin/sync-runner-company.test.js.map +1 -1
- package/dist/bin/sync-runner.d.ts +13 -0
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +57 -2
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/rescue-core.d.ts.map +1 -1
- package/dist/cli/rescue-core.js +21 -6
- package/dist/cli/rescue-core.js.map +1 -1
- package/dist/cli/rescue-rsync-status.test.js +23 -0
- package/dist/cli/rescue-rsync-status.test.js.map +1 -1
- package/dist/cli/share-plan-limit-presign.test.d.ts +2 -0
- package/dist/cli/share-plan-limit-presign.test.d.ts.map +1 -0
- package/dist/cli/share-plan-limit-presign.test.js +271 -0
- package/dist/cli/share-plan-limit-presign.test.js.map +1 -0
- package/dist/cli/share.d.ts +22 -0
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +151 -25
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +262 -18
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts +63 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +42 -1
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +44 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/object-io.d.ts +40 -0
- package/dist/object-io.d.ts.map +1 -1
- package/dist/object-io.js +122 -5
- package/dist/object-io.js.map +1 -1
- package/dist/object-io.test.js +144 -1
- package/dist/object-io.test.js.map +1 -1
- package/dist/plan-limit-pause.d.ts +61 -0
- package/dist/plan-limit-pause.d.ts.map +1 -0
- package/dist/plan-limit-pause.js +252 -0
- package/dist/plan-limit-pause.js.map +1 -0
- package/dist/plan-limit-pause.test.d.ts +2 -0
- package/dist/plan-limit-pause.test.d.ts.map +1 -0
- package/dist/plan-limit-pause.test.js +150 -0
- package/dist/plan-limit-pause.test.js.map +1 -0
- package/dist/plan-limit.d.ts +87 -0
- package/dist/plan-limit.d.ts.map +1 -0
- package/dist/plan-limit.fixtures.d.ts +34 -0
- package/dist/plan-limit.fixtures.d.ts.map +1 -0
- package/dist/plan-limit.fixtures.js +96 -0
- package/dist/plan-limit.fixtures.js.map +1 -0
- package/dist/plan-limit.js +157 -0
- package/dist/plan-limit.js.map +1 -0
- package/dist/plan-limit.test.d.ts +2 -0
- package/dist/plan-limit.test.d.ts.map +1 -0
- package/dist/plan-limit.test.js +132 -0
- package/dist/plan-limit.test.js.map +1 -0
- package/dist/sync/index.d.ts +1 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/mutation-client.d.ts +14 -2
- package/dist/sync/mutation-client.d.ts.map +1 -1
- package/dist/sync/mutation-client.js +34 -2
- package/dist/sync/mutation-client.js.map +1 -1
- package/dist/sync/mutation-client.test.js +49 -0
- package/dist/sync/mutation-client.test.js.map +1 -1
- package/dist/sync-progress.d.ts.map +1 -1
- package/dist/sync-progress.js +29 -0
- package/dist/sync-progress.js.map +1 -1
- package/dist/sync-progress.test.js +86 -0
- package/dist/sync-progress.test.js.map +1 -1
- package/dist/vault-client.d.ts +49 -6
- package/dist/vault-client.d.ts.map +1 -1
- package/dist/vault-client.js +115 -43
- package/dist/vault-client.js.map +1 -1
- package/dist/vault-client.test.js +86 -10
- package/dist/vault-client.test.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { resolveEntityContext, refreshEntityContext, clearContextCache, isExpiri
|
|
|
8
8
|
export { uploadFile, downloadFile, listRemoteFiles, deleteRemoteFile, headRemoteFile, toPosixKey, } from "./s3.js";
|
|
9
9
|
export type { RemoteFile, UploadAuthor } from "./s3.js";
|
|
10
10
|
export { MutationClient, mutationRequestDigest } from "./sync/mutation-client.js";
|
|
11
|
-
export type { MutationAuthorization, MutationOperation, MutationRequest, MutationSource, MutationStatus, MutationStatusName, MutationClientOptions, SubmitMutationInput, MutationSubmission, } from "./sync/mutation-client.js";
|
|
11
|
+
export type { MutationAuthorization, MutationOperation, MutationRequest, MutationSource, MutationStatus, MutationStatusName, MutationSkippedStatus, MutationClientOptions, SubmitMutationInput, MutationSubmission, } from "./sync/mutation-client.js";
|
|
12
12
|
export { readJournal, writeJournal, hashFile, updateEntry, getEntry, removeEntry, getJournalPath, getStateDir, listJournals, migrateToV2, generatePullId, appendPullRecord, lastPullRecord, tombstoneEntry, isTombstone, gcTombstones, TOMBSTONE_TTL_MS, JOURNAL_VERSION_CURRENT, PERSONAL_VAULT_JOURNAL_SLUG, migratePersonalVaultJournal, } from "./journal.js";
|
|
13
13
|
export type { JournalSummary } from "./journal.js";
|
|
14
14
|
export { AreaLedger, setAreaLedgerTestHooksForTest, } from "./sync/area-ledger.js";
|
|
@@ -33,7 +33,10 @@ export type { PersonalVaultExclusion } from "./personal-vault-exclusions.js";
|
|
|
33
33
|
export { VaultClient, pickCanonicalPersonEntity } from "./vault-client.js";
|
|
34
34
|
export { POLICY_WRITE_SCOPE_TRUNCATED, VaultCredentialScopeError, } from "./credential-scope-error.js";
|
|
35
35
|
export type { CredentialScopeDiagnostic } from "./credential-scope-error.js";
|
|
36
|
-
export { VaultClientError, VaultAuthError, VaultPermissionDeniedError, VaultNotFoundError, VaultConflictError, } from "./vault-client.js";
|
|
36
|
+
export { VaultClientError, VaultAuthError, VaultPermissionDeniedError, VaultNotFoundError, VaultConflictError, planLimitRefusalFromError, } from "./vault-client.js";
|
|
37
|
+
export { PLAN_LIMIT_CODES, PLAN_LIMIT_REACHED_ERROR, formatPlanLimitNotice, hasPlanLimitMarker, isHttpsUpgradeUrl, parsePlanLimitRefusal, } from "./plan-limit.js";
|
|
38
|
+
export type { PlanLimitRefusal, PlanLimitResource } from "./plan-limit.js";
|
|
39
|
+
export { PLAN_LIMIT_PAUSE_RETRY_MS, clearPlanLimitPauses, } from "./plan-limit-pause.js";
|
|
37
40
|
export type { MembershipRole, MembershipStatus, Membership, CreateInviteInput, CreateInviteResult, AcceptInviteResult, UpdateRoleInput, EntityInfo, RegisterCompanySkillInput, RegisterCompanySkillResult, CreateEntityInput, CreateEntityResult, PendingInviteByEmail, TelemetryOptInResponse, UsageBatch, UsageIngestResult, RawTelemetryEventInput, TelemetryEventsBatch, TelemetryEventsIngestResult, SkillInvocationBatch, SkillInvocationIngestResult, SyncMode, MembershipSyncConfig, SetMembershipSyncConfigInput, ExplicitGrant, } from "./vault-client.js";
|
|
38
41
|
export { collectAndSendTelemetry, sanitizeRow } from "./telemetry.js";
|
|
39
42
|
export type { CollectTelemetryOptions, CollectTelemetryResult, TelemetryClientSurface, } from "./telemetry.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -49,7 +49,11 @@ export { PERSONAL_VAULT_DEFAULT_EXCLUSIONS, isPersonalVaultExcluded, matchPerson
|
|
|
49
49
|
// VaultClient SDK (VLT-7)
|
|
50
50
|
export { VaultClient, pickCanonicalPersonEntity } from "./vault-client.js";
|
|
51
51
|
export { POLICY_WRITE_SCOPE_TRUNCATED, VaultCredentialScopeError, } from "./credential-scope-error.js";
|
|
52
|
-
export { VaultClientError, VaultAuthError, VaultPermissionDeniedError, VaultNotFoundError, VaultConflictError, } from "./vault-client.js";
|
|
52
|
+
export { VaultClientError, VaultAuthError, VaultPermissionDeniedError, VaultNotFoundError, VaultConflictError, planLimitRefusalFromError, } from "./vault-client.js";
|
|
53
|
+
// Plan-limit refusals: one parser for every server shape, plus the runner's
|
|
54
|
+
// per-vault pause record (clear it after a plan change to retry at once).
|
|
55
|
+
export { PLAN_LIMIT_CODES, PLAN_LIMIT_REACHED_ERROR, formatPlanLimitNotice, hasPlanLimitMarker, isHttpsUpgradeUrl, parsePlanLimitRefusal, } from "./plan-limit.js";
|
|
56
|
+
export { PLAN_LIMIT_PAUSE_RETRY_MS, clearPlanLimitPauses, } from "./plan-limit-pause.js";
|
|
53
57
|
// Usage telemetry collector (`/v1/usage`). Re-exported so wrappers other than
|
|
54
58
|
// `hq-sync-runner` (mobile, custom CLIs) can run the collector on their own
|
|
55
59
|
// schedule without re-implementing the cursor + sanitizer.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/object-io.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ import { ObjectLockChecksumRequiredError } from "./lib/s3-content-checksum.js";
|
|
|
28
28
|
export { ObjectLockChecksumRequiredError };
|
|
29
29
|
import type { EntityContext } from "./types.js";
|
|
30
30
|
import type { PresignOp, PresignKeyInput, PresignResultRow, VaultListedObject } from "./vault-client.js";
|
|
31
|
+
import { type PlanLimitRefusal } from "./plan-limit.js";
|
|
31
32
|
/**
|
|
32
33
|
* Bound for one vault/S3 HTTPS request. Matches FILE_TOMBSTONE reads
|
|
33
34
|
* (`FETCH_TOMBSTONES_TIMEOUT_MS`) and the push-transport default so a stalled
|
|
@@ -38,6 +39,26 @@ export declare const OBJECT_IO_REQUEST_TIMEOUT_MS = 60000;
|
|
|
38
39
|
export declare const OBJECT_IO_BODY_IDLE_TIMEOUT_MS = 15000;
|
|
39
40
|
export declare function objectIORequestTimeoutMs(): number;
|
|
40
41
|
export declare function setObjectIORequestTimeoutMsForTesting(ms: number | undefined): void;
|
|
42
|
+
/** Test-only override for {@link FILES_ADMISSION_TIMEOUT_MS}. */
|
|
43
|
+
export declare function setFilesAdmissionTimeoutMsForTesting(ms: number | undefined): void;
|
|
44
|
+
/**
|
|
45
|
+
* What a files admission check learned about a company vault.
|
|
46
|
+
*
|
|
47
|
+
* - `allowed`: the server would accept an upload now.
|
|
48
|
+
* - `refused`: the company is over its limits; `refusal` is the fresh body.
|
|
49
|
+
* - `unknown`: no answer (no admission route yet, not a company vault,
|
|
50
|
+
* denied, a server error, a network error or a timeout). Callers keep
|
|
51
|
+
* whatever they would have done without the check.
|
|
52
|
+
*/
|
|
53
|
+
export type FilesAdmissionOutcome = {
|
|
54
|
+
state: "allowed";
|
|
55
|
+
} | {
|
|
56
|
+
state: "refused";
|
|
57
|
+
refusal: PlanLimitRefusal;
|
|
58
|
+
} | {
|
|
59
|
+
state: "unknown";
|
|
60
|
+
reason: string;
|
|
61
|
+
};
|
|
41
62
|
export declare function setObjectIOBodyIdleTimeoutMsForTesting(ms: number | undefined): void;
|
|
42
63
|
export declare class ObjectBodyIdleTimeoutError extends Error {
|
|
43
64
|
constructor(key: string, timeoutMs: number);
|
|
@@ -65,6 +86,12 @@ export interface PresignTransportClient {
|
|
|
65
86
|
cursor: string | null;
|
|
66
87
|
truncated: boolean;
|
|
67
88
|
}>;
|
|
89
|
+
/** Files admission check on the presign route (see VaultClient). Optional. */
|
|
90
|
+
checkFilesAdmission?(companyUid: string, options?: {
|
|
91
|
+
timeoutMs?: number;
|
|
92
|
+
}): Promise<{
|
|
93
|
+
allowed: boolean;
|
|
94
|
+
}>;
|
|
68
95
|
}
|
|
69
96
|
/**
|
|
70
97
|
* Conditional-write fence for a PUT (S3 conditional writes, GA 2024-11).
|
|
@@ -183,6 +210,12 @@ export interface ObjectIO {
|
|
|
183
210
|
* uncached, and the per-key call falls back to a single presign.
|
|
184
211
|
*/
|
|
185
212
|
prime?(op: PresignOp, keys: PresignKeyInput[]): Promise<void>;
|
|
213
|
+
/**
|
|
214
|
+
* Ask the vault whether a new upload would be refused by the plan limit,
|
|
215
|
+
* without minting a URL. Present only on the presigned transport; it never
|
|
216
|
+
* throws.
|
|
217
|
+
*/
|
|
218
|
+
checkFilesAdmission?(): Promise<FilesAdmissionOutcome>;
|
|
186
219
|
/**
|
|
187
220
|
* True if a live primed PUT URL exists for `key`. Lets uploadFile/uploadSymlink
|
|
188
221
|
* skip recomputing metadata + the created-at HEAD when a `prime("put", …)`
|
|
@@ -336,6 +369,12 @@ export declare class PresignObjectIO implements ObjectIO {
|
|
|
336
369
|
private readonly breaker;
|
|
337
370
|
private readonly urlCache;
|
|
338
371
|
private readonly headReuseCache;
|
|
372
|
+
/**
|
|
373
|
+
* PUT keys a {@link prime} batch was refused for by the plan limit, with the
|
|
374
|
+
* refusal and its expiry. The per-key upload that follows throws the cached
|
|
375
|
+
* refusal instead of presigning the same key a second time in the pass.
|
|
376
|
+
*/
|
|
377
|
+
private readonly putRefusalCache;
|
|
339
378
|
constructor(vault: PresignTransportClient, companyUid: string, breaker?: RateLimitBreaker);
|
|
340
379
|
private cacheKey;
|
|
341
380
|
hasPrimedPut(key: string, contentHash?: string, precondition?: PutPrecondition | null): boolean;
|
|
@@ -356,6 +395,7 @@ export declare class PresignObjectIO implements ObjectIO {
|
|
|
356
395
|
*/
|
|
357
396
|
private resolveUrl;
|
|
358
397
|
private requireSignedPutPreconditions;
|
|
398
|
+
checkFilesAdmission(): Promise<FilesAdmissionOutcome>;
|
|
359
399
|
prime(op: PresignOp, keys: PresignKeyInput[]): Promise<void>;
|
|
360
400
|
putObject(input: PutObjectInput): Promise<{
|
|
361
401
|
etag: string;
|
package/dist/object-io.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-io.d.ts","sourceRoot":"","sources":["../src/object-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAYH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAIL,+BAA+B,EAChC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,+BAA+B,EAAE,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"object-io.d.ts","sourceRoot":"","sources":["../src/object-io.ts"],"names":[],"mappings":"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"}
|
package/dist/object-io.js
CHANGED
|
@@ -30,7 +30,8 @@ import { isAbortOrTimeoutError, isTransientNetworkError } from "./lib/net-errors
|
|
|
30
30
|
import { headersForObjectLockPut, isObjectLockChecksumRequiredBody, isObjectLockChecksumRequiredError, ObjectLockChecksumRequiredError, } from "./lib/s3-content-checksum.js";
|
|
31
31
|
export { ObjectLockChecksumRequiredError };
|
|
32
32
|
import { getBandwidthGovernor } from "./bandwidth.js";
|
|
33
|
-
import { VaultClientError } from "./vault-client.js";
|
|
33
|
+
import { planLimitRefusalFromError, VaultClientError } from "./vault-client.js";
|
|
34
|
+
import { parsePlanLimitRefusal } from "./plan-limit.js";
|
|
34
35
|
/**
|
|
35
36
|
* Bound for one vault/S3 HTTPS request. Matches FILE_TOMBSTONE reads
|
|
36
37
|
* (`FETCH_TOMBSTONES_TIMEOUT_MS`) and the push-transport default so a stalled
|
|
@@ -47,6 +48,13 @@ export function objectIORequestTimeoutMs() {
|
|
|
47
48
|
export function setObjectIORequestTimeoutMsForTesting(ms) {
|
|
48
49
|
objectIORequestTimeoutMsForTest = ms;
|
|
49
50
|
}
|
|
51
|
+
/** Upper bound on one files admission check, network and auth included. */
|
|
52
|
+
const FILES_ADMISSION_TIMEOUT_MS = 5_000;
|
|
53
|
+
let filesAdmissionTimeoutMsForTest;
|
|
54
|
+
/** Test-only override for {@link FILES_ADMISSION_TIMEOUT_MS}. */
|
|
55
|
+
export function setFilesAdmissionTimeoutMsForTesting(ms) {
|
|
56
|
+
filesAdmissionTimeoutMsForTest = ms;
|
|
57
|
+
}
|
|
50
58
|
export function setObjectIOBodyIdleTimeoutMsForTesting(ms) {
|
|
51
59
|
objectIOBodyIdleTimeoutMsForTest = ms;
|
|
52
60
|
}
|
|
@@ -629,15 +637,40 @@ function isSkipWithLogDenialCode(code) {
|
|
|
629
637
|
return (typeof code === "string" &&
|
|
630
638
|
(code.endsWith("_FORBIDDEN") || SKIP_WITH_LOG_DENIAL_CODES.has(code)));
|
|
631
639
|
}
|
|
640
|
+
/**
|
|
641
|
+
* The plan-limit refusal a per-key presign row carries, or null. Rows use the
|
|
642
|
+
* personal-scope skip shape (`code: "PLAN_LIMIT_REACHED"`) or the per-item
|
|
643
|
+
* company shape (`error: "plan_limit_reached"` / `code: "PLAN_LIMIT_EXCEEDED"`);
|
|
644
|
+
* both carry the server's `upgradeUrl`.
|
|
645
|
+
*/
|
|
646
|
+
function planLimitRefusalFromRow(row) {
|
|
647
|
+
if (!row.error && row.url)
|
|
648
|
+
return null;
|
|
649
|
+
return parsePlanLimitRefusal(row);
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* The typed error a refused PUT presign throws: a 402 {@link VaultClientError}
|
|
653
|
+
* carrying the parsed refusal, so share()'s plan-limit skip recognises it the
|
|
654
|
+
* same way it recognises a whole-batch 402.
|
|
655
|
+
*/
|
|
656
|
+
function planLimitPresignError(key, refusal) {
|
|
657
|
+
return new VaultClientError(refusal.message ?? "Plan limit reached", 402, undefined, {
|
|
658
|
+
...(refusal.code !== undefined ? { code: refusal.code } : {}),
|
|
659
|
+
...(refusal.error !== undefined ? { errorCode: refusal.error } : {}),
|
|
660
|
+
path: key,
|
|
661
|
+
upgradeUrl: refusal.upgradeUrl,
|
|
662
|
+
planLimit: refusal,
|
|
663
|
+
});
|
|
664
|
+
}
|
|
632
665
|
function firstRowOrThrow(results, key, op) {
|
|
633
666
|
const row = results[0];
|
|
634
667
|
if (!row) {
|
|
635
668
|
throw new Error(`presign ${op} returned no row for ${key}`);
|
|
636
669
|
}
|
|
637
670
|
if (row.error || !row.url) {
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
671
|
+
const refusal = planLimitRefusalFromRow(row);
|
|
672
|
+
if (refusal)
|
|
673
|
+
throw planLimitPresignError(key, refusal);
|
|
641
674
|
// An expected per-key denial (see {@link isSkipWithLogDenialCode}) must
|
|
642
675
|
// throw the SAME `name: "Forbidden"` shape the GET/HEAD path uses so it
|
|
643
676
|
// routes through the `isAccessDenied` skip in sync.ts / share.ts. Without
|
|
@@ -734,6 +767,12 @@ const PRIME_EXPIRES_IN_SECONDS = 1800;
|
|
|
734
767
|
const PRIME_CONCURRENCY = 4;
|
|
735
768
|
/** Treat a cached URL within this window of expiry as a miss (re-presign). */
|
|
736
769
|
const CACHE_SAFETY_MS = 60_000;
|
|
770
|
+
/**
|
|
771
|
+
* How long a primed PUT refusal (plan limit) answers the per-key upload that
|
|
772
|
+
* follows it. It only has to span one push pass; after that the server is
|
|
773
|
+
* asked again, so a plan change is never masked for long.
|
|
774
|
+
*/
|
|
775
|
+
const PRIME_REFUSAL_TTL_MS = 10 * 60 * 1000;
|
|
737
776
|
/**
|
|
738
777
|
* Opt-in gate for strict fail-closed enforcement of fenced presigned PUTs.
|
|
739
778
|
*
|
|
@@ -842,6 +881,12 @@ export class PresignObjectIO {
|
|
|
842
881
|
breaker;
|
|
843
882
|
urlCache = new Map();
|
|
844
883
|
headReuseCache = new Map();
|
|
884
|
+
/**
|
|
885
|
+
* PUT keys a {@link prime} batch was refused for by the plan limit, with the
|
|
886
|
+
* refusal and its expiry. The per-key upload that follows throws the cached
|
|
887
|
+
* refusal instead of presigning the same key a second time in the pass.
|
|
888
|
+
*/
|
|
889
|
+
putRefusalCache = new Map();
|
|
845
890
|
constructor(vault, companyUid,
|
|
846
891
|
// Shared across a run's per-company instances by the factory; a directly
|
|
847
892
|
// constructed instance gets its own (fine for tests / one-offs).
|
|
@@ -962,6 +1007,15 @@ export class PresignObjectIO {
|
|
|
962
1007
|
: undefined;
|
|
963
1008
|
if (hit)
|
|
964
1009
|
return { url: hit.url, headers: hit.headers };
|
|
1010
|
+
if (op === "put") {
|
|
1011
|
+
const refused = this.putRefusalCache.get(key);
|
|
1012
|
+
if (refused) {
|
|
1013
|
+
this.putRefusalCache.delete(key);
|
|
1014
|
+
if (Date.now() < refused.expiresAtMs) {
|
|
1015
|
+
throw planLimitPresignError(key, refused.refusal);
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
965
1019
|
// Primed URLs still serve once the breaker trips (no wire needed); only an
|
|
966
1020
|
// uncached key on an exhausted budget fails fast.
|
|
967
1021
|
return this.presignSingle(op, key, extra);
|
|
@@ -984,6 +1038,50 @@ export class PresignObjectIO {
|
|
|
984
1038
|
}
|
|
985
1039
|
}
|
|
986
1040
|
}
|
|
1041
|
+
async checkFilesAdmission() {
|
|
1042
|
+
if (!this.companyUid.startsWith("cmp_")) {
|
|
1043
|
+
return { state: "unknown", reason: "not-a-company-vault" };
|
|
1044
|
+
}
|
|
1045
|
+
const check = this.vault.checkFilesAdmission;
|
|
1046
|
+
if (typeof check !== "function") {
|
|
1047
|
+
return { state: "unknown", reason: "client-has-no-admission-check" };
|
|
1048
|
+
}
|
|
1049
|
+
// The check shares the per-user presign budget. Once that is spent, do
|
|
1050
|
+
// not add to it; the caller keeps its hourly retry.
|
|
1051
|
+
if (this.breaker.isTripped())
|
|
1052
|
+
return { state: "unknown", reason: "rate-limited" };
|
|
1053
|
+
const timeoutMs = filesAdmissionTimeoutMsForTest ?? FILES_ADMISSION_TIMEOUT_MS;
|
|
1054
|
+
let timer;
|
|
1055
|
+
const timedOut = new Promise((resolve) => {
|
|
1056
|
+
timer = setTimeout(() => resolve({ state: "unknown", reason: "timeout" }), timeoutMs);
|
|
1057
|
+
timer.unref?.();
|
|
1058
|
+
});
|
|
1059
|
+
const asked = (async () => {
|
|
1060
|
+
try {
|
|
1061
|
+
const answer = await check.call(this.vault, this.companyUid, { timeoutMs });
|
|
1062
|
+
return answer.allowed === true
|
|
1063
|
+
? { state: "allowed" }
|
|
1064
|
+
: { state: "unknown", reason: "not-allowed-without-refusal" };
|
|
1065
|
+
}
|
|
1066
|
+
catch (err) {
|
|
1067
|
+
const refusal = planLimitRefusalFromError(err);
|
|
1068
|
+
if (refusal)
|
|
1069
|
+
return { state: "refused", refusal };
|
|
1070
|
+
const status = err instanceof VaultClientError ? err.statusCode : undefined;
|
|
1071
|
+
return {
|
|
1072
|
+
state: "unknown",
|
|
1073
|
+
reason: status !== undefined ? `http-${status}` : "request-failed",
|
|
1074
|
+
};
|
|
1075
|
+
}
|
|
1076
|
+
})();
|
|
1077
|
+
try {
|
|
1078
|
+
return await Promise.race([asked, timedOut]);
|
|
1079
|
+
}
|
|
1080
|
+
finally {
|
|
1081
|
+
if (timer !== undefined)
|
|
1082
|
+
clearTimeout(timer);
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
987
1085
|
async prime(op, keys) {
|
|
988
1086
|
if (keys.length === 0)
|
|
989
1087
|
return;
|
|
@@ -1024,6 +1122,16 @@ export class PresignObjectIO {
|
|
|
1024
1122
|
this.breaker.trip();
|
|
1025
1123
|
return;
|
|
1026
1124
|
}
|
|
1125
|
+
// A whole-batch plan-limit 402 refuses every PUT in the chunk.
|
|
1126
|
+
// Remember it per key so each upload reports the refusal without
|
|
1127
|
+
// presigning the key again in the same pass.
|
|
1128
|
+
const refusal = op === "put" ? planLimitRefusalFromError(err) : null;
|
|
1129
|
+
if (refusal) {
|
|
1130
|
+
const expiresAtMs = Date.now() + PRIME_REFUSAL_TTL_MS;
|
|
1131
|
+
for (const k of chunk) {
|
|
1132
|
+
this.putRefusalCache.set(k.key, { refusal, expiresAtMs });
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1027
1135
|
// A non-429 chunk failure just means those keys aren't cached — the
|
|
1028
1136
|
// per-key call will single-presign. Never let priming fail the sync.
|
|
1029
1137
|
continue;
|
|
@@ -1038,8 +1146,17 @@ export class PresignObjectIO {
|
|
|
1038
1146
|
},
|
|
1039
1147
|
]));
|
|
1040
1148
|
for (const row of resp.results) {
|
|
1041
|
-
if (row.error || !row.url)
|
|
1149
|
+
if (row.error || !row.url) {
|
|
1150
|
+
const refusal = op === "put" ? planLimitRefusalFromRow(row) : null;
|
|
1151
|
+
if (refusal) {
|
|
1152
|
+
this.putRefusalCache.set(row.key, {
|
|
1153
|
+
refusal,
|
|
1154
|
+
expiresAtMs: now + PRIME_REFUSAL_TTL_MS,
|
|
1155
|
+
});
|
|
1156
|
+
}
|
|
1042
1157
|
continue;
|
|
1158
|
+
}
|
|
1159
|
+
this.putRefusalCache.delete(row.key);
|
|
1043
1160
|
const fence = putFences.get(row.key);
|
|
1044
1161
|
this.urlCache.set(this.cacheKey(op, row.key), {
|
|
1045
1162
|
url: row.url,
|