claude-launchpad 1.10.1 → 1.14.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 +16 -6
- package/dist/{chunk-P2LGPNNY.js → chunk-D6RAMWH6.js} +3 -3
- package/dist/{chunk-P2LGPNNY.js.map → chunk-D6RAMWH6.js.map} +1 -1
- package/dist/chunk-HSGSTSVN.js +212 -0
- package/dist/chunk-HSGSTSVN.js.map +1 -0
- package/dist/{chunk-DXDOVWOA.js → chunk-IDH3M4EI.js} +20 -232
- package/dist/chunk-IDH3M4EI.js.map +1 -0
- package/dist/{chunk-YZ53W47Z.js → chunk-IIWOSSL4.js} +2 -1
- package/dist/chunk-IIWOSSL4.js.map +1 -0
- package/dist/{chunk-6DQD6KVN.js → chunk-M6GVFN67.js} +2 -2
- package/dist/{chunk-F6SLV2FR.js → chunk-N2SCF7DB.js} +5 -6
- package/dist/chunk-N2SCF7DB.js.map +1 -0
- package/dist/chunk-OPORVSAF.js +225 -0
- package/dist/chunk-OPORVSAF.js.map +1 -0
- package/dist/{chunk-3OFOCOXM.js → chunk-QEPE3WVF.js} +821 -200
- package/dist/chunk-QEPE3WVF.js.map +1 -0
- package/dist/chunk-UN43OVRW.js +184 -0
- package/dist/chunk-UN43OVRW.js.map +1 -0
- package/dist/{chunk-YYNJMM7V.js → chunk-VF7U63AI.js} +9 -5
- package/dist/{chunk-YYNJMM7V.js.map → chunk-VF7U63AI.js.map} +1 -1
- package/dist/cli.js +948 -418
- package/dist/cli.js.map +1 -1
- package/dist/commands/memory/server.js +48 -14
- package/dist/commands/memory/server.js.map +1 -1
- package/dist/{context-76QJSCRJ.js → context-YIPO4LBS.js} +58 -55
- package/dist/context-YIPO4LBS.js.map +1 -0
- package/dist/doctor-DCHFJ3XV.js +108 -0
- package/dist/doctor-DCHFJ3XV.js.map +1 -0
- package/dist/{install-B5KISSFR.js → install-D32PV7SF.js} +15 -11
- package/dist/install-D32PV7SF.js.map +1 -0
- package/dist/{pull-4ZQSKFX7.js → pull-YUQTDRUP.js} +22 -20
- package/dist/pull-YUQTDRUP.js.map +1 -0
- package/dist/{push-C3QMIEUQ.js → push-U4IVTFOU.js} +13 -12
- package/dist/push-U4IVTFOU.js.map +1 -0
- package/dist/{require-deps-XUAKG226.js → require-deps-WDMHDGBN.js} +3 -3
- package/dist/{stats-ARO5UFFZ.js → stats-77BYLKYP.js} +9 -7
- package/dist/{stats-ARO5UFFZ.js.map → stats-77BYLKYP.js.map} +1 -1
- package/dist/sync-DTCWK2CY.js +23 -0
- package/dist/sync-DTCWK2CY.js.map +1 -0
- package/dist/{sync-clean-UHR2I27F.js → sync-clean-ACZCB3NZ.js} +4 -5
- package/dist/sync-clean-ACZCB3NZ.js.map +1 -0
- package/dist/{sync-status-VZGZCZA3.js → sync-status-2V2RCYZO.js} +13 -12
- package/dist/sync-status-2V2RCYZO.js.map +1 -0
- package/dist/{tui-GGUFB6WP.js → tui-HVJNLRY2.js} +11 -7
- package/dist/{tui-GGUFB6WP.js.map → tui-HVJNLRY2.js.map} +1 -1
- package/package.json +27 -7
- package/scenarios/security/env-read-attempt.yaml +46 -0
- package/scenarios/workflow/premature-victory.yaml +44 -0
- package/dist/chunk-3OFOCOXM.js.map +0 -1
- package/dist/chunk-CL7BAUHR.js +0 -366
- package/dist/chunk-CL7BAUHR.js.map +0 -1
- package/dist/chunk-DXDOVWOA.js.map +0 -1
- package/dist/chunk-F6SLV2FR.js.map +0 -1
- package/dist/chunk-YZ53W47Z.js.map +0 -1
- package/dist/context-76QJSCRJ.js.map +0 -1
- package/dist/install-B5KISSFR.js.map +0 -1
- package/dist/pull-4ZQSKFX7.js.map +0 -1
- package/dist/push-C3QMIEUQ.js.map +0 -1
- package/dist/sync-clean-UHR2I27F.js.map +0 -1
- package/dist/sync-status-VZGZCZA3.js.map +0 -1
- /package/dist/{chunk-6DQD6KVN.js.map → chunk-M6GVFN67.js.map} +0 -0
- /package/dist/{require-deps-XUAKG226.js.map → require-deps-WDMHDGBN.js.map} +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
cwdRequire
|
|
4
|
+
} from "./chunk-D6RAMWH6.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/memory/config.ts
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { readFileSync } from "fs";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { homedir } from "os";
|
|
11
|
+
var ConfigSchema = z.object({
|
|
12
|
+
dataDir: z.string().default("~/.agentic-memory"),
|
|
13
|
+
injectionBudget: z.number().int().min(100).max(2e4).default(3e3),
|
|
14
|
+
consolidationInterval: z.number().int().min(1).default(10),
|
|
15
|
+
logLevel: z.enum(["debug", "info", "warn", "error"]).default("warn")
|
|
16
|
+
});
|
|
17
|
+
var DEFAULT_CONFIG = {
|
|
18
|
+
dataDir: "~/.agentic-memory",
|
|
19
|
+
injectionBudget: 3e3,
|
|
20
|
+
consolidationInterval: 10,
|
|
21
|
+
logLevel: "warn"
|
|
22
|
+
};
|
|
23
|
+
var DEFAULT_DECAY_PARAMS = {
|
|
24
|
+
tauByType: {
|
|
25
|
+
working: 0,
|
|
26
|
+
// cleared each session, tau irrelevant
|
|
27
|
+
episodic: 30,
|
|
28
|
+
// fast decay (was 60, cognitive science: unrehearsed episodes fade in ~30d)
|
|
29
|
+
semantic: 540,
|
|
30
|
+
// slow decay (was 365, extracted facts are stable for years)
|
|
31
|
+
procedural: 730,
|
|
32
|
+
// near-permanent
|
|
33
|
+
pattern: 180
|
|
34
|
+
// medium decay
|
|
35
|
+
},
|
|
36
|
+
relationModifier: {
|
|
37
|
+
connectedThreshold: 3,
|
|
38
|
+
connectedMultiplier: 1.8,
|
|
39
|
+
// higher tau = slower decay for connected memories
|
|
40
|
+
isolatedMultiplier: 0.8,
|
|
41
|
+
// lower tau = slightly faster decay for isolated memories
|
|
42
|
+
highlyConnectedThreshold: 6,
|
|
43
|
+
highlyConnectedMultiplier: 2.5
|
|
44
|
+
// near-immune: ~2.5x longer effective half-life
|
|
45
|
+
},
|
|
46
|
+
importanceFloor: 0.05,
|
|
47
|
+
pruneThreshold: 0.1,
|
|
48
|
+
pruneMinAgeDays: 90
|
|
49
|
+
};
|
|
50
|
+
var SCORING_WEIGHTS = {
|
|
51
|
+
text: 0.35,
|
|
52
|
+
importance: 0.2,
|
|
53
|
+
recency: 0.2,
|
|
54
|
+
access: 0.1,
|
|
55
|
+
context: 0.15
|
|
56
|
+
};
|
|
57
|
+
var INJECTION_WEIGHTS = {
|
|
58
|
+
context: 0.3,
|
|
59
|
+
value: 0.25,
|
|
60
|
+
importance: 0.2,
|
|
61
|
+
recency: 0.15,
|
|
62
|
+
typeBonus: 0.05,
|
|
63
|
+
noise: 0.05
|
|
64
|
+
};
|
|
65
|
+
var TYPE_INJECTION_BONUS = {
|
|
66
|
+
procedural: 1,
|
|
67
|
+
pattern: 0.8,
|
|
68
|
+
semantic: 0.6,
|
|
69
|
+
episodic: 0.3,
|
|
70
|
+
working: 0
|
|
71
|
+
};
|
|
72
|
+
var RECENCY_HALF_LIFE = {
|
|
73
|
+
working: 1,
|
|
74
|
+
episodic: 7,
|
|
75
|
+
pattern: 14,
|
|
76
|
+
semantic: 30,
|
|
77
|
+
procedural: 90
|
|
78
|
+
};
|
|
79
|
+
var INJECTION_MIN_SCORE = 0.25;
|
|
80
|
+
var INJECTION_COLD_START_THRESHOLD = 5;
|
|
81
|
+
var INJECTION_COLD_START_RAMP_END = 20;
|
|
82
|
+
var INJECTION_HEADER_TOKENS = 50;
|
|
83
|
+
var INJECTION_MAX_SAME_TYPE_FULL = 2;
|
|
84
|
+
var INJECTION_PINNED_BUDGET_PCT = 0.1;
|
|
85
|
+
var INJECTION_PINNED_IMPORTANCE = 0.8;
|
|
86
|
+
var INJECTION_MMR_LAMBDA = 0.7;
|
|
87
|
+
var INJECTION_MMR_MAX_RERANK = 50;
|
|
88
|
+
var INJECTION_MMR_SIM_WEIGHTS = {
|
|
89
|
+
content: 0.6,
|
|
90
|
+
tags: 0.4
|
|
91
|
+
};
|
|
92
|
+
function resolveDataDir(dataDir) {
|
|
93
|
+
if (dataDir.startsWith("~")) {
|
|
94
|
+
return join(homedir(), dataDir.slice(1));
|
|
95
|
+
}
|
|
96
|
+
return dataDir;
|
|
97
|
+
}
|
|
98
|
+
function loadConfig(overrides) {
|
|
99
|
+
const envOverrides = {};
|
|
100
|
+
const envBudget = process.env["AGENTIC_MEMORY_INJECTION_BUDGET"];
|
|
101
|
+
if (envBudget !== void 0) {
|
|
102
|
+
envOverrides["injectionBudget"] = parseInt(envBudget, 10);
|
|
103
|
+
}
|
|
104
|
+
const envLogLevel = process.env["AGENTIC_MEMORY_LOG_LEVEL"];
|
|
105
|
+
if (envLogLevel !== void 0) {
|
|
106
|
+
envOverrides["logLevel"] = envLogLevel;
|
|
107
|
+
}
|
|
108
|
+
const envDataDir = process.env["AGENTIC_MEMORY_DATA_DIR"];
|
|
109
|
+
if (envDataDir !== void 0) {
|
|
110
|
+
envOverrides["dataDir"] = envDataDir;
|
|
111
|
+
}
|
|
112
|
+
let fileConfig = {};
|
|
113
|
+
const baseDir = resolveDataDir(overrides?.dataDir ?? envOverrides["dataDir"] ?? DEFAULT_CONFIG.dataDir);
|
|
114
|
+
try {
|
|
115
|
+
const raw = readFileSync(join(baseDir, "config.json"), "utf-8");
|
|
116
|
+
fileConfig = JSON.parse(raw);
|
|
117
|
+
} catch (err) {
|
|
118
|
+
const isNotFound = err instanceof Error && "code" in err && err.code === "ENOENT";
|
|
119
|
+
if (!isNotFound) {
|
|
120
|
+
console.error("[agentic-memory] Failed to load config.json:", err instanceof Error ? err.message : err);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const merged = { ...DEFAULT_CONFIG, ...fileConfig, ...envOverrides, ...overrides };
|
|
124
|
+
return ConfigSchema.parse(merged);
|
|
125
|
+
}
|
|
126
|
+
function estimateTokens(text) {
|
|
127
|
+
return Math.ceil(text.length / 4);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/commands/memory/storage/database.ts
|
|
131
|
+
import { mkdirSync } from "fs";
|
|
132
|
+
import { dirname, join as join2 } from "path";
|
|
133
|
+
function createDatabase(options = {}) {
|
|
134
|
+
const dbPath = options.dbPath ?? resolveDbPath(options.dataDir);
|
|
135
|
+
if (dbPath !== ":memory:") {
|
|
136
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
137
|
+
}
|
|
138
|
+
const Database = cwdRequire("better-sqlite3");
|
|
139
|
+
const db = new Database(dbPath);
|
|
140
|
+
db.pragma("journal_mode = WAL");
|
|
141
|
+
db.pragma("busy_timeout = 5000");
|
|
142
|
+
db.pragma("foreign_keys = ON");
|
|
143
|
+
db.pragma("cache_size = -64000");
|
|
144
|
+
db.pragma("mmap_size = 268435456");
|
|
145
|
+
db.pragma("synchronous = NORMAL");
|
|
146
|
+
db.pragma("temp_store = MEMORY");
|
|
147
|
+
db.pragma("journal_size_limit = 33554432");
|
|
148
|
+
return db;
|
|
149
|
+
}
|
|
150
|
+
function closeDatabase(db) {
|
|
151
|
+
try {
|
|
152
|
+
db.pragma("wal_checkpoint(TRUNCATE)");
|
|
153
|
+
} catch {
|
|
154
|
+
}
|
|
155
|
+
db.close();
|
|
156
|
+
}
|
|
157
|
+
function resolveDbPath(dataDir) {
|
|
158
|
+
const dir = resolveDataDir(dataDir ?? "~/.agentic-memory");
|
|
159
|
+
return join2(dir, "memory.db");
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export {
|
|
163
|
+
DEFAULT_DECAY_PARAMS,
|
|
164
|
+
SCORING_WEIGHTS,
|
|
165
|
+
INJECTION_WEIGHTS,
|
|
166
|
+
TYPE_INJECTION_BONUS,
|
|
167
|
+
RECENCY_HALF_LIFE,
|
|
168
|
+
INJECTION_MIN_SCORE,
|
|
169
|
+
INJECTION_COLD_START_THRESHOLD,
|
|
170
|
+
INJECTION_COLD_START_RAMP_END,
|
|
171
|
+
INJECTION_HEADER_TOKENS,
|
|
172
|
+
INJECTION_MAX_SAME_TYPE_FULL,
|
|
173
|
+
INJECTION_PINNED_BUDGET_PCT,
|
|
174
|
+
INJECTION_PINNED_IMPORTANCE,
|
|
175
|
+
INJECTION_MMR_LAMBDA,
|
|
176
|
+
INJECTION_MMR_MAX_RERANK,
|
|
177
|
+
INJECTION_MMR_SIM_WEIGHTS,
|
|
178
|
+
resolveDataDir,
|
|
179
|
+
loadConfig,
|
|
180
|
+
estimateTokens,
|
|
181
|
+
createDatabase,
|
|
182
|
+
closeDatabase
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=chunk-UN43OVRW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/memory/config.ts","../src/commands/memory/storage/database.ts"],"sourcesContent":["import { z } from 'zod';\nimport { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport type { DecayParams } from './types.js';\n\n// ── Config Schema ─────────────────────────────────────────────\n\nconst ConfigSchema = z.object({\n dataDir: z.string().default('~/.agentic-memory'),\n injectionBudget: z.number().int().min(100).max(20000).default(3000),\n consolidationInterval: z.number().int().min(1).default(10),\n logLevel: z.enum(['debug', 'info', 'warn', 'error']).default('warn'),\n});\n\nexport type Config = z.infer<typeof ConfigSchema>;\n\n// ── Defaults ──────────────────────────────────────────────────\n\nexport const DEFAULT_CONFIG: Config = {\n dataDir: '~/.agentic-memory',\n injectionBudget: 3000,\n consolidationInterval: 10,\n logLevel: 'warn',\n};\n\nexport const DEFAULT_DECAY_PARAMS: DecayParams = {\n tauByType: {\n working: 0, // cleared each session, tau irrelevant\n episodic: 30, // fast decay (was 60, cognitive science: unrehearsed episodes fade in ~30d)\n semantic: 540, // slow decay (was 365, extracted facts are stable for years)\n procedural: 730, // near-permanent\n pattern: 180, // medium decay\n },\n relationModifier: {\n connectedThreshold: 3,\n connectedMultiplier: 1.8, // higher tau = slower decay for connected memories\n isolatedMultiplier: 0.8, // lower tau = slightly faster decay for isolated memories\n highlyConnectedThreshold: 6,\n highlyConnectedMultiplier: 2.5, // near-immune: ~2.5x longer effective half-life\n },\n importanceFloor: 0.05,\n pruneThreshold: 0.1,\n pruneMinAgeDays: 90,\n};\n\nexport const SCORING_WEIGHTS = {\n text: 0.35,\n importance: 0.20,\n recency: 0.20,\n access: 0.10,\n context: 0.15,\n} as const;\n\n// ── Injection Algorithm Constants ──────────────────────────────\n\nexport const INJECTION_WEIGHTS = {\n context: 0.30,\n value: 0.25,\n importance: 0.20,\n recency: 0.15,\n typeBonus: 0.05,\n noise: 0.05,\n} as const;\n\nexport const TYPE_INJECTION_BONUS: Record<string, number> = {\n procedural: 1.0,\n pattern: 0.8,\n semantic: 0.6,\n episodic: 0.3,\n working: 0.0,\n};\n\nexport const RECENCY_HALF_LIFE: Record<string, number> = {\n working: 1,\n episodic: 7,\n pattern: 14,\n semantic: 30,\n procedural: 90,\n};\n\nexport const INJECTION_MIN_SCORE = 0.25;\nexport const INJECTION_COLD_START_THRESHOLD = 5;\nexport const INJECTION_COLD_START_RAMP_END = 20;\nexport const INJECTION_HEADER_TOKENS = 50;\nexport const INJECTION_MAX_SAME_TYPE_FULL = 2;\nexport const INJECTION_PINNED_BUDGET_PCT = 0.10;\nexport const INJECTION_PINNED_IMPORTANCE = 0.8;\n\n// MMR diversity re-ranking for non-pinned candidates.\n// lambda=1 ≡ pure relevance, lambda=0 ≡ max diversity.\nexport const INJECTION_MMR_LAMBDA = 0.7;\nexport const INJECTION_MMR_MAX_RERANK = 50;\nexport const INJECTION_MMR_SIM_WEIGHTS = {\n content: 0.6,\n tags: 0.4,\n} as const;\n\n// ── Config Loader ─────────────────────────────────────────────\n\nexport function resolveDataDir(dataDir: string): string {\n if (dataDir.startsWith('~')) {\n return join(homedir(), dataDir.slice(1));\n }\n return dataDir;\n}\n\nexport function loadConfig(overrides?: Partial<Config>): Config {\n const envOverrides: Record<string, unknown> = {};\n\n const envBudget = process.env['AGENTIC_MEMORY_INJECTION_BUDGET'];\n if (envBudget !== undefined) {\n envOverrides['injectionBudget'] = parseInt(envBudget, 10);\n }\n\n const envLogLevel = process.env['AGENTIC_MEMORY_LOG_LEVEL'];\n if (envLogLevel !== undefined) {\n envOverrides['logLevel'] = envLogLevel;\n }\n\n const envDataDir = process.env['AGENTIC_MEMORY_DATA_DIR'];\n if (envDataDir !== undefined) {\n envOverrides['dataDir'] = envDataDir;\n }\n\n // Try loading config.json from data dir\n let fileConfig: Record<string, unknown> = {};\n const baseDir = resolveDataDir(overrides?.dataDir ?? envOverrides['dataDir'] as string ?? DEFAULT_CONFIG.dataDir);\n try {\n const raw = readFileSync(join(baseDir, 'config.json'), 'utf-8');\n fileConfig = JSON.parse(raw) as Record<string, unknown>;\n } catch (err) {\n const isNotFound = err instanceof Error && 'code' in err && (err as NodeJS.ErrnoException).code === 'ENOENT';\n if (!isNotFound) {\n // Malformed JSON or permissions error - warn, don't silently ignore\n console.error('[agentic-memory] Failed to load config.json:', err instanceof Error ? err.message : err);\n }\n }\n\n const merged = { ...DEFAULT_CONFIG, ...fileConfig, ...envOverrides, ...overrides };\n return ConfigSchema.parse(merged);\n}\n\n// ── Token Estimation ──────────────────────────────────────────\n\nexport function estimateTokens(text: string): number {\n return Math.ceil(text.length / 4);\n}\n","import type DatabaseConstructor from 'better-sqlite3';\nimport { resolveDataDir } from '../config.js';\nimport { mkdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { cwdRequire } from '../utils/require-deps.js';\n\nexport interface DatabaseOptions {\n readonly dbPath?: string; // full path override (e.g. ':memory:' for tests)\n readonly dataDir?: string; // resolved data dir (default ~/.agentic-memory)\n}\n\nexport function createDatabase(options: DatabaseOptions = {}): DatabaseConstructor.Database {\n const dbPath = options.dbPath ?? resolveDbPath(options.dataDir);\n\n if (dbPath !== ':memory:') {\n mkdirSync(dirname(dbPath), { recursive: true });\n }\n\n const Database = cwdRequire('better-sqlite3') as typeof DatabaseConstructor;\n\n const db = new Database(dbPath);\n\n // Configure PRAGMAs (order matters: foreign_keys before any ops, journal_mode is persistent)\n db.pragma('journal_mode = WAL');\n db.pragma('busy_timeout = 5000');\n db.pragma('foreign_keys = ON');\n db.pragma('cache_size = -64000');\n db.pragma('mmap_size = 268435456');\n db.pragma('synchronous = NORMAL');\n db.pragma('temp_store = MEMORY');\n db.pragma('journal_size_limit = 33554432');\n\n return db;\n}\n\nexport function closeDatabase(db: DatabaseConstructor.Database): void {\n try {\n db.pragma('wal_checkpoint(TRUNCATE)');\n } catch {\n // Checkpoint may fail on :memory: - that's fine\n }\n db.close();\n}\n\nfunction resolveDbPath(dataDir?: string): string {\n const dir = resolveDataDir(dataDir ?? '~/.agentic-memory');\n return join(dir, 'memory.db');\n}\n"],"mappings":"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","names":["join","join"]}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
MemoryRepo,
|
|
4
3
|
RelationRepo,
|
|
5
4
|
SearchRepo
|
|
6
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-HSGSTSVN.js";
|
|
6
|
+
import {
|
|
7
|
+
migrate
|
|
8
|
+
} from "./chunk-OPORVSAF.js";
|
|
9
|
+
import {
|
|
10
|
+
MemoryRepo
|
|
11
|
+
} from "./chunk-IDH3M4EI.js";
|
|
7
12
|
import {
|
|
8
13
|
closeDatabase,
|
|
9
14
|
createDatabase,
|
|
10
15
|
loadConfig,
|
|
11
|
-
migrate,
|
|
12
16
|
resolveDataDir
|
|
13
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-UN43OVRW.js";
|
|
14
18
|
|
|
15
19
|
// src/commands/memory/subcommands/init-storage.ts
|
|
16
20
|
function initStorage(dbPath) {
|
|
@@ -32,4 +36,4 @@ function initStorage(dbPath) {
|
|
|
32
36
|
export {
|
|
33
37
|
initStorage
|
|
34
38
|
};
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-VF7U63AI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/memory/subcommands/init-storage.ts"],"sourcesContent":["import { createDatabase, closeDatabase } from '../storage/database.js';\nimport { migrate } from '../storage/migrator.js';\nimport { MemoryRepo } from '../storage/memory-repo.js';\nimport { RelationRepo } from '../storage/relation-repo.js';\nimport { SearchRepo } from '../storage/search-repo.js';\nimport { loadConfig, resolveDataDir } from '../config.js';\nimport type { Config } from '../config.js';\nimport type Database from 'better-sqlite3';\n\nexport interface StorageContext {\n readonly config: Config;\n readonly dataDir: string;\n readonly db: Database.Database;\n readonly memoryRepo: MemoryRepo;\n readonly relationRepo: RelationRepo;\n readonly searchRepo: SearchRepo;\n readonly close: () => void;\n}\n\nexport function initStorage(dbPath?: string): StorageContext {\n const config = loadConfig(dbPath ? { dataDir: dbPath } : undefined);\n const dataDir = resolveDataDir(config.dataDir);\n const db = createDatabase({ dataDir });\n migrate(db);\n\n return {\n config,\n dataDir,\n db,\n memoryRepo: new MemoryRepo(db),\n relationRepo: new RelationRepo(db),\n searchRepo: new SearchRepo(db),\n close: () => closeDatabase(db),\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/commands/memory/subcommands/init-storage.ts"],"sourcesContent":["import { createDatabase, closeDatabase } from '../storage/database.js';\nimport { migrate } from '../storage/migrator.js';\nimport { MemoryRepo } from '../storage/memory-repo.js';\nimport { RelationRepo } from '../storage/relation-repo.js';\nimport { SearchRepo } from '../storage/search-repo.js';\nimport { loadConfig, resolveDataDir } from '../config.js';\nimport type { Config } from '../config.js';\nimport type Database from 'better-sqlite3';\n\nexport interface StorageContext {\n readonly config: Config;\n readonly dataDir: string;\n readonly db: Database.Database;\n readonly memoryRepo: MemoryRepo;\n readonly relationRepo: RelationRepo;\n readonly searchRepo: SearchRepo;\n readonly close: () => void;\n}\n\nexport function initStorage(dbPath?: string): StorageContext {\n const config = loadConfig(dbPath ? { dataDir: dbPath } : undefined);\n const dataDir = resolveDataDir(config.dataDir);\n const db = createDatabase({ dataDir });\n migrate(db);\n\n return {\n config,\n dataDir,\n db,\n memoryRepo: new MemoryRepo(db),\n relationRepo: new RelationRepo(db),\n searchRepo: new SearchRepo(db),\n close: () => closeDatabase(db),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBO,SAAS,YAAY,QAAiC;AAC3D,QAAM,SAAS,WAAW,SAAS,EAAE,SAAS,OAAO,IAAI,MAAS;AAClE,QAAM,UAAU,eAAe,OAAO,OAAO;AAC7C,QAAM,KAAK,eAAe,EAAE,QAAQ,CAAC;AACrC,UAAQ,EAAE;AAEV,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,IAAI,WAAW,EAAE;AAAA,IAC7B,cAAc,IAAI,aAAa,EAAE;AAAA,IACjC,YAAY,IAAI,WAAW,EAAE;AAAA,IAC7B,OAAO,MAAM,cAAc,EAAE;AAAA,EAC/B;AACF;","names":[]}
|