@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
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import { VaultClient } from "../index.js";
|
|
3
|
+
import { pickCanonicalPersonEntity } from "../vault-client.js";
|
|
4
|
+
import { acquireOperationLock, withOperationLock, OperationLockedError, OPERATION_LOCKED_EXIT, } from "../operation-lock.js";
|
|
5
|
+
import { describeError } from "../lib/describe-error.js";
|
|
6
|
+
import { getOrCreateMachineId } from "../lib/machine-id.js";
|
|
7
|
+
import { TreeWatcher, WatchPushDriver, systemClock, } from "../watcher.js";
|
|
8
|
+
import { NoopPushReceiver, } from "../sync/push-receiver.js";
|
|
9
|
+
import { resolveEventSync, startEventSync as defaultStartEventSync, } from "../sync/event-sync.js";
|
|
10
|
+
import { buildFullFanoutPushArgv, buildTargetedPullArgv, buildTargetedPushArgv, routeChangeToTarget, routesForBatch, } from "./sync-runner-watch-routes.js";
|
|
11
|
+
export async function runOneShotWithOperationLock(argv, parsed, deps, runtime) {
|
|
12
|
+
const runOnce = deps.runPass ?? runtime.runPassWithOperationLockAlreadyHeld;
|
|
13
|
+
try {
|
|
14
|
+
return await withOperationLock(parsed.hqRoot, "sync", () => runOnce(argv), {
|
|
15
|
+
timeoutSec: parsed.lockTimeoutSec,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (err instanceof OperationLockedError) {
|
|
20
|
+
process.stderr.write(err.message + "\n");
|
|
21
|
+
return OPERATION_LOCKED_EXIT;
|
|
22
|
+
}
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function runWatchLoop(argv, parsed, deps, runtime) {
|
|
27
|
+
const sleep = deps.sleep ??
|
|
28
|
+
((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
29
|
+
const runPass = deps.runPass ?? runtime.runPassWithOperationLockAlreadyHeld;
|
|
30
|
+
const pollIdx = argv.indexOf("--poll-remote-ms");
|
|
31
|
+
const pollMs = pollIdx >= 0 && argv[pollIdx + 1] ? Number(argv[pollIdx + 1]) : 600_000;
|
|
32
|
+
const eventPush = argv.includes("--event-push");
|
|
33
|
+
const companiesMode = argv.includes("--companies");
|
|
34
|
+
const hqRoot = parsed.hqRoot;
|
|
35
|
+
const passArgv = argv.filter((a, i) => {
|
|
36
|
+
if (a === "--watch")
|
|
37
|
+
return false;
|
|
38
|
+
if (a === "--poll-remote-ms")
|
|
39
|
+
return false;
|
|
40
|
+
if (a === "--event-push")
|
|
41
|
+
return false;
|
|
42
|
+
if (i > 0 && argv[i - 1] === "--poll-remote-ms")
|
|
43
|
+
return false;
|
|
44
|
+
return true;
|
|
45
|
+
});
|
|
46
|
+
if (parsed.lockTimeoutSec === 0) {
|
|
47
|
+
try {
|
|
48
|
+
const handle = acquireOperationLock(hqRoot, "sync", {
|
|
49
|
+
timeoutSec: 0,
|
|
50
|
+
onWaitStart: () => undefined,
|
|
51
|
+
});
|
|
52
|
+
handle.release();
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
if (err instanceof OperationLockedError) {
|
|
56
|
+
process.stderr.write(err.message + "\n");
|
|
57
|
+
return OPERATION_LOCKED_EXIT;
|
|
58
|
+
}
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const runPassWithLock = async (passArgvForRun) => {
|
|
63
|
+
try {
|
|
64
|
+
const handle = acquireOperationLock(hqRoot, "sync", {
|
|
65
|
+
timeoutSec: 0,
|
|
66
|
+
onWaitStart: () => undefined,
|
|
67
|
+
});
|
|
68
|
+
try {
|
|
69
|
+
return await runPass(passArgvForRun);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
handle.release();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (!(err instanceof OperationLockedError))
|
|
77
|
+
throw err;
|
|
78
|
+
if (parsed.lockTimeoutSec === 0) {
|
|
79
|
+
process.stderr.write(err.message + "\n");
|
|
80
|
+
return OPERATION_LOCKED_EXIT;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
return await withOperationLock(hqRoot, "sync", () => runPass(passArgvForRun), { timeoutSec: parsed.lockTimeoutSec });
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
if (err instanceof OperationLockedError) {
|
|
88
|
+
process.stderr.write(err.message + "\n");
|
|
89
|
+
return OPERATION_LOCKED_EXIT;
|
|
90
|
+
}
|
|
91
|
+
throw err;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
let stopped = false;
|
|
95
|
+
let activePass = null;
|
|
96
|
+
const pendingPasses = [];
|
|
97
|
+
const resolveStoppedQueue = () => {
|
|
98
|
+
while (pendingPasses.length > 0) {
|
|
99
|
+
pendingPasses.shift()?.resolve(0);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const drainQueuedPasses = () => {
|
|
103
|
+
if (activePass !== null)
|
|
104
|
+
return;
|
|
105
|
+
if (stopped) {
|
|
106
|
+
resolveStoppedQueue();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const next = pendingPasses.shift();
|
|
110
|
+
if (!next)
|
|
111
|
+
return;
|
|
112
|
+
const current = startGuardedPass(next.argv);
|
|
113
|
+
void current.then(next.resolve, next.reject);
|
|
114
|
+
};
|
|
115
|
+
const startGuardedPass = (passArgvForRun) => {
|
|
116
|
+
const current = stopped
|
|
117
|
+
? Promise.resolve(0)
|
|
118
|
+
: runPassWithLock(passArgvForRun);
|
|
119
|
+
activePass = current;
|
|
120
|
+
void current
|
|
121
|
+
.finally(() => {
|
|
122
|
+
if (activePass === current) {
|
|
123
|
+
activePass = null;
|
|
124
|
+
drainQueuedPasses();
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
.catch(() => undefined);
|
|
128
|
+
return current;
|
|
129
|
+
};
|
|
130
|
+
const runGuarded = (passArgvForRun) => {
|
|
131
|
+
if (activePass === null && pendingPasses.length === 0) {
|
|
132
|
+
return startGuardedPass(passArgvForRun);
|
|
133
|
+
}
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
pendingPasses.push({ argv: passArgvForRun, resolve, reject });
|
|
136
|
+
drainQueuedPasses();
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
let watcher = null;
|
|
140
|
+
let driver = null;
|
|
141
|
+
let detachSignal = null;
|
|
142
|
+
const pendingWatcherPaths = new Map();
|
|
143
|
+
let pendingWatcherOriginalBatch = null;
|
|
144
|
+
let pendingWatcherBareChange = false;
|
|
145
|
+
let pendingWatcherOverflowed = false;
|
|
146
|
+
let pendingWatcherDroppedPaths = 0;
|
|
147
|
+
let pendingWatcherDroppedBytes = 0;
|
|
148
|
+
const addPendingWatcherChange = (changedRelPath, batch) => {
|
|
149
|
+
if (batch) {
|
|
150
|
+
pendingWatcherOriginalBatch =
|
|
151
|
+
pendingWatcherPaths.size === 0 &&
|
|
152
|
+
!pendingWatcherBareChange &&
|
|
153
|
+
!pendingWatcherOverflowed &&
|
|
154
|
+
!batch.overflowed
|
|
155
|
+
? batch
|
|
156
|
+
: null;
|
|
157
|
+
for (const [absolutePath, relativePath] of batch.paths.entries()) {
|
|
158
|
+
pendingWatcherPaths.set(absolutePath, relativePath);
|
|
159
|
+
}
|
|
160
|
+
if (batch.overflowed) {
|
|
161
|
+
pendingWatcherOverflowed = true;
|
|
162
|
+
pendingWatcherDroppedPaths += batch.droppedPaths ?? 0;
|
|
163
|
+
pendingWatcherDroppedBytes += batch.droppedBytes ?? 0;
|
|
164
|
+
}
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (changedRelPath) {
|
|
168
|
+
pendingWatcherOriginalBatch = null;
|
|
169
|
+
pendingWatcherPaths.set(path.join(hqRoot, changedRelPath), changedRelPath);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
pendingWatcherOriginalBatch = null;
|
|
173
|
+
pendingWatcherBareChange = true;
|
|
174
|
+
};
|
|
175
|
+
const takePendingWatcherChange = () => {
|
|
176
|
+
const batch = pendingWatcherOriginalBatch !== null && !pendingWatcherOverflowed
|
|
177
|
+
? pendingWatcherOriginalBatch
|
|
178
|
+
: pendingWatcherPaths.size > 0 || pendingWatcherOverflowed
|
|
179
|
+
? {
|
|
180
|
+
paths: new Map(pendingWatcherPaths),
|
|
181
|
+
...(pendingWatcherOverflowed
|
|
182
|
+
? {
|
|
183
|
+
overflowed: true,
|
|
184
|
+
droppedPaths: pendingWatcherDroppedPaths,
|
|
185
|
+
droppedBytes: pendingWatcherDroppedBytes,
|
|
186
|
+
}
|
|
187
|
+
: {}),
|
|
188
|
+
}
|
|
189
|
+
: null;
|
|
190
|
+
const rel = [...pendingWatcherPaths.values()][0] ?? null;
|
|
191
|
+
const fallbackRel = rel ?? (pendingWatcherBareChange ? null : null);
|
|
192
|
+
pendingWatcherPaths.clear();
|
|
193
|
+
pendingWatcherOriginalBatch = null;
|
|
194
|
+
pendingWatcherBareChange = false;
|
|
195
|
+
pendingWatcherOverflowed = false;
|
|
196
|
+
pendingWatcherDroppedPaths = 0;
|
|
197
|
+
pendingWatcherDroppedBytes = 0;
|
|
198
|
+
return { rel: fallbackRel, batch };
|
|
199
|
+
};
|
|
200
|
+
let receiver = null;
|
|
201
|
+
let eventSync = null;
|
|
202
|
+
if (eventPush) {
|
|
203
|
+
const clock = deps.clock ?? systemClock;
|
|
204
|
+
const debounceMs = 2000;
|
|
205
|
+
const createWatcher = deps.createWatcher ??
|
|
206
|
+
((opts) => new TreeWatcher({
|
|
207
|
+
hqRoot: opts.hqRoot,
|
|
208
|
+
debounceMs: opts.debounceMs,
|
|
209
|
+
clock: opts.clock,
|
|
210
|
+
personalMode: !companiesMode,
|
|
211
|
+
}));
|
|
212
|
+
watcher = createWatcher({ hqRoot, debounceMs, clock });
|
|
213
|
+
driver = new WatchPushDriver({
|
|
214
|
+
debounceMs: 0,
|
|
215
|
+
clock,
|
|
216
|
+
push: async () => {
|
|
217
|
+
if (stopped)
|
|
218
|
+
return;
|
|
219
|
+
const { rel, batch: batchForPublish } = takePendingWatcherChange();
|
|
220
|
+
const batchRoutes = batchForPublish
|
|
221
|
+
? routesForBatch(batchForPublish)
|
|
222
|
+
: new Map();
|
|
223
|
+
let targetedArgv;
|
|
224
|
+
if (batchForPublish?.overflowed || batchRoutes.size > 1) {
|
|
225
|
+
targetedArgv = buildFullFanoutPushArgv(passArgv);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
const route = batchRoutes.size === 1
|
|
229
|
+
? [...batchRoutes.values()][0]
|
|
230
|
+
: rel
|
|
231
|
+
? routeChangeToTarget(rel)
|
|
232
|
+
: { kind: "personal" };
|
|
233
|
+
if (!route)
|
|
234
|
+
return;
|
|
235
|
+
targetedArgv = buildTargetedPushArgv(route, passArgv);
|
|
236
|
+
}
|
|
237
|
+
const result = await runGuarded(targetedArgv);
|
|
238
|
+
if (result === 0 &&
|
|
239
|
+
!stopped &&
|
|
240
|
+
eventSync &&
|
|
241
|
+
!batchForPublish?.overflowed) {
|
|
242
|
+
const batch = batchForPublish ??
|
|
243
|
+
(rel ? { paths: new Map([[path.join(hqRoot, rel), rel]]) } : null);
|
|
244
|
+
if (batch)
|
|
245
|
+
eventSync.publishBatch(batch);
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
watcher.onChange((changedRelPath, batch) => {
|
|
250
|
+
if (stopped)
|
|
251
|
+
return;
|
|
252
|
+
addPendingWatcherChange(changedRelPath, batch);
|
|
253
|
+
driver?.notifyChange();
|
|
254
|
+
});
|
|
255
|
+
watcher.start();
|
|
256
|
+
const receiverSyncFn = async (ctx) => {
|
|
257
|
+
if (stopped)
|
|
258
|
+
return;
|
|
259
|
+
const route = routeChangeToTarget(ctx.event.relativePath);
|
|
260
|
+
if (!route)
|
|
261
|
+
return;
|
|
262
|
+
const targetedArgv = buildTargetedPullArgv(route, passArgv);
|
|
263
|
+
const result = await runGuarded(targetedArgv);
|
|
264
|
+
if (result !== 0) {
|
|
265
|
+
throw new Error(`targeted pull failed with exit code ${result}`);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
const createReceiver = deps.createReceiver ?? (() => new NoopPushReceiver());
|
|
269
|
+
receiver = createReceiver({ syncFn: receiverSyncFn, hqRoot });
|
|
270
|
+
void Promise.resolve(receiver.start()).catch(() => undefined);
|
|
271
|
+
const getClaims = deps.getIdTokenClaims ?? runtime.defaultGetIdTokenClaims;
|
|
272
|
+
const email = getClaims()?.email;
|
|
273
|
+
if (resolveEventSync(email, process.env.HQ_SYNC_EVENT_SYNC)) {
|
|
274
|
+
const getAccessToken = deps.getAccessToken ?? runtime.defaultGetAccessToken;
|
|
275
|
+
const startES = deps.startEventSync ?? defaultStartEventSync;
|
|
276
|
+
void (async () => {
|
|
277
|
+
const handles = await startES({
|
|
278
|
+
hqRoot,
|
|
279
|
+
apiUrl: runtime.apiUrl,
|
|
280
|
+
authToken: getAccessToken,
|
|
281
|
+
deviceId: getOrCreateMachineId(hqRoot),
|
|
282
|
+
resolveTenantId: async () => {
|
|
283
|
+
const client = new VaultClient({
|
|
284
|
+
apiUrl: runtime.apiUrl,
|
|
285
|
+
authToken: getAccessToken,
|
|
286
|
+
region: runtime.region,
|
|
287
|
+
});
|
|
288
|
+
const persons = await client.entity.listByType("person");
|
|
289
|
+
const pick = pickCanonicalPersonEntity(persons);
|
|
290
|
+
if (!pick?.uid) {
|
|
291
|
+
throw new Error("no canonical person entity for this account");
|
|
292
|
+
}
|
|
293
|
+
return pick.uid;
|
|
294
|
+
},
|
|
295
|
+
syncFn: receiverSyncFn,
|
|
296
|
+
log: (m) => process.stderr.write(`${m}\n`),
|
|
297
|
+
});
|
|
298
|
+
if (!handles)
|
|
299
|
+
return;
|
|
300
|
+
if (stopped) {
|
|
301
|
+
void handles.dispose();
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
eventSync = handles;
|
|
305
|
+
})().catch((err) => {
|
|
306
|
+
process.stderr.write(`event-sync: wiring failed, continuing poll-only: ${describeError(err)}\n`);
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
let resolveStopped = null;
|
|
311
|
+
const stoppedSignal = new Promise((resolve) => {
|
|
312
|
+
resolveStopped = resolve;
|
|
313
|
+
});
|
|
314
|
+
const shutdown = () => {
|
|
315
|
+
if (stopped)
|
|
316
|
+
return;
|
|
317
|
+
stopped = true;
|
|
318
|
+
resolveStoppedQueue();
|
|
319
|
+
try {
|
|
320
|
+
void receiver?.dispose();
|
|
321
|
+
}
|
|
322
|
+
catch {
|
|
323
|
+
/* ignore */
|
|
324
|
+
}
|
|
325
|
+
try {
|
|
326
|
+
void eventSync?.dispose();
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
/* ignore */
|
|
330
|
+
}
|
|
331
|
+
eventSync = null;
|
|
332
|
+
try {
|
|
333
|
+
driver?.dispose();
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
/* ignore */
|
|
337
|
+
}
|
|
338
|
+
try {
|
|
339
|
+
watcher?.dispose();
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
/* ignore */
|
|
343
|
+
}
|
|
344
|
+
resolveStopped?.();
|
|
345
|
+
};
|
|
346
|
+
const onShutdownSignal = deps.onShutdownSignal ??
|
|
347
|
+
((handler) => {
|
|
348
|
+
const wrapped = () => handler();
|
|
349
|
+
process.on("SIGTERM", wrapped);
|
|
350
|
+
process.on("SIGINT", wrapped);
|
|
351
|
+
return () => {
|
|
352
|
+
process.off("SIGTERM", wrapped);
|
|
353
|
+
process.off("SIGINT", wrapped);
|
|
354
|
+
};
|
|
355
|
+
});
|
|
356
|
+
detachSignal = onShutdownSignal(shutdown);
|
|
357
|
+
try {
|
|
358
|
+
while (!stopped) {
|
|
359
|
+
const result = await runGuarded(passArgv);
|
|
360
|
+
if (result !== 0) {
|
|
361
|
+
return result;
|
|
362
|
+
}
|
|
363
|
+
await Promise.race([sleep(pollMs), stoppedSignal]);
|
|
364
|
+
}
|
|
365
|
+
return 0;
|
|
366
|
+
}
|
|
367
|
+
finally {
|
|
368
|
+
shutdown();
|
|
369
|
+
detachSignal?.();
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=sync-runner-watch-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-runner-watch-loop.js","sourceRoot":"","sources":["../../src/bin/sync-runner-watch-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TreeChangeBatch } from "../watcher.js";
|
|
2
|
+
export type WatchRoute = {
|
|
3
|
+
kind: "company";
|
|
4
|
+
slug: string;
|
|
5
|
+
} | {
|
|
6
|
+
kind: "personal";
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Route a changed relative path to the push target that owns it.
|
|
10
|
+
*
|
|
11
|
+
* - `companies/<slug>/...` -> a single-company route for `<slug>`.
|
|
12
|
+
* - anything else under hqRoot -> the personal route.
|
|
13
|
+
*/
|
|
14
|
+
export declare function routeChangeToTarget(relPath: string): WatchRoute | null;
|
|
15
|
+
/**
|
|
16
|
+
* Build the argv for a targeted push pass from a routed change.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildTargetedPushArgv(route: WatchRoute, baseArgv: string[]): string[];
|
|
19
|
+
export declare function buildFullFanoutPushArgv(baseArgv: string[]): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Build the argv for a targeted pull pass from a routed change.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildTargetedPullArgv(route: WatchRoute, baseArgv: string[]): string[];
|
|
24
|
+
export declare function routesForBatch(batch: TreeChangeBatch): Map<string, WatchRoute>;
|
|
25
|
+
//# sourceMappingURL=sync-runner-watch-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-runner-watch-routes.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner-watch-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAUtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,CAMV;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,CAMV;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAQ9E"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
/**
|
|
3
|
+
* Route a changed relative path to the push target that owns it.
|
|
4
|
+
*
|
|
5
|
+
* - `companies/<slug>/...` -> a single-company route for `<slug>`.
|
|
6
|
+
* - anything else under hqRoot -> the personal route.
|
|
7
|
+
*/
|
|
8
|
+
export function routeChangeToTarget(relPath) {
|
|
9
|
+
const norm = relPath.split(path.sep).join("/").replace(/^\.\//, "");
|
|
10
|
+
if (norm === "" || norm.startsWith(".."))
|
|
11
|
+
return null;
|
|
12
|
+
const segments = norm.split("/").filter((s) => s.length > 0);
|
|
13
|
+
if (segments.length === 0)
|
|
14
|
+
return null;
|
|
15
|
+
if (segments[0] === "companies") {
|
|
16
|
+
if (segments.length < 2 || segments[1].length === 0)
|
|
17
|
+
return null;
|
|
18
|
+
return { kind: "company", slug: segments[1] };
|
|
19
|
+
}
|
|
20
|
+
return { kind: "personal" };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Build the argv for a targeted push pass from a routed change.
|
|
24
|
+
*/
|
|
25
|
+
export function buildTargetedPushArgv(route, baseArgv) {
|
|
26
|
+
const carried = carriedFlags(baseArgv);
|
|
27
|
+
if (route.kind === "company") {
|
|
28
|
+
return ["--company", route.slug, "--direction", "push", ...carried];
|
|
29
|
+
}
|
|
30
|
+
return ["--companies", "--direction", "push", ...carried];
|
|
31
|
+
}
|
|
32
|
+
export function buildFullFanoutPushArgv(baseArgv) {
|
|
33
|
+
return ["--companies", "--direction", "push", ...carriedFlags(baseArgv)];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build the argv for a targeted pull pass from a routed change.
|
|
37
|
+
*/
|
|
38
|
+
export function buildTargetedPullArgv(route, baseArgv) {
|
|
39
|
+
const carried = carriedFlags(baseArgv);
|
|
40
|
+
if (route.kind === "company") {
|
|
41
|
+
return ["--company", route.slug, "--direction", "pull", ...carried];
|
|
42
|
+
}
|
|
43
|
+
return ["--companies", "--direction", "pull", ...carried];
|
|
44
|
+
}
|
|
45
|
+
function routeKey(route) {
|
|
46
|
+
return route.kind === "company" ? `company:${route.slug}` : "personal";
|
|
47
|
+
}
|
|
48
|
+
export function routesForBatch(batch) {
|
|
49
|
+
const routes = new Map();
|
|
50
|
+
for (const relPath of batch.paths.values()) {
|
|
51
|
+
const route = routeChangeToTarget(relPath);
|
|
52
|
+
if (!route)
|
|
53
|
+
continue;
|
|
54
|
+
routes.set(routeKey(route), route);
|
|
55
|
+
}
|
|
56
|
+
return routes;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Extract the `--hq-root` / `--on-conflict` pair-flags from a base argv so a
|
|
60
|
+
* re-targeted pass inherits the same root and conflict policy.
|
|
61
|
+
*/
|
|
62
|
+
function carriedFlags(baseArgv) {
|
|
63
|
+
const carried = [];
|
|
64
|
+
for (let i = 0; i < baseArgv.length; i++) {
|
|
65
|
+
const a = baseArgv[i];
|
|
66
|
+
if (a === "--hq-root" || a === "--on-conflict") {
|
|
67
|
+
carried.push(a);
|
|
68
|
+
if (baseArgv[i + 1] !== undefined)
|
|
69
|
+
carried.push(baseArgv[++i]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return carried;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=sync-runner-watch-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-runner-watch-routes.js","sourceRoot":"","sources":["../../src/bin/sync-runner-watch-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,9 +61,10 @@ import { PERSONAL_VAULT_EXCLUDED_TOP_LEVEL, computePersonalVaultPaths } from "..
|
|
|
61
61
|
import type { SyncOptions, SyncResult, SyncProgressEvent } from "../cli/sync.js";
|
|
62
62
|
import type { ShareOptions, ShareResult } from "../cli/share.js";
|
|
63
63
|
import { type ObjectIOFactory, type PresignTransportClient } from "../object-io.js";
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
64
|
+
import type { Clock, TreeChangeBatch } from "../watcher.js";
|
|
65
|
+
import type { PushReceiver, SyncEngineFn } from "../sync/push-receiver.js";
|
|
66
66
|
import { type EventSyncHandles, type StartEventSyncOptions } from "../sync/event-sync.js";
|
|
67
|
+
export { buildTargetedPullArgv, buildTargetedPushArgv, routeChangeToTarget, } from "./sync-runner-watch-routes.js";
|
|
67
68
|
/**
|
|
68
69
|
* Sync direction for a run.
|
|
69
70
|
*
|
|
@@ -346,6 +347,8 @@ export interface RunnerDeps {
|
|
|
346
347
|
createVaultClient?: (config: VaultServiceConfig) => VaultClientSurface;
|
|
347
348
|
/** Sync function. Defaults to `cli/sync.sync`. */
|
|
348
349
|
sync?: (options: SyncOptions) => Promise<SyncResult>;
|
|
350
|
+
/** Internal: set when runRunner is invoked under the per-root operation lock. */
|
|
351
|
+
operationLockAlreadyHeld?: boolean;
|
|
349
352
|
/** Share function (push phase). Defaults to `cli/share.share`. */
|
|
350
353
|
share?: (options: ShareOptions) => Promise<ShareResult>;
|
|
351
354
|
/**
|
|
@@ -470,57 +473,5 @@ export interface WatcherSurface {
|
|
|
470
473
|
stop(): void;
|
|
471
474
|
dispose(): void;
|
|
472
475
|
}
|
|
473
|
-
/**
|
|
474
|
-
* Route a changed relative path to the push target that owns it.
|
|
475
|
-
*
|
|
476
|
-
* - `companies/<slug>/...` → a single-company push for `<slug>` (the targeted
|
|
477
|
-
* pass per PRD decision — push only the changed company, not a full
|
|
478
|
-
* `--companies` fanout).
|
|
479
|
-
* - anything else under hqRoot → the personal target (a `--companies` push
|
|
480
|
-
* restricted to personal via the personal-vault scope; modeled here as the
|
|
481
|
-
* "personal" route the caller maps to the right argv).
|
|
482
|
-
*
|
|
483
|
-
* Returns `null` for paths the routing cannot attribute (defensive — the
|
|
484
|
-
* watcher's filter already drops excluded top-levels, so this is belt-and-
|
|
485
|
-
* suspenders for synthetic events).
|
|
486
|
-
*/
|
|
487
|
-
export declare function routeChangeToTarget(relPath: string): {
|
|
488
|
-
kind: "company";
|
|
489
|
-
slug: string;
|
|
490
|
-
} | {
|
|
491
|
-
kind: "personal";
|
|
492
|
-
} | null;
|
|
493
|
-
/**
|
|
494
|
-
* Build the argv for a targeted push pass from a routed change. The push runs
|
|
495
|
-
* `--direction push` for just the routed target so a local edit propagates in
|
|
496
|
-
* seconds without a full fanout. Company routes use `--company <slug>`;
|
|
497
|
-
* personal routes use `--companies --direction push` (the personal-vault scope
|
|
498
|
-
* is resolved inside runRunner's fanout; skipUnchanged no-ops the company
|
|
499
|
-
* subtrees that didn't change). Inherits `--hq-root` / `--on-conflict` from
|
|
500
|
-
* the base argv. Pure helper, exported for unit testing the routing→argv map.
|
|
501
|
-
*/
|
|
502
|
-
export declare function buildTargetedPushArgv(route: {
|
|
503
|
-
kind: "company";
|
|
504
|
-
slug: string;
|
|
505
|
-
} | {
|
|
506
|
-
kind: "personal";
|
|
507
|
-
}, baseArgv: string[]): string[];
|
|
508
|
-
/**
|
|
509
|
-
* Build the argv for a targeted PULL pass from a routed change (US-009 — the
|
|
510
|
-
* receiver's pull-on-event path). Mirrors {@link buildTargetedPushArgv} but
|
|
511
|
-
* with `--direction pull`: a peer device pushed a change, so this device pulls
|
|
512
|
-
* just the affected company/subtree instead of waiting for the next
|
|
513
|
-
* `--poll-remote-ms` cycle. Company routes use `--company <slug>`; personal
|
|
514
|
-
* routes use `--companies` (the personal-vault scope is resolved inside
|
|
515
|
-
* runRunner's fanout; skipUnchanged no-ops the subtrees that didn't change).
|
|
516
|
-
* Inherits `--hq-root` / `--on-conflict` from the base argv. Pure helper,
|
|
517
|
-
* exported for unit testing the event→argv map.
|
|
518
|
-
*/
|
|
519
|
-
export declare function buildTargetedPullArgv(route: {
|
|
520
|
-
kind: "company";
|
|
521
|
-
slug: string;
|
|
522
|
-
} | {
|
|
523
|
-
kind: "personal";
|
|
524
|
-
}, baseArgv: string[]): string[];
|
|
525
476
|
export declare function runRunnerWithLoop(argv: string[], deps?: RunnerLoopDeps): Promise<number>;
|
|
526
477
|
//# sourceMappingURL=sync-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-runner.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAMH,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-runner.d.ts","sourceRoot":"","sources":["../../src/bin/sync-runner.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAMH,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AAOzB,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAuBjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,YAAY,GAAG,KAAK,CAAC;AAE9E,wBAAgB,mBAAmB,IAAI,uBAAuB,CAM7D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAI1D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACtC,eAAe,GAAG,IAAI,CAQxB;AAMD,OAAO,EAAE,iCAAiC,EAAE,yBAAyB,EAAE,CAAC;AAMxE;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE,GACD,CAAC;IACC;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAC/D,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GACxG,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GACnG,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GACxG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;CAAE,GAC7G;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GACjF,CAAC;IACC,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GAAG,UAAU,CAAC,GACf;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD;;;;;;;;;;OAUG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;OASG;IACH,SAAS,EAAE,KAAK,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;QAC3C,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ,CAAC;AAEN;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,2BAA2B,EAAE,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnE,0BAA0B,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,oBAAoB,EAAE,CAAC,KAAK,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;KACrD,CAAC;IAIF,uBAAuB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClF,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACzE;AAOD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,CAAC;AA0C1B,mEAAmE;AACnE,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IACtD,gEAAgE;IAChE,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IACtD,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IAC9C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,kBAAkB,CAAC;IACvE,kDAAkD;IAClD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,iFAAiF;IACjF,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,kEAAkE;IAClE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AA6QD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,kBAAkB,EAC1B,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsFf;AAMD,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,MAAM,CAAC,CAoQjB;AA4BD;;;;;;;GAOG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC;KACd,KAAK,cAAc,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACvD;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QACtB,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,KAAK,YAAY,CAAC;IACnB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CACf,IAAI,EAAE,qBAAqB,KACxB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IAC9C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CACN,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,eAAe,KAAK,IAAI,GACnE,MAAM,IAAI,CAAC;IACd,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
|