@spool-lab/core 0.4.12 → 0.5.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/README.md +2 -2
- package/dist/db/db.d.ts +10 -2
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db.js +119 -10
- package/dist/db/db.js.map +1 -1
- package/dist/db/queries.d.ts +5 -5
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +32 -14
- package/dist/db/queries.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/observability/exporter-file.d.ts +30 -0
- package/dist/observability/exporter-file.d.ts.map +1 -0
- package/dist/observability/exporter-file.js +125 -0
- package/dist/observability/exporter-file.js.map +1 -0
- package/dist/observability/exporter-pretty.d.ts +27 -0
- package/dist/observability/exporter-pretty.d.ts.map +1 -0
- package/dist/observability/exporter-pretty.js +84 -0
- package/dist/observability/exporter-pretty.js.map +1 -0
- package/dist/observability/index.d.ts +2 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +2 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/layer.d.ts +29 -0
- package/dist/observability/layer.d.ts.map +1 -0
- package/dist/observability/layer.js +45 -0
- package/dist/observability/layer.js.map +1 -0
- package/dist/parsers/opencode.d.ts +23 -0
- package/dist/parsers/opencode.d.ts.map +1 -0
- package/dist/parsers/opencode.js +358 -0
- package/dist/parsers/opencode.js.map +1 -0
- package/dist/projects/sessions.d.ts +29 -1
- package/dist/projects/sessions.d.ts.map +1 -1
- package/dist/projects/sessions.js +115 -11
- package/dist/projects/sessions.js.map +1 -1
- package/dist/security/index.d.ts +14 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +7 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/maintenance.d.ts +15 -0
- package/dist/security/maintenance.d.ts.map +1 -0
- package/dist/security/maintenance.js +68 -0
- package/dist/security/maintenance.js.map +1 -0
- package/dist/security/profile.d.ts +47 -0
- package/dist/security/profile.d.ts.map +1 -0
- package/dist/security/profile.js +131 -0
- package/dist/security/profile.js.map +1 -0
- package/dist/security/purge.d.ts +68 -0
- package/dist/security/purge.d.ts.map +1 -0
- package/dist/security/purge.js +193 -0
- package/dist/security/purge.js.map +1 -0
- package/dist/security/repo.d.ts +190 -0
- package/dist/security/repo.d.ts.map +1 -0
- package/dist/security/repo.js +594 -0
- package/dist/security/repo.js.map +1 -0
- package/dist/security/scan.d.ts +50 -0
- package/dist/security/scan.d.ts.map +1 -0
- package/dist/security/scan.js +122 -0
- package/dist/security/scan.js.map +1 -0
- package/dist/security/types.d.ts +146 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/security/types.js +10 -0
- package/dist/security/types.js.map +1 -0
- package/dist/security/worker.d.ts +69 -0
- package/dist/security/worker.d.ts.map +1 -0
- package/dist/security/worker.js +228 -0
- package/dist/security/worker.js.map +1 -0
- package/dist/sync/source-paths.d.ts +1 -0
- package/dist/sync/source-paths.d.ts.map +1 -1
- package/dist/sync/source-paths.js +48 -6
- package/dist/sync/source-paths.js.map +1 -1
- package/dist/sync/syncer.d.ts +9 -1
- package/dist/sync/syncer.d.ts.map +1 -1
- package/dist/sync/syncer.js +128 -16
- package/dist/sync/syncer.js.map +1 -1
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +8 -2
- package/dist/sync/watcher.js.map +1 -1
- package/dist/types.d.ts +15 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/util/resolve-bin.d.ts +34 -0
- package/dist/util/resolve-bin.d.ts.map +1 -1
- package/dist/util/resolve-bin.js +175 -20
- package/dist/util/resolve-bin.js.map +1 -1
- package/package.json +11 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, readdirSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
|
-
import { basename, delimiter, isAbsolute, join, relative, resolve } from 'node:path';
|
|
3
|
+
import { basename, delimiter, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
4
|
+
import { OPENCODE_DB_NAME, isOpenCodeDatabaseFile } from '../parsers/opencode.js';
|
|
4
5
|
const SOURCE_DIR_NAMES = {
|
|
5
6
|
claude: 'projects',
|
|
6
7
|
codex: 'sessions',
|
|
@@ -9,6 +10,7 @@ const SOURCE_ENV_VARS = {
|
|
|
9
10
|
claude: 'SPOOL_CLAUDE_DIR',
|
|
10
11
|
codex: 'SPOOL_CODEX_DIR',
|
|
11
12
|
gemini: 'SPOOL_GEMINI_DIR',
|
|
13
|
+
opencode: 'SPOOL_OPENCODE_DIR',
|
|
12
14
|
};
|
|
13
15
|
const SOURCE_DEFAULT_BASES = {
|
|
14
16
|
claude: '.claude',
|
|
@@ -26,6 +28,9 @@ export function getSessionRoots(source) {
|
|
|
26
28
|
if (source === 'gemini') {
|
|
27
29
|
return dedupePaths([normalizeSourceRoot('gemini', join(getGeminiBaseDir(), 'tmp'))]);
|
|
28
30
|
}
|
|
31
|
+
if (source === 'opencode') {
|
|
32
|
+
return dedupePaths([normalizeSourceRoot('opencode', getOpenCodeBaseDir())]);
|
|
33
|
+
}
|
|
29
34
|
const home = homedir();
|
|
30
35
|
const childDir = SOURCE_DIR_NAMES[source];
|
|
31
36
|
const roots = [join(home, SOURCE_DEFAULT_BASES[source], childDir)];
|
|
@@ -48,16 +53,21 @@ export function detectSessionSource(filePath, sourceRoots = {
|
|
|
48
53
|
claude: getSessionRoots('claude'),
|
|
49
54
|
codex: getSessionRoots('codex'),
|
|
50
55
|
gemini: getSessionRoots('gemini'),
|
|
56
|
+
opencode: getSessionRoots('opencode'),
|
|
51
57
|
}) {
|
|
52
|
-
for (const source of ['claude', 'codex', 'gemini']) {
|
|
53
|
-
if (sourceRoots[source]
|
|
58
|
+
for (const source of ['claude', 'codex', 'gemini', 'opencode']) {
|
|
59
|
+
if (sourceRoots[source]?.some(root => isSessionFileForSource(source, filePath, root))) {
|
|
54
60
|
return source;
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
63
|
return undefined;
|
|
58
64
|
}
|
|
59
65
|
export function getSessionWatchPatterns(source, roots = getSessionRoots(source)) {
|
|
60
|
-
const pattern = source === 'gemini'
|
|
66
|
+
const pattern = source === 'gemini'
|
|
67
|
+
? 'session-*.json'
|
|
68
|
+
: source === 'opencode'
|
|
69
|
+
? OPENCODE_DB_NAME
|
|
70
|
+
: '*.jsonl';
|
|
61
71
|
return roots.map(root => join(root, '**', pattern));
|
|
62
72
|
}
|
|
63
73
|
function splitConfiguredPaths(value) {
|
|
@@ -78,6 +88,16 @@ function normalizeSourceRoot(source, filePath) {
|
|
|
78
88
|
}
|
|
79
89
|
return resolvedPath;
|
|
80
90
|
}
|
|
91
|
+
if (source === 'opencode') {
|
|
92
|
+
if (basename(resolvedPath) === OPENCODE_DB_NAME)
|
|
93
|
+
return dirname(resolvedPath);
|
|
94
|
+
if (existsSync(join(resolvedPath, OPENCODE_DB_NAME)))
|
|
95
|
+
return resolvedPath;
|
|
96
|
+
if (existsSync(join(resolvedPath, '.local', 'share', 'opencode', OPENCODE_DB_NAME))) {
|
|
97
|
+
return join(resolvedPath, '.local', 'share', 'opencode');
|
|
98
|
+
}
|
|
99
|
+
return resolvedPath;
|
|
100
|
+
}
|
|
81
101
|
const childDir = SOURCE_DIR_NAMES[source];
|
|
82
102
|
if (basename(resolvedPath) === childDir)
|
|
83
103
|
return resolvedPath;
|
|
@@ -100,7 +120,16 @@ function getGeminiBaseDir() {
|
|
|
100
120
|
? join(resolve(expandHome(geminiCliHome)), '.gemini')
|
|
101
121
|
: join(homedir(), '.gemini');
|
|
102
122
|
}
|
|
103
|
-
function
|
|
123
|
+
function getOpenCodeBaseDir() {
|
|
124
|
+
const configuredHome = process.env['OPENCODE_DATA_DIR']?.trim();
|
|
125
|
+
if (configuredHome)
|
|
126
|
+
return resolve(expandHome(configuredHome));
|
|
127
|
+
const xdgDataHome = process.env['XDG_DATA_HOME']?.trim();
|
|
128
|
+
if (xdgDataHome)
|
|
129
|
+
return join(resolve(expandHome(xdgDataHome)), 'opencode');
|
|
130
|
+
return join(homedir(), '.local', 'share', 'opencode');
|
|
131
|
+
}
|
|
132
|
+
export function isSessionFileForSource(source, filePath, root) {
|
|
104
133
|
if (!isWithinRoot(filePath, root))
|
|
105
134
|
return false;
|
|
106
135
|
if (source === 'gemini') {
|
|
@@ -108,7 +137,20 @@ function isSessionFileForSource(source, filePath, root) {
|
|
|
108
137
|
&& basename(filePath).startsWith('session-')
|
|
109
138
|
&& /(?:^|\/)chats\//.test(filePath);
|
|
110
139
|
}
|
|
111
|
-
|
|
140
|
+
if (source === 'opencode') {
|
|
141
|
+
return isOpenCodeDatabaseFile(filePath);
|
|
142
|
+
}
|
|
143
|
+
if (!filePath.endsWith('.jsonl'))
|
|
144
|
+
return false;
|
|
145
|
+
if (source === 'claude') {
|
|
146
|
+
// Claude sessions live at <root>/<slug>/<uuid>.jsonl — exactly two segments
|
|
147
|
+
// relative to root. Nested files (e.g. <slug>/<uuid>/subagents/agent-*.jsonl)
|
|
148
|
+
// are subagent scratchpads that share the parent's sessionId; indexing them
|
|
149
|
+
// clobbers the parent row via UNIQUE(session_uuid) and zeros message_count.
|
|
150
|
+
const rel = relative(root, filePath);
|
|
151
|
+
return rel.length > 0 && rel.split(sep).length === 2;
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
112
154
|
}
|
|
113
155
|
function isWithinRoot(filePath, root) {
|
|
114
156
|
const resolvedFile = resolve(filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-paths.js","sourceRoot":"","sources":["../../src/sync/source-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"source-paths.js","sourceRoot":"","sources":["../../src/sync/source-paths.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/syncer.d.ts
CHANGED
|
@@ -7,13 +7,21 @@ export interface SyncProgressEvent {
|
|
|
7
7
|
total: number;
|
|
8
8
|
}
|
|
9
9
|
export type SyncEventCallback = (event: SyncProgressEvent) => void;
|
|
10
|
+
/** Fired after `syncFile` commits a session's messages. Consumers
|
|
11
|
+
* (the scan worker hookup in main process) invalidate the session's
|
|
12
|
+
* scan_profile and re-enqueue it — necessary because offsets in
|
|
13
|
+
* the findings table point into the now-mutated `messages.content_text`.
|
|
14
|
+
* Receives the sessions.id, NOT the session_uuid. */
|
|
15
|
+
export type SessionChangedCallback = (sessionId: number) => void;
|
|
10
16
|
export declare class Syncer {
|
|
11
17
|
private db;
|
|
12
18
|
private onProgress;
|
|
19
|
+
private onSessionChanged;
|
|
13
20
|
private codexTitleIndex;
|
|
14
|
-
constructor(db: Database.Database, onProgress?: SyncEventCallback);
|
|
21
|
+
constructor(db: Database.Database, onProgress?: SyncEventCallback, onSessionChanged?: SessionChangedCallback);
|
|
15
22
|
syncAll(): SyncResult;
|
|
16
23
|
private applyCodexTitles;
|
|
17
24
|
syncFile(filePath: string, source: SessionSource, knownMtimes?: Map<string, string>, precomputedMtime?: string): 'added' | 'updated' | 'skipped' | 'error';
|
|
25
|
+
private syncOpenCodeDatabase;
|
|
18
26
|
}
|
|
19
27
|
//# sourceMappingURL=syncer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../../src/sync/syncer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../../src/sync/syncer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAY1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAYhD,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,aAAa,CAAA;AAI5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAA;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAElE;;;;sDAIsD;AACtD,MAAM,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;AAEhE,qBAAa,MAAM;IACjB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,gBAAgB,CAAoC;IAC5D,OAAO,CAAC,eAAe,CAAiC;gBAGtD,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,CAAC,EAAE,iBAAiB,EAC9B,gBAAgB,CAAC,EAAE,sBAAsB;IAO3C,OAAO,IAAI,UAAU;IAwFrB,OAAO,CAAC,gBAAgB;IAaxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO;IAmH1J,OAAO,CAAC,oBAAoB;CAwC7B"}
|
package/dist/sync/syncer.js
CHANGED
|
@@ -4,22 +4,25 @@ import { homedir } from 'node:os';
|
|
|
4
4
|
import { loadClaudeSession, decodeProjectSlug } from '../parsers/claude.js';
|
|
5
5
|
import { loadCodexSession, CODEX_INDEX_VERSION } from '../parsers/codex.js';
|
|
6
6
|
import { loadGeminiSession } from '../parsers/gemini.js';
|
|
7
|
-
import {
|
|
7
|
+
import { getOpenCodeSessionIndexedMtime, isOpenCodeDatabaseFile, listOpenCodeSessionFilePaths, loadOpenCodeSession, OPENCODE_INDEX_VERSION, parseOpenCodeSessionFilePath, } from '../parsers/opencode.js';
|
|
8
|
+
import { getSessionRoots, isSessionFileForSource } from './source-paths.js';
|
|
8
9
|
import { deleteSessionByFilePath, getSourceId, getOrCreateProject, getSessionMtime, getAllSessionMtimes, upsertSession, upsertSessionSearch, insertMessages, } from '../db/queries.js';
|
|
9
10
|
import { computeIdentity } from '../projects/identity.js';
|
|
10
11
|
import { realFs } from '../projects/fs.js';
|
|
11
12
|
export class Syncer {
|
|
12
13
|
db;
|
|
13
14
|
onProgress;
|
|
15
|
+
onSessionChanged;
|
|
14
16
|
codexTitleIndex = new Map();
|
|
15
|
-
constructor(db, onProgress) {
|
|
17
|
+
constructor(db, onProgress, onSessionChanged) {
|
|
16
18
|
this.db = db;
|
|
17
19
|
this.onProgress = onProgress;
|
|
20
|
+
this.onSessionChanged = onSessionChanged;
|
|
18
21
|
}
|
|
19
22
|
syncAll() {
|
|
20
23
|
const seenPaths = new Set();
|
|
21
24
|
const files = [];
|
|
22
|
-
for (const source of ['claude', 'codex', 'gemini']) {
|
|
25
|
+
for (const source of ['claude', 'codex', 'gemini', 'opencode']) {
|
|
23
26
|
for (const dir of getSessionRoots(source)) {
|
|
24
27
|
try {
|
|
25
28
|
addUniqueFiles(files, seenPaths, collectSessionFiles(dir, source));
|
|
@@ -27,6 +30,7 @@ export class Syncer {
|
|
|
27
30
|
catch { /* dir may not exist */ }
|
|
28
31
|
}
|
|
29
32
|
}
|
|
33
|
+
cleanupStaleOpenCodeSessions(this.db, files);
|
|
30
34
|
const knownMtimes = getAllSessionMtimes(this.db);
|
|
31
35
|
this.codexTitleIndex = loadCodexSessionIndex();
|
|
32
36
|
const pendingFiles = files.flatMap(f => {
|
|
@@ -113,6 +117,9 @@ export class Syncer {
|
|
|
113
117
|
}
|
|
114
118
|
syncFile(filePath, source, knownMtimes, precomputedMtime) {
|
|
115
119
|
try {
|
|
120
|
+
if (source === 'opencode' && isOpenCodeDatabaseFile(filePath)) {
|
|
121
|
+
return this.syncOpenCodeDatabase(filePath, knownMtimes);
|
|
122
|
+
}
|
|
116
123
|
const mtime = precomputedMtime ?? getIndexedMtime(filePath, source);
|
|
117
124
|
const existingMtime = knownMtimes
|
|
118
125
|
? (knownMtimes.get(filePath) ?? null)
|
|
@@ -123,7 +130,9 @@ export class Syncer {
|
|
|
123
130
|
? loadClaudeSession(filePath)
|
|
124
131
|
: source === 'codex'
|
|
125
132
|
? loadCodexSession(filePath)
|
|
126
|
-
:
|
|
133
|
+
: source === 'gemini'
|
|
134
|
+
? loadGeminiSession(filePath)
|
|
135
|
+
: loadOpenCodeSession(filePath);
|
|
127
136
|
if (parseResult.kind !== 'parsed') {
|
|
128
137
|
if (parseResult.kind === 'filtered' && existingMtime !== null) {
|
|
129
138
|
this.db.prepare(`
|
|
@@ -151,6 +160,7 @@ export class Syncer {
|
|
|
151
160
|
const projectId = getOrCreateProject(this.db, sourceId, slug, identity.displayPath ?? displayPath, identity.displayName || displayName, { identityKind: identity.kind, identityKey: identity.key });
|
|
152
161
|
const isNew = existingMtime === null;
|
|
153
162
|
const hasToolUse = parsed.messages.some(m => m.toolNames.length > 0);
|
|
163
|
+
let committedSessionId = null;
|
|
154
164
|
this.db.transaction(() => {
|
|
155
165
|
const sessionId = upsertSession(this.db, {
|
|
156
166
|
projectId,
|
|
@@ -173,11 +183,23 @@ export class Syncer {
|
|
|
173
183
|
userText: buildSessionSearchText(parsed.messages, 'user'),
|
|
174
184
|
assistantText: buildSessionSearchText(parsed.messages, 'assistant'),
|
|
175
185
|
});
|
|
186
|
+
// Security Scan cascade: messages.content_text changed, so any
|
|
187
|
+
// existing findings now have stale offsets. Drop scan_profile
|
|
188
|
+
// inside the same transaction so a crash between here and the
|
|
189
|
+
// worker re-enqueue still leaves the session in "needs scan".
|
|
190
|
+
this.db.prepare(`UPDATE sessions SET scan_profile = NULL, scan_completed_at = NULL WHERE id = ?`).run(sessionId);
|
|
176
191
|
this.db.prepare(`
|
|
177
192
|
INSERT INTO sync_log (source_id, file_path, status)
|
|
178
193
|
VALUES (?, ?, 'ok')
|
|
179
194
|
`).run(sourceId, filePath);
|
|
195
|
+
committedSessionId = sessionId;
|
|
180
196
|
})();
|
|
197
|
+
if (committedSessionId !== null && this.onSessionChanged) {
|
|
198
|
+
try {
|
|
199
|
+
this.onSessionChanged(committedSessionId);
|
|
200
|
+
}
|
|
201
|
+
catch { /* swallow callback errors */ }
|
|
202
|
+
}
|
|
181
203
|
return isNew ? 'added' : 'updated';
|
|
182
204
|
}
|
|
183
205
|
catch (err) {
|
|
@@ -196,6 +218,82 @@ export class Syncer {
|
|
|
196
218
|
return 'error';
|
|
197
219
|
}
|
|
198
220
|
}
|
|
221
|
+
syncOpenCodeDatabase(dbPath, knownMtimes) {
|
|
222
|
+
let changed = false;
|
|
223
|
+
let hadError = false;
|
|
224
|
+
let sessionPaths;
|
|
225
|
+
try {
|
|
226
|
+
sessionPaths = listOpenCodeSessionFilePaths(dbPath);
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
try {
|
|
230
|
+
const sourceRow = this.db
|
|
231
|
+
.prepare('SELECT id FROM sources WHERE name = ?')
|
|
232
|
+
.get('opencode');
|
|
233
|
+
if (sourceRow) {
|
|
234
|
+
this.db.prepare(`
|
|
235
|
+
INSERT INTO sync_log (source_id, file_path, status, message)
|
|
236
|
+
VALUES (?, ?, 'error', ?)
|
|
237
|
+
`).run(sourceRow.id, dbPath, String(err));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
catch { /* ignore log errors */ }
|
|
241
|
+
return 'error';
|
|
242
|
+
}
|
|
243
|
+
for (const sessionPath of sessionPaths) {
|
|
244
|
+
const result = this.syncFile(sessionPath, 'opencode', knownMtimes);
|
|
245
|
+
if (result === 'added' || result === 'updated')
|
|
246
|
+
changed = true;
|
|
247
|
+
else if (result === 'error')
|
|
248
|
+
hadError = true;
|
|
249
|
+
}
|
|
250
|
+
const activePaths = new Set(sessionPaths);
|
|
251
|
+
const stalePaths = listIndexedOpenCodeSessionPaths(this.db)
|
|
252
|
+
.filter(path => parseOpenCodeSessionFilePath(path)?.dbPath === dbPath)
|
|
253
|
+
.filter(path => !activePaths.has(path));
|
|
254
|
+
for (const stalePath of stalePaths) {
|
|
255
|
+
if (deleteSessionByFilePath(this.db, stalePath))
|
|
256
|
+
changed = true;
|
|
257
|
+
}
|
|
258
|
+
if (changed)
|
|
259
|
+
return 'updated';
|
|
260
|
+
if (hadError)
|
|
261
|
+
return 'error';
|
|
262
|
+
return 'skipped';
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
function cleanupStaleOpenCodeSessions(db, files) {
|
|
266
|
+
const activePathsByDb = new Map();
|
|
267
|
+
for (const file of files) {
|
|
268
|
+
if (file.source !== 'opencode')
|
|
269
|
+
continue;
|
|
270
|
+
const parsed = parseOpenCodeSessionFilePath(file.path);
|
|
271
|
+
if (!parsed)
|
|
272
|
+
continue;
|
|
273
|
+
const paths = activePathsByDb.get(parsed.dbPath) ?? new Set();
|
|
274
|
+
paths.add(file.path);
|
|
275
|
+
activePathsByDb.set(parsed.dbPath, paths);
|
|
276
|
+
}
|
|
277
|
+
if (activePathsByDb.size === 0)
|
|
278
|
+
return;
|
|
279
|
+
for (const indexedPath of listIndexedOpenCodeSessionPaths(db)) {
|
|
280
|
+
const parsed = parseOpenCodeSessionFilePath(indexedPath);
|
|
281
|
+
if (!parsed)
|
|
282
|
+
continue;
|
|
283
|
+
const activePaths = activePathsByDb.get(parsed.dbPath);
|
|
284
|
+
if (!activePaths || activePaths.has(indexedPath))
|
|
285
|
+
continue;
|
|
286
|
+
deleteSessionByFilePath(db, indexedPath);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
function listIndexedOpenCodeSessionPaths(db) {
|
|
290
|
+
const rows = db.prepare(`
|
|
291
|
+
SELECT s.file_path AS filePath
|
|
292
|
+
FROM sessions s
|
|
293
|
+
JOIN sources src ON src.id = s.source_id
|
|
294
|
+
WHERE src.name = 'opencode'
|
|
295
|
+
`).all();
|
|
296
|
+
return rows.map(row => row.filePath);
|
|
199
297
|
}
|
|
200
298
|
function addUniqueFiles(files, seenPaths, candidates) {
|
|
201
299
|
for (const candidate of candidates) {
|
|
@@ -209,6 +307,8 @@ function getMtime(filePath) {
|
|
|
209
307
|
return statSync(filePath).mtime.toISOString();
|
|
210
308
|
}
|
|
211
309
|
function getIndexedMtime(filePath, source) {
|
|
310
|
+
if (source === 'opencode')
|
|
311
|
+
return getOpenCodeSessionIndexedMtime(filePath);
|
|
212
312
|
return `${getMtime(filePath)}::${getIndexVersion(source)}`;
|
|
213
313
|
}
|
|
214
314
|
function getIndexVersion(source) {
|
|
@@ -216,14 +316,22 @@ function getIndexVersion(source) {
|
|
|
216
316
|
return CODEX_INDEX_VERSION;
|
|
217
317
|
if (source === 'gemini')
|
|
218
318
|
return 'gemini-v1-session-search-fts';
|
|
319
|
+
if (source === 'opencode')
|
|
320
|
+
return OPENCODE_INDEX_VERSION;
|
|
219
321
|
return 'claude-v3-session-search-fts';
|
|
220
322
|
}
|
|
221
323
|
function collectSessionFiles(dir, source) {
|
|
324
|
+
if (source === 'opencode') {
|
|
325
|
+
const dbPath = join(dir, 'opencode.db');
|
|
326
|
+
if (!existsSync(dbPath))
|
|
327
|
+
return [];
|
|
328
|
+
return listOpenCodeSessionFilePaths(dbPath).map(path => ({ path, source }));
|
|
329
|
+
}
|
|
222
330
|
const results = [];
|
|
223
|
-
walkDir(dir, results, source);
|
|
331
|
+
walkDir(dir, dir, results, source);
|
|
224
332
|
return results;
|
|
225
333
|
}
|
|
226
|
-
function walkDir(dir, results, source) {
|
|
334
|
+
function walkDir(dir, root, results, source) {
|
|
227
335
|
let entries;
|
|
228
336
|
try {
|
|
229
337
|
entries = readdirSync(dir, { withFileTypes: true, encoding: 'utf8' });
|
|
@@ -236,9 +344,14 @@ function walkDir(dir, results, source) {
|
|
|
236
344
|
if (entry.isDirectory()) {
|
|
237
345
|
if (source === 'gemini' && !shouldTraverseGeminiDir(dir, fullPath, entry.name))
|
|
238
346
|
continue;
|
|
239
|
-
|
|
347
|
+
// For claude, session files only live at <root>/<slug>/<uuid>.jsonl. Anything
|
|
348
|
+
// deeper is subagent / future-nested scratch data that hijacks the parent
|
|
349
|
+
// sessionId — see isSessionFileForSource for the matching read-side check.
|
|
350
|
+
if (source === 'claude' && dirname(fullPath) !== root)
|
|
351
|
+
continue;
|
|
352
|
+
walkDir(fullPath, root, results, source);
|
|
240
353
|
}
|
|
241
|
-
else if (entry.isFile() &&
|
|
354
|
+
else if (entry.isFile() && isSessionFileForSource(source, fullPath, root)) {
|
|
242
355
|
results.push({ path: fullPath, source });
|
|
243
356
|
}
|
|
244
357
|
}
|
|
@@ -252,14 +365,6 @@ function shouldTraverseGeminiDir(parentDir, fullPath, entryName) {
|
|
|
252
365
|
return true;
|
|
253
366
|
return existsSync(join(fullPath, 'chats'));
|
|
254
367
|
}
|
|
255
|
-
function isSessionFilePath(filePath, source) {
|
|
256
|
-
if (source === 'gemini') {
|
|
257
|
-
return filePath.endsWith('.json')
|
|
258
|
-
&& basename(filePath).startsWith('session-')
|
|
259
|
-
&& /(?:^|\/)chats\//.test(filePath);
|
|
260
|
-
}
|
|
261
|
-
return filePath.endsWith('.jsonl');
|
|
262
|
-
}
|
|
263
368
|
function loadCodexSessionIndex() {
|
|
264
369
|
const titles = new Map();
|
|
265
370
|
try {
|
|
@@ -304,6 +409,13 @@ function resolveProject(filePath, source, cwd) {
|
|
|
304
409
|
const slug = displayPath.replace(/^\//, '').replace(/\//g, '-') || 'default';
|
|
305
410
|
return { slug, displayPath, displayName };
|
|
306
411
|
}
|
|
412
|
+
else if (source === 'opencode') {
|
|
413
|
+
const displayPath = cwd || home;
|
|
414
|
+
const parts = displayPath.split('/').filter(Boolean);
|
|
415
|
+
const displayName = parts[parts.length - 1] ?? 'opencode';
|
|
416
|
+
const slug = displayPath.replace(/^\//, '').replace(/\//g, '-') || 'default';
|
|
417
|
+
return { slug, displayPath, displayName };
|
|
418
|
+
}
|
|
307
419
|
const projectIdentifier = dirname(filePath).split('/').at(-2) ?? 'gemini';
|
|
308
420
|
const displayPath = cwd || projectIdentifier;
|
|
309
421
|
const parts = displayPath.split('/').filter(Boolean);
|
package/dist/sync/syncer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncer.js","sourceRoot":"","sources":["../../src/sync/syncer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"syncer.js","sourceRoot":"","sources":["../../src/sync/syncer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,OAAO,EAA4B,MAAM,SAAS,CAAA;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,OAAO,EAA4B,MAAM,SAAS,CAAA;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKzC,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,OAAO,CAAA;AAEnD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,OAAO,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC;AAED,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAA;AAEhE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CACxE,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KACzB,IAAI,CAAA;AAET,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,OAAO,CAAA;CACzB;AAYD,qBAAa,YAAY;IAaX,OAAO,CAAC,MAAM;IAZ1B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,WAAW,CAAuF;IAC1G,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAEpB,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB;IAOlE,KAAK,IAAI,IAAI;IAiBb,IAAI,IAAI,IAAI;IAeZ,EAAE,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAMvE,OAAO,CAAC,SAAS;IA6BjB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,OAAO;IAsBf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;CAOb"}
|
package/dist/sync/watcher.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { watch as fsWatch, statSync } from 'node:fs';
|
|
2
2
|
import { resolve as resolvePath } from 'node:path';
|
|
3
3
|
import { detectSessionSource, getSessionRoots } from './source-paths.js';
|
|
4
|
+
import { normalizeOpenCodeWatchPath } from '../parsers/opencode.js';
|
|
4
5
|
const DEFAULT_STABILITY_MS = 2000;
|
|
5
6
|
const DEFAULT_POLL_MS = 200;
|
|
6
7
|
const DEFAULT_FLUSH_MS = 500;
|
|
@@ -11,7 +12,7 @@ export class SpoolWatcher {
|
|
|
11
12
|
pending = new Map();
|
|
12
13
|
pendingNew = 0;
|
|
13
14
|
flushTimer = null;
|
|
14
|
-
sourceRoots = { claude: [], codex: [], gemini: [] };
|
|
15
|
+
sourceRoots = { claude: [], codex: [], gemini: [], opencode: [] };
|
|
15
16
|
stopped = false;
|
|
16
17
|
stabilityMs;
|
|
17
18
|
pollMs;
|
|
@@ -30,11 +31,13 @@ export class SpoolWatcher {
|
|
|
30
31
|
claude: getSessionRoots('claude'),
|
|
31
32
|
codex: getSessionRoots('codex'),
|
|
32
33
|
gemini: getSessionRoots('gemini'),
|
|
34
|
+
opencode: getSessionRoots('opencode'),
|
|
33
35
|
};
|
|
34
36
|
const roots = [
|
|
35
37
|
...this.sourceRoots.claude,
|
|
36
38
|
...this.sourceRoots.codex,
|
|
37
39
|
...this.sourceRoots.gemini,
|
|
40
|
+
...this.sourceRoots.opencode,
|
|
38
41
|
];
|
|
39
42
|
for (const root of roots)
|
|
40
43
|
this.watchRoot(root);
|
|
@@ -78,7 +81,10 @@ export class SpoolWatcher {
|
|
|
78
81
|
w.on('change', (_eventType, filename) => {
|
|
79
82
|
if (this.stopped || !filename)
|
|
80
83
|
return;
|
|
81
|
-
|
|
84
|
+
// OpenCode commits land in opencode.db-wal; map sidecar writes to the main
|
|
85
|
+
// DB so they aren't filtered out and trigger a re-index. Stability polling
|
|
86
|
+
// then debounces on the (static) main file, settling once writes pause.
|
|
87
|
+
const abs = normalizeOpenCodeWatchPath(resolvePath(root, filename.toString()));
|
|
82
88
|
this.schedulePoll(abs);
|
|
83
89
|
});
|
|
84
90
|
w.on('error', (err) => {
|
package/dist/sync/watcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,QAAQ,EAAkB,MAAM,SAAS,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAGlD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/sync/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type SessionSource = 'claude' | 'codex' | 'gemini';
|
|
1
|
+
export type SessionSource = 'claude' | 'codex' | 'gemini' | 'opencode';
|
|
2
2
|
export type Source = SessionSource;
|
|
3
3
|
export type SearchMatchType = 'fts' | 'phrase' | 'all_terms';
|
|
4
4
|
export interface ParsedMessage {
|
|
@@ -46,6 +46,19 @@ export interface Session {
|
|
|
46
46
|
source: SessionSource;
|
|
47
47
|
projectDisplayPath: string;
|
|
48
48
|
projectDisplayName: string;
|
|
49
|
+
/** Denormalised count of active findings (any severity) for this
|
|
50
|
+
* session. 0 when the session has been scanned and is clean, or
|
|
51
|
+
* when scan has not yet run on it. Drives the Library row badge. */
|
|
52
|
+
scanFindingCount: number;
|
|
53
|
+
/** Subset of scanFindingCount limited to HIGH_SEVERITY_KINDS. */
|
|
54
|
+
scanHighCount: number;
|
|
55
|
+
/** Lifetime count of purged findings on this session. Combined with
|
|
56
|
+
* scanFindingCount === 0 and a non-null scanCompletedAt, lets the
|
|
57
|
+
* Library row show an "all-resolved" check instead of an empty slot. */
|
|
58
|
+
scanPurgedCount: number;
|
|
59
|
+
/** ISO timestamp the worker last finished scanning this session.
|
|
60
|
+
* null when never scanned. */
|
|
61
|
+
scanCompletedAt: string | null;
|
|
49
62
|
}
|
|
50
63
|
export type ProjectIdentityKind = 'git_remote' | 'git_common_dir' | 'manifest_path' | 'synthetic' | 'path' | 'loose' | 'spool_internal';
|
|
51
64
|
export interface ProjectIdentity {
|
|
@@ -97,6 +110,7 @@ export interface StatusInfo {
|
|
|
97
110
|
claudeSessions: number;
|
|
98
111
|
codexSessions: number;
|
|
99
112
|
geminiSessions: number;
|
|
113
|
+
opencodeSessions: number;
|
|
100
114
|
lastSyncedAt: string | null;
|
|
101
115
|
dbSizeBytes: number;
|
|
102
116
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|