lifeos 1.0.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 +21 -0
- package/README.en.md +202 -0
- package/README.md +202 -0
- package/assets/lifeos-rules.en.md +162 -0
- package/assets/lifeos-rules.zh.md +162 -0
- package/assets/lifeos.yaml +56 -0
- package/assets/prompts/AI_LLMResearch_Prompt.en.md +120 -0
- package/assets/prompts/AI_LLMResearch_Prompt.zh.md +120 -0
- package/assets/prompts/Art_ChinesePainting_Prompt.en.md +147 -0
- package/assets/prompts/Art_ChinesePainting_Prompt.zh.md +148 -0
- package/assets/prompts/Cryptography_Prompt.en.md +148 -0
- package/assets/prompts/Cryptography_Prompt.zh.md +147 -0
- package/assets/prompts/History_ChineseCulture_Prompt.en.md +98 -0
- package/assets/prompts/History_ChineseCulture_Prompt.zh.md +98 -0
- package/assets/prompts/Math_HigherMathematics_Prompt.en.md +117 -0
- package/assets/prompts/Math_HigherMathematics_Prompt.zh.md +116 -0
- package/assets/schema/Frontmatter_Schema.md +139 -0
- package/assets/skills/_shared/completion-report.en.md +30 -0
- package/assets/skills/_shared/completion-report.zh.md +30 -0
- package/assets/skills/_shared/dual-agent-orchestrator.en.md +40 -0
- package/assets/skills/_shared/dual-agent-orchestrator.zh.md +40 -0
- package/assets/skills/_shared/learning-lifecycle.en.md +53 -0
- package/assets/skills/_shared/learning-lifecycle.zh.md +53 -0
- package/assets/skills/_shared/lifecycle.en.md +84 -0
- package/assets/skills/_shared/lifecycle.zh.md +84 -0
- package/assets/skills/_shared/memory-protocol.en.md +36 -0
- package/assets/skills/_shared/memory-protocol.zh.md +36 -0
- package/assets/skills/_shared/template-loading.en.md +26 -0
- package/assets/skills/_shared/template-loading.zh.md +26 -0
- package/assets/skills/archive/SKILL.en.md +300 -0
- package/assets/skills/archive/SKILL.zh.md +300 -0
- package/assets/skills/ask/SKILL.en.md +164 -0
- package/assets/skills/ask/SKILL.zh.md +164 -0
- package/assets/skills/brainstorm/SKILL.en.md +242 -0
- package/assets/skills/brainstorm/SKILL.zh.md +242 -0
- package/assets/skills/brainstorm/references/action-options.en.md +65 -0
- package/assets/skills/brainstorm/references/action-options.zh.md +65 -0
- package/assets/skills/knowledge/SKILL.en.md +202 -0
- package/assets/skills/knowledge/SKILL.zh.md +202 -0
- package/assets/skills/project/SKILL.en.md +133 -0
- package/assets/skills/project/SKILL.zh.md +133 -0
- package/assets/skills/project/references/execution-agent-prompt.en.md +148 -0
- package/assets/skills/project/references/execution-agent-prompt.zh.md +148 -0
- package/assets/skills/project/references/planning-agent-prompt.en.md +162 -0
- package/assets/skills/project/references/planning-agent-prompt.zh.md +162 -0
- package/assets/skills/read-pdf/SKILL.en.md +199 -0
- package/assets/skills/read-pdf/SKILL.zh.md +199 -0
- package/assets/skills/read-pdf/scripts/read_pdf.py +354 -0
- package/assets/skills/research/SKILL.en.md +107 -0
- package/assets/skills/research/SKILL.zh.md +107 -0
- package/assets/skills/research/references/execution-agent-prompt.en.md +166 -0
- package/assets/skills/research/references/execution-agent-prompt.zh.md +166 -0
- package/assets/skills/research/references/planning-agent-prompt.en.md +129 -0
- package/assets/skills/research/references/planning-agent-prompt.zh.md +129 -0
- package/assets/skills/revise/SKILL.en.md +258 -0
- package/assets/skills/revise/SKILL.zh.md +258 -0
- package/assets/skills/revise/references/grading-protocol.en.md +99 -0
- package/assets/skills/revise/references/grading-protocol.zh.md +99 -0
- package/assets/skills/today/SKILL.en.md +211 -0
- package/assets/skills/today/SKILL.zh.md +211 -0
- package/assets/templates/en/Daily_Template.md +25 -0
- package/assets/templates/en/Draft_Template.md +29 -0
- package/assets/templates/en/Knowledge_Template.md +86 -0
- package/assets/templates/en/Project_Template.md +110 -0
- package/assets/templates/en/Research_Template.md +46 -0
- package/assets/templates/en/Retrospective_Template.md +89 -0
- package/assets/templates/en/Revise_Template.md +24 -0
- package/assets/templates/en/Wiki_Template.md +35 -0
- package/assets/templates/zh/Daily_Template.md +26 -0
- package/assets/templates/zh/Draft_Template.md +29 -0
- package/assets/templates/zh/Knowledge_Template.md +86 -0
- package/assets/templates/zh/Project_Template.md +110 -0
- package/assets/templates/zh/Research_Template.md +46 -0
- package/assets/templates/zh/Retrospective_Template.md +89 -0
- package/assets/templates/zh/Revise_Template.md +24 -0
- package/assets/templates/zh/Wiki_Template.md +35 -0
- package/bin/lifeos.js +24 -0
- package/dist/active-docs/citations.d.ts +20 -0
- package/dist/active-docs/citations.js +74 -0
- package/dist/active-docs/citations.js.map +1 -0
- package/dist/active-docs/derived-memory.d.ts +57 -0
- package/dist/active-docs/derived-memory.js +161 -0
- package/dist/active-docs/derived-memory.js.map +1 -0
- package/dist/active-docs/index.d.ts +51 -0
- package/dist/active-docs/index.js +165 -0
- package/dist/active-docs/index.js.map +1 -0
- package/dist/active-docs/long-term-profile.d.ts +24 -0
- package/dist/active-docs/long-term-profile.js +75 -0
- package/dist/active-docs/long-term-profile.js.map +1 -0
- package/dist/active-docs/taskboard.d.ts +12 -0
- package/dist/active-docs/taskboard.js +146 -0
- package/dist/active-docs/taskboard.js.map +1 -0
- package/dist/active-docs/userprofile.d.ts +12 -0
- package/dist/active-docs/userprofile.js +169 -0
- package/dist/active-docs/userprofile.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +9 -0
- package/dist/cli/commands/doctor.js +125 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.js +129 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/rename.d.ts +7 -0
- package/dist/cli/commands/rename.js +188 -0
- package/dist/cli/commands/rename.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +6 -0
- package/dist/cli/commands/upgrade.js +66 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +52 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/assets.d.ts +3 -0
- package/dist/cli/utils/assets.js +20 -0
- package/dist/cli/utils/assets.js.map +1 -0
- package/dist/cli/utils/install-assets.d.ts +39 -0
- package/dist/cli/utils/install-assets.js +141 -0
- package/dist/cli/utils/install-assets.js.map +1 -0
- package/dist/cli/utils/lang.d.ts +1 -0
- package/dist/cli/utils/lang.js +32 -0
- package/dist/cli/utils/lang.js.map +1 -0
- package/dist/cli/utils/managed-assets.d.ts +9 -0
- package/dist/cli/utils/managed-assets.js +20 -0
- package/dist/cli/utils/managed-assets.js.map +1 -0
- package/dist/cli/utils/mcp-register.d.ts +2 -0
- package/dist/cli/utils/mcp-register.js +132 -0
- package/dist/cli/utils/mcp-register.js.map +1 -0
- package/dist/cli/utils/sync-vault.d.ts +14 -0
- package/dist/cli/utils/sync-vault.js +132 -0
- package/dist/cli/utils/sync-vault.js.map +1 -0
- package/dist/cli/utils/ui.d.ts +14 -0
- package/dist/cli/utils/ui.js +78 -0
- package/dist/cli/utils/ui.js.map +1 -0
- package/dist/cli/utils/version.d.ts +1 -0
- package/dist/cli/utils/version.js +4 -0
- package/dist/cli/utils/version.js.map +1 -0
- package/dist/config.d.ts +127 -0
- package/dist/config.js +356 -0
- package/dist/config.js.map +1 -0
- package/dist/core.d.ts +106 -0
- package/dist/core.js +286 -0
- package/dist/core.js.map +1 -0
- package/dist/db/consolidation.d.ts +14 -0
- package/dist/db/consolidation.js +28 -0
- package/dist/db/consolidation.js.map +1 -0
- package/dist/db/index.d.ts +22 -0
- package/dist/db/index.js +39 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +7 -0
- package/dist/db/schema.js +175 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +303 -0
- package/dist/server.js.map +1 -0
- package/dist/services/capture.d.ts +101 -0
- package/dist/services/capture.js +297 -0
- package/dist/services/capture.js.map +1 -0
- package/dist/services/enhance.d.ts +51 -0
- package/dist/services/enhance.js +184 -0
- package/dist/services/enhance.js.map +1 -0
- package/dist/services/layer0.d.ts +24 -0
- package/dist/services/layer0.js +90 -0
- package/dist/services/layer0.js.map +1 -0
- package/dist/services/maintenance.d.ts +27 -0
- package/dist/services/maintenance.js +73 -0
- package/dist/services/maintenance.js.map +1 -0
- package/dist/services/retrieval.d.ts +120 -0
- package/dist/services/retrieval.js +571 -0
- package/dist/services/retrieval.js.map +1 -0
- package/dist/services/startup.d.ts +28 -0
- package/dist/services/startup.js +112 -0
- package/dist/services/startup.js.map +1 -0
- package/dist/skill-context/ask-global.d.ts +8 -0
- package/dist/skill-context/ask-global.js +21 -0
- package/dist/skill-context/ask-global.js.map +1 -0
- package/dist/skill-context/base.d.ts +48 -0
- package/dist/skill-context/base.js +5 -0
- package/dist/skill-context/base.js.map +1 -0
- package/dist/skill-context/daily-global.d.ts +8 -0
- package/dist/skill-context/daily-global.js +25 -0
- package/dist/skill-context/daily-global.js.map +1 -0
- package/dist/skill-context/index.d.ts +32 -0
- package/dist/skill-context/index.js +171 -0
- package/dist/skill-context/index.js.map +1 -0
- package/dist/skill-context/knowledge-strict.d.ts +8 -0
- package/dist/skill-context/knowledge-strict.js +26 -0
- package/dist/skill-context/knowledge-strict.js.map +1 -0
- package/dist/skill-context/review-strict.d.ts +8 -0
- package/dist/skill-context/review-strict.js +26 -0
- package/dist/skill-context/review-strict.js.map +1 -0
- package/dist/skill-context/revise-strict.d.ts +8 -0
- package/dist/skill-context/revise-strict.js +26 -0
- package/dist/skill-context/revise-strict.js.map +1 -0
- package/dist/skill-context/seed-profiles.d.ts +21 -0
- package/dist/skill-context/seed-profiles.js +80 -0
- package/dist/skill-context/seed-profiles.js.map +1 -0
- package/dist/types.d.ts +165 -0
- package/dist/types.js +76 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/context-policy.d.ts +57 -0
- package/dist/utils/context-policy.js +333 -0
- package/dist/utils/context-policy.js.map +1 -0
- package/dist/utils/scan-state.d.ts +41 -0
- package/dist/utils/scan-state.js +79 -0
- package/dist/utils/scan-state.js.map +1 -0
- package/dist/utils/segmenter.d.ts +19 -0
- package/dist/utils/segmenter.js +75 -0
- package/dist/utils/segmenter.js.map +1 -0
- package/dist/utils/shared.d.ts +103 -0
- package/dist/utils/shared.js +313 -0
- package/dist/utils/shared.js.map +1 -0
- package/dist/utils/vault-indexer.d.ts +53 -0
- package/dist/utils/vault-indexer.js +256 -0
- package/dist/utils/vault-indexer.js.map +1 -0
- package/package.json +59 -0
package/dist/core.js
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core.ts — 核心调度层。
|
|
3
|
+
*
|
|
4
|
+
* Thin orchestration wrappers over service modules.
|
|
5
|
+
* Each function opens a DB, calls services, closes DB, and returns results.
|
|
6
|
+
*/
|
|
7
|
+
import { mkdirSync } from 'node:fs';
|
|
8
|
+
import { dirname } from 'node:path';
|
|
9
|
+
import Database from 'better-sqlite3';
|
|
10
|
+
import { refreshTaskboard, refreshUserprofile, taskboardCitations, userprofileCitations, } from './active-docs/index.js';
|
|
11
|
+
import { getOrCreateVaultConfig } from './config.js';
|
|
12
|
+
import { initDb } from './db/schema.js';
|
|
13
|
+
import { autoCaptureEvents, buildAutoSessionBridge, collectSessionBridgeSeedEvents, latestSessionBridge, logEvent, notifyFileChanged, } from './services/capture.js';
|
|
14
|
+
import { processEnhanceQueue } from './services/enhance.js';
|
|
15
|
+
import { queryRecentEvents, queryVaultIndex, } from './services/retrieval.js';
|
|
16
|
+
import { runStartup } from './services/startup.js';
|
|
17
|
+
import { buildSkillContext } from './skill-context/index.js';
|
|
18
|
+
import { ACTIVE_DOC_TARGETS, VALID_ENTRY_TYPES, } from './types.js';
|
|
19
|
+
import { ensureContextPolicyExists, loadContextPolicy, resolveScenePolicy, } from './utils/context-policy.js';
|
|
20
|
+
import { resolveSessionId } from './utils/shared.js';
|
|
21
|
+
// ─── Internal helpers ─────────────────────────────────────────────────────────
|
|
22
|
+
function openDb(dbPath) {
|
|
23
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
24
|
+
const db = new Database(dbPath);
|
|
25
|
+
db.pragma('journal_mode = WAL');
|
|
26
|
+
db.pragma('foreign_keys = ON');
|
|
27
|
+
return db;
|
|
28
|
+
}
|
|
29
|
+
function resolveDbAndVault(dbPath, vaultRoot) {
|
|
30
|
+
const vault = vaultRoot || process.env.LIFEOS_VAULT_ROOT || process.cwd();
|
|
31
|
+
const config = getOrCreateVaultConfig(vault);
|
|
32
|
+
const resolvedDbPath = dbPath || config.dbPath().toString();
|
|
33
|
+
const db = openDb(resolvedDbPath);
|
|
34
|
+
initDb(db);
|
|
35
|
+
return { db, vault, config };
|
|
36
|
+
}
|
|
37
|
+
// ─── 1. memory_startup ────────────────────────────────────────────────────────
|
|
38
|
+
export function memoryStartup(opts) {
|
|
39
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
40
|
+
try {
|
|
41
|
+
const resolvedSessionId = resolveSessionId(opts.sessionId);
|
|
42
|
+
ensureContextPolicyExists(vault);
|
|
43
|
+
return runStartup(db, vault, resolvedSessionId);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
db.close();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// ─── 2. memory_query ──────────────────────────────────────────────────────────
|
|
50
|
+
export function memoryQuery(opts) {
|
|
51
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
52
|
+
try {
|
|
53
|
+
let scenePolicy = null;
|
|
54
|
+
if (opts.scene) {
|
|
55
|
+
const policy = loadContextPolicy(vault);
|
|
56
|
+
scenePolicy = resolveScenePolicy(policy, opts.scene);
|
|
57
|
+
}
|
|
58
|
+
const result = queryVaultIndex(db, opts.query || '', opts.filters || null, opts.limit || 10, scenePolicy);
|
|
59
|
+
return scenePolicy ? { ...result, scene_policy: scenePolicy } : result;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
db.close();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// ─── 3. memory_recent ─────────────────────────────────────────────────────────
|
|
66
|
+
export function memoryRecent(opts) {
|
|
67
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
68
|
+
try {
|
|
69
|
+
let scenePolicy = null;
|
|
70
|
+
if (opts.scene) {
|
|
71
|
+
const policy = loadContextPolicy(vault);
|
|
72
|
+
scenePolicy = resolveScenePolicy(policy, opts.scene);
|
|
73
|
+
}
|
|
74
|
+
const result = queryRecentEvents(db, {
|
|
75
|
+
days: opts.days || 14,
|
|
76
|
+
entryType: opts.entryType || null,
|
|
77
|
+
scope: opts.scope || null,
|
|
78
|
+
query: opts.query || null,
|
|
79
|
+
limit: opts.limit || 20,
|
|
80
|
+
scenePolicy,
|
|
81
|
+
});
|
|
82
|
+
return scenePolicy ? { ...result, scene_policy: scenePolicy } : result;
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
db.close();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// ─── 4. memory_log ────────────────────────────────────────────────────────────
|
|
89
|
+
export function memoryLog(opts) {
|
|
90
|
+
if (!VALID_ENTRY_TYPES.has(opts.entryType)) {
|
|
91
|
+
throw new Error(`Invalid entry_type: ${opts.entryType}`);
|
|
92
|
+
}
|
|
93
|
+
if (opts.importance < 1 || opts.importance > 5) {
|
|
94
|
+
throw new Error(`importance must be 1-5, got: ${opts.importance}`);
|
|
95
|
+
}
|
|
96
|
+
const { db } = resolveDbAndVault(opts.dbPath);
|
|
97
|
+
try {
|
|
98
|
+
return logEvent(db, {
|
|
99
|
+
entryType: opts.entryType,
|
|
100
|
+
importance: opts.importance,
|
|
101
|
+
summary: opts.summary,
|
|
102
|
+
scope: opts.scope,
|
|
103
|
+
sessionId: opts.sessionId,
|
|
104
|
+
skillName: opts.skillName,
|
|
105
|
+
detail: opts.detail,
|
|
106
|
+
sourceRefs: opts.sourceRefs,
|
|
107
|
+
relatedFiles: opts.relatedFiles,
|
|
108
|
+
relatedEntities: opts.relatedEntities,
|
|
109
|
+
supersedes: opts.supersedes,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
db.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// ─── 5. memory_auto_capture ───────────────────────────────────────────────────
|
|
117
|
+
export function memoryAutoCapture(opts) {
|
|
118
|
+
const { db } = resolveDbAndVault(opts.dbPath);
|
|
119
|
+
try {
|
|
120
|
+
return autoCaptureEvents(db, {
|
|
121
|
+
corrections: opts.corrections,
|
|
122
|
+
decisions: opts.decisions,
|
|
123
|
+
preferences: opts.preferences,
|
|
124
|
+
}, opts.sessionId);
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
db.close();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// ─── 6. memory_notify ─────────────────────────────────────────────────────────
|
|
131
|
+
export function memoryNotify(opts) {
|
|
132
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
133
|
+
try {
|
|
134
|
+
return notifyFileChanged(db, vault, opts.filePath);
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
db.close();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// ─── 7. memory_checkpoint ─────────────────────────────────────────────────────
|
|
141
|
+
export function memoryCheckpoint(opts) {
|
|
142
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
143
|
+
try {
|
|
144
|
+
const resolvedSessionId = resolveSessionId(opts.sessionId);
|
|
145
|
+
const closedAt = new Date().toISOString();
|
|
146
|
+
// Check for session bridge
|
|
147
|
+
let sessionBridge = latestSessionBridge(db, resolvedSessionId)?.summary || null;
|
|
148
|
+
if (!sessionBridge) {
|
|
149
|
+
const seeds = collectSessionBridgeSeedEvents(db, resolvedSessionId);
|
|
150
|
+
const autoBridge = buildAutoSessionBridge(seeds);
|
|
151
|
+
if (autoBridge && autoBridge !== '上次会话无关键事件记录。') {
|
|
152
|
+
logEvent(db, {
|
|
153
|
+
entryType: 'session_bridge',
|
|
154
|
+
importance: 4,
|
|
155
|
+
summary: autoBridge,
|
|
156
|
+
sessionId: resolvedSessionId,
|
|
157
|
+
});
|
|
158
|
+
sessionBridge = autoBridge;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Refresh active docs
|
|
162
|
+
refreshTaskboard(db, vault);
|
|
163
|
+
refreshUserprofile(db, vault);
|
|
164
|
+
// Process enhance queue
|
|
165
|
+
const enhanceResult = processEnhanceQueue(db, vault, 5);
|
|
166
|
+
// Close session
|
|
167
|
+
db.prepare(`
|
|
168
|
+
INSERT INTO session_state (session_id, started_at, last_seen_at, closed_at, close_status)
|
|
169
|
+
VALUES (?, ?, ?, ?, 'checkpoint')
|
|
170
|
+
ON CONFLICT(session_id) DO UPDATE SET
|
|
171
|
+
last_seen_at = excluded.last_seen_at,
|
|
172
|
+
closed_at = excluded.closed_at,
|
|
173
|
+
close_status = excluded.close_status
|
|
174
|
+
`).run(resolvedSessionId, closedAt, closedAt, closedAt);
|
|
175
|
+
const warnings = [];
|
|
176
|
+
if (!sessionBridge)
|
|
177
|
+
warnings.push('本次会话尚未记录 session_bridge');
|
|
178
|
+
return {
|
|
179
|
+
session_bridge_found: sessionBridge !== null,
|
|
180
|
+
enhanced_files: enhanceResult.processed,
|
|
181
|
+
active_docs_updated: true,
|
|
182
|
+
session_closed: true,
|
|
183
|
+
warnings,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
db.close();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// ─── 8. memory_skill_complete ─────────────────────────────────────────────────
|
|
191
|
+
export function memorySkillComplete(opts) {
|
|
192
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
193
|
+
try {
|
|
194
|
+
const logResult = logEvent(db, {
|
|
195
|
+
entryType: 'skill_completion',
|
|
196
|
+
importance: opts.importance || 4,
|
|
197
|
+
summary: opts.summary,
|
|
198
|
+
scope: opts.scope,
|
|
199
|
+
skillName: opts.skillName,
|
|
200
|
+
detail: opts.detail,
|
|
201
|
+
relatedFiles: opts.relatedFiles,
|
|
202
|
+
relatedEntities: opts.relatedEntities,
|
|
203
|
+
});
|
|
204
|
+
// Notify related files
|
|
205
|
+
for (const fp of opts.relatedFiles || []) {
|
|
206
|
+
notifyFileChanged(db, vault, fp);
|
|
207
|
+
}
|
|
208
|
+
// Refresh targets
|
|
209
|
+
const targets = opts.refreshTargets || ['TaskBoard', 'UserProfile'];
|
|
210
|
+
for (const target of targets) {
|
|
211
|
+
if (target === 'TaskBoard')
|
|
212
|
+
refreshTaskboard(db, vault);
|
|
213
|
+
else if (target === 'UserProfile')
|
|
214
|
+
refreshUserprofile(db, vault);
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
event_id: logResult.eventId,
|
|
218
|
+
timestamp: logResult.timestamp,
|
|
219
|
+
logged: true,
|
|
220
|
+
skill_name: opts.skillName,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
db.close();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// ─── 9. memory_refresh ────────────────────────────────────────────────────────
|
|
228
|
+
export function memoryRefresh(opts) {
|
|
229
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
230
|
+
try {
|
|
231
|
+
if (opts.target === 'TaskBoard') {
|
|
232
|
+
return refreshTaskboard(db, vault, {
|
|
233
|
+
section: opts.section,
|
|
234
|
+
preserveManual: opts.preserveManual,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (opts.target === 'UserProfile') {
|
|
238
|
+
return refreshUserprofile(db, vault, {
|
|
239
|
+
section: opts.section,
|
|
240
|
+
preserveManual: opts.preserveManual,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
throw new Error(`Unsupported target: ${opts.target}. Supported: ${[...ACTIVE_DOC_TARGETS].join(', ')}`);
|
|
244
|
+
}
|
|
245
|
+
finally {
|
|
246
|
+
db.close();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// ─── 10. memory_citations ─────────────────────────────────────────────────────
|
|
250
|
+
export function memoryCitations(opts) {
|
|
251
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
252
|
+
try {
|
|
253
|
+
if (opts.target === 'TaskBoard') {
|
|
254
|
+
return taskboardCitations(db, {
|
|
255
|
+
section: opts.section,
|
|
256
|
+
keyword: opts.keyword,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
if (opts.target === 'UserProfile') {
|
|
260
|
+
return userprofileCitations(db, {
|
|
261
|
+
section: opts.section,
|
|
262
|
+
keyword: opts.keyword,
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
throw new Error(`Unsupported target: ${opts.target}`);
|
|
266
|
+
}
|
|
267
|
+
finally {
|
|
268
|
+
db.close();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// ─── 11. memory_skill_context ─────────────────────────────────────────────────
|
|
272
|
+
export function memorySkillContext(opts) {
|
|
273
|
+
const { db, vault } = resolveDbAndVault(opts.dbPath, opts.vaultRoot);
|
|
274
|
+
try {
|
|
275
|
+
return buildSkillContext(db, vault, {
|
|
276
|
+
skillProfile: opts.skillProfile,
|
|
277
|
+
relatedFiles: opts.relatedFiles,
|
|
278
|
+
query: opts.query,
|
|
279
|
+
limit: opts.limit,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
db.close();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* consolidation.ts — 数据库合并工具。
|
|
3
|
+
*
|
|
4
|
+
* Merges session_log rows from a source database into a target database,
|
|
5
|
+
* skipping duplicates by event_id.
|
|
6
|
+
*/
|
|
7
|
+
import type Database from 'better-sqlite3';
|
|
8
|
+
export interface ConsolidateResult {
|
|
9
|
+
merged: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Copy session_log entries from source to target, ignoring duplicates by event_id.
|
|
13
|
+
*/
|
|
14
|
+
export declare function consolidateDb(source: Database.Database, target: Database.Database): ConsolidateResult;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* consolidation.ts — 数据库合并工具。
|
|
3
|
+
*
|
|
4
|
+
* Merges session_log rows from a source database into a target database,
|
|
5
|
+
* skipping duplicates by event_id.
|
|
6
|
+
*/
|
|
7
|
+
import { queryAll } from './index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Copy session_log entries from source to target, ignoring duplicates by event_id.
|
|
10
|
+
*/
|
|
11
|
+
export function consolidateDb(source, target) {
|
|
12
|
+
const rows = queryAll(source, 'SELECT * FROM session_log');
|
|
13
|
+
const insert = target.prepare(`
|
|
14
|
+
INSERT OR IGNORE INTO session_log
|
|
15
|
+
(event_id, session_id, timestamp, entry_type, importance, scope, skill_name,
|
|
16
|
+
summary, detail, source_refs, related_files, related_entities,
|
|
17
|
+
supersedes, entry_hash, search_hints, rule_key)
|
|
18
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
19
|
+
`);
|
|
20
|
+
let merged = 0;
|
|
21
|
+
for (const row of rows) {
|
|
22
|
+
const result = insert.run(row.event_id, row.session_id, row.timestamp, row.entry_type, row.importance, row.scope, row.skill_name, row.summary, row.detail, row.source_refs, row.related_files, row.related_entities, row.supersedes, row.entry_hash, row.search_hints, row.rule_key);
|
|
23
|
+
if (result.changes > 0)
|
|
24
|
+
merged++;
|
|
25
|
+
}
|
|
26
|
+
return { merged };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=consolidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../src/db/consolidation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMtC;;GAEG;AACH,MAAM,UAAU,aAAa,CAC5B,MAAyB,EACzB,MAAyB;IAEzB,MAAM,IAAI,GAAG,QAAQ,CAAgB,MAAM,EAAE,2BAA2B,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;;;;;;GAM5B,CAAC,CAAC;IAEJ,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CACxB,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,aAAa,EACjB,GAAG,CAAC,gBAAgB,EACpB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,QAAQ,CACZ,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;YAAE,MAAM,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* Execute a function with a temporary database connection that auto-closes.
|
|
4
|
+
*/
|
|
5
|
+
export declare function withDb<T>(dbPath: string, fn: (db: Database.Database) => T): T;
|
|
6
|
+
/**
|
|
7
|
+
* Type-safe wrapper for db.prepare(sql).all(...params).
|
|
8
|
+
* Eliminates the need for `as Record<string, unknown>[]` casts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function queryAll<T>(db: Database.Database, sql: string, ...params: unknown[]): T[];
|
|
11
|
+
/**
|
|
12
|
+
* Type-safe wrapper for db.prepare(sql).get(...params).
|
|
13
|
+
*/
|
|
14
|
+
export declare function queryOne<T>(db: Database.Database, sql: string, ...params: unknown[]): T | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Build a SQL IN clause with placeholders for the given values.
|
|
17
|
+
* Returns { clause: 'col IN (?, ?, ?)', params: values }
|
|
18
|
+
*/
|
|
19
|
+
export declare function inClause(column: string, values: string[]): {
|
|
20
|
+
clause: string;
|
|
21
|
+
params: string[];
|
|
22
|
+
};
|
package/dist/db/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* Execute a function with a temporary database connection that auto-closes.
|
|
4
|
+
*/
|
|
5
|
+
export function withDb(dbPath, fn) {
|
|
6
|
+
const db = new Database(dbPath);
|
|
7
|
+
db.pragma('journal_mode = WAL');
|
|
8
|
+
db.pragma('foreign_keys = ON');
|
|
9
|
+
try {
|
|
10
|
+
return fn(db);
|
|
11
|
+
}
|
|
12
|
+
finally {
|
|
13
|
+
db.close();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Type-safe wrapper for db.prepare(sql).all(...params).
|
|
18
|
+
* Eliminates the need for `as Record<string, unknown>[]` casts.
|
|
19
|
+
*/
|
|
20
|
+
export function queryAll(db, sql, ...params) {
|
|
21
|
+
return db.prepare(sql).all(...params);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Type-safe wrapper for db.prepare(sql).get(...params).
|
|
25
|
+
*/
|
|
26
|
+
export function queryOne(db, sql, ...params) {
|
|
27
|
+
return db.prepare(sql).get(...params);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build a SQL IN clause with placeholders for the given values.
|
|
31
|
+
* Returns { clause: 'col IN (?, ?, ?)', params: values }
|
|
32
|
+
*/
|
|
33
|
+
export function inClause(column, values) {
|
|
34
|
+
if (values.length === 0)
|
|
35
|
+
throw new Error('inClause: values must be non-empty');
|
|
36
|
+
const placeholders = values.map(() => '?').join(', ');
|
|
37
|
+
return { clause: `${column} IN (${placeholders})`, params: values };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,MAAM,CAAI,MAAc,EAAE,EAAgC;IACzE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,IAAI,CAAC;QACJ,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAI,EAAqB,EAAE,GAAW,EAAE,GAAG,MAAiB;IACnF,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAQ,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACvB,EAAqB,EACrB,GAAW,EACX,GAAG,MAAiB;IAEpB,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAkB,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,MAAgB;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,YAAY,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
export const SCHEMA_VERSION = 1;
|
|
2
|
+
const SCHEMA_SQL = `
|
|
3
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
4
|
+
version INTEGER NOT NULL
|
|
5
|
+
);
|
|
6
|
+
|
|
7
|
+
CREATE TABLE IF NOT EXISTS vault_index (
|
|
8
|
+
file_path TEXT PRIMARY KEY,
|
|
9
|
+
title TEXT,
|
|
10
|
+
type TEXT,
|
|
11
|
+
status TEXT,
|
|
12
|
+
domain TEXT,
|
|
13
|
+
category TEXT,
|
|
14
|
+
tags TEXT,
|
|
15
|
+
aliases TEXT,
|
|
16
|
+
summary TEXT,
|
|
17
|
+
semantic_summary TEXT,
|
|
18
|
+
search_hints TEXT,
|
|
19
|
+
wikilinks TEXT,
|
|
20
|
+
backlinks TEXT,
|
|
21
|
+
section_heads TEXT,
|
|
22
|
+
content_hash TEXT,
|
|
23
|
+
file_size INTEGER,
|
|
24
|
+
created_at TEXT,
|
|
25
|
+
modified_at TEXT,
|
|
26
|
+
indexed_at TEXT
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
CREATE TABLE IF NOT EXISTS session_log (
|
|
30
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
31
|
+
event_id TEXT NOT NULL UNIQUE,
|
|
32
|
+
session_id TEXT NOT NULL,
|
|
33
|
+
timestamp TEXT NOT NULL,
|
|
34
|
+
entry_type TEXT NOT NULL,
|
|
35
|
+
importance INTEGER NOT NULL,
|
|
36
|
+
scope TEXT,
|
|
37
|
+
skill_name TEXT,
|
|
38
|
+
summary TEXT NOT NULL,
|
|
39
|
+
detail TEXT,
|
|
40
|
+
source_refs TEXT,
|
|
41
|
+
related_files TEXT,
|
|
42
|
+
related_entities TEXT,
|
|
43
|
+
supersedes TEXT,
|
|
44
|
+
entry_hash TEXT,
|
|
45
|
+
search_hints TEXT,
|
|
46
|
+
rule_key TEXT
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
CREATE TABLE IF NOT EXISTS enhance_queue (
|
|
50
|
+
file_path TEXT PRIMARY KEY,
|
|
51
|
+
priority INTEGER NOT NULL DEFAULT 0,
|
|
52
|
+
queued_at TEXT NOT NULL,
|
|
53
|
+
source TEXT,
|
|
54
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
55
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
56
|
+
last_attempt_at TEXT,
|
|
57
|
+
error_message TEXT
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE TABLE IF NOT EXISTS scan_state (
|
|
61
|
+
file_path TEXT PRIMARY KEY,
|
|
62
|
+
last_seen_hash TEXT,
|
|
63
|
+
last_seen_mtime REAL,
|
|
64
|
+
last_seen_size INTEGER,
|
|
65
|
+
last_indexed_at TEXT
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
CREATE TABLE IF NOT EXISTS memory_items (
|
|
69
|
+
item_id TEXT PRIMARY KEY,
|
|
70
|
+
target TEXT NOT NULL,
|
|
71
|
+
section TEXT NOT NULL,
|
|
72
|
+
slot_key TEXT NOT NULL,
|
|
73
|
+
content TEXT NOT NULL,
|
|
74
|
+
confidence TEXT,
|
|
75
|
+
source_event_ids TEXT,
|
|
76
|
+
source_refs TEXT,
|
|
77
|
+
related_files TEXT,
|
|
78
|
+
manual_flag INTEGER NOT NULL DEFAULT 0,
|
|
79
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
80
|
+
superseded_by TEXT,
|
|
81
|
+
last_confirmed_at TEXT,
|
|
82
|
+
updated_at TEXT NOT NULL,
|
|
83
|
+
expires_at TEXT
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
CREATE TABLE IF NOT EXISTS session_state (
|
|
87
|
+
session_id TEXT PRIMARY KEY,
|
|
88
|
+
started_at TEXT NOT NULL,
|
|
89
|
+
last_seen_at TEXT NOT NULL,
|
|
90
|
+
closed_at TEXT,
|
|
91
|
+
close_status TEXT
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
-- FTS5 virtual tables
|
|
95
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS vault_fts USING fts5(
|
|
96
|
+
file_path,
|
|
97
|
+
title,
|
|
98
|
+
summary,
|
|
99
|
+
semantic_summary,
|
|
100
|
+
search_hints,
|
|
101
|
+
tags,
|
|
102
|
+
content='vault_index',
|
|
103
|
+
content_rowid='rowid'
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS session_fts USING fts5(
|
|
107
|
+
summary,
|
|
108
|
+
detail,
|
|
109
|
+
related_entities,
|
|
110
|
+
search_hints,
|
|
111
|
+
content='session_log',
|
|
112
|
+
content_rowid='id'
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
-- FTS5 sync triggers for vault_index
|
|
116
|
+
CREATE TRIGGER IF NOT EXISTS vault_fts_ai AFTER INSERT ON vault_index BEGIN
|
|
117
|
+
INSERT INTO vault_fts(rowid, file_path, title, summary, semantic_summary, search_hints, tags)
|
|
118
|
+
VALUES (new.rowid, new.file_path, new.title, new.summary, new.semantic_summary, new.search_hints, new.tags);
|
|
119
|
+
END;
|
|
120
|
+
|
|
121
|
+
CREATE TRIGGER IF NOT EXISTS vault_fts_ad AFTER DELETE ON vault_index BEGIN
|
|
122
|
+
INSERT INTO vault_fts(vault_fts, rowid, file_path, title, summary, semantic_summary, search_hints, tags)
|
|
123
|
+
VALUES ('delete', old.rowid, old.file_path, old.title, old.summary, old.semantic_summary, old.search_hints, old.tags);
|
|
124
|
+
END;
|
|
125
|
+
|
|
126
|
+
CREATE TRIGGER IF NOT EXISTS vault_fts_au AFTER UPDATE ON vault_index BEGIN
|
|
127
|
+
INSERT INTO vault_fts(vault_fts, rowid, file_path, title, summary, semantic_summary, search_hints, tags)
|
|
128
|
+
VALUES ('delete', old.rowid, old.file_path, old.title, old.summary, old.semantic_summary, old.search_hints, old.tags);
|
|
129
|
+
INSERT INTO vault_fts(rowid, file_path, title, summary, semantic_summary, search_hints, tags)
|
|
130
|
+
VALUES (new.rowid, new.file_path, new.title, new.summary, new.semantic_summary, new.search_hints, new.tags);
|
|
131
|
+
END;
|
|
132
|
+
|
|
133
|
+
-- FTS5 sync triggers for session_log
|
|
134
|
+
CREATE TRIGGER IF NOT EXISTS session_fts_ai AFTER INSERT ON session_log BEGIN
|
|
135
|
+
INSERT INTO session_fts(rowid, summary, detail, related_entities, search_hints)
|
|
136
|
+
VALUES (new.id, new.summary, new.detail, new.related_entities, new.search_hints);
|
|
137
|
+
END;
|
|
138
|
+
|
|
139
|
+
CREATE TRIGGER IF NOT EXISTS session_fts_ad AFTER DELETE ON session_log BEGIN
|
|
140
|
+
INSERT INTO session_fts(session_fts, rowid, summary, detail, related_entities, search_hints)
|
|
141
|
+
VALUES ('delete', old.id, old.summary, old.detail, old.related_entities, old.search_hints);
|
|
142
|
+
END;
|
|
143
|
+
|
|
144
|
+
CREATE TRIGGER IF NOT EXISTS session_fts_au AFTER UPDATE ON session_log BEGIN
|
|
145
|
+
INSERT INTO session_fts(session_fts, rowid, summary, detail, related_entities, search_hints)
|
|
146
|
+
VALUES ('delete', old.id, old.summary, old.detail, old.related_entities, old.search_hints);
|
|
147
|
+
INSERT INTO session_fts(rowid, summary, detail, related_entities, search_hints)
|
|
148
|
+
VALUES (new.id, new.summary, new.detail, new.related_entities, new.search_hints);
|
|
149
|
+
END;
|
|
150
|
+
|
|
151
|
+
-- Indexes
|
|
152
|
+
CREATE INDEX IF NOT EXISTS idx_session_log_time ON session_log (timestamp DESC);
|
|
153
|
+
CREATE INDEX IF NOT EXISTS idx_session_log_type ON session_log (entry_type);
|
|
154
|
+
CREATE INDEX IF NOT EXISTS idx_session_log_scope ON session_log (scope);
|
|
155
|
+
CREATE INDEX IF NOT EXISTS idx_session_log_session_id ON session_log (session_id);
|
|
156
|
+
CREATE INDEX IF NOT EXISTS idx_session_log_rule_key ON session_log (rule_key);
|
|
157
|
+
CREATE INDEX IF NOT EXISTS idx_vault_index_type_status ON vault_index (type, status);
|
|
158
|
+
CREATE INDEX IF NOT EXISTS idx_enhance_queue_status ON enhance_queue (status, priority DESC);
|
|
159
|
+
CREATE INDEX IF NOT EXISTS idx_scan_state_last_indexed_at ON scan_state (last_indexed_at DESC);
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_memory_items_target_section_status ON memory_items (target, section, status);
|
|
161
|
+
CREATE INDEX IF NOT EXISTS idx_session_state_closed_at ON session_state (closed_at);
|
|
162
|
+
CREATE INDEX IF NOT EXISTS idx_session_state_last_seen_at ON session_state (last_seen_at DESC);
|
|
163
|
+
`;
|
|
164
|
+
/**
|
|
165
|
+
* Initialize the database with the V1.0 schema.
|
|
166
|
+
* Idempotent — safe to call multiple times.
|
|
167
|
+
*/
|
|
168
|
+
export function initDb(db) {
|
|
169
|
+
db.exec(SCHEMA_SQL);
|
|
170
|
+
const row = db.prepare('SELECT version FROM schema_version').get();
|
|
171
|
+
if (!row) {
|
|
172
|
+
db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(SCHEMA_VERSION);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiKlB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,EAAqB;IAC3C,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAEpD,CAAC;IACb,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnF,CAAC;AACF,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|