@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.
- package/dist/db/db.d.ts +1 -1
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db.js +159 -2
- package/dist/db/db.js.map +1 -1
- package/dist/db/published-shares-cache.d.ts +39 -0
- package/dist/db/published-shares-cache.d.ts.map +1 -0
- package/dist/db/published-shares-cache.js +60 -0
- package/dist/db/published-shares-cache.js.map +1 -0
- package/dist/db/queries.d.ts +58 -2
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +210 -26
- package/dist/db/queries.js.map +1 -1
- package/dist/db/search-query.d.ts +7 -0
- package/dist/db/search-query.d.ts.map +1 -1
- package/dist/db/search-query.js +26 -0
- package/dist/db/search-query.js.map +1 -1
- package/dist/db/share-drafts.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/migrations/worktree-identity-upgrade.d.ts +5 -3
- package/dist/migrations/worktree-identity-upgrade.d.ts.map +1 -1
- package/dist/migrations/worktree-identity-upgrade.js +23 -2
- package/dist/migrations/worktree-identity-upgrade.js.map +1 -1
- package/dist/observability/exporter-file.d.ts.map +1 -1
- package/dist/observability/exporter-pretty.d.ts.map +1 -1
- package/dist/observability/exporter-pretty.js.map +1 -1
- package/dist/parsers/claude.d.ts.map +1 -1
- package/dist/parsers/claude.js +4 -144
- package/dist/parsers/claude.js.map +1 -1
- package/dist/parsers/codex.d.ts +7 -1
- package/dist/parsers/codex.d.ts.map +1 -1
- package/dist/parsers/codex.js +47 -177
- package/dist/parsers/codex.js.map +1 -1
- package/dist/parsers/gemini.d.ts.map +1 -1
- package/dist/parsers/gemini.js +102 -2
- package/dist/parsers/gemini.js.map +1 -1
- package/dist/parsers/pi.d.ts +18 -0
- package/dist/parsers/pi.d.ts.map +1 -0
- package/dist/parsers/pi.js +154 -0
- package/dist/parsers/pi.js.map +1 -0
- package/dist/parsers/spool-prelude.d.ts +1 -15
- package/dist/parsers/spool-prelude.d.ts.map +1 -1
- package/dist/parsers/spool-prelude.js +3 -20
- package/dist/parsers/spool-prelude.js.map +1 -1
- package/dist/projects/groups.d.ts +4 -1
- package/dist/projects/groups.d.ts.map +1 -1
- package/dist/projects/groups.js +26 -9
- package/dist/projects/groups.js.map +1 -1
- package/dist/projects/identity.d.ts +1 -1
- package/dist/projects/identity.d.ts.map +1 -1
- package/dist/projects/identity.js +12 -1
- package/dist/projects/identity.js.map +1 -1
- package/dist/projects/sessions.js.map +1 -1
- package/dist/projects/worktree-resolvers.d.ts +3 -0
- package/dist/projects/worktree-resolvers.d.ts.map +1 -1
- package/dist/projects/worktree-resolvers.js +130 -2
- package/dist/projects/worktree-resolvers.js.map +1 -1
- package/dist/security/profile.d.ts.map +1 -1
- package/dist/security/profile.js +2 -3
- package/dist/security/profile.js.map +1 -1
- package/dist/security/purge.d.ts +16 -11
- package/dist/security/purge.d.ts.map +1 -1
- package/dist/security/purge.js +165 -24
- package/dist/security/purge.js.map +1 -1
- package/dist/security/types.d.ts +1 -1
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/worker.d.ts.map +1 -1
- package/dist/security/worker.js +44 -8
- package/dist/security/worker.js.map +1 -1
- package/dist/sync/source-paths.d.ts.map +1 -1
- package/dist/sync/source-paths.js +47 -11
- package/dist/sync/source-paths.js.map +1 -1
- package/dist/sync/syncer.d.ts +59 -1
- package/dist/sync/syncer.d.ts.map +1 -1
- package/dist/sync/syncer.js +172 -36
- package/dist/sync/syncer.js.map +1 -1
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +3 -1
- package/dist/sync/watcher.js.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/util/resolve-bin.js.map +1 -1
- 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 =
|
|
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
|
package/dist/db/db.d.ts.map
CHANGED
|
@@ -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,
|
|
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 =
|
|
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":"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"}
|
|
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"}
|
package/dist/db/queries.d.ts
CHANGED
|
@@ -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
|
-
}>):
|
|
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;
|
package/dist/db/queries.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAmB,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAIpI,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE;IAAE,YAAY,EAAE,mBAAmB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnE,MAAM,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|