@cortexkit/pi-magic-context 0.49.31 → 0.49.32

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 (30) hide show
  1. package/dist/auto-search-worker.js +4 -4
  2. package/dist/chunk-embedding-write-worker.js +4 -4
  3. package/dist/{compartment-chunk-embedding-pkk5beqp.js → compartment-chunk-embedding-8c85ebce.js} +1 -1
  4. package/dist/{embedding-backfill-v83xh6e8.js → embedding-backfill-rwfmyvze.js} +3 -3
  5. package/dist/{index-kmk3xpf9.js → index-0gymvr5j.js} +47 -7
  6. package/dist/{index-34e3mm36.js → index-87xkw8xm.js} +6 -4
  7. package/dist/{index-4nny4r40.js → index-9xd7qveg.js} +1 -1
  8. package/dist/{index-g026ztby.js → index-c474g0gj.js} +4 -18
  9. package/dist/{index-2nryd8ye.js → index-d0n9yjnc.js} +13 -11
  10. package/dist/{index-sr1ss4f8.js → index-d5q1q700.js} +1 -1
  11. package/dist/{index-v40sm8q6.js → index-drmr22ac.js} +3 -3
  12. package/dist/{index-bpd654bz.js → index-e59j3yq5.js} +414 -11
  13. package/dist/{index-0x1c054v.js → index-eqw9t2ty.js} +1 -1
  14. package/dist/index-nrzkqte4.js +18 -0
  15. package/dist/{index-0s14xaca.js → index-pb3ea2tq.js} +1 -1
  16. package/dist/{index-xvqcqg0r.js → index-r9y6tbbm.js} +6 -4
  17. package/dist/{index-yddeb86g.js → index-wpazxe9x.js} +64 -3
  18. package/dist/{index-0jykn0dw.js → index-xn5yh0pn.js} +65 -2
  19. package/dist/index.js +84 -314
  20. package/dist/{message-index-bounded-7aw556kv.js → message-index-bounded-n30vk21s.js} +4 -4
  21. package/dist/migration-worker.js +6 -5
  22. package/dist/{project-embedding-registry-wwbhm9rf.js → project-embedding-registry-acqb6be4.js} +2 -2
  23. package/dist/raw-ordinal-warmup-worker.js +3 -3
  24. package/dist/{read-session-chunk-xrymr0pp.js → read-session-chunk-ka6dhc77.js} +3 -3
  25. package/dist/{search-archive-5tmg1jyb.js → search-archive-msy2bczx.js} +4 -4
  26. package/dist/{search-dcdmpc62.js → search-qbxrnnjb.js} +9 -9
  27. package/dist/{storage-tags-9qaasrky.js → storage-tags-6409qq18.js} +2 -2
  28. package/dist/subagent-entry.js +12 -12
  29. package/dist/tag-snapshot-worker-pi.js +5 -5
  30. package/package.json +1 -1
@@ -9,11 +9,12 @@ import {
9
9
  } from "./index-my0dn413.js";
10
10
  import {
11
11
  cleanUserText2
12
- } from "./index-34e3mm36.js";
12
+ } from "./index-87xkw8xm.js";
13
13
  import {
14
14
  recordMessageFtsRowid2,
15
15
  recordIndexedMessageTime2,
16
- messageFtsOrdinalRangeIsMapped2
16
+ messageFtsOrdinalRangeIsMapped2,
17
+ deleteUnmappedMessageFtsRows2
17
18
  } from "./index-bvpar0bg.js";
18
19
  import {
19
20
  logSlowWriteTransaction
@@ -120,6 +121,14 @@ function skipStatement(db, sql) {
120
121
  return statement;
121
122
  }
122
123
  var messageIndexSkipKey = (sessionId, messageId) => `message_index_skip:${JSON.stringify([sessionId, messageId])}`;
124
+ function deleteMessageIndexSkips(db, sessionId, messageId) {
125
+ if (messageId !== undefined) {
126
+ skipStatement(db, "DELETE FROM schema_migrations_meta WHERE key=?").run(messageIndexSkipKey(sessionId, messageId));
127
+ } else {
128
+ const prefix = `message_index_skip:${JSON.stringify([sessionId]).slice(0, -1)},`;
129
+ skipStatement(db, "DELETE FROM schema_migrations_meta WHERE substr(key,1,length(?))=?").run(prefix, prefix);
130
+ }
131
+ }
123
132
  function normalizeIndexText(text) {
124
133
  return text.replace(/\s+/g, " ").trim();
125
134
  }
@@ -155,6 +164,17 @@ function getUpsertDirtyFloorStatement(db) {
155
164
  }
156
165
  return stmt;
157
166
  }
167
+ function getDeleteFtsStatement(db) {
168
+ let stmt = deleteFtsStatements.get(db);
169
+ if (!stmt) {
170
+ stmt = db.prepare(`DELETE FROM message_history_fts
171
+ WHERE rowid IN (
172
+ SELECT fts_rowid FROM message_fts_rowid_map WHERE session_id = ?
173
+ )`);
174
+ deleteFtsStatements.set(db, stmt);
175
+ }
176
+ return stmt;
177
+ }
158
178
  function getDeleteFtsRangeStatement(db) {
159
179
  let stmt = deleteFtsRangeStatements.get(db);
160
180
  if (!stmt) {
@@ -168,6 +188,14 @@ function getDeleteFtsRangeStatement(db) {
168
188
  }
169
189
  return stmt;
170
190
  }
191
+ function getDeleteIndexStatement(db) {
192
+ let stmt = deleteIndexStatements.get(db);
193
+ if (!stmt) {
194
+ stmt = db.prepare("DELETE FROM message_history_index WHERE session_id = ?");
195
+ deleteIndexStatements.set(db, stmt);
196
+ }
197
+ return stmt;
198
+ }
171
199
  function getCountIndexedMessageStatement(db) {
172
200
  let stmt = countIndexedMessageStatements.get(db);
173
201
  if (!stmt) {
@@ -207,6 +235,14 @@ function getUpsertMessageSourceStatement(db) {
207
235
  }
208
236
  return stmt;
209
237
  }
238
+ function getDeleteMessageSourceStatement(db) {
239
+ let stmt = deleteMessageSourceStatements.get(db);
240
+ if (!stmt) {
241
+ stmt = db.prepare("DELETE FROM message_history_source WHERE session_id = ?");
242
+ deleteMessageSourceStatements.set(db, stmt);
243
+ }
244
+ return stmt;
245
+ }
210
246
  function getDeleteMessageSourceRangeStatement(db) {
211
247
  let stmt = deleteMessageSourceRangeStatements.get(db);
212
248
  if (!stmt) {
@@ -231,6 +267,14 @@ function getDeleteMessageFtsStatement(db) {
231
267
  }
232
268
  return stmt;
233
269
  }
270
+ function getDeleteFtsMapStatement(db) {
271
+ let stmt = deleteFtsMapStatements.get(db);
272
+ if (!stmt) {
273
+ stmt = db.prepare("DELETE FROM message_fts_rowid_map WHERE session_id = ?");
274
+ deleteFtsMapStatements.set(db, stmt);
275
+ }
276
+ return stmt;
277
+ }
234
278
  function getDeleteFtsMapRangeStatement(db) {
235
279
  let stmt = deleteFtsMapRangeStatements.get(db);
236
280
  if (!stmt) {
@@ -345,6 +389,23 @@ function isMessageIndexReconciledThrough(db, sessionId, finalWatermark) {
345
389
  const dirtyFloor = getDirtyIndexFloor(db, sessionId);
346
390
  return getLastIndexedOrdinal(db, sessionId) >= finalWatermark && dirtyFloor === null;
347
391
  }
392
+ function clearIndexedMessagesInTransaction(db, sessionId) {
393
+ deleteMessageIndexSkips(db, sessionId);
394
+ getDeleteFtsStatement(db).run(sessionId);
395
+ deleteUnmappedMessageFtsRows2(db, [sessionId]);
396
+ getDeleteFtsMapStatement(db).run(sessionId);
397
+ getDeleteMessageSourceStatement(db).run(sessionId);
398
+ getDeleteIndexStatement(db).run(sessionId);
399
+ clearCompressionDepth(db, sessionId);
400
+ }
401
+ function clearIndexedMessages(db, sessionId) {
402
+ let transactionStartedAt = 0;
403
+ db.transaction(() => {
404
+ transactionStartedAt = performance.now();
405
+ clearIndexedMessagesInTransaction(db, sessionId);
406
+ }).immediate();
407
+ logSlowWriteTransaction("message_index_clear", transactionStartedAt);
408
+ }
348
409
  function getIndexableContent(role, parts) {
349
410
  if (role === "user") {
350
411
  if (!hasMeaningfulUserText2(parts)) {
@@ -485,4 +546,4 @@ function indexItemsAfterOrdinal(db, sessionId, items, finalWatermark, toSource)
485
546
  return inserted;
486
547
  }
487
548
 
488
- export { clearCompressionDepth, clearCompressionDepthRange, cleanSearchText, keywordRelevance, matchedSearchSnippet, MESSAGE_INDEX_MAX_FTS_BYTES, messageIndexSkipKey, getMessageIndexSourceIdentity, isMessageIndexSourceCurrent, getLastIndexedOrdinal, getIndexedMessageCorpusSize, markMessageIndexDirty, getMessageIndexReconciliationStartOrdinal, isMessageIndexReconciledThrough, getIndexableContent, indexSingleMessage, indexMessagesAfterOrdinal };
549
+ export { clearCompressionDepth, clearCompressionDepthRange, cleanSearchText, keywordRelevance, matchedSearchSnippet, MESSAGE_INDEX_MAX_FTS_BYTES, messageIndexSkipKey, getMessageIndexSourceIdentity, isMessageIndexSourceCurrent, getLastIndexedOrdinal, getIndexedMessageCorpusSize, markMessageIndexDirty, getMessageIndexReconciliationStartOrdinal, isMessageIndexReconciledThrough, clearIndexedMessages, getIndexableContent, indexSingleMessage, indexMessagesAfterOrdinal };
@@ -41,7 +41,7 @@ import {
41
41
  countSessionCompartmentEmbedCoverage2,
42
42
  countSessionCompartmentEmbedCoveragePolite2,
43
43
  countUnembeddedSessionCompartmentsPolite2
44
- } from "./index-kmk3xpf9.js";
44
+ } from "./index-0gymvr5j.js";
45
45
  import {
46
46
  DEFAULT_LOCAL_EMBEDDING_MODEL
47
47
  } from "./index-ccanzg8p.js";
@@ -74,6 +74,9 @@ import {
74
74
  getMemoryEmbedCoverage,
75
75
  invalidateProject2
76
76
  } from "./index-yhzhdp3m.js";
77
+ import {
78
+ isKnownAutocommit
79
+ } from "./index-nrzkqte4.js";
77
80
  import {
78
81
  logSlowWriteTransaction
79
82
  } from "./index-hqw0rt9k.js";
@@ -785,6 +788,51 @@ function createChunkEmbeddingWriter(db) {
785
788
  };
786
789
  }
787
790
 
791
+ // ../plugin/src/features/magic-context/chunk-scope-repair-revision.ts
792
+ var revisions = new WeakMap;
793
+ var KEY = "chunk_scope_repair_revision";
794
+ function readChunkScopeRepairRevision(db) {
795
+ if (!isKnownAutocommit(db))
796
+ return null;
797
+ let state = revisions.get(db);
798
+ if (!state) {
799
+ if (!db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'schema_migrations_meta'").get())
800
+ return null;
801
+ const bump = `INSERT INTO schema_migrations_meta(key, value) VALUES ('${KEY}', lower(hex(randomblob(16))))
802
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value;`;
803
+ db.exec(`CREATE TEMP TRIGGER IF NOT EXISTS mc_chunk_scope_binding_bi
804
+ BEFORE INSERT ON main.session_projects
805
+ WHEN NOT EXISTS (SELECT 1 FROM session_projects WHERE session_id = NEW.session_id
806
+ AND harness = NEW.harness AND project_path = NEW.project_path)
807
+ BEGIN ${bump} END;
808
+ CREATE TEMP TRIGGER IF NOT EXISTS mc_chunk_scope_binding_au
809
+ AFTER UPDATE ON main.session_projects
810
+ WHEN OLD.session_id IS NOT NEW.session_id OR OLD.harness IS NOT NEW.harness
811
+ OR OLD.project_path IS NOT NEW.project_path
812
+ BEGIN ${bump} END;
813
+ CREATE TEMP TRIGGER IF NOT EXISTS mc_chunk_scope_rows_bi
814
+ BEFORE INSERT ON main.compartment_chunk_embeddings BEGIN ${bump} END;
815
+ CREATE TEMP TRIGGER IF NOT EXISTS mc_chunk_scope_rows_au
816
+ AFTER UPDATE OF project_path, session_id, harness ON main.compartment_chunk_embeddings
817
+ WHEN NOT EXISTS (SELECT 1 FROM session_projects WHERE session_id = NEW.session_id
818
+ AND harness = NEW.harness AND project_path = NEW.project_path)
819
+ BEGIN ${bump} END;`);
820
+ const statement = db.prepare(`SELECT
821
+ (SELECT value FROM schema_migrations_meta WHERE key = '${KEY}') AS local,
822
+ (SELECT data_version FROM pragma_data_version) AS external,
823
+ (SELECT schema_version FROM pragma_schema_version) AS schemaVersion`);
824
+ state = { statement };
825
+ revisions.set(db, state);
826
+ }
827
+ const row = state.statement.get();
828
+ if (state.schemaVersion !== undefined && state.schemaVersion !== row.schemaVersion) {
829
+ revisions.delete(db);
830
+ return readChunkScopeRepairRevision(db);
831
+ }
832
+ state.schemaVersion = row.schemaVersion;
833
+ return JSON.stringify(row);
834
+ }
835
+
788
836
  // ../plugin/src/features/magic-context/git-commits/storage-git-commit-embeddings.ts
789
837
  var saveStatements = new WeakMap;
790
838
  var loadProjectStatements = new WeakMap;
@@ -1439,6 +1487,7 @@ function recordScopeActiveIdentity(db, projectIdentity, scope, modelId, now) {
1439
1487
  getUpsertActiveIdentityStatement(db).run(projectIdentity, scope, modelId, now);
1440
1488
  }
1441
1489
  var legacyDiscoveryComplete = new WeakMap;
1490
+ var chunkScopeRepairComplete = new WeakMap;
1442
1491
  function recordActiveEmbeddingIdentity(db, projectIdentity, currentProviderIdentity, currentChunkIdentity, features) {
1443
1492
  if (currentProviderIdentity === OFF_PROVIDER_IDENTITY) {
1444
1493
  return false;
@@ -1460,7 +1509,21 @@ function recordActiveEmbeddingIdentity(db, projectIdentity, currentProviderIdent
1460
1509
  model,
1461
1510
  rows: getBackfillActiveIdentityStatement(db, scope).all(projectIdentity, projectIdentity, scope)
1462
1511
  }));
1463
- const repairIds = findMisScopedCompartmentChunkEmbeddingIdsForProject(db, projectIdentity);
1512
+ const repairKey = JSON.stringify([projectIdentity, currentChunkIdentity]);
1513
+ const repairRevision = readChunkScopeRepairRevision(db);
1514
+ let completed = chunkScopeRepairComplete.get(db);
1515
+ if (!completed) {
1516
+ completed = new Map;
1517
+ chunkScopeRepairComplete.set(db, completed);
1518
+ }
1519
+ if (repairRevision === null)
1520
+ completed.clear();
1521
+ const repairIds = repairRevision !== null && completed.get(repairKey) === repairRevision ? [] : findMisScopedCompartmentChunkEmbeddingIdsForProject(db, projectIdentity);
1522
+ if (repairIds.length === 0 && repairRevision !== null) {
1523
+ if (completed.size >= 256)
1524
+ completed.delete(completed.keys().next().value);
1525
+ completed.set(repairKey, repairRevision);
1526
+ }
1464
1527
  if (legacy.every(({ rows }) => rows.length === 0) && scopes.every(([scope, model]) => active.get(projectIdentity, scope, model)) && repairIds.length === 0) {
1465
1528
  for (const { scope, model } of legacy)
1466
1529
  discovered.add(discoveryKey(scope, model));