@indigoai-us/hq-cloud 6.18.49-alpha.7 → 6.18.49

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.
Files changed (63) hide show
  1. package/dist/bin/sync-runner-company.d.ts +3 -5
  2. package/dist/bin/sync-runner-company.d.ts.map +1 -1
  3. package/dist/bin/sync-runner-company.js +13 -22
  4. package/dist/bin/sync-runner-company.js.map +1 -1
  5. package/dist/bin/sync-runner-watch-loop.d.ts +2 -12
  6. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  7. package/dist/bin/sync-runner-watch-loop.js +112 -675
  8. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  9. package/dist/bin/sync-runner.d.ts +5 -27
  10. package/dist/bin/sync-runner.d.ts.map +1 -1
  11. package/dist/bin/sync-runner.js +15 -133
  12. package/dist/bin/sync-runner.js.map +1 -1
  13. package/dist/cli/rescue-core.d.ts +6 -1
  14. package/dist/cli/rescue-core.d.ts.map +1 -1
  15. package/dist/cli/rescue-core.js +217 -31
  16. package/dist/cli/rescue-core.js.map +1 -1
  17. package/dist/cli/share.d.ts +0 -12
  18. package/dist/cli/share.d.ts.map +1 -1
  19. package/dist/cli/share.js +4 -57
  20. package/dist/cli/share.js.map +1 -1
  21. package/dist/lib/cloud-authoritative.d.ts +2 -9
  22. package/dist/lib/cloud-authoritative.d.ts.map +1 -1
  23. package/dist/lib/cloud-authoritative.js +2 -34
  24. package/dist/lib/cloud-authoritative.js.map +1 -1
  25. package/dist/outposts/session-host-command.d.ts +13 -0
  26. package/dist/outposts/session-host-command.d.ts.map +1 -1
  27. package/dist/outposts/session-host-command.js +34 -17
  28. package/dist/outposts/session-host-command.js.map +1 -1
  29. package/dist/outposts/session-host-connection.d.ts +2 -0
  30. package/dist/outposts/session-host-connection.d.ts.map +1 -1
  31. package/dist/outposts/session-host-connection.js +15 -0
  32. package/dist/outposts/session-host-connection.js.map +1 -1
  33. package/dist/outposts/session-host-server.d.ts +4 -0
  34. package/dist/outposts/session-host-server.d.ts.map +1 -1
  35. package/dist/outposts/session-host-server.js +42 -0
  36. package/dist/outposts/session-host-server.js.map +1 -1
  37. package/dist/session-log-capture.d.ts.map +1 -1
  38. package/dist/session-log-capture.js +140 -0
  39. package/dist/session-log-capture.js.map +1 -1
  40. package/dist/symlink-target-policy.d.ts +0 -11
  41. package/dist/symlink-target-policy.d.ts.map +1 -1
  42. package/dist/symlink-target-policy.js +0 -80
  43. package/dist/symlink-target-policy.js.map +1 -1
  44. package/dist/sync/event-sync.d.ts.map +1 -1
  45. package/dist/sync/event-sync.js +12 -0
  46. package/dist/sync/event-sync.js.map +1 -1
  47. package/dist/sync/parallel-sync-coordinator.d.ts +0 -4
  48. package/dist/sync/parallel-sync-coordinator.d.ts.map +1 -1
  49. package/dist/sync/parallel-sync-coordinator.js +14 -155
  50. package/dist/sync/parallel-sync-coordinator.js.map +1 -1
  51. package/dist/sync/push-receiver.d.ts +20 -6
  52. package/dist/sync/push-receiver.d.ts.map +1 -1
  53. package/dist/sync/push-receiver.js +160 -34
  54. package/dist/sync/push-receiver.js.map +1 -1
  55. package/dist/watcher.d.ts +3 -3
  56. package/dist/watcher.d.ts.map +1 -1
  57. package/dist/watcher.js +7 -15
  58. package/dist/watcher.js.map +1 -1
  59. package/package.json +2 -1
  60. package/dist/bin/watcher-catchup-skip-store.d.ts +0 -59
  61. package/dist/bin/watcher-catchup-skip-store.d.ts.map +0 -1
  62. package/dist/bin/watcher-catchup-skip-store.js +0 -278
  63. package/dist/bin/watcher-catchup-skip-store.js.map +0 -1
@@ -1,59 +0,0 @@
1
- export type WatcherCatchupSkipReason = "archived-session-log" | "access-denied";
2
- export type WatcherCatchupSkipRecord = {
3
- company: string;
4
- path: string;
5
- reason: WatcherCatchupSkipReason;
6
- size: number;
7
- mtimeMs: number;
8
- recordedAt: number;
9
- grantVersion?: string;
10
- };
11
- export declare const WATCHER_CATCHUP_SKIP_MAX_RECORDS = 50000;
12
- export declare const WATCHER_CATCHUP_ACCESS_DENIED_TTL_MS: number;
13
- export declare const WATCHER_CATCHUP_REMOTE_SKIP_TTL_MS: number;
14
- export declare const WATCHER_CATCHUP_UNRESOLVED_COMPANY_TTL_MS: number;
15
- export declare function watcherCatchupSkipStorePath(stateDir: string, hqRoot: string): string;
16
- /** Host-local skip state. The caller reads during warm-up and commits while holding the sync operation lock. */
17
- export declare class WatcherCatchupSkipStore {
18
- private readonly filePath;
19
- private readonly warn;
20
- private readonly now;
21
- private readonly maxRecords;
22
- private readonly warned;
23
- private loaded;
24
- private unresolvedCompanies;
25
- private indexed;
26
- private capEvicted;
27
- private needsPersist;
28
- private readonly currentGrantVersions;
29
- private currentGrantCompanies;
30
- private readonly currentOntologyPush;
31
- constructor(filePath: string, warn?: (message: string) => void, now?: () => number, maxRecords?: number);
32
- read(): WatcherCatchupSkipRecord[];
33
- matches(company: string, relativePath: string, stat: {
34
- size: number;
35
- mtimeMs: number;
36
- }, options?: {
37
- grantVersion?: string;
38
- }): boolean;
39
- setCurrentGrantVersion(company: string, grantVersion: string): void;
40
- setCurrentGrantCompanies(companies: Iterable<string>): void;
41
- hasCurrentGrantVersion(company: string): boolean;
42
- hasCurrentGrantCompany(company: string): boolean;
43
- recordUnresolvedCompany(company: string): void;
44
- clearUnresolvedCompany(company: string): void;
45
- hasFreshUnresolvedCompany(company: string): boolean;
46
- clearResolvedGrantCompanies(): void;
47
- setCurrentOntologyPush(company: string, enabled: boolean): void;
48
- allowsOntologyEntityPush(company: string): boolean;
49
- takeCapEvictedCount(): number;
50
- commit(records: readonly WatcherCatchupSkipRecord[]): void;
51
- pruneMissing(isPresent: (record: WatcherCatchupSkipRecord) => boolean): void;
52
- private write;
53
- private retainWithinCap;
54
- private persistCurrentRecords;
55
- private retainUnresolvedCompaniesWithinCap;
56
- private rebuildIndex;
57
- private warnOnce;
58
- }
59
- //# sourceMappingURL=watcher-catchup-skip-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watcher-catchup-skip-store.d.ts","sourceRoot":"","sources":["../../src/bin/watcher-catchup-skip-store.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,wBAAwB,GAAG,sBAAsB,GAAG,eAAe,CAAC;AAEhF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,wBAAwB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAeF,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,oCAAoC,QAAuB,CAAC;AAGzE,eAAO,MAAM,kCAAkC,QAA2B,CAAC;AAC3E,eAAO,MAAM,yCAAyC,QAAuB,CAAC;AAE9E,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGpF;AAiBD,gHAAgH;AAChH,qBAAa,uBAAuB;IAYhC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAd7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,mBAAmB,CAA4D;IACvF,OAAO,CAAC,OAAO,CAA4D;IAC3E,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8B;gBAG/C,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAwD,EACnF,GAAG,GAAE,MAAM,MAAiB,EAC5B,UAAU,SAAmC;IAGhE,IAAI,IAAI,wBAAwB,EAAE;IAqClC,OAAO,CACL,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EACvC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GACtC,OAAO;IAwBV,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAInE,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAK3D,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIhD,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAc9C,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7C,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMnD,2BAA2B,IAAI,IAAI;IASnC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAI/D,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlD,mBAAmB,IAAI,MAAM;IAM7B,MAAM,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAAG,IAAI;IAwB1D,YAAY,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,OAAO,GAAG,IAAI;IAiB5E,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,kCAAkC;IAQ1C,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,QAAQ;CAKjB"}
@@ -1,278 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
- import { createHash, randomUUID } from "node:crypto";
4
- // 50k gives more than 5x headroom over the Mac's measured ~3.5k durable skips.
5
- export const WATCHER_CATCHUP_SKIP_MAX_RECORDS = 50_000;
6
- export const WATCHER_CATCHUP_ACCESS_DENIED_TTL_MS = 24 * 60 * 60 * 1_000;
7
- // Archived decisions recur until local bytes change; a weekly retry bounds
8
- // stale remote-state suppression without charging every boot.
9
- export const WATCHER_CATCHUP_REMOTE_SKIP_TTL_MS = 7 * 24 * 60 * 60 * 1_000;
10
- export const WATCHER_CATCHUP_UNRESOLVED_COMPANY_TTL_MS = 24 * 60 * 60 * 1_000;
11
- export function watcherCatchupSkipStorePath(stateDir, hqRoot) {
12
- const rootId = createHash("sha256").update(path.resolve(hqRoot)).digest("hex").slice(0, 20);
13
- return path.join(stateDir, `watcher-catchup-skips-${rootId}.json`);
14
- }
15
- const recordKey = (record) => `${record.company}\u0000${record.path}`;
16
- function validRecord(value) {
17
- if (typeof value !== "object" || value === null)
18
- return false;
19
- const record = value;
20
- return typeof record.company === "string" && record.company.length > 0 &&
21
- typeof record.path === "string" && record.path.length > 0 &&
22
- (record.reason === "archived-session-log" || record.reason === "access-denied") &&
23
- typeof record.size === "number" && Number.isFinite(record.size) &&
24
- typeof record.mtimeMs === "number" && Number.isFinite(record.mtimeMs) &&
25
- typeof record.recordedAt === "number" && Number.isFinite(record.recordedAt) &&
26
- (record.grantVersion === undefined || typeof record.grantVersion === "string");
27
- }
28
- /** Host-local skip state. The caller reads during warm-up and commits while holding the sync operation lock. */
29
- export class WatcherCatchupSkipStore {
30
- filePath;
31
- warn;
32
- now;
33
- maxRecords;
34
- warned = new Set();
35
- loaded = null;
36
- unresolvedCompanies = new Map();
37
- indexed = new Map();
38
- capEvicted = 0;
39
- needsPersist = false;
40
- currentGrantVersions = new Map();
41
- currentGrantCompanies = null;
42
- currentOntologyPush = new Map();
43
- constructor(filePath, warn = (message) => process.stderr.write(`${message}\n`), now = Date.now, maxRecords = WATCHER_CATCHUP_SKIP_MAX_RECORDS) {
44
- this.filePath = filePath;
45
- this.warn = warn;
46
- this.now = now;
47
- this.maxRecords = maxRecords;
48
- }
49
- read() {
50
- if (this.loaded !== null)
51
- return this.loaded;
52
- let decoded;
53
- try {
54
- decoded = JSON.parse(fs.readFileSync(this.filePath, "utf8"));
55
- }
56
- catch (error) {
57
- if (error.code === "ENOENT") {
58
- this.warnOnce("missing", "hq-sync-runner: catch-up skip store missing; failing open");
59
- this.loaded = [];
60
- return this.loaded;
61
- }
62
- this.warnOnce("read", `hq-sync-runner: catch-up skip store unreadable; failing open: ${error instanceof Error ? error.message : String(error)}`);
63
- this.loaded = [];
64
- return this.loaded;
65
- }
66
- if (typeof decoded !== "object" || decoded === null ||
67
- decoded.version !== 1 ||
68
- !Array.isArray(decoded.records) ||
69
- !decoded.records.every(validRecord) ||
70
- (decoded.unresolvedCompanies !== undefined &&
71
- (!Array.isArray(decoded.unresolvedCompanies) ||
72
- !decoded.unresolvedCompanies.every(validUnresolvedCompanyRecord)))) {
73
- this.warnOnce("corrupt", "hq-sync-runner: catch-up skip store corrupt; failing open");
74
- this.loaded = [];
75
- return this.loaded;
76
- }
77
- const records = decoded.records;
78
- this.unresolvedCompanies = new Map((decoded.unresolvedCompanies ?? []).map((record) => [record.company, record]));
79
- this.retainUnresolvedCompaniesWithinCap();
80
- this.retainWithinCap(records);
81
- return this.loaded ?? [];
82
- }
83
- matches(company, relativePath, stat, options = {}) {
84
- this.read();
85
- const record = this.indexed.get(company)?.get(relativePath);
86
- if (!record || record.size !== stat.size || record.mtimeMs !== stat.mtimeMs)
87
- return false;
88
- const now = this.now();
89
- const currentGrantVersion = options.grantVersion ?? this.currentGrantVersions.get(company);
90
- const ttl = record.reason === "access-denied"
91
- ? WATCHER_CATCHUP_ACCESS_DENIED_TTL_MS
92
- : WATCHER_CATCHUP_REMOTE_SKIP_TTL_MS;
93
- if (now - record.recordedAt >= ttl)
94
- return false;
95
- if (record.reason === "access-denied" &&
96
- company !== "personal" &&
97
- this.currentGrantCompanies !== null &&
98
- !this.currentGrantCompanies.has(company))
99
- return false;
100
- if (record.reason === "access-denied" &&
101
- currentGrantVersion !== undefined &&
102
- record.grantVersion !== currentGrantVersion)
103
- return false;
104
- return true;
105
- }
106
- setCurrentGrantVersion(company, grantVersion) {
107
- this.currentGrantVersions.set(company, grantVersion);
108
- }
109
- setCurrentGrantCompanies(companies) {
110
- this.currentGrantCompanies = new Set(companies);
111
- this.currentGrantVersions.clear();
112
- }
113
- hasCurrentGrantVersion(company) {
114
- return this.currentGrantVersions.has(company);
115
- }
116
- hasCurrentGrantCompany(company) {
117
- return this.currentGrantCompanies?.has(company) ?? false;
118
- }
119
- recordUnresolvedCompany(company) {
120
- this.read();
121
- const normalized = company.trim().toLowerCase();
122
- if (!normalized)
123
- return;
124
- this.unresolvedCompanies.delete(normalized);
125
- this.unresolvedCompanies.set(normalized, {
126
- company: normalized,
127
- reason: "unresolved-company",
128
- recordedAt: this.now(),
129
- });
130
- this.retainUnresolvedCompaniesWithinCap();
131
- this.persistCurrentRecords();
132
- }
133
- clearUnresolvedCompany(company) {
134
- this.read();
135
- if (!this.unresolvedCompanies.delete(company.trim().toLowerCase()))
136
- return;
137
- this.persistCurrentRecords();
138
- }
139
- hasFreshUnresolvedCompany(company) {
140
- this.read();
141
- const record = this.unresolvedCompanies.get(company.trim().toLowerCase());
142
- return record !== undefined && this.now() - record.recordedAt < WATCHER_CATCHUP_UNRESOLVED_COMPANY_TTL_MS;
143
- }
144
- clearResolvedGrantCompanies() {
145
- this.read();
146
- let changed = false;
147
- for (const company of this.currentGrantCompanies ?? []) {
148
- changed = this.unresolvedCompanies.delete(company.trim().toLowerCase()) || changed;
149
- }
150
- if (changed)
151
- this.persistCurrentRecords();
152
- }
153
- setCurrentOntologyPush(company, enabled) {
154
- this.currentOntologyPush.set(company, enabled);
155
- }
156
- allowsOntologyEntityPush(company) {
157
- return this.currentOntologyPush.get(company) === true;
158
- }
159
- takeCapEvictedCount() {
160
- const count = this.capEvicted;
161
- this.capEvicted = 0;
162
- return count;
163
- }
164
- commit(records) {
165
- if (records.length === 0 && !this.needsPersist)
166
- return;
167
- const existing = this.read();
168
- const byKey = new Map(existing.map((record) => [recordKey(record), record]));
169
- for (const record of records) {
170
- const key = recordKey(record);
171
- byKey.delete(key);
172
- byKey.set(key, record);
173
- }
174
- const retained = [...byKey.values()].filter((record) => this.now() - record.recordedAt < (record.reason === "access-denied"
175
- ? WATCHER_CATCHUP_ACCESS_DENIED_TTL_MS
176
- : WATCHER_CATCHUP_REMOTE_SKIP_TTL_MS));
177
- this.retainWithinCap(retained);
178
- try {
179
- this.write(this.loaded ?? []);
180
- }
181
- catch (error) {
182
- this.loaded = [];
183
- this.indexed.clear();
184
- this.warnOnce("write", `hq-sync-runner: catch-up skip store write failed; failing open: ${error instanceof Error ? error.message : String(error)}`);
185
- }
186
- }
187
- pruneMissing(isPresent) {
188
- const now = this.now();
189
- const records = this.read();
190
- const retained = records.filter((record) => now - record.recordedAt < (record.reason === "access-denied"
191
- ? WATCHER_CATCHUP_ACCESS_DENIED_TTL_MS
192
- : WATCHER_CATCHUP_REMOTE_SKIP_TTL_MS) && isPresent(record));
193
- if (retained.length === records.length)
194
- return;
195
- try {
196
- this.write(retained);
197
- }
198
- catch (error) {
199
- this.loaded = [];
200
- this.warnOnce("prune", `hq-sync-runner: catch-up skip store prune failed; failing open: ${error instanceof Error ? error.message : String(error)}`);
201
- }
202
- }
203
- write(records) {
204
- fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
205
- const temporary = `${this.filePath}.${process.pid}.${randomUUID()}.tmp`;
206
- try {
207
- const now = this.now();
208
- const unresolvedCompanies = [...this.unresolvedCompanies.values()]
209
- .filter((record) => now - record.recordedAt < WATCHER_CATCHUP_UNRESOLVED_COMPANY_TTL_MS);
210
- fs.writeFileSync(temporary, JSON.stringify({ version: 1, records, unresolvedCompanies }), { mode: 0o600 });
211
- fs.renameSync(temporary, this.filePath);
212
- this.loaded = records;
213
- this.needsPersist = false;
214
- this.rebuildIndex();
215
- }
216
- finally {
217
- try {
218
- fs.rmSync(temporary, { force: true });
219
- }
220
- catch { /* best-effort temp cleanup */ }
221
- }
222
- }
223
- retainWithinCap(records) {
224
- const evicted = Math.max(0, records.length - this.maxRecords);
225
- if (evicted > 0) {
226
- this.capEvicted += evicted;
227
- this.needsPersist = true;
228
- this.warnOnce("cap", `hq-sync-runner: catch-up skip store exceeded ${this.maxRecords} records; evicting ${evicted} oldest records (evicted paths fail open)`);
229
- }
230
- this.loaded = records.slice(-this.maxRecords);
231
- this.rebuildIndex();
232
- }
233
- persistCurrentRecords() {
234
- try {
235
- this.write(this.loaded ?? []);
236
- }
237
- catch (error) {
238
- this.loaded = [];
239
- this.indexed.clear();
240
- this.unresolvedCompanies.clear();
241
- this.warnOnce("write", `hq-sync-runner: catch-up skip store write failed; failing open: ${error instanceof Error ? error.message : String(error)}`);
242
- }
243
- }
244
- retainUnresolvedCompaniesWithinCap() {
245
- const records = [...this.unresolvedCompanies.values()]
246
- .filter((record) => this.now() - record.recordedAt < WATCHER_CATCHUP_UNRESOLVED_COMPANY_TTL_MS)
247
- .sort((a, b) => a.recordedAt - b.recordedAt)
248
- .slice(-this.maxRecords);
249
- this.unresolvedCompanies = new Map(records.map((record) => [record.company, record]));
250
- }
251
- rebuildIndex() {
252
- const indexed = new Map();
253
- for (const record of this.loaded ?? []) {
254
- let companyRecords = indexed.get(record.company);
255
- if (!companyRecords) {
256
- companyRecords = new Map();
257
- indexed.set(record.company, companyRecords);
258
- }
259
- companyRecords.set(record.path, record);
260
- }
261
- this.indexed = indexed;
262
- }
263
- warnOnce(key, message) {
264
- if (this.warned.has(key))
265
- return;
266
- this.warned.add(key);
267
- this.warn(message);
268
- }
269
- }
270
- function validUnresolvedCompanyRecord(value) {
271
- if (typeof value !== "object" || value === null)
272
- return false;
273
- const record = value;
274
- return typeof record.company === "string" && record.company.length > 0 &&
275
- record.reason === "unresolved-company" &&
276
- typeof record.recordedAt === "number" && Number.isFinite(record.recordedAt);
277
- }
278
- //# sourceMappingURL=watcher-catchup-skip-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watcher-catchup-skip-store.js","sourceRoot":"","sources":["../../src/bin/watcher-catchup-skip-store.ts"],"names":[],"mappings":"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"}