@spool-lab/core 0.5.2 → 0.6.1
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/README.md +22 -14
- package/dist/db/db.d.ts +2 -2
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db.js +106 -15
- package/dist/db/db.js.map +1 -1
- package/dist/db/native-binding.d.ts +21 -0
- package/dist/db/native-binding.d.ts.map +1 -0
- package/dist/db/native-binding.js +32 -0
- package/dist/db/native-binding.js.map +1 -0
- 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 +5 -0
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +219 -80
- 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 +33 -7
- package/dist/db/search-query.js.map +1 -1
- package/dist/db/share-drafts.d.ts.map +1 -1
- package/dist/db/share-drafts.js +1 -3
- package/dist/db/share-drafts.js.map +1 -1
- package/dist/doctor/checks/config.d.ts.map +1 -1
- package/dist/doctor/checks/config.js +3 -3
- package/dist/doctor/checks/config.js.map +1 -1
- package/dist/doctor/checks/db.d.ts.map +1 -1
- package/dist/doctor/checks/db.js +36 -18
- package/dist/doctor/checks/db.js.map +1 -1
- package/dist/doctor/checks/env.d.ts.map +1 -1
- package/dist/doctor/checks/env.js +5 -1
- package/dist/doctor/checks/env.js.map +1 -1
- package/dist/doctor/checks/index.js +2 -2
- package/dist/doctor/checks/index.js.map +1 -1
- package/dist/doctor/checks/native.d.ts.map +1 -1
- package/dist/doctor/checks/native.js.map +1 -1
- package/dist/doctor/checks/versions.d.ts.map +1 -1
- package/dist/doctor/checks/versions.js +2 -2
- package/dist/doctor/checks/versions.js.map +1 -1
- package/dist/doctor/preflight.js +2 -2
- package/dist/doctor/preflight.js.map +1 -1
- package/dist/doctor/runner.d.ts.map +1 -1
- package/dist/doctor/runner.js +1 -1
- package/dist/doctor/runner.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/agent-search-cleanup.d.ts.map +1 -1
- package/dist/migrations/agent-search-cleanup.js +10 -6
- package/dist/migrations/agent-search-cleanup.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 +26 -3
- package/dist/migrations/worktree-identity-upgrade.js.map +1 -1
- package/dist/observability/exporter-file.d.ts.map +1 -1
- package/dist/observability/exporter-file.js +14 -6
- package/dist/observability/exporter-file.js.map +1 -1
- package/dist/observability/exporter-pretty.d.ts.map +1 -1
- package/dist/observability/exporter-pretty.js +13 -7
- package/dist/observability/exporter-pretty.js.map +1 -1
- package/dist/observability/layer.d.ts.map +1 -1
- package/dist/observability/layer.js +1 -1
- package/dist/observability/layer.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 +43 -186
- package/dist/parsers/codex.js.map +1 -1
- package/dist/parsers/gemini.d.ts.map +1 -1
- package/dist/parsers/gemini.js +113 -13
- package/dist/parsers/gemini.js.map +1 -1
- package/dist/parsers/opencode.d.ts.map +1 -1
- package/dist/parsers/opencode.js +67 -33
- package/dist/parsers/opencode.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 +155 -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/fs.d.ts.map +1 -1
- package/dist/projects/fs.js +1 -1
- package/dist/projects/fs.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 +32 -11
- package/dist/projects/groups.js.map +1 -1
- package/dist/projects/identity-synthesizers.d.ts.map +1 -1
- package/dist/projects/identity-synthesizers.js.map +1 -1
- package/dist/projects/identity.d.ts +2 -2
- package/dist/projects/identity.d.ts.map +1 -1
- package/dist/projects/identity.js +24 -13
- package/dist/projects/identity.js.map +1 -1
- package/dist/projects/sessions.d.ts.map +1 -1
- package/dist/projects/sessions.js +11 -10
- 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 +144 -8
- package/dist/projects/worktree-resolvers.js.map +1 -1
- package/dist/security/index.d.ts +2 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/maintenance.d.ts.map +1 -1
- package/dist/security/maintenance.js +1 -1
- package/dist/security/maintenance.js.map +1 -1
- package/dist/security/profile.d.ts.map +1 -1
- package/dist/security/profile.js +6 -4
- package/dist/security/profile.js.map +1 -1
- package/dist/security/purge.d.ts +2 -2
- package/dist/security/purge.d.ts.map +1 -1
- package/dist/security/purge.js +31 -15
- package/dist/security/purge.js.map +1 -1
- package/dist/security/repo.d.ts +1 -1
- package/dist/security/repo.d.ts.map +1 -1
- package/dist/security/repo.js +64 -37
- package/dist/security/repo.js.map +1 -1
- package/dist/security/scan.d.ts +2 -2
- package/dist/security/scan.d.ts.map +1 -1
- package/dist/security/scan.js +6 -4
- package/dist/security/scan.js.map +1 -1
- package/dist/security/worker.d.ts +2 -2
- package/dist/security/worker.d.ts.map +1 -1
- package/dist/security/worker.js +5 -11
- package/dist/security/worker.js.map +1 -1
- package/dist/sync/source-paths.d.ts.map +1 -1
- package/dist/sync/source-paths.js +46 -16
- package/dist/sync/source-paths.js.map +1 -1
- package/dist/sync/syncer.d.ts.map +1 -1
- package/dist/sync/syncer.js +112 -80
- package/dist/sync/syncer.js.map +1 -1
- package/dist/sync/watcher.d.ts +1 -1
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +17 -4
- 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.d.ts.map +1 -1
- package/dist/util/resolve-bin.js +40 -25
- package/dist/util/resolve-bin.js.map +1 -1
- package/package.json +35 -17
package/README.md
CHANGED
|
@@ -1,37 +1,45 @@
|
|
|
1
1
|
# @spool-lab/core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Local Session preparation engine used by the Spool desktop app and CLI.
|
|
4
4
|
|
|
5
|
-
This package
|
|
5
|
+
This package reads provider Sessions, stores normalized metadata and messages in SQLite, groups Sessions by project, maintains private organization state, and provides local full-text retrieval. Preparation is separate from publishing; Hub transport and public visibility do not live in this package.
|
|
6
6
|
|
|
7
7
|
## Usage
|
|
8
8
|
|
|
9
9
|
```ts
|
|
10
|
-
import { getDB,
|
|
10
|
+
import { getDB, listRecentSessions, searchFragments, Syncer } from '@spool-lab/core'
|
|
11
11
|
|
|
12
12
|
const db = getDB()
|
|
13
13
|
|
|
14
|
-
// Search across all indexed sessions
|
|
15
14
|
const results = searchFragments(db, 'authentication middleware', { limit: 10 })
|
|
16
|
-
|
|
17
|
-
// List recent sessions
|
|
18
15
|
const sessions = listRecentSessions(db, 20)
|
|
19
16
|
|
|
20
|
-
// Sync new sessions from Claude, Codex, Gemini, OpenCode
|
|
21
17
|
const syncer = new Syncer(db)
|
|
22
18
|
syncer.syncAll()
|
|
23
19
|
```
|
|
24
20
|
|
|
25
|
-
##
|
|
21
|
+
## Responsibilities
|
|
22
|
+
|
|
23
|
+
- provider Session loading for Claude Code, Codex CLI, Gemini CLI, OpenCode, and Pi
|
|
24
|
+
- project grouping across agent sources
|
|
25
|
+
- incremental file and database ingestion
|
|
26
|
+
- SQLite metadata and message storage
|
|
27
|
+
- FTS5 retrieval, including CJK-friendly indexes
|
|
28
|
+
- private pins and desktop state
|
|
29
|
+
- security-scan storage and maintenance helpers
|
|
30
|
+
|
|
31
|
+
Browser-safe canonical records, views, and composed Session diffs belong to `@spool-lab/session-kit`.
|
|
26
32
|
|
|
27
|
-
|
|
28
|
-
- **Full-text search** — FTS5 with unicode + trigram indexes for CJK support
|
|
29
|
-
- **Watcher** — incremental indexing as new session files arrive
|
|
30
|
-
- **Stars** — pin sessions for quick recall
|
|
33
|
+
## Native Dependency
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
This package depends on [`better-sqlite3`](https://github.com/WiseLibs/better-sqlite3). Repository tooling caches native addons by platform, architecture, and `NODE_MODULE_VERSION`, so Node and Electron builds can coexist. `pnpm spool` prepares a missing Node cache automatically; Desktop wrappers prepare the Electron cache before launch.
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
Manual recovery remains available:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pnpm run rebuild:native:node
|
|
41
|
+
pnpm run rebuild:native:electron
|
|
42
|
+
```
|
|
35
43
|
|
|
36
44
|
## License
|
|
37
45
|
|
package/dist/db/db.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Database from 'better-sqlite3';
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
2
|
import { type IdentityFs } from '../projects/identity.js';
|
|
3
3
|
export declare const SPOOL_DIR: string;
|
|
4
4
|
export declare const DB_PATH: string;
|
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAK1C,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAG1E,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,CAElC;AAED,yGAAyG;AACzG,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAErD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAuqBzD;AAgCD,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,QAgB9E;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAejG"}
|
package/dist/db/db.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { existsSync, mkdirSync, statSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
|
-
import { existsSync, mkdirSync, statSync } from 'node:fs';
|
|
5
|
-
import { computeIdentity } from '../projects/identity.js';
|
|
6
|
-
import { realFs } from '../projects/fs.js';
|
|
7
4
|
import { runAgentSearchCleanup } from '../migrations/agent-search-cleanup.js';
|
|
8
5
|
import { upgradeWorktreeIdentities } from '../migrations/worktree-identity-upgrade.js';
|
|
6
|
+
import { realFs } from '../projects/fs.js';
|
|
7
|
+
import { computeIdentity } from '../projects/identity.js';
|
|
8
|
+
import { openDatabase } from './native-binding.js';
|
|
9
9
|
export const SPOOL_DIR = process.env['SPOOL_DATA_DIR'] ?? join(homedir(), '.spool');
|
|
10
10
|
export const DB_PATH = join(SPOOL_DIR, 'spool.db');
|
|
11
11
|
/**
|
|
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;
|
|
@@ -27,11 +27,12 @@ export function getDB(arg) {
|
|
|
27
27
|
// - wasNewDb=true → DB file did not exist; this is a first-time install
|
|
28
28
|
// - wasNewDb=false → upgrade path, and initialUserVersion tells you from where
|
|
29
29
|
_wasNewDb = !existsSync(DB_PATH);
|
|
30
|
-
const db =
|
|
30
|
+
const db = openDatabase(DB_PATH);
|
|
31
31
|
db.pragma('journal_mode = WAL');
|
|
32
32
|
db.pragma('foreign_keys = ON');
|
|
33
33
|
db.pragma('busy_timeout = 5000');
|
|
34
|
-
_initialUserVersion =
|
|
34
|
+
_initialUserVersion =
|
|
35
|
+
db.pragma('user_version')[0]?.user_version ?? 0;
|
|
35
36
|
if (shouldRunMigrations) {
|
|
36
37
|
runMigrations(db);
|
|
37
38
|
}
|
|
@@ -39,9 +40,13 @@ export function getDB(arg) {
|
|
|
39
40
|
return db;
|
|
40
41
|
}
|
|
41
42
|
/** True if the DB file did not exist before this process opened it. */
|
|
42
|
-
export function wasNewDb() {
|
|
43
|
+
export function wasNewDb() {
|
|
44
|
+
return _wasNewDb;
|
|
45
|
+
}
|
|
43
46
|
/** user_version of the DB before any migrations ran this process. Null if getDB() hasn't been called. */
|
|
44
|
-
export function getInitialUserVersion() {
|
|
47
|
+
export function getInitialUserVersion() {
|
|
48
|
+
return _initialUserVersion;
|
|
49
|
+
}
|
|
45
50
|
export function getDBSize() {
|
|
46
51
|
try {
|
|
47
52
|
return statSync(DB_PATH).size;
|
|
@@ -63,7 +68,8 @@ export function runMigrations(db) {
|
|
|
63
68
|
('claude', '~/.claude/projects'),
|
|
64
69
|
('codex', '~/.codex/sessions'),
|
|
65
70
|
('gemini', '~/.gemini/tmp'),
|
|
66
|
-
('opencode', '~/.local/share/opencode/opencode.db')
|
|
71
|
+
('opencode', '~/.local/share/opencode/opencode.db'),
|
|
72
|
+
('pi', '~/.pi/agent/sessions');
|
|
67
73
|
|
|
68
74
|
CREATE TABLE IF NOT EXISTS projects (
|
|
69
75
|
id INTEGER PRIMARY KEY,
|
|
@@ -573,9 +579,11 @@ export function runMigrations(db) {
|
|
|
573
579
|
// Security risk numbers don't show a half-cent of drift until the
|
|
574
580
|
// next sync touches them.
|
|
575
581
|
db.transaction(() => {
|
|
576
|
-
const affected = db
|
|
582
|
+
const affected = db
|
|
583
|
+
.prepare(`SELECT DISTINCT session_id FROM messages
|
|
577
584
|
WHERE msg_uuid IS NOT NULL
|
|
578
|
-
GROUP BY session_id, msg_uuid HAVING COUNT(*) > 1`)
|
|
585
|
+
GROUP BY session_id, msg_uuid HAVING COUNT(*) > 1`)
|
|
586
|
+
.all();
|
|
579
587
|
db.prepare(`DELETE FROM messages
|
|
580
588
|
WHERE msg_uuid IS NOT NULL
|
|
581
589
|
AND id NOT IN (
|
|
@@ -628,12 +636,93 @@ export function runMigrations(db) {
|
|
|
628
636
|
db.pragma('user_version = 14');
|
|
629
637
|
})();
|
|
630
638
|
}
|
|
639
|
+
if (version < 15) {
|
|
640
|
+
// v15: published_shares_cache — local mirror of /api/me/shares so the
|
|
641
|
+
// Published tab in SharesPage renders instantly on cold start and
|
|
642
|
+
// remains readable when the user is offline. This is NOT the source
|
|
643
|
+
// of truth — the canonical published index lives in the share backend's
|
|
644
|
+
// D1. Rows are upserted whenever myShares() succeeds; entries that
|
|
645
|
+
// disappear from the remote response are cleared via clearAll +
|
|
646
|
+
// upsertMany on each successful fetch.
|
|
647
|
+
//
|
|
648
|
+
// `draft_id` mirrors the same column on the backend's published_shares
|
|
649
|
+
// and is the link from a share back to its editable source in
|
|
650
|
+
// share_drafts. The Share popover queries this index to decide
|
|
651
|
+
// between the publish form and the manage view when an editor mounts
|
|
652
|
+
// for a given draft. Nullable only to accommodate pre-v0.5.0 rows
|
|
653
|
+
// published before the column existed; every new publish writes a
|
|
654
|
+
// non-null value.
|
|
655
|
+
// `client_request_id` mirrors the backend's `published_shares
|
|
656
|
+
// .client_request_id` — the content hash that drove the publish.
|
|
657
|
+
// The editor recomputes the same hash on the live draft and
|
|
658
|
+
// compares; a mismatch surfaces the "Unpublished edits" badge in
|
|
659
|
+
// the manage view so the user knows their next Republish click
|
|
660
|
+
// will actually change something on spool.pro.
|
|
661
|
+
db.exec(`
|
|
662
|
+
CREATE TABLE IF NOT EXISTS published_shares_cache (
|
|
663
|
+
id TEXT PRIMARY KEY,
|
|
664
|
+
title TEXT NOT NULL DEFAULT '',
|
|
665
|
+
visibility TEXT NOT NULL,
|
|
666
|
+
version INTEGER NOT NULL DEFAULT 1,
|
|
667
|
+
published_at INTEGER NOT NULL,
|
|
668
|
+
revoked_at INTEGER,
|
|
669
|
+
draft_id TEXT,
|
|
670
|
+
client_request_id TEXT,
|
|
671
|
+
updated_at INTEGER NOT NULL
|
|
672
|
+
);
|
|
673
|
+
CREATE INDEX IF NOT EXISTS idx_published_shares_cache_published_at
|
|
674
|
+
ON published_shares_cache(published_at DESC);
|
|
675
|
+
CREATE INDEX IF NOT EXISTS idx_published_shares_cache_draft_id
|
|
676
|
+
ON published_shares_cache(draft_id) WHERE draft_id IS NOT NULL;
|
|
677
|
+
`);
|
|
678
|
+
db.pragma('user_version = 15');
|
|
679
|
+
}
|
|
631
680
|
rebuildFtsTableIfEmpty(db, 'messages', 'messages_fts_trigram');
|
|
632
681
|
rebuildFtsTableIfEmpty(db, 'session_search', 'session_search_fts');
|
|
633
682
|
rebuildFtsTableIfEmpty(db, 'session_search', 'session_search_fts_trigram');
|
|
683
|
+
// Identity resolution depends on live checkouts and worktree-tool state,
|
|
684
|
+
// which can improve independently of the DB schema (for example, Orca is
|
|
685
|
+
// installed after Spool, or a previously missing worktree is recreated).
|
|
686
|
+
// Reconcile cheap `path` fallbacks on every open instead of stranding them
|
|
687
|
+
// behind a one-time schema migration forever.
|
|
688
|
+
db.transaction(() => {
|
|
689
|
+
upgradeWorktreeIdentities(db, realFs);
|
|
690
|
+
})();
|
|
691
|
+
recreateProjectGroupsView(db);
|
|
692
|
+
}
|
|
693
|
+
/**
|
|
694
|
+
* project_groups_v is the single definition of cross-source project grouping
|
|
695
|
+
* (consumed by projects/groups.ts). It holds no data, so instead of being
|
|
696
|
+
* frozen at its migration-time definition (v6) it is dropped and recreated on
|
|
697
|
+
* every launch — old and new installs always run the definition below.
|
|
698
|
+
*
|
|
699
|
+
* The path/cwd aggregates use JSON_GROUP_ARRAY rather than GROUP_CONCAT so
|
|
700
|
+
* paths containing commas survive round-tripping (e.g. "/Users/me/foo,bar").
|
|
701
|
+
*/
|
|
702
|
+
function recreateProjectGroupsView(db) {
|
|
703
|
+
db.exec(`
|
|
704
|
+
DROP VIEW IF EXISTS project_groups_v;
|
|
705
|
+
CREATE VIEW project_groups_v AS
|
|
706
|
+
SELECT
|
|
707
|
+
p.identity_kind,
|
|
708
|
+
p.identity_key,
|
|
709
|
+
MIN(p.display_name) AS display_name,
|
|
710
|
+
GROUP_CONCAT(DISTINCT src.name) AS sources_csv,
|
|
711
|
+
JSON_GROUP_ARRAY(DISTINCT p.display_path) FILTER (WHERE p.display_path IS NOT NULL AND p.display_path <> '') AS display_paths_json,
|
|
712
|
+
JSON_GROUP_ARRAY(DISTINCT s.cwd) FILTER (WHERE s.cwd IS NOT NULL AND s.cwd <> '') AS cwds_json,
|
|
713
|
+
COUNT(s.id) AS session_count,
|
|
714
|
+
MAX(s.started_at) AS last_session_at
|
|
715
|
+
FROM projects p
|
|
716
|
+
JOIN sources src ON src.id = p.source_id
|
|
717
|
+
LEFT JOIN sessions s ON s.project_id = p.id AND s.message_count > 0
|
|
718
|
+
WHERE p.identity_kind IS NOT NULL
|
|
719
|
+
GROUP BY p.identity_kind, p.identity_key;
|
|
720
|
+
`);
|
|
634
721
|
}
|
|
635
722
|
export function backfillProjectIdentities(db, fs) {
|
|
636
|
-
const rows = db
|
|
723
|
+
const rows = db
|
|
724
|
+
.prepare(`SELECT id, display_path FROM projects WHERE identity_kind IS NULL`)
|
|
725
|
+
.all();
|
|
637
726
|
if (rows.length === 0)
|
|
638
727
|
return;
|
|
639
728
|
const update = db.prepare(`UPDATE projects
|
|
@@ -647,12 +736,14 @@ export function backfillProjectIdentities(db, fs) {
|
|
|
647
736
|
})();
|
|
648
737
|
}
|
|
649
738
|
function tableExists(db, name) {
|
|
650
|
-
const row = db
|
|
739
|
+
const row = db
|
|
740
|
+
.prepare(`SELECT name FROM sqlite_master WHERE type IN ('table','virtual') AND name = ?`)
|
|
741
|
+
.get(name);
|
|
651
742
|
return row !== undefined;
|
|
652
743
|
}
|
|
653
744
|
function columnExists(db, table, column) {
|
|
654
745
|
const rows = db.prepare(`PRAGMA table_info(${table})`).all();
|
|
655
|
-
return rows.some(r => r.name === column);
|
|
746
|
+
return rows.some((r) => r.name === column);
|
|
656
747
|
}
|
|
657
748
|
function ensureSchemaSanity(db) {
|
|
658
749
|
// Backfill columns the head schema requires but historical DBs (or test
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAA;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAmB,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,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,GAAgB,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5E,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,YAAY,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;QAChB,EAAE,CAAC,MAAM,CAAC,cAAc,CAAqC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAA;IACtF,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;IACtB,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,qBAAqB;IACnC,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8HP,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,GAClB,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAG/D,EAAE,EAAE,CAAA;YACL,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,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,qEAAqE;QACrE,EAAE;QACF,+DAA+D;QAC/D,mEAAmE;QACnE,kEAAkE;QAClE,oEAAoE;QACpE,mEAAmE;QACnE,8DAA8D;QAC9D,mEAAmE;QACnE,+DAA+D;QAC/D,+DAA+D;QAC/D,EAAE;QACF,kEAAkE;QAClE,+DAA+D;QAC/D,kEAAkE;QAClE,0BAA0B;QAC1B,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,MAAM,QAAQ,GAAG,EAAE;iBAChB,OAAO,CACN;;4DAEkD,CACnD;iBACA,GAAG,EAAmC,CAAA;YAEzC,EAAE,CAAC,OAAO,CACR;;;;;;cAMM,CACP,CAAC,GAAG,EAAE,CAAA;YAEP,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B;;;yBAGiB,CAClB,CAAA;YACD,wDAAwD;YACxD,uDAAuD;YACvD,gEAAgE;YAChE,iEAAiE;YACjE,6DAA6D;YAC7D,8DAA8D;YAC9D,mCAAmC;YACnC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B;;;;;;;;;;;;;;;;;;;;uBAoBe,CAChB,CAAA;YACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBAC9B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACjC,CAAC;YAED,6DAA6D;YAC7D,+DAA+D;YAC/D,oCAAoC;YACpC,EAAE,CAAC,IAAI,CACL;;oCAE4B,CAC7B,CAAA;YAED,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAChC,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,sEAAsE;QACtE,kEAAkE;QAClE,oEAAoE;QACpE,wEAAwE;QACxE,mEAAmE;QACnE,gEAAgE;QAChE,uCAAuC;QACvC,EAAE;QACF,uEAAuE;QACvE,8DAA8D;QAC9D,+DAA+D;QAC/D,qEAAqE;QACrE,kEAAkE;QAClE,kEAAkE;QAClE,kBAAkB;QAClB,8DAA8D;QAC9D,iEAAiE;QACjE,4DAA4D;QAC5D,iEAAiE;QACjE,+DAA+D;QAC/D,+CAA+C;QAC/C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;KAgBP,CAAC,CAAA;QACF,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAChC,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;IAE1E,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,2EAA2E;IAC3E,8CAA8C;IAC9C,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,yBAAyB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC,CAAC,EAAE,CAAA;IAEJ,yBAAyB,CAAC,EAAE,CAAC,CAAA;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,yBAAyB,CAAC,EAAqB;IACtD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;GAiBP,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAAqB,EAAE,EAAc;IAC7E,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CAAC,mEAAmE,CAAC;SAC5E,GAAG,EAA4C,CAAA;IAClD,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;SACX,OAAO,CAAC,+EAA+E,CAAC;SACxF,GAAG,CAAC,IAAI,CAAiC,CAAA;IAC5C,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,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AAC5C,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;IACpE,kEAAkE;IAClE,sEAAsE;IACtE,iDAAiD;IACjD,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,EAAqB,EAAE,WAAmB;IAChF,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,QAAsF;IAEtF,MAAM,WAAW,GACf,EAAE,CAAC,OAAO,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC,GAAG,EAChE,CAAC,KAAK,CAAA;IACP,IAAI,WAAW,KAAK,CAAC;QAAE,OAAM;IAE7B,MAAM,UAAU,GACd,EAAE,CAAC,OAAO,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAC5D,CAAC,KAAK,CAAA;IACP,IAAI,UAAU,GAAG,CAAC;QAAE,OAAM;IAE1B,EAAE,CAAC,IAAI,CAAC,eAAe,QAAQ,IAAI,QAAQ,qBAAqB,CAAC,CAAA;AACnE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
export interface NativeRuntime {
|
|
3
|
+
platform: string;
|
|
4
|
+
arch: string;
|
|
5
|
+
modules: string;
|
|
6
|
+
}
|
|
7
|
+
interface NativeBindingLookup {
|
|
8
|
+
packageDir: string;
|
|
9
|
+
runtime: NativeRuntime;
|
|
10
|
+
exists: (path: string) => boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function nativeBindingPath(packageDir: string, runtime: NativeRuntime): string;
|
|
13
|
+
export declare function nativeBindingOptions(options?: Database.Options, lookup?: NativeBindingLookup): Database.Options;
|
|
14
|
+
/**
|
|
15
|
+
* Opens SQLite with a runtime-specific native addon when one has been cached.
|
|
16
|
+
* Node and Electron use different module ABIs, so relying on the package's
|
|
17
|
+
* mutable build/Release file makes one runtime overwrite the other.
|
|
18
|
+
*/
|
|
19
|
+
export declare function openDatabase(filename: string | Buffer, options?: Database.Options): Database.Database;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=native-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-binding.d.ts","sourceRoot":"","sources":["../../src/db/native-binding.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAErC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAClC;AAgBD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAOpF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,QAAQ,CAAC,OAAY,EAC9B,MAAM,GAAE,mBAAqC,GAC5C,QAAQ,CAAC,OAAO,CAGlB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,GAAE,QAAQ,CAAC,OAAY,GAC7B,QAAQ,CAAC,QAAQ,CAEnB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import Database from 'better-sqlite3';
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
function defaultLookup() {
|
|
7
|
+
return {
|
|
8
|
+
packageDir: dirname(require.resolve('better-sqlite3/package.json')),
|
|
9
|
+
runtime: {
|
|
10
|
+
platform: process.platform,
|
|
11
|
+
arch: process.arch,
|
|
12
|
+
modules: process.versions.modules,
|
|
13
|
+
},
|
|
14
|
+
exists: existsSync,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function nativeBindingPath(packageDir, runtime) {
|
|
18
|
+
return join(packageDir, 'bin', `${runtime.platform}-${runtime.arch}-${runtime.modules}`, 'better-sqlite3.node');
|
|
19
|
+
}
|
|
20
|
+
export function nativeBindingOptions(options = {}, lookup = defaultLookup()) {
|
|
21
|
+
const candidate = nativeBindingPath(lookup.packageDir, lookup.runtime);
|
|
22
|
+
return lookup.exists(candidate) ? { ...options, nativeBinding: candidate } : options;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Opens SQLite with a runtime-specific native addon when one has been cached.
|
|
26
|
+
* Node and Electron use different module ABIs, so relying on the package's
|
|
27
|
+
* mutable build/Release file makes one runtime overwrite the other.
|
|
28
|
+
*/
|
|
29
|
+
export function openDatabase(filename, options = {}) {
|
|
30
|
+
return new Database(filename, nativeBindingOptions(options));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=native-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-binding.js","sourceRoot":"","sources":["../../src/db/native-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAcrC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AAE9C,SAAS,aAAa;IACpB,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACnE,OAAO,EAAE;YACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;SAClC;QACD,MAAM,EAAE,UAAU;KACnB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,OAAsB;IAC1E,OAAO,IAAI,CACT,UAAU,EACV,KAAK,EACL,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,EACxD,qBAAqB,CACtB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAO,GAAqB,EAAE,EAC9B,MAAM,GAAwB,aAAa,EAAE;IAE7C,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;AACtF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAyB,EACzB,OAAO,GAAqB,EAAE;IAE9B,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;AAC9D,CAAC"}
|
|
@@ -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,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAMtF"}
|
|
@@ -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,CAAC,EAAqB,EAAE,EAAU,EAAE,SAAiB;IAC9E,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
|
@@ -65,6 +65,10 @@ export declare function upsertSessionSearch(db: Database.Database, opts: {
|
|
|
65
65
|
userText: string;
|
|
66
66
|
assistantText: string;
|
|
67
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;
|
|
68
72
|
/** Insert message rows, skipping any that collide with the partial
|
|
69
73
|
* UNIQUE index on (session_id, msg_uuid). Returns the count of rows
|
|
70
74
|
* actually inserted — callers use this to decide whether anything
|
|
@@ -103,6 +107,7 @@ export declare function insertMessages(db: Database.Database, sessionId: number,
|
|
|
103
107
|
* collapse is intentional, not a lost signal. */
|
|
104
108
|
export declare function getMessageSnapshot(db: Database.Database, sessionUuid: string): {
|
|
105
109
|
firstUuid: string | null;
|
|
110
|
+
lastUuid: string | null;
|
|
106
111
|
total: number;
|
|
107
112
|
};
|
|
108
113
|
/** Refresh `sessions.message_count` for a single session from the
|
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;
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|