@spool-lab/core 0.3.5 → 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.
@@ -1,19 +1,49 @@
1
+ import { watch as fsWatch } from 'node:fs';
1
2
  import type { Syncer } from './syncer.js';
2
- export type WatcherEvent = 'new-sessions';
3
- export type WatcherEventCallback = (event: WatcherEvent, data: {
4
- count: number;
5
- }) => void;
3
+ export type WatcherEvent = 'new-sessions' | 'error';
4
+ export interface WatcherEventDataMap {
5
+ 'new-sessions': {
6
+ count: number;
7
+ };
8
+ 'error': {
9
+ error: Error;
10
+ root?: string;
11
+ };
12
+ }
13
+ export type WatcherEventData = WatcherEventDataMap[WatcherEvent];
14
+ export type WatcherEventCallback<E extends WatcherEvent = WatcherEvent> = (event: E, data: WatcherEventDataMap[E]) => void;
15
+ export interface SpoolWatcherOptions {
16
+ /** Milliseconds of inactivity before considering a file's writes finished. */
17
+ stabilityMs?: number;
18
+ /** Poll interval while waiting for size/mtime to settle. */
19
+ pollMs?: number;
20
+ /** Window over which new-session events coalesce into a single emission. */
21
+ flushMs?: number;
22
+ /** Dependency injection for tests — defaults to node:fs watch. */
23
+ watchFn?: typeof fsWatch;
24
+ }
6
25
  export declare class SpoolWatcher {
7
26
  private syncer;
8
- private watcher;
27
+ private watchers;
9
28
  private listeners;
29
+ private pending;
10
30
  private pendingNew;
11
31
  private flushTimer;
12
32
  private sourceRoots;
13
- constructor(syncer: Syncer);
33
+ private stopped;
34
+ private readonly stabilityMs;
35
+ private readonly pollMs;
36
+ private readonly flushMs;
37
+ private readonly watchFn;
38
+ constructor(syncer: Syncer, opts?: SpoolWatcherOptions);
14
39
  start(): void;
15
40
  stop(): void;
16
- on(event: WatcherEvent, cb: WatcherEventCallback): void;
17
- private handleFile;
41
+ on<E extends WatcherEvent>(event: E, cb: WatcherEventCallback<E>): void;
42
+ private watchRoot;
43
+ private schedulePoll;
44
+ private pollStability;
45
+ private runSync;
46
+ private flushNew;
47
+ private emit;
18
48
  }
19
49
  //# sourceMappingURL=watcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKzC,MAAM,MAAM,YAAY,GAAG,cAAc,CAAA;AACzC,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AAEzF,qBAAa,YAAY;IAWX,OAAO,CAAC,MAAM;IAV1B,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,WAAW,CAIlB;gBAEmB,MAAM,EAAE,MAAM;IAElC,KAAK,IAAI,IAAI;IA0Bb,IAAI,IAAI,IAAI;IAMZ,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,oBAAoB,GAAG,IAAI;IAIvD,OAAO,CAAC,UAAU;CAgBnB"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,OAAO,EAA4B,MAAM,SAAS,CAAA;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,OAAO,CAAA;AAEnD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,OAAO,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC;AAED,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAA;AAEhE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CACxE,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KACzB,IAAI,CAAA;AAET,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,OAAO,CAAA;CACzB;AAYD,qBAAa,YAAY;IAaX,OAAO,CAAC,MAAM;IAZ1B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,WAAW,CAAyE;IAC5F,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAEpB,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB;IAOlE,KAAK,IAAI,IAAI;IAeb,IAAI,IAAI,IAAI;IAeZ,EAAE,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAMvE,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,OAAO;IAsBf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;CAOb"}
@@ -1,66 +1,181 @@
1
- import chokidar from 'chokidar';
2
- import { detectSessionSource, getSessionRoots, getSessionWatchPatterns } from './source-paths.js';
1
+ import { watch as fsWatch, statSync } from 'node:fs';
2
+ import { resolve as resolvePath } from 'node:path';
3
+ import { detectSessionSource, getSessionRoots } from './source-paths.js';
4
+ const DEFAULT_STABILITY_MS = 2000;
5
+ const DEFAULT_POLL_MS = 200;
6
+ const DEFAULT_FLUSH_MS = 500;
3
7
  export class SpoolWatcher {
4
8
  syncer;
5
- watcher = null;
6
- listeners = [];
9
+ watchers = [];
10
+ listeners = new Map();
11
+ pending = new Map();
7
12
  pendingNew = 0;
8
13
  flushTimer = null;
9
- sourceRoots = {
10
- claude: [],
11
- codex: [],
12
- gemini: [],
13
- };
14
- constructor(syncer) {
14
+ sourceRoots = { claude: [], codex: [], gemini: [] };
15
+ stopped = false;
16
+ stabilityMs;
17
+ pollMs;
18
+ flushMs;
19
+ watchFn;
20
+ constructor(syncer, opts = {}) {
15
21
  this.syncer = syncer;
22
+ this.stabilityMs = opts.stabilityMs ?? DEFAULT_STABILITY_MS;
23
+ this.pollMs = opts.pollMs ?? DEFAULT_POLL_MS;
24
+ this.flushMs = opts.flushMs ?? DEFAULT_FLUSH_MS;
25
+ this.watchFn = opts.watchFn ?? fsWatch;
16
26
  }
17
27
  start() {
28
+ this.stopped = false;
18
29
  this.sourceRoots = {
19
30
  claude: getSessionRoots('claude'),
20
31
  codex: getSessionRoots('codex'),
21
32
  gemini: getSessionRoots('gemini'),
22
33
  };
23
- const patterns = [
24
- ...getSessionWatchPatterns('claude', this.sourceRoots.claude),
25
- ...getSessionWatchPatterns('codex', this.sourceRoots.codex),
26
- ...getSessionWatchPatterns('gemini', this.sourceRoots.gemini),
34
+ const roots = [
35
+ ...this.sourceRoots.claude,
36
+ ...this.sourceRoots.codex,
37
+ ...this.sourceRoots.gemini,
27
38
  ];
28
- this.watcher = chokidar.watch(patterns, {
29
- persistent: true,
30
- ignoreInitial: true, // initial sync is done by Syncer.syncAll()
31
- awaitWriteFinish: {
32
- stabilityThreshold: 2000,
33
- pollInterval: 200,
34
- },
35
- });
36
- this.watcher
37
- .on('add', (path) => this.handleFile(path))
38
- .on('change', (path) => this.handleFile(path));
39
+ for (const root of roots)
40
+ this.watchRoot(root);
39
41
  }
40
42
  stop() {
41
- this.watcher?.close();
42
- this.watcher = null;
43
- if (this.flushTimer)
43
+ this.stopped = true;
44
+ for (const w of this.watchers) {
45
+ try {
46
+ w.close();
47
+ }
48
+ catch { /* ignore */ }
49
+ }
50
+ this.watchers = [];
51
+ for (const entry of this.pending.values())
52
+ clearTimeout(entry.timer);
53
+ this.pending.clear();
54
+ if (this.flushTimer) {
44
55
  clearTimeout(this.flushTimer);
56
+ this.flushTimer = null;
57
+ }
58
+ this.pendingNew = 0;
45
59
  }
46
60
  on(event, cb) {
47
- this.listeners.push(cb);
61
+ const list = this.listeners.get(event) ?? [];
62
+ list.push(cb);
63
+ this.listeners.set(event, list);
64
+ }
65
+ watchRoot(root) {
66
+ let w;
67
+ try {
68
+ w = this.watchFn(root, { persistent: true, recursive: true });
69
+ }
70
+ catch (err) {
71
+ const code = err?.code;
72
+ // Missing root is expected (e.g. user hasn't used Gemini CLI) — silently skip.
73
+ if (code !== 'ENOENT' && code !== 'ENOTDIR') {
74
+ this.emit('error', { error: err, root });
75
+ }
76
+ return;
77
+ }
78
+ w.on('change', (_eventType, filename) => {
79
+ if (this.stopped || !filename)
80
+ return;
81
+ const abs = resolvePath(root, filename.toString());
82
+ this.schedulePoll(abs);
83
+ });
84
+ w.on('error', (err) => {
85
+ this.emit('error', { error: err, root });
86
+ });
87
+ this.watchers.push(w);
88
+ }
89
+ schedulePoll(filePath) {
90
+ // Only process files whose final path matches a configured source.
91
+ // Prefilter here avoids noisy stat() on unrelated dir events.
92
+ if (!detectSessionSource(filePath, this.sourceRoots)) {
93
+ // Could still be a future session file in a new subdir — but detectSessionSource
94
+ // already matches by suffix + root containment, so unrelated hits are rejected here.
95
+ return;
96
+ }
97
+ const existing = this.pending.get(filePath);
98
+ if (existing)
99
+ clearTimeout(existing.timer);
100
+ const entry = {
101
+ lastSize: existing?.lastSize ?? -1,
102
+ lastMtimeMs: existing?.lastMtimeMs ?? -1,
103
+ timer: setTimeout(() => this.pollStability(filePath), this.stabilityMs),
104
+ };
105
+ this.pending.set(filePath, entry);
106
+ }
107
+ pollStability(filePath) {
108
+ if (this.stopped)
109
+ return;
110
+ const entry = this.pending.get(filePath);
111
+ if (!entry)
112
+ return;
113
+ let size;
114
+ let mtimeMs;
115
+ try {
116
+ const s = statSync(filePath);
117
+ if (!s.isFile()) {
118
+ this.pending.delete(filePath);
119
+ return;
120
+ }
121
+ size = s.size;
122
+ mtimeMs = s.mtimeMs;
123
+ }
124
+ catch {
125
+ // File gone or transient error — drop.
126
+ this.pending.delete(filePath);
127
+ return;
128
+ }
129
+ if (size === entry.lastSize && mtimeMs === entry.lastMtimeMs) {
130
+ this.pending.delete(filePath);
131
+ this.runSync(filePath);
132
+ return;
133
+ }
134
+ entry.lastSize = size;
135
+ entry.lastMtimeMs = mtimeMs;
136
+ entry.timer = setTimeout(() => this.pollStability(filePath), this.pollMs);
137
+ }
138
+ runSync(filePath) {
139
+ // Decouple the sync call from the watcher event path so a slow or throwing
140
+ // syncFile cannot stall event delivery or create unhandled rejections.
141
+ queueMicrotask(() => {
142
+ if (this.stopped)
143
+ return;
144
+ const source = detectSessionSource(filePath, this.sourceRoots);
145
+ if (!source)
146
+ return;
147
+ let result;
148
+ try {
149
+ result = this.syncer.syncFile(filePath, source);
150
+ }
151
+ catch (err) {
152
+ this.emit('error', { error: err });
153
+ return;
154
+ }
155
+ if (result === 'added' || result === 'updated') {
156
+ this.pendingNew++;
157
+ if (this.flushTimer)
158
+ clearTimeout(this.flushTimer);
159
+ this.flushTimer = setTimeout(() => this.flushNew(), this.flushMs);
160
+ }
161
+ });
162
+ }
163
+ flushNew() {
164
+ this.flushTimer = null;
165
+ const count = this.pendingNew;
166
+ this.pendingNew = 0;
167
+ if (count > 0)
168
+ this.emit('new-sessions', { count });
48
169
  }
49
- handleFile(filePath) {
50
- const source = detectSessionSource(filePath, this.sourceRoots);
51
- if (!source)
170
+ emit(event, data) {
171
+ const list = this.listeners.get(event);
172
+ if (!list)
52
173
  return;
53
- const result = this.syncer.syncFile(filePath, source);
54
- if (result === 'added' || result === 'updated') {
55
- this.pendingNew++;
56
- // Debounce: flush all pending new-session events together
57
- if (this.flushTimer)
58
- clearTimeout(this.flushTimer);
59
- this.flushTimer = setTimeout(() => {
60
- const count = this.pendingNew;
61
- this.pendingNew = 0;
62
- this.listeners.forEach(cb => cb('new-sessions', { count }));
63
- }, 500);
174
+ for (const cb of list) {
175
+ try {
176
+ cb(event, data);
177
+ }
178
+ catch { /* listener errors shouldn't break the watcher */ }
64
179
  }
65
180
  }
66
181
  }
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -90,23 +90,13 @@ export interface SyncResult {
90
90
  updated: number;
91
91
  errors: number;
92
92
  }
93
- export interface CaptureResult {
94
- rank: number;
95
- captureId: number;
96
- captureUuid: string;
97
- matchType: SearchMatchType;
98
- url: string;
99
- title: string;
100
- snippet: string;
101
- platform: string;
102
- contentType: string;
103
- author: string | null;
104
- capturedAt: string;
105
- }
106
- export type { CapturedItem } from './connectors/types.js';
107
- export type SearchResult = (FragmentResult & {
93
+ export type SearchResult = FragmentResult & {
108
94
  kind: 'fragment';
109
- }) | (CaptureResult & {
110
- kind: 'capture';
111
- });
95
+ };
96
+ export type StarKind = 'session';
97
+ export type StarredItem = {
98
+ kind: 'session';
99
+ starredAt: string;
100
+ session: Session;
101
+ };
112
102
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spool-lab/core",
3
- "version": "0.3.5",
3
+ "version": "0.4.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,24 +18,17 @@
18
18
  "access": "public"
19
19
  },
20
20
  "dependencies": {
21
- "better-sqlite3": "^11.10.0",
22
- "chokidar": "^4.0.3",
23
- "effect": "^3.21.0",
24
- "semver": "^7.7.4",
25
- "tar": "^7.5.13",
26
- "@spool-lab/connector-sdk": "^0.1.1"
21
+ "better-sqlite3": "^11.10.0"
27
22
  },
28
23
  "devDependencies": {
29
- "@effect/vitest": "^0.29.0",
30
24
  "@types/better-sqlite3": "^7.6.13",
31
25
  "@types/node": "^22.19.17",
32
- "@types/semver": "^7.7.1",
33
26
  "vitest": "^3.2.4"
34
27
  },
35
28
  "scripts": {
36
29
  "rebuild:native": "pnpm run rebuild:native:node",
37
30
  "rebuild:native:node": "node ../../scripts/rebuild-better-sqlite3-node.mjs",
38
- "build": "pnpm --filter @spool-lab/connector-sdk build && tsc",
31
+ "build": "tsc",
39
32
  "dev": "tsc --watch",
40
33
  "test": "pnpm run rebuild:native && vitest run",
41
34
  "clean": "rm -rf dist"