@spool-lab/core 0.5.1 → 0.6.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.
Files changed (85) hide show
  1. package/dist/db/db.d.ts +1 -1
  2. package/dist/db/db.d.ts.map +1 -1
  3. package/dist/db/db.js +159 -2
  4. package/dist/db/db.js.map +1 -1
  5. package/dist/db/published-shares-cache.d.ts +39 -0
  6. package/dist/db/published-shares-cache.d.ts.map +1 -0
  7. package/dist/db/published-shares-cache.js +60 -0
  8. package/dist/db/published-shares-cache.js.map +1 -0
  9. package/dist/db/queries.d.ts +58 -2
  10. package/dist/db/queries.d.ts.map +1 -1
  11. package/dist/db/queries.js +210 -26
  12. package/dist/db/queries.js.map +1 -1
  13. package/dist/db/search-query.d.ts +7 -0
  14. package/dist/db/search-query.d.ts.map +1 -1
  15. package/dist/db/search-query.js +26 -0
  16. package/dist/db/search-query.js.map +1 -1
  17. package/dist/db/share-drafts.js.map +1 -1
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/migrations/worktree-identity-upgrade.d.ts +5 -3
  23. package/dist/migrations/worktree-identity-upgrade.d.ts.map +1 -1
  24. package/dist/migrations/worktree-identity-upgrade.js +23 -2
  25. package/dist/migrations/worktree-identity-upgrade.js.map +1 -1
  26. package/dist/observability/exporter-file.d.ts.map +1 -1
  27. package/dist/observability/exporter-pretty.d.ts.map +1 -1
  28. package/dist/observability/exporter-pretty.js.map +1 -1
  29. package/dist/parsers/claude.d.ts.map +1 -1
  30. package/dist/parsers/claude.js +4 -144
  31. package/dist/parsers/claude.js.map +1 -1
  32. package/dist/parsers/codex.d.ts +7 -1
  33. package/dist/parsers/codex.d.ts.map +1 -1
  34. package/dist/parsers/codex.js +47 -177
  35. package/dist/parsers/codex.js.map +1 -1
  36. package/dist/parsers/gemini.d.ts.map +1 -1
  37. package/dist/parsers/gemini.js +102 -2
  38. package/dist/parsers/gemini.js.map +1 -1
  39. package/dist/parsers/pi.d.ts +18 -0
  40. package/dist/parsers/pi.d.ts.map +1 -0
  41. package/dist/parsers/pi.js +154 -0
  42. package/dist/parsers/pi.js.map +1 -0
  43. package/dist/parsers/spool-prelude.d.ts +1 -15
  44. package/dist/parsers/spool-prelude.d.ts.map +1 -1
  45. package/dist/parsers/spool-prelude.js +3 -20
  46. package/dist/parsers/spool-prelude.js.map +1 -1
  47. package/dist/projects/groups.d.ts +4 -1
  48. package/dist/projects/groups.d.ts.map +1 -1
  49. package/dist/projects/groups.js +26 -9
  50. package/dist/projects/groups.js.map +1 -1
  51. package/dist/projects/identity.d.ts +1 -1
  52. package/dist/projects/identity.d.ts.map +1 -1
  53. package/dist/projects/identity.js +12 -1
  54. package/dist/projects/identity.js.map +1 -1
  55. package/dist/projects/sessions.js.map +1 -1
  56. package/dist/projects/worktree-resolvers.d.ts +3 -0
  57. package/dist/projects/worktree-resolvers.d.ts.map +1 -1
  58. package/dist/projects/worktree-resolvers.js +130 -2
  59. package/dist/projects/worktree-resolvers.js.map +1 -1
  60. package/dist/security/profile.d.ts.map +1 -1
  61. package/dist/security/profile.js +2 -3
  62. package/dist/security/profile.js.map +1 -1
  63. package/dist/security/purge.d.ts +16 -11
  64. package/dist/security/purge.d.ts.map +1 -1
  65. package/dist/security/purge.js +165 -24
  66. package/dist/security/purge.js.map +1 -1
  67. package/dist/security/types.d.ts +1 -1
  68. package/dist/security/types.d.ts.map +1 -1
  69. package/dist/security/worker.d.ts.map +1 -1
  70. package/dist/security/worker.js +44 -8
  71. package/dist/security/worker.js.map +1 -1
  72. package/dist/sync/source-paths.d.ts.map +1 -1
  73. package/dist/sync/source-paths.js +47 -11
  74. package/dist/sync/source-paths.js.map +1 -1
  75. package/dist/sync/syncer.d.ts +59 -1
  76. package/dist/sync/syncer.d.ts.map +1 -1
  77. package/dist/sync/syncer.js +172 -36
  78. package/dist/sync/syncer.js.map +1 -1
  79. package/dist/sync/watcher.d.ts.map +1 -1
  80. package/dist/sync/watcher.js +3 -1
  81. package/dist/sync/watcher.js.map +1 -1
  82. package/dist/types.d.ts +8 -1
  83. package/dist/types.d.ts.map +1 -1
  84. package/dist/util/resolve-bin.js.map +1 -1
  85. package/package.json +7 -4
package/dist/db/db.d.ts CHANGED
@@ -6,7 +6,7 @@ export declare const DB_PATH: string;
6
6
  * Latest schema version the running build knows how to migrate to.
7
7
  * Bump in lockstep with the last `db.pragma('user_version = N')` in runMigrations.
8
8
  */
9
- export declare const LATEST_SCHEMA_VERSION = 13;
9
+ export declare const LATEST_SCHEMA_VERSION = 15;
10
10
  export interface OpenOptions {
11
11
  /** Worker-thread callers should pass `false` — the main process has
12
12
  * already run migrations on the shared DB file before spawning, and
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAIrC,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAK1E,eAAO,MAAM,SAAS,QAA6D,CAAA;AACnF,eAAO,MAAM,OAAO,QAA8B,CAAA;AAElD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAMvC,MAAM,WAAW,WAAW;IAC1B;;;;oEAIgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,wBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAqBpE;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,IAAI,OAAO,CAAqB;AAExD,yGAAyG;AACzG,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAA+B;AAErF,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAqhBzD;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,QAgB9E;AA0BD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAef"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAIrC,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAK1E,eAAO,MAAM,SAAS,QAA6D,CAAA;AACnF,eAAO,MAAM,OAAO,QAA8B,CAAA;AAElD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAMvC,MAAM,WAAW,WAAW;IAC1B;;;;oEAIgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,wBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAqBpE;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,IAAI,OAAO,CAAqB;AAExD,yGAAyG;AACzG,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAA+B;AAErF,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAmqBzD;AAgCD,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,QAgB9E;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAef"}
package/dist/db/db.js CHANGED
@@ -12,7 +12,7 @@ export const DB_PATH = join(SPOOL_DIR, 'spool.db');
12
12
  * Latest schema version the running build knows how to migrate to.
13
13
  * Bump in lockstep with the last `db.pragma('user_version = N')` in runMigrations.
14
14
  */
15
- export const LATEST_SCHEMA_VERSION = 13;
15
+ export const LATEST_SCHEMA_VERSION = 15;
16
16
  let _db = null;
17
17
  let _wasNewDb = false;
18
18
  let _initialUserVersion = null;
@@ -63,7 +63,8 @@ export function runMigrations(db) {
63
63
  ('claude', '~/.claude/projects'),
64
64
  ('codex', '~/.codex/sessions'),
65
65
  ('gemini', '~/.gemini/tmp'),
66
- ('opencode', '~/.local/share/opencode/opencode.db');
66
+ ('opencode', '~/.local/share/opencode/opencode.db'),
67
+ ('pi', '~/.pi/agent/sessions');
67
68
 
68
69
  CREATE TABLE IF NOT EXISTS projects (
69
70
  id INTEGER PRIMARY KEY,
@@ -555,9 +556,161 @@ export function runMigrations(db) {
555
556
  db.pragma('user_version = 13');
556
557
  })();
557
558
  }
559
+ if (version < 14) {
560
+ // v14: dedupe (session_id, msg_uuid) and add a partial UNIQUE index.
561
+ //
562
+ // Why: append-only sync needs INSERT OR IGNORE on (session_id,
563
+ // msg_uuid) as the dedupe key. Today there is no UNIQUE constraint
564
+ // and the claude source emits some records twice (tool-use shadow
565
+ // entries — identical content, same uuid, different seq), which the
566
+ // pre-fix DELETE+INSERT sync silently re-doubled on every re-sync.
567
+ // Audit on a real archive showed 118 such pairs (all content-
568
+ // identical, 94 empty tool-only + 24 with text, 0 mixed). Cascade-
569
+ // delete on findings makes the dedupe loss-free: the redundant
570
+ // finding rows pointed at the redundant message rows, both go.
571
+ //
572
+ // After dropping the redundant rows we recompute the denormalised
573
+ // counts on the affected sessions so the Library badge and the
574
+ // Security risk numbers don't show a half-cent of drift until the
575
+ // next sync touches them.
576
+ db.transaction(() => {
577
+ const affected = db.prepare(`SELECT DISTINCT session_id FROM messages
578
+ WHERE msg_uuid IS NOT NULL
579
+ GROUP BY session_id, msg_uuid HAVING COUNT(*) > 1`).all();
580
+ db.prepare(`DELETE FROM messages
581
+ WHERE msg_uuid IS NOT NULL
582
+ AND id NOT IN (
583
+ SELECT MIN(id) FROM messages
584
+ WHERE msg_uuid IS NOT NULL
585
+ GROUP BY session_id, msg_uuid
586
+ )`).run();
587
+ const recountMsg = db.prepare(`UPDATE sessions SET message_count = (
588
+ SELECT COUNT(*) FROM messages
589
+ WHERE session_id = sessions.id AND is_sidechain = 0
590
+ ) WHERE id = ?`);
591
+ // Inline scan-count recompute mirrors security/repo.ts'
592
+ // updateSessionCounts; the kind lists below must match
593
+ // @spool-lab/redact's INFO_SEVERITY_KINDS / HIGH_SEVERITY_KINDS
594
+ // at the time this migration was authored. They are inlined (not
595
+ // imported) so the schema-migration layer can stay free of a
596
+ // detection-vocabulary dependency — a redact-side rename must
597
+ // never break opening a legacy DB.
598
+ const recountScan = db.prepare(`UPDATE sessions SET
599
+ scan_finding_count = (
600
+ SELECT COUNT(*) FROM findings
601
+ WHERE session_id = sessions.id AND state = 'active'
602
+ AND kind NOT IN ('absolute-path','ip','internal-host')
603
+ ),
604
+ scan_high_count = (
605
+ SELECT COUNT(*) FROM findings
606
+ WHERE session_id = sessions.id AND state = 'active'
607
+ AND kind IN (
608
+ 'private-key','ssh-key','cloud-cred-ini',
609
+ 'kubeconfig-token','netrc','connection-string',
610
+ 'url-creds','api-key','jwt','bearer',
611
+ 'basic-auth','env-var','generic-secret'
612
+ )
613
+ ),
614
+ scan_purged_count = (
615
+ SELECT COUNT(*) FROM findings
616
+ WHERE session_id = sessions.id AND state = 'purged'
617
+ )
618
+ WHERE id = ?`);
619
+ for (const row of affected) {
620
+ recountMsg.run(row.session_id);
621
+ recountScan.run(row.session_id);
622
+ }
623
+ // Partial index: allow NULL msg_uuid for forward-compat even
624
+ // though no current parser ever emits NULL — we don't want the
625
+ // schema to lock that behaviour in.
626
+ db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_messages_session_uuid
627
+ ON messages(session_id, msg_uuid)
628
+ WHERE msg_uuid IS NOT NULL`);
629
+ db.pragma('user_version = 14');
630
+ })();
631
+ }
632
+ if (version < 15) {
633
+ // v15: published_shares_cache — local mirror of /api/me/shares so the
634
+ // Published tab in SharesPage renders instantly on cold start and
635
+ // remains readable when the user is offline. This is NOT the source
636
+ // of truth — the canonical published index lives in the share backend's
637
+ // D1. Rows are upserted whenever myShares() succeeds; entries that
638
+ // disappear from the remote response are cleared via clearAll +
639
+ // upsertMany on each successful fetch.
640
+ //
641
+ // `draft_id` mirrors the same column on the backend's published_shares
642
+ // and is the link from a share back to its editable source in
643
+ // share_drafts. The Share popover queries this index to decide
644
+ // between the publish form and the manage view when an editor mounts
645
+ // for a given draft. Nullable only to accommodate pre-v0.5.0 rows
646
+ // published before the column existed; every new publish writes a
647
+ // non-null value.
648
+ // `client_request_id` mirrors the backend's `published_shares
649
+ // .client_request_id` — the content hash that drove the publish.
650
+ // The editor recomputes the same hash on the live draft and
651
+ // compares; a mismatch surfaces the "Unpublished edits" badge in
652
+ // the manage view so the user knows their next Republish click
653
+ // will actually change something on spool.pro.
654
+ db.exec(`
655
+ CREATE TABLE IF NOT EXISTS published_shares_cache (
656
+ id TEXT PRIMARY KEY,
657
+ title TEXT NOT NULL DEFAULT '',
658
+ visibility TEXT NOT NULL,
659
+ version INTEGER NOT NULL DEFAULT 1,
660
+ published_at INTEGER NOT NULL,
661
+ revoked_at INTEGER,
662
+ draft_id TEXT,
663
+ client_request_id TEXT,
664
+ updated_at INTEGER NOT NULL
665
+ );
666
+ CREATE INDEX IF NOT EXISTS idx_published_shares_cache_published_at
667
+ ON published_shares_cache(published_at DESC);
668
+ CREATE INDEX IF NOT EXISTS idx_published_shares_cache_draft_id
669
+ ON published_shares_cache(draft_id) WHERE draft_id IS NOT NULL;
670
+ `);
671
+ db.pragma('user_version = 15');
672
+ }
558
673
  rebuildFtsTableIfEmpty(db, 'messages', 'messages_fts_trigram');
559
674
  rebuildFtsTableIfEmpty(db, 'session_search', 'session_search_fts');
560
675
  rebuildFtsTableIfEmpty(db, 'session_search', 'session_search_fts_trigram');
676
+ // Identity resolution depends on live checkouts and worktree-tool state,
677
+ // which can improve independently of the DB schema (for example, Orca is
678
+ // installed after Spool, or a previously missing worktree is recreated).
679
+ // Reconcile cheap `path` fallbacks on every open instead of stranding them
680
+ // behind a one-time schema migration forever.
681
+ db.transaction(() => {
682
+ upgradeWorktreeIdentities(db, realFs);
683
+ })();
684
+ recreateProjectGroupsView(db);
685
+ }
686
+ /**
687
+ * project_groups_v is the single definition of cross-source project grouping
688
+ * (consumed by projects/groups.ts). It holds no data, so instead of being
689
+ * frozen at its migration-time definition (v6) it is dropped and recreated on
690
+ * every launch — old and new installs always run the definition below.
691
+ *
692
+ * The path/cwd aggregates use JSON_GROUP_ARRAY rather than GROUP_CONCAT so
693
+ * paths containing commas survive round-tripping (e.g. "/Users/me/foo,bar").
694
+ */
695
+ function recreateProjectGroupsView(db) {
696
+ db.exec(`
697
+ DROP VIEW IF EXISTS project_groups_v;
698
+ CREATE VIEW project_groups_v AS
699
+ SELECT
700
+ p.identity_kind,
701
+ p.identity_key,
702
+ MIN(p.display_name) AS display_name,
703
+ GROUP_CONCAT(DISTINCT src.name) AS sources_csv,
704
+ JSON_GROUP_ARRAY(DISTINCT p.display_path) FILTER (WHERE p.display_path IS NOT NULL AND p.display_path <> '') AS display_paths_json,
705
+ JSON_GROUP_ARRAY(DISTINCT s.cwd) FILTER (WHERE s.cwd IS NOT NULL AND s.cwd <> '') AS cwds_json,
706
+ COUNT(s.id) AS session_count,
707
+ MAX(s.started_at) AS last_session_at
708
+ FROM projects p
709
+ JOIN sources src ON src.id = p.source_id
710
+ LEFT JOIN sessions s ON s.project_id = p.id AND s.message_count > 0
711
+ WHERE p.identity_kind IS NOT NULL
712
+ GROUP BY p.identity_kind, p.identity_key;
713
+ `);
561
714
  }
562
715
  export function backfillProjectIdentities(db, fs) {
563
716
  const rows = db.prepare(`SELECT id, display_path FROM projects WHERE identity_kind IS NULL`).all();
@@ -592,6 +745,10 @@ function ensureSchemaSanity(db) {
592
745
  ensureCol('sessions', 'title', 'TEXT');
593
746
  ensureCol('sessions', 'title_source', `TEXT NOT NULL DEFAULT 'derived'`);
594
747
  ensureCol('sessions', 'message_count', 'INTEGER NOT NULL DEFAULT 0');
748
+ // v14 (and forward) reads messages.msg_uuid; legacy DBs predating
749
+ // its introduction (some test fixtures, very old installs) won't have
750
+ // the column. ALTER ADD is a no-op when present.
751
+ ensureCol('messages', 'msg_uuid', 'TEXT');
595
752
  }
596
753
  /**
597
754
  * Snapshot the DB to `<dbDir>/backups/spool-pre-v{fromVersion+1}-<ts>.db`
package/dist/db/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,eAAe,EAAmB,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAA;AAEtF,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;AACnF,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,IAAI,GAAG,GAA6B,IAAI,CAAA;AACxC,IAAI,SAAS,GAAG,KAAK,CAAA;AACrB,IAAI,mBAAmB,GAAkB,IAAI,CAAA;AAW7C,MAAM,UAAU,KAAK,CAAC,GAA2B;IAC/C,IAAI,GAAG;QAAE,OAAO,GAAG,CAAA;IACnB,MAAM,IAAI,GACR,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACpD,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,CAAA;IACxD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,iFAAiF;IACjF,SAAS,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAA;IAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAC9B,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAChC,mBAAmB,GAAI,EAAE,CAAC,MAAM,CAAC,cAAc,CAAqC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAA;IAC1G,IAAI,mBAAmB,EAAE,CAAC;QACxB,aAAa,CAAC,EAAE,CAAC,CAAA;IACnB,CAAC;IACD,GAAG,GAAG,EAAE,CAAA;IACR,OAAO,EAAE,CAAA;AACX,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,QAAQ,KAAc,OAAO,SAAS,CAAA,CAAC,CAAC;AAExD,yGAAyG;AACzG,MAAM,UAAU,qBAAqB,KAAoB,OAAO,mBAAmB,CAAA,CAAC,CAAC;AAErF,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6HP,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEP,CAAC,CAAA;IAEF,2EAA2E;IAC3E,qEAAqE;IACrE,uEAAuE;IACvE,sCAAsC;IACtC,MAAM,OAAO,GAAI,EAAE,CAAC,MAAM,CAAC,cAAc,CAAgC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;IAEzF,yEAAyE;IACzE,+DAA+D;IAC/D,oEAAoE;IACpE,sEAAsE;IACtE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,EAAE,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC5C,EAAE,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QAC3E,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;QACrE,CAAC;QACD,IAAI,WAAW,CAAC,EAAE,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC5C,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;QACrF,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACzE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAClB,EAAE,CAAC,IAAI,CAAC;;;;;SAKP,CAAC,CAAA;gBACF,EAAE,CAAC,IAAI,CAAC;;;;SAIP,CAAC,CAAA;gBACF,EAAE,CAAC,IAAI,CAAC;;;;SAIP,CAAC,CAAA;gBACF,EAAE,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;YACrD,CAAC,CAAC,EAAE,CAAA;QACN,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,0EAA0E;QAC1E,EAAE,CAAC,IAAI,CAAC;;;;;;;;;KASP,CAAC,CAAA;QACF,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,wEAAwE;QACxE,8CAA8C;QAC9C,EAAE;QACF,wEAAwE;QACxE,mEAAmE;QACnE,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9B,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;YACrD,EAAE,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;YACrD,EAAE,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;YACpD,EAAE,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;YAC5C,EAAE,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;YAClD,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;YACxC,EAAE,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;YAEpD,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;YACxD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;OAYP,CAAC,CAAA;YAEF,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;QACzD,CAAC,CAAC,EAAE,CAAA;QACJ,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BP,CAAC,CAAA;QACJ,CAAC,CAAC,EAAE,CAAA;QACJ,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC7B,yBAAyB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9B,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;OASP,CAAC,CAAA;QACJ,CAAC,CAAC,EAAE,CAAA;QACJ,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,4EAA4E;QAC5E,wEAAwE;QACxE,yEAAyE;QACzE,wDAAwD;QACxD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC;YAClD,EAAE,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAA;QACzF,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,qEAAqE;IACrE,0EAA0E;IAC1E,oEAAoE;IACpE,wEAAwE;IACxE,yBAAyB;IACzB,kBAAkB,CAAC,EAAE,CAAC,CAAA;IAEtB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,wEAAwE;QACxE,wEAAwE;QACxE,qEAAqE;QACrE,mEAAmE;QACnE,0EAA0E;QAC1E,0BAA0B;QAC1B,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9B,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,qBAAqB,CAAC,EAAE,CAAC,CAAA;QAC3B,CAAC,CAAC,EAAE,CAAA;QACJ,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,uEAAuE;QACvE,mEAAmE;QACnE,sEAAsE;QACtE,oEAAoE;QACpE,sEAAsE;QACtE,2EAA2E;QAC3E,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,yBAAyB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACvC,CAAC,CAAC,EAAE,CAAA;QACJ,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,iEAAiE;QACjE,sEAAsE;QACtE,mEAAmE;QACnE,gEAAgE;QAChE,EAAE;QACF,6BAA6B;QAC7B,qEAAqE;QACrE,oEAAoE;QACpE,qBAAqB;QACrB,iEAAiE;QACjE,gEAAgE;QAChE,kEAAkE;QAClE,qEAAqE;QACrE,uBAAuB;QACvB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;KAiBP,CAAC,CAAA;QACF,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,+DAA+D;QAC/D,uDAAuD;QACvD,wDAAwD;QACxD,iEAAiE;QACjE,iEAAiE;QACjE,2DAA2D;QAC3D,6DAA6D;QAC7D,6DAA6D;QAC7D,wDAAwD;QACxD,EAAE;QACF,+DAA+D;QAC/D,8DAA8D;QAC9D,4DAA4D;QAC5D,6DAA6D;QAC7D,6DAA6D;QAC7D,uDAAuD;QACvD,gDAAgD;QAChD,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCP,CAAC,CAAA;YACF,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAChC,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,4EAA4E;QAC5E,oFAAoF;QACpF,8EAA8E;QAC9E,8EAA8E;QAC9E,0EAA0E;QAC1E,8EAA8E;QAC9E,8EAA8E;QAC9E,2EAA2E;QAC3E,gFAAgF;QAChF,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,MAAM,cAAc,GAAI,EAAE,CAAC,OAAO,CAChC,8CAA8C,CAC/C,CAAC,GAAG,EAAiC,EAAE,EAAE,CAAA;YAC1C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,EAAE,CAAC,OAAO,CACR;;wDAE8C,CAC/C,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBACrB,EAAE,CAAC,OAAO,CACR;;wDAE8C,CAC/C,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YACvB,CAAC;YACD,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAChC,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,sBAAsB,CAAC,EAAE,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAA;IAC9D,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;IAClE,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,EAAE,4BAA4B,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAAqB,EAAE,EAAc;IAC7E,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,mEAAmE,CACpE,CAAC,GAAG,EAA4C,CAAA;IACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB;;kBAEc,CACf,CAAA;IACD,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;YAC9C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAED,SAAS,WAAW,CAAC,EAAqB,EAAE,IAAY;IACtD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,+EAA+E,CAChF,CAAC,GAAG,CAAC,IAAI,CAAiC,CAAA;IAC3C,OAAO,GAAG,KAAK,SAAS,CAAA;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,EAAqB,EAAE,KAAa,EAAE,MAAc;IACxE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,KAAK,GAAG,CAAC,CAAC,GAAG,EAA6B,CAAA;IACvF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,wEAAwE;IACxE,qEAAqE;IACrE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAQ,EAAE;QAClE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC;YAAE,EAAE,CAAC,IAAI,CAAC,eAAe,KAAK,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC,CAAA;IAC7F,CAAC,CAAA;IACD,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACtC,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,iCAAiC,CAAC,CAAA;IACxE,SAAS,CAAC,UAAU,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAA;AACtE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAqB,EACrB,WAAmB;IAEnB,IAAI,EAAE,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAA;IACtB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAE7C,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAmB,CAAA;IACxF,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAA;IAClD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,WAAW,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC5E,EAAE,CAAC,IAAI,CAAC,gBAAgB,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1D,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,sBAAsB,CAC7B,EAAqB,EACrB,YAA2C,EAC3C,QAGgC;IAEhC,MAAM,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAA;IAClH,IAAI,WAAW,KAAK,CAAC;QAAE,OAAM;IAE7B,MAAM,UAAU,GAAI,EAAE,CAAC,OAAO,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAA;IAC7G,IAAI,UAAU,GAAG,CAAC;QAAE,OAAM;IAE1B,EAAE,CAAC,IAAI,CAAC,eAAe,QAAQ,IAAI,QAAQ,qBAAqB,CAAC,CAAA;AACnE,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type Database from 'better-sqlite3';
2
+ /** Row shape persisted in `published_shares_cache`. Mirrors the
3
+ * `MyShare` payload the share-backend returns from `/api/me/shares`,
4
+ * with timestamps stored as epoch-millis integers. `draft_id` is the
5
+ * link back to share_drafts; non-null for every share published from
6
+ * v0.5.0 onward, nullable for pre-existing rows surfaced through
7
+ * legacy `/api/me/shares` responses. `client_request_id` is the
8
+ * publish-time content hash, used by the editor's "Unpublished
9
+ * edits" badge to detect drift between the live draft and the
10
+ * currently-published snapshot. */
11
+ export interface PublishedShareCacheItem {
12
+ id: string;
13
+ title: string;
14
+ visibility: string;
15
+ version: number;
16
+ published_at: number;
17
+ revoked_at: number | null;
18
+ draft_id: string | null;
19
+ client_request_id: string | null;
20
+ updated_at: number;
21
+ }
22
+ /** Returns all cached published shares ordered by publish date desc. */
23
+ export declare function listAll(db: Database.Database): PublishedShareCacheItem[];
24
+ /** Look up the most recent share for a given draft, or null. The index
25
+ * on draft_id makes this O(log n); we return the most recently
26
+ * published row in the rare case multiple shares share a draft_id
27
+ * (e.g., a revoke + re-publish that bumped the slug). */
28
+ export declare function getByDraftId(db: Database.Database, draftId: string): PublishedShareCacheItem | null;
29
+ /** Per-row upsert. Useful for partial updates (e.g., a single revoke);
30
+ * the renderer typically uses {@link replaceAll} for full syncs. */
31
+ export declare function upsertMany(db: Database.Database, items: ReadonlyArray<PublishedShareCacheItem>): void;
32
+ /** Replaces the cache contents with `items` (wipes rows not present). */
33
+ export declare function replaceAll(db: Database.Database, items: ReadonlyArray<PublishedShareCacheItem>): void;
34
+ export declare function clearAll(db: Database.Database): void;
35
+ /** Flip a single row's revoked_at without touching the rest. Used by
36
+ * the renderer-side revoke IPC so the cache (and any open editor)
37
+ * reflects the unpublish without waiting for the next myShares poll. */
38
+ export declare function markRevoked(db: Database.Database, id: string, revokedAt: number): void;
39
+ //# sourceMappingURL=published-shares-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"published-shares-cache.d.ts","sourceRoot":"","sources":["../../src/db/published-shares-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAE1C;;;;;;;;oCAQoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;CACnB;AAKD,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,uBAAuB,EAAE,CAIxE;AAED;;;0DAG0D;AAC1D,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,IAAI,CAWhC;AAED;qEACqE;AACrE,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,GAC5C,IAAI,CAiBN;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,GAC5C,IAAI,CASN;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEpD;AAED;;yEAEyE;AACzE,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,IAAI,CAMN"}
@@ -0,0 +1,60 @@
1
+ const COLS = 'id, title, visibility, version, published_at, revoked_at, draft_id, client_request_id, updated_at';
2
+ /** Returns all cached published shares ordered by publish date desc. */
3
+ export function listAll(db) {
4
+ return db
5
+ .prepare(`SELECT ${COLS} FROM published_shares_cache ORDER BY published_at DESC`)
6
+ .all();
7
+ }
8
+ /** Look up the most recent share for a given draft, or null. The index
9
+ * on draft_id makes this O(log n); we return the most recently
10
+ * published row in the rare case multiple shares share a draft_id
11
+ * (e.g., a revoke + re-publish that bumped the slug). */
12
+ export function getByDraftId(db, draftId) {
13
+ return (db
14
+ .prepare(`SELECT ${COLS} FROM published_shares_cache
15
+ WHERE draft_id = ?
16
+ ORDER BY published_at DESC
17
+ LIMIT 1`)
18
+ .get(draftId) ?? null);
19
+ }
20
+ /** Per-row upsert. Useful for partial updates (e.g., a single revoke);
21
+ * the renderer typically uses {@link replaceAll} for full syncs. */
22
+ export function upsertMany(db, items) {
23
+ const stmt = db.prepare(`INSERT INTO published_shares_cache (${COLS})
24
+ VALUES (@id, @title, @visibility, @version, @published_at, @revoked_at, @draft_id, @client_request_id, @updated_at)
25
+ ON CONFLICT(id) DO UPDATE SET
26
+ title = excluded.title,
27
+ visibility = excluded.visibility,
28
+ version = excluded.version,
29
+ published_at = excluded.published_at,
30
+ revoked_at = excluded.revoked_at,
31
+ draft_id = excluded.draft_id,
32
+ client_request_id = excluded.client_request_id,
33
+ updated_at = excluded.updated_at`);
34
+ db.transaction(() => {
35
+ for (const it of items)
36
+ stmt.run(it);
37
+ })();
38
+ }
39
+ /** Replaces the cache contents with `items` (wipes rows not present). */
40
+ export function replaceAll(db, items) {
41
+ db.transaction(() => {
42
+ db.prepare('DELETE FROM published_shares_cache').run();
43
+ const stmt = db.prepare(`INSERT INTO published_shares_cache (${COLS})
44
+ VALUES (@id, @title, @visibility, @version, @published_at, @revoked_at, @draft_id, @client_request_id, @updated_at)`);
45
+ for (const it of items)
46
+ stmt.run(it);
47
+ })();
48
+ }
49
+ export function clearAll(db) {
50
+ db.prepare('DELETE FROM published_shares_cache').run();
51
+ }
52
+ /** Flip a single row's revoked_at without touching the rest. Used by
53
+ * the renderer-side revoke IPC so the cache (and any open editor)
54
+ * reflects the unpublish without waiting for the next myShares poll. */
55
+ export function markRevoked(db, id, revokedAt) {
56
+ db.prepare(`UPDATE published_shares_cache
57
+ SET revoked_at = ?, updated_at = ?
58
+ WHERE id = ?`).run(revokedAt, revokedAt, id);
59
+ }
60
+ //# sourceMappingURL=published-shares-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"published-shares-cache.js","sourceRoot":"","sources":["../../src/db/published-shares-cache.ts"],"names":[],"mappings":"AAuBA,MAAM,IAAI,GACR,mGAAmG,CAAA;AAErG,wEAAwE;AACxE,MAAM,UAAU,OAAO,CAAC,EAAqB;IAC3C,OAAO,EAAE;SACN,OAAO,CAAC,UAAU,IAAI,yDAAyD,CAAC;SAChF,GAAG,EAA+B,CAAA;AACvC,CAAC;AAED;;;0DAG0D;AAC1D,MAAM,UAAU,YAAY,CAC1B,EAAqB,EACrB,OAAe;IAEf,OAAO,CACJ,EAAE;SACA,OAAO,CACN,UAAU,IAAI;;;iBAGL,CACV;SACA,GAAG,CAAC,OAAO,CAAyC,IAAI,IAAI,CAChE,CAAA;AACH,CAAC;AAED;qEACqE;AACrE,MAAM,UAAU,UAAU,CACxB,EAAqB,EACrB,KAA6C;IAE7C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,uCAAuC,IAAI;;;;;;;;;;+CAUA,CAC5C,CAAA;IACD,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,KAAK,MAAM,EAAE,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CACxB,EAAqB,EACrB,KAA6C;IAE7C,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAE,CAAA;QACtD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,uCAAuC,IAAI;2HAC0E,CACtH,CAAA;QACD,KAAK,MAAM,EAAE,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAqB;IAC5C,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAE,CAAA;AACxD,CAAC;AAED;;yEAEyE;AACzE,MAAM,UAAU,WAAW,CACzB,EAAqB,EACrB,EAAU,EACV,SAAiB;IAEjB,EAAE,CAAC,OAAO,CACR;;kBAEc,CACf,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AACjC,CAAC"}
@@ -31,6 +31,20 @@ export declare function insertSpoolAuthoredSession(db: Database.Database, opts:
31
31
  export declare function getSessionMtime(db: Database.Database, filePath: string): string | null;
32
32
  export declare function deleteSessionByFilePath(db: Database.Database, filePath: string): boolean;
33
33
  export declare function getAllSessionMtimes(db: Database.Database): Map<string, string>;
34
+ /** Sync mode for {@link upsertSession}.
35
+ *
36
+ * - `rewrite`: today's behaviour. When the session already exists,
37
+ * DELETE all its messages so the caller's {@link insertMessages}
38
+ * can fully repopulate from the parsed source. Used for first
39
+ * syncs, source-rewrite recoveries, and the explicit "Refresh from
40
+ * source" action.
41
+ * - `append`: skip the DELETE. The caller's {@link insertMessages}
42
+ * will INSERT OR IGNORE against the partial UNIQUE index on
43
+ * (session_id, msg_uuid), so existing rows survive and any
44
+ * user-side state attached to them (Security Scan purge/dismiss,
45
+ * star, etc.) persists across the re-sync — the root-cause fix for
46
+ * "purge gets undone by re-sync". */
47
+ export type UpsertSessionMode = 'rewrite' | 'append';
34
48
  export declare function upsertSession(db: Database.Database, opts: {
35
49
  projectId: number;
36
50
  sourceId: number;
@@ -44,13 +58,27 @@ export declare function upsertSession(db: Database.Database, opts: {
44
58
  cwd: string;
45
59
  model: string;
46
60
  rawFileMtime: string;
47
- }): number;
61
+ }, mode?: UpsertSessionMode): number;
48
62
  export declare function upsertSessionSearch(db: Database.Database, opts: {
49
63
  sessionId: number;
50
64
  title: string;
51
65
  userText: string;
52
66
  assistantText: string;
53
67
  }): void;
68
+ /** Rebuild the denormalized session-level search document from the authoritative
69
+ * session title and current message rows. Security purge calls this inside its
70
+ * transaction so raw values cannot survive in either session-level FTS index. */
71
+ export declare function refreshSessionSearchFromMessages(db: Database.Database, sessionId: number): void;
72
+ /** Insert message rows, skipping any that collide with the partial
73
+ * UNIQUE index on (session_id, msg_uuid). Returns the count of rows
74
+ * actually inserted — callers use this to decide whether anything
75
+ * changed (NULL scan_profile, fire onSessionChanged) or to skip
76
+ * downstream work when re-sync was a no-op.
77
+ *
78
+ * The ON CONFLICT clause must restate the same `WHERE msg_uuid IS
79
+ * NOT NULL` predicate as the index it targets; SQLite requires the
80
+ * predicates to match before it considers a partial index for
81
+ * conflict resolution. */
54
82
  export declare function insertMessages(db: Database.Database, sessionId: number, sourceId: number, messages: Array<{
55
83
  uuid: string;
56
84
  parentUuid: string | null;
@@ -60,7 +88,35 @@ export declare function insertMessages(db: Database.Database, sessionId: number,
60
88
  isSidechain: boolean;
61
89
  toolNames: string[];
62
90
  seq: number;
63
- }>): void;
91
+ }>): number;
92
+ /** Lightweight snapshot used by the syncer's `classifySync` heuristic
93
+ * to decide between append and rewrite paths — just the row count
94
+ * and the leading uuid in seq order, joined off `session_uuid` so the
95
+ * caller doesn't pay a second `SELECT id FROM sessions` round-trip
96
+ * (upsertSession does that lookup anyway right after).
97
+ *
98
+ * We deliberately do NOT pull `content_text` here: comparing parsed-
99
+ * vs-stored content would trigger rewrite whenever Security Scan has
100
+ * already replaced the raw value with its mask, undoing the purge on
101
+ * every re-sync. Only msg_uuid-bearing rows participate in the dedupe
102
+ * index, so NULL-uuid rows are excluded.
103
+ *
104
+ * Returns `total === 0, firstUuid === null` both for "session row
105
+ * doesn't exist yet" and "session exists with no msg_uuid-bearing
106
+ * rows" — classifySync treats both as `rewrite` so the two-state
107
+ * collapse is intentional, not a lost signal. */
108
+ export declare function getMessageSnapshot(db: Database.Database, sessionUuid: string): {
109
+ firstUuid: string | null;
110
+ lastUuid: string | null;
111
+ total: number;
112
+ };
113
+ /** Refresh `sessions.message_count` for a single session from the
114
+ * actual non-sidechain row count. Called after every sync's INSERT
115
+ * block so the denormalised count tracks the deduped truth — the
116
+ * parser's `parsed.messages.length` would re-introduce the v14-fixed
117
+ * inflation for source formats (claude) that emit some records
118
+ * twice. */
119
+ export declare function recomputeMessageCount(db: Database.Database, sessionId: number): void;
64
120
  export declare const SESSION_SELECT = "\n SELECT\n s.id, s.project_id AS projectId, s.source_id AS sourceId,\n s.session_uuid AS sessionUuid, s.file_path AS filePath,\n s.title, s.started_at AS startedAt, s.ended_at AS endedAt,\n s.message_count AS messageCount, s.has_tool_use AS hasToolUse,\n s.cwd, s.model,\n s.scan_finding_count AS scanFindingCount,\n s.scan_high_count AS scanHighCount,\n s.scan_purged_count AS scanPurgedCount,\n s.scan_completed_at AS scanCompletedAt,\n src.name AS source,\n p.display_path AS projectDisplayPath,\n p.display_name AS projectDisplayName\n FROM sessions s\n JOIN sources src ON src.id = s.source_id\n JOIN projects p ON p.id = s.project_id";
65
121
  export declare function getSessionWithMessages(db: Database.Database, sessionUuid: string): {
66
122
  session: Session;
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}