@todu/engine 0.1.1 → 0.2.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/storage.js CHANGED
@@ -10,6 +10,8 @@ import { CATALOG_DOC_KEY, createEmptyCatalog, SCHEMA_VERSION, } from "@todu/core
10
10
  const SYNC_THROTTLE_MS = 100;
11
11
  /** Extra time after sync message generation for WebSocket delivery */
12
12
  const SYNC_DELIVERY_MS = 20;
13
+ /** Catalog load timeout for startup and join checks */
14
+ const CATALOG_LOAD_TIMEOUT_MS = 10_000;
13
15
  /**
14
16
  * Wait for pending sync messages to be generated and delivered.
15
17
  *
@@ -36,29 +38,99 @@ async function waitForSyncFlush(repo, documentId) {
36
38
  repo.on("doc-metrics", onMetrics);
37
39
  });
38
40
  }
41
+ function getCatalogMarkerPath(storagePath) {
42
+ return path.join(storagePath, `${CATALOG_DOC_KEY}.id`);
43
+ }
39
44
  /**
40
- * Initialize storage: create data directory, set up Automerge repo,
41
- * and load or create the catalog document.
45
+ * Begin a catalog marker switch for join flows.
46
+ *
47
+ * This is the storage-layer entrypoint that explicit join workflows use.
48
+ * The caller should:
49
+ * 1) validate target catalog reachability,
50
+ * 2) perform switch-dependent work,
51
+ * 3) call commit() on success or rollback() on failure.
42
52
  */
43
- export async function initStorage(storagePath) {
44
- // Ensure data directory exists
45
- fs.mkdirSync(storagePath, { recursive: true });
46
- // Create Automerge repo with filesystem storage
47
- const repo = new Repo({
48
- storage: new NodeFSStorageAdapter(storagePath),
49
- });
50
- // Load or create catalog document
51
- const catalog = await loadOrCreateCatalog(repo, storagePath);
53
+ export function beginCatalogJoinSwitch(storagePath, targetCatalogId) {
54
+ const markerPath = getCatalogMarkerPath(storagePath);
55
+ const previousCatalogId = fs.existsSync(markerPath)
56
+ ? fs.readFileSync(markerPath, "utf-8").trim()
57
+ : null;
58
+ fs.writeFileSync(markerPath, targetCatalogId, "utf-8");
52
59
  return {
53
- repo,
54
- catalog,
55
- ephemeral: false,
56
- async close() {
57
- await repo.flush();
58
- await repo.shutdown();
60
+ previousCatalogId,
61
+ targetCatalogId,
62
+ commit() {
63
+ // Marker already points at target; nothing else needed yet.
64
+ },
65
+ rollback() {
66
+ if (previousCatalogId) {
67
+ fs.writeFileSync(markerPath, previousCatalogId, "utf-8");
68
+ }
69
+ else if (fs.existsSync(markerPath)) {
70
+ fs.unlinkSync(markerPath);
71
+ }
59
72
  },
60
73
  };
61
74
  }
75
+ /**
76
+ * Initialize persistent storage for bootstrap flows.
77
+ *
78
+ * Bootstrap behavior:
79
+ * - No marker: create initial catalog
80
+ * - Existing marker: load that catalog
81
+ * - Existing but unreachable marker: fail (do not implicitly create a new catalog)
82
+ */
83
+ export async function initBootstrapStorage(storagePath, repo) {
84
+ fs.mkdirSync(storagePath, { recursive: true });
85
+ const ownsRepo = repo === undefined;
86
+ const actualRepo = repo ??
87
+ new Repo({
88
+ storage: new NodeFSStorageAdapter(storagePath),
89
+ });
90
+ try {
91
+ const catalog = await loadOrBootstrapCatalog(actualRepo, storagePath);
92
+ return createPersistentStorage(actualRepo, catalog);
93
+ }
94
+ catch (error) {
95
+ if (ownsRepo) {
96
+ await shutdownRepoQuietly(actualRepo);
97
+ }
98
+ throw error;
99
+ }
100
+ }
101
+ /**
102
+ * Initialize persistent storage for explicit join flows.
103
+ *
104
+ * Join behavior:
105
+ * - Requires the target catalog to be reachable
106
+ * - Never creates a fresh catalog implicitly
107
+ */
108
+ export async function initJoinStorage(storagePath, targetCatalogId, repo) {
109
+ fs.mkdirSync(storagePath, { recursive: true });
110
+ const ownsRepo = repo === undefined;
111
+ const actualRepo = repo ??
112
+ new Repo({
113
+ storage: new NodeFSStorageAdapter(storagePath),
114
+ });
115
+ try {
116
+ const catalog = await loadCatalogById(actualRepo, targetCatalogId, "join");
117
+ return createPersistentStorage(actualRepo, catalog);
118
+ }
119
+ catch (error) {
120
+ if (ownsRepo) {
121
+ await shutdownRepoQuietly(actualRepo);
122
+ }
123
+ throw error;
124
+ }
125
+ }
126
+ /**
127
+ * Backward-compatible storage initialization entrypoint.
128
+ *
129
+ * Defaults to bootstrap semantics.
130
+ */
131
+ export async function initStorage(storagePath, repo) {
132
+ return initBootstrapStorage(storagePath, repo);
133
+ }
62
134
  /**
63
135
  * Initialize ephemeral storage with no filesystem persistence.
64
136
  * Used by CLI when syncing with a running Electron instance.
@@ -72,7 +144,7 @@ export async function initStorage(storagePath) {
72
144
  */
73
145
  export async function initEphemeralStorage(storagePath) {
74
146
  // Read the catalog document ID from the marker file
75
- const markerPath = path.join(storagePath, `${CATALOG_DOC_KEY}.id`);
147
+ const markerPath = getCatalogMarkerPath(storagePath);
76
148
  if (!fs.existsSync(markerPath)) {
77
149
  throw new Error("No catalog marker found. Run the Electron app or CLI standalone first to create data.");
78
150
  }
@@ -122,20 +194,82 @@ export async function initEphemeralStorage(storagePath) {
122
194
  },
123
195
  };
124
196
  }
197
+ async function shutdownRepoQuietly(repo) {
198
+ try {
199
+ await repo.flush();
200
+ }
201
+ catch {
202
+ // Safe to ignore — requesting docs have no content to save
203
+ }
204
+ try {
205
+ await repo.shutdown();
206
+ }
207
+ catch {
208
+ // Safe to ignore — shutdown may race with pending requesting docs
209
+ }
210
+ // Allow queued storage adapter writes to settle before callers clean up
211
+ // temporary directories. A full sync-throttle window avoids ENOENT races
212
+ // observed in repeated failure-path teardown tests.
213
+ await new Promise((resolve) => setTimeout(resolve, SYNC_THROTTLE_MS + SYNC_DELIVERY_MS));
214
+ }
215
+ function createPersistentStorage(repo, catalog) {
216
+ return {
217
+ repo,
218
+ catalog,
219
+ ephemeral: false,
220
+ async close() {
221
+ // Both flush() and shutdown() (which calls flush internally) can throw
222
+ // "DocHandle is not ready" when a document is in "requesting" state —
223
+ // this happens when a connected remote peer is mid-sync during close.
224
+ // Requesting documents have no local content to persist, so ignoring
225
+ // the error is safe and correct.
226
+ try {
227
+ await repo.flush();
228
+ }
229
+ catch {
230
+ // Safe to ignore — requesting docs have no content to save
231
+ }
232
+ try {
233
+ await repo.shutdown();
234
+ }
235
+ catch {
236
+ // shutdown() calls flush() internally — same safe-to-ignore error
237
+ }
238
+ },
239
+ };
240
+ }
125
241
  /**
126
- * Load existing catalog document or create a new one.
127
- * Uses a marker file to store the document ID between sessions.
242
+ * Load existing catalog document from marker if present.
243
+ * If no marker exists, bootstrap a new catalog.
128
244
  */
129
- async function loadOrCreateCatalog(repo, storagePath) {
130
- const markerPath = path.join(storagePath, `${CATALOG_DOC_KEY}.id`);
131
- // Try to load existing catalog
245
+ async function loadOrBootstrapCatalog(repo, storagePath) {
246
+ const markerPath = getCatalogMarkerPath(storagePath);
132
247
  if (fs.existsSync(markerPath)) {
133
248
  const docId = fs.readFileSync(markerPath, "utf-8").trim();
134
- const handle = await repo.find(docId);
249
+ return loadCatalogById(repo, docId, "bootstrap");
250
+ }
251
+ return createBootstrapCatalog(repo, markerPath);
252
+ }
253
+ /**
254
+ * Load an existing catalog by ID and run schema migration if needed.
255
+ * Does not create a replacement catalog on failure.
256
+ */
257
+ async function loadCatalogById(repo, docId, mode) {
258
+ try {
259
+ const handle = await repo.find(docId, {
260
+ signal: AbortSignal.timeout(CATALOG_LOAD_TIMEOUT_MS),
261
+ });
135
262
  migrateCatalog(handle);
136
263
  return handle;
137
264
  }
138
- // Create new catalog
265
+ catch {
266
+ throw new Error(`[storage] ${mode} catalog ${docId} not reachable within ${CATALOG_LOAD_TIMEOUT_MS}ms`);
267
+ }
268
+ }
269
+ /**
270
+ * Create a new catalog and persist its marker.
271
+ */
272
+ function createBootstrapCatalog(repo, markerPath) {
139
273
  const handle = repo.create();
140
274
  handle.change((doc) => {
141
275
  const empty = createEmptyCatalog();
@@ -146,9 +280,10 @@ async function loadOrCreateCatalog(repo, storagePath) {
146
280
  doc.habits = empty.habits;
147
281
  doc.habitLogDocIds = empty.habitLogDocIds;
148
282
  doc.taskListDocIds = empty.taskListDocIds;
283
+ doc.notesBucketDocIds = empty.notesBucketDocIds;
284
+ doc.noteBucketByNoteId = empty.noteBucketByNoteId;
149
285
  doc.settings = empty.settings;
150
286
  });
151
- // Save document ID for next session
152
287
  fs.writeFileSync(markerPath, handle.documentId, "utf-8");
153
288
  return handle;
154
289
  }
@@ -176,6 +311,10 @@ function migrateCatalog(handle) {
176
311
  needsMigration = true;
177
312
  if (doc.habitLogDocIds === undefined || doc.habitLogDocIds === null)
178
313
  needsMigration = true;
314
+ if (doc.notesBucketDocIds === undefined || doc.notesBucketDocIds === null)
315
+ needsMigration = true;
316
+ if (doc.noteBucketByNoteId === undefined || doc.noteBucketByNoteId === null)
317
+ needsMigration = true;
179
318
  if (doc.settings === undefined || doc.settings === null)
180
319
  needsMigration = true;
181
320
  if (doc.version === undefined || doc.version === null)
@@ -195,6 +334,10 @@ function migrateCatalog(handle) {
195
334
  d.taskListDocIds = defaults.taskListDocIds;
196
335
  if (d.habitLogDocIds === undefined || d.habitLogDocIds === null)
197
336
  d.habitLogDocIds = defaults.habitLogDocIds;
337
+ if (d.notesBucketDocIds === undefined || d.notesBucketDocIds === null)
338
+ d.notesBucketDocIds = defaults.notesBucketDocIds;
339
+ if (d.noteBucketByNoteId === undefined || d.noteBucketByNoteId === null)
340
+ d.noteBucketByNoteId = defaults.noteBucketByNoteId;
198
341
  if (d.settings === undefined || d.settings === null)
199
342
  d.settings = defaults.settings;
200
343
  if (d.version === undefined || d.version === null)
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EACL,eAAe,EAEf,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,yDAAuD;AACvD,+EAA+E;AAE/E,4EAA4E;AAC5E,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,uDAAuD;AACvD,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC;;;;;;;;GAQG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,UAAsB,EAAiB;IACjF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACnC,OAAO,EAAE,CAAC;QAAA,CACX,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;QAExC,SAAS,SAAS,CAAC,CAA2C,EAAE;YAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,uBAAuB,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACtE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBACnC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,2CAA2C;gBAC3C,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACxC,CAAC;QAAA,CACF;QAED,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAAA,CACnC,CAAC,CAAC;AAAA,CACJ;AAED,SAAS,oBAAoB,CAAC,WAAmB,EAAU;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,eAAe,KAAK,CAAC,CAAC;AAAA,CACxD;AA8BD;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,eAA2B,EACR;IACnB,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QACjD,CAAC,CAAE,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAiB;QAC7D,CAAC,CAAC,IAAI,CAAC;IAET,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAEvD,OAAO;QACL,iBAAiB;QACjB,eAAe;QACf,MAAM,GAAS;YACb,4DAA4D;QAD9C,CAEf;QACD,QAAQ,GAAS;YACf,IAAI,iBAAiB,EAAE,CAAC;gBACtB,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QAAA,CACF;KACF,CAAC;AAAA,CACH;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,IAAW,EAAoB;IAC7F,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC;IACpC,MAAM,UAAU,GACd,IAAI;QACJ,IAAI,IAAI,CAAC;YACP,OAAO,EAAE,IAAI,oBAAoB,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC;IAEL,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACtE,OAAO,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AAAA,CACF;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,eAA2B,EAC3B,IAAW,EACO;IAClB,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC;IACpC,MAAM,UAAU,GACd,IAAI;QACJ,IAAI,IAAI,CAAC;YACP,OAAO,EAAE,IAAI,oBAAoB,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC;IAEL,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAC3E,OAAO,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AAAA,CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,IAAW,EAAoB;IACpF,OAAO,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAAA,CAChD;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAK5D;IACA,oDAAoD;IACpD,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAgB,CAAC;IAExE,mDAAiD;IACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1B,OAAO;QACL,IAAI;QACJ,SAAS,EAAE,IAAI;QACf,KAAK,CAAC,KAAK,GAAG;YACZ,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,0DAAwD;YAC1D,CAAC;QAAA,CACF;QACD,KAAK,CAAC,WAAW,GAAqB;YACpC,yDAAyD;YACzD,gEAAgE;YAChE,kDAAkD;YAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAkB,KAAK,EAAE;gBACtD,eAAe,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC;aACpD,CAAC,CAAC;YAEH,kEAAkE;YAClE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;YAE1B,OAAO;gBACL,IAAI;gBACJ,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,KAAK,CAAC,KAAK,GAAG;oBACZ,6DAA6D;oBAC7D,+DAA+D;oBAC/D,8DAA8D;oBAC9D,8DAA8D;oBAC9D,8DAA8D;oBAC9D,0CAA0C;oBAC1C,MAAM,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAEpC,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACxB,CAAC;oBAAC,MAAM,CAAC;wBACP,0DAAwD;oBAC1D,CAAC;gBAAA,CACF;aACF,CAAC;QAAA,CACH;KACF,CAAC;AAAA,CACH;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAU,EAAiB;IAC5D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,6DAA2D;IAC7D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,oEAAkE;IACpE,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,oDAAoD;IACpD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAAA,CAC1F;AAED,SAAS,uBAAuB,CAAC,IAAU,EAAE,OAAmC,EAAW;IACzF,OAAO;QACL,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,KAAK;QAChB,KAAK,CAAC,KAAK,GAAG;YACZ,uEAAuE;YACvE,wEAAsE;YACtE,sEAAsE;YACtE,qEAAqE;YACrE,iCAAiC;YACjC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA2D;YAC7D,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAkE;YACpE,CAAC;QAAA,CACF;KACF,CAAC;AAAA,CACH;AAED;;;GAGG;AACH,KAAK,UAAU,sBAAsB,CACnC,IAAU,EACV,WAAmB,EACkB;IACrC,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAgB,CAAC;QACxE,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAAA,CACjD;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAC5B,IAAU,EACV,KAAiB,EACjB,IAA0B,EACW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAkB,KAAK,EAAE;YACrD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,uBAAuB,CAAC;SACrD,CAAC,CAAC;QACH,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,YAAY,KAAK,yBAAyB,uBAAuB,IAAI,CACvF,CAAC;IACJ,CAAC;AAAA,CACF;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAU,EAAE,UAAkB,EAA8B;IAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAmB,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAoB,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;QACnC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9B,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAClD,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC1C,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC1C,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAChD,GAAG,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAClD,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAAA,CAC/B,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEzD,OAAO,MAAM,CAAC;AAAA,CACf;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAkC,EAAQ;IAChE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,2BAA2B;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,cAAc,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,cAAc,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAAE,cAAc,GAAG,IAAI,CAAC;IAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,cAAc,GAAG,IAAI,CAAC;IACtD,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI;QAAE,cAAc,GAAG,IAAI,CAAC;IAC3F,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI;QAAE,cAAc,GAAG,IAAI,CAAC;IAC3F,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI,GAAG,CAAC,iBAAiB,KAAK,IAAI;QAAE,cAAc,GAAG,IAAI,CAAC;IACjG,IAAI,GAAG,CAAC,kBAAkB,KAAK,SAAS,IAAI,GAAG,CAAC,kBAAkB,KAAK,IAAI;QACzE,cAAc,GAAG,IAAI,CAAC;IACxB,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI;QAAE,cAAc,GAAG,IAAI,CAAC;IAC/E,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAAE,cAAc,GAAG,IAAI,CAAC;IAE7E,IAAI,CAAC,cAAc;QAAE,OAAO;IAE5B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC;YAAE,CAAC,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QAC7F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzD,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI;YAC7D,CAAC,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI;YAC7D,CAAC,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,CAAC,iBAAiB,KAAK,IAAI;YACnE,CAAC,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS,IAAI,CAAC,CAAC,kBAAkB,KAAK,IAAI;YACrE,CAAC,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;YAAE,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACpF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI;YAAE,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC;IAAA,CAC/E,CAAC,CAAC;AAAA,CACJ"}
@@ -1,4 +1,5 @@
1
1
  import type { Repo } from "@automerge/automerge-repo";
2
+ import { WebSocketClientAdapter } from "@automerge/automerge-repo-network-websocket";
2
3
  export declare const DEFAULT_SYNC_URL = "ws://127.0.0.1:24377";
3
4
  /**
4
5
  * Add a sync client adapter to a Repo, connecting to a remote sync server.
@@ -8,6 +9,19 @@ export declare const DEFAULT_SYNC_URL = "ws://127.0.0.1:24377";
8
9
  * @param retryInterval - Retry interval in ms if connection fails (default: 500ms for local)
9
10
  */
10
11
  export declare function connectSyncClient(repo: Repo, url?: string, retryInterval?: number): Promise<() => void>;
12
+ /**
13
+ * Add a remote sync adapter to a Repo without blocking.
14
+ *
15
+ * Unlike connectSyncClient(), this does NOT await the connection — the remote
16
+ * server may be temporarily unreachable. The adapter reconnects automatically
17
+ * at the given retryInterval.
18
+ *
19
+ * Returns the adapter so callers can listen for connection events and remove it.
20
+ *
21
+ * @param retryInterval - Retry interval in ms on disconnect (default: 30s for remote)
22
+ */
23
+ export declare function addRemoteSyncAdapter(repo: Repo, url: string, retryInterval?: number): WebSocketClientAdapter;
24
+ export declare function hardenWebSocketClientAdapterErrors(adapter: WebSocketClientAdapter): void;
11
25
  /**
12
26
  * Check if a sync server is reachable at the given URL.
13
27
  * Returns true if the connection succeeds within the timeout.
@@ -1 +1 @@
1
- {"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../src/sync-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAGtD,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,GAAG,GAAE,MAAyB,EAC9B,aAAa,SAAM,GAClB,OAAO,CAAC,MAAM,IAAI,CAAC,CAcrB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,GAAE,MAAyB,EAC9B,SAAS,SAAM,GACd,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
1
+ {"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../src/sync-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAErF,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAqBvD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,GAAG,GAAE,MAAyB,EAC9B,aAAa,SAAM,GAClB,OAAO,CAAC,MAAM,IAAI,CAAC,CAerB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,aAAa,SAAQ,GACpB,sBAAsB,CAKxB;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAexF;AAmCD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,GAAE,MAAyB,EAC9B,SAAS,SAAM,GACd,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
@@ -1,5 +1,22 @@
1
1
  import { WebSocketClientAdapter } from "@automerge/automerge-repo-network-websocket";
2
2
  export const DEFAULT_SYNC_URL = "ws://127.0.0.1:24377";
3
+ const TRANSIENT_SOCKET_ERROR_CODES = new Set([
4
+ "ECONNREFUSED",
5
+ "ECONNRESET",
6
+ "EPIPE",
7
+ "ETIMEDOUT",
8
+ "EHOSTUNREACH",
9
+ "ENETUNREACH",
10
+ "ENOTFOUND",
11
+ "EAI_AGAIN",
12
+ ]);
13
+ const TRANSIENT_SOCKET_ERROR_MESSAGE_PATTERNS = [
14
+ /failed to connect/i,
15
+ /connection failed/i,
16
+ /connect ECONNREFUSED/i,
17
+ /read ECONNRESET/i,
18
+ /socket hang up/i,
19
+ ];
3
20
  /**
4
21
  * Add a sync client adapter to a Repo, connecting to a remote sync server.
5
22
  * Waits for the adapter to be ready before returning.
@@ -9,6 +26,7 @@ export const DEFAULT_SYNC_URL = "ws://127.0.0.1:24377";
9
26
  */
10
27
  export async function connectSyncClient(repo, url = DEFAULT_SYNC_URL, retryInterval = 500) {
11
28
  const adapter = new WebSocketClientAdapter(url, retryInterval);
29
+ hardenWebSocketClientAdapterErrors(adapter);
12
30
  repo.networkSubsystem.addNetworkAdapter(adapter);
13
31
  // Wait for the WebSocket connection to establish
14
32
  await adapter.whenReady();
@@ -21,6 +39,62 @@ export async function connectSyncClient(repo, url = DEFAULT_SYNC_URL, retryInter
21
39
  }
22
40
  };
23
41
  }
42
+ /**
43
+ * Add a remote sync adapter to a Repo without blocking.
44
+ *
45
+ * Unlike connectSyncClient(), this does NOT await the connection — the remote
46
+ * server may be temporarily unreachable. The adapter reconnects automatically
47
+ * at the given retryInterval.
48
+ *
49
+ * Returns the adapter so callers can listen for connection events and remove it.
50
+ *
51
+ * @param retryInterval - Retry interval in ms on disconnect (default: 30s for remote)
52
+ */
53
+ export function addRemoteSyncAdapter(repo, url, retryInterval = 30000) {
54
+ const adapter = new WebSocketClientAdapter(url, retryInterval);
55
+ hardenWebSocketClientAdapterErrors(adapter);
56
+ repo.networkSubsystem.addNetworkAdapter(adapter);
57
+ return adapter;
58
+ }
59
+ export function hardenWebSocketClientAdapterErrors(adapter) {
60
+ const originalOnError = adapter.onError;
61
+ adapter.onError = (event) => {
62
+ try {
63
+ originalOnError(event);
64
+ }
65
+ catch (error) {
66
+ const eventError = getEventError(event);
67
+ if (isTransientSocketError(error) || isTransientSocketError(eventError)) {
68
+ return;
69
+ }
70
+ throw error;
71
+ }
72
+ };
73
+ }
74
+ function getEventError(event) {
75
+ if (typeof event !== "object" || event === null) {
76
+ return undefined;
77
+ }
78
+ if (!("error" in event)) {
79
+ return undefined;
80
+ }
81
+ return event.error;
82
+ }
83
+ function isTransientSocketError(error) {
84
+ if (typeof error !== "object" || error === null) {
85
+ return false;
86
+ }
87
+ const code = error.code;
88
+ if (typeof code === "string" && TRANSIENT_SOCKET_ERROR_CODES.has(code)) {
89
+ return true;
90
+ }
91
+ const message = error.message;
92
+ if (typeof message === "string" &&
93
+ TRANSIENT_SOCKET_ERROR_MESSAGE_PATTERNS.some((pattern) => pattern.test(message))) {
94
+ return true;
95
+ }
96
+ return false;
97
+ }
24
98
  /**
25
99
  * Check if a sync server is reachable at the given URL.
26
100
  * Returns true if the connection succeeds within the timeout.
@@ -1 +1 @@
1
- {"version":3,"file":"sync-client.js","sourceRoot":"","sources":["../src/sync-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAErF,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAU,EACV,GAAG,GAAW,gBAAgB,EAC9B,aAAa,GAAG,GAAG,EACE;IACrB,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/D,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEjD,iDAAiD;IACjD,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAE1B,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,CAAC;YACH,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,qDAAmD;QACrD,CAAC;IAAA,CACF,CAAC;AAAA,CACH;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAG,GAAW,gBAAgB,EAC9B,SAAS,GAAG,GAAG,EACG;IAClB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;QAAA,CAChB,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;gBAC5C,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;gBAE9B,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,CAAC;gBAAA,CACf,CAAC;gBAEF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;oBACjB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,CAAC;gBAAA,CAChB,CAAC;YAAA,CACH,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IAAA,CACF,CAAC,CAAC;AAAA,CACJ"}
1
+ {"version":3,"file":"sync-client.js","sourceRoot":"","sources":["../src/sync-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAErF,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,cAAc;IACd,YAAY;IACZ,OAAO;IACP,WAAW;IACX,cAAc;IACd,aAAa;IACb,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,uCAAuC,GAAG;IAC9C,oBAAoB;IACpB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAU,EACV,GAAG,GAAW,gBAAgB,EAC9B,aAAa,GAAG,GAAG,EACE;IACrB,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/D,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEjD,iDAAiD;IACjD,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IAE1B,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,CAAC;YACH,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,qDAAmD;QACrD,CAAC;IAAA,CACF,CAAC;AAAA,CACH;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAU,EACV,GAAW,EACX,aAAa,GAAG,KAAK,EACG;IACxB,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/D,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC;AAAA,CAChB;AAED,MAAM,UAAU,kCAAkC,CAAC,OAA+B,EAAQ;IACxF,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAExC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IAAA,CACF,CAAC;AAAA,CACH;AAED,SAAS,aAAa,CAAC,KAAc,EAAW;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAQ,KAA6B,CAAC,KAAK,CAAC;AAAA,CAC7C;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAW;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;IAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAI,KAA+B,CAAC,OAAO,CAAC;IACzD,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,uCAAuC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAChF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AAAA,CACd;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAG,GAAW,gBAAgB,EAC9B,SAAS,GAAG,GAAG,EACG;IAClB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;QAAA,CAChB,EAAE,SAAS,CAAC,CAAC;QAEd,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;gBAC5C,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;gBAE9B,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,CAAC;gBAAA,CACf,CAAC;gBAEF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;oBACjB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,CAAC;gBAAA,CAChB,CAAC;YAAA,CACH,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IAAA,CACF,CAAC,CAAC;AAAA,CACJ"}
package/dist/todu.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { CreateHabitInput, CreateLabelInput, CreateNoteInput, CreateProjectInput, CreateRecurringInput, CreateTaskInput, Habit, HabitEntry, HabitFilter, HabitHistoryEntry, HabitId, HabitStreak, Label, LabelId, Note, NoteFilter, NoteId, Project, ProjectFilter, ProjectId, RecurringFilter, RecurringId, RecurringTemplate, Result, Task, TaskFilter, TaskId, TaskSortOptions, TaskWithDetail, UpdateHabitInput, UpdateLabelInput, UpdateNoteInput, UpdateProjectInput, UpdateRecurringInput, UpdateTaskInput } from "@todu/core";
1
+ import type { CreateHabitInput, CreateLabelInput, CreateNoteInput, CreateProjectInput, CreateRecurringInput, CreateTaskInput, Habit, HabitEntry, HabitFilter, HabitHistoryEntry, HabitId, HabitStreak, Label, LabelId, Note, NoteFilter, NoteId, Project, ProjectFilter, ProjectId, RecurringFilter, RecurringId, RecurringTemplate, RemoteSyncConfig, Result, Task, TaskFilter, TaskId, TaskSortOptions, TaskWithDetail, UpdateHabitInput, UpdateLabelInput, UpdateNoteInput, UpdateProjectInput, UpdateRecurringInput, UpdateTaskInput } from "@todu/core";
2
2
  import type { UpcomingOccurrence } from "./recurring.js";
3
3
  export interface ToduConfig {
4
4
  /** Path to data storage directory */
@@ -9,6 +9,27 @@ export interface ToduConfig {
9
9
  syncPort?: number;
10
10
  /** Try to connect to a running sync server (used by CLI) */
11
11
  syncClient?: boolean;
12
+ /**
13
+ * Startup template processing policy.
14
+ *
15
+ * Processing is disabled by default. Hosts that own automation policy
16
+ * (for example daemon runtime) opt in explicitly.
17
+ */
18
+ startupTemplateProcessing?: {
19
+ /** Run registered processors during startup when true. */
20
+ enabled?: boolean;
21
+ /** Optional generic exclusions controlled by the host. */
22
+ excludeTypes?: string[];
23
+ };
24
+ /**
25
+ * Remote multi-device sync configuration.
26
+ * When provided, connects a second WebSocketClientAdapter to the remote server.
27
+ * Used by Electron and toduai serve.
28
+ *
29
+ * IMPORTANT: Never use wss://sync.todu.sh in development or tests.
30
+ * Use ws://localhost:3030 via `make dev`.
31
+ */
32
+ remoteSync?: RemoteSyncConfig;
12
33
  }
13
34
  export interface ProjectNamespace {
14
35
  create(input: CreateProjectInput): Promise<Result<Project>>;
@@ -91,6 +112,17 @@ export interface SyncNamespace {
91
112
  stop(): Promise<void>;
92
113
  /** Get current sync status (local mode + remote state). */
93
114
  status(): SyncStatus;
115
+ /**
116
+ * Register a callback for remote sync state changes.
117
+ * Fires when the remote connection transitions between
118
+ * connected/disconnected. Returns a cleanup function.
119
+ */
120
+ onStatusChange(callback: (status: SyncStatus) => void): () => void;
121
+ /**
122
+ * Get the catalog document ID for this instance.
123
+ * Used as a join code so other devices can sync with this one.
124
+ */
125
+ getCatalogId(): string;
94
126
  }
95
127
  export interface ConfigNamespace {
96
128
  get(): ToduConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"todu.d.ts","sourceRoot":"","sources":["../src/todu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"todu.d.ts","sourceRoot":"","sources":["../src/todu.ts"],"names":[],"mappings":"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"}
package/dist/todu.js CHANGED
@@ -67,6 +67,8 @@ export function createStubNamespaces(config) {
67
67
  local: { mode: "standalone" },
68
68
  remote: { state: "disconnected" },
69
69
  }),
70
+ onStatusChange: () => () => { },
71
+ getCatalogId: () => "",
70
72
  },
71
73
  config: {
72
74
  get: () => config,
package/dist/todu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"todu.js","sourceRoot":"","sources":["../src/todu.ts"],"names":[],"mappings":"AAsLA,+EAA+E;AAC/E,gEAA8D;AAC9D,+EAA+E;AAE/E,SAAS,cAAc,GAAsC;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAAA,CACrD;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAkB,EAAoC;IACzF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IAEpC,OAAO;QACL,OAAO,EAAE;YACP,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACb;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb;QACD,SAAS,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;SACd;QACD,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,YAA6B,EAAE;gBAC9C,MAAM,EAAE,EAAE,KAAK,EAAE,cAAiC,EAAE;aACrD,CAAC;SACH;QACD,MAAM,EAAE;YACN,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM;SAClB;KACF,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"todu.js","sourceRoot":"","sources":["../src/todu.ts"],"names":[],"mappings":"AAyNA,+EAA+E;AAC/E,gEAA8D;AAC9D,+EAA+E;AAE/E,SAAS,cAAc,GAAsC;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAAA,CACrD;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAkB,EAAoC;IACzF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IAEpC,OAAO;QACL,OAAO,EAAE;YACP,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;SACb;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb;QACD,SAAS,EAAE;YACT,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI;SACd;QACD,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,YAA6B,EAAE;gBAC9C,MAAM,EAAE,EAAE,KAAK,EAAE,cAAiC,EAAE;aACrD,CAAC;YACF,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC;YAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE;SACvB;QACD,MAAM,EAAE;YACN,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM;SAClB;KACF,CAAC;AAAA,CACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@todu/engine",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Task management engine with offline-first CRDT storage and sync",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",