@telepath-computer/autofile 0.3.0 → 0.4.0

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/watch.js CHANGED
@@ -1,56 +1,44 @@
1
+ /** Maps filesystem changes to Autofile addresses without reading stored values. */
2
+ import { lstat } from "node:fs/promises";
1
3
  import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
2
4
  import { watch } from "chokidar";
3
- import { BLOB_NAME_PATTERN } from "./blobs.js";
4
5
  const typeNamePattern = /^[a-z][a-z0-9-]*$/u;
5
6
  const keyPattern = /^[a-z0-9][a-z0-9-]*$/u;
6
7
  const BATCH_WINDOW_MS = 150;
7
- const readFailed = Symbol("read failed");
8
- const unknownMetadata = Symbol("unknown metadata");
9
- const resourceChangeKinds = {
10
- add: "created",
11
- change: "changed",
12
- unlink: "deleted",
13
- };
14
- /** Returns the exact resource, folder, and root URIs notified for one change. */
15
- export function resourceNotificationUris(uri) {
16
- return [uri, uri.slice(0, uri.lastIndexOf("/")), "autofile:///"];
17
- }
18
- /** Starts one watcher after its initial scan and resource cache are ready. */
19
- export async function watchStore(dataFolder, store, onChange, onError) {
8
+ /** Starts watching after the initial directory scan, without reporting existing files. */
9
+ export async function watchFolder(dataFolder, onChange, onError) {
20
10
  const root = resolve(dataFolder);
21
11
  const stableParent = dirname(root);
12
+ // Watching the parent keeps this instance alive when the whole data folder is
13
+ // removed and restored. Siblings are excluded before chokidar descends into them.
22
14
  const watcher = watch(stableParent, {
23
15
  atomic: true,
24
16
  awaitWriteFinish: { stabilityThreshold: 100, pollInterval: 10 },
25
17
  followSymlinks: false,
26
18
  ignoreInitial: true,
27
- ignored: (path) => isIgnoredWatchPath(stableParent, root, path),
19
+ // Exclude nonregular entries before chokidar remembers their names. Its
20
+ // symlink tracking otherwise misses a later replacement by a regular file.
21
+ ignored: (path, stats) => isIgnoredWatchPath(stableParent, root, path)
22
+ || (stats !== undefined && !stats.isFile() && !stats.isDirectory()),
28
23
  });
29
- const cache = new Map();
24
+ const knownUris = new Set();
30
25
  let queued = new Map();
31
- let addedFolders = new Set();
32
26
  let batchTimer;
27
+ let pendingFiles = Promise.resolve();
33
28
  let pending = Promise.resolve();
34
29
  let initializing = true;
30
+ let stopping = false;
35
31
  const readyPromise = new Promise((resolveWatcher, rejectWatcher) => {
36
32
  watcher.once("ready", resolveWatcher);
37
33
  watcher.once("error", (error) => rejectWatcher(toError(error)));
38
34
  });
39
- let stopping = false;
40
- watcher.on("add", (path) => queueFile("add", path));
41
- watcher.on("change", (path) => queueFile("change", path));
42
- watcher.on("unlink", (path) => queueFile("unlink", path));
35
+ watcher.on("add", (path) => queueFile("created", path));
36
+ watcher.on("change", (path) => queueFile("changed", path));
37
+ watcher.on("unlink", (path) => queueFile("deleted", path));
43
38
  watcher.on("addDir", (path) => {
44
- if (stopping)
45
- return;
46
- const folder = resourceFolderForDirectory(root, path);
47
- if (folder === undefined)
39
+ if (stopping || resourceFolderForDirectory(root, path) === undefined)
48
40
  return;
49
41
  watcher.add(resolve(path));
50
- if (folder === "")
51
- return;
52
- addedFolders.add(folder);
53
- scheduleBatch();
54
42
  });
55
43
  watcher.on("unlinkDir", (path) => {
56
44
  if (stopping)
@@ -58,19 +46,33 @@ export async function watchStore(dataFolder, store, onChange, onError) {
58
46
  const folder = resourceFolderForDirectory(root, path);
59
47
  if (folder === undefined)
60
48
  return;
61
- for (const uri of cache.keys()) {
62
- if (isResourceInFolder(uri, folder))
63
- queueUri("unlink", uri);
64
- }
49
+ queueFileCheck(() => {
50
+ const prefix = `autofile:///${folder}/`;
51
+ for (const uri of knownUris) {
52
+ if (folder === "" || uri.startsWith(prefix)) {
53
+ queueUri("deleted", uri);
54
+ }
55
+ }
56
+ });
65
57
  });
66
58
  try {
67
59
  await readyPromise;
68
60
  watcher.on("error", (error) => onError(toError(error)));
69
- for (const resource of await store.listResources()) {
70
- cache.set(resource.uri, resourceMetadata(resource));
71
- }
61
+ // The scan includes directories and symlinks too. Remember only regular
62
+ // files so removing a directory cannot invent deletions for ignored entries.
63
+ pendingFiles = pendingFiles.then(async () => {
64
+ for (const [folder, filenames] of Object.entries(watcher.getWatched())) {
65
+ for (const filename of filenames) {
66
+ const path = resolve(folder, filename);
67
+ const uri = resourceUriForPath(root, path);
68
+ if (uri !== undefined && await isRegularFile(path))
69
+ knownUris.add(uri);
70
+ }
71
+ }
72
+ });
73
+ await pendingFiles;
72
74
  initializing = false;
73
- if (queued.size > 0 || addedFolders.size > 0)
75
+ if (queued.size > 0)
74
76
  scheduleBatch();
75
77
  }
76
78
  catch (error) {
@@ -78,18 +80,30 @@ export async function watchStore(dataFolder, store, onChange, onError) {
78
80
  throw error;
79
81
  }
80
82
  let closing;
81
- return {
82
- close: () => closing ??= closeWatcher(),
83
- };
84
- function queueFile(event, path) {
83
+ return { close: () => closing ??= closeWatcher() };
84
+ function queueFile(kind, path) {
85
85
  if (stopping)
86
86
  return;
87
87
  const uri = resourceUriForPath(root, path);
88
- if (uri !== undefined)
89
- queueUri(event, uri);
88
+ if (uri === undefined)
89
+ return;
90
+ queueFileCheck(async () => {
91
+ // Chokidar's write-settling stats follow symlinks even with
92
+ // followSymlinks disabled, so check the entry itself before notifying.
93
+ queueUri(kind === "deleted" || !await isRegularFile(path) ? "deleted" : kind, uri);
94
+ });
95
+ }
96
+ function queueFileCheck(check) {
97
+ pendingFiles = pendingFiles.then(check).catch((error) => onError(toError(error)));
90
98
  }
91
- function queueUri(event, uri) {
92
- addEvent(queued, uri, event);
99
+ function queueUri(kind, uri) {
100
+ if (kind === "deleted") {
101
+ if (!knownUris.delete(uri))
102
+ return;
103
+ }
104
+ else
105
+ knownUris.add(uri);
106
+ queued.set(uri, { uri, kind });
93
107
  scheduleBatch();
94
108
  }
95
109
  function scheduleBatch() {
@@ -99,158 +113,35 @@ export async function watchStore(dataFolder, store, onChange, onError) {
99
113
  }
100
114
  function flushBatch() {
101
115
  batchTimer = undefined;
102
- if (queued.size === 0 && addedFolders.size === 0)
116
+ if (queued.size === 0)
103
117
  return;
104
- const batch = queued;
105
- const folders = addedFolders;
118
+ const changes = [...queued.values()];
106
119
  queued = new Map();
107
- addedFolders = new Set();
108
120
  pending = pending
109
- .then(() => processBatch(batch, folders))
121
+ .then(() => onChange(changes))
110
122
  .catch((error) => onError(toError(error)));
111
123
  }
112
- async function processBatch(batch, folders) {
113
- const before = new Set(cache.keys());
114
- const supplied = new Map();
115
- const failedUris = new Set();
116
- let focusedReadFailed = false;
117
- const markReadFailed = (uri) => {
118
- focusedReadFailed = true;
119
- failedUris.add(uri);
120
- cache.set(uri, unknownMetadata);
121
- };
122
- for (const folder of folders) {
123
- const resources = await readSafely(() => store.listResourceFolder(folder));
124
- if (resources === readFailed) {
125
- const affectedUris = new Set([...cache.keys(), ...batch.keys()]);
126
- for (const uri of affectedUris) {
127
- if (!isResourceInFolder(uri, folder))
128
- continue;
129
- markReadFailed(uri);
130
- }
131
- continue;
132
- }
133
- for (const resource of resources) {
134
- supplied.set(resource.uri, resource);
135
- if (!cache.has(resource.uri))
136
- addEvent(batch, resource.uri, "add");
137
- }
138
- }
139
- let metadataChanged = false;
140
- const affectedTypes = new Set();
141
- for (const uri of batch.keys()) {
142
- const type = declarationType(uri);
143
- if (type === undefined || affectedTypes.has(type) || failedUris.has(uri))
144
- continue;
145
- affectedTypes.add(type);
146
- const declarationUri = `autofile:///_types/${type}`;
147
- const recordPrefix = `autofile:///${type}/`;
148
- const listed = await readSafely(() => store.listTypeResources(type));
149
- if (listed === readFailed) {
150
- const affectedUris = new Set([...cache.keys(), ...batch.keys()]);
151
- for (const scopedUri of affectedUris) {
152
- if (scopedUri !== declarationUri && !scopedUri.startsWith(recordPrefix))
153
- continue;
154
- markReadFailed(scopedUri);
155
- }
156
- continue;
157
- }
158
- const current = new Map(listed.map((resource) => [resource.uri, resource]));
159
- const scope = new Set(current.keys());
160
- for (const cachedUri of cache.keys()) {
161
- if (cachedUri === declarationUri || cachedUri.startsWith(recordPrefix)) {
162
- scope.add(cachedUri);
163
- }
164
- }
165
- for (const scopedUri of scope) {
166
- const wasListed = cache.has(scopedUri);
167
- const isListed = current.has(scopedUri);
168
- if (scopedUri.startsWith(recordPrefix)
169
- && wasListed !== isListed
170
- && !batch.has(scopedUri)) {
171
- addEvent(batch, scopedUri, isListed ? "add" : "unlink");
172
- }
173
- metadataChanged = updateCache(cache, scopedUri, current.get(scopedUri))
174
- || metadataChanged;
175
- }
176
- for (const [currentUri, resource] of current)
177
- supplied.set(currentUri, resource);
178
- }
179
- for (const uri of [...batch.keys()]) {
180
- if (declarationType(uri) !== undefined)
181
- continue;
182
- if (failedUris.has(uri))
183
- continue;
184
- const resource = supplied.get(uri)
185
- ?? await readSafely(() => store.getResourceMetadata(uri));
186
- if (resource === readFailed) {
187
- markReadFailed(uri);
188
- continue;
189
- }
190
- metadataChanged = updateCache(cache, uri, resource) || metadataChanged;
191
- }
192
- for (const uri of batch.keys()) {
193
- if (!before.has(uri) && !cache.has(uri) && !failedUris.has(uri))
194
- batch.delete(uri);
195
- }
196
- const listChanged = focusedReadFailed
197
- || metadataChanged
198
- || [...batch.values()].some((event) => event.membershipChanged);
199
- const changes = [...batch.entries()].map(([uri, event]) => ({
200
- uri,
201
- kind: resourceChangeKinds[event.lastEvent],
202
- listChanged,
203
- }));
204
- if (changes.length > 0 || listChanged)
205
- await onChange({ changes, listChanged });
206
- }
207
124
  async function closeWatcher() {
208
125
  stopping = true;
209
126
  await watcher.close();
127
+ await pendingFiles;
210
128
  if (batchTimer !== undefined)
211
129
  clearTimeout(batchTimer);
212
130
  flushBatch();
213
131
  await pending;
214
132
  }
215
- async function readSafely(read) {
216
- try {
217
- return await read();
218
- }
219
- catch (error) {
220
- onError(toError(error));
221
- return readFailed;
222
- }
223
- }
224
133
  }
225
- function addEvent(batch, uri, event) {
226
- const existing = batch.get(uri);
227
- if (existing === undefined) {
228
- batch.set(uri, { membershipChanged: event !== "change", lastEvent: event });
134
+ async function isRegularFile(path) {
135
+ try {
136
+ return (await lstat(path)).isFile();
229
137
  }
230
- else {
231
- existing.membershipChanged ||= event !== "change";
232
- existing.lastEvent = event;
138
+ catch (error) {
139
+ if (error instanceof Error && "code" in error
140
+ && (error.code === "ENOENT" || error.code === "ENOTDIR"))
141
+ return false;
142
+ throw error;
233
143
  }
234
144
  }
235
- function updateCache(cache, uri, resource) {
236
- const previous = cache.get(uri);
237
- const next = resource === undefined ? undefined : resourceMetadata(resource);
238
- if (next === undefined)
239
- cache.delete(uri);
240
- else
241
- cache.set(uri, next);
242
- return previous === unknownMetadata
243
- || previous?.title !== next?.title
244
- || previous?.description !== next?.description
245
- || (previous === undefined) !== (next === undefined);
246
- }
247
- function resourceMetadata(resource) {
248
- return { title: resource.title, description: resource.description };
249
- }
250
- function declarationType(uri) {
251
- const match = /^autofile:\/\/\/_types\/([a-z][a-z0-9-]*)$/u.exec(uri);
252
- return match?.[1];
253
- }
254
145
  function resourceUriForPath(root, path) {
255
146
  const localPath = relative(root, resolve(path));
256
147
  if (localPath === "" || localPath === ".." || isAbsolute(localPath))
@@ -261,9 +152,6 @@ function resourceUriForPath(root, path) {
261
152
  const [folder, name] = parts;
262
153
  if (folder === undefined || name === undefined)
263
154
  return undefined;
264
- if (folder === "_blobs") {
265
- return BLOB_NAME_PATTERN.test(name) ? `autofile:///_blobs/${name}` : undefined;
266
- }
267
155
  if (!name.endsWith(".json"))
268
156
  return undefined;
269
157
  const resourceName = name.slice(0, -".json".length);
@@ -287,17 +175,10 @@ function resourceFolderForDirectory(root, path) {
287
175
  return undefined;
288
176
  const folder = parts[0];
289
177
  return folder !== undefined
290
- && (folder === "_types" || folder === "_blobs" || typeNamePattern.test(folder))
178
+ && (folder === "_types" || typeNamePattern.test(folder))
291
179
  ? folder
292
180
  : undefined;
293
181
  }
294
- function isResourceInFolder(uri, folder) {
295
- if (folder === "")
296
- return true;
297
- if (folder === "_types")
298
- return !uri.startsWith("autofile:///_blobs/");
299
- return uri.startsWith(`autofile:///${folder}/`);
300
- }
301
182
  function isIgnoredWatchPath(stableParent, root, path) {
302
183
  const resolvedPath = resolve(path);
303
184
  if (resolvedPath === stableParent || resolvedPath === root)
@@ -305,6 +186,7 @@ function isIgnoredWatchPath(stableParent, root, path) {
305
186
  const localPath = relative(root, resolvedPath);
306
187
  return localPath === ".."
307
188
  || isAbsolute(localPath)
189
+ || localPath.split(sep)[0] === "_blobs"
308
190
  || localPath.split(sep).some((part) => part.startsWith("."));
309
191
  }
310
192
  function toError(error) {
package/dist/watch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telepath-computer/autofile",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Predictable filing for agents.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -44,5 +44,11 @@
44
44
  "mime-types": "3.0.1",
45
45
  "mingo": "7.2.4",
46
46
  "proper-lockfile": "4.1.2"
47
+ },
48
+ "exports": {
49
+ ".": {
50
+ "types": "./dist/index.d.ts",
51
+ "import": "./dist/index.js"
52
+ }
47
53
  }
48
54
  }