@cortexkit/opencode-magic-context 0.41.1 → 0.41.2

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.
Files changed (97) hide show
  1. package/dist/{derive-budgets-bb7mrpzs.js → derive-budgets-9q2d3r93.js} +1 -1
  2. package/dist/features/magic-context/compartment-chunk-embedding.d.ts +4 -1
  3. package/dist/features/magic-context/compartment-chunk-embedding.d.ts.map +1 -1
  4. package/dist/features/magic-context/compartment-embedding.d.ts.map +1 -1
  5. package/dist/features/magic-context/dreamer/curate-memory-safety.d.ts +21 -0
  6. package/dist/features/magic-context/dreamer/curate-memory-safety.d.ts.map +1 -0
  7. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  8. package/dist/features/magic-context/dreamer/task-prompts.d.ts +1 -6
  9. package/dist/features/magic-context/dreamer/task-prompts.d.ts.map +1 -1
  10. package/dist/features/magic-context/memory/embedding-failure.d.ts +10 -2
  11. package/dist/features/magic-context/memory/embedding-failure.d.ts.map +1 -1
  12. package/dist/features/magic-context/memory/embedding-local.d.ts +7 -0
  13. package/dist/features/magic-context/memory/embedding-local.d.ts.map +1 -1
  14. package/dist/features/magic-context/memory/onnxruntime-node-wasm-shim.d.ts +3 -0
  15. package/dist/features/magic-context/memory/onnxruntime-node-wasm-shim.d.ts.map +1 -0
  16. package/dist/features/magic-context/memory/sharp-wasm-shim.d.ts +2 -0
  17. package/dist/features/magic-context/memory/sharp-wasm-shim.d.ts.map +1 -0
  18. package/dist/features/magic-context/memory/transformers-node-wasm-entry.d.ts +3 -0
  19. package/dist/features/magic-context/memory/transformers-node-wasm-entry.d.ts.map +1 -0
  20. package/dist/features/magic-context/message-fts-rowid-map.d.ts +28 -0
  21. package/dist/features/magic-context/message-fts-rowid-map.d.ts.map +1 -0
  22. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  23. package/dist/features/magic-context/migrations.d.ts.map +1 -1
  24. package/dist/features/magic-context/overflow-detection.d.ts +15 -2
  25. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  26. package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
  27. package/dist/features/magic-context/storage-db.d.ts +2 -1
  28. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  29. package/dist/features/magic-context/storage-meta-persisted.d.ts +19 -2
  30. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  31. package/dist/features/magic-context/storage-meta-session.d.ts +3 -2
  32. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  33. package/dist/features/magic-context/storage-meta.d.ts +2 -2
  34. package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
  35. package/dist/features/magic-context/storage-schema-helpers.d.ts.map +1 -1
  36. package/dist/features/magic-context/storage-session-tables.d.ts +9 -1
  37. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  38. package/dist/features/magic-context/storage-tags.d.ts +13 -0
  39. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  40. package/dist/features/magic-context/storage.d.ts +1 -1
  41. package/dist/features/magic-context/storage.d.ts.map +1 -1
  42. package/dist/hooks/magic-context/event-handler.d.ts +4 -1
  43. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  44. package/dist/hooks/magic-context/format-embed-failure.d.ts.map +1 -1
  45. package/dist/hooks/magic-context/hook-handlers.d.ts +3 -0
  46. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  47. package/dist/hooks/magic-context/hook.d.ts +4 -2
  48. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  49. package/dist/hooks/magic-context/live-session-state.d.ts +3 -1
  50. package/dist/hooks/magic-context/live-session-state.d.ts.map +1 -1
  51. package/dist/hooks/magic-context/rust-mode-transform.d.ts +9 -1
  52. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  53. package/dist/hooks/magic-context/sentinel.d.ts +13 -37
  54. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/strip-content.d.ts +12 -5
  56. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  57. package/dist/hooks/magic-context/tag-id-fallback.d.ts +3 -1
  58. package/dist/hooks/magic-context/tag-id-fallback.d.ts.map +1 -1
  59. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +25 -2
  61. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  62. package/dist/hooks/magic-context/transform.d.ts +1 -1
  63. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  64. package/dist/{index-2d4kf2ve.js → index-cvda5jb3.js} +6 -1
  65. package/dist/{index-dh0vfghk.js → index-j8r0ejb3.js} +923 -127
  66. package/dist/{index-z893kjyt.js → index-y1yr57fw.js} +79 -15
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +1503 -1059
  69. package/dist/plugin/dream-timer.d.ts +4 -0
  70. package/dist/plugin/dream-timer.d.ts.map +1 -1
  71. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -2
  72. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  73. package/dist/{recomp-orchestrator-w7xg48e3.js → recomp-orchestrator-m37p3fq6.js} +3 -3
  74. package/dist/shared/index.d.ts +1 -0
  75. package/dist/shared/index.d.ts.map +1 -1
  76. package/dist/shared/rpc-utils.d.ts +3 -1
  77. package/dist/shared/rpc-utils.d.ts.map +1 -1
  78. package/dist/shared/summarize-child-stderr.d.ts +2 -0
  79. package/dist/shared/summarize-child-stderr.d.ts.map +1 -0
  80. package/dist/shared/window-geometry.d.ts +2 -0
  81. package/dist/shared/window-geometry.d.ts.map +1 -1
  82. package/dist/{storage-meta-session-gr4zn7sq.js → storage-meta-session-dse3qv6s.js} +3 -1
  83. package/dist/tools/ctx-memory/tools.d.ts.map +1 -1
  84. package/dist/tools/ctx-memory/types.d.ts +2 -0
  85. package/dist/tools/ctx-memory/types.d.ts.map +1 -1
  86. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  87. package/dist/transformers-node-wasm.js +25676 -0
  88. package/package.json +4 -3
  89. package/src/config/index.test.ts +41 -0
  90. package/src/config/latch-permanence-guard.test.ts +5 -0
  91. package/src/shared/index.ts +1 -0
  92. package/src/shared/model-resolution.test.ts +17 -13
  93. package/src/shared/rpc-utils.test.ts +246 -5
  94. package/src/shared/rpc-utils.ts +340 -49
  95. package/src/shared/summarize-child-stderr.test.ts +55 -0
  96. package/src/shared/summarize-child-stderr.ts +33 -0
  97. package/src/shared/window-geometry.ts +9 -0
@@ -419,15 +419,38 @@ var SESSION_SCOPED_TABLES = [
419
419
  { table: "embedding_measurement_corpus" },
420
420
  { table: "pending_session_cleanup", harnessScoped: true },
421
421
  { table: "message_history_fts" },
422
+ { table: "message_fts_rowid_map" },
422
423
  { table: "message_history_source", harnessScoped: true },
423
424
  { table: "message_history_index", harnessScoped: true },
424
425
  { table: "lkg_slots" }
425
426
  ];
426
- function deleteSessionScopedRows(db, sessionIds, harness) {
427
+ function deleteSessionScopedRows(db, sessionIds, harness, options = {}) {
427
428
  if (sessionIds.length === 0)
428
- return;
429
- const placeholders = sessionIds.map(() => "?").join(", ");
429
+ return 0;
430
+ let deletableSessionIds = [...sessionIds];
431
+ if (options.rustModuleCleanupAcknowledged !== true) {
432
+ const placeholders2 = sessionIds.map(() => "?").join(", ");
433
+ const harnessPredicate = harness === undefined ? "" : " AND harness = ?";
434
+ const protectedRows = db.prepare(`SELECT session_id
435
+ FROM pending_session_cleanup
436
+ WHERE session_id IN (${placeholders2})
437
+ AND harness LIKE '%:rust'${harnessPredicate}`).all(...sessionIds, ...harness === undefined ? [] : [`${harness}:rust`]);
438
+ const protectedSessionIds = new Set(protectedRows.map((row) => row.session_id));
439
+ deletableSessionIds = sessionIds.filter((sessionId) => !protectedSessionIds.has(sessionId));
440
+ }
441
+ if (deletableSessionIds.length === 0)
442
+ return 0;
443
+ const placeholders = deletableSessionIds.map(() => "?").join(", ");
430
444
  for (const definition of SESSION_SCOPED_TABLES) {
445
+ if (definition.table === "message_history_fts") {
446
+ db.prepare(`DELETE FROM message_history_fts
447
+ WHERE rowid IN (
448
+ SELECT fts_rowid
449
+ FROM message_fts_rowid_map
450
+ WHERE session_id IN (${placeholders})
451
+ )`).run(...deletableSessionIds);
452
+ continue;
453
+ }
431
454
  const predicates = [`session_id IN (${placeholders})`];
432
455
  if (definition.extraPredicate)
433
456
  predicates.push(definition.extraPredicate);
@@ -436,10 +459,11 @@ function deleteSessionScopedRows(db, sessionIds, harness) {
436
459
  predicates.push("harness = ?");
437
460
  const statement = db.prepare(`DELETE FROM ${definition.table} WHERE ${predicates.join(" AND ")}`);
438
461
  if (bindHarness)
439
- statement.run(...sessionIds, harness);
462
+ statement.run(...deletableSessionIds, harness);
440
463
  else
441
- statement.run(...sessionIds);
464
+ statement.run(...deletableSessionIds);
442
465
  }
466
+ return deletableSessionIds.length;
443
467
  }
444
468
 
445
469
  // src/features/magic-context/storage-meta-session.ts
@@ -540,15 +564,28 @@ function advanceToolReclaimWatermark(db, sessionId, maxTagNumber) {
540
564
  db.prepare("UPDATE session_meta SET tool_reclaim_watermark = MAX(COALESCE(tool_reclaim_watermark, 0), ?) WHERE session_id = ?").run(maxTagNumber, sessionId);
541
565
  })();
542
566
  }
543
- function markSessionCleanupPending(db, sessionId) {
544
- db.prepare(`INSERT INTO pending_session_cleanup (session_id, harness, requested_at, last_attempt_at)
545
- VALUES (?, ?, ?, NULL)
546
- ON CONFLICT(session_id) DO UPDATE SET
547
- harness = excluded.harness,
548
- requested_at = MIN(pending_session_cleanup.requested_at, excluded.requested_at)`).run(sessionId, getHarness(), Date.now());
567
+ function rustCleanupHarness() {
568
+ return `${getHarness()}:rust`;
569
+ }
570
+ function markSessionCleanupPending(db, sessionId, rustModuleCleanupRequired = false) {
571
+ const row = db.prepare(`INSERT INTO pending_session_cleanup (session_id, harness, requested_at, last_attempt_at)
572
+ VALUES (?, ?, ?, NULL)
573
+ ON CONFLICT(session_id) DO UPDATE SET
574
+ harness = CASE
575
+ WHEN pending_session_cleanup.harness LIKE '%:rust'
576
+ THEN pending_session_cleanup.harness
577
+ ELSE excluded.harness
578
+ END,
579
+ requested_at = MIN(pending_session_cleanup.requested_at, excluded.requested_at)
580
+ RETURNING harness`).get(sessionId, rustModuleCleanupRequired ? rustCleanupHarness() : getHarness(), Date.now());
581
+ return row.harness.endsWith(":rust");
549
582
  }
550
583
  function retryPendingSessionCleanups(db, limit = 200) {
551
- const rows = db.prepare("SELECT session_id FROM pending_session_cleanup ORDER BY requested_at ASC, session_id ASC LIMIT ?").all(Math.max(1, Math.floor(limit)));
584
+ const rows = db.prepare(`SELECT session_id
585
+ FROM pending_session_cleanup
586
+ WHERE harness NOT LIKE '%:rust'
587
+ ORDER BY requested_at ASC, session_id ASC
588
+ LIMIT ?`).all(Math.max(1, Math.floor(limit)));
552
589
  const failedSessionIds = [];
553
590
  let cleared = 0;
554
591
  for (const row of rows) {
@@ -562,12 +599,39 @@ function retryPendingSessionCleanups(db, limit = 200) {
562
599
  }
563
600
  return { attempted: rows.length, cleared, failedSessionIds };
564
601
  }
565
- function clearSession(db, sessionId) {
602
+ async function retryPendingRustSessionCleanupsForProject(db, projectPath, deleteSession, limit = 200) {
603
+ const harness = getHarness();
604
+ const rows = db.prepare(`SELECT pending.session_id
605
+ FROM pending_session_cleanup pending
606
+ JOIN session_projects projects
607
+ ON projects.session_id = pending.session_id
608
+ AND projects.harness = ?
609
+ WHERE pending.harness = ?
610
+ AND projects.project_path = ?
611
+ ORDER BY pending.requested_at ASC, pending.session_id ASC
612
+ LIMIT ?`).all(harness, rustCleanupHarness(), projectPath, Math.max(1, Math.floor(limit)));
613
+ const failedSessionIds = [];
614
+ let cleared = 0;
615
+ for (const row of rows) {
616
+ try {
617
+ db.prepare("UPDATE pending_session_cleanup SET last_attempt_at = ? WHERE session_id = ?").run(Date.now(), row.session_id);
618
+ await deleteSession(row.session_id);
619
+ clearSession(db, row.session_id, true);
620
+ cleared += 1;
621
+ } catch {
622
+ failedSessionIds.push(row.session_id);
623
+ }
624
+ }
625
+ return { attempted: rows.length, cleared, failedSessionIds };
626
+ }
627
+ function clearSession(db, sessionId, rustModuleCleanupAcknowledged = false) {
566
628
  const transactionStartedAt = performance.now();
567
629
  db.transaction(() => {
568
- deleteSessionScopedRows(db, [sessionId]);
630
+ deleteSessionScopedRows(db, [sessionId], undefined, {
631
+ rustModuleCleanupAcknowledged
632
+ });
569
633
  })();
570
634
  logSlowWriteTransaction("clear-session", transactionStartedAt);
571
635
  }
572
636
 
573
- export { logSlowWriteTransaction, ensureSessionMetaRow, persistCachedM0, clearCachedM0M1, SESSION_SCOPED_TABLES, deleteSessionScopedRows, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, clearSession };
637
+ export { logSlowWriteTransaction, ensureSessionMetaRow, persistCachedM0, clearCachedM0M1, SESSION_SCOPED_TABLES, deleteSessionScopedRows, getOrCreateSessionMeta, updateSessionMeta, advanceToolReclaimWatermark, markSessionCleanupPending, retryPendingSessionCleanups, retryPendingRustSessionCleanupsForProject, clearSession };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAm0BvE,QAAA,MAAM,MAAM,EAAE,YAGb,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA40BvE,QAAA,MAAM,MAAM,EAAE,YAGb,CAAC;AAEF,eAAe,MAAM,CAAC"}