@indigoai-us/hq-cloud 6.11.11 → 6.11.13
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 +35 -0
- package/dist/bin/sync-runner-company.d.ts.map +1 -0
- package/dist/bin/sync-runner-company.js +290 -0
- package/dist/bin/sync-runner-company.js.map +1 -0
- package/dist/bin/sync-runner-events.d.ts +12 -0
- package/dist/bin/sync-runner-events.d.ts.map +1 -0
- package/dist/bin/sync-runner-events.js +12 -0
- package/dist/bin/sync-runner-events.js.map +1 -0
- package/dist/bin/sync-runner-planning.d.ts +53 -0
- package/dist/bin/sync-runner-planning.d.ts.map +1 -0
- package/dist/bin/sync-runner-planning.js +59 -0
- package/dist/bin/sync-runner-planning.js.map +1 -0
- package/dist/bin/sync-runner-rollup.d.ts +24 -0
- package/dist/bin/sync-runner-rollup.d.ts.map +1 -0
- package/dist/bin/sync-runner-rollup.js +46 -0
- package/dist/bin/sync-runner-rollup.js.map +1 -0
- package/dist/bin/sync-runner-telemetry.d.ts +5 -0
- package/dist/bin/sync-runner-telemetry.d.ts.map +1 -0
- package/dist/bin/sync-runner-telemetry.js +5 -0
- package/dist/bin/sync-runner-telemetry.js.map +1 -0
- package/dist/bin/sync-runner-watch-loop.d.ts +17 -0
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -0
- package/dist/bin/sync-runner-watch-loop.js +372 -0
- package/dist/bin/sync-runner-watch-loop.js.map +1 -0
- package/dist/bin/sync-runner-watch-routes.d.ts +25 -0
- package/dist/bin/sync-runner-watch-routes.d.ts.map +1 -0
- package/dist/bin/sync-runner-watch-routes.js +74 -0
- package/dist/bin/sync-runner-watch-routes.js.map +1 -0
- package/dist/bin/sync-runner.d.ts +5 -54
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +76 -978
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +265 -11
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/reindex.d.ts.map +1 -1
- package/dist/cli/reindex.js +34 -17
- package/dist/cli/reindex.js.map +1 -1
- package/dist/cli/reindex.test.js +39 -5
- package/dist/cli/reindex.test.js.map +1 -1
- package/dist/cli/rescue-classify-ordering.test.js +75 -0
- package/dist/cli/rescue-classify-ordering.test.js.map +1 -1
- package/dist/cli/rescue-core.d.ts +45 -0
- package/dist/cli/rescue-core.d.ts.map +1 -1
- package/dist/cli/rescue-core.js +320 -170
- package/dist/cli/rescue-core.js.map +1 -1
- package/dist/cli/share.d.ts +2 -1
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +276 -660
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +30 -0
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts +28 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +541 -748
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +382 -1
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/cognito-auth.d.ts.map +1 -1
- package/dist/cognito-auth.js +55 -10
- package/dist/cognito-auth.js.map +1 -1
- package/dist/cognito-auth.test.js +61 -0
- package/dist/cognito-auth.test.js.map +1 -1
- package/dist/daemon-worker.d.ts +2 -2
- package/dist/daemon-worker.js +3 -3
- package/dist/daemon-worker.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +93 -6
- package/dist/journal.js.map +1 -1
- package/dist/journal.test.js +59 -0
- package/dist/journal.test.js.map +1 -1
- package/dist/machine-auth.test.js +60 -2
- package/dist/machine-auth.test.js.map +1 -1
- package/dist/object-io.d.ts +37 -1
- package/dist/object-io.d.ts.map +1 -1
- package/dist/object-io.js +149 -30
- package/dist/object-io.js.map +1 -1
- package/dist/object-io.test.js +121 -0
- package/dist/object-io.test.js.map +1 -1
- package/dist/operation-lock.d.ts +8 -8
- package/dist/operation-lock.d.ts.map +1 -1
- package/dist/operation-lock.js +99 -32
- package/dist/operation-lock.js.map +1 -1
- package/dist/operation-lock.test.js +51 -4
- package/dist/operation-lock.test.js.map +1 -1
- package/dist/personal-vault.d.ts.map +1 -1
- package/dist/personal-vault.js +8 -2
- package/dist/personal-vault.js.map +1 -1
- package/dist/personal-vault.test.js +34 -0
- package/dist/personal-vault.test.js.map +1 -1
- package/dist/prefix-coalesce.d.ts +20 -9
- package/dist/prefix-coalesce.d.ts.map +1 -1
- package/dist/prefix-coalesce.js +124 -28
- package/dist/prefix-coalesce.js.map +1 -1
- package/dist/prefix-coalesce.test.js +57 -2
- package/dist/prefix-coalesce.test.js.map +1 -1
- package/dist/remote-pull.d.ts +8 -3
- package/dist/remote-pull.d.ts.map +1 -1
- package/dist/remote-pull.js +85 -16
- package/dist/remote-pull.js.map +1 -1
- package/dist/remote-pull.test.js +213 -2
- package/dist/remote-pull.test.js.map +1 -1
- package/dist/s3.d.ts +2 -0
- package/dist/s3.d.ts.map +1 -1
- package/dist/s3.js +197 -116
- package/dist/s3.js.map +1 -1
- package/dist/s3.test.js +109 -0
- package/dist/s3.test.js.map +1 -1
- package/dist/scope-shrink.d.ts +3 -2
- package/dist/scope-shrink.d.ts.map +1 -1
- package/dist/scope-shrink.js +1 -1
- package/dist/scope-shrink.js.map +1 -1
- package/dist/skill-telemetry.d.ts +1 -1
- package/dist/skill-telemetry.d.ts.map +1 -1
- package/dist/skill-telemetry.js +69 -9
- package/dist/skill-telemetry.js.map +1 -1
- package/dist/skill-telemetry.test.js +86 -0
- package/dist/skill-telemetry.test.js.map +1 -1
- package/dist/sync/event-sync.d.ts +6 -0
- package/dist/sync/event-sync.d.ts.map +1 -1
- package/dist/sync/event-sync.js +34 -1
- package/dist/sync/event-sync.js.map +1 -1
- package/dist/sync/event-sync.test.js +73 -0
- package/dist/sync/event-sync.test.js.map +1 -1
- package/dist/sync/metrics.d.ts +17 -1
- package/dist/sync/metrics.d.ts.map +1 -1
- package/dist/sync/metrics.js +32 -1
- package/dist/sync/metrics.js.map +1 -1
- package/dist/sync/metrics.test.js +74 -1
- package/dist/sync/metrics.test.js.map +1 -1
- package/dist/sync/pull-scope.d.ts.map +1 -1
- package/dist/sync/pull-scope.js +15 -7
- package/dist/sync/pull-scope.js.map +1 -1
- package/dist/sync/push-receiver.d.ts +12 -5
- package/dist/sync/push-receiver.d.ts.map +1 -1
- package/dist/sync/push-receiver.js +45 -17
- package/dist/sync/push-receiver.js.map +1 -1
- package/dist/sync/push-receiver.test.js +67 -1
- package/dist/sync/push-receiver.test.js.map +1 -1
- package/dist/sync-core.d.ts +27 -0
- package/dist/sync-core.d.ts.map +1 -0
- package/dist/sync-core.js +54 -0
- package/dist/sync-core.js.map +1 -0
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +59 -6
- package/dist/telemetry.js.map +1 -1
- package/dist/telemetry.test.js +74 -0
- package/dist/telemetry.test.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vault-client.d.ts.map +1 -1
- package/dist/vault-client.js +284 -36
- package/dist/vault-client.js.map +1 -1
- package/dist/vault-client.test.js +59 -0
- package/dist/vault-client.test.js.map +1 -1
- package/dist/watcher.d.ts +38 -20
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +155 -143
- package/dist/watcher.js.map +1 -1
- package/dist/watcher.test.js +103 -0
- package/dist/watcher.test.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/sync-runner-company.ts +350 -0
- package/src/bin/sync-runner-events.ts +25 -0
- package/src/bin/sync-runner-planning.ts +121 -0
- package/src/bin/sync-runner-rollup.ts +72 -0
- package/src/bin/sync-runner-telemetry.ts +8 -0
- package/src/bin/sync-runner-watch-loop.ts +443 -0
- package/src/bin/sync-runner-watch-routes.ts +86 -0
- package/src/bin/sync-runner.test.ts +298 -11
- package/src/bin/sync-runner.ts +99 -1054
- package/src/cli/reindex.test.ts +41 -3
- package/src/cli/reindex.ts +35 -19
- package/src/cli/rescue-classify-ordering.test.ts +81 -0
- package/src/cli/rescue-core.ts +400 -165
- package/src/cli/share.test.ts +38 -0
- package/src/cli/share.ts +420 -693
- package/src/cli/sync.test.ts +460 -1
- package/src/cli/sync.ts +788 -825
- package/src/cognito-auth.test.ts +77 -0
- package/src/cognito-auth.ts +73 -11
- package/src/daemon-worker.ts +3 -3
- package/src/index.ts +8 -0
- package/src/journal.test.ts +72 -0
- package/src/journal.ts +95 -8
- package/src/machine-auth.test.ts +64 -2
- package/src/object-io.test.ts +142 -0
- package/src/object-io.ts +183 -31
- package/src/operation-lock.test.ts +63 -4
- package/src/operation-lock.ts +99 -31
- package/src/personal-vault.test.ts +42 -0
- package/src/personal-vault.ts +8 -2
- package/src/prefix-coalesce.test.ts +71 -1
- package/src/prefix-coalesce.ts +155 -30
- package/src/remote-pull.test.ts +235 -1
- package/src/remote-pull.ts +106 -18
- package/src/s3.test.ts +126 -0
- package/src/s3.ts +237 -122
- package/src/scope-shrink.ts +6 -3
- package/src/skill-telemetry.test.ts +109 -0
- package/src/skill-telemetry.ts +82 -14
- package/src/sync/event-sync.test.ts +75 -0
- package/src/sync/event-sync.ts +54 -1
- package/src/sync/metrics.test.ts +81 -0
- package/src/sync/metrics.ts +59 -4
- package/src/sync/pull-scope.ts +23 -7
- package/src/sync/push-receiver.test.ts +73 -1
- package/src/sync/push-receiver.ts +56 -20
- package/src/sync-core.ts +58 -0
- package/src/telemetry.test.ts +85 -0
- package/src/telemetry.ts +69 -6
- package/src/types.ts +8 -0
- package/src/vault-client.test.ts +74 -0
- package/src/vault-client.ts +395 -43
- package/src/watcher.test.ts +117 -0
- package/src/watcher.ts +215 -174
package/dist/sync/metrics.d.ts
CHANGED
|
@@ -62,14 +62,29 @@ export interface SyncLatencyMetric {
|
|
|
62
62
|
latencySeconds: number;
|
|
63
63
|
timestamp: Date;
|
|
64
64
|
}
|
|
65
|
+
export interface SyncMetricCredentials {
|
|
66
|
+
accessKeyId: string;
|
|
67
|
+
secretAccessKey: string;
|
|
68
|
+
sessionToken?: string;
|
|
69
|
+
expiration?: string;
|
|
70
|
+
}
|
|
71
|
+
type CloudWatchClientConfig = NonNullable<ConstructorParameters<typeof CloudWatchClient>[0]>;
|
|
72
|
+
type CloudWatchClientLike = Pick<CloudWatchClient, "send">;
|
|
65
73
|
/**
|
|
66
74
|
* Replace the CloudWatch client (for testing).
|
|
67
75
|
* @internal
|
|
68
76
|
*/
|
|
69
77
|
export declare function _setSyncCloudWatchClient(client: CloudWatchClient): void;
|
|
78
|
+
export interface CreateSyncLatencyMetricPublisherOptions {
|
|
79
|
+
region: string;
|
|
80
|
+
credentials: SyncMetricCredentials;
|
|
81
|
+
/** Override CloudWatch construction (tests). */
|
|
82
|
+
buildClient?: (config: CloudWatchClientConfig) => CloudWatchClientLike;
|
|
83
|
+
}
|
|
84
|
+
export declare function createSyncLatencyMetricPublisher(opts: CreateSyncLatencyMetricPublisherOptions): (metric: SyncLatencyMetric) => Promise<void>;
|
|
70
85
|
export interface PublishSyncLatencyMetricOptions {
|
|
71
86
|
/** Override the CloudWatch client (tests). Defaults to the module singleton. */
|
|
72
|
-
client?:
|
|
87
|
+
client?: CloudWatchClientLike;
|
|
73
88
|
/** Optional pino logger for emission failures. */
|
|
74
89
|
logger?: Logger;
|
|
75
90
|
}
|
|
@@ -86,4 +101,5 @@ export interface PublishSyncLatencyMetricOptions {
|
|
|
86
101
|
* its 3-log chain entry.
|
|
87
102
|
*/
|
|
88
103
|
export declare function publishSyncLatencyMetric(metric: SyncLatencyMetric, opts?: PublishSyncLatencyMetricOptions): Promise<void>;
|
|
104
|
+
export {};
|
|
89
105
|
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/sync/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,gBAAgB,EAGjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAI5E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/sync/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,gBAAgB,EAGjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAI5E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,sBAAsB,GAAG,WAAW,CACvC,qBAAqB,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAClD,CAAC;AACF,KAAK,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AA6B3D;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAEvE;AAED,MAAM,WAAW,uCAAuC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,qBAAqB,CAAC;IACnC,gDAAgD;IAChD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,oBAAoB,CAAC;CACxE;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,uCAAuC,GAC5C,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAgB9C;AAID,MAAM,WAAW,+BAA+B;IAC9C,gFAAgF;IAChF,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,iBAAiB,EACzB,IAAI,GAAE,+BAAoC,GACzC,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
package/dist/sync/metrics.js
CHANGED
|
@@ -48,7 +48,21 @@ export const SYNC_LATENCY_METRIC_NAME = "hq-cloud.sync.p95_latency_seconds";
|
|
|
48
48
|
let _cwClient;
|
|
49
49
|
function getCloudWatchClient() {
|
|
50
50
|
if (!_cwClient) {
|
|
51
|
-
|
|
51
|
+
const region = process.env.HQ_SYNC_CLOUDWATCH_REGION;
|
|
52
|
+
const accessKeyId = process.env.HQ_SYNC_CLOUDWATCH_ACCESS_KEY_ID;
|
|
53
|
+
const secretAccessKey = process.env.HQ_SYNC_CLOUDWATCH_SECRET_ACCESS_KEY;
|
|
54
|
+
const sessionToken = process.env.HQ_SYNC_CLOUDWATCH_SESSION_TOKEN;
|
|
55
|
+
if (!region || !accessKeyId || !secretAccessKey) {
|
|
56
|
+
throw new Error("CloudWatch metric publisher requires scoped HQ_SYNC_CLOUDWATCH_REGION and credentials");
|
|
57
|
+
}
|
|
58
|
+
_cwClient = new CloudWatchClient({
|
|
59
|
+
region,
|
|
60
|
+
credentials: {
|
|
61
|
+
accessKeyId,
|
|
62
|
+
secretAccessKey,
|
|
63
|
+
...(sessionToken ? { sessionToken } : {}),
|
|
64
|
+
},
|
|
65
|
+
});
|
|
52
66
|
}
|
|
53
67
|
return _cwClient;
|
|
54
68
|
}
|
|
@@ -59,6 +73,23 @@ function getCloudWatchClient() {
|
|
|
59
73
|
export function _setSyncCloudWatchClient(client) {
|
|
60
74
|
_cwClient = client;
|
|
61
75
|
}
|
|
76
|
+
export function createSyncLatencyMetricPublisher(opts) {
|
|
77
|
+
const credentials = {
|
|
78
|
+
accessKeyId: opts.credentials.accessKeyId,
|
|
79
|
+
secretAccessKey: opts.credentials.secretAccessKey,
|
|
80
|
+
...(opts.credentials.sessionToken
|
|
81
|
+
? { sessionToken: opts.credentials.sessionToken }
|
|
82
|
+
: {}),
|
|
83
|
+
...(opts.credentials.expiration
|
|
84
|
+
? { expiration: new Date(opts.credentials.expiration) }
|
|
85
|
+
: {}),
|
|
86
|
+
};
|
|
87
|
+
const client = (opts.buildClient ?? ((config) => new CloudWatchClient(config)))({
|
|
88
|
+
region: opts.region,
|
|
89
|
+
credentials,
|
|
90
|
+
});
|
|
91
|
+
return (metric) => publishSyncLatencyMetric(metric, { client });
|
|
92
|
+
}
|
|
62
93
|
/**
|
|
63
94
|
* Publish a single latency datum to CloudWatch.
|
|
64
95
|
*
|
package/dist/sync/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/sync/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,4BAA4B,CAAC;AAGpC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/sync/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ import { Writable } from "node:stream";
|
|
|
19
19
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
20
20
|
import { mockClient } from "aws-sdk-client-mock";
|
|
21
21
|
import { CloudWatchClient, PutMetricDataCommand, } from "@aws-sdk/client-cloudwatch";
|
|
22
|
-
import { SYNC_LATENCY_METRIC_NAME, SYNC_METRIC_NAMESPACE, _setSyncCloudWatchClient, publishSyncLatencyMetric, } from "./metrics.js";
|
|
22
|
+
import { SYNC_LATENCY_METRIC_NAME, SYNC_METRIC_NAMESPACE, _setSyncCloudWatchClient, createSyncLatencyMetricPublisher, publishSyncLatencyMetric, } from "./metrics.js";
|
|
23
23
|
import { createLogger } from "./logger.js";
|
|
24
24
|
import { encodePushEvent } from "./push-event.js";
|
|
25
25
|
import { SqsPushReceiver, } from "./push-receiver.js";
|
|
@@ -188,6 +188,79 @@ describe("publishSyncLatencyMetric", () => {
|
|
|
188
188
|
expect(cwMock.commandCalls(PutMetricDataCommand)).toHaveLength(0);
|
|
189
189
|
overrideMock.restore();
|
|
190
190
|
});
|
|
191
|
+
it("F18: rejects ambient CloudWatch clients without scoped credentials and region", async () => {
|
|
192
|
+
const constructedWith = [];
|
|
193
|
+
const send = vi.fn(async () => ({}));
|
|
194
|
+
class CapturingCloudWatchClient {
|
|
195
|
+
send = send;
|
|
196
|
+
constructor(config) {
|
|
197
|
+
constructedWith.push(config);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
class CapturingPutMetricDataCommand {
|
|
201
|
+
input;
|
|
202
|
+
constructor(input) {
|
|
203
|
+
this.input = input;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
vi.resetModules();
|
|
207
|
+
vi.doMock("@aws-sdk/client-cloudwatch", () => ({
|
|
208
|
+
CloudWatchClient: CapturingCloudWatchClient,
|
|
209
|
+
PutMetricDataCommand: CapturingPutMetricDataCommand,
|
|
210
|
+
}));
|
|
211
|
+
try {
|
|
212
|
+
const metrics = await import("./metrics.js");
|
|
213
|
+
await metrics.publishSyncLatencyMetric(makeMetric());
|
|
214
|
+
expect(constructedWith).not.toContainEqual({});
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
vi.doUnmock("@aws-sdk/client-cloudwatch");
|
|
218
|
+
vi.resetModules();
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
it("R-F18: creates a metric publisher from explicit vended CloudWatch credentials", async () => {
|
|
222
|
+
const constructedWith = [];
|
|
223
|
+
const sent = [];
|
|
224
|
+
const publisher = createSyncLatencyMetricPublisher({
|
|
225
|
+
region: "us-west-2",
|
|
226
|
+
credentials: {
|
|
227
|
+
accessKeyId: "AKIA-VENDED",
|
|
228
|
+
secretAccessKey: "secret-vended",
|
|
229
|
+
sessionToken: "token-vended",
|
|
230
|
+
expiration: "2026-06-20T12:00:00.000Z",
|
|
231
|
+
},
|
|
232
|
+
buildClient: (config) => {
|
|
233
|
+
constructedWith.push(config);
|
|
234
|
+
return {
|
|
235
|
+
send: async (command) => {
|
|
236
|
+
sent.push(command.input);
|
|
237
|
+
return {};
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
await publisher(makeMetric({ tenantId: "prs_vended" }));
|
|
243
|
+
expect(constructedWith).toHaveLength(1);
|
|
244
|
+
expect(constructedWith[0]).toMatchObject({
|
|
245
|
+
region: "us-west-2",
|
|
246
|
+
credentials: {
|
|
247
|
+
accessKeyId: "AKIA-VENDED",
|
|
248
|
+
secretAccessKey: "secret-vended",
|
|
249
|
+
sessionToken: "token-vended",
|
|
250
|
+
expiration: new Date("2026-06-20T12:00:00.000Z"),
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
expect(sent).toHaveLength(1);
|
|
254
|
+
expect(sent[0]).toMatchObject({
|
|
255
|
+
Namespace: SYNC_METRIC_NAMESPACE,
|
|
256
|
+
MetricData: [
|
|
257
|
+
{
|
|
258
|
+
MetricName: SYNC_LATENCY_METRIC_NAME,
|
|
259
|
+
Dimensions: [{ Name: "TenantId", Value: "prs_vended" }],
|
|
260
|
+
},
|
|
261
|
+
],
|
|
262
|
+
});
|
|
263
|
+
});
|
|
191
264
|
});
|
|
192
265
|
// ── Receive-success-path metric emission (US-011 AC: "metric emission unit-
|
|
193
266
|
// tested on the receive success path") ──────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.test.js","sourceRoot":"","sources":["../../src/sync/metrics.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metrics.test.js","sourceRoot":"","sources":["../../src/sync/metrics.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-scope.d.ts","sourceRoot":"","sources":["../../src/sync/pull-scope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pull-scope.d.ts","sourceRoot":"","sources":["../../src/sync/pull-scope.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB,IAAI,OAAO,CAC1B,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CACpE,CAAC;IACF,uBAAuB,CAAC,EAAE,CACxB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACzE;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAGlB,IAAI,EAAE,MAAM,EAGZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC,CA2GpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAczE"}
|
package/dist/sync/pull-scope.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import * as fs from "fs";
|
|
23
23
|
import * as path from "path";
|
|
24
|
-
import { coalescePrefixes,
|
|
24
|
+
import { coalescePrefixes, grantPathToScopePrefix, pathToScopePrefix, } from "../prefix-coalesce.js";
|
|
25
25
|
/**
|
|
26
26
|
* Resolve the effective download scope for a company target.
|
|
27
27
|
*
|
|
@@ -101,15 +101,19 @@ hqRoot) {
|
|
|
101
101
|
// it pulls everything anyway.
|
|
102
102
|
const pinPrefixes = hqRoot ? readPinnedPrefixes(hqRoot, slug) : [];
|
|
103
103
|
if (cfg.syncMode === "custom") {
|
|
104
|
-
const customPrefixes = (cfg.customPaths ?? []).map((p) =>
|
|
104
|
+
const customPrefixes = (cfg.customPaths ?? []).map((p) => grantPathToScopePrefix(p, slug));
|
|
105
105
|
// A bare-everything entry ("" — e.g. a `*` path) collapses under
|
|
106
106
|
// `coalescePrefixes` (which drops empties) to "nothing", which would
|
|
107
107
|
// prune the whole tree. An everything-scope is semantically `all`.
|
|
108
|
-
if (customPrefixes.some((p) => p === ""))
|
|
108
|
+
if (customPrefixes.some((p) => p.prefix === "")) {
|
|
109
109
|
return { syncMode: "all" };
|
|
110
|
+
}
|
|
110
111
|
return {
|
|
111
112
|
syncMode: "custom",
|
|
112
|
-
prefixSet: coalescePrefixes([
|
|
113
|
+
prefixSet: coalescePrefixes([
|
|
114
|
+
...customPrefixes,
|
|
115
|
+
...pinPrefixes.map(pathToScopePrefix),
|
|
116
|
+
]),
|
|
113
117
|
};
|
|
114
118
|
}
|
|
115
119
|
// shared: scope to the caller's explicit grants. Real grant paths are
|
|
@@ -127,15 +131,19 @@ hqRoot) {
|
|
|
127
131
|
if (!client.listMyExplicitGrants)
|
|
128
132
|
return { syncMode: "all" };
|
|
129
133
|
const grants = await client.listMyExplicitGrants(companyUid);
|
|
130
|
-
const sharedPrefixes = grants.map((g) =>
|
|
134
|
+
const sharedPrefixes = grants.map((g) => grantPathToScopePrefix(g.path, slug));
|
|
131
135
|
// A wildcard grant (`*`) normalizes to "" = everything. Since
|
|
132
136
|
// `coalescePrefixes` drops empties (collapsing "everything" to "nothing"),
|
|
133
137
|
// treat any such grant as full-access `all` rather than risk pruning.
|
|
134
|
-
if (sharedPrefixes.some((p) => p === ""))
|
|
138
|
+
if (sharedPrefixes.some((p) => p.prefix === "")) {
|
|
135
139
|
return { syncMode: "all" };
|
|
140
|
+
}
|
|
136
141
|
return {
|
|
137
142
|
syncMode: "shared",
|
|
138
|
-
prefixSet: coalescePrefixes([
|
|
143
|
+
prefixSet: coalescePrefixes([
|
|
144
|
+
...sharedPrefixes,
|
|
145
|
+
...pinPrefixes.map(pathToScopePrefix),
|
|
146
|
+
]),
|
|
139
147
|
};
|
|
140
148
|
}
|
|
141
149
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-scope.js","sourceRoot":"","sources":["../../src/sync/pull-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"pull-scope.js","sourceRoot":"","sources":["../../src/sync/pull-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,8 @@ export declare const DEFAULT_MAX_MESSAGES = 10;
|
|
|
111
111
|
/** Reconnect backoff defaults. */
|
|
112
112
|
export declare const DEFAULT_RECONNECT_INITIAL_MS = 250;
|
|
113
113
|
export declare const DEFAULT_RECONNECT_MAX_MS = 30000;
|
|
114
|
+
/** Maximum distinct paths retained in receiver dedupe state. */
|
|
115
|
+
export declare const DEFAULT_RECEIVER_DEDUPE_MAX_PATHS = 50000;
|
|
114
116
|
/**
|
|
115
117
|
* One SQS message as the receiver consumes it. A structural subset of the AWS
|
|
116
118
|
* SDK `Message` so a real `SQSClient` response satisfies it without adaptation
|
|
@@ -171,8 +173,8 @@ export interface PushReceiverContext {
|
|
|
171
173
|
* company/path; in tests it's a fake recording invocations.
|
|
172
174
|
*
|
|
173
175
|
* Errors from `syncFn` are CAUGHT by the receiver — they log and the loop
|
|
174
|
-
* continues. A
|
|
175
|
-
*
|
|
176
|
+
* continues. A failed sync is left unacknowledged in SQS so the queue can
|
|
177
|
+
* redeliver it after the visibility timeout.
|
|
176
178
|
*/
|
|
177
179
|
export type SyncEngineFn = (ctx: PushReceiverContext) => Promise<void>;
|
|
178
180
|
/**
|
|
@@ -255,6 +257,8 @@ export interface SqsPushReceiverOptions {
|
|
|
255
257
|
maxMessages?: number;
|
|
256
258
|
/** Max time `dispose()` waits for an in-flight syncFn after abort. */
|
|
257
259
|
disposeDrainMs?: number;
|
|
260
|
+
/** Maximum distinct paths retained in dedupe state. */
|
|
261
|
+
dedupeMaxPaths?: number;
|
|
258
262
|
/** Reconnect backoff config. */
|
|
259
263
|
reconnect?: {
|
|
260
264
|
initialMs?: number;
|
|
@@ -347,9 +351,10 @@ export declare class SqsPushReceiver implements PushReceiver {
|
|
|
347
351
|
*/
|
|
348
352
|
private handleMessage;
|
|
349
353
|
/**
|
|
350
|
-
* Dedupe + invoke `syncFn`. Returns true once the event has been
|
|
351
|
-
* for (deduped, or syncFn
|
|
352
|
-
* Stores the in-flight promise so `dispose()` can drain
|
|
354
|
+
* Dedupe + invoke `syncFn`. Returns true only once the event has been
|
|
355
|
+
* accounted for successfully (deduped, or syncFn completed) so the caller can
|
|
356
|
+
* delete the message. Stores the in-flight promise so `dispose()` can drain
|
|
357
|
+
* it.
|
|
353
358
|
*/
|
|
354
359
|
private dispatch;
|
|
355
360
|
/** Delete a message, swallowing transport errors (redelivery is harmless). */
|
|
@@ -385,6 +390,8 @@ export interface InMemoryPushReceiverOptions {
|
|
|
385
390
|
flagProvider?: EventDrivenPushFlagProvider;
|
|
386
391
|
env?: Record<string, string | undefined>;
|
|
387
392
|
disposeDrainMs?: number;
|
|
393
|
+
/** Maximum distinct paths retained in dedupe state. */
|
|
394
|
+
dedupeMaxPaths?: number;
|
|
388
395
|
}
|
|
389
396
|
/**
|
|
390
397
|
* In-memory receiver paired with {@link InMemoryFanout}. Powers the unit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-receiver.d.ts","sourceRoot":"","sources":["../../src/sync/push-receiver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;AAEH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAItB;;;GAGG;AACH,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAEvD,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,kCAAkC;AAClC,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,wBAAwB,QAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"push-receiver.d.ts","sourceRoot":"","sources":["../../src/sync/push-receiver.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,6 +112,34 @@ export const DEFAULT_MAX_MESSAGES = 10;
|
|
|
112
112
|
/** Reconnect backoff defaults. */
|
|
113
113
|
export const DEFAULT_RECONNECT_INITIAL_MS = 250;
|
|
114
114
|
export const DEFAULT_RECONNECT_MAX_MS = 30_000;
|
|
115
|
+
/** Maximum distinct paths retained in receiver dedupe state. */
|
|
116
|
+
export const DEFAULT_RECEIVER_DEDUPE_MAX_PATHS = 50_000;
|
|
117
|
+
class BoundedSequenceDedupe {
|
|
118
|
+
maxPaths;
|
|
119
|
+
seen = new Map();
|
|
120
|
+
constructor(maxPaths) {
|
|
121
|
+
this.maxPaths = Math.max(1, Math.floor(maxPaths ?? DEFAULT_RECEIVER_DEDUPE_MAX_PATHS));
|
|
122
|
+
}
|
|
123
|
+
get(relativePath) {
|
|
124
|
+
const sequenceNumber = this.seen.get(relativePath);
|
|
125
|
+
if (sequenceNumber === undefined)
|
|
126
|
+
return undefined;
|
|
127
|
+
this.seen.delete(relativePath);
|
|
128
|
+
this.seen.set(relativePath, sequenceNumber);
|
|
129
|
+
return sequenceNumber;
|
|
130
|
+
}
|
|
131
|
+
set(relativePath, sequenceNumber) {
|
|
132
|
+
if (this.seen.has(relativePath))
|
|
133
|
+
this.seen.delete(relativePath);
|
|
134
|
+
this.seen.set(relativePath, sequenceNumber);
|
|
135
|
+
while (this.seen.size > this.maxPaths) {
|
|
136
|
+
const oldest = this.seen.keys().next().value;
|
|
137
|
+
if (oldest === undefined)
|
|
138
|
+
return;
|
|
139
|
+
this.seen.delete(oldest);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
115
143
|
const NOOP_LOGGER = {
|
|
116
144
|
info: () => undefined,
|
|
117
145
|
warn: () => undefined,
|
|
@@ -187,7 +215,7 @@ export class SqsPushReceiver {
|
|
|
187
215
|
inFlightAbort = null;
|
|
188
216
|
inFlightSync = null;
|
|
189
217
|
/** Per-path highest sequence number already PROCESSED by syncFn. */
|
|
190
|
-
seenSequencePerPath
|
|
218
|
+
seenSequencePerPath;
|
|
191
219
|
_processedCount = 0;
|
|
192
220
|
_dedupedCount = 0;
|
|
193
221
|
_decodeFailureCount = 0;
|
|
@@ -214,6 +242,7 @@ export class SqsPushReceiver {
|
|
|
214
242
|
this.maxMessages = opts.maxMessages ?? DEFAULT_MAX_MESSAGES;
|
|
215
243
|
this.disposeDrainMs =
|
|
216
244
|
opts.disposeDrainMs ?? DEFAULT_RECEIVER_DISPOSE_DRAIN_MS;
|
|
245
|
+
this.seenSequencePerPath = new BoundedSequenceDedupe(opts.dedupeMaxPaths);
|
|
217
246
|
this.reconnectInitialMs =
|
|
218
247
|
opts.reconnect?.initialMs ?? DEFAULT_RECONNECT_INITIAL_MS;
|
|
219
248
|
this.reconnectMaxMs = opts.reconnect?.maxMs ?? DEFAULT_RECONNECT_MAX_MS;
|
|
@@ -388,17 +417,17 @@ export class SqsPushReceiver {
|
|
|
388
417
|
}
|
|
389
418
|
const handled = await this.dispatch(validated);
|
|
390
419
|
if (handled) {
|
|
391
|
-
// Delete only after
|
|
392
|
-
//
|
|
393
|
-
//
|
|
394
|
-
// dedupe; the poll/cadence safety net is the recovery path for the throw.
|
|
420
|
+
// Delete only after a successful handoff or dedupe-skip. A syncFn throw
|
|
421
|
+
// leaves the message undeleted so SQS redelivery can retry the targeted
|
|
422
|
+
// pull.
|
|
395
423
|
await this.safeDelete(msg);
|
|
396
424
|
}
|
|
397
425
|
}
|
|
398
426
|
/**
|
|
399
|
-
* Dedupe + invoke `syncFn`. Returns true once the event has been
|
|
400
|
-
* for (deduped, or syncFn
|
|
401
|
-
* Stores the in-flight promise so `dispose()` can drain
|
|
427
|
+
* Dedupe + invoke `syncFn`. Returns true only once the event has been
|
|
428
|
+
* accounted for successfully (deduped, or syncFn completed) so the caller can
|
|
429
|
+
* delete the message. Stores the in-flight promise so `dispose()` can drain
|
|
430
|
+
* it.
|
|
402
431
|
*/
|
|
403
432
|
async dispatch(event) {
|
|
404
433
|
if (this.disposing || this.disposed)
|
|
@@ -415,16 +444,12 @@ export class SqsPushReceiver {
|
|
|
415
444
|
}, "push receiver deduped event");
|
|
416
445
|
return true;
|
|
417
446
|
}
|
|
418
|
-
// Record BEFORE invoking syncFn — a back-to-back event for the same path
|
|
419
|
-
// must see this sequence in its dedupe check. The trade-off: a syncFn that
|
|
420
|
-
// throws still advances the counter ("latest we KNOW about"); the safety
|
|
421
|
-
// net poll is the recovery path for the throw.
|
|
422
|
-
this.seenSequencePerPath.set(event.relativePath, event.sequenceNumber);
|
|
423
447
|
const controller = new AbortController();
|
|
424
448
|
this.inFlightAbort = controller;
|
|
425
449
|
const ctx = { event, signal: controller.signal };
|
|
426
450
|
const holder = { p: null };
|
|
427
451
|
const startMs = this.now();
|
|
452
|
+
let handled = false;
|
|
428
453
|
const p = (async () => {
|
|
429
454
|
try {
|
|
430
455
|
this.logger.debug({
|
|
@@ -434,7 +459,9 @@ export class SqsPushReceiver {
|
|
|
434
459
|
sequenceNumber: event.sequenceNumber,
|
|
435
460
|
}, "push receiver invoking sync engine");
|
|
436
461
|
await this.syncFn(ctx);
|
|
462
|
+
this.seenSequencePerPath.set(event.relativePath, event.sequenceNumber);
|
|
437
463
|
this._processedCount += 1;
|
|
464
|
+
handled = true;
|
|
438
465
|
this.logger.debug({
|
|
439
466
|
event: "receiver.sync.completed",
|
|
440
467
|
tenantId: this.tenantId,
|
|
@@ -475,8 +502,8 @@ export class SqsPushReceiver {
|
|
|
475
502
|
}
|
|
476
503
|
catch (err) {
|
|
477
504
|
// Critical: catch, log, return. A misbehaving sync engine must never
|
|
478
|
-
// crash the receiver loop.
|
|
479
|
-
//
|
|
505
|
+
// crash the receiver loop. Leaving the SQS message undeleted lets
|
|
506
|
+
// redelivery retry the failed targeted pull.
|
|
480
507
|
const e = err;
|
|
481
508
|
this.logger.error({
|
|
482
509
|
event: "receiver.sync.failed",
|
|
@@ -496,7 +523,7 @@ export class SqsPushReceiver {
|
|
|
496
523
|
holder.p = p;
|
|
497
524
|
this.inFlightSync = p;
|
|
498
525
|
await p;
|
|
499
|
-
return
|
|
526
|
+
return handled;
|
|
500
527
|
}
|
|
501
528
|
/** Delete a message, swallowing transport errors (redelivery is harmless). */
|
|
502
529
|
async safeDelete(msg) {
|
|
@@ -583,7 +610,7 @@ export class InMemoryPushReceiver {
|
|
|
583
610
|
unsubscribe = null;
|
|
584
611
|
disconnectedFlag = false;
|
|
585
612
|
pendingDuringDisconnect = [];
|
|
586
|
-
seenSequencePerPath
|
|
613
|
+
seenSequencePerPath;
|
|
587
614
|
inFlightAbort = null;
|
|
588
615
|
inFlightSync = null;
|
|
589
616
|
_processedCount = 0;
|
|
@@ -596,6 +623,7 @@ export class InMemoryPushReceiver {
|
|
|
596
623
|
this.logger = opts.logger ?? NOOP_LOGGER;
|
|
597
624
|
this.disposeDrainMs =
|
|
598
625
|
opts.disposeDrainMs ?? DEFAULT_RECEIVER_DISPOSE_DRAIN_MS;
|
|
626
|
+
this.seenSequencePerPath = new BoundedSequenceDedupe(opts.dedupeMaxPaths);
|
|
599
627
|
this.enabled = resolveEnabled({
|
|
600
628
|
explicit: opts.enabled,
|
|
601
629
|
flagProvider: opts.flagProvider,
|