@pcircle/footprint 1.3.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +215 -137
- package/SKILL.md +77 -33
- 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/analyzers/content-analyzer.d.ts.map +1 -1
- package/dist/src/analyzers/content-analyzer.js +20 -4
- package/dist/src/analyzers/content-analyzer.js.map +1 -1
- 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 +36 -12
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli/utils/env.d.ts +7 -2
- package/dist/src/cli/utils/env.d.ts.map +1 -1
- package/dist/src/cli/utils/env.js +37 -6
- package/dist/src/cli/utils/env.js.map +1 -1
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +187 -33
- 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/crypto/decrypt.d.ts.map +1 -1
- package/dist/src/lib/crypto/decrypt.js +12 -8
- package/dist/src/lib/crypto/decrypt.js.map +1 -1
- package/dist/src/lib/crypto/encrypt.d.ts.map +1 -1
- package/dist/src/lib/crypto/encrypt.js +6 -3
- package/dist/src/lib/crypto/encrypt.js.map +1 -1
- package/dist/src/lib/crypto/key-derivation.d.ts +1 -1
- package/dist/src/lib/crypto/key-derivation.d.ts.map +1 -1
- package/dist/src/lib/crypto/key-derivation.js +11 -11
- package/dist/src/lib/crypto/key-derivation.js.map +1 -1
- 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 +257 -3
- package/dist/src/lib/storage/database.d.ts.map +1 -1
- package/dist/src/lib/storage/database.js +1836 -161
- 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/export.d.ts +1 -2
- package/dist/src/lib/storage/export.d.ts.map +1 -1
- package/dist/src/lib/storage/export.js +46 -33
- package/dist/src/lib/storage/export.js.map +1 -1
- 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/salt-storage.d.ts +1 -1
- package/dist/src/lib/storage/salt-storage.d.ts.map +1 -1
- package/dist/src/lib/storage/salt-storage.js +26 -18
- package/dist/src/lib/storage/salt-storage.js.map +1 -1
- package/dist/src/lib/storage/schema.d.ts +7 -2
- package/dist/src/lib/storage/schema.d.ts.map +1 -1
- package/dist/src/lib/storage/schema.js +357 -40
- 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/lib/tool-wrapper.d.ts.map +1 -1
- package/dist/src/lib/tool-wrapper.js +2 -2
- package/dist/src/lib/tool-wrapper.js.map +1 -1
- package/dist/src/prompts/skill-prompt.d.ts +6 -0
- package/dist/src/prompts/skill-prompt.d.ts.map +1 -0
- package/dist/src/prompts/skill-prompt.js +138 -0
- package/dist/src/prompts/skill-prompt.js.map +1 -0
- package/dist/src/tools/capture-footprint.d.ts +2 -2
- package/dist/src/tools/capture-footprint.d.ts.map +1 -1
- package/dist/src/tools/capture-footprint.js +52 -11
- package/dist/src/tools/capture-footprint.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/delete-footprints.d.ts +18 -1
- package/dist/src/tools/delete-footprints.d.ts.map +1 -1
- package/dist/src/tools/delete-footprints.js +53 -5
- package/dist/src/tools/delete-footprints.js.map +1 -1
- package/dist/src/tools/export-footprints.d.ts +11 -3
- package/dist/src/tools/export-footprints.d.ts.map +1 -1
- package/dist/src/tools/export-footprints.js +48 -9
- package/dist/src/tools/export-footprints.js.map +1 -1
- 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-footprint.d.ts +1 -7
- package/dist/src/tools/get-footprint.d.ts.map +1 -1
- package/dist/src/tools/get-footprint.js +7 -3
- package/dist/src/tools/get-footprint.js.map +1 -1
- 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 +23 -3
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +23 -3
- 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-footprints.d.ts +1 -15
- package/dist/src/tools/list-footprints.d.ts.map +1 -1
- package/dist/src/tools/list-footprints.js +17 -6
- package/dist/src/tools/list-footprints.js.map +1 -1
- 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/manage-tags.d.ts +47 -0
- package/dist/src/tools/manage-tags.d.ts.map +1 -0
- package/dist/src/tools/manage-tags.js +109 -0
- package/dist/src/tools/manage-tags.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-footprints.d.ts +2 -16
- package/dist/src/tools/search-footprints.d.ts.map +1 -1
- package/dist/src/tools/search-footprints.js +23 -7
- package/dist/src/tools/search-footprints.js.map +1 -1
- 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/suggest-capture.d.ts +1 -1
- package/dist/src/tools/suggest-capture.d.ts.map +1 -1
- package/dist/src/tools/suggest-capture.js +6 -2
- package/dist/src/tools/suggest-capture.js.map +1 -1
- package/dist/src/tools/verify-footprint.d.ts +7 -54
- package/dist/src/tools/verify-footprint.d.ts.map +1 -1
- package/dist/src/tools/verify-footprint.js +11 -8
- package/dist/src/tools/verify-footprint.js.map +1 -1
- package/dist/src/types.d.ts +6 -4
- 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 +259 -875
- package/dist/ui/detail.html +124 -252
- package/dist/ui/export.html +133 -303
- 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 +61 -16
- package/dist/src/lib/errors/base-error.d.ts +0 -15
- package/dist/src/lib/errors/base-error.d.ts.map +0 -1
- package/dist/src/lib/errors/base-error.js +0 -34
- package/dist/src/lib/errors/base-error.js.map +0 -1
- package/dist/src/lib/errors/crypto-error.d.ts +0 -29
- package/dist/src/lib/errors/crypto-error.d.ts.map +0 -1
- package/dist/src/lib/errors/crypto-error.js +0 -43
- package/dist/src/lib/errors/crypto-error.js.map +0 -1
- package/dist/src/lib/errors/index.d.ts +0 -26
- package/dist/src/lib/errors/index.d.ts.map +0 -1
- package/dist/src/lib/errors/index.js +0 -26
- package/dist/src/lib/errors/index.js.map +0 -1
- package/dist/src/lib/errors/storage-error.d.ts +0 -25
- package/dist/src/lib/errors/storage-error.d.ts.map +0 -1
- package/dist/src/lib/errors/storage-error.js +0 -38
- package/dist/src/lib/errors/storage-error.js.map +0 -1
- package/dist/src/lib/errors/validation-error.d.ts +0 -21
- package/dist/src/lib/errors/validation-error.d.ts.map +0 -1
- package/dist/src/lib/errors/validation-error.js +0 -29
- package/dist/src/lib/errors/validation-error.js.map +0 -1
- package/dist/src/test-helpers.d.ts +0 -33
- package/dist/src/test-helpers.d.ts.map +0 -1
- package/dist/src/test-helpers.js +0 -108
- package/dist/src/test-helpers.js.map +0 -1
- package/dist/src/tools/get-tag-stats.d.ts +0 -30
- package/dist/src/tools/get-tag-stats.d.ts.map +0 -1
- package/dist/src/tools/get-tag-stats.js +0 -33
- package/dist/src/tools/get-tag-stats.js.map +0 -1
- package/dist/src/tools/remove-tag.d.ts +0 -22
- package/dist/src/tools/remove-tag.d.ts.map +0 -1
- package/dist/src/tools/remove-tag.js +0 -30
- package/dist/src/tools/remove-tag.js.map +0 -1
- package/dist/src/tools/rename-tag.d.ts +0 -24
- package/dist/src/tools/rename-tag.d.ts.map +0 -1
- package/dist/src/tools/rename-tag.js +0 -34
- package/dist/src/tools/rename-tag.js.map +0 -1
|
@@ -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
|
|
@@ -9,16 +33,18 @@ const SCHEMA_VERSION = '1';
|
|
|
9
33
|
* @param db - SQLite database instance
|
|
10
34
|
*/
|
|
11
35
|
export function createSchema(db) {
|
|
12
|
-
try
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
36
|
+
// Note: No try/catch here — on failure, the caller (EvidenceDatabase constructor)
|
|
37
|
+
// owns the db lifecycle and handles cleanup. Previously this function closed the db
|
|
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);
|
|
41
|
+
// Pragmas must be set outside transactions
|
|
42
|
+
db.pragma("journal_mode = WAL");
|
|
43
|
+
db.pragma("synchronous = NORMAL");
|
|
44
|
+
db.pragma("busy_timeout = 5000");
|
|
45
|
+
db.pragma("foreign_keys = ON");
|
|
46
|
+
// Wrap DDL + DML in transaction for atomicity (prevents partial schema on failure)
|
|
47
|
+
const initSchema = db.transaction(() => {
|
|
22
48
|
db.exec(`
|
|
23
49
|
CREATE TABLE IF NOT EXISTS evidences (
|
|
24
50
|
id TEXT PRIMARY KEY,
|
|
@@ -36,14 +62,12 @@ export function createSchema(db) {
|
|
|
36
62
|
updatedAt TEXT NOT NULL DEFAULT (datetime('now'))
|
|
37
63
|
);
|
|
38
64
|
`);
|
|
39
|
-
// Create metadata table for schema versioning and configuration
|
|
40
65
|
db.exec(`
|
|
41
66
|
CREATE TABLE IF NOT EXISTS metadata (
|
|
42
67
|
key TEXT PRIMARY KEY,
|
|
43
68
|
value TEXT NOT NULL
|
|
44
69
|
);
|
|
45
70
|
`);
|
|
46
|
-
// Create crypto_keys table for master salt storage
|
|
47
71
|
db.exec(`
|
|
48
72
|
CREATE TABLE IF NOT EXISTS crypto_keys (
|
|
49
73
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
@@ -51,28 +75,233 @@ export function createSchema(db) {
|
|
|
51
75
|
createdAt TEXT NOT NULL DEFAULT (datetime('now'))
|
|
52
76
|
);
|
|
53
77
|
`);
|
|
54
|
-
// Create indexes for common queries
|
|
55
78
|
db.exec(`
|
|
56
|
-
CREATE
|
|
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
|
+
);
|
|
57
92
|
`);
|
|
58
93
|
db.exec(`
|
|
59
|
-
CREATE
|
|
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
|
+
);
|
|
60
107
|
`);
|
|
61
108
|
db.exec(`
|
|
62
|
-
CREATE
|
|
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
|
+
);
|
|
63
127
|
`);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
+
);
|
|
68
140
|
`);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
+
);
|
|
265
|
+
`);
|
|
266
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_timestamp ON evidences(timestamp);`);
|
|
267
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_conversation_id ON evidences(conversationId);`);
|
|
268
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_content_hash ON evidences(contentHash);`);
|
|
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);
|
|
298
|
+
});
|
|
299
|
+
initSchema();
|
|
300
|
+
return {
|
|
301
|
+
previousVersion,
|
|
302
|
+
currentVersion,
|
|
303
|
+
upgraded: previousVersion > 0 && previousVersion < currentVersion,
|
|
304
|
+
};
|
|
76
305
|
}
|
|
77
306
|
/**
|
|
78
307
|
* Verifies that the database schema is valid
|
|
@@ -84,40 +313,128 @@ export function createSchema(db) {
|
|
|
84
313
|
export function verifySchema(db) {
|
|
85
314
|
try {
|
|
86
315
|
// Check if evidences table exists
|
|
87
|
-
const evidencesTableInfo = db.pragma(
|
|
316
|
+
const evidencesTableInfo = db.pragma("table_info(evidences)");
|
|
88
317
|
if (!evidencesTableInfo || evidencesTableInfo.length === 0) {
|
|
89
318
|
return false;
|
|
90
319
|
}
|
|
91
320
|
// Check if metadata table exists
|
|
92
|
-
const metadataTableInfo = db.pragma(
|
|
321
|
+
const metadataTableInfo = db.pragma("table_info(metadata)");
|
|
93
322
|
if (!metadataTableInfo || metadataTableInfo.length === 0) {
|
|
94
323
|
return false;
|
|
95
324
|
}
|
|
96
325
|
// Check if crypto_keys table exists
|
|
97
|
-
const cryptoKeysTableInfo = db.pragma(
|
|
326
|
+
const cryptoKeysTableInfo = db.pragma("table_info(crypto_keys)");
|
|
98
327
|
if (!cryptoKeysTableInfo || cryptoKeysTableInfo.length === 0) {
|
|
99
328
|
return false;
|
|
100
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
|
+
}
|
|
101
358
|
// Verify required columns exist in evidences table
|
|
102
359
|
const evidencesColumns = evidencesTableInfo.map((col) => col.name);
|
|
103
360
|
const requiredColumns = [
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
361
|
+
"id",
|
|
362
|
+
"timestamp",
|
|
363
|
+
"encryptedContent",
|
|
364
|
+
"nonce",
|
|
365
|
+
"contentHash",
|
|
366
|
+
"messageCount",
|
|
367
|
+
"createdAt",
|
|
368
|
+
"updatedAt",
|
|
112
369
|
];
|
|
113
370
|
for (const col of requiredColumns) {
|
|
114
371
|
if (!evidencesColumns.includes(col)) {
|
|
115
372
|
return false;
|
|
116
373
|
}
|
|
117
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
|
+
}
|
|
118
435
|
return true;
|
|
119
436
|
}
|
|
120
|
-
catch
|
|
437
|
+
catch {
|
|
121
438
|
return false;
|
|
122
439
|
}
|
|
123
440
|
}
|
|
@@ -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":"tool-wrapper.d.ts","sourceRoot":"","sources":["../../../src/lib/tool-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAC9C,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAC7C,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"tool-wrapper.d.ts","sourceRoot":"","sources":["../../../src/lib/tool-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAC9C,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAC7C,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAYvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAClD,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GACpC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAY9B"}
|
|
@@ -46,7 +46,7 @@ export function wrapToolHandler(toolName, suggestedAction, handler) {
|
|
|
46
46
|
}
|
|
47
47
|
catch (error) {
|
|
48
48
|
const errorMessage = getErrorMessage(error);
|
|
49
|
-
throw new Error(`[Tool: ${toolName}] ${errorMessage}. Suggested action: ${suggestedAction}
|
|
49
|
+
throw new Error(`[Tool: ${toolName}] ${errorMessage}. Suggested action: ${suggestedAction}`, { cause: error });
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
}
|
|
@@ -66,7 +66,7 @@ export function wrapSyncToolHandler(toolName, suggestedAction, handler) {
|
|
|
66
66
|
}
|
|
67
67
|
catch (error) {
|
|
68
68
|
const errorMessage = getErrorMessage(error);
|
|
69
|
-
throw new Error(`[Tool: ${toolName}] ${errorMessage}. Suggested action: ${suggestedAction}
|
|
69
|
+
throw new Error(`[Tool: ${toolName}] ${errorMessage}. Suggested action: ${suggestedAction}`, { cause: error });
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-wrapper.js","sourceRoot":"","sources":["../../../src/lib/tool-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,eAAuB,EACvB,OAA8C;IAE9C,OAAO,KAAK,EAAE,MAAe,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,UAAU,QAAQ,KAAK,YAAY,uBAAuB,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"tool-wrapper.js","sourceRoot":"","sources":["../../../src/lib/tool-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,eAAuB,EACvB,OAA8C;IAE9C,OAAO,KAAK,EAAE,MAAe,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,UAAU,QAAQ,KAAK,YAAY,uBAAuB,eAAe,EAAE,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,eAAuB,EACvB,OAAqC;IAErC,OAAO,CAAC,MAAe,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,UAAU,QAAQ,KAAK,YAAY,uBAAuB,eAAe,EAAE,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|