@anuma/sdk 9.1.7 → 9.1.9

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.
@@ -12352,7 +12352,7 @@ var require_Query = __commonJS({
12352
12352
  var _subscribeToCount = _interopRequireDefault(require_subscribeToCount());
12353
12353
  var _subscribeToQuery = _interopRequireDefault(require_subscribeToQuery());
12354
12354
  var _subscribeToQueryWithColumns = _interopRequireDefault(require_subscribeToQueryWithColumns());
12355
- var Q12 = _interopRequireWildcard(require_QueryDescription());
12355
+ var Q13 = _interopRequireWildcard(require_QueryDescription());
12356
12356
  var _helpers = require_helpers2();
12357
12357
  var _class;
12358
12358
  var _descriptor;
@@ -12384,8 +12384,8 @@ var require_Query = __commonJS({
12384
12384
  (0, _initializerDefineProperty2.default)(this, "_cachedCountSubscribable", _descriptor2, this);
12385
12385
  (0, _initializerDefineProperty2.default)(this, "_cachedCountThrottledSubscribable", _descriptor3, this);
12386
12386
  this.collection = collection;
12387
- this._rawDescription = Q12.buildQueryDescription(clauses);
12388
- this.description = Q12.queryWithoutDeleted(this._rawDescription);
12387
+ this._rawDescription = Q13.buildQueryDescription(clauses);
12388
+ this.description = Q13.queryWithoutDeleted(this._rawDescription);
12389
12389
  }
12390
12390
  var _proto = Query2.prototype;
12391
12391
  _proto.extend = function(...args) {
@@ -12404,12 +12404,12 @@ var require_Query = __commonJS({
12404
12404
  sql
12405
12405
  } = this._rawDescription;
12406
12406
  (0, _invariant.default)(!sql, "Cannot extend an unsafe SQL query");
12407
- return new Query2(collection, [Q12.experimentalJoinTables(joinTables)].concat((0, _toConsumableArray2.default)(nestedJoinTables.map(function({
12407
+ return new Query2(collection, [Q13.experimentalJoinTables(joinTables)].concat((0, _toConsumableArray2.default)(nestedJoinTables.map(function({
12408
12408
  from,
12409
12409
  to
12410
12410
  }) {
12411
- return Q12.experimentalNestedJoin(from, to);
12412
- })), (0, _toConsumableArray2.default)(where), (0, _toConsumableArray2.default)(sortBy), (0, _toConsumableArray2.default)(take ? [Q12.take(take)] : []), (0, _toConsumableArray2.default)(skip ? [Q12.skip(skip)] : []), (0, _toConsumableArray2.default)(lokiTransform ? [Q12.unsafeLokiTransform(lokiTransform)] : []), (0, _toConsumableArray2.default)(clauses)));
12411
+ return Q13.experimentalNestedJoin(from, to);
12412
+ })), (0, _toConsumableArray2.default)(where), (0, _toConsumableArray2.default)(sortBy), (0, _toConsumableArray2.default)(take ? [Q13.take(take)] : []), (0, _toConsumableArray2.default)(skip ? [Q13.skip(skip)] : []), (0, _toConsumableArray2.default)(lokiTransform ? [Q13.unsafeLokiTransform(lokiTransform)] : []), (0, _toConsumableArray2.default)(clauses)));
12413
12413
  };
12414
12414
  _proto.pipe = function(transform) {
12415
12415
  return transform(this);
@@ -13851,7 +13851,7 @@ var require_helpers5 = __commonJS({
13851
13851
  exports2.createTimestampsFor = void 0;
13852
13852
  exports2.fetchDescendants = fetchDescendants;
13853
13853
  var _fp = require_fp();
13854
- var Q12 = _interopRequireWildcard(require_QueryDescription());
13854
+ var Q13 = _interopRequireWildcard(require_QueryDescription());
13855
13855
  function _getRequireWildcardCache(e) {
13856
13856
  if ("function" != typeof WeakMap) return null;
13857
13857
  var r = /* @__PURE__ */ new WeakMap(), t = /* @__PURE__ */ new WeakMap();
@@ -13889,7 +13889,7 @@ var require_helpers5 = __commonJS({
13889
13889
  });
13890
13890
  var childrenQueries = hasManyAssociations.map(function([key, value]) {
13891
13891
  var childCollection = model.collections.get(key);
13892
- return childCollection.query(Q12.where(value.foreignKey, model.id));
13892
+ return childCollection.query(Q13.where(value.foreignKey, model.id));
13893
13893
  });
13894
13894
  return childrenQueries;
13895
13895
  }
@@ -14270,8 +14270,8 @@ var require_watermelondb = __commonJS({
14270
14270
  var _interopRequireDefault = require_interopRequireDefault();
14271
14271
  exports2.__esModule = true;
14272
14272
  exports2.tableSchema = exports2.tableName = exports2.localStorageKey = exports2.columnName = exports2.associations = exports2.appSchema = exports2.Relation = exports2.Query = exports2.Q = exports2.Model = exports2.Database = exports2.Collection = void 0;
14273
- var Q12 = _interopRequireWildcard(require_QueryDescription());
14274
- exports2.Q = Q12;
14273
+ var Q13 = _interopRequireWildcard(require_QueryDescription());
14274
+ exports2.Q = Q13;
14275
14275
  var _Collection = _interopRequireDefault(require_Collection());
14276
14276
  exports2.Collection = _Collection.default;
14277
14277
  var _Database = _interopRequireDefault(require_Database());
@@ -15078,7 +15078,7 @@ var require_children = __commonJS({
15078
15078
  var _makeDecorator = _interopRequireDefault(require_makeDecorator());
15079
15079
  var _logError = _interopRequireDefault(require_logError());
15080
15080
  var _invariant = _interopRequireDefault(require_invariant());
15081
- var Q12 = _interopRequireWildcard(require_QueryDescription());
15081
+ var Q13 = _interopRequireWildcard(require_QueryDescription());
15082
15082
  function _getRequireWildcardCache(e) {
15083
15083
  if ("function" != typeof WeakMap) return null;
15084
15084
  var r = /* @__PURE__ */ new WeakMap(), t = /* @__PURE__ */ new WeakMap();
@@ -15112,7 +15112,7 @@ var require_children = __commonJS({
15112
15112
  var childCollection = model.collections.get(childTable);
15113
15113
  var association = model.constructor.associations[childTable];
15114
15114
  (0, _invariant.default)(association && "has_many" === association.type, "@children decorator used for a table that's not has_many");
15115
- var query = childCollection.query(Q12.where(association.foreignKey, model.id));
15115
+ var query = childCollection.query(Q13.where(association.foreignKey, model.id));
15116
15116
  that._childrenQueryCache[childTable] = query;
15117
15117
  return query;
15118
15118
  },
@@ -28971,10 +28971,10 @@ async function getVaultRankingProjectionsOp(ctx, options) {
28971
28971
  function baseVaultSql(ctx, options) {
28972
28972
  const clauses = [
28973
28973
  `"_status" is not 'deleted'`,
28974
- '"is_deleted" = 0',
28974
+ ...options?.includeDeleted ? [] : ['"is_deleted" = 0'],
28975
28975
  ...options?.includeArchived ? [] : ['"archived_at" is null'],
28976
28976
  ...options?.includeQuarantined ? [] : [`"trust_tier" is not 'quarantined'`],
28977
- '"superseded_by" is null'
28977
+ ...options?.includeSuperseded ? [] : ['"superseded_by" is null']
28978
28978
  ];
28979
28979
  const args = [];
28980
28980
  if (ctx.userId !== void 0) {
@@ -28983,6 +28983,38 @@ function baseVaultSql(ctx, options) {
28983
28983
  }
28984
28984
  return { sql: clauses.join(" and "), args };
28985
28985
  }
28986
+ async function getVaultProfileMetadataOp(ctx, options) {
28987
+ const mapRaw = (raw) => ({
28988
+ uniqueId: raw.id,
28989
+ scope: raw.scope ?? "",
28990
+ createdAt: new Date(raw.created_at),
28991
+ updatedAt: new Date(raw.updated_at),
28992
+ lastObservedAt: raw.last_observed_at ?? null,
28993
+ supersededAt: raw.superseded_at ?? null,
28994
+ supersededBy: raw.superseded_by ?? null,
28995
+ isDeleted: raw.is_deleted === true || raw.is_deleted === 1,
28996
+ proofCount: raw.proof_count ?? null
28997
+ });
28998
+ const listOptions = { ...options, includeDeleted: true, includeSuperseded: true };
28999
+ let rows;
29000
+ try {
29001
+ const base = baseVaultSql(ctx, listOptions);
29002
+ const clauses = [base.sql, `"_status" != 'deleted'`];
29003
+ const args = [...base.args];
29004
+ if (options?.scopes?.length) {
29005
+ clauses.push(`"scope" in (${options.scopes.map(() => "?").join(",")})`);
29006
+ args.push(...options.scopes);
29007
+ }
29008
+ const sql = `select "id", "scope", "created_at", "updated_at", "last_observed_at", "superseded_at", "superseded_by", "is_deleted", "proof_count" from "memory_vault" where ${clauses.join(" and ")}`;
29009
+ rows = await ctx.vaultMemoryCollection.query(import_watermelondb19.Q.unsafeSqlQuery(sql, args)).unsafeFetchRaw();
29010
+ } catch (err) {
29011
+ getLogger().debug(
29012
+ "memoryVault: getVaultProfileMetadataOp uses the query fallback: " + (err instanceof Error ? err.message : String(err))
29013
+ );
29014
+ rows = await ctx.vaultMemoryCollection.query(...vaultListConditions(ctx, listOptions)).unsafeFetchRaw();
29015
+ }
29016
+ return rows.map(mapRaw);
29017
+ }
28986
29018
  async function getVaultCandidateKeysOp(ctx, options) {
28987
29019
  const mapRaw = (raw) => ({
28988
29020
  uniqueId: raw.id,
@@ -29866,6 +29898,9 @@ async function findQuarantinedDuplicateOp(ctx, content, sourceIds, where) {
29866
29898
  return null;
29867
29899
  }
29868
29900
 
29901
+ // src/lib/db/memoryVault/photoIngest.ts
29902
+ var import_watermelondb20 = __toESM(require_watermelondb());
29903
+
29869
29904
  // src/lib/memory/decay.ts
29870
29905
  init_logger();
29871
29906
  var DAY_MS = 24 * 60 * 60 * 1e3;
@@ -29939,6 +29974,16 @@ function classifyDecay(m, now, policy) {
29939
29974
 
29940
29975
  // src/lib/db/memoryVault/photoIngest.ts
29941
29976
  var PHOTO_MEMORY_ID_PREFIX = "photo:";
29977
+ var PHOTO_ID_QUERY_CHUNK_SIZE = 500;
29978
+ async function getExistingPhotoMemoryIds(ctx, rows) {
29979
+ const existing = /* @__PURE__ */ new Set();
29980
+ for (let i = 0; i < rows.length; i += PHOTO_ID_QUERY_CHUNK_SIZE) {
29981
+ const ids = rows.slice(i, i + PHOTO_ID_QUERY_CHUNK_SIZE).map((row) => row.memoryId);
29982
+ const found = await ctx.vaultMemoryCollection.query(import_watermelondb20.Q.where("id", import_watermelondb20.Q.oneOf(ids))).fetchIds();
29983
+ for (const id of found) existing.add(id);
29984
+ }
29985
+ return existing;
29986
+ }
29942
29987
  async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
29943
29988
  const byId = /* @__PURE__ */ new Map();
29944
29989
  for (const r of rows) {
@@ -29947,7 +29992,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
29947
29992
  }
29948
29993
  const photoRows = [...byId.values()];
29949
29994
  if (photoRows.length === 0) return { inserted: 0, skipped: 0 };
29950
- const known = await ctx.vaultMemoryCollection.query().fetchIds().then((ids) => new Set(ids));
29995
+ const known = await getExistingPhotoMemoryIds(ctx, photoRows);
29951
29996
  const candidates = photoRows.filter((r) => !known.has(r.memoryId));
29952
29997
  if (candidates.length === 0) return { inserted: 0, skipped: photoRows.length };
29953
29998
  const fresh = candidates;
@@ -29967,7 +30012,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
29967
30012
  const now = Date.now();
29968
30013
  let inserted = 0;
29969
30014
  await ctx.database.write(async () => {
29970
- const present = new Set(await ctx.vaultMemoryCollection.query().fetchIds());
30015
+ const present = await getExistingPhotoMemoryIds(ctx, fresh);
29971
30016
  const writable = fresh.map((row, i) => ({ row, content: contents[i] })).filter(({ row }) => !present.has(row.memoryId));
29972
30017
  inserted = writable.length;
29973
30018
  if (writable.length === 0) return;
@@ -30001,7 +30046,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
30001
30046
  }
30002
30047
 
30003
30048
  // src/lib/db/project/operations.ts
30004
- var import_watermelondb20 = __toESM(require_watermelondb());
30049
+ var import_watermelondb21 = __toESM(require_watermelondb());
30005
30050
 
30006
30051
  // src/lib/db/project/types.ts
30007
30052
  function generateProjectId() {
@@ -30032,15 +30077,15 @@ async function createProjectOp(ctx, opts, defaultName = "New Project") {
30032
30077
  return projectToStored(created);
30033
30078
  }
30034
30079
  async function getProjectOp(ctx, id) {
30035
- const results = await ctx.projectsCollection.query(import_watermelondb20.Q.where("project_id", id), import_watermelondb20.Q.where("is_deleted", false)).fetch();
30080
+ const results = await ctx.projectsCollection.query(import_watermelondb21.Q.where("project_id", id), import_watermelondb21.Q.where("is_deleted", false)).fetch();
30036
30081
  return results.length > 0 ? projectToStored(results[0]) : null;
30037
30082
  }
30038
30083
  async function getProjectsOp(ctx) {
30039
- const results = await ctx.projectsCollection.query(import_watermelondb20.Q.where("is_deleted", false), import_watermelondb20.Q.sortBy("created_at", import_watermelondb20.Q.desc)).fetch();
30084
+ const results = await ctx.projectsCollection.query(import_watermelondb21.Q.where("is_deleted", false), import_watermelondb21.Q.sortBy("created_at", import_watermelondb21.Q.desc)).fetch();
30040
30085
  return results.map(projectToStored);
30041
30086
  }
30042
30087
  async function updateProjectNameOp(ctx, id, name) {
30043
- const results = await ctx.projectsCollection.query(import_watermelondb20.Q.where("project_id", id), import_watermelondb20.Q.where("is_deleted", false)).fetch();
30088
+ const results = await ctx.projectsCollection.query(import_watermelondb21.Q.where("project_id", id), import_watermelondb21.Q.where("is_deleted", false)).fetch();
30044
30089
  if (results.length > 0) {
30045
30090
  await ctx.database.write(async () => {
30046
30091
  await results[0].update((proj) => {
@@ -30052,7 +30097,7 @@ async function updateProjectNameOp(ctx, id, name) {
30052
30097
  return false;
30053
30098
  }
30054
30099
  async function updateProjectOp(ctx, id, opts) {
30055
- const results = await ctx.projectsCollection.query(import_watermelondb20.Q.where("project_id", id), import_watermelondb20.Q.where("is_deleted", false)).fetch();
30100
+ const results = await ctx.projectsCollection.query(import_watermelondb21.Q.where("project_id", id), import_watermelondb21.Q.where("is_deleted", false)).fetch();
30056
30101
  if (results.length > 0) {
30057
30102
  await ctx.database.write(async () => {
30058
30103
  await results[0].update((proj) => {
@@ -30064,7 +30109,7 @@ async function updateProjectOp(ctx, id, opts) {
30064
30109
  return false;
30065
30110
  }
30066
30111
  async function deleteProjectOp(ctx, id) {
30067
- const results = await ctx.projectsCollection.query(import_watermelondb20.Q.where("project_id", id), import_watermelondb20.Q.where("is_deleted", false)).fetch();
30112
+ const results = await ctx.projectsCollection.query(import_watermelondb21.Q.where("project_id", id), import_watermelondb21.Q.where("is_deleted", false)).fetch();
30068
30113
  if (results.length > 0) {
30069
30114
  await ctx.database.write(async () => {
30070
30115
  await results[0].update((proj) => {
@@ -30077,14 +30122,14 @@ async function deleteProjectOp(ctx, id) {
30077
30122
  }
30078
30123
  async function getProjectConversationsOp(ctx, projectId) {
30079
30124
  const results = await ctx.conversationsCollection.query(
30080
- import_watermelondb20.Q.where("project_id", projectId),
30081
- import_watermelondb20.Q.where("is_deleted", false),
30082
- import_watermelondb20.Q.sortBy("created_at", import_watermelondb20.Q.desc)
30125
+ import_watermelondb21.Q.where("project_id", projectId),
30126
+ import_watermelondb21.Q.where("is_deleted", false),
30127
+ import_watermelondb21.Q.sortBy("created_at", import_watermelondb21.Q.desc)
30083
30128
  ).fetch();
30084
30129
  return results.map(conversationToStoredRaw);
30085
30130
  }
30086
30131
  async function getProjectConversationCountOp(ctx, projectId) {
30087
- return await ctx.conversationsCollection.query(import_watermelondb20.Q.where("project_id", projectId), import_watermelondb20.Q.where("is_deleted", false)).fetchCount();
30132
+ return await ctx.conversationsCollection.query(import_watermelondb21.Q.where("project_id", projectId), import_watermelondb21.Q.where("is_deleted", false)).fetchCount();
30088
30133
  }
30089
30134
 
30090
30135
  // src/lib/db/queue/manager.ts
@@ -30428,7 +30473,7 @@ var WalletPoller = class {
30428
30473
  };
30429
30474
 
30430
30475
  // src/lib/db/settings/operations.ts
30431
- var import_watermelondb21 = __toESM(require_watermelondb());
30476
+ var import_watermelondb22 = __toESM(require_watermelondb());
30432
30477
  function modelPreferenceToStored(preference) {
30433
30478
  return {
30434
30479
  uniqueId: preference.id,
@@ -30437,12 +30482,12 @@ function modelPreferenceToStored(preference) {
30437
30482
  };
30438
30483
  }
30439
30484
  async function getModelPreferenceOp(ctx, walletAddress) {
30440
- const results = await ctx.modelPreferencesCollection.query(import_watermelondb21.Q.where("wallet_address", walletAddress)).fetch();
30485
+ const results = await ctx.modelPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30441
30486
  return results.length > 0 ? modelPreferenceToStored(results[0]) : null;
30442
30487
  }
30443
30488
  async function setModelPreferenceOp(ctx, walletAddress, models) {
30444
30489
  const result = await ctx.database.write(async () => {
30445
- const results = await ctx.modelPreferencesCollection.query(import_watermelondb21.Q.where("wallet_address", walletAddress)).fetch();
30490
+ const results = await ctx.modelPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30446
30491
  if (results.length > 0) {
30447
30492
  const preference = results[0];
30448
30493
  await preference.update((pref) => {
@@ -30460,7 +30505,7 @@ async function setModelPreferenceOp(ctx, walletAddress, models) {
30460
30505
  return modelPreferenceToStored(result);
30461
30506
  }
30462
30507
  async function deleteModelPreferenceOp(ctx, walletAddress) {
30463
- const results = await ctx.modelPreferencesCollection.query(import_watermelondb21.Q.where("wallet_address", walletAddress)).fetch();
30508
+ const results = await ctx.modelPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30464
30509
  if (results.length === 0) return false;
30465
30510
  await ctx.database.write(async () => {
30466
30511
  await results[0].destroyPermanently();
@@ -30469,7 +30514,7 @@ async function deleteModelPreferenceOp(ctx, walletAddress) {
30469
30514
  }
30470
30515
 
30471
30516
  // src/lib/db/userPreferences/operations.ts
30472
- var import_watermelondb22 = __toESM(require_watermelondb());
30517
+ var import_watermelondb23 = __toESM(require_watermelondb());
30473
30518
  function userPreferenceToStored(preference) {
30474
30519
  return {
30475
30520
  uniqueId: preference.id,
@@ -30485,7 +30530,7 @@ function userPreferenceToStored(preference) {
30485
30530
  };
30486
30531
  }
30487
30532
  async function getUserPreferenceOp(ctx, walletAddress) {
30488
- const results = await ctx.userPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30533
+ const results = await ctx.userPreferencesCollection.query(import_watermelondb23.Q.where("wallet_address", walletAddress)).fetch();
30489
30534
  return results.length > 0 ? userPreferenceToStored(results[0]) : null;
30490
30535
  }
30491
30536
  async function createUserPreferenceOp(ctx, opts) {
@@ -30506,7 +30551,7 @@ async function createUserPreferenceOp(ctx, opts) {
30506
30551
  return userPreferenceToStored(created);
30507
30552
  }
30508
30553
  async function updateUserPreferenceOp(ctx, walletAddress, opts) {
30509
- const results = await ctx.userPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30554
+ const results = await ctx.userPreferencesCollection.query(import_watermelondb23.Q.where("wallet_address", walletAddress)).fetch();
30510
30555
  if (results.length === 0) return null;
30511
30556
  const preference = results[0];
30512
30557
  await ctx.database.write(async () => {
@@ -30537,7 +30582,7 @@ async function updateUserPreferenceOp(ctx, walletAddress, opts) {
30537
30582
  async function setUserPreferenceOp(ctx, walletAddress, opts) {
30538
30583
  const now = Date.now();
30539
30584
  const result = await ctx.database.write(async () => {
30540
- const results = await ctx.userPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30585
+ const results = await ctx.userPreferencesCollection.query(import_watermelondb23.Q.where("wallet_address", walletAddress)).fetch();
30541
30586
  if (results.length > 0) {
30542
30587
  const preference = results[0];
30543
30588
  await preference.update((pref) => {
@@ -30589,7 +30634,7 @@ async function updateModelsOp(ctx, walletAddress, models) {
30589
30634
  return updateUserPreferenceOp(ctx, walletAddress, { models });
30590
30635
  }
30591
30636
  async function deleteUserPreferenceOp(ctx, walletAddress) {
30592
- const results = await ctx.userPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30637
+ const results = await ctx.userPreferencesCollection.query(import_watermelondb23.Q.where("wallet_address", walletAddress)).fetch();
30593
30638
  if (results.length === 0) return false;
30594
30639
  await ctx.database.write(async () => {
30595
30640
  await results[0].destroyPermanently();
@@ -30604,9 +30649,9 @@ async function migrateFromModelPreferencesOp(ctx, walletAddress) {
30604
30649
  if (existing) {
30605
30650
  return existing;
30606
30651
  }
30607
- const modelResults = await ctx.modelPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", walletAddress)).fetch();
30652
+ const modelResults = await ctx.modelPreferencesCollection.query(import_watermelondb23.Q.where("wallet_address", walletAddress)).fetch();
30608
30653
  const personalityKey = `${walletAddress}_personality_settings`;
30609
- const personalityResults = await ctx.modelPreferencesCollection.query(import_watermelondb22.Q.where("wallet_address", personalityKey)).fetch();
30654
+ const personalityResults = await ctx.modelPreferencesCollection.query(import_watermelondb23.Q.where("wallet_address", personalityKey)).fetch();
30610
30655
  if (modelResults.length === 0 && personalityResults.length === 0) {
30611
30656
  return null;
30612
30657
  }
@@ -30686,7 +30731,7 @@ var SLIDER_CONFIG = [
30686
30731
  ];
30687
30732
 
30688
30733
  // src/lib/memory/autoExtract.ts
30689
- var import_watermelondb23 = __toESM(require_watermelondb());
30734
+ var import_watermelondb24 = __toESM(require_watermelondb());
30690
30735
  init_logger();
30691
30736
  init_redactor();
30692
30737
 
@@ -33499,7 +33544,7 @@ async function assertMergeTargetGoneOrThrow(ctx, targetId, expectedContent) {
33499
33544
  // src/lib/memory/autoExtract.ts
33500
33545
  async function isMemoryTopicsUserManaged(ctx, memoryId) {
33501
33546
  try {
33502
- const rows = await ctx.database.get(VaultMemory.table).query(import_watermelondb23.Q.where("id", memoryId)).fetch();
33547
+ const rows = await ctx.database.get(VaultMemory.table).query(import_watermelondb24.Q.where("id", memoryId)).fetch();
33503
33548
  return rows[0]?.topicsUserManaged === true;
33504
33549
  } catch {
33505
33550
  return true;
@@ -36098,7 +36143,7 @@ function parseAnswer(body, base, parseSchema) {
36098
36143
  }
36099
36144
 
36100
36145
  // src/lib/memory/store/local.ts
36101
- var import_watermelondb24 = __toESM(require_watermelondb());
36146
+ var import_watermelondb25 = __toESM(require_watermelondb());
36102
36147
  init_logger();
36103
36148
 
36104
36149
  // src/lib/memory/topicExtract.ts
@@ -36384,8 +36429,8 @@ function createLocalMemoryStore(options) {
36384
36429
  writeOptions?.signal?.throwIfAborted();
36385
36430
  };
36386
36431
  const vaultCache = options.vaultCache ?? createVaultEmbeddingCache();
36387
- const ownedBy = userId !== void 0 ? [import_watermelondb24.Q.where("user_id", userId)] : [];
36388
- const linksOwnedBy = userId === void 0 ? [] : options.allowUnscopedRows ? [import_watermelondb24.Q.or(import_watermelondb24.Q.where("user_id", userId), import_watermelondb24.Q.where("user_id", null))] : [import_watermelondb24.Q.where("user_id", userId)];
36432
+ const ownedBy = userId !== void 0 ? [import_watermelondb25.Q.where("user_id", userId)] : [];
36433
+ const linksOwnedBy = userId === void 0 ? [] : options.allowUnscopedRows ? [import_watermelondb25.Q.or(import_watermelondb25.Q.where("user_id", userId), import_watermelondb25.Q.where("user_id", null))] : [import_watermelondb25.Q.where("user_id", userId)];
36389
36434
  const watchedColumns = [
36390
36435
  "content",
36391
36436
  "scope",
@@ -36431,7 +36476,7 @@ function createLocalMemoryStore(options) {
36431
36476
  list: (listOptions) => getAllVaultMemoriesOp(vaultCtx, listOptions),
36432
36477
  get: (id) => getVaultMemoryOp(vaultCtx, id),
36433
36478
  listArchived: async () => {
36434
- const ids = await vaultCtx.vaultMemoryCollection.query(import_watermelondb24.Q.where("is_deleted", false), import_watermelondb24.Q.where("archived_at", import_watermelondb24.Q.notEq(null)), ...ownedBy).fetchIds();
36479
+ const ids = await vaultCtx.vaultMemoryCollection.query(import_watermelondb25.Q.where("is_deleted", false), import_watermelondb25.Q.where("archived_at", import_watermelondb25.Q.notEq(null)), ...ownedBy).fetchIds();
36435
36480
  if (ids.length === 0) return [];
36436
36481
  const rows = await getAllVaultMemoriesOp(vaultCtx, { memoryIds: ids, includeArchived: true });
36437
36482
  return rows.sort((a, b) => (b.archivedAt ?? 0) - (a.archivedAt ?? 0));
@@ -36447,7 +36492,7 @@ function createLocalMemoryStore(options) {
36447
36492
  set.add(String(link.memory_id));
36448
36493
  members.set(entityId, set);
36449
36494
  }
36450
- const entities = userId === void 0 ? await entityCtx.entityCollection.query().unsafeFetchRaw() : members.size ? await entityCtx.entityCollection.query(import_watermelondb24.Q.where("id", import_watermelondb24.Q.oneOf([...members.keys()]))).unsafeFetchRaw() : [];
36495
+ const entities = userId === void 0 ? await entityCtx.entityCollection.query().unsafeFetchRaw() : members.size ? await entityCtx.entityCollection.query(import_watermelondb25.Q.where("id", import_watermelondb25.Q.oneOf([...members.keys()]))).unsafeFetchRaw() : [];
36451
36496
  const byName = /* @__PURE__ */ new Map();
36452
36497
  for (const entity of entities) {
36453
36498
  const name = String(entity.canonical_name);
@@ -36497,7 +36542,7 @@ function createLocalMemoryStore(options) {
36497
36542
  setTopics: (memoryId, topics) => setMemoryEntitiesOp(vaultCtx, memoryId, topics),
36498
36543
  addTopics: (memoryId, topics, writeOptions) => database.write(async (writer) => {
36499
36544
  await assertWrite(writeOptions);
36500
- const owned = await vaultCtx.vaultMemoryCollection.query(import_watermelondb24.Q.where("id", memoryId), import_watermelondb24.Q.where("is_deleted", false), ...ownedBy).fetchCount();
36545
+ const owned = await vaultCtx.vaultMemoryCollection.query(import_watermelondb25.Q.where("id", memoryId), import_watermelondb25.Q.where("is_deleted", false), ...ownedBy).fetchCount();
36501
36546
  return owned > 0 ? writer.callWriter(
36502
36547
  () => linkMemoryEntitiesOp(
36503
36548
  {
@@ -36569,7 +36614,7 @@ function createLocalMemoryStore(options) {
36569
36614
  else onChange();
36570
36615
  };
36571
36616
  };
36572
- const memories = subscribeOptions?.includeDeleted ? vaultCtx.vaultMemoryCollection.query(...ownedBy).observe() : vaultCtx.vaultMemoryCollection.query(import_watermelondb24.Q.where("is_deleted", false), ...ownedBy).observeWithColumns(
36617
+ const memories = subscribeOptions?.includeDeleted ? vaultCtx.vaultMemoryCollection.query(...ownedBy).observe() : vaultCtx.vaultMemoryCollection.query(import_watermelondb25.Q.where("is_deleted", false), ...ownedBy).observeWithColumns(
36573
36618
  subscribeOptions?.embeddings ? [...watchedColumns, "embedding", "embedding_model"] : watchedColumns
36574
36619
  );
36575
36620
  const subscriptions = [memories.subscribe(afterFirst())];
@@ -36717,7 +36762,7 @@ async function synthesizeProfile(ctx, options = {}) {
36717
36762
  };
36718
36763
  const previous = options.previous && options.previous.version === PROFILE_DOC_VERSION && configMatches(options.previous.config, config) ? options.previous : void 0;
36719
36764
  const listOptions = { scopes, includeDeleted: true, includeSuperseded: true };
36720
- const [memories, projections] = store ? await Promise.all([store.list(listOptions), store.listProjections(listOptions)]) : [await getAllVaultMemoriesOp(vaultCtx, listOptions), []];
36765
+ const [memories, projections] = store ? await Promise.all([store.list(listOptions), store.listProjections(listOptions)]) : [await getVaultProfileMetadataOp(vaultCtx, { scopes }), []];
36721
36766
  const watermark = computeVaultWatermark(memories);
36722
36767
  const observationTrends = summarizeObservationTrends(
36723
36768
  memories.filter((m) => !m.isDeleted && m.supersededBy === null).map((m) => ({
@@ -36753,7 +36798,8 @@ async function synthesizeProfile(ctx, options = {}) {
36753
36798
  previous,
36754
36799
  watermark,
36755
36800
  options.reviewedMemoryIds,
36756
- previousUnreadable
36801
+ previousUnreadable,
36802
+ store ? void 0 : (ids) => getVaultEmbeddingsByIdsOp(vaultCtx, ids)
36757
36803
  );
36758
36804
  const memoriesById = new Map(memories.map((memory) => [memory.uniqueId, memory]));
36759
36805
  const fallbackPriors = /* @__PURE__ */ new Map();
@@ -36840,7 +36886,7 @@ function computeVaultWatermark(memories) {
36840
36886
  }
36841
36887
  return max;
36842
36888
  }
36843
- async function computeStaleFacetKeys(ctx, memories, facets, previous, watermark, reviewedMemoryIds, previouslyUnreadable) {
36889
+ async function computeStaleFacetKeys(ctx, memories, facets, previous, watermark, reviewedMemoryIds, previouslyUnreadable, loadEmbeddings) {
36844
36890
  const allKeys = new Set(facets.map((f) => f.key));
36845
36891
  if (previous && watermark < previous.vaultWatermark) return allKeys;
36846
36892
  if (!previous) return allKeys;
@@ -36873,7 +36919,9 @@ async function computeStaleFacetKeys(ctx, memories, facets, previous, watermark,
36873
36919
  toAttribute = toAttribute.filter((m) => allowed.has(m.uniqueId));
36874
36920
  }
36875
36921
  if (toAttribute.length > 0) {
36876
- const attributed = await attributeFacts(ctx, toAttribute, facets);
36922
+ const candidates = loadEmbeddings ? await loadEmbeddings(toAttribute.map((m) => m.uniqueId)) : toAttribute;
36923
+ if (candidates.length !== toAttribute.length) return allKeys;
36924
+ const attributed = await attributeFacts(ctx, candidates, facets);
36877
36925
  if (attributed === null) return allKeys;
36878
36926
  for (const k of attributed) stale.add(k);
36879
36927
  }
@@ -37297,17 +37345,17 @@ async function assembleMemoryContext(options) {
37297
37345
  }
37298
37346
 
37299
37347
  // src/lib/memory/durableExtraction.ts
37300
- var import_watermelondb25 = __toESM(require_watermelondb());
37348
+ var import_watermelondb26 = __toESM(require_watermelondb());
37301
37349
  async function messagePositions(storage, ids) {
37302
37350
  try {
37303
37351
  return await storage.messagesCollection.query(
37304
- import_watermelondb25.Q.unsafeSqlQuery(
37352
+ import_watermelondb26.Q.unsafeSqlQuery(
37305
37353
  `select "id", "conversation_id", "message_id" from "history" where "_status" is not 'deleted' and "id" in (${ids.map(() => "?").join(",")})`,
37306
37354
  ids
37307
37355
  )
37308
37356
  ).unsafeFetchRaw();
37309
37357
  } catch {
37310
- return await storage.messagesCollection.query(import_watermelondb25.Q.where("id", import_watermelondb25.Q.oneOf(ids))).unsafeFetchRaw();
37358
+ return await storage.messagesCollection.query(import_watermelondb26.Q.where("id", import_watermelondb26.Q.oneOf(ids))).unsafeFetchRaw();
37311
37359
  }
37312
37360
  }
37313
37361
  var MAX_JOBS_PER_PASS = 3;
@@ -37480,7 +37528,7 @@ function createDurableAutoExtractor(options) {
37480
37528
  const source = options.messageSource?.(conversationId);
37481
37529
  if (source)
37482
37530
  return await fromSource(source.status(conversationId)) === "ready" && (await loadFromSource(source, conversationId, ids)).every(Boolean);
37483
- return await storage.conversationsCollection.query(import_watermelondb25.Q.where("conversation_id", conversationId), import_watermelondb25.Q.where("is_deleted", false)).fetchCount() > 0 && await storage.messagesCollection.query(import_watermelondb25.Q.where("conversation_id", conversationId), import_watermelondb25.Q.where("id", import_watermelondb25.Q.oneOf(ids))).fetchCount() === ids.length;
37531
+ return await storage.conversationsCollection.query(import_watermelondb26.Q.where("conversation_id", conversationId), import_watermelondb26.Q.where("is_deleted", false)).fetchCount() > 0 && await storage.messagesCollection.query(import_watermelondb26.Q.where("conversation_id", conversationId), import_watermelondb26.Q.where("id", import_watermelondb26.Q.oneOf(ids))).fetchCount() === ids.length;
37484
37532
  }
37485
37533
  function schedule(delay) {
37486
37534
  if (disposed) return;
@@ -37654,7 +37702,7 @@ function createDurableAutoExtractor(options) {
37654
37702
  let sourceWaiting = false;
37655
37703
  try {
37656
37704
  await writes;
37657
- const pending = await jobs.query(import_watermelondb25.Q.where("owner_key", owner), import_watermelondb25.Q.where("message_ids", import_watermelondb25.Q.notEq("[]"))).fetch();
37705
+ const pending = await jobs.query(import_watermelondb26.Q.where("owner_key", owner), import_watermelondb26.Q.where("message_ids", import_watermelondb26.Q.notEq("[]"))).fetch();
37658
37706
  storeFailures = 0;
37659
37707
  let processed = 0;
37660
37708
  for (const job of pending) {
@@ -37686,7 +37734,7 @@ function createDurableAutoExtractor(options) {
37686
37734
  let ids = [];
37687
37735
  let loaded = [];
37688
37736
  try {
37689
- const present = source ? sourceStatus === "ready" : await storage.conversationsCollection.query(import_watermelondb25.Q.where("conversation_id", conversationId), import_watermelondb25.Q.where("is_deleted", false)).fetchCount() > 0;
37737
+ const present = source ? sourceStatus === "ready" : await storage.conversationsCollection.query(import_watermelondb26.Q.where("conversation_id", conversationId), import_watermelondb26.Q.where("is_deleted", false)).fetchCount() > 0;
37690
37738
  if (!present) {
37691
37739
  await database.write(() => job.destroyPermanently());
37692
37740
  continue;
@@ -37854,7 +37902,7 @@ function createDurableAutoExtractor(options) {
37854
37902
  const scope = currentScope();
37855
37903
  writes = writes.then(
37856
37904
  () => database.write(async () => {
37857
- const existing = await jobs.query(import_watermelondb25.Q.where("owner_key", owner), import_watermelondb25.Q.where("conversation_id", conversationId)).fetch();
37905
+ const existing = await jobs.query(import_watermelondb26.Q.where("owner_key", owner), import_watermelondb26.Q.where("conversation_id", conversationId)).fetch();
37858
37906
  const job = existing.find(
37859
37907
  (candidate) => candidate._getRaw("scope") === scope && (candidate._getRaw("folder_id") ?? null) === folderId
37860
37908
  );
@@ -37867,8 +37915,8 @@ function createDurableAutoExtractor(options) {
37867
37915
  if (watermarks.length) {
37868
37916
  const misplaced = new Set(
37869
37917
  await storage.messagesCollection.query(
37870
- import_watermelondb25.Q.where("id", import_watermelondb25.Q.oneOf(watermarks)),
37871
- import_watermelondb25.Q.where("conversation_id", import_watermelondb25.Q.notEq(conversationId))
37918
+ import_watermelondb26.Q.where("id", import_watermelondb26.Q.oneOf(watermarks)),
37919
+ import_watermelondb26.Q.where("conversation_id", import_watermelondb26.Q.notEq(conversationId))
37872
37920
  ).fetchIds()
37873
37921
  );
37874
37922
  for (const prior of existing)