swarm-mail 0.3.0 → 0.3.3

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 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/hive/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AA6B5D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,eAAe,EACnB,UAAU,EAAE,MAAM,GACjB,WAAW,CAkiBb"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/hive/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AA6B5D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,eAAe,EACnB,UAAU,EAAE,MAAM,GACjB,WAAW,CA6iBb"}
@@ -14,7 +14,7 @@ export type { Cell, CellAdapter, CellComment, CellDependency, CellLabel, HiveAda
14
14
  export type { CellEvent, BaseCellEvent, CellCreatedEvent, CellUpdatedEvent, CellStatusChangedEvent, CellClosedEvent, CellReopenedEvent, CellDeletedEvent, CellDependencyAddedEvent, CellDependencyRemovedEvent, CellLabelAddedEvent, CellLabelRemovedEvent, CellCommentAddedEvent, CellCommentUpdatedEvent, CellCommentDeletedEvent, CellEpicChildAddedEvent, CellEpicChildRemovedEvent, CellEpicClosureEligibleEvent, CellAssignedEvent, CellWorkStartedEvent, CellCompactedEvent, } from "./events.js";
15
15
  export { createHiveAdapter } from "./adapter.js";
16
16
  export { createHiveAdapter as createBeadsAdapter } from "./adapter.js";
17
- export { beadsMigration, beadsMigrations } from "./migrations.js";
17
+ export { beadsMigration, beadsMigrations, cellsViewMigration, hiveMigrations } from "./migrations.js";
18
18
  export { appendCellEvent, readCellEvents, replayCellEvents, type ReadCellEventsOptions, } from "./store.js";
19
19
  export { clearAllDirtyBeads, clearDirtyBead, getCell, getBlockedCells, getBlockers, getComments, getDependencies, getDependents, getDirtyCells, getInProgressCells, getLabels, getNextReadyCell, isBlocked, markBeadDirty, queryCells, updateProjections, } from "./projections.js";
20
20
  export { wouldCreateCycle, getOpenBlockers, rebuildBeadBlockedCache, rebuildAllBlockedCaches, invalidateBlockedCache, } from "./dependencies.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hive/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,YAAY,EACV,IAAI,EACJ,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EAEjB,IAAI,EACJ,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hive/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,YAAY,EACV,IAAI,EACJ,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EAEjB,IAAI,EACJ,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtG,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC"}
@@ -1,11 +1,12 @@
1
1
  /**
2
- * Beads Schema Migration (v6)
2
+ * Beads Schema Migration (v7-v8)
3
3
  *
4
4
  * Adds beads-specific tables to the shared PGLite database.
5
5
  * This migration extends the existing swarm-mail schema.
6
6
  *
7
7
  * ## Migration Strategy
8
- * - Migration v6 adds beads tables to existing swarm-mail schema (v1-v5)
8
+ * - Migration v7 adds beads tables to existing swarm-mail schema (v0-v6)
9
+ * - Migration v8 adds cells view for beads→hive rename compatibility
9
10
  * - Shares same PGLite database instance and migration system
10
11
  * - Uses same schema_version table for tracking
11
12
  *
@@ -35,7 +36,20 @@ import type { Migration } from "../streams/migrations.js";
35
36
  */
36
37
  export declare const beadsMigration: Migration;
37
38
  /**
38
- * Export as array for convenience
39
+ * Migration v7: Add cells view for beads→hive rename compatibility
40
+ *
41
+ * Creates a view called `cells` that points to the `beads` table.
42
+ * This allows code that references `cells` to work with existing `beads` data.
43
+ *
44
+ * The view is updatable via INSTEAD OF triggers for INSERT/UPDATE/DELETE.
45
+ */
46
+ export declare const cellsViewMigration: Migration;
47
+ /**
48
+ * Export individual migrations
39
49
  */
40
50
  export declare const beadsMigrations: Migration[];
51
+ /**
52
+ * All hive migrations in order
53
+ */
54
+ export declare const hiveMigrations: Migration[];
41
55
  //# sourceMappingURL=migrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/hive/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAoH5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,EAAqB,CAAC"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/hive/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAoH5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAiFhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,EAAqB,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,EAAyC,CAAC"}
package/dist/index.js CHANGED
@@ -18316,13 +18316,15 @@ var MAX_DEPENDENCY_DEPTH = 100;
18316
18316
  // src/hive/migrations.ts
18317
18317
  var exports_migrations2 = {};
18318
18318
  __export(exports_migrations2, {
18319
+ hiveMigrations: () => hiveMigrations,
18320
+ cellsViewMigration: () => cellsViewMigration,
18319
18321
  beadsMigrations: () => beadsMigrations,
18320
18322
  beadsMigration: () => beadsMigration
18321
18323
  });
18322
- var beadsMigration, beadsMigrations;
18324
+ var beadsMigration, cellsViewMigration, beadsMigrations, hiveMigrations;
18323
18325
  var init_migrations2 = __esm(() => {
18324
18326
  beadsMigration = {
18325
- version: 6,
18327
+ version: 7,
18326
18328
  description: "Add beads tables for issue tracking",
18327
18329
  up: `
18328
18330
  -- ========================================================================
@@ -18438,7 +18440,90 @@ var init_migrations2 = __esm(() => {
18438
18440
  DROP TABLE IF EXISTS beads;
18439
18441
  `
18440
18442
  };
18443
+ cellsViewMigration = {
18444
+ version: 8,
18445
+ description: "Add cells view for beads→hive rename compatibility",
18446
+ up: `
18447
+ -- ========================================================================
18448
+ -- Cells View (alias for beads table)
18449
+ -- ========================================================================
18450
+ -- This view allows code to reference "cells" while data lives in "beads"
18451
+ CREATE OR REPLACE VIEW cells AS SELECT * FROM beads;
18452
+
18453
+ -- INSTEAD OF INSERT trigger
18454
+ CREATE OR REPLACE FUNCTION cells_insert_trigger()
18455
+ RETURNS TRIGGER AS $$
18456
+ BEGIN
18457
+ INSERT INTO beads VALUES (NEW.*);
18458
+ RETURN NEW;
18459
+ END;
18460
+ $$ LANGUAGE plpgsql;
18461
+
18462
+ DROP TRIGGER IF EXISTS cells_insert ON cells;
18463
+ CREATE TRIGGER cells_insert
18464
+ INSTEAD OF INSERT ON cells
18465
+ FOR EACH ROW
18466
+ EXECUTE FUNCTION cells_insert_trigger();
18467
+
18468
+ -- INSTEAD OF UPDATE trigger
18469
+ CREATE OR REPLACE FUNCTION cells_update_trigger()
18470
+ RETURNS TRIGGER AS $$
18471
+ BEGIN
18472
+ UPDATE beads SET
18473
+ project_key = NEW.project_key,
18474
+ type = NEW.type,
18475
+ status = NEW.status,
18476
+ title = NEW.title,
18477
+ description = NEW.description,
18478
+ priority = NEW.priority,
18479
+ parent_id = NEW.parent_id,
18480
+ assignee = NEW.assignee,
18481
+ created_at = NEW.created_at,
18482
+ updated_at = NEW.updated_at,
18483
+ closed_at = NEW.closed_at,
18484
+ closed_reason = NEW.closed_reason,
18485
+ deleted_at = NEW.deleted_at,
18486
+ deleted_by = NEW.deleted_by,
18487
+ delete_reason = NEW.delete_reason,
18488
+ created_by = NEW.created_by
18489
+ WHERE id = OLD.id;
18490
+ RETURN NEW;
18491
+ END;
18492
+ $$ LANGUAGE plpgsql;
18493
+
18494
+ DROP TRIGGER IF EXISTS cells_update ON cells;
18495
+ CREATE TRIGGER cells_update
18496
+ INSTEAD OF UPDATE ON cells
18497
+ FOR EACH ROW
18498
+ EXECUTE FUNCTION cells_update_trigger();
18499
+
18500
+ -- INSTEAD OF DELETE trigger
18501
+ CREATE OR REPLACE FUNCTION cells_delete_trigger()
18502
+ RETURNS TRIGGER AS $$
18503
+ BEGIN
18504
+ DELETE FROM beads WHERE id = OLD.id;
18505
+ RETURN OLD;
18506
+ END;
18507
+ $$ LANGUAGE plpgsql;
18508
+
18509
+ DROP TRIGGER IF EXISTS cells_delete ON cells;
18510
+ CREATE TRIGGER cells_delete
18511
+ INSTEAD OF DELETE ON cells
18512
+ FOR EACH ROW
18513
+ EXECUTE FUNCTION cells_delete_trigger();
18514
+ `,
18515
+ down: `
18516
+ DROP TRIGGER IF EXISTS cells_delete ON cells;
18517
+ DROP TRIGGER IF EXISTS cells_update ON cells;
18518
+ DROP TRIGGER IF EXISTS cells_insert ON cells;
18519
+ DROP FUNCTION IF EXISTS cells_delete_trigger();
18520
+ DROP FUNCTION IF EXISTS cells_update_trigger();
18521
+ DROP FUNCTION IF EXISTS cells_insert_trigger();
18522
+ DROP VIEW IF EXISTS cells;
18523
+ `
18524
+ };
18441
18525
  beadsMigrations = [beadsMigration];
18526
+ hiveMigrations = [beadsMigration, cellsViewMigration];
18442
18527
  });
18443
18528
 
18444
18529
  // src/adapter.ts
@@ -18572,10 +18657,10 @@ function createSwarmMailAdapter(db, projectKey) {
18572
18657
  }
18573
18658
  // src/pglite.ts
18574
18659
  import { PGlite as PGlite2 } from "@electric-sql/pglite";
18575
- import { existsSync as existsSync4, mkdirSync as mkdirSync4 } from "node:fs";
18576
- import { join as join4, basename } from "node:path";
18577
- import { tmpdir as tmpdir2 } from "node:os";
18578
18660
  import { createHash } from "node:crypto";
18661
+ import { existsSync as existsSync4, mkdirSync as mkdirSync4, rmSync } from "node:fs";
18662
+ import { basename, join as join4 } from "node:path";
18663
+ import { tmpdir as tmpdir2 } from "node:os";
18579
18664
 
18580
18665
  // src/socket-adapter.ts
18581
18666
  import postgres from "postgres";
@@ -18827,6 +18912,36 @@ function getDatabasePath2(projectPath) {
18827
18912
  return join4(globalTmpDir, "streams");
18828
18913
  }
18829
18914
  var instances2 = new Map;
18915
+ function isWasmAbortError(error45) {
18916
+ if (error45 instanceof Error) {
18917
+ const message = error45.message.toLowerCase();
18918
+ return message.includes("aborted") || message.includes("unreachable code") || message.includes("runtimeerror");
18919
+ }
18920
+ return false;
18921
+ }
18922
+ async function createPGliteWithRecovery(dbPath) {
18923
+ try {
18924
+ const pglite = new PGlite2(dbPath);
18925
+ await pglite.query("SELECT 1");
18926
+ return pglite;
18927
+ } catch (error45) {
18928
+ if (isWasmAbortError(error45)) {
18929
+ console.warn(`[swarm-mail] PGLite WASM abort detected, recovering by deleting corrupted database: ${dbPath}`);
18930
+ if (existsSync4(dbPath)) {
18931
+ rmSync(dbPath, { recursive: true, force: true });
18932
+ }
18933
+ try {
18934
+ const pglite = new PGlite2(dbPath);
18935
+ await pglite.query("SELECT 1");
18936
+ console.log("[swarm-mail] Successfully recovered from corrupted database");
18937
+ return pglite;
18938
+ } catch (retryError) {
18939
+ throw new Error(`Failed to recover PGLite database after deleting corrupted data: ${retryError instanceof Error ? retryError.message : String(retryError)}`);
18940
+ }
18941
+ }
18942
+ throw error45;
18943
+ }
18944
+ }
18830
18945
  async function getSwarmMail(projectPath) {
18831
18946
  const dbPath = getDatabasePath2(projectPath);
18832
18947
  const projectKey = projectPath || dbPath;
@@ -18841,7 +18956,7 @@ async function getSwarmMail(projectPath) {
18841
18956
  console.warn(`[swarm-mail] Socket mode failed, falling back to embedded PGLite: ${error45 instanceof Error ? error45.message : String(error45)}`);
18842
18957
  }
18843
18958
  }
18844
- const pglite = new PGlite2(dbPath);
18959
+ const pglite = await createPGliteWithRecovery(dbPath);
18845
18960
  const db = wrapPGlite(pglite);
18846
18961
  const adapter = createSwarmMailAdapter(db, projectKey);
18847
18962
  await adapter.runMigrations();
@@ -19702,7 +19817,7 @@ function createHiveAdapter(db, projectKey) {
19702
19817
  await clearDirtyBead(db, projectKeyParam, cellId);
19703
19818
  },
19704
19819
  async runMigrations(projectPath) {
19705
- const { beadsMigration: beadsMigration2 } = await Promise.resolve().then(() => (init_migrations2(), exports_migrations2));
19820
+ const { hiveMigrations: hiveMigrations2 } = await Promise.resolve().then(() => (init_migrations2(), exports_migrations2));
19706
19821
  await db.exec(`
19707
19822
  CREATE TABLE IF NOT EXISTS schema_version (
19708
19823
  version INTEGER PRIMARY KEY,
@@ -19710,15 +19825,21 @@ function createHiveAdapter(db, projectKey) {
19710
19825
  description TEXT
19711
19826
  );
19712
19827
  `);
19713
- await db.exec("BEGIN");
19714
- try {
19715
- await db.exec(beadsMigration2.up);
19716
- await db.query(`INSERT INTO schema_version (version, applied_at, description) VALUES ($1, $2, $3)
19717
- ON CONFLICT (version) DO NOTHING`, [beadsMigration2.version, Date.now(), beadsMigration2.description]);
19718
- await db.exec("COMMIT");
19719
- } catch (error45) {
19720
- await db.exec("ROLLBACK");
19721
- throw error45;
19828
+ const versionResult = await db.query("SELECT MAX(version) as version FROM schema_version");
19829
+ const currentVersion = versionResult.rows[0]?.version ?? 0;
19830
+ for (const migration of hiveMigrations2) {
19831
+ if (migration.version > currentVersion) {
19832
+ await db.exec("BEGIN");
19833
+ try {
19834
+ await db.exec(migration.up);
19835
+ await db.query(`INSERT INTO schema_version (version, applied_at, description) VALUES ($1, $2, $3)
19836
+ ON CONFLICT (version) DO NOTHING`, [migration.version, Date.now(), migration.description]);
19837
+ await db.exec("COMMIT");
19838
+ } catch (error45) {
19839
+ await db.exec("ROLLBACK");
19840
+ throw error45;
19841
+ }
19842
+ }
19722
19843
  }
19723
19844
  },
19724
19845
  async getCellsStats(projectPath) {
@@ -20510,6 +20631,7 @@ export {
20510
20631
  initSwarmAgent,
20511
20632
  initAgent,
20512
20633
  importFromJSONL,
20634
+ hiveMigrations,
20513
20635
  healthCheck,
20514
20636
  hashProjectPath,
20515
20637
  getThreadMessages,
@@ -20571,6 +20693,7 @@ export {
20571
20693
  checkSwarmHealth,
20572
20694
  checkHealth,
20573
20695
  checkConflicts,
20696
+ cellsViewMigration,
20574
20697
  beadsMigrations,
20575
20698
  beadsMigration,
20576
20699
  appendEvents,
@@ -1 +1 @@
1
- {"version":3,"file":"pglite.d.ts","sourceRoot":"","sources":["../src/pglite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAQjE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAQ1D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAkB5D;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAChC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CA+B3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AA0DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,SAAS,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUvD;AAGD,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"pglite.d.ts","sourceRoot":"","sources":["../src/pglite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAM9C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIjE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAQ1D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAkB5D;AAsFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAChC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAgC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AA0DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,SAAS,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUvD;AAGD,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swarm-mail",
3
- "version": "0.3.0",
3
+ "version": "0.3.3",
4
4
  "description": "Event sourcing primitives for multi-agent coordination. Local-first, no external servers.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",