@pcircle/footprint 1.5.0 → 1.7.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 +301 -132
- package/SKILL.md +72 -28
- package/bin/footprint.js +16 -0
- package/dist/src/adapters/claude.d.ts +2 -0
- package/dist/src/adapters/claude.d.ts.map +1 -0
- package/dist/src/adapters/claude.js +7 -0
- package/dist/src/adapters/claude.js.map +1 -0
- package/dist/src/adapters/codex.d.ts +2 -0
- package/dist/src/adapters/codex.d.ts.map +1 -0
- package/dist/src/adapters/codex.js +7 -0
- package/dist/src/adapters/codex.js.map +1 -0
- package/dist/src/adapters/gemini.d.ts +2 -0
- package/dist/src/adapters/gemini.d.ts.map +1 -0
- package/dist/src/adapters/gemini.js +7 -0
- package/dist/src/adapters/gemini.js.map +1 -0
- package/dist/src/adapters/index.d.ts +5 -0
- package/dist/src/adapters/index.d.ts.map +1 -0
- package/dist/src/adapters/index.js +12 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/adapters/structured-prefix.d.ts +10 -0
- package/dist/src/adapters/structured-prefix.d.ts.map +1 -0
- package/dist/src/adapters/structured-prefix.js +59 -0
- package/dist/src/adapters/structured-prefix.js.map +1 -0
- package/dist/src/adapters/types.d.ts +32 -0
- package/dist/src/adapters/types.d.ts.map +1 -0
- package/dist/src/adapters/types.js +2 -0
- package/dist/src/adapters/types.js.map +1 -0
- package/dist/src/cli/context-flow.d.ts +92 -0
- package/dist/src/cli/context-flow.d.ts.map +1 -0
- package/dist/src/cli/context-flow.js +724 -0
- package/dist/src/cli/context-flow.js.map +1 -0
- package/dist/src/cli/history-display.d.ts +27 -0
- package/dist/src/cli/history-display.d.ts.map +1 -0
- package/dist/src/cli/history-display.js +167 -0
- package/dist/src/cli/history-display.js.map +1 -0
- package/dist/src/cli/index.js +924 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/launch-spec.d.ts +31 -0
- package/dist/src/cli/launch-spec.d.ts.map +1 -0
- package/dist/src/cli/launch-spec.js +182 -0
- package/dist/src/cli/launch-spec.js.map +1 -0
- package/dist/src/cli/live-demo.d.ts +34 -0
- package/dist/src/cli/live-demo.d.ts.map +1 -0
- package/dist/src/cli/live-demo.js +254 -0
- package/dist/src/cli/live-demo.js.map +1 -0
- package/dist/src/cli/pty-transcript.d.ts +34 -0
- package/dist/src/cli/pty-transcript.d.ts.map +1 -0
- package/dist/src/cli/pty-transcript.js +174 -0
- package/dist/src/cli/pty-transcript.js.map +1 -0
- package/dist/src/cli/session-display.d.ts +74 -0
- package/dist/src/cli/session-display.d.ts.map +1 -0
- package/dist/src/cli/session-display.js +922 -0
- package/dist/src/cli/session-display.js.map +1 -0
- package/dist/src/cli/session-execution.d.ts +55 -0
- package/dist/src/cli/session-execution.d.ts.map +1 -0
- package/dist/src/cli/session-execution.js +817 -0
- package/dist/src/cli/session-execution.js.map +1 -0
- package/dist/src/cli/session-runtime.d.ts +5 -0
- package/dist/src/cli/session-runtime.d.ts.map +1 -0
- package/dist/src/cli/session-runtime.js +11 -0
- package/dist/src/cli/session-runtime.js.map +1 -0
- package/dist/src/cli/setup.d.ts.map +1 -1
- package/dist/src/cli/setup.js +2 -0
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +148 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/ingestion/deterministic.d.ts +3 -0
- package/dist/src/ingestion/deterministic.d.ts.map +1 -0
- package/dist/src/ingestion/deterministic.js +862 -0
- package/dist/src/ingestion/deterministic.js.map +1 -0
- package/dist/src/ingestion/index.d.ts +5 -0
- package/dist/src/ingestion/index.d.ts.map +1 -0
- package/dist/src/ingestion/index.js +27 -0
- package/dist/src/ingestion/index.js.map +1 -0
- package/dist/src/ingestion/semantic.d.ts +6 -0
- package/dist/src/ingestion/semantic.d.ts.map +1 -0
- package/dist/src/ingestion/semantic.js +627 -0
- package/dist/src/ingestion/semantic.js.map +1 -0
- package/dist/src/ingestion/types.d.ts +10 -0
- package/dist/src/ingestion/types.d.ts.map +1 -0
- package/dist/src/ingestion/types.js +2 -0
- package/dist/src/ingestion/types.js.map +1 -0
- package/dist/src/lib/context-memory.d.ts +140 -0
- package/dist/src/lib/context-memory.d.ts.map +1 -0
- package/dist/src/lib/context-memory.js +974 -0
- package/dist/src/lib/context-memory.js.map +1 -0
- package/dist/src/lib/history-handoff.d.ts +43 -0
- package/dist/src/lib/history-handoff.d.ts.map +1 -0
- package/dist/src/lib/history-handoff.js +179 -0
- package/dist/src/lib/history-handoff.js.map +1 -0
- package/dist/src/lib/observability.d.ts +3 -0
- package/dist/src/lib/observability.d.ts.map +1 -0
- package/dist/src/lib/observability.js +63 -0
- package/dist/src/lib/observability.js.map +1 -0
- package/dist/src/lib/session-artifacts.d.ts +51 -0
- package/dist/src/lib/session-artifacts.d.ts.map +1 -0
- package/dist/src/lib/session-artifacts.js +132 -0
- package/dist/src/lib/session-artifacts.js.map +1 -0
- package/dist/src/lib/session-filters.d.ts +11 -0
- package/dist/src/lib/session-filters.d.ts.map +1 -0
- package/dist/src/lib/session-filters.js +16 -0
- package/dist/src/lib/session-filters.js.map +1 -0
- package/dist/src/lib/session-history.d.ts +50 -0
- package/dist/src/lib/session-history.d.ts.map +1 -0
- package/dist/src/lib/session-history.js +73 -0
- package/dist/src/lib/session-history.js.map +1 -0
- package/dist/src/lib/session-trends.d.ts +129 -0
- package/dist/src/lib/session-trends.d.ts.map +1 -0
- package/dist/src/lib/session-trends.js +361 -0
- package/dist/src/lib/session-trends.js.map +1 -0
- package/dist/src/lib/storage/database.d.ts +212 -1
- package/dist/src/lib/storage/database.d.ts.map +1 -1
- package/dist/src/lib/storage/database.js +1694 -114
- package/dist/src/lib/storage/database.js.map +1 -1
- package/dist/src/lib/storage/export-sessions.d.ts +33 -0
- package/dist/src/lib/storage/export-sessions.d.ts.map +1 -0
- package/dist/src/lib/storage/export-sessions.js +525 -0
- package/dist/src/lib/storage/export-sessions.js.map +1 -0
- package/dist/src/lib/storage/index.d.ts +7 -6
- package/dist/src/lib/storage/index.d.ts.map +1 -1
- package/dist/src/lib/storage/index.js +6 -5
- package/dist/src/lib/storage/index.js.map +1 -1
- package/dist/src/lib/storage/schema.d.ts +6 -1
- package/dist/src/lib/storage/schema.d.ts.map +1 -1
- package/dist/src/lib/storage/schema.js +337 -2
- package/dist/src/lib/storage/schema.js.map +1 -1
- package/dist/src/lib/storage/types.d.ts +122 -0
- package/dist/src/lib/storage/types.d.ts.map +1 -1
- package/dist/src/prompts/skill-prompt.d.ts.map +1 -1
- package/dist/src/prompts/skill-prompt.js +13 -0
- package/dist/src/prompts/skill-prompt.js.map +1 -1
- package/dist/src/tools/confirm-context-link.d.ts +62 -0
- package/dist/src/tools/confirm-context-link.d.ts.map +1 -0
- package/dist/src/tools/confirm-context-link.js +36 -0
- package/dist/src/tools/confirm-context-link.js.map +1 -0
- package/dist/src/tools/context-schemas.d.ts +694 -0
- package/dist/src/tools/context-schemas.d.ts.map +1 -0
- package/dist/src/tools/context-schemas.js +171 -0
- package/dist/src/tools/context-schemas.js.map +1 -0
- package/dist/src/tools/export-sessions.d.ts +111 -0
- package/dist/src/tools/export-sessions.d.ts.map +1 -0
- package/dist/src/tools/export-sessions.js +136 -0
- package/dist/src/tools/export-sessions.js.map +1 -0
- package/dist/src/tools/get-context.d.ts +208 -0
- package/dist/src/tools/get-context.d.ts.map +1 -0
- package/dist/src/tools/get-context.js +27 -0
- package/dist/src/tools/get-context.js.map +1 -0
- package/dist/src/tools/get-history-handoff.d.ts +109 -0
- package/dist/src/tools/get-history-handoff.d.ts.map +1 -0
- package/dist/src/tools/get-history-handoff.js +85 -0
- package/dist/src/tools/get-history-handoff.js.map +1 -0
- package/dist/src/tools/get-history-trends.d.ts +155 -0
- package/dist/src/tools/get-history-trends.d.ts.map +1 -0
- package/dist/src/tools/get-history-trends.js +123 -0
- package/dist/src/tools/get-history-trends.js.map +1 -0
- package/dist/src/tools/get-session-artifacts.d.ts +151 -0
- package/dist/src/tools/get-session-artifacts.d.ts.map +1 -0
- package/dist/src/tools/get-session-artifacts.js +184 -0
- package/dist/src/tools/get-session-artifacts.js.map +1 -0
- package/dist/src/tools/get-session-decisions.d.ts +69 -0
- package/dist/src/tools/get-session-decisions.d.ts.map +1 -0
- package/dist/src/tools/get-session-decisions.js +99 -0
- package/dist/src/tools/get-session-decisions.js.map +1 -0
- package/dist/src/tools/get-session-messages.d.ts +55 -0
- package/dist/src/tools/get-session-messages.d.ts.map +1 -0
- package/dist/src/tools/get-session-messages.js +89 -0
- package/dist/src/tools/get-session-messages.js.map +1 -0
- package/dist/src/tools/get-session-narrative.d.ts +72 -0
- package/dist/src/tools/get-session-narrative.d.ts.map +1 -0
- package/dist/src/tools/get-session-narrative.js +106 -0
- package/dist/src/tools/get-session-narrative.js.map +1 -0
- package/dist/src/tools/get-session-timeline.d.ts +55 -0
- package/dist/src/tools/get-session-timeline.d.ts.map +1 -0
- package/dist/src/tools/get-session-timeline.js +93 -0
- package/dist/src/tools/get-session-timeline.js.map +1 -0
- package/dist/src/tools/get-session-trends.d.ts +108 -0
- package/dist/src/tools/get-session-trends.d.ts.map +1 -0
- package/dist/src/tools/get-session-trends.js +130 -0
- package/dist/src/tools/get-session-trends.js.map +1 -0
- package/dist/src/tools/get-session.d.ts +251 -0
- package/dist/src/tools/get-session.d.ts.map +1 -0
- package/dist/src/tools/get-session.js +290 -0
- package/dist/src/tools/get-session.js.map +1 -0
- package/dist/src/tools/index.d.ts +22 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +22 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/list-contexts.d.ts +50 -0
- package/dist/src/tools/list-contexts.d.ts.map +1 -0
- package/dist/src/tools/list-contexts.js +28 -0
- package/dist/src/tools/list-contexts.js.map +1 -0
- package/dist/src/tools/list-sessions.d.ts +86 -0
- package/dist/src/tools/list-sessions.d.ts.map +1 -0
- package/dist/src/tools/list-sessions.js +97 -0
- package/dist/src/tools/list-sessions.js.map +1 -0
- package/dist/src/tools/merge-contexts.d.ts +58 -0
- package/dist/src/tools/merge-contexts.d.ts.map +1 -0
- package/dist/src/tools/merge-contexts.js +27 -0
- package/dist/src/tools/merge-contexts.js.map +1 -0
- package/dist/src/tools/move-session-context.d.ts +62 -0
- package/dist/src/tools/move-session-context.d.ts.map +1 -0
- package/dist/src/tools/move-session-context.js +33 -0
- package/dist/src/tools/move-session-context.js.map +1 -0
- package/dist/src/tools/reingest-session.d.ts +31 -0
- package/dist/src/tools/reingest-session.d.ts.map +1 -0
- package/dist/src/tools/reingest-session.js +43 -0
- package/dist/src/tools/reingest-session.js.map +1 -0
- package/dist/src/tools/reject-context-link.d.ts +58 -0
- package/dist/src/tools/reject-context-link.d.ts.map +1 -0
- package/dist/src/tools/reject-context-link.js +26 -0
- package/dist/src/tools/reject-context-link.js.map +1 -0
- package/dist/src/tools/resolve-context.d.ts +287 -0
- package/dist/src/tools/resolve-context.d.ts.map +1 -0
- package/dist/src/tools/resolve-context.js +35 -0
- package/dist/src/tools/resolve-context.js.map +1 -0
- package/dist/src/tools/search-history.d.ts +86 -0
- package/dist/src/tools/search-history.d.ts.map +1 -0
- package/dist/src/tools/search-history.js +103 -0
- package/dist/src/tools/search-history.js.map +1 -0
- package/dist/src/tools/session-ui-metadata.d.ts +15 -0
- package/dist/src/tools/session-ui-metadata.d.ts.map +1 -0
- package/dist/src/tools/session-ui-metadata.js +15 -0
- package/dist/src/tools/session-ui-metadata.js.map +1 -0
- package/dist/src/tools/set-active-context.d.ts +58 -0
- package/dist/src/tools/set-active-context.d.ts.map +1 -0
- package/dist/src/tools/set-active-context.js +26 -0
- package/dist/src/tools/set-active-context.js.map +1 -0
- package/dist/src/tools/split-context.d.ts +62 -0
- package/dist/src/tools/split-context.d.ts.map +1 -0
- package/dist/src/tools/split-context.js +36 -0
- package/dist/src/tools/split-context.js.map +1 -0
- package/dist/src/tools/verify-footprint.js +1 -1
- package/dist/src/tools/verify-footprint.js.map +1 -1
- package/dist/src/types.d.ts +2 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/ui/register.d.ts +6 -1
- package/dist/src/ui/register.d.ts.map +1 -1
- package/dist/src/ui/register.js +60 -16
- package/dist/src/ui/register.js.map +1 -1
- package/dist/ui/dashboard.html +239 -868
- package/dist/ui/detail.html +107 -248
- package/dist/ui/export.html +115 -298
- package/dist/ui/session-dashboard-live.html +264 -0
- package/dist/ui/session-dashboard.html +329 -0
- package/dist/ui/session-detail-live.html +336 -0
- package/dist/ui/session-detail.html +355 -0
- package/package.json +34 -9
|
@@ -1,7 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Current schema version
|
|
3
3
|
*/
|
|
4
|
-
const SCHEMA_VERSION = "
|
|
4
|
+
const SCHEMA_VERSION = "9";
|
|
5
|
+
function tableExists(db, tableName) {
|
|
6
|
+
const row = db
|
|
7
|
+
.prepare(`
|
|
8
|
+
SELECT name
|
|
9
|
+
FROM sqlite_master
|
|
10
|
+
WHERE type = 'table' AND name = ?
|
|
11
|
+
`)
|
|
12
|
+
.get(tableName);
|
|
13
|
+
return Boolean(row?.name);
|
|
14
|
+
}
|
|
15
|
+
function readSchemaVersion(db) {
|
|
16
|
+
if (!tableExists(db, "metadata")) {
|
|
17
|
+
return 0;
|
|
18
|
+
}
|
|
19
|
+
const row = db
|
|
20
|
+
.prepare(`
|
|
21
|
+
SELECT value
|
|
22
|
+
FROM metadata
|
|
23
|
+
WHERE key = 'schema_version'
|
|
24
|
+
`)
|
|
25
|
+
.get();
|
|
26
|
+
const parsed = Number.parseInt(row?.value ?? "", 10);
|
|
27
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
28
|
+
}
|
|
5
29
|
/**
|
|
6
30
|
* Creates the database schema (tables and indexes)
|
|
7
31
|
* This function is idempotent - safe to run multiple times
|
|
@@ -12,6 +36,8 @@ export function createSchema(db) {
|
|
|
12
36
|
// Note: No try/catch here — on failure, the caller (EvidenceDatabase constructor)
|
|
13
37
|
// owns the db lifecycle and handles cleanup. Previously this function closed the db
|
|
14
38
|
// on error, causing a double-close when the constructor's catch also called db.close().
|
|
39
|
+
const previousVersion = readSchemaVersion(db);
|
|
40
|
+
const currentVersion = Number.parseInt(SCHEMA_VERSION, 10);
|
|
15
41
|
// Pragmas must be set outside transactions
|
|
16
42
|
db.pragma("journal_mode = WAL");
|
|
17
43
|
db.pragma("synchronous = NORMAL");
|
|
@@ -48,13 +74,234 @@ export function createSchema(db) {
|
|
|
48
74
|
salt BLOB NOT NULL,
|
|
49
75
|
createdAt TEXT NOT NULL DEFAULT (datetime('now'))
|
|
50
76
|
);
|
|
77
|
+
`);
|
|
78
|
+
db.exec(`
|
|
79
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
80
|
+
id TEXT PRIMARY KEY,
|
|
81
|
+
host TEXT NOT NULL,
|
|
82
|
+
projectRoot TEXT NOT NULL,
|
|
83
|
+
cwd TEXT NOT NULL,
|
|
84
|
+
title TEXT,
|
|
85
|
+
status TEXT NOT NULL,
|
|
86
|
+
startedAt TEXT NOT NULL,
|
|
87
|
+
endedAt TEXT,
|
|
88
|
+
metadata TEXT,
|
|
89
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
90
|
+
updatedAt TEXT NOT NULL DEFAULT (datetime('now'))
|
|
91
|
+
);
|
|
92
|
+
`);
|
|
93
|
+
db.exec(`
|
|
94
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
95
|
+
id TEXT PRIMARY KEY,
|
|
96
|
+
sessionId TEXT NOT NULL,
|
|
97
|
+
seq INTEGER NOT NULL,
|
|
98
|
+
role TEXT NOT NULL,
|
|
99
|
+
source TEXT NOT NULL,
|
|
100
|
+
content TEXT NOT NULL,
|
|
101
|
+
capturedAt TEXT NOT NULL,
|
|
102
|
+
metadata TEXT,
|
|
103
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
104
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE,
|
|
105
|
+
UNIQUE (sessionId, seq)
|
|
106
|
+
);
|
|
107
|
+
`);
|
|
108
|
+
db.exec(`
|
|
109
|
+
CREATE TABLE IF NOT EXISTS timeline_events (
|
|
110
|
+
id TEXT PRIMARY KEY,
|
|
111
|
+
sessionId TEXT NOT NULL,
|
|
112
|
+
seq INTEGER NOT NULL,
|
|
113
|
+
eventType TEXT NOT NULL,
|
|
114
|
+
eventSubType TEXT,
|
|
115
|
+
source TEXT NOT NULL,
|
|
116
|
+
summary TEXT,
|
|
117
|
+
payload TEXT,
|
|
118
|
+
startedAt TEXT NOT NULL,
|
|
119
|
+
endedAt TEXT,
|
|
120
|
+
status TEXT,
|
|
121
|
+
relatedMessageId TEXT,
|
|
122
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
123
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE,
|
|
124
|
+
FOREIGN KEY (relatedMessageId) REFERENCES messages(id) ON DELETE SET NULL,
|
|
125
|
+
UNIQUE (sessionId, seq)
|
|
126
|
+
);
|
|
127
|
+
`);
|
|
128
|
+
db.exec(`
|
|
129
|
+
CREATE TABLE IF NOT EXISTS artifacts (
|
|
130
|
+
id TEXT PRIMARY KEY,
|
|
131
|
+
sessionId TEXT NOT NULL,
|
|
132
|
+
eventId TEXT,
|
|
133
|
+
artifactType TEXT NOT NULL,
|
|
134
|
+
path TEXT,
|
|
135
|
+
metadata TEXT,
|
|
136
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
137
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE,
|
|
138
|
+
FOREIGN KEY (eventId) REFERENCES timeline_events(id) ON DELETE SET NULL
|
|
139
|
+
);
|
|
140
|
+
`);
|
|
141
|
+
db.exec(`
|
|
142
|
+
CREATE TABLE IF NOT EXISTS decisions (
|
|
143
|
+
id TEXT PRIMARY KEY,
|
|
144
|
+
sessionId TEXT NOT NULL,
|
|
145
|
+
title TEXT NOT NULL,
|
|
146
|
+
summary TEXT NOT NULL,
|
|
147
|
+
rationale TEXT,
|
|
148
|
+
status TEXT NOT NULL,
|
|
149
|
+
sourceRefs TEXT NOT NULL,
|
|
150
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
151
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE
|
|
152
|
+
);
|
|
153
|
+
`);
|
|
154
|
+
db.exec(`
|
|
155
|
+
CREATE TABLE IF NOT EXISTS narratives (
|
|
156
|
+
id TEXT PRIMARY KEY,
|
|
157
|
+
sessionId TEXT NOT NULL,
|
|
158
|
+
kind TEXT NOT NULL,
|
|
159
|
+
content TEXT NOT NULL,
|
|
160
|
+
sourceRefs TEXT NOT NULL,
|
|
161
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
162
|
+
updatedAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
163
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE
|
|
164
|
+
);
|
|
165
|
+
`);
|
|
166
|
+
db.exec(`
|
|
167
|
+
CREATE TABLE IF NOT EXISTS ingestion_runs (
|
|
168
|
+
id TEXT PRIMARY KEY,
|
|
169
|
+
sessionId TEXT NOT NULL,
|
|
170
|
+
stage TEXT NOT NULL,
|
|
171
|
+
status TEXT NOT NULL,
|
|
172
|
+
error TEXT,
|
|
173
|
+
startedAt TEXT NOT NULL,
|
|
174
|
+
endedAt TEXT,
|
|
175
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE
|
|
176
|
+
);
|
|
177
|
+
`);
|
|
178
|
+
db.exec(`
|
|
179
|
+
CREATE TABLE IF NOT EXISTS session_history_cache (
|
|
180
|
+
sessionId TEXT PRIMARY KEY,
|
|
181
|
+
titleText TEXT NOT NULL DEFAULT '',
|
|
182
|
+
metadataText TEXT NOT NULL DEFAULT '',
|
|
183
|
+
messagesText TEXT NOT NULL DEFAULT '',
|
|
184
|
+
artifactsText TEXT NOT NULL DEFAULT '',
|
|
185
|
+
narrativesText TEXT NOT NULL DEFAULT '',
|
|
186
|
+
decisionsText TEXT NOT NULL DEFAULT '',
|
|
187
|
+
updatedAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
188
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE
|
|
189
|
+
);
|
|
190
|
+
`);
|
|
191
|
+
db.exec(`
|
|
192
|
+
CREATE TABLE IF NOT EXISTS session_issue_keys (
|
|
193
|
+
sessionId TEXT NOT NULL,
|
|
194
|
+
issueKey TEXT NOT NULL,
|
|
195
|
+
PRIMARY KEY (sessionId, issueKey),
|
|
196
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE
|
|
197
|
+
);
|
|
198
|
+
`);
|
|
199
|
+
db.exec(`
|
|
200
|
+
CREATE TABLE IF NOT EXISTS session_trend_attempts (
|
|
201
|
+
artifactId TEXT PRIMARY KEY,
|
|
202
|
+
sessionId TEXT NOT NULL,
|
|
203
|
+
issueKey TEXT NOT NULL,
|
|
204
|
+
issueLabel TEXT NOT NULL,
|
|
205
|
+
kind TEXT,
|
|
206
|
+
issueFamilyKey TEXT,
|
|
207
|
+
issueFamilyLabel TEXT,
|
|
208
|
+
outcome TEXT NOT NULL,
|
|
209
|
+
outcomeCategory TEXT NOT NULL,
|
|
210
|
+
seenAt TEXT NOT NULL,
|
|
211
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
212
|
+
FOREIGN KEY (artifactId) REFERENCES artifacts(id) ON DELETE CASCADE,
|
|
213
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE
|
|
214
|
+
);
|
|
215
|
+
`);
|
|
216
|
+
db.exec(`
|
|
217
|
+
CREATE TABLE IF NOT EXISTS session_trend_cache_state (
|
|
218
|
+
sessionId TEXT PRIMARY KEY,
|
|
219
|
+
updatedAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
220
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE
|
|
221
|
+
);
|
|
222
|
+
`);
|
|
223
|
+
db.exec(`
|
|
224
|
+
CREATE TABLE IF NOT EXISTS contexts (
|
|
225
|
+
id TEXT PRIMARY KEY,
|
|
226
|
+
label TEXT NOT NULL,
|
|
227
|
+
workspaceKey TEXT NOT NULL,
|
|
228
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
229
|
+
mergedIntoContextId TEXT,
|
|
230
|
+
metadata TEXT,
|
|
231
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
232
|
+
updatedAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
233
|
+
FOREIGN KEY (mergedIntoContextId) REFERENCES contexts(id) ON DELETE SET NULL
|
|
234
|
+
);
|
|
235
|
+
`);
|
|
236
|
+
db.exec(`
|
|
237
|
+
CREATE TABLE IF NOT EXISTS context_session_links (
|
|
238
|
+
sessionId TEXT PRIMARY KEY,
|
|
239
|
+
contextId TEXT NOT NULL,
|
|
240
|
+
linkSource TEXT NOT NULL,
|
|
241
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
242
|
+
updatedAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
243
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE,
|
|
244
|
+
FOREIGN KEY (contextId) REFERENCES contexts(id) ON DELETE CASCADE
|
|
245
|
+
);
|
|
246
|
+
`);
|
|
247
|
+
db.exec(`
|
|
248
|
+
CREATE TABLE IF NOT EXISTS context_link_rejections (
|
|
249
|
+
sessionId TEXT NOT NULL,
|
|
250
|
+
contextId TEXT NOT NULL,
|
|
251
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
252
|
+
PRIMARY KEY (sessionId, contextId),
|
|
253
|
+
FOREIGN KEY (sessionId) REFERENCES sessions(id) ON DELETE CASCADE,
|
|
254
|
+
FOREIGN KEY (contextId) REFERENCES contexts(id) ON DELETE CASCADE
|
|
255
|
+
);
|
|
256
|
+
`);
|
|
257
|
+
db.exec(`
|
|
258
|
+
CREATE TABLE IF NOT EXISTS context_workspace_preferences (
|
|
259
|
+
workspaceKey TEXT PRIMARY KEY,
|
|
260
|
+
contextId TEXT NOT NULL,
|
|
261
|
+
createdAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
262
|
+
updatedAt TEXT NOT NULL DEFAULT (datetime('now')),
|
|
263
|
+
FOREIGN KEY (contextId) REFERENCES contexts(id) ON DELETE CASCADE
|
|
264
|
+
);
|
|
51
265
|
`);
|
|
52
266
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_timestamp ON evidences(timestamp);`);
|
|
53
267
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_conversation_id ON evidences(conversationId);`);
|
|
54
268
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_content_hash ON evidences(contentHash);`);
|
|
55
|
-
db.
|
|
269
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_evidences_tags ON evidences(tags);`);
|
|
270
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_started_at ON sessions(startedAt DESC);`);
|
|
271
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_host ON sessions(host);`);
|
|
272
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_status_started_at ON sessions(status, startedAt DESC);`);
|
|
273
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_host_status_started_at ON sessions(host, status, startedAt DESC);`);
|
|
274
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_messages_session_seq ON messages(sessionId, seq);`);
|
|
275
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_messages_session_captured_at_seq ON messages(sessionId, capturedAt DESC, seq DESC, id DESC);`);
|
|
276
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_timeline_session_seq ON timeline_events(sessionId, seq);`);
|
|
277
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_artifacts_session ON artifacts(sessionId, artifactType);`);
|
|
278
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_decisions_session ON decisions(sessionId, createdAt DESC);`);
|
|
279
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_narratives_session ON narratives(sessionId, kind);`);
|
|
280
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_ingestion_runs_session ON ingestion_runs(sessionId, startedAt DESC);`);
|
|
281
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_history_cache_updated_at ON session_history_cache(updatedAt DESC);`);
|
|
282
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_issue_keys_issue_key ON session_issue_keys(issueKey, sessionId);`);
|
|
283
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_issue_keys_session_issue ON session_issue_keys(sessionId, issueKey);`);
|
|
284
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_trend_attempts_session_seen_at ON session_trend_attempts(sessionId, seenAt DESC);`);
|
|
285
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_trend_attempts_session_issue_key ON session_trend_attempts(sessionId, issueKey, seenAt DESC);`);
|
|
286
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_trend_attempts_issue_key ON session_trend_attempts(issueKey, seenAt DESC);`);
|
|
287
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_trend_attempts_issue_family_key ON session_trend_attempts(issueFamilyKey, seenAt DESC);`);
|
|
288
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_session_trend_cache_state_updated_at ON session_trend_cache_state(updatedAt DESC);`);
|
|
289
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_contexts_workspace_key_updated_at ON contexts(workspaceKey, updatedAt DESC);`);
|
|
290
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_contexts_status_updated_at ON contexts(status, updatedAt DESC);`);
|
|
291
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_context_session_links_context_id_updated_at ON context_session_links(contextId, updatedAt DESC);`);
|
|
292
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_context_link_rejections_context_id ON context_link_rejections(contextId, sessionId);`);
|
|
293
|
+
db.prepare(`
|
|
294
|
+
INSERT INTO metadata (key, value)
|
|
295
|
+
VALUES ('schema_version', ?)
|
|
296
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value
|
|
297
|
+
`).run(SCHEMA_VERSION);
|
|
56
298
|
});
|
|
57
299
|
initSchema();
|
|
300
|
+
return {
|
|
301
|
+
previousVersion,
|
|
302
|
+
currentVersion,
|
|
303
|
+
upgraded: previousVersion > 0 && previousVersion < currentVersion,
|
|
304
|
+
};
|
|
58
305
|
}
|
|
59
306
|
/**
|
|
60
307
|
* Verifies that the database schema is valid
|
|
@@ -80,6 +327,34 @@ export function verifySchema(db) {
|
|
|
80
327
|
if (!cryptoKeysTableInfo || cryptoKeysTableInfo.length === 0) {
|
|
81
328
|
return false;
|
|
82
329
|
}
|
|
330
|
+
const sessionsTableInfo = db.pragma("table_info(sessions)");
|
|
331
|
+
if (!sessionsTableInfo || sessionsTableInfo.length === 0) {
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
const messagesTableInfo = db.pragma("table_info(messages)");
|
|
335
|
+
if (!messagesTableInfo || messagesTableInfo.length === 0) {
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
const timelineTableInfo = db.pragma("table_info(timeline_events)");
|
|
339
|
+
if (!timelineTableInfo || timelineTableInfo.length === 0) {
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
const artifactsTableInfo = db.pragma("table_info(artifacts)");
|
|
343
|
+
if (!artifactsTableInfo || artifactsTableInfo.length === 0) {
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
346
|
+
const decisionsTableInfo = db.pragma("table_info(decisions)");
|
|
347
|
+
if (!decisionsTableInfo || decisionsTableInfo.length === 0) {
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
350
|
+
const narrativesTableInfo = db.pragma("table_info(narratives)");
|
|
351
|
+
if (!narrativesTableInfo || narrativesTableInfo.length === 0) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
const ingestionRunsTableInfo = db.pragma("table_info(ingestion_runs)");
|
|
355
|
+
if (!ingestionRunsTableInfo || ingestionRunsTableInfo.length === 0) {
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
83
358
|
// Verify required columns exist in evidences table
|
|
84
359
|
const evidencesColumns = evidencesTableInfo.map((col) => col.name);
|
|
85
360
|
const requiredColumns = [
|
|
@@ -97,6 +372,66 @@ export function verifySchema(db) {
|
|
|
97
372
|
return false;
|
|
98
373
|
}
|
|
99
374
|
}
|
|
375
|
+
const sessionColumns = sessionsTableInfo.map((col) => col.name);
|
|
376
|
+
for (const col of ["id", "host", "status", "startedAt"]) {
|
|
377
|
+
if (!sessionColumns.includes(col)) {
|
|
378
|
+
return false;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
const messageColumns = messagesTableInfo.map((col) => col.name);
|
|
382
|
+
for (const col of ["id", "sessionId", "seq", "role", "content"]) {
|
|
383
|
+
if (!messageColumns.includes(col)) {
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
const timelineColumns = timelineTableInfo.map((col) => col.name);
|
|
388
|
+
for (const col of ["id", "sessionId", "seq", "eventType", "startedAt"]) {
|
|
389
|
+
if (!timelineColumns.includes(col)) {
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const artifactColumns = artifactsTableInfo.map((col) => col.name);
|
|
394
|
+
for (const col of ["id", "sessionId", "artifactType", "createdAt"]) {
|
|
395
|
+
if (!artifactColumns.includes(col)) {
|
|
396
|
+
return false;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
const decisionColumns = decisionsTableInfo.map((col) => col.name);
|
|
400
|
+
for (const col of ["id", "sessionId", "title", "summary", "sourceRefs"]) {
|
|
401
|
+
if (!decisionColumns.includes(col)) {
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
const narrativeColumns = narrativesTableInfo.map((col) => col.name);
|
|
406
|
+
for (const col of ["id", "sessionId", "kind", "content", "sourceRefs"]) {
|
|
407
|
+
if (!narrativeColumns.includes(col)) {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
const ingestionRunColumns = ingestionRunsTableInfo.map((col) => col.name);
|
|
412
|
+
for (const col of ["id", "sessionId", "stage", "status", "startedAt"]) {
|
|
413
|
+
if (!ingestionRunColumns.includes(col)) {
|
|
414
|
+
return false;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
const contextsTableInfo = db.pragma("table_info(contexts)");
|
|
418
|
+
if (!contextsTableInfo || contextsTableInfo.length === 0) {
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
const contextLinksTableInfo = db.pragma("table_info(context_session_links)");
|
|
422
|
+
if (!contextLinksTableInfo || contextLinksTableInfo.length === 0) {
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
const contextRejectionsTableInfo = db.pragma("table_info(context_link_rejections)");
|
|
426
|
+
if (!contextRejectionsTableInfo ||
|
|
427
|
+
contextRejectionsTableInfo.length === 0) {
|
|
428
|
+
return false;
|
|
429
|
+
}
|
|
430
|
+
const contextPreferencesTableInfo = db.pragma("table_info(context_workspace_preferences)");
|
|
431
|
+
if (!contextPreferencesTableInfo ||
|
|
432
|
+
contextPreferencesTableInfo.length === 0) {
|
|
433
|
+
return false;
|
|
434
|
+
}
|
|
100
435
|
return true;
|
|
101
436
|
}
|
|
102
437
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/lib/storage/schema.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,cAAc,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/lib/storage/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,4 +23,126 @@ export interface Metadata {
|
|
|
23
23
|
key: string;
|
|
24
24
|
value: string;
|
|
25
25
|
}
|
|
26
|
+
export type SessionHost = "claude" | "gemini" | "codex";
|
|
27
|
+
export type SessionStatus = "running" | "completed" | "failed" | "interrupted";
|
|
28
|
+
export type SessionMessageRole = "user" | "assistant" | "system";
|
|
29
|
+
export interface SessionRecord {
|
|
30
|
+
id: string;
|
|
31
|
+
host: SessionHost;
|
|
32
|
+
projectRoot: string;
|
|
33
|
+
cwd: string;
|
|
34
|
+
title: string | null;
|
|
35
|
+
status: SessionStatus;
|
|
36
|
+
startedAt: string;
|
|
37
|
+
endedAt: string | null;
|
|
38
|
+
metadata: string | null;
|
|
39
|
+
createdAt: string;
|
|
40
|
+
updatedAt: string;
|
|
41
|
+
}
|
|
42
|
+
export interface SessionMessageRecord {
|
|
43
|
+
id: string;
|
|
44
|
+
sessionId: string;
|
|
45
|
+
seq: number;
|
|
46
|
+
role: SessionMessageRole;
|
|
47
|
+
source: string;
|
|
48
|
+
content: string;
|
|
49
|
+
capturedAt: string;
|
|
50
|
+
metadata: string | null;
|
|
51
|
+
}
|
|
52
|
+
export interface TimelineEventRecord {
|
|
53
|
+
id: string;
|
|
54
|
+
sessionId: string;
|
|
55
|
+
seq: number;
|
|
56
|
+
eventType: string;
|
|
57
|
+
eventSubType: string | null;
|
|
58
|
+
source: string;
|
|
59
|
+
summary: string | null;
|
|
60
|
+
payload: string | null;
|
|
61
|
+
startedAt: string;
|
|
62
|
+
endedAt: string | null;
|
|
63
|
+
status: string | null;
|
|
64
|
+
relatedMessageId: string | null;
|
|
65
|
+
}
|
|
66
|
+
export type ArtifactType = "file-change" | "command-output" | "test-result" | "git-commit";
|
|
67
|
+
export interface ArtifactRecord {
|
|
68
|
+
id: string;
|
|
69
|
+
sessionId: string;
|
|
70
|
+
eventId: string | null;
|
|
71
|
+
artifactType: ArtifactType;
|
|
72
|
+
path: string | null;
|
|
73
|
+
metadata: string | null;
|
|
74
|
+
createdAt: string;
|
|
75
|
+
}
|
|
76
|
+
export type DecisionStatus = "proposed" | "accepted" | "rejected" | "open";
|
|
77
|
+
export interface DecisionRecord {
|
|
78
|
+
id: string;
|
|
79
|
+
sessionId: string;
|
|
80
|
+
title: string;
|
|
81
|
+
summary: string;
|
|
82
|
+
rationale: string | null;
|
|
83
|
+
status: DecisionStatus;
|
|
84
|
+
sourceRefs: string;
|
|
85
|
+
createdAt: string;
|
|
86
|
+
}
|
|
87
|
+
export type NarrativeKind = "journal" | "project-summary" | "handoff";
|
|
88
|
+
export interface NarrativeRecord {
|
|
89
|
+
id: string;
|
|
90
|
+
sessionId: string;
|
|
91
|
+
kind: NarrativeKind;
|
|
92
|
+
content: string;
|
|
93
|
+
sourceRefs: string;
|
|
94
|
+
createdAt: string;
|
|
95
|
+
updatedAt: string;
|
|
96
|
+
}
|
|
97
|
+
export type IngestionStage = "deterministic" | "semantic";
|
|
98
|
+
export type IngestionStatus = "running" | "completed" | "failed";
|
|
99
|
+
export interface IngestionRunRecord {
|
|
100
|
+
id: string;
|
|
101
|
+
sessionId: string;
|
|
102
|
+
stage: IngestionStage;
|
|
103
|
+
status: IngestionStatus;
|
|
104
|
+
error: string | null;
|
|
105
|
+
startedAt: string;
|
|
106
|
+
endedAt: string | null;
|
|
107
|
+
}
|
|
108
|
+
export interface SessionDetail {
|
|
109
|
+
session: SessionRecord;
|
|
110
|
+
messages: SessionMessageRecord[];
|
|
111
|
+
timeline: TimelineEventRecord[];
|
|
112
|
+
artifacts: ArtifactRecord[];
|
|
113
|
+
narratives: NarrativeRecord[];
|
|
114
|
+
decisions: DecisionRecord[];
|
|
115
|
+
ingestionRuns: IngestionRunRecord[];
|
|
116
|
+
hasNarratives: boolean;
|
|
117
|
+
}
|
|
118
|
+
export type ContextStatus = "active" | "merged";
|
|
119
|
+
export type ContextLinkSource = "confirmed" | "moved" | "split" | "merge" | "bootstrap";
|
|
120
|
+
export interface ContextRecord {
|
|
121
|
+
id: string;
|
|
122
|
+
label: string;
|
|
123
|
+
workspaceKey: string;
|
|
124
|
+
status: ContextStatus;
|
|
125
|
+
mergedIntoContextId: string | null;
|
|
126
|
+
metadata: string | null;
|
|
127
|
+
createdAt: string;
|
|
128
|
+
updatedAt: string;
|
|
129
|
+
}
|
|
130
|
+
export interface ContextSessionLinkRecord {
|
|
131
|
+
sessionId: string;
|
|
132
|
+
contextId: string;
|
|
133
|
+
linkSource: ContextLinkSource;
|
|
134
|
+
createdAt: string;
|
|
135
|
+
updatedAt: string;
|
|
136
|
+
}
|
|
137
|
+
export interface ContextLinkRejectionRecord {
|
|
138
|
+
sessionId: string;
|
|
139
|
+
contextId: string;
|
|
140
|
+
createdAt: string;
|
|
141
|
+
}
|
|
142
|
+
export interface ContextWorkspacePreferenceRecord {
|
|
143
|
+
workspaceKey: string;
|
|
144
|
+
contextId: string;
|
|
145
|
+
createdAt: string;
|
|
146
|
+
updatedAt: string;
|
|
147
|
+
}
|
|
26
148
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/storage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,UAAU,CAAC;IAC7B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/storage/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8DzE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyF5D"}
|
|
@@ -28,12 +28,25 @@ Should I capture this conversation?
|
|
|
28
28
|
\u251C\u2500 Casual chat/small talk \u2192 NO
|
|
29
29
|
\u2514\u2500 Uncertain \u2192 ASK user
|
|
30
30
|
|
|
31
|
+
Should I reuse prior work context?
|
|
32
|
+
\u251C\u2500 Continuing or resuming work \u2192 resolve-context first
|
|
33
|
+
\u251C\u2500 resolve-context says confirmationRequired \u2192 ASK user
|
|
34
|
+
\u251C\u2500 In interactive CLI, use context prepare / run --prepare-context to ask before recording
|
|
35
|
+
\u251C\u2500 No strong candidate \u2192 create or confirm a new context
|
|
36
|
+
\u2514\u2500 User corrected the context before \u2192 trust confirmed context, not guesswork
|
|
37
|
+
|
|
31
38
|
## Tool Selection
|
|
32
39
|
- Save conversation \u2192 capture-footprint
|
|
33
40
|
- Browse/overview \u2192 list-footprints
|
|
34
41
|
- Full content retrieval \u2192 get-footprint
|
|
35
42
|
- Find by query/tags/dates \u2192 search-footprints
|
|
36
43
|
- Legal/audit export \u2192 export-footprints
|
|
44
|
+
- Session browse/detail \u2192 list-sessions / get-session
|
|
45
|
+
- Session handoff export \u2192 export-sessions
|
|
46
|
+
- Resolve likely work context \u2192 resolve-context
|
|
47
|
+
- Inspect confirmed context briefing \u2192 list-contexts / get-context
|
|
48
|
+
- Confirm or correct session-to-context links \u2192 confirm-context-link / reject-context-link / move-session-context
|
|
49
|
+
- Reorganize contexts \u2192 merge-contexts / split-context / set-active-context
|
|
37
50
|
- Verify integrity \u2192 verify-footprint
|
|
38
51
|
- Tag management \u2192 manage-tags (stats/rename/remove)
|
|
39
52
|
- Keyword pre-filter \u2192 suggest-capture
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-prompt.js","sourceRoot":"","sources":["../../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;;GAGG;AACH,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,qCAAqC;QAChF,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,WAAW;KAC1D,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,eAAe,GAAG
|
|
1
|
+
{"version":3,"file":"skill-prompt.js","sourceRoot":"","sources":["../../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;;GAGG;AACH,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,qCAAqC;QAChF,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,WAAW;KAC1D,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAwCqB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,YAAY,GAAG,WAAW,EAAE,CAAC;IAEnC,wBAAwB;IACxB,MAAM,CAAC,cAAc,CACnB,iBAAiB,EACjB;QACE,WAAW,EACT,6HAA6H;KAChI,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,EAAE;aACvD;SACF;KACF,CAAC,CACH,CAAC;IAEF,4BAA4B;IAC5B,MAAM,CAAC,cAAc,CACnB,qBAAqB,EACrB;QACE,WAAW,EACT,0FAA0F;KAC7F,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,EAAE;aAC1D;SACF;KACF,CAAC,CACH,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,cAAc,CACnB,0BAA0B,EAC1B;QACE,WAAW,EACT,uLAAuL;QACzL,UAAU,EAAE;YACV,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC;iBAC9C,GAAG,CAAC,KAAK,EAAE,sDAAsD,CAAC;iBAClE,QAAQ,CAAC,uDAAuD,CAAC;SACrE;KACF,EACD,KAAK,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;;;EAGhB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;yEAuBoD;iBAC9D;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
import type { EvidenceDatabase } from "../lib/storage/index.js";
|
|
3
|
+
export declare const confirmContextLinkSchema: {
|
|
4
|
+
inputSchema: {
|
|
5
|
+
sessionIds: z.ZodArray<z.ZodString>;
|
|
6
|
+
contextId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
label: z.ZodOptional<z.ZodString>;
|
|
8
|
+
setPreferred: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
};
|
|
10
|
+
outputSchema: {
|
|
11
|
+
action: z.ZodEnum<{
|
|
12
|
+
rejected: "rejected";
|
|
13
|
+
merged: "merged";
|
|
14
|
+
confirmed: "confirmed";
|
|
15
|
+
moved: "moved";
|
|
16
|
+
split: "split";
|
|
17
|
+
preferred: "preferred";
|
|
18
|
+
}>;
|
|
19
|
+
context: z.ZodNullable<z.ZodObject<{
|
|
20
|
+
id: z.ZodString;
|
|
21
|
+
label: z.ZodString;
|
|
22
|
+
workspaceKey: z.ZodString;
|
|
23
|
+
latestSessionId: z.ZodString;
|
|
24
|
+
latestSessionLabel: z.ZodString;
|
|
25
|
+
latestStartedAt: z.ZodString;
|
|
26
|
+
latestEndedAt: z.ZodNullable<z.ZodString>;
|
|
27
|
+
sessionCount: z.ZodNumber;
|
|
28
|
+
hosts: z.ZodArray<z.ZodEnum<{
|
|
29
|
+
claude: "claude";
|
|
30
|
+
gemini: "gemini";
|
|
31
|
+
codex: "codex";
|
|
32
|
+
}>>;
|
|
33
|
+
statuses: z.ZodArray<z.ZodEnum<{
|
|
34
|
+
running: "running";
|
|
35
|
+
completed: "completed";
|
|
36
|
+
failed: "failed";
|
|
37
|
+
interrupted: "interrupted";
|
|
38
|
+
}>>;
|
|
39
|
+
confidence: z.ZodEnum<{
|
|
40
|
+
high: "high";
|
|
41
|
+
medium: "medium";
|
|
42
|
+
low: "low";
|
|
43
|
+
}>;
|
|
44
|
+
confidenceScore: z.ZodNumber;
|
|
45
|
+
signals: z.ZodArray<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
47
|
+
affectedSessionIds: z.ZodArray<z.ZodString>;
|
|
48
|
+
contextId: z.ZodNullable<z.ZodString>;
|
|
49
|
+
mergedFromContextId: z.ZodNullable<z.ZodString>;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
export declare const confirmContextLinkMetadata: {
|
|
53
|
+
title: string;
|
|
54
|
+
description: string;
|
|
55
|
+
};
|
|
56
|
+
export declare function createConfirmContextLinkHandler(db: EvidenceDatabase): (params: {
|
|
57
|
+
sessionIds: string[];
|
|
58
|
+
contextId?: string;
|
|
59
|
+
label?: string;
|
|
60
|
+
setPreferred?: boolean;
|
|
61
|
+
}) => Promise<import("../lib/tool-response.js").ToolResponse<import("../lib/context-memory.js").ContextLinkMutationResult>>;
|
|
62
|
+
//# sourceMappingURL=confirm-context-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-context-link.d.ts","sourceRoot":"","sources":["../../../src/tools/confirm-context-link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUpC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;CAItC,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,gBAAgB;gBAKlD,MAAM,EAAE;gBACR,MAAM;YACV,MAAM;mBACC,OAAO;4HAoB3B"}
|