@cortexkit/opencode-magic-context 0.6.0 โ 0.6.1
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 +1 -1
- package/dist/features/magic-context/memory/storage-memory.d.ts.map +1 -1
- package/dist/features/magic-context/plugin-messages.d.ts +1 -1
- package/dist/features/magic-context/plugin-messages.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/index.js +17 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ Your agent should never stop working to manage its own context. Magic Context is
|
|
|
39
39
|
|
|
40
40
|
**5.** TUI sidebar with live context breakdown, token usage, historian status, and memory counts โ right inside the terminal.
|
|
41
41
|
|
|
42
|
-
### ๐งช Experimental
|
|
42
|
+
### ๐งช New Experimental Features
|
|
43
43
|
|
|
44
44
|
**Compaction Markers** โ after historian compresses older messages, Magic Context injects a boundary into OpenCode's message table. OpenCode's built-in message loader stops at the boundary, so the transform processes only the live tail instead of the full session history. Dramatically reduces per-turn overhead on long sessions. Enable with `experimental.compaction_markers: true`.
|
|
45
45
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-memory.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/memory/storage-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,WAAW,EAEX,YAAY,EACZ,kBAAkB,EACrB,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,CAsBnD,CAAC;AAqDF,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAgDD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CA0BvD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwB5C;AA0LD,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAkCrE;AAED,wBAAgB,eAAe,CAC3B,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,YAAY,EAA4B,GACnD,MAAM,EAAE,CAUV;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAEvF;AAqBD,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,EACV,kBAAkB,EAAE,kBAAkB,GACvC,IAAI,CASN;AAED,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACvB,IAAI,CAuBN;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAEvF;AAED,wBAAgB,gBAAgB,CAC5B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GACrB,IAAI,CASN;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAiB7E;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAWzE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"storage-memory.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/memory/storage-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,WAAW,EAEX,YAAY,EACZ,kBAAkB,EACrB,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,CAsBnD,CAAC;AAqDF,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAgDD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CA0BvD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwB5C;AA0LD,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAkCrE;AAED,wBAAgB,eAAe,CAC3B,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,YAAY,EAA4B,GACnD,MAAM,EAAE,CAUV;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAEvF;AAqBD,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,EACV,kBAAkB,EAAE,kBAAkB,GACvC,IAAI,CASN;AAED,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACvB,IAAI,CAuBN;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAEvF;AAED,wBAAgB,gBAAgB,CAC5B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GACrB,IAAI,CASN;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAiB7E;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAWzE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAsC/F"}
|
|
@@ -18,7 +18,7 @@ import type { Database } from "bun:sqlite";
|
|
|
18
18
|
* Messages are auto-cleaned after 5 minutes to prevent table bloat.
|
|
19
19
|
*/
|
|
20
20
|
export type MessageDirection = "server_to_tui" | "tui_to_server";
|
|
21
|
-
export type MessageType = "toast" | "dialog_confirm" | "dialog_result" | "state_update";
|
|
21
|
+
export type MessageType = "toast" | "dialog_confirm" | "dialog_result" | "state_update" | "action";
|
|
22
22
|
export interface PluginMessage {
|
|
23
23
|
id: number;
|
|
24
24
|
direction: MessageDirection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-messages.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/plugin-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,eAAe,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-messages.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/plugin-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,eAAe,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,GAAG,QAAQ,CAAC;AAEnG,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AA6CD;;GAEG;AACH,wBAAgB,SAAS,CACrB,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,GACnB,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,YAAY,CACxB,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,CAAC,EAAE,MAAM,GACnB,MAAM,CAOR;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,aAAa,EAAE,CAqCjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CACxB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,aAAa,EAAE,CAmBjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CACxB,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACN,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GACF,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACnB,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAK/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-meta-session.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-meta-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAW3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAcnF;AAED,wBAAgB,iBAAiB,CAC7B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC9B,IAAI,CA+BN;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"storage-meta-session.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-meta-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAW3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAcnF;AAED,wBAAgB,iBAAiB,CAC7B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC9B,IAAI,CA+BN;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAelE"}
|
package/dist/index.js
CHANGED
|
@@ -23965,7 +23965,10 @@ function getMemoryCountsByStatus(db, projectPath) {
|
|
|
23965
23965
|
};
|
|
23966
23966
|
for (const row of rows) {
|
|
23967
23967
|
counts.ids.push(row.id);
|
|
23968
|
-
if (row.
|
|
23968
|
+
if (typeof row.superseded_by_memory_id === "number") {
|
|
23969
|
+
counts.merged += 1;
|
|
23970
|
+
counts.mergedIds.push(row.id);
|
|
23971
|
+
} else if (row.status === "active") {
|
|
23969
23972
|
counts.active += 1;
|
|
23970
23973
|
} else if (row.status === "permanent") {
|
|
23971
23974
|
counts.permanent += 1;
|
|
@@ -23973,10 +23976,6 @@ function getMemoryCountsByStatus(db, projectPath) {
|
|
|
23973
23976
|
counts.archived += 1;
|
|
23974
23977
|
counts.archivedIds.push(row.id);
|
|
23975
23978
|
}
|
|
23976
|
-
if (typeof row.superseded_by_memory_id === "number") {
|
|
23977
|
-
counts.merged += 1;
|
|
23978
|
-
counts.mergedIds.push(row.id);
|
|
23979
|
-
}
|
|
23980
23979
|
}
|
|
23981
23980
|
counts.ids.sort((left, right) => left - right);
|
|
23982
23981
|
counts.archivedIds.sort((left, right) => left - right);
|
|
@@ -26794,6 +26793,7 @@ function clearSession(db, sessionId) {
|
|
|
26794
26793
|
db.prepare("DELETE FROM notes WHERE session_id = ? AND type = 'session'").run(sessionId);
|
|
26795
26794
|
db.prepare("DELETE FROM recomp_compartments WHERE session_id = ?").run(sessionId);
|
|
26796
26795
|
db.prepare("DELETE FROM recomp_facts WHERE session_id = ?").run(sessionId);
|
|
26796
|
+
db.prepare("DELETE FROM user_memory_candidates WHERE session_id = ?").run(sessionId);
|
|
26797
26797
|
clearIndexedMessages(db, sessionId);
|
|
26798
26798
|
})();
|
|
26799
26799
|
}
|
|
@@ -31343,11 +31343,9 @@ function applyHeuristicCleanup(sessionId, db, targets, messageTagNumbers, config
|
|
|
31343
31343
|
return { droppedTools, deduplicatedTools, droppedInjections };
|
|
31344
31344
|
}
|
|
31345
31345
|
function extractToolInfo(part) {
|
|
31346
|
-
if (part.type === "tool" && typeof part.
|
|
31347
|
-
const state = part.state;
|
|
31348
|
-
|
|
31349
|
-
return { toolName: state.tool, args: state.input ?? {} };
|
|
31350
|
-
}
|
|
31346
|
+
if (part.type === "tool" && typeof part.tool === "string" && DEDUP_SAFE_TOOLS.has(part.tool)) {
|
|
31347
|
+
const state = typeof part.state === "object" && part.state !== null ? part.state : {};
|
|
31348
|
+
return { toolName: part.tool, args: state.input ?? {} };
|
|
31351
31349
|
}
|
|
31352
31350
|
if (part.type === "tool-invocation" && typeof part.toolName === "string" && DEDUP_SAFE_TOOLS.has(part.toolName)) {
|
|
31353
31351
|
return { toolName: part.toolName, args: part.args ?? {} };
|
|
@@ -33790,12 +33788,15 @@ function consumeMessages(db, direction, options) {
|
|
|
33790
33788
|
params.push(options.sessionId);
|
|
33791
33789
|
}
|
|
33792
33790
|
const query = `SELECT * FROM plugin_messages WHERE ${conditions.join(" AND ")} ORDER BY created_at ASC`;
|
|
33793
|
-
const
|
|
33794
|
-
|
|
33795
|
-
|
|
33796
|
-
|
|
33797
|
-
|
|
33798
|
-
|
|
33791
|
+
const messages = db.transaction(() => {
|
|
33792
|
+
const rows = db.prepare(query).all(...params);
|
|
33793
|
+
const result = rows.filter(isPluginMessageRow).map(toPluginMessage);
|
|
33794
|
+
if (result.length > 0) {
|
|
33795
|
+
const ids = result.map((m) => m.id);
|
|
33796
|
+
db.prepare(`UPDATE plugin_messages SET consumed_at = ? WHERE id IN (${ids.map(() => "?").join(",")})`).run(now, ...ids);
|
|
33797
|
+
}
|
|
33798
|
+
return result;
|
|
33799
|
+
})();
|
|
33799
33800
|
db.prepare("DELETE FROM plugin_messages WHERE created_at < ?").run(now - CLEANUP_THRESHOLD_MS);
|
|
33800
33801
|
return messages;
|
|
33801
33802
|
}
|
package/package.json
CHANGED