@anuma/sdk 6.14.1 → 6.14.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.
- package/dist/expo/index.cjs +1 -1
- package/dist/expo/index.d.mts +50 -12
- package/dist/expo/index.d.ts +50 -12
- package/dist/expo/index.mjs +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.mts +50 -12
- package/dist/react/index.d.ts +50 -12
- package/dist/react/index.mjs +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.mts +50 -12
- package/dist/server/index.d.ts +50 -12
- package/dist/server/index.mjs +1 -1
- package/package.json +1 -1
package/dist/expo/index.cjs
CHANGED
|
@@ -15438,7 +15438,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
|
|
|
15438
15438
|
({ row, content }) => ctx.vaultMemoryCollection.prepareCreate((record) => {
|
|
15439
15439
|
record._raw.id = row.memoryId;
|
|
15440
15440
|
record._setRaw("content", content);
|
|
15441
|
-
record._setRaw("scope", "
|
|
15441
|
+
record._setRaw("scope", "shared");
|
|
15442
15442
|
record._setRaw("folder_id", null);
|
|
15443
15443
|
record._setRaw("user_id", ctx.userId ?? null);
|
|
15444
15444
|
record._setRaw("is_deleted", false);
|
package/dist/expo/index.d.mts
CHANGED
|
@@ -6335,15 +6335,26 @@ declare function extractAndRetain(messages: AutoExtractMessage[], retainCtx: Ret
|
|
|
6335
6335
|
}>;
|
|
6336
6336
|
|
|
6337
6337
|
/**
|
|
6338
|
-
*
|
|
6339
|
-
*
|
|
6340
|
-
*
|
|
6341
|
-
*
|
|
6338
|
+
* LEGACY. This column no longer decides anything.
|
|
6339
|
+
*
|
|
6340
|
+
* `scope === 'shared'` is now the single publication axis: it means the memory
|
|
6341
|
+
* is on the People Nearby profile, its text goes to the nearby server, and it
|
|
6342
|
+
* may inform what strangers see. `scope: 'private'` means it is not. There is
|
|
6343
|
+
* no second control, and scope no longer gates model access either — every
|
|
6344
|
+
* model tier reads every memory. Do NOT reason about publication from this
|
|
6345
|
+
* type; read `scope`.
|
|
6346
|
+
*
|
|
6347
|
+
* The column survives in the schema and is still stamped on writes so that
|
|
6348
|
+
* stored rows stay readable by builds that predate the change. Nothing on a
|
|
6349
|
+
* current build reads it to make a decision.
|
|
6350
|
+
*
|
|
6351
|
+
* Values, kept for tolerance of already-stored data:
|
|
6352
|
+
* - `private`: local-only (a null column reads as private)
|
|
6353
|
+
* - `public`: the row was published
|
|
6342
6354
|
*
|
|
6343
6355
|
* TWO TIERS ONLY (decided 2026-07-27). An earlier design had a middle
|
|
6344
6356
|
* `matchable` tier that published a memory's embedding while keeping its text
|
|
6345
|
-
* on-device; it was dropped
|
|
6346
|
-
* published with its content. Any unrecognised stored value — including a
|
|
6357
|
+
* on-device; it was dropped. Any unrecognised stored value — including a
|
|
6347
6358
|
* `matchable` row written by a pre-release build — reads as `private`, which is
|
|
6348
6359
|
* the fail-safe direction: it un-publishes rather than exposes.
|
|
6349
6360
|
*/
|
|
@@ -6997,12 +7008,16 @@ declare function updateVaultMemoryEmbeddingOp(ctx: VaultMemoryOperationsContext,
|
|
|
6997
7008
|
* candidate to be reconciled against the vault — it is an already-decided
|
|
6998
7009
|
* fact the server has published.
|
|
6999
7010
|
*
|
|
7000
|
-
* The rows are written `
|
|
7001
|
-
*
|
|
7002
|
-
*
|
|
7003
|
-
*
|
|
7004
|
-
*
|
|
7005
|
-
*
|
|
7011
|
+
* The rows are written `scope: "shared"` because they genuinely ARE published.
|
|
7012
|
+
* `scope === 'shared'` is the publication axis — the single one. The reconciler
|
|
7013
|
+
* reads local scope as the user's intent, and it builds its `local` set from a
|
|
7014
|
+
* vault read narrowed to `{scopes: ['shared']}`. A row stamped anything else
|
|
7015
|
+
* never enters that read, so it is never adopted into the publish ledger, and
|
|
7016
|
+
* `toRevoke` is computed only over ids the ledger holds. The user's off-toggle
|
|
7017
|
+
* would then do nothing server-side while nearby kept serving the memory. The
|
|
7018
|
+
* `visibility` column is legacy: nothing reads it any more. They carry
|
|
7019
|
+
* `source: SOURCE_PHOTO`, which is what exempts them from decay's auto-archive;
|
|
7020
|
+
* see the note there for why archiving one would silently unpublish it.
|
|
7006
7021
|
*
|
|
7007
7022
|
* No embedding is computed here. `searchTool`'s un-embedded lane embeds any row
|
|
7008
7023
|
* lacking a vector at search time, uses it in that same search and persists it
|
|
@@ -7050,6 +7065,29 @@ interface PhotoIngestResult {
|
|
|
7050
7065
|
* class of bug as publishing a version the user has since changed. Re-ingesting
|
|
7051
7066
|
* changed text is a follow-up that needs a merge decision, not a clobber.
|
|
7052
7067
|
*
|
|
7068
|
+
* That skip is also why this op does NOT repair a row an older build stamped
|
|
7069
|
+
* `scope: "private"`. Such a row is present, so ingest leaves it alone, and it
|
|
7070
|
+
* stays outside the published-set read. The user's switch cannot revoke it.
|
|
7071
|
+
* Repair belongs in a one-time pass at upgrade. Do not add it here, for two
|
|
7072
|
+
* reasons:
|
|
7073
|
+
*
|
|
7074
|
+
* - **The two states are indistinguishable from this op.** After this build a
|
|
7075
|
+
* `photo:` row with `scope: "private"` is also exactly what the user's own
|
|
7076
|
+
* off-toggle produces. The toggle calls `updateVaultMemoryOp`, which writes
|
|
7077
|
+
* `scope` and never touches `visibility`, so the mis-stamped row and the
|
|
7078
|
+
* turned-off row carry identical columns. No test here can tell them apart.
|
|
7079
|
+
*
|
|
7080
|
+
* - **A re-stamp here would revert the off-toggle.** The pass runs ingest
|
|
7081
|
+
* BEFORE it reads the vault, so a row re-stamped `shared` re-enters the
|
|
7082
|
+
* desired set on that same pass and never reaches `toRevoke`. The switch
|
|
7083
|
+
* would spring back to "on" and nearby would keep serving the memory. That
|
|
7084
|
+
* is worse than the bug it repairs.
|
|
7085
|
+
*
|
|
7086
|
+
* A one-time pass does not have the ambiguity. Before this build the switch
|
|
7087
|
+
* already read "off" for these rows, because it reads `scope`, so no user can
|
|
7088
|
+
* have turned one off. Every `private` photo row at that instant came from the
|
|
7089
|
+
* old stamp.
|
|
7090
|
+
*
|
|
7053
7091
|
* Non-`photo:` ids are ignored: everything else in the published set is a
|
|
7054
7092
|
* client-published memory that by definition already lives in this vault (or in
|
|
7055
7093
|
* another device's, which is not ours to recreate).
|
package/dist/expo/index.d.ts
CHANGED
|
@@ -6335,15 +6335,26 @@ declare function extractAndRetain(messages: AutoExtractMessage[], retainCtx: Ret
|
|
|
6335
6335
|
}>;
|
|
6336
6336
|
|
|
6337
6337
|
/**
|
|
6338
|
-
*
|
|
6339
|
-
*
|
|
6340
|
-
*
|
|
6341
|
-
*
|
|
6338
|
+
* LEGACY. This column no longer decides anything.
|
|
6339
|
+
*
|
|
6340
|
+
* `scope === 'shared'` is now the single publication axis: it means the memory
|
|
6341
|
+
* is on the People Nearby profile, its text goes to the nearby server, and it
|
|
6342
|
+
* may inform what strangers see. `scope: 'private'` means it is not. There is
|
|
6343
|
+
* no second control, and scope no longer gates model access either — every
|
|
6344
|
+
* model tier reads every memory. Do NOT reason about publication from this
|
|
6345
|
+
* type; read `scope`.
|
|
6346
|
+
*
|
|
6347
|
+
* The column survives in the schema and is still stamped on writes so that
|
|
6348
|
+
* stored rows stay readable by builds that predate the change. Nothing on a
|
|
6349
|
+
* current build reads it to make a decision.
|
|
6350
|
+
*
|
|
6351
|
+
* Values, kept for tolerance of already-stored data:
|
|
6352
|
+
* - `private`: local-only (a null column reads as private)
|
|
6353
|
+
* - `public`: the row was published
|
|
6342
6354
|
*
|
|
6343
6355
|
* TWO TIERS ONLY (decided 2026-07-27). An earlier design had a middle
|
|
6344
6356
|
* `matchable` tier that published a memory's embedding while keeping its text
|
|
6345
|
-
* on-device; it was dropped
|
|
6346
|
-
* published with its content. Any unrecognised stored value — including a
|
|
6357
|
+
* on-device; it was dropped. Any unrecognised stored value — including a
|
|
6347
6358
|
* `matchable` row written by a pre-release build — reads as `private`, which is
|
|
6348
6359
|
* the fail-safe direction: it un-publishes rather than exposes.
|
|
6349
6360
|
*/
|
|
@@ -6997,12 +7008,16 @@ declare function updateVaultMemoryEmbeddingOp(ctx: VaultMemoryOperationsContext,
|
|
|
6997
7008
|
* candidate to be reconciled against the vault — it is an already-decided
|
|
6998
7009
|
* fact the server has published.
|
|
6999
7010
|
*
|
|
7000
|
-
* The rows are written `
|
|
7001
|
-
*
|
|
7002
|
-
*
|
|
7003
|
-
*
|
|
7004
|
-
*
|
|
7005
|
-
*
|
|
7011
|
+
* The rows are written `scope: "shared"` because they genuinely ARE published.
|
|
7012
|
+
* `scope === 'shared'` is the publication axis — the single one. The reconciler
|
|
7013
|
+
* reads local scope as the user's intent, and it builds its `local` set from a
|
|
7014
|
+
* vault read narrowed to `{scopes: ['shared']}`. A row stamped anything else
|
|
7015
|
+
* never enters that read, so it is never adopted into the publish ledger, and
|
|
7016
|
+
* `toRevoke` is computed only over ids the ledger holds. The user's off-toggle
|
|
7017
|
+
* would then do nothing server-side while nearby kept serving the memory. The
|
|
7018
|
+
* `visibility` column is legacy: nothing reads it any more. They carry
|
|
7019
|
+
* `source: SOURCE_PHOTO`, which is what exempts them from decay's auto-archive;
|
|
7020
|
+
* see the note there for why archiving one would silently unpublish it.
|
|
7006
7021
|
*
|
|
7007
7022
|
* No embedding is computed here. `searchTool`'s un-embedded lane embeds any row
|
|
7008
7023
|
* lacking a vector at search time, uses it in that same search and persists it
|
|
@@ -7050,6 +7065,29 @@ interface PhotoIngestResult {
|
|
|
7050
7065
|
* class of bug as publishing a version the user has since changed. Re-ingesting
|
|
7051
7066
|
* changed text is a follow-up that needs a merge decision, not a clobber.
|
|
7052
7067
|
*
|
|
7068
|
+
* That skip is also why this op does NOT repair a row an older build stamped
|
|
7069
|
+
* `scope: "private"`. Such a row is present, so ingest leaves it alone, and it
|
|
7070
|
+
* stays outside the published-set read. The user's switch cannot revoke it.
|
|
7071
|
+
* Repair belongs in a one-time pass at upgrade. Do not add it here, for two
|
|
7072
|
+
* reasons:
|
|
7073
|
+
*
|
|
7074
|
+
* - **The two states are indistinguishable from this op.** After this build a
|
|
7075
|
+
* `photo:` row with `scope: "private"` is also exactly what the user's own
|
|
7076
|
+
* off-toggle produces. The toggle calls `updateVaultMemoryOp`, which writes
|
|
7077
|
+
* `scope` and never touches `visibility`, so the mis-stamped row and the
|
|
7078
|
+
* turned-off row carry identical columns. No test here can tell them apart.
|
|
7079
|
+
*
|
|
7080
|
+
* - **A re-stamp here would revert the off-toggle.** The pass runs ingest
|
|
7081
|
+
* BEFORE it reads the vault, so a row re-stamped `shared` re-enters the
|
|
7082
|
+
* desired set on that same pass and never reaches `toRevoke`. The switch
|
|
7083
|
+
* would spring back to "on" and nearby would keep serving the memory. That
|
|
7084
|
+
* is worse than the bug it repairs.
|
|
7085
|
+
*
|
|
7086
|
+
* A one-time pass does not have the ambiguity. Before this build the switch
|
|
7087
|
+
* already read "off" for these rows, because it reads `scope`, so no user can
|
|
7088
|
+
* have turned one off. Every `private` photo row at that instant came from the
|
|
7089
|
+
* old stamp.
|
|
7090
|
+
*
|
|
7053
7091
|
* Non-`photo:` ids are ignored: everything else in the published set is a
|
|
7054
7092
|
* client-published memory that by definition already lives in this vault (or in
|
|
7055
7093
|
* another device's, which is not ours to recreate).
|
package/dist/expo/index.mjs
CHANGED
|
@@ -5819,7 +5819,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
|
|
|
5819
5819
|
({ row, content }) => ctx.vaultMemoryCollection.prepareCreate((record) => {
|
|
5820
5820
|
record._raw.id = row.memoryId;
|
|
5821
5821
|
record._setRaw("content", content);
|
|
5822
|
-
record._setRaw("scope", "
|
|
5822
|
+
record._setRaw("scope", "shared");
|
|
5823
5823
|
record._setRaw("folder_id", null);
|
|
5824
5824
|
record._setRaw("user_id", ctx.userId ?? null);
|
|
5825
5825
|
record._setRaw("is_deleted", false);
|
package/dist/react/index.cjs
CHANGED
|
@@ -17076,7 +17076,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
|
|
|
17076
17076
|
({ row, content }) => ctx.vaultMemoryCollection.prepareCreate((record) => {
|
|
17077
17077
|
record._raw.id = row.memoryId;
|
|
17078
17078
|
record._setRaw("content", content);
|
|
17079
|
-
record._setRaw("scope", "
|
|
17079
|
+
record._setRaw("scope", "shared");
|
|
17080
17080
|
record._setRaw("folder_id", null);
|
|
17081
17081
|
record._setRaw("user_id", ctx.userId ?? null);
|
|
17082
17082
|
record._setRaw("is_deleted", false);
|
package/dist/react/index.d.mts
CHANGED
|
@@ -7604,15 +7604,26 @@ declare function extractAndRetain(messages: AutoExtractMessage[], retainCtx: Ret
|
|
|
7604
7604
|
}>;
|
|
7605
7605
|
|
|
7606
7606
|
/**
|
|
7607
|
-
*
|
|
7608
|
-
*
|
|
7609
|
-
*
|
|
7610
|
-
*
|
|
7607
|
+
* LEGACY. This column no longer decides anything.
|
|
7608
|
+
*
|
|
7609
|
+
* `scope === 'shared'` is now the single publication axis: it means the memory
|
|
7610
|
+
* is on the People Nearby profile, its text goes to the nearby server, and it
|
|
7611
|
+
* may inform what strangers see. `scope: 'private'` means it is not. There is
|
|
7612
|
+
* no second control, and scope no longer gates model access either — every
|
|
7613
|
+
* model tier reads every memory. Do NOT reason about publication from this
|
|
7614
|
+
* type; read `scope`.
|
|
7615
|
+
*
|
|
7616
|
+
* The column survives in the schema and is still stamped on writes so that
|
|
7617
|
+
* stored rows stay readable by builds that predate the change. Nothing on a
|
|
7618
|
+
* current build reads it to make a decision.
|
|
7619
|
+
*
|
|
7620
|
+
* Values, kept for tolerance of already-stored data:
|
|
7621
|
+
* - `private`: local-only (a null column reads as private)
|
|
7622
|
+
* - `public`: the row was published
|
|
7611
7623
|
*
|
|
7612
7624
|
* TWO TIERS ONLY (decided 2026-07-27). An earlier design had a middle
|
|
7613
7625
|
* `matchable` tier that published a memory's embedding while keeping its text
|
|
7614
|
-
* on-device; it was dropped
|
|
7615
|
-
* published with its content. Any unrecognised stored value — including a
|
|
7626
|
+
* on-device; it was dropped. Any unrecognised stored value — including a
|
|
7616
7627
|
* `matchable` row written by a pre-release build — reads as `private`, which is
|
|
7617
7628
|
* the fail-safe direction: it un-publishes rather than exposes.
|
|
7618
7629
|
*/
|
|
@@ -8352,12 +8363,16 @@ declare function updateVaultMemoryEmbeddingOp(ctx: VaultMemoryOperationsContext,
|
|
|
8352
8363
|
* candidate to be reconciled against the vault — it is an already-decided
|
|
8353
8364
|
* fact the server has published.
|
|
8354
8365
|
*
|
|
8355
|
-
* The rows are written `
|
|
8356
|
-
*
|
|
8357
|
-
*
|
|
8358
|
-
*
|
|
8359
|
-
*
|
|
8360
|
-
*
|
|
8366
|
+
* The rows are written `scope: "shared"` because they genuinely ARE published.
|
|
8367
|
+
* `scope === 'shared'` is the publication axis — the single one. The reconciler
|
|
8368
|
+
* reads local scope as the user's intent, and it builds its `local` set from a
|
|
8369
|
+
* vault read narrowed to `{scopes: ['shared']}`. A row stamped anything else
|
|
8370
|
+
* never enters that read, so it is never adopted into the publish ledger, and
|
|
8371
|
+
* `toRevoke` is computed only over ids the ledger holds. The user's off-toggle
|
|
8372
|
+
* would then do nothing server-side while nearby kept serving the memory. The
|
|
8373
|
+
* `visibility` column is legacy: nothing reads it any more. They carry
|
|
8374
|
+
* `source: SOURCE_PHOTO`, which is what exempts them from decay's auto-archive;
|
|
8375
|
+
* see the note there for why archiving one would silently unpublish it.
|
|
8361
8376
|
*
|
|
8362
8377
|
* No embedding is computed here. `searchTool`'s un-embedded lane embeds any row
|
|
8363
8378
|
* lacking a vector at search time, uses it in that same search and persists it
|
|
@@ -8405,6 +8420,29 @@ interface PhotoIngestResult {
|
|
|
8405
8420
|
* class of bug as publishing a version the user has since changed. Re-ingesting
|
|
8406
8421
|
* changed text is a follow-up that needs a merge decision, not a clobber.
|
|
8407
8422
|
*
|
|
8423
|
+
* That skip is also why this op does NOT repair a row an older build stamped
|
|
8424
|
+
* `scope: "private"`. Such a row is present, so ingest leaves it alone, and it
|
|
8425
|
+
* stays outside the published-set read. The user's switch cannot revoke it.
|
|
8426
|
+
* Repair belongs in a one-time pass at upgrade. Do not add it here, for two
|
|
8427
|
+
* reasons:
|
|
8428
|
+
*
|
|
8429
|
+
* - **The two states are indistinguishable from this op.** After this build a
|
|
8430
|
+
* `photo:` row with `scope: "private"` is also exactly what the user's own
|
|
8431
|
+
* off-toggle produces. The toggle calls `updateVaultMemoryOp`, which writes
|
|
8432
|
+
* `scope` and never touches `visibility`, so the mis-stamped row and the
|
|
8433
|
+
* turned-off row carry identical columns. No test here can tell them apart.
|
|
8434
|
+
*
|
|
8435
|
+
* - **A re-stamp here would revert the off-toggle.** The pass runs ingest
|
|
8436
|
+
* BEFORE it reads the vault, so a row re-stamped `shared` re-enters the
|
|
8437
|
+
* desired set on that same pass and never reaches `toRevoke`. The switch
|
|
8438
|
+
* would spring back to "on" and nearby would keep serving the memory. That
|
|
8439
|
+
* is worse than the bug it repairs.
|
|
8440
|
+
*
|
|
8441
|
+
* A one-time pass does not have the ambiguity. Before this build the switch
|
|
8442
|
+
* already read "off" for these rows, because it reads `scope`, so no user can
|
|
8443
|
+
* have turned one off. Every `private` photo row at that instant came from the
|
|
8444
|
+
* old stamp.
|
|
8445
|
+
*
|
|
8408
8446
|
* Non-`photo:` ids are ignored: everything else in the published set is a
|
|
8409
8447
|
* client-published memory that by definition already lives in this vault (or in
|
|
8410
8448
|
* another device's, which is not ours to recreate).
|
package/dist/react/index.d.ts
CHANGED
|
@@ -7604,15 +7604,26 @@ declare function extractAndRetain(messages: AutoExtractMessage[], retainCtx: Ret
|
|
|
7604
7604
|
}>;
|
|
7605
7605
|
|
|
7606
7606
|
/**
|
|
7607
|
-
*
|
|
7608
|
-
*
|
|
7609
|
-
*
|
|
7610
|
-
*
|
|
7607
|
+
* LEGACY. This column no longer decides anything.
|
|
7608
|
+
*
|
|
7609
|
+
* `scope === 'shared'` is now the single publication axis: it means the memory
|
|
7610
|
+
* is on the People Nearby profile, its text goes to the nearby server, and it
|
|
7611
|
+
* may inform what strangers see. `scope: 'private'` means it is not. There is
|
|
7612
|
+
* no second control, and scope no longer gates model access either — every
|
|
7613
|
+
* model tier reads every memory. Do NOT reason about publication from this
|
|
7614
|
+
* type; read `scope`.
|
|
7615
|
+
*
|
|
7616
|
+
* The column survives in the schema and is still stamped on writes so that
|
|
7617
|
+
* stored rows stay readable by builds that predate the change. Nothing on a
|
|
7618
|
+
* current build reads it to make a decision.
|
|
7619
|
+
*
|
|
7620
|
+
* Values, kept for tolerance of already-stored data:
|
|
7621
|
+
* - `private`: local-only (a null column reads as private)
|
|
7622
|
+
* - `public`: the row was published
|
|
7611
7623
|
*
|
|
7612
7624
|
* TWO TIERS ONLY (decided 2026-07-27). An earlier design had a middle
|
|
7613
7625
|
* `matchable` tier that published a memory's embedding while keeping its text
|
|
7614
|
-
* on-device; it was dropped
|
|
7615
|
-
* published with its content. Any unrecognised stored value — including a
|
|
7626
|
+
* on-device; it was dropped. Any unrecognised stored value — including a
|
|
7616
7627
|
* `matchable` row written by a pre-release build — reads as `private`, which is
|
|
7617
7628
|
* the fail-safe direction: it un-publishes rather than exposes.
|
|
7618
7629
|
*/
|
|
@@ -8352,12 +8363,16 @@ declare function updateVaultMemoryEmbeddingOp(ctx: VaultMemoryOperationsContext,
|
|
|
8352
8363
|
* candidate to be reconciled against the vault — it is an already-decided
|
|
8353
8364
|
* fact the server has published.
|
|
8354
8365
|
*
|
|
8355
|
-
* The rows are written `
|
|
8356
|
-
*
|
|
8357
|
-
*
|
|
8358
|
-
*
|
|
8359
|
-
*
|
|
8360
|
-
*
|
|
8366
|
+
* The rows are written `scope: "shared"` because they genuinely ARE published.
|
|
8367
|
+
* `scope === 'shared'` is the publication axis — the single one. The reconciler
|
|
8368
|
+
* reads local scope as the user's intent, and it builds its `local` set from a
|
|
8369
|
+
* vault read narrowed to `{scopes: ['shared']}`. A row stamped anything else
|
|
8370
|
+
* never enters that read, so it is never adopted into the publish ledger, and
|
|
8371
|
+
* `toRevoke` is computed only over ids the ledger holds. The user's off-toggle
|
|
8372
|
+
* would then do nothing server-side while nearby kept serving the memory. The
|
|
8373
|
+
* `visibility` column is legacy: nothing reads it any more. They carry
|
|
8374
|
+
* `source: SOURCE_PHOTO`, which is what exempts them from decay's auto-archive;
|
|
8375
|
+
* see the note there for why archiving one would silently unpublish it.
|
|
8361
8376
|
*
|
|
8362
8377
|
* No embedding is computed here. `searchTool`'s un-embedded lane embeds any row
|
|
8363
8378
|
* lacking a vector at search time, uses it in that same search and persists it
|
|
@@ -8405,6 +8420,29 @@ interface PhotoIngestResult {
|
|
|
8405
8420
|
* class of bug as publishing a version the user has since changed. Re-ingesting
|
|
8406
8421
|
* changed text is a follow-up that needs a merge decision, not a clobber.
|
|
8407
8422
|
*
|
|
8423
|
+
* That skip is also why this op does NOT repair a row an older build stamped
|
|
8424
|
+
* `scope: "private"`. Such a row is present, so ingest leaves it alone, and it
|
|
8425
|
+
* stays outside the published-set read. The user's switch cannot revoke it.
|
|
8426
|
+
* Repair belongs in a one-time pass at upgrade. Do not add it here, for two
|
|
8427
|
+
* reasons:
|
|
8428
|
+
*
|
|
8429
|
+
* - **The two states are indistinguishable from this op.** After this build a
|
|
8430
|
+
* `photo:` row with `scope: "private"` is also exactly what the user's own
|
|
8431
|
+
* off-toggle produces. The toggle calls `updateVaultMemoryOp`, which writes
|
|
8432
|
+
* `scope` and never touches `visibility`, so the mis-stamped row and the
|
|
8433
|
+
* turned-off row carry identical columns. No test here can tell them apart.
|
|
8434
|
+
*
|
|
8435
|
+
* - **A re-stamp here would revert the off-toggle.** The pass runs ingest
|
|
8436
|
+
* BEFORE it reads the vault, so a row re-stamped `shared` re-enters the
|
|
8437
|
+
* desired set on that same pass and never reaches `toRevoke`. The switch
|
|
8438
|
+
* would spring back to "on" and nearby would keep serving the memory. That
|
|
8439
|
+
* is worse than the bug it repairs.
|
|
8440
|
+
*
|
|
8441
|
+
* A one-time pass does not have the ambiguity. Before this build the switch
|
|
8442
|
+
* already read "off" for these rows, because it reads `scope`, so no user can
|
|
8443
|
+
* have turned one off. Every `private` photo row at that instant came from the
|
|
8444
|
+
* old stamp.
|
|
8445
|
+
*
|
|
8408
8446
|
* Non-`photo:` ids are ignored: everything else in the published set is a
|
|
8409
8447
|
* client-published memory that by definition already lives in this vault (or in
|
|
8410
8448
|
* another device's, which is not ours to recreate).
|
package/dist/react/index.mjs
CHANGED
|
@@ -6976,7 +6976,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
|
|
|
6976
6976
|
({ row, content }) => ctx.vaultMemoryCollection.prepareCreate((record) => {
|
|
6977
6977
|
record._raw.id = row.memoryId;
|
|
6978
6978
|
record._setRaw("content", content);
|
|
6979
|
-
record._setRaw("scope", "
|
|
6979
|
+
record._setRaw("scope", "shared");
|
|
6980
6980
|
record._setRaw("folder_id", null);
|
|
6981
6981
|
record._setRaw("user_id", ctx.userId ?? null);
|
|
6982
6982
|
record._setRaw("is_deleted", false);
|
package/dist/server/index.cjs
CHANGED
|
@@ -27426,7 +27426,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
|
|
|
27426
27426
|
({ row, content }) => ctx.vaultMemoryCollection.prepareCreate((record) => {
|
|
27427
27427
|
record._raw.id = row.memoryId;
|
|
27428
27428
|
record._setRaw("content", content);
|
|
27429
|
-
record._setRaw("scope", "
|
|
27429
|
+
record._setRaw("scope", "shared");
|
|
27430
27430
|
record._setRaw("folder_id", null);
|
|
27431
27431
|
record._setRaw("user_id", ctx.userId ?? null);
|
|
27432
27432
|
record._setRaw("is_deleted", false);
|
package/dist/server/index.d.mts
CHANGED
|
@@ -6253,15 +6253,26 @@ declare function extractAndRetain(messages: AutoExtractMessage[], retainCtx: Ret
|
|
|
6253
6253
|
}>;
|
|
6254
6254
|
|
|
6255
6255
|
/**
|
|
6256
|
-
*
|
|
6257
|
-
*
|
|
6258
|
-
*
|
|
6259
|
-
*
|
|
6256
|
+
* LEGACY. This column no longer decides anything.
|
|
6257
|
+
*
|
|
6258
|
+
* `scope === 'shared'` is now the single publication axis: it means the memory
|
|
6259
|
+
* is on the People Nearby profile, its text goes to the nearby server, and it
|
|
6260
|
+
* may inform what strangers see. `scope: 'private'` means it is not. There is
|
|
6261
|
+
* no second control, and scope no longer gates model access either — every
|
|
6262
|
+
* model tier reads every memory. Do NOT reason about publication from this
|
|
6263
|
+
* type; read `scope`.
|
|
6264
|
+
*
|
|
6265
|
+
* The column survives in the schema and is still stamped on writes so that
|
|
6266
|
+
* stored rows stay readable by builds that predate the change. Nothing on a
|
|
6267
|
+
* current build reads it to make a decision.
|
|
6268
|
+
*
|
|
6269
|
+
* Values, kept for tolerance of already-stored data:
|
|
6270
|
+
* - `private`: local-only (a null column reads as private)
|
|
6271
|
+
* - `public`: the row was published
|
|
6260
6272
|
*
|
|
6261
6273
|
* TWO TIERS ONLY (decided 2026-07-27). An earlier design had a middle
|
|
6262
6274
|
* `matchable` tier that published a memory's embedding while keeping its text
|
|
6263
|
-
* on-device; it was dropped
|
|
6264
|
-
* published with its content. Any unrecognised stored value — including a
|
|
6275
|
+
* on-device; it was dropped. Any unrecognised stored value — including a
|
|
6265
6276
|
* `matchable` row written by a pre-release build — reads as `private`, which is
|
|
6266
6277
|
* the fail-safe direction: it un-publishes rather than exposes.
|
|
6267
6278
|
*/
|
|
@@ -6853,12 +6864,16 @@ declare function updateVaultMemoryEmbeddingOp(ctx: VaultMemoryOperationsContext,
|
|
|
6853
6864
|
* candidate to be reconciled against the vault — it is an already-decided
|
|
6854
6865
|
* fact the server has published.
|
|
6855
6866
|
*
|
|
6856
|
-
* The rows are written `
|
|
6857
|
-
*
|
|
6858
|
-
*
|
|
6859
|
-
*
|
|
6860
|
-
*
|
|
6861
|
-
*
|
|
6867
|
+
* The rows are written `scope: "shared"` because they genuinely ARE published.
|
|
6868
|
+
* `scope === 'shared'` is the publication axis — the single one. The reconciler
|
|
6869
|
+
* reads local scope as the user's intent, and it builds its `local` set from a
|
|
6870
|
+
* vault read narrowed to `{scopes: ['shared']}`. A row stamped anything else
|
|
6871
|
+
* never enters that read, so it is never adopted into the publish ledger, and
|
|
6872
|
+
* `toRevoke` is computed only over ids the ledger holds. The user's off-toggle
|
|
6873
|
+
* would then do nothing server-side while nearby kept serving the memory. The
|
|
6874
|
+
* `visibility` column is legacy: nothing reads it any more. They carry
|
|
6875
|
+
* `source: SOURCE_PHOTO`, which is what exempts them from decay's auto-archive;
|
|
6876
|
+
* see the note there for why archiving one would silently unpublish it.
|
|
6862
6877
|
*
|
|
6863
6878
|
* No embedding is computed here. `searchTool`'s un-embedded lane embeds any row
|
|
6864
6879
|
* lacking a vector at search time, uses it in that same search and persists it
|
|
@@ -6906,6 +6921,29 @@ interface PhotoIngestResult {
|
|
|
6906
6921
|
* class of bug as publishing a version the user has since changed. Re-ingesting
|
|
6907
6922
|
* changed text is a follow-up that needs a merge decision, not a clobber.
|
|
6908
6923
|
*
|
|
6924
|
+
* That skip is also why this op does NOT repair a row an older build stamped
|
|
6925
|
+
* `scope: "private"`. Such a row is present, so ingest leaves it alone, and it
|
|
6926
|
+
* stays outside the published-set read. The user's switch cannot revoke it.
|
|
6927
|
+
* Repair belongs in a one-time pass at upgrade. Do not add it here, for two
|
|
6928
|
+
* reasons:
|
|
6929
|
+
*
|
|
6930
|
+
* - **The two states are indistinguishable from this op.** After this build a
|
|
6931
|
+
* `photo:` row with `scope: "private"` is also exactly what the user's own
|
|
6932
|
+
* off-toggle produces. The toggle calls `updateVaultMemoryOp`, which writes
|
|
6933
|
+
* `scope` and never touches `visibility`, so the mis-stamped row and the
|
|
6934
|
+
* turned-off row carry identical columns. No test here can tell them apart.
|
|
6935
|
+
*
|
|
6936
|
+
* - **A re-stamp here would revert the off-toggle.** The pass runs ingest
|
|
6937
|
+
* BEFORE it reads the vault, so a row re-stamped `shared` re-enters the
|
|
6938
|
+
* desired set on that same pass and never reaches `toRevoke`. The switch
|
|
6939
|
+
* would spring back to "on" and nearby would keep serving the memory. That
|
|
6940
|
+
* is worse than the bug it repairs.
|
|
6941
|
+
*
|
|
6942
|
+
* A one-time pass does not have the ambiguity. Before this build the switch
|
|
6943
|
+
* already read "off" for these rows, because it reads `scope`, so no user can
|
|
6944
|
+
* have turned one off. Every `private` photo row at that instant came from the
|
|
6945
|
+
* old stamp.
|
|
6946
|
+
*
|
|
6909
6947
|
* Non-`photo:` ids are ignored: everything else in the published set is a
|
|
6910
6948
|
* client-published memory that by definition already lives in this vault (or in
|
|
6911
6949
|
* another device's, which is not ours to recreate).
|
package/dist/server/index.d.ts
CHANGED
|
@@ -6253,15 +6253,26 @@ declare function extractAndRetain(messages: AutoExtractMessage[], retainCtx: Ret
|
|
|
6253
6253
|
}>;
|
|
6254
6254
|
|
|
6255
6255
|
/**
|
|
6256
|
-
*
|
|
6257
|
-
*
|
|
6258
|
-
*
|
|
6259
|
-
*
|
|
6256
|
+
* LEGACY. This column no longer decides anything.
|
|
6257
|
+
*
|
|
6258
|
+
* `scope === 'shared'` is now the single publication axis: it means the memory
|
|
6259
|
+
* is on the People Nearby profile, its text goes to the nearby server, and it
|
|
6260
|
+
* may inform what strangers see. `scope: 'private'` means it is not. There is
|
|
6261
|
+
* no second control, and scope no longer gates model access either — every
|
|
6262
|
+
* model tier reads every memory. Do NOT reason about publication from this
|
|
6263
|
+
* type; read `scope`.
|
|
6264
|
+
*
|
|
6265
|
+
* The column survives in the schema and is still stamped on writes so that
|
|
6266
|
+
* stored rows stay readable by builds that predate the change. Nothing on a
|
|
6267
|
+
* current build reads it to make a decision.
|
|
6268
|
+
*
|
|
6269
|
+
* Values, kept for tolerance of already-stored data:
|
|
6270
|
+
* - `private`: local-only (a null column reads as private)
|
|
6271
|
+
* - `public`: the row was published
|
|
6260
6272
|
*
|
|
6261
6273
|
* TWO TIERS ONLY (decided 2026-07-27). An earlier design had a middle
|
|
6262
6274
|
* `matchable` tier that published a memory's embedding while keeping its text
|
|
6263
|
-
* on-device; it was dropped
|
|
6264
|
-
* published with its content. Any unrecognised stored value — including a
|
|
6275
|
+
* on-device; it was dropped. Any unrecognised stored value — including a
|
|
6265
6276
|
* `matchable` row written by a pre-release build — reads as `private`, which is
|
|
6266
6277
|
* the fail-safe direction: it un-publishes rather than exposes.
|
|
6267
6278
|
*/
|
|
@@ -6853,12 +6864,16 @@ declare function updateVaultMemoryEmbeddingOp(ctx: VaultMemoryOperationsContext,
|
|
|
6853
6864
|
* candidate to be reconciled against the vault — it is an already-decided
|
|
6854
6865
|
* fact the server has published.
|
|
6855
6866
|
*
|
|
6856
|
-
* The rows are written `
|
|
6857
|
-
*
|
|
6858
|
-
*
|
|
6859
|
-
*
|
|
6860
|
-
*
|
|
6861
|
-
*
|
|
6867
|
+
* The rows are written `scope: "shared"` because they genuinely ARE published.
|
|
6868
|
+
* `scope === 'shared'` is the publication axis — the single one. The reconciler
|
|
6869
|
+
* reads local scope as the user's intent, and it builds its `local` set from a
|
|
6870
|
+
* vault read narrowed to `{scopes: ['shared']}`. A row stamped anything else
|
|
6871
|
+
* never enters that read, so it is never adopted into the publish ledger, and
|
|
6872
|
+
* `toRevoke` is computed only over ids the ledger holds. The user's off-toggle
|
|
6873
|
+
* would then do nothing server-side while nearby kept serving the memory. The
|
|
6874
|
+
* `visibility` column is legacy: nothing reads it any more. They carry
|
|
6875
|
+
* `source: SOURCE_PHOTO`, which is what exempts them from decay's auto-archive;
|
|
6876
|
+
* see the note there for why archiving one would silently unpublish it.
|
|
6862
6877
|
*
|
|
6863
6878
|
* No embedding is computed here. `searchTool`'s un-embedded lane embeds any row
|
|
6864
6879
|
* lacking a vector at search time, uses it in that same search and persists it
|
|
@@ -6906,6 +6921,29 @@ interface PhotoIngestResult {
|
|
|
6906
6921
|
* class of bug as publishing a version the user has since changed. Re-ingesting
|
|
6907
6922
|
* changed text is a follow-up that needs a merge decision, not a clobber.
|
|
6908
6923
|
*
|
|
6924
|
+
* That skip is also why this op does NOT repair a row an older build stamped
|
|
6925
|
+
* `scope: "private"`. Such a row is present, so ingest leaves it alone, and it
|
|
6926
|
+
* stays outside the published-set read. The user's switch cannot revoke it.
|
|
6927
|
+
* Repair belongs in a one-time pass at upgrade. Do not add it here, for two
|
|
6928
|
+
* reasons:
|
|
6929
|
+
*
|
|
6930
|
+
* - **The two states are indistinguishable from this op.** After this build a
|
|
6931
|
+
* `photo:` row with `scope: "private"` is also exactly what the user's own
|
|
6932
|
+
* off-toggle produces. The toggle calls `updateVaultMemoryOp`, which writes
|
|
6933
|
+
* `scope` and never touches `visibility`, so the mis-stamped row and the
|
|
6934
|
+
* turned-off row carry identical columns. No test here can tell them apart.
|
|
6935
|
+
*
|
|
6936
|
+
* - **A re-stamp here would revert the off-toggle.** The pass runs ingest
|
|
6937
|
+
* BEFORE it reads the vault, so a row re-stamped `shared` re-enters the
|
|
6938
|
+
* desired set on that same pass and never reaches `toRevoke`. The switch
|
|
6939
|
+
* would spring back to "on" and nearby would keep serving the memory. That
|
|
6940
|
+
* is worse than the bug it repairs.
|
|
6941
|
+
*
|
|
6942
|
+
* A one-time pass does not have the ambiguity. Before this build the switch
|
|
6943
|
+
* already read "off" for these rows, because it reads `scope`, so no user can
|
|
6944
|
+
* have turned one off. Every `private` photo row at that instant came from the
|
|
6945
|
+
* old stamp.
|
|
6946
|
+
*
|
|
6909
6947
|
* Non-`photo:` ids are ignored: everything else in the published set is a
|
|
6910
6948
|
* client-published memory that by definition already lives in this vault (or in
|
|
6911
6949
|
* another device's, which is not ours to recreate).
|
package/dist/server/index.mjs
CHANGED
|
@@ -3736,7 +3736,7 @@ async function ingestPublishedPhotoMemoriesOp(ctx, rows) {
|
|
|
3736
3736
|
({ row, content }) => ctx.vaultMemoryCollection.prepareCreate((record) => {
|
|
3737
3737
|
record._raw.id = row.memoryId;
|
|
3738
3738
|
record._setRaw("content", content);
|
|
3739
|
-
record._setRaw("scope", "
|
|
3739
|
+
record._setRaw("scope", "shared");
|
|
3740
3740
|
record._setRaw("folder_id", null);
|
|
3741
3741
|
record._setRaw("user_id", ctx.userId ?? null);
|
|
3742
3742
|
record._setRaw("is_deleted", false);
|