@cortexkit/opencode-magic-context 0.42.2 → 0.42.3

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.
@@ -3,10 +3,10 @@ import {
3
3
  cleanupConflictWarnings2,
4
4
  sendSchemaFenceWarning2,
5
5
  sendStartupAnnouncement2
6
- } from "./index-36wd1d6k.js";
6
+ } from "./index-ecz14qke.js";
7
7
  import"./index-sd3egckz.js";
8
- import"./index-nqgjwfzn.js";
9
- import"./index-1974jvn3.js";
8
+ import"./index-gynz8qdc.js";
9
+ import"./index-z8552w7e.js";
10
10
  import"./index-dkv2dn46.js";
11
11
  export {
12
12
  cleanupConflictWarnings2 as cleanupConflictWarnings,
@@ -106,17 +106,11 @@ export interface SessionCompactionMarkerRows {
106
106
  summaryMessageIds: string[];
107
107
  }
108
108
  /**
109
- * List every compaction marker present in opencode.db for a session.
109
+ * List compaction markers that have completed Magic Context summaries.
110
110
  *
111
- * Used by the fork-orphan hygiene pass (#263): OpenCode's `/fork` copies the
112
- * parent session's message rows — including this plugin's compaction marker
113
- * rows — into the fork, while magic-context's durable marker state (context.db)
114
- * is NOT inherited (PARITY.md gap #25). The fork then owns marker rows its
115
- * state knows nothing about. This scan enumerates all markers so the caller can
116
- * diff them against the persisted state and repair the ones it does not own.
117
- *
118
- * Errors propagate to the caller (the hygiene pass treats any failure as
119
- * "skip this pass and retry later" — never as a fatal transform error).
111
+ * The orphan-reconciliation caller cannot act on native or part-only markers.
112
+ * Discovering completed summaries first bounds part reads to their parent
113
+ * boundaries and avoids a full-session part scan plus one message scan per row.
120
114
  */
121
115
  export declare function listSessionCompactionMarkers(sessionId: string): SessionCompactionMarkerRows[];
122
116
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-marker.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/compaction-marker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA4CH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,QAAQ,SAAK,GAAG,MAAM,CAE1F;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,SAAK,EAAE,QAAQ,SAAK,GAAG,MAAM,CAEvF;AAID,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AA+GD,wBAAgB,uBAAuB,IAAI,IAAI,CAY9C;AAID,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACvB;AA6BD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACrB,mBAAmB,GAAG,IAAI,CAoC5B;AAED,wBAAgB,uCAAuC,CACnD,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI,CASf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMvB;AAID,UAAU,qBAAqB;IAC3B,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,0BAA0B;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CAC1C;AA8DD;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,0BAA0B,GACjC,qBAAqB,GAAG,IAAI,CA0H9B;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IACxC,sEAAsE;IACtE,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B,EAAE,CAkC7F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,2BAA2B,EACnC,yBAAyB,EAAE,MAAM,GAAG,IAAI,GACzC,OAAO,CAyBT;AAID;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACvC;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,8BAA8B,CAC1C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GACpB,0BAA0B,CAwN5B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAgB5E"}
1
+ {"version":3,"file":"compaction-marker.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/compaction-marker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read-session-db.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-db.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAqB/C,uEAAuE;AACvE,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAqCD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,CAAC,GAAG,CAAC,CAEnE;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAYvF;AAED,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CAC7B;AAuED,qFAAqF;AACrF,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAYjG;AAED,8EAA8E;AAC9E,wBAAgB,yCAAyC,CACrD,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACtC,OAAO,CAYT;AAoBD,mGAAmG;AACnG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CA4EhF;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGnE;AAqBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAWjF;AAED,eAAO,MAAM,uBAAuB;aACvB,IAAI;6BAKY,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAG5D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,2CAA2C,CACvD,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAClB,OAAO,CAKT;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAexE;AAED,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAyB7F;AAED,wBAAgB,uBAAuB,CACnC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,0BAA0B,EAAE,OAAO,GACpC,OAAO,CAuCT;AAkDD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC9B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBrB;AAED,wBAAgB,oCAAoC,CAChD,SAAS,EAAE,MAAM,GAClB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgChE"}
1
+ {"version":3,"file":"read-session-db.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-db.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAqB/C,uEAAuE;AACvE,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAqCD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,CAAC,GAAG,CAAC,CAEnE;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAYvF;AAED,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CAC7B;AAuED,qFAAqF;AACrF,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAYjG;AAED,8EAA8E;AAC9E,wBAAgB,yCAAyC,CACrD,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACtC,OAAO,CAYT;AAoBD,mGAAmG;AACnG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CA4EhF;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGnE;AAqBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAWjF;AAED,eAAO,MAAM,uBAAuB;aACvB,IAAI;6BAKY,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAG5D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,2CAA2C,CACvD,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAClB,OAAO,CAKT;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAexE;AAED,wBAAgB,oCAAoC,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAwB7F;AAED,wBAAgB,uBAAuB,CACnC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,0BAA0B,EAAE,OAAO,GACpC,OAAO,CAuCT;AAkDD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC9B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBrB;AAED,wBAAgB,oCAAoC,CAChD,SAAS,EAAE,MAAM,GAClB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgChE"}
@@ -19,11 +19,11 @@ export interface RawMessageOrdinalEntry extends RawMessageOrdinalAnchor {
19
19
  }
20
20
  /**
21
21
  * OpenCode message IDs are global primary keys and `part.message_id` references
22
- * that key. The selectivity hint stops stale statistics from favoring the
23
- * session-only part index while retaining `session_id` for schema variants whose
24
- * useful index starts with `(session_id, message_id)`.
22
+ * that key. Unary `+` keeps the cross-session correctness filter but prevents
23
+ * SQLite from choosing the session-only index instead of the bounded message-id
24
+ * lookup. Keep the likelihood hint for planner versions that honor it.
25
25
  */
26
- export declare const RAW_MESSAGE_PARTS_BY_ID_SQL = "SELECT message_id, data, time_updated FROM part WHERE session_id = ? AND likelihood(message_id = ?, 0.000001) ORDER BY time_created ASC, id ASC";
26
+ export declare const RAW_MESSAGE_PARTS_BY_ID_SQL = "SELECT message_id, data, time_updated FROM part WHERE +session_id = ? AND likelihood(message_id = ?, 0.000001) ORDER BY time_created ASC, id ASC";
27
27
  export declare function isRawCompactionSummaryInfo(info: unknown): boolean;
28
28
  export declare function readRawSessionMessagesFromDb(db: Database, sessionId: string): RawMessage[];
29
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"read-session-raw.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-raw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-session-raw.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/read-session-raw.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-dkv2dn46.js";
4
4
  import {
5
5
  sendStatusNotification2
6
- } from "./index-nqgjwfzn.js";
6
+ } from "./index-gynz8qdc.js";
7
7
  import {
8
8
  readJsoncFile
9
9
  } from "./index-sd3egckz.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-dkv2dn46.js";
4
4
  import {
5
5
  shouldHoldIgnoredNotification
6
- } from "./index-1974jvn3.js";
6
+ } from "./index-z8552w7e.js";
7
7
 
8
8
  // src/shared/error-message.ts
9
9
  function getErrorMessage(error) {
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-dkv2dn46.js";
4
4
  import {
5
5
  withReadOnlySessionDb
6
- } from "./index-1974jvn3.js";
6
+ } from "./index-z8552w7e.js";
7
7
  import {
8
8
  piModelRefToCanonical
9
9
  } from "./index-avwt563y.js";
@@ -11,7 +11,7 @@ import {
11
11
  SESSION_SCOPED_TABLES,
12
12
  deleteSessionScopedRows,
13
13
  updateSessionMeta2
14
- } from "./index-jmtjh2d3.js";
14
+ } from "./index-sf6x1ga9.js";
15
15
  import {
16
16
  resolveOpenCodeDbPath,
17
17
  openCodeDbPathExists,
@@ -25,7 +25,7 @@ import {
25
25
  withReadOnlySessionDb,
26
26
  getRawSessionMessageCountFromDb,
27
27
  getMessageTimesFromOpenCodeDb
28
- } from "./index-1974jvn3.js";
28
+ } from "./index-z8552w7e.js";
29
29
  import {
30
30
  pushNotification2
31
31
  } from "./index-jdxxq8cz.js";
@@ -47,7 +47,7 @@ import {
47
47
  getErrorMessage,
48
48
  describeError,
49
49
  sendStatusNotification2
50
- } from "./index-nqgjwfzn.js";
50
+ } from "./index-gynz8qdc.js";
51
51
  import {
52
52
  piModelRefToCanonical,
53
53
  modelRefLookupOrder
@@ -10606,7 +10606,7 @@ function deleteToolTagsByOwner(db, sessionId, ownerMsgId) {
10606
10606
  }
10607
10607
 
10608
10608
  // src/hooks/magic-context/read-session-raw.ts
10609
- var RAW_MESSAGE_PARTS_BY_ID_SQL = "SELECT message_id, data, time_updated FROM part WHERE session_id = ? AND likelihood(message_id = ?, 0.000001) ORDER BY time_created ASC, id ASC";
10609
+ var RAW_MESSAGE_PARTS_BY_ID_SQL = "SELECT message_id, data, time_updated FROM part WHERE +session_id = ? AND likelihood(message_id = ?, 0.000001) ORDER BY time_created ASC, id ASC";
10610
10610
  function isRawMessageRow(row) {
10611
10611
  if (row === null || typeof row !== "object")
10612
10612
  return false;
@@ -10668,7 +10668,7 @@ function readRawSessionMessagesFromDb(db, sessionId) {
10668
10668
  const placeholders = messageIds.map(() => "?").join(", ");
10669
10669
  const partRows = db.prepare(`SELECT message_id, data, time_updated
10670
10670
  FROM part
10671
- WHERE session_id = ?
10671
+ WHERE +session_id = ?
10672
10672
  AND likelihood(message_id IN (${placeholders}), 0.000001)
10673
10673
  ORDER BY message_id ASC, time_created ASC, id ASC`).all(sessionId, ...messageIds).filter(isRawPartRow);
10674
10674
  for (const part of partRows) {
@@ -10719,7 +10719,7 @@ function readRawSessionMessagePageFromDb(db, sessionId, afterOrdinal, limit, fin
10719
10719
  const placeholders = messageRows.map(() => "?").join(", ");
10720
10720
  const partRows = db.prepare(`SELECT message_id, data, time_updated
10721
10721
  FROM part
10722
- WHERE session_id = ?
10722
+ WHERE +session_id = ?
10723
10723
  AND likelihood(message_id IN (${placeholders}), 0.000001)
10724
10724
  ORDER BY message_id ASC, time_created ASC, id ASC`).all(sessionId, ...messageRows.map((row) => row.id)).filter(isRawPartRow);
10725
10725
  const partsByMessageId = new Map;
@@ -10807,7 +10807,7 @@ function readRawSessionTailFromDb(db, sessionId, baseOrdinal, anchorMessageId) {
10807
10807
  for (let i = 0;i < ids.length; i += CHUNK) {
10808
10808
  const slice = ids.slice(i, i + CHUNK);
10809
10809
  const placeholders = slice.map(() => "?").join(",");
10810
- const partRows = db.prepare(`SELECT message_id, data, time_updated FROM part WHERE session_id = ? AND likelihood(message_id IN (${placeholders}), 0.000001) ORDER BY time_created ASC, id ASC`).all(sessionId, ...slice).filter(isRawPartRow);
10810
+ const partRows = db.prepare(`SELECT message_id, data, time_updated FROM part WHERE +session_id = ? AND likelihood(message_id IN (${placeholders}), 0.000001) ORDER BY time_created ASC, id ASC`).all(sessionId, ...slice).filter(isRawPartRow);
10811
10811
  for (const part of partRows) {
10812
10812
  const list = partsByMessageId.get(part.message_id) ?? [];
10813
10813
  list.push(attachRawPartVersion(parseJsonUnknown(part.data), part.time_updated));
@@ -10973,7 +10973,7 @@ function readRawSeedTailFromDb(db, sessionId, boundaryId) {
10973
10973
  SELECT c.id, m.data, c.time_created, m.time_updated, c.ordinal,
10974
10974
  p.data AS part_data, p.time_updated AS part_updated
10975
10975
  FROM canonical c JOIN message m ON m.id = c.id
10976
- LEFT JOIN part p ON p.session_id = ? AND likelihood(p.message_id = c.id, 0.000001)
10976
+ LEFT JOIN part p ON +p.session_id = ? AND likelihood(p.message_id = c.id, 0.000001)
10977
10977
  WHERE ? IS NULL OR c.ordinal >= (SELECT ordinal FROM canonical WHERE id = ?)
10978
10978
  ORDER BY c.ordinal, p.time_created, p.id
10979
10979
  `).all(sessionId, sessionId, boundaryId, boundaryId);
@@ -31373,7 +31373,7 @@ function removeLegacyMarkerLineageRows(db, args) {
31373
31373
  AND EXISTS (
31374
31374
  SELECT 1
31375
31375
  FROM part p
31376
- WHERE p.session_id = m.session_id
31376
+ WHERE +p.session_id = m.session_id
31377
31377
  AND p.message_id = m.id
31378
31378
  AND COALESCE(json_extract(p.data, '$.type'), '') = 'text'
31379
31379
  AND COALESCE(json_extract(p.data, '$.text'), '') = ?
@@ -31381,14 +31381,14 @@ function removeLegacyMarkerLineageRows(db, args) {
31381
31381
  const legacySummaryIds = legacySummaries.flatMap((row) => typeof row.id === "string" ? [row.id] : []);
31382
31382
  if (legacySummaryIds.length === 0)
31383
31383
  return;
31384
- const deleteSummaryParts = db.prepare("DELETE FROM part WHERE session_id = ? AND message_id = ?");
31384
+ const deleteSummaryParts = db.prepare("DELETE FROM part WHERE +session_id = ? AND message_id = ?");
31385
31385
  const deleteSummary = db.prepare("DELETE FROM message WHERE session_id = ? AND id = ?");
31386
31386
  for (const summaryMessageId of legacySummaryIds) {
31387
31387
  deleteSummaryParts.run(args.sessionId, summaryMessageId);
31388
31388
  deleteSummary.run(args.sessionId, summaryMessageId);
31389
31389
  }
31390
31390
  db.prepare(`DELETE FROM part
31391
- WHERE session_id = ?
31391
+ WHERE +session_id = ?
31392
31392
  AND message_id = ?
31393
31393
  AND id <> ?
31394
31394
  AND COALESCE(json_extract(data, '$.type'), '') = 'compaction'
@@ -31470,36 +31470,56 @@ function injectCompactionMarker(args) {
31470
31470
  }
31471
31471
  function listSessionCompactionMarkers(sessionId) {
31472
31472
  const db = getWritableOpenCodeDb();
31473
- const partRows = db.prepare(`SELECT id, message_id
31474
- FROM part
31473
+ const summaryRows = db.prepare(`SELECT id, json_extract(data, '$.parentID') AS boundary_message_id
31474
+ FROM message
31475
31475
  WHERE session_id = ?
31476
- AND COALESCE(json_extract(data, '$.type'), '') = 'compaction'`).all(sessionId);
31477
- const markers = [];
31478
- const summaryStmt = db.prepare(`SELECT id
31479
- FROM message
31480
- WHERE session_id = ?
31481
- AND COALESCE(json_extract(data, '$.parentID'), '') = ?
31482
- AND COALESCE(json_extract(data, '$.summary'), 0) = 1
31483
- AND COALESCE(json_extract(data, '$.finish'), '') = 'stop'
31484
- AND COALESCE(json_extract(data, '$.providerID'), '') = 'magic-context'`);
31485
- for (const row of partRows) {
31486
- if (typeof row.id !== "string" || typeof row.message_id !== "string")
31476
+ AND COALESCE(json_extract(data, '$.summary'), 0) = 1
31477
+ AND COALESCE(json_extract(data, '$.finish'), '') = 'stop'
31478
+ AND COALESCE(json_extract(data, '$.providerID'), '') = 'magic-context'
31479
+ ORDER BY time_created ASC, id ASC`).all(sessionId);
31480
+ const summaryIdsByBoundary = new Map;
31481
+ for (const row of summaryRows) {
31482
+ if (typeof row.id !== "string" || typeof row.boundary_message_id !== "string")
31487
31483
  continue;
31488
- const summaryRows = summaryStmt.all(sessionId, row.message_id);
31489
- const summaryMessageIds = summaryRows.flatMap((summaryRow) => typeof summaryRow.id === "string" ? [summaryRow.id] : []);
31490
- markers.push({
31491
- compactionPartId: row.id,
31492
- boundaryMessageId: row.message_id,
31493
- summaryMessageIds
31494
- });
31484
+ const summaryIds = summaryIdsByBoundary.get(row.boundary_message_id) ?? [];
31485
+ summaryIds.push(row.id);
31486
+ summaryIdsByBoundary.set(row.boundary_message_id, summaryIds);
31487
+ }
31488
+ const boundaryIds = [...summaryIdsByBoundary.keys()];
31489
+ const markers = [];
31490
+ const chunkSize = 800;
31491
+ for (let offset = 0;offset < boundaryIds.length; offset += chunkSize) {
31492
+ const boundaryChunk = boundaryIds.slice(offset, offset + chunkSize);
31493
+ const placeholders = boundaryChunk.map(() => "?").join(", ");
31494
+ const partRows = db.prepare(`SELECT id, message_id, time_created
31495
+ FROM part
31496
+ WHERE +session_id = ?
31497
+ AND likelihood(message_id IN (${placeholders}), 0.000001)
31498
+ AND COALESCE(json_extract(data, '$.type'), '') = 'compaction'
31499
+ ORDER BY time_created ASC, id ASC`).all(sessionId, ...boundaryChunk);
31500
+ for (const row of partRows) {
31501
+ if (typeof row.id !== "string" || typeof row.message_id !== "string" || typeof row.time_created !== "number") {
31502
+ continue;
31503
+ }
31504
+ const summaryMessageIds = summaryIdsByBoundary.get(row.message_id);
31505
+ if (!summaryMessageIds)
31506
+ continue;
31507
+ markers.push({
31508
+ compactionPartId: row.id,
31509
+ boundaryMessageId: row.message_id,
31510
+ summaryMessageIds: [...summaryMessageIds],
31511
+ timeCreated: row.time_created
31512
+ });
31513
+ }
31495
31514
  }
31496
- return markers;
31515
+ markers.sort((left, right) => left.timeCreated - right.timeCreated || left.compactionPartId.localeCompare(right.compactionPartId));
31516
+ return markers.map(({ timeCreated: _, ...marker }) => marker);
31497
31517
  }
31498
31518
  function removeForeignCompactionMarker(sessionId, marker, protectedSummaryMessageId) {
31499
31519
  try {
31500
31520
  const db = getWritableOpenCodeDb();
31501
31521
  db.transaction(() => {
31502
- const deletePartsOfMessage = db.prepare("DELETE FROM part WHERE session_id = ? AND message_id = ?");
31522
+ const deletePartsOfMessage = db.prepare("DELETE FROM part WHERE +session_id = ? AND message_id = ?");
31503
31523
  const deleteMessage = db.prepare("DELETE FROM message WHERE session_id = ? AND id = ?");
31504
31524
  for (const summaryMessageId of marker.summaryMessageIds) {
31505
31525
  if (summaryMessageId === protectedSummaryMessageId)
@@ -31562,7 +31582,7 @@ function removeMcOwnedCompactionMarkers(sessionId, summaryText) {
31562
31582
  AND EXISTS (
31563
31583
  SELECT 1
31564
31584
  FROM part p
31565
- WHERE p.session_id = m.session_id
31585
+ WHERE +p.session_id = m.session_id
31566
31586
  AND p.message_id = m.id
31567
31587
  AND COALESCE(json_extract(p.data, '$.type'), '') = 'text'
31568
31588
  AND COALESCE(json_extract(p.data, '$.text'), '') = ?
@@ -31622,7 +31642,7 @@ function removeMcOwnedCompactionMarkers(sessionId, summaryText) {
31622
31642
  let removedLineages = 0;
31623
31643
  let removedRows = 0;
31624
31644
  let retainedLineages = 0;
31625
- const deletePartsOfMessage = db.prepare("DELETE FROM part WHERE session_id = ? AND message_id = ?");
31645
+ const deletePartsOfMessage = db.prepare("DELETE FROM part WHERE +session_id = ? AND message_id = ?");
31626
31646
  const deleteMessage = db.prepare("DELETE FROM message WHERE session_id = ? AND id = ?");
31627
31647
  const deletePart = db.prepare("DELETE FROM part WHERE session_id = ? AND id = ?");
31628
31648
  const deleteSummaries = (summaryIds) => {
@@ -675,7 +675,7 @@ function assistantAwaitingToolsFromOpenCodeDb(db, sessionId) {
675
675
  return false;
676
676
  if (latestAssistant.finish === "tool-calls")
677
677
  return true;
678
- const partRows = db.prepare("SELECT data FROM part WHERE session_id = ? AND likelihood(message_id = ?, 0.000001)").all(sessionId, latestAssistant.id);
678
+ const partRows = db.prepare("SELECT data FROM part WHERE +session_id = ? AND likelihood(message_id = ?, 0.000001)").all(sessionId, latestAssistant.id);
679
679
  return partRows.some((row) => {
680
680
  if (typeof row.data !== "string" || row.data.length === 0)
681
681
  return false;
package/dist/index.js CHANGED
@@ -542,7 +542,7 @@ import {
542
542
  setRecompTerminal2,
543
543
  runManagedRecomp2,
544
544
  runManagedUpgrade2
545
- } from "./index-953x7a79.js";
545
+ } from "./index-wde5446v.js";
546
546
  import {
547
547
  stripJsonComments,
548
548
  isPrototypePollutionKey,
@@ -589,7 +589,7 @@ import {
589
589
  assistantAwaitingTools,
590
590
  getMessageTimesFromOpenCodeDb,
591
591
  findLastAssistantModelFromOpenCodeDb
592
- } from "./index-1974jvn3.js";
592
+ } from "./index-z8552w7e.js";
593
593
  import {
594
594
  getErrorMessage,
595
595
  describeError,
@@ -598,13 +598,13 @@ import {
598
598
  clearIgnoredMessages2,
599
599
  observeIgnoredNotificationEvent2,
600
600
  sendStatusNotification2
601
- } from "./index-nqgjwfzn.js";
601
+ } from "./index-gynz8qdc.js";
602
602
  import {
603
603
  detectConflicts,
604
604
  resolveCompactionForBoot,
605
605
  sendConflictWarning2,
606
606
  cleanupConflictWarnings2
607
- } from "./index-36wd1d6k.js";
607
+ } from "./index-ecz14qke.js";
608
608
  import {
609
609
  resolveHistorianModel2,
610
610
  resolveOpenCodeAgentOverrides2,
@@ -630,7 +630,7 @@ import {
630
630
  retryPendingSessionCleanups2,
631
631
  retryPendingRustSessionCleanupsForProject2,
632
632
  clearSession2
633
- } from "./index-jmtjh2d3.js";
633
+ } from "./index-sf6x1ga9.js";
634
634
  import {
635
635
  registerNotificationSink2,
636
636
  pushNotification2,
@@ -13418,7 +13418,7 @@ function normalizeOpenCodeRows(db, sessionId, rows) {
13418
13418
  const placeholders = messageIds.map(() => "?").join(", ");
13419
13419
  const partRows = db.prepare(`SELECT message_id, data
13420
13420
  FROM part
13421
- WHERE session_id = ?
13421
+ WHERE +session_id = ?
13422
13422
  AND likelihood(message_id IN (${placeholders}), 0.000001)
13423
13423
  ORDER BY time_created ASC, id ASC`).all(sessionId, ...messageIds);
13424
13424
  const partsByMessageId = new Map;
@@ -29494,8 +29494,8 @@ function registerRpcHandlers(rpcServer, args) {
29494
29494
  const db = getDb();
29495
29495
  if (!db)
29496
29496
  return { ok: false, error: "db unavailable" };
29497
- const { runManagedRecomp } = await import("./recomp-orchestrator-5g8f5rhy.js");
29498
- const { sendIgnoredMessage } = await import("./send-session-notification-1qeqkswb.js");
29497
+ const { runManagedRecomp } = await import("./recomp-orchestrator-447vycpt.js");
29498
+ const { sendIgnoredMessage } = await import("./send-session-notification-2mzgd3zf.js");
29499
29499
  log(`[rpc] recomp requested for session ${sessionId}`);
29500
29500
  const ctx = await buildManagedCtx(db);
29501
29501
  runManagedRecomp(ctx, sessionId).then((message) => {
@@ -29513,8 +29513,8 @@ function registerRpcHandlers(rpcServer, args) {
29513
29513
  const db = getDb();
29514
29514
  if (!db)
29515
29515
  return { ok: false, error: "db unavailable" };
29516
- const { runManagedUpgrade } = await import("./recomp-orchestrator-5g8f5rhy.js");
29517
- const { sendIgnoredMessage } = await import("./send-session-notification-1qeqkswb.js");
29516
+ const { runManagedUpgrade } = await import("./recomp-orchestrator-447vycpt.js");
29517
+ const { sendIgnoredMessage } = await import("./send-session-notification-2mzgd3zf.js");
29518
29518
  log(`[rpc] session-upgrade requested for session ${sessionId}`);
29519
29519
  const ctx = await buildManagedCtx(db);
29520
29520
  runManagedUpgrade(ctx, sessionId).then((message) => {
@@ -29530,7 +29530,7 @@ function registerRpcHandlers(rpcServer, args) {
29530
29530
  if (!db)
29531
29531
  return { ok: false, error: "db unavailable" };
29532
29532
  try {
29533
- const { updateSessionMeta } = await import("./storage-meta-session-e6g0mmec.js");
29533
+ const { updateSessionMeta } = await import("./storage-meta-session-fkmfhswa.js");
29534
29534
  updateSessionMeta(db, sessionId, { upgradeRemindedAt: Date.now() });
29535
29535
  return { ok: true };
29536
29536
  } catch (error) {
@@ -43435,7 +43435,7 @@ var server = async (ctx) => {
43435
43435
  if (hasBannerEntries)
43436
43436
  setTimeout(async () => {
43437
43437
  try {
43438
- const { sendStatusNotification } = await import("./send-session-notification-1qeqkswb.js");
43438
+ const { sendStatusNotification } = await import("./send-session-notification-2mzgd3zf.js");
43439
43439
  const clientWithSessions = ctx.client;
43440
43440
  const sessions = await Promise.resolve(clientWithSessions.session?.list?.()).catch(() => null);
43441
43441
  const sessionList = Array.isArray(sessions) ? sessions : sessions?.data;
@@ -43452,7 +43452,7 @@ var server = async (ctx) => {
43452
43452
  log(`[magic-context] opencode_db_missing path=${openCodeDbResolution.path} source=${openCodeDbResolution.source}`);
43453
43453
  setTimeout(async () => {
43454
43454
  try {
43455
- const { sendStatusNotification } = await import("./send-session-notification-1qeqkswb.js");
43455
+ const { sendStatusNotification } = await import("./send-session-notification-2mzgd3zf.js");
43456
43456
  const clientWithSessions = ctx.client;
43457
43457
  const sessions = await Promise.resolve(clientWithSessions.session?.list?.()).catch(() => null);
43458
43458
  const sessionList = Array.isArray(sessions) ? sessions : sessions?.data;
@@ -43698,12 +43698,12 @@ var server = async (ctx) => {
43698
43698
  {
43699
43699
  const fence = getSchemaFenceRejection();
43700
43700
  if (fence) {
43701
- import("./conflict-warning-hook-6p3xqeac.js").then(({ sendSchemaFenceWarning }) => sendSchemaFenceWarning(ctx.client, ctx.directory, fence));
43701
+ import("./conflict-warning-hook-aedp084d.js").then(({ sendSchemaFenceWarning }) => sendSchemaFenceWarning(ctx.client, ctx.directory, fence));
43702
43702
  }
43703
43703
  }
43704
43704
  const serverUrl = ctx.serverUrl;
43705
43705
  const serverUrlStr = serverUrl instanceof URL ? serverUrl.toString().replace(/\/$/, "") : typeof serverUrl === "string" ? serverUrl.replace(/\/$/, "") : undefined;
43706
- import("./send-session-notification-1qeqkswb.js").then(({ setNotificationServerUrl }) => {
43706
+ import("./send-session-notification-2mzgd3zf.js").then(({ setNotificationServerUrl }) => {
43707
43707
  setNotificationServerUrl(serverUrlStr);
43708
43708
  });
43709
43709
  if (conflictResult?.hasConflict) {
@@ -43726,7 +43726,7 @@ var server = async (ctx) => {
43726
43726
  }) => {
43727
43727
  if (!shouldShowAnnouncement())
43728
43728
  return;
43729
- return import("./conflict-warning-hook-6p3xqeac.js").then(({ sendStartupAnnouncement }) => sendStartupAnnouncement(ctx.client, ctx.directory, ANNOUNCEMENT_VERSION, ANNOUNCEMENT_FEATURES, ANNOUNCEMENT_FOOTER, markAnnouncementSeen));
43729
+ return import("./conflict-warning-hook-aedp084d.js").then(({ sendStartupAnnouncement }) => sendStartupAnnouncement(ctx.client, ctx.directory, ANNOUNCEMENT_VERSION, ANNOUNCEMENT_FEATURES, ANNOUNCEMENT_FOOTER, markAnnouncementSeen));
43730
43730
  }).catch(() => {});
43731
43731
  }, 8000);
43732
43732
  }
@@ -3,12 +3,12 @@ import {
3
3
  setRecompTerminal2,
4
4
  runManagedRecomp2,
5
5
  runManagedUpgrade2
6
- } from "./index-953x7a79.js";
6
+ } from "./index-wde5446v.js";
7
7
  import"./index-xdtge3y2.js";
8
- import"./index-jmtjh2d3.js";
8
+ import"./index-sf6x1ga9.js";
9
9
  import"./index-sd3egckz.js";
10
- import"./index-nqgjwfzn.js";
11
- import"./index-1974jvn3.js";
10
+ import"./index-gynz8qdc.js";
11
+ import"./index-z8552w7e.js";
12
12
  import"./index-jdxxq8cz.js";
13
13
  import"./index-dkv2dn46.js";
14
14
  export {
@@ -5,8 +5,8 @@ import {
5
5
  clearIgnoredMessages2,
6
6
  observeIgnoredNotificationEvent2,
7
7
  sendStatusNotification2
8
- } from "./index-nqgjwfzn.js";
9
- import"./index-1974jvn3.js";
8
+ } from "./index-gynz8qdc.js";
9
+ import"./index-z8552w7e.js";
10
10
  import"./index-dkv2dn46.js";
11
11
  export {
12
12
  clearIgnoredMessages2 as clearIgnoredMessages,
@@ -6,8 +6,8 @@ import {
6
6
  retryPendingSessionCleanups2,
7
7
  retryPendingRustSessionCleanupsForProject2,
8
8
  clearSession2
9
- } from "./index-jmtjh2d3.js";
10
- import"./index-1974jvn3.js";
9
+ } from "./index-sf6x1ga9.js";
10
+ import"./index-z8552w7e.js";
11
11
  import"./index-dkv2dn46.js";
12
12
  export {
13
13
  advanceToolReclaimWatermark2 as advanceToolReclaimWatermark,
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ id: string;
3
+ setup(): void;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/v2/server.ts"],"names":[],"mappings":";;;;AACA,wBAKE"}
@@ -0,0 +1,10 @@
1
+ // src/v2/server.ts
2
+ var server_default = {
3
+ id: "@cortexkit/opencode-magic-context",
4
+ setup() {
5
+ console.info("[magic-context] @cortexkit/opencode-magic-context v2 setup");
6
+ }
7
+ };
8
+ export {
9
+ server_default as default
10
+ };
@@ -0,0 +1,63 @@
1
+ /** Source rule: oc-audit-7a31b5c0f7.md:186-202; sanitization follows owner R16.
2
+ * The real GA CLI 2.0.3 placement probe confirms OPENCODE_DB is honoured.
3
+ * Isolation must still use private XDG roots, not rely solely on the filename.
4
+ */
5
+ export declare function sourceDatabaseFilename(channel: string, env?: NodeJS.ProcessEnv): string;
6
+ /** GA data root: aft-playbook-fe8d4871f.md:46-48, with the CLI filename rule. */
7
+ export declare function gaDatabasePath(dataHome: string, channel?: string, env?: NodeJS.ProcessEnv): string;
8
+ export type MessageType = "agent-switched" | "model-switched" | "location-switched" | "user" | "synthetic" | "system" | "skill" | "shell" | "assistant" | "compaction" | "idle";
9
+ export interface MessageData {
10
+ [key: string]: unknown;
11
+ content?: Array<Record<string, unknown>>;
12
+ text?: string;
13
+ tokens?: {
14
+ input: number;
15
+ output: number;
16
+ reasoning: number;
17
+ cache: {
18
+ read: number;
19
+ write: number;
20
+ };
21
+ };
22
+ time?: {
23
+ created: number;
24
+ completed?: number;
25
+ streamed?: number;
26
+ };
27
+ }
28
+ export interface IdleData extends MessageData {
29
+ outcome: "succeeded" | "failed" | "interrupted";
30
+ }
31
+ export interface CompactionData extends MessageData {
32
+ status: string;
33
+ summary?: string;
34
+ recent?: string;
35
+ }
36
+ export interface StoreRow<T extends MessageType = MessageType> {
37
+ id: string;
38
+ session_id: string;
39
+ type: T;
40
+ seq: number;
41
+ data: T extends "idle" ? IdleData : T extends "compaction" ? CompactionData : MessageData;
42
+ }
43
+ /** Opens an existing store read-only; missing/corrupt stores propagate errors, never an empty history. */
44
+ export declare class V2StoreReader {
45
+ private readonly db;
46
+ constructor(path: string);
47
+ close(): void;
48
+ /** Exclusive cursor, ascending seq. IDs are not chronological in the v2 store. */
49
+ page(sessionID: string, options?: {
50
+ after?: number;
51
+ limit?: number;
52
+ type?: MessageType;
53
+ }): {
54
+ rows: StoreRow[];
55
+ cursor: number | undefined;
56
+ };
57
+ latestCompaction(sessionID: string): StoreRow<"compaction"> | undefined;
58
+ idleRows(sessionID: string, after?: number): StoreRow<"idle">[];
59
+ /** Include the completed checkpoint itself, matching the host history cut. */
60
+ window(sessionID: string): StoreRow[];
61
+ private all;
62
+ }
63
+ //# sourceMappingURL=store-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-reader.d.ts","sourceRoot":"","sources":["../../src/v2/store-reader.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,UAAwB,GACrC,MAAM,CASR;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAW,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACrC,MAAM,CAGR;AAGD,MAAM,MAAM,WAAW,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,MAAM,GACN,WAAW,GACX,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,GACX,YAAY,GACZ,MAAM,CAAC;AACb,MAAM,WAAW,WAAW;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AACD,MAAM,WAAW,QAAS,SAAQ,WAAW;IACzC,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;CACnD;AACD,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,SAAS,MAAM,GAAG,QAAQ,GAAG,CAAC,SAAS,YAAY,GAAG,cAAc,GAAG,WAAW,CAAC;CAC7F;AAmBD,0GAA0G;AAC1G,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;gBAClB,IAAI,EAAE,MAAM;IAGxB,KAAK,IAAI,IAAI;IAIb,kFAAkF;IAClF,IAAI,CACA,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,WAAW,CAAA;KAAO,GACrE;QAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;IAoBnD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,SAAS;IAQvE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE;IAG3D,8EAA8E;IAC9E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE;IAMrC,OAAO,CAAC,GAAG;CASd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/opencode-magic-context",
3
- "version": "0.42.2",
3
+ "version": "0.42.3",
4
4
  "type": "module",
5
5
  "description": "OpenCode plugin for Magic Context — cross-session memory and context management",
6
6
  "main": "dist/index.js",
@@ -34,7 +34,8 @@
34
34
  "README.md"
35
35
  ],
36
36
  "scripts": {
37
- "build": "tsc -p ../retina-local-fs/tsconfig.build.json && bun run build:tui && rm -f dist/index.js dist/transformers-web.js dist/transformers-node-wasm.js dist/*-*.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist && bun build src/index.ts --outdir dist --target node --format esm --splitting --external @opencode-ai/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite && tsc --emitDeclarationOnly",
37
+ "build": "tsc -p ../retina-local-fs/tsconfig.build.json && bun run build:tui && rm -f dist/index.js dist/transformers-web.js dist/transformers-node-wasm.js dist/*-*.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist && bun build src/index.ts --outdir dist --target node --format esm --splitting --external @opencode-ai/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite && bun run build:v2 && tsc --emitDeclarationOnly",
38
+ "build:v2": "bun build src/v2/server.ts --outfile dist/v2/server.js --target node --format esm --external @opencode/plugin && bun test src/v2/server.test.ts",
38
39
  "build:tui": "bun scripts/build-tui.ts",
39
40
  "check:tui-compiled": "bun run build:tui && git diff --exit-code -- src/tui-compiled && test -z \"$(git status --porcelain -- src/tui-compiled)\"",
40
41
  "check:transformers-node-wasm": "bun scripts/verify-transformers-node-wasm.ts",
@@ -69,6 +70,10 @@
69
70
  "sharp": "^0.35.0"
70
71
  },
71
72
  "devDependencies": {
73
+ "@opencode/plugin": "2.0.3",
74
+ "@opencode/cli": "2.0.3",
75
+ "@opencode/client": "2.0.3",
76
+ "effect": "4.0.0-rc.112",
72
77
  "@ai-sdk/anthropic": "3.0.82",
73
78
  "@huggingface/transformers": "^4.1.0",
74
79
  "@ai-sdk/openai-compatible": "2.0.41",