memorix 1.2.2 → 1.2.4
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/CHANGELOG.md +27 -0
- package/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/TEAM.md +86 -86
- package/dist/cli/index.js +5199 -4726
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +428 -49
- package/dist/index.js.map +1 -1
- package/dist/maintenance-runner.js +97 -18
- package/dist/maintenance-runner.js.map +1 -1
- package/dist/memcode-runtime/CHANGELOG.md +27 -0
- package/dist/sdk.js +428 -49
- package/dist/sdk.js.map +1 -1
- package/docs/1.2.4-PERSISTENT-MEMORY-DELIVERY.md +86 -0
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +13 -1
- package/docs/API_REFERENCE.md +13 -3
- package/docs/DESIGN_DECISIONS.md +357 -357
- package/docs/dev-log/progress.txt +60 -9
- package/package.json +1 -1
- package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
- package/src/audit/index.ts +156 -156
- package/src/cli/capability-map.ts +1 -1
- package/src/cli/command-guide.ts +4 -1
- package/src/cli/commands/agent-integrations.ts +5 -1
- package/src/cli/commands/audit-list.ts +89 -89
- package/src/cli/commands/background.ts +659 -659
- package/src/cli/commands/codegraph.ts +1 -1
- package/src/cli/commands/context.ts +9 -1
- package/src/cli/commands/formation.ts +48 -48
- package/src/cli/commands/git-hook-install.ts +111 -111
- package/src/cli/commands/handoff.ts +54 -54
- package/src/cli/commands/hooks-status.ts +63 -63
- package/src/cli/commands/ingest-commit.ts +153 -153
- package/src/cli/commands/ingest-image.ts +66 -66
- package/src/cli/commands/ingest-log.ts +180 -180
- package/src/cli/commands/ingest.ts +44 -44
- package/src/cli/commands/integrate-shared.ts +15 -15
- package/src/cli/commands/lock.ts +82 -82
- package/src/cli/commands/message.ts +104 -104
- package/src/cli/commands/poll.ts +58 -58
- package/src/cli/commands/purge-all-memory.ts +85 -85
- package/src/cli/commands/purge-project-memory.ts +83 -83
- package/src/cli/commands/reasoning.ts +118 -118
- package/src/cli/commands/resume.ts +31 -0
- package/src/cli/commands/serve-shared.ts +118 -118
- package/src/cli/commands/session.ts +15 -7
- package/src/cli/commands/skills.ts +114 -114
- package/src/cli/commands/task.ts +167 -167
- package/src/cli/commands/transfer.ts +47 -47
- package/src/cli/commands/uninstall-project-artifacts.ts +85 -85
- package/src/cli/index.ts +3 -1
- package/src/cli/tui/ChatView.tsx +234 -234
- package/src/cli/tui/CommandBar.tsx +312 -312
- package/src/cli/tui/ContextRail.tsx +118 -118
- package/src/cli/tui/HeaderBar.tsx +72 -72
- package/src/cli/tui/LogoBanner.tsx +51 -51
- package/src/cli/tui/Sidebar.tsx +179 -179
- package/src/cli/tui/index.ts +41 -41
- package/src/cli/tui/markdown-render.tsx +371 -371
- package/src/cli/tui/session-service.ts +3 -2
- package/src/cli/tui/use-mouse.ts +157 -157
- package/src/cli/tui/useNavigation.ts +56 -56
- package/src/cli/update-checker.ts +211 -211
- package/src/cli/version.ts +7 -7
- package/src/cli/workbench.ts +1 -1
- package/src/codegraph/auto-context.ts +54 -1
- package/src/codegraph/task-lens.ts +29 -0
- package/src/compact/token-budget.ts +89 -74
- package/src/config/toml-loader.ts +9 -5
- package/src/dashboard/project-classification.ts +64 -64
- package/src/embedding/fastembed-provider.ts +142 -142
- package/src/embedding/transformers-provider.ts +111 -111
- package/src/git/extractor.ts +209 -209
- package/src/git/hooks-path.ts +85 -85
- package/src/hooks/handler.ts +127 -66
- package/src/hooks/installers/index.ts +5 -4
- package/src/hooks/official-skills.ts +6 -4
- package/src/hooks/pattern-detector.ts +173 -173
- package/src/hooks/rules/memorix-agent-rules.md +9 -7
- package/src/hooks/significance-filter.ts +250 -250
- package/src/knowledge/context-assembly.ts +4 -1
- package/src/knowledge/workset.ts +89 -1
- package/src/llm/memory-manager.ts +328 -328
- package/src/llm/provider.ts +885 -885
- package/src/llm/quality.ts +248 -248
- package/src/memory/attribution-guard.ts +249 -249
- package/src/memory/disclosure-policy.ts +135 -135
- package/src/memory/entity-extractor.ts +197 -197
- package/src/memory/formation/evaluate.ts +217 -217
- package/src/memory/formation/extract.ts +361 -361
- package/src/memory/formation/index.ts +417 -417
- package/src/memory/formation/resolve.ts +344 -344
- package/src/memory/formation/types.ts +315 -315
- package/src/memory/freshness.ts +122 -122
- package/src/memory/graph.ts +197 -197
- package/src/memory/refs.ts +94 -94
- package/src/memory/secret-filter.ts +79 -79
- package/src/memory/session.ts +158 -9
- package/src/multimodal/image-loader.ts +143 -143
- package/src/orchestrate/adapters/claude-stream.ts +192 -192
- package/src/orchestrate/adapters/claude.ts +111 -111
- package/src/orchestrate/adapters/codex-stream.ts +134 -134
- package/src/orchestrate/adapters/codex.ts +41 -41
- package/src/orchestrate/adapters/gemini-stream.ts +166 -166
- package/src/orchestrate/adapters/gemini.ts +42 -42
- package/src/orchestrate/adapters/index.ts +73 -73
- package/src/orchestrate/adapters/opencode-stream.ts +143 -143
- package/src/orchestrate/adapters/opencode.ts +47 -47
- package/src/orchestrate/adapters/spawn-helper.ts +286 -286
- package/src/orchestrate/adapters/types.ts +77 -77
- package/src/orchestrate/capability-router.ts +284 -284
- package/src/orchestrate/context-compact.ts +188 -188
- package/src/orchestrate/cost-tracker.ts +219 -219
- package/src/orchestrate/error-recovery.ts +191 -191
- package/src/orchestrate/evidence.ts +140 -140
- package/src/orchestrate/ledger.ts +110 -110
- package/src/orchestrate/memorix-bridge.ts +343 -343
- package/src/orchestrate/output-budget.ts +80 -80
- package/src/orchestrate/permission.ts +152 -152
- package/src/orchestrate/pipeline-trace.ts +131 -131
- package/src/orchestrate/prompt-builder.ts +155 -155
- package/src/orchestrate/ring-buffer.ts +37 -37
- package/src/orchestrate/task-graph.ts +389 -389
- package/src/orchestrate/worktree.ts +232 -232
- package/src/project/aliases.ts +374 -374
- package/src/project/detector.ts +268 -268
- package/src/rules/adapters/claude-code.ts +99 -99
- package/src/rules/adapters/codex.ts +97 -97
- package/src/rules/adapters/copilot.ts +124 -124
- package/src/rules/adapters/cursor.ts +114 -114
- package/src/rules/adapters/kiro.ts +126 -126
- package/src/rules/adapters/trae.ts +56 -56
- package/src/rules/adapters/windsurf.ts +83 -83
- package/src/rules/syncer.ts +235 -235
- package/src/sdk.ts +299 -299
- package/src/search/intent-detector.ts +289 -289
- package/src/search/query-expansion.ts +52 -52
- package/src/server/formation-timeout.ts +27 -27
- package/src/server.ts +144 -10
- package/src/skills/mini-skills.ts +386 -386
- package/src/store/bun-sqlite-compat.ts +118 -15
- package/src/store/chat-store.ts +119 -119
- package/src/store/graph-store.ts +249 -249
- package/src/store/mini-skill-store.ts +349 -349
- package/src/store/persistence-json.ts +212 -212
- package/src/store/persistence.ts +291 -291
- package/src/store/project-affinity.ts +195 -195
- package/src/store/sqlite-db.ts +3 -3
- package/src/team/event-bus.ts +76 -76
- package/src/team/file-locks.ts +173 -173
- package/src/team/handoff.ts +161 -161
- package/src/team/messages.ts +203 -203
- package/src/team/poll.ts +132 -132
- package/src/team/tasks.ts +211 -211
- package/src/workspace/mcp-adapters/codex.ts +191 -191
- package/src/workspace/mcp-adapters/copilot.ts +105 -105
- package/src/workspace/mcp-adapters/cursor.ts +53 -53
- package/src/workspace/mcp-adapters/kiro.ts +64 -64
- package/src/workspace/mcp-adapters/opencode.ts +123 -123
- package/src/workspace/mcp-adapters/trae.ts +134 -134
- package/src/workspace/mcp-adapters/windsurf.ts +91 -91
- package/src/workspace/sanitizer.ts +60 -60
- package/src/workspace/workflow-sync.ts +131 -131
|
@@ -30,36 +30,111 @@ var init_esm_shims = __esm({
|
|
|
30
30
|
|
|
31
31
|
// src/store/bun-sqlite-compat.ts
|
|
32
32
|
import { createRequire } from "module";
|
|
33
|
+
function loadNodeSqlite() {
|
|
34
|
+
const nodeSqlite = requireFromHere("node:sqlite");
|
|
35
|
+
return nodeSqlite.DatabaseSync;
|
|
36
|
+
}
|
|
37
|
+
function isNativeBindingFailure(error) {
|
|
38
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
39
|
+
return /could not locate the bindings file|better_sqlite3\.node|module did not self-register/i.test(message);
|
|
40
|
+
}
|
|
41
|
+
function addCompatibility(db2) {
|
|
42
|
+
if (!db2.pragma) {
|
|
43
|
+
db2.pragma = function(pragma, options) {
|
|
44
|
+
const statement = db2.prepare(`PRAGMA ${pragma}`);
|
|
45
|
+
if (options?.simple) {
|
|
46
|
+
const result = statement.get();
|
|
47
|
+
return result ? Object.values(result)[0] : void 0;
|
|
48
|
+
}
|
|
49
|
+
return statement.all();
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (!db2.transaction) {
|
|
53
|
+
let depth = 0;
|
|
54
|
+
let sequence = 0;
|
|
55
|
+
db2.transaction = function(fn) {
|
|
56
|
+
return (...args) => {
|
|
57
|
+
const outermost = depth === 0;
|
|
58
|
+
const savepoint = `memorix_tx_${++sequence}`;
|
|
59
|
+
if (outermost) {
|
|
60
|
+
db2.exec("BEGIN IMMEDIATE");
|
|
61
|
+
} else {
|
|
62
|
+
db2.exec(`SAVEPOINT ${savepoint}`);
|
|
63
|
+
}
|
|
64
|
+
depth += 1;
|
|
65
|
+
try {
|
|
66
|
+
const result = fn(...args);
|
|
67
|
+
if (result && typeof result.then === "function") {
|
|
68
|
+
throw new Error("[memorix] SQLite transactions must be synchronous");
|
|
69
|
+
}
|
|
70
|
+
depth -= 1;
|
|
71
|
+
if (outermost) {
|
|
72
|
+
db2.exec("COMMIT");
|
|
73
|
+
} else {
|
|
74
|
+
db2.exec(`RELEASE SAVEPOINT ${savepoint}`);
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
} catch (error) {
|
|
78
|
+
depth -= 1;
|
|
79
|
+
try {
|
|
80
|
+
if (outermost) {
|
|
81
|
+
db2.exec("ROLLBACK");
|
|
82
|
+
} else {
|
|
83
|
+
db2.exec(`ROLLBACK TO SAVEPOINT ${savepoint}`);
|
|
84
|
+
db2.exec(`RELEASE SAVEPOINT ${savepoint}`);
|
|
85
|
+
}
|
|
86
|
+
} catch {
|
|
87
|
+
}
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return db2;
|
|
94
|
+
}
|
|
95
|
+
function instantiateDatabase(Sqlite, filePath, options) {
|
|
96
|
+
return driver === "node:sqlite" && options === void 0 ? new Sqlite(filePath) : new Sqlite(filePath, options);
|
|
97
|
+
}
|
|
33
98
|
function loadSqlite() {
|
|
34
99
|
if (Database) return Database;
|
|
100
|
+
if (process.env.MEMORIX_SQLITE_DRIVER === "node") {
|
|
101
|
+
Database = loadNodeSqlite();
|
|
102
|
+
driver = "node:sqlite";
|
|
103
|
+
return Database;
|
|
104
|
+
}
|
|
35
105
|
try {
|
|
36
106
|
Database = requireFromHere("better-sqlite3");
|
|
107
|
+
driver = "better-sqlite3";
|
|
108
|
+
return Database;
|
|
109
|
+
} catch {
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
Database = loadNodeSqlite();
|
|
113
|
+
driver = "node:sqlite";
|
|
37
114
|
return Database;
|
|
38
115
|
} catch {
|
|
39
116
|
}
|
|
40
117
|
try {
|
|
41
118
|
const bunSqlite = requireFromHere("bun:sqlite");
|
|
42
119
|
Database = bunSqlite.Database;
|
|
120
|
+
driver = "bun:sqlite";
|
|
43
121
|
return Database;
|
|
44
122
|
} catch {
|
|
45
|
-
throw new Error("[memorix]
|
|
123
|
+
throw new Error("[memorix] SQLite is unavailable (better-sqlite3, node:sqlite, and bun:sqlite failed)");
|
|
46
124
|
}
|
|
47
125
|
}
|
|
48
126
|
function createDatabase(path13, options) {
|
|
49
127
|
const Sqlite = loadSqlite();
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return db2.prepare(`PRAGMA ${pragma}`).all();
|
|
58
|
-
};
|
|
128
|
+
try {
|
|
129
|
+
return addCompatibility(instantiateDatabase(Sqlite, path13, options));
|
|
130
|
+
} catch (error) {
|
|
131
|
+
if (driver !== "better-sqlite3" || !isNativeBindingFailure(error)) throw error;
|
|
132
|
+
Database = loadNodeSqlite();
|
|
133
|
+
driver = "node:sqlite";
|
|
134
|
+
return addCompatibility(instantiateDatabase(Database, path13, options));
|
|
59
135
|
}
|
|
60
|
-
return db2;
|
|
61
136
|
}
|
|
62
|
-
var Database, requireFromHere;
|
|
137
|
+
var Database, driver, requireFromHere;
|
|
63
138
|
var init_bun_sqlite_compat = __esm({
|
|
64
139
|
"src/store/bun-sqlite-compat.ts"() {
|
|
65
140
|
"use strict";
|
|
@@ -78,7 +153,7 @@ function loadBetterSqlite3() {
|
|
|
78
153
|
BetterSqlite3 = loadSqlite();
|
|
79
154
|
return BetterSqlite3;
|
|
80
155
|
} catch {
|
|
81
|
-
throw new Error("[memorix] SQLite is not available (
|
|
156
|
+
throw new Error("[memorix] SQLite is not available (better-sqlite3, node:sqlite, and bun:sqlite all failed)");
|
|
82
157
|
}
|
|
83
158
|
}
|
|
84
159
|
function hasColumn(db2, table, column) {
|
|
@@ -1163,6 +1238,9 @@ function parseTomlValue(raw, filePath, line) {
|
|
|
1163
1238
|
if (raw.startsWith('"') && raw.endsWith('"')) {
|
|
1164
1239
|
return raw.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\");
|
|
1165
1240
|
}
|
|
1241
|
+
if (raw.startsWith("'") && raw.endsWith("'")) {
|
|
1242
|
+
return raw.slice(1, -1);
|
|
1243
|
+
}
|
|
1166
1244
|
if (raw === "true") return true;
|
|
1167
1245
|
if (raw === "false") return false;
|
|
1168
1246
|
if (/^-?\d+$/.test(raw)) return Number.parseInt(raw, 10);
|
|
@@ -1175,7 +1253,7 @@ function parseTomlValue(raw, filePath, line) {
|
|
|
1175
1253
|
throw new Error(`Unsupported TOML value in ${filePath}:${line}`);
|
|
1176
1254
|
}
|
|
1177
1255
|
function stripComment(line) {
|
|
1178
|
-
let
|
|
1256
|
+
let quote = null;
|
|
1179
1257
|
let escaped = false;
|
|
1180
1258
|
for (let i = 0; i < line.length; i++) {
|
|
1181
1259
|
const char = line[i];
|
|
@@ -1183,15 +1261,16 @@ function stripComment(line) {
|
|
|
1183
1261
|
escaped = false;
|
|
1184
1262
|
continue;
|
|
1185
1263
|
}
|
|
1186
|
-
if (char === "\\" &&
|
|
1264
|
+
if (char === "\\" && quote === '"') {
|
|
1187
1265
|
escaped = true;
|
|
1188
1266
|
continue;
|
|
1189
1267
|
}
|
|
1190
|
-
if (char === '"') {
|
|
1191
|
-
|
|
1268
|
+
if (char === '"' || char === "'") {
|
|
1269
|
+
if (quote === char) quote = null;
|
|
1270
|
+
else if (quote === null) quote = char;
|
|
1192
1271
|
continue;
|
|
1193
1272
|
}
|
|
1194
|
-
if (char === "#" &&
|
|
1273
|
+
if (char === "#" && quote === null) {
|
|
1195
1274
|
return line.slice(0, i);
|
|
1196
1275
|
}
|
|
1197
1276
|
}
|