@tinycloud/courier 0.6.0-beta.33 → 0.6.0-beta.34

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/thread.js CHANGED
@@ -1,45 +1,52 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import fs from 'node:fs';
2
3
  import path from 'node:path';
3
4
  import { messageView, oneLine, taskView } from './a2a.js';
4
5
  import { agentId, k, PREFIX } from './keys.js';
5
- import { profileDir, readRegularFile, writeSecure } from './profile.js';
6
- import { getJson, listAll } from './store.js';
6
+ import { profileDir } from './profile.js';
7
+ import { privateChild, privateDir, readPrivateFile, removePrivate, stillPrivate, unlinkPrivateFile, writePrivateFile } from './private-dir.js';
8
+ import { getJsonMany, listAll } from './store.js';
9
+ import { ULID } from './request.js';
7
10
  const SAFE_ID = /^[0-9A-Za-z_-]{1,64}$/;
8
11
  /** All of one agent's cached threads together, in bytes as written. */
9
12
  const CACHE_MAX_BYTES = 64 * 1024 * 1024;
10
13
  const CACHE_MAX_AGE_MS = 7 * 24 * 3600_000;
11
- const cacheRoot = () => path.join(profileDir(), 'read-cache');
14
+ /** How long `courier read` uses its local record of this agent's own writes to a thread before listing them again. */
15
+ const OWN_INDEX_TRUST_MS = 3600_000;
16
+ const READ_CACHE = 'read-cache';
17
+ const WATCH_CACHE = 'watch-cache';
12
18
  let preparedRoot;
13
19
  /**
14
20
  * Once per process: the cache directories are owner-only (0700) even if an earlier run left them looser, and thread
15
- * files from before the cache was per agent (`read-cache/<thread>.json`) are deleted. Symlinks and other users' entries
16
- * are never followed or changed.
21
+ * files from before the cache was per agent (`read-cache/<thread ULID>.json`) are deleted; nothing else at the root is.
22
+ * Every directory is opened without following a symlink and the chain from the profile down is checked again right
23
+ * before each change, so a component swapped for a link is never followed. Other users' entries are left alone.
17
24
  */
18
25
  function prepareCacheRoot() {
19
- const root = cacheRoot();
20
- if (preparedRoot === root)
26
+ const marker = path.join(profileDir(), READ_CACHE);
27
+ if (preparedRoot === marker)
21
28
  return;
22
- preparedRoot = root;
23
- let stat;
24
- try {
25
- stat = fs.lstatSync(root);
26
- }
27
- catch {
29
+ preparedRoot = marker;
30
+ const root = privateDir([READ_CACHE], false);
31
+ if (!root)
28
32
  return;
29
- }
30
- if (!stat.isDirectory() || stat.uid !== process.getuid?.())
31
- return;
32
- if ((stat.mode & 0o777) !== 0o700)
33
- fs.chmodSync(root, 0o700);
34
- for (const name of fs.readdirSync(root)) {
35
- const entry = path.join(root, name);
36
- const child = fs.lstatSync(entry);
33
+ for (const name of fs.readdirSync(root.path)) {
34
+ if (!stillPrivate(root))
35
+ return;
36
+ let child;
37
+ try {
38
+ child = fs.lstatSync(path.join(root.path, name));
39
+ }
40
+ catch {
41
+ continue;
42
+ }
37
43
  if (child.uid !== process.getuid?.())
38
44
  continue;
39
- if (child.isFile() && name.endsWith('.json'))
40
- fs.rmSync(entry, { force: true });
41
- else if (child.isDirectory() && (child.mode & 0o777) !== 0o700)
42
- fs.chmodSync(entry, 0o700);
45
+ // Only our own pre-upgrade thread files, unlinked after the chain and the entry are checked again.
46
+ if (child.isFile() && name.endsWith('.json') && ULID.test(name.slice(0, -5)))
47
+ unlinkPrivateFile(root, name);
48
+ else if (child.isDirectory())
49
+ privateChild(root, name);
43
50
  }
44
51
  }
45
52
  /** A cached thread file is used only while it is a regular file of this user written within the age bound. */
@@ -54,32 +61,38 @@ function fresh(file, limits) {
54
61
  }
55
62
  /** Keeps the agent's newest thread files within the byte bound and drops any older than the age bound. */
56
63
  function prune(dir, limits) {
57
- const files = fs.readdirSync(dir).filter(name => name.endsWith('.json')).map(name => {
58
- const file = path.join(dir, name);
59
- const stat = fs.lstatSync(file);
60
- return { file, mtime: stat.mtimeMs, bytes: stat.size, keep: stat.isFile() && limits.now - stat.mtimeMs < limits.maxAgeMs };
64
+ const files = fs.readdirSync(dir.path).filter(name => name.endsWith('.json')).flatMap(name => {
65
+ try {
66
+ const stat = fs.lstatSync(path.join(dir.path, name));
67
+ return [{ name, mtime: stat.mtimeMs, bytes: stat.size, keep: stat.isFile() && limits.now - stat.mtimeMs < limits.maxAgeMs }];
68
+ }
69
+ catch {
70
+ return [];
71
+ }
61
72
  }).sort((a, b) => b.mtime - a.mtime);
62
73
  let total = 0;
63
74
  for (const entry of files) {
64
75
  total += entry.bytes;
65
76
  if (!entry.keep || total > limits.maxBytes)
66
- fs.rmSync(entry.file, { force: true });
77
+ unlinkPrivateFile(dir, entry.name);
67
78
  }
68
79
  }
69
80
  /**
70
81
  * `courier read`'s private cache of one thread, per agent (`<COURIER_HOME>/read-cache/<did:key id>/<thread>.json`,
71
82
  * owner-only): messages and meta are create-only, so a repeated read fetches only entries it has not read yet. Tasks
72
83
  * change and are always fetched. A missing, foreign, expired (7 days) or corrupt file is an empty cache; the agent's
73
- * files stay within 64 MiB together, oldest dropped first.
84
+ * files stay within 64 MiB together, oldest dropped first. `full` starts empty: everything is fetched again and kept.
85
+ * Nothing is read or written unless every directory from the profile down is a real, owner-only directory of this user.
74
86
  */
75
- export function diskThreadCache(agent, threadId, limits = { now: Date.now(), maxBytes: CACHE_MAX_BYTES, maxAgeMs: CACHE_MAX_AGE_MS }) {
87
+ export function diskThreadCache(agent, threadId, limits = { now: Date.now(), maxBytes: CACHE_MAX_BYTES, maxAgeMs: CACHE_MAX_AGE_MS }, full = false) {
76
88
  prepareCacheRoot();
77
- const dir = path.join(cacheRoot(), agentId(agent));
78
- const file = path.join(dir, `${threadId}.json`);
89
+ const parts = [READ_CACHE, agentId(agent)];
90
+ const name = `${threadId}.json`;
79
91
  let entries = {};
80
- if (SAFE_ID.test(threadId) && fresh(file, limits)) {
92
+ const existing = !full && SAFE_ID.test(threadId) ? privateDir(parts, false) : undefined;
93
+ if (existing && fresh(path.join(existing.path, name), limits)) {
81
94
  try {
82
- const parsed = JSON.parse(readRegularFile(file) ?? '{}');
95
+ const parsed = JSON.parse(readPrivateFile(existing, name) ?? '{}');
83
96
  if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
84
97
  entries = parsed;
85
98
  }
@@ -92,23 +105,158 @@ export function diskThreadCache(agent, threadId, limits = { now: Date.now(), max
92
105
  save() {
93
106
  if (!changed || !SAFE_ID.test(threadId))
94
107
  return;
95
- fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
96
- if (!fs.lstatSync(cacheRoot()).isDirectory() || !fs.lstatSync(dir).isDirectory())
108
+ const dir = privateDir(parts, true);
109
+ if (!dir)
97
110
  return;
98
- // writeSecure writes pretty JSON and a newline.
111
+ // The file is pretty JSON and a newline.
99
112
  if (Buffer.byteLength(JSON.stringify(entries, null, 2)) + 1 > limits.maxBytes)
100
- fs.rmSync(file, { force: true });
113
+ unlinkPrivateFile(dir, name);
101
114
  else
102
- writeSecure(file, entries);
115
+ writePrivateFile(dir, name, entries);
103
116
  prune(dir, limits);
104
117
  },
105
118
  };
106
119
  }
107
- /** Revocation, refusal, peer removal or a new agent key: every cached counterparty body on this machine goes. */
120
+ /** Only the read cache: every cached counterparty body on this machine, removed through checked directories only. */
108
121
  export function clearReadCache() {
109
- fs.rmSync(cacheRoot(), { recursive: true, force: true });
122
+ removePrivate(READ_CACHE);
110
123
  preparedRoot = undefined;
111
124
  }
125
+ /**
126
+ * Revocation, refusal, owner revocation or a new agent key: the read cache and the watcher's local knowledge
127
+ * (`watch-cache/`) both go.
128
+ */
129
+ export function clearLocalCaches() {
130
+ clearReadCache();
131
+ removePrivate(WATCH_CACHE);
132
+ }
133
+ /**
134
+ * The owner-space index: keys written under this agent's thread roots in the owner's space, which may be by this agent
135
+ * or by another agent of the same owner (same-owner agents are one principal, as the grants are). `courier read`
136
+ * shows them as `authority: 'self'`.
137
+ */
138
+ const ownerSpaceParts = (agent, threadId) => [READ_CACHE, agentId(agent), 'owner-space', threadId];
139
+ const ownerSpaceName = (prefix, spaceId, key) => `${prefix}-${createHash('sha256').update(`${spaceId}\n${key}`).digest('hex')}.json`;
140
+ /**
141
+ * Records one key this agent created under its thread root in the owner's space, after the write succeeded (`send`,
142
+ * the outbox, a pause inform, a task, a session's meta). One file per entry, so concurrent writers never lose each
143
+ * other's records. It never fails the write: if the record can't be written, the thread's listing marks are dropped
144
+ * so the next read lists again.
145
+ */
146
+ export function recordOwnerSpaceWrite(agent, spaceId, threadId, key) {
147
+ if (!SAFE_ID.test(threadId) || !spaceId)
148
+ return;
149
+ let parts;
150
+ try {
151
+ parts = ownerSpaceParts(agent, threadId);
152
+ }
153
+ catch {
154
+ return;
155
+ } // no did:key: this agent has no read cache at all
156
+ try {
157
+ prepareCacheRoot();
158
+ const dir = privateDir(parts, true);
159
+ if (!dir || !writePrivateFile(dir, ownerSpaceName('e', spaceId, key), { space: spaceId, key }))
160
+ throw new Error('not recorded');
161
+ }
162
+ catch {
163
+ try {
164
+ const dir = privateDir(parts, false);
165
+ if (!dir)
166
+ return; // no safe directory: no listing marks to trust
167
+ for (const name of fs.readdirSync(dir.path))
168
+ if (name.startsWith('listed-'))
169
+ unlinkPrivateFile(dir, name);
170
+ }
171
+ catch { /* no listing marks: the next read lists anyway */ }
172
+ }
173
+ }
174
+ export function diskOwnerSpaceIndex(agent, spaceId, threadId, full = false, now = Date.now()) {
175
+ const parts = ownerSpaceParts(agent, threadId);
176
+ const uid = process.getuid?.();
177
+ const regular = (dir, name) => {
178
+ try {
179
+ const stat = fs.lstatSync(path.join(dir.path, name));
180
+ return stat.isFile() && stat.uid === uid ? stat : undefined;
181
+ }
182
+ catch {
183
+ return undefined;
184
+ }
185
+ };
186
+ return {
187
+ keys(root) {
188
+ if (full || !SAFE_ID.test(threadId))
189
+ return undefined;
190
+ const dir = privateDir(parts, false);
191
+ if (!dir)
192
+ return undefined;
193
+ let listedAt;
194
+ try {
195
+ const name = ownerSpaceName('listed', spaceId, root);
196
+ if (!regular(dir, name))
197
+ return undefined;
198
+ const mark = JSON.parse(readPrivateFile(dir, name) ?? 'null');
199
+ if (!mark || typeof mark !== 'object')
200
+ return undefined;
201
+ const { space, root: markRoot, listedAt: at } = mark;
202
+ if (space !== spaceId || markRoot !== root || typeof at !== 'string')
203
+ return undefined;
204
+ listedAt = Date.parse(at);
205
+ }
206
+ catch {
207
+ return undefined;
208
+ }
209
+ if (!(now - listedAt >= 0 && now - listedAt < OWN_INDEX_TRUST_MS))
210
+ return undefined;
211
+ const keys = [];
212
+ try {
213
+ for (const name of fs.readdirSync(dir.path)) {
214
+ if (!name.startsWith('e-'))
215
+ continue;
216
+ const stat = regular(dir, name);
217
+ if (!stat)
218
+ continue;
219
+ // Every listing re-records what it saw, so an entry this old is from before the current listing mark.
220
+ if (now - stat.mtimeMs >= CACHE_MAX_AGE_MS) {
221
+ unlinkPrivateFile(dir, name);
222
+ continue;
223
+ }
224
+ const text = readPrivateFile(dir, name);
225
+ if (text === undefined)
226
+ return undefined;
227
+ const entry = JSON.parse(text);
228
+ if (!entry || typeof entry !== 'object')
229
+ return undefined;
230
+ const { space, key } = entry;
231
+ if (typeof key !== 'string' || typeof space !== 'string')
232
+ return undefined;
233
+ if (space === spaceId && key.startsWith(`${root}/`))
234
+ keys.push(key);
235
+ }
236
+ }
237
+ catch {
238
+ return undefined;
239
+ }
240
+ return keys.sort();
241
+ },
242
+ listed(root, keys) {
243
+ if (!SAFE_ID.test(threadId))
244
+ return;
245
+ try {
246
+ prepareCacheRoot();
247
+ const dir = privateDir(parts, true);
248
+ if (!dir)
249
+ return;
250
+ for (const key of keys) {
251
+ if (key.startsWith(`${root}/`) && !writePrivateFile(dir, ownerSpaceName('e', spaceId, key), { space: spaceId, key }))
252
+ return;
253
+ }
254
+ writePrivateFile(dir, ownerSpaceName('listed', spaceId, root), { space: spaceId, root, listedAt: new Date(now).toISOString() });
255
+ }
256
+ catch { /* without a mark, the next read lists again */ }
257
+ },
258
+ };
259
+ }
112
260
  export function peerReadError(peer) {
113
261
  return { peer, code: 'peer-read-failed', message: `Couldn't read messages from ${oneLine(peer, 80)}.` };
114
262
  }
@@ -133,6 +281,7 @@ export async function collectThread(input) {
133
281
  // Failure of our own listing cannot safely be interpreted as an absent mapping.
134
282
  const mine = await listAll(selfKv, `${k.threadRoot(peer.handle, threadId)}/`);
135
283
  local.set(peer.handle, mine);
284
+ input.ownerSpace?.listed(k.threadRoot(peer.handle, threadId), mine);
136
285
  const mirrored = await listAll(selfKv, `${PREFIX}/me/mirror/${peer.handle}/threads/${threadId}/`);
137
286
  if (mine.length || mirrored.length)
138
287
  known.push(peer);
@@ -140,20 +289,31 @@ export async function collectThread(input) {
140
289
  if (known.length)
141
290
  peers = known;
142
291
  }
143
- /** `source`: whose space the keys are in (none: not cached). A cached body is used only for a key the current, authorized listing returned. */
292
+ /**
293
+ * `source`: whose space the keys are in (none: not cached). A cached body is used only for a key the current,
294
+ * authorized listing returned, or, for our own entries, that our own record holds.
295
+ */
144
296
  async function append(kv, keys, peer, side, source) {
145
297
  const root = side === 'me' ? k.threadRoot(peer, threadId) : undefined;
146
- for (const key of keys) {
298
+ const wanted = keys.flatMap(key => {
147
299
  if (root && !key.startsWith(`${root}/`))
148
- continue;
300
+ return [];
149
301
  const kind = key.endsWith('/meta.json') ? 'meta'
150
302
  : /\/msg\/[^/]+\.json$/.test(key) ? 'msg'
151
303
  : /\/task\/[^/]+\.json$/.test(key) ? 'task' : undefined;
152
304
  if (!kind)
153
- continue;
305
+ return [];
154
306
  const cacheId = kind === 'task' || !source ? undefined : `${source}:${key}`;
155
- const cached = cacheId === undefined ? undefined : input.cache?.get(cacheId);
156
- const got = cached !== undefined ? { value: cached } : await getJson(kv, key);
307
+ return [{ key, kind, cacheId, cached: cacheId === undefined ? undefined : input.cache?.get(cacheId) }];
308
+ });
309
+ // Everything not already cached in bounded batches; each entry is still checked on its own below. A value over
310
+ // the cap is reported as an error for that entry, and every other entry is shown.
311
+ const fetched = await getJsonMany(kv, wanted.filter(entry => entry.cached === undefined).map(entry => entry.key));
312
+ for (const key of fetched.tooLarge) {
313
+ errors.push({ peer, code: 'entry-too-large', message: `An entry of ${oneLine(peer, 80)} is too large to read (${oneLine(key.slice(key.lastIndexOf('/') + 1), 80)}).` });
314
+ }
315
+ for (const { key, kind, cacheId, cached } of wanted) {
316
+ const got = cached !== undefined ? { value: cached } : fetched.values.get(key);
157
317
  if (!got)
158
318
  continue;
159
319
  if (cacheId !== undefined && cached === undefined)
@@ -165,7 +325,12 @@ export async function collectThread(input) {
165
325
  }
166
326
  }
167
327
  for (const peer of peers) {
168
- const mine = local.get(peer.handle) ?? await listAll(selfKv, `${k.threadRoot(peer.handle, threadId)}/`);
328
+ const root = k.threadRoot(peer.handle, threadId);
329
+ let mine = local.get(peer.handle) ?? input.ownerSpace?.keys(root);
330
+ if (mine === undefined) {
331
+ mine = await listAll(selfKv, `${root}/`);
332
+ input.ownerSpace?.listed(root, mine);
333
+ }
169
334
  await append(selfKv, mine, peer.handle, 'me', input.self && `self:${input.self.courierDid}:${input.self.spaceId}`);
170
335
  if (!peer.inbound || !peer.theirHandleForMe)
171
336
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"thread.js","sourceRoot":"","sources":["../src/thread.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread.js","sourceRoot":"","sources":["../src/thread.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { StoredPeer } from './profile.js';
2
+ import { type LocalWatchCache } from './watch.js';
3
+ /**
4
+ * `<COURIER_HOME>/watch-cache/<did:key id>.json`, owner-only, in a checked private directory: what this agent's watcher
5
+ * already learned from the node (receipted message ids, mirrored meta keys, marker read times, the claim pruning
6
+ * time), so a restart or a `--once` run need not fetch it again.
7
+ * - Bound to this agent's DID and space.
8
+ * - Each peer's facts carry the identity (DID, space, session) they were learned under. They are loaded and saved
9
+ * only while the peer's current identity is the same; otherwise they are dropped, never re-stamped.
10
+ * - Only `peers()` (the eligible peers) are kept. A bad file, an old format or an unsafe directory is the same as no
11
+ * file. Deleted with the read cache (revoke, refusal, owner revocation, key rotation).
12
+ */
13
+ export declare function fileWatchCache(agent: string, space: string, peers: () => StoredPeer[]): {
14
+ load(): LocalWatchCache | undefined;
15
+ save(cache: LocalWatchCache): void;
16
+ };
@@ -0,0 +1,84 @@
1
+ import { isRecord } from './a2a.js';
2
+ import { agentId, PREFIX } from './keys.js';
3
+ import { privateDir, readPrivateFile, writePrivateFile } from './private-dir.js';
4
+ import { peerIdentity, sameIdentity } from './watch.js';
5
+ const DIR = 'watch-cache';
6
+ const strings = (value) => Array.isArray(value) && value.every(item => typeof item === 'string');
7
+ const metaPrefix = (peer) => peer.theirHandleForMe ? `${PREFIX}/to/${peer.theirHandleForMe}/` : undefined;
8
+ function parse(text) {
9
+ const value = JSON.parse(text ?? 'null');
10
+ if (!isRecord(value) || value.v !== 2 || !isRecord(value.self) || typeof value.self.did !== 'string' || typeof value.self.space !== 'string'
11
+ || !isRecord(value.peers) || (value.claimsPrunedAt !== undefined && typeof value.claimsPrunedAt !== 'number'))
12
+ return undefined;
13
+ for (const facts of Object.values(value.peers)) {
14
+ if (!isRecord(facts) || typeof facts.did !== 'string' || typeof facts.space !== 'string'
15
+ || !(facts.session === null || typeof facts.session === 'string') || !strings(facts.receipted) || !strings(facts.metaMirrored)
16
+ || (facts.markerReadAt !== undefined && typeof facts.markerReadAt !== 'number'))
17
+ return undefined;
18
+ }
19
+ return value;
20
+ }
21
+ /**
22
+ * `<COURIER_HOME>/watch-cache/<did:key id>.json`, owner-only, in a checked private directory: what this agent's watcher
23
+ * already learned from the node (receipted message ids, mirrored meta keys, marker read times, the claim pruning
24
+ * time), so a restart or a `--once` run need not fetch it again.
25
+ * - Bound to this agent's DID and space.
26
+ * - Each peer's facts carry the identity (DID, space, session) they were learned under. They are loaded and saved
27
+ * only while the peer's current identity is the same; otherwise they are dropped, never re-stamped.
28
+ * - Only `peers()` (the eligible peers) are kept. A bad file, an old format or an unsafe directory is the same as no
29
+ * file. Deleted with the read cache (revoke, refusal, owner revocation, key rotation).
30
+ */
31
+ export function fileWatchCache(agent, space, peers) {
32
+ const name = `${agentId(agent)}.json`;
33
+ return {
34
+ load() {
35
+ try {
36
+ const dir = privateDir([DIR], false);
37
+ if (!dir)
38
+ return undefined;
39
+ const file = parse(readPrivateFile(dir, name));
40
+ if (!file || file.self.did !== agent || file.self.space !== space)
41
+ return undefined;
42
+ const cache = { v: 1, claimsPrunedAt: file.claimsPrunedAt, markerReadAt: {}, metaMirrored: {}, receipted: {}, identities: {} };
43
+ for (const peer of peers()) {
44
+ const facts = Object.hasOwn(file.peers, peer.handle) ? file.peers[peer.handle] : undefined;
45
+ const identity = peerIdentity(peer);
46
+ if (!facts || !sameIdentity({ did: facts.did, space: facts.space, session: facts.session }, identity))
47
+ continue;
48
+ cache.identities[peer.handle] = identity;
49
+ if (facts.markerReadAt !== undefined)
50
+ cache.markerReadAt[peer.handle] = facts.markerReadAt;
51
+ cache.receipted[peer.handle] = facts.receipted;
52
+ const prefix = metaPrefix(peer);
53
+ if (prefix)
54
+ cache.metaMirrored[peer.handle] = facts.metaMirrored.filter(key => key.startsWith(prefix));
55
+ }
56
+ return cache;
57
+ }
58
+ catch {
59
+ return undefined;
60
+ }
61
+ },
62
+ save(cache) {
63
+ const dir = privateDir([DIR], true);
64
+ if (!dir)
65
+ return;
66
+ const file = { v: 2, self: { did: agent, space }, peers: {}, ...(cache.claimsPrunedAt !== undefined ? { claimsPrunedAt: cache.claimsPrunedAt } : {}) };
67
+ for (const peer of peers()) {
68
+ const identity = peerIdentity(peer);
69
+ // Facts learned under another identity of this handle are dropped, never stamped with the current one.
70
+ if (!sameIdentity(Object.hasOwn(cache.identities, peer.handle) ? cache.identities[peer.handle] : undefined, identity))
71
+ continue;
72
+ const prefix = metaPrefix(peer);
73
+ file.peers[peer.handle] = {
74
+ ...identity,
75
+ ...(cache.markerReadAt[peer.handle] !== undefined ? { markerReadAt: cache.markerReadAt[peer.handle] } : {}),
76
+ receipted: cache.receipted[peer.handle] ?? [],
77
+ metaMirrored: prefix ? (cache.metaMirrored[peer.handle] ?? []).filter(key => key.startsWith(prefix)) : [],
78
+ };
79
+ }
80
+ writePrivateFile(dir, name, file);
81
+ },
82
+ };
83
+ }
84
+ //# sourceMappingURL=watch-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-cache.js","sourceRoot":"","sources":["../src/watch-cache.ts"],"names":[],"mappings":"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"}
package/dist/watch-cmd.js CHANGED
@@ -9,6 +9,7 @@ import { CourierError } from './errors.js';
9
9
  import { loadProfile, profileDir, writeSecure } from './profile.js';
10
10
  import { peerHooks, peerKv } from './node.js';
11
11
  import { WATCH_DEFAULTS, Watcher } from './watch.js';
12
+ import { fileWatchCache } from './watch-cache.js';
12
13
  import { UNGUARDED_REFUSAL, createWaker, jsonLineLog, killAllRunners, spawnRunner } from './wake.js';
13
14
  import { startsAgentCli } from './guard/policy.js';
14
15
  import { guardArgv } from './guard/command.js';
@@ -278,6 +279,8 @@ export async function cmdWatch(args) {
278
279
  postInform: async (peer, threadId, text, pauseId) => { await postPausedInform(node.kv, loadProfile(), peer, threadId, text, pauseId); },
279
280
  notify: createNotifier(notifyConfig(args, config), { run: spawnRunner }),
280
281
  holder: { profileId: watcherProfileId() },
282
+ // Only eligible peers' facts are kept: a refused, latched or removed peer's facts go with the next save.
283
+ localCache: fileWatchCache(node.credentialHolderDid, profile.spaceId, () => Object.values(loadProfile().peers).filter(peer => watchPeerEligible(peer))),
281
284
  log,
282
285
  }, opts);
283
286
  const stop = new AbortController();
@@ -1 +1 @@
1
- {"version":3,"file":"watch-cmd.js","sourceRoot":"","sources":["../src/watch-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch-cmd.js","sourceRoot":"","sources":["../src/watch-cmd.ts"],"names":[],"mappings":"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"}