instar 1.3.527 → 1.3.528

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 (32) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +88 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +14 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/CoherenceJournal.d.ts +1 -1
  8. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  9. package/dist/core/CoherenceJournal.js +13 -2
  10. package/dist/core/CoherenceJournal.js.map +1 -1
  11. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  12. package/dist/core/PostUpdateMigrator.js +22 -1
  13. package/dist/core/PostUpdateMigrator.js.map +1 -1
  14. package/dist/core/RelationshipManager.d.ts +61 -1
  15. package/dist/core/RelationshipManager.d.ts.map +1 -1
  16. package/dist/core/RelationshipManager.js +86 -2
  17. package/dist/core/RelationshipManager.js.map +1 -1
  18. package/dist/core/RelationshipsReplicatedStore.d.ts +298 -0
  19. package/dist/core/RelationshipsReplicatedStore.d.ts.map +1 -0
  20. package/dist/core/RelationshipsReplicatedStore.js +660 -0
  21. package/dist/core/RelationshipsReplicatedStore.js.map +1 -0
  22. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  23. package/dist/core/devGatedFeatures.js +5 -0
  24. package/dist/core/devGatedFeatures.js.map +1 -1
  25. package/dist/scaffold/templates.d.ts.map +1 -1
  26. package/dist/scaffold/templates.js +2 -1
  27. package/dist/scaffold/templates.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/data/builtin-manifest.json +19 -19
  30. package/src/scaffold/templates.ts +2 -1
  31. package/upgrades/1.3.528.md +34 -0
  32. package/upgrades/side-effects/ws23-relationships.md +150 -0
@@ -12,6 +12,42 @@
12
12
  * - Context injection before any interaction with a known person
13
13
  */
14
14
  import type { RelationshipRecord, RelationshipManagerConfig, InteractionSummary, UserChannel } from './types.js';
15
+ /**
16
+ * WS2.3 cross-machine replication seam (additive, dark by default). The manager
17
+ * routes EVERY persistence mutation through its single `save()` funnel and EVERY
18
+ * deletion through `delete()`/`mergeRelationships()`; when a replication emitter is
19
+ * injected, it emits a disclosure-minimized `relationship-record` envelope (`put` on
20
+ * save, `delete` tombstone on delete) so a relationship learned on one machine
21
+ * replicates to the others. PURE-INJECTED so the manager stays testable: the real
22
+ * wiring (server.ts) supplies an emitter gated behind
23
+ * `multiMachine.stateSync.relationships.enabled` (default false ⇒ NOT injected ⇒ a
24
+ * strict no-op, byte-identical single-machine behavior). The emitter NEVER throws
25
+ * out of a mutation — a replication failure must never break a local write (the
26
+ * emitter swallows + counts internally), so the manager calls it best-effort.
27
+ */
28
+ export interface RelationshipReplicationEmitter {
29
+ /** Emit a `put` for a persisted record (called from the save funnel). */
30
+ emitPut(record: RelationshipRecord): void;
31
+ /** Emit a `delete` tombstone for a removed person, keyed on their channel set
32
+ * (called from delete + the merged-record half of mergeRelationships). */
33
+ emitDelete(channels: UserChannel[], deletedAt: string): void;
34
+ }
35
+ /**
36
+ * WS2.3 union-read seam (REQ-M7). The peer-read surface — "what do my OTHER machines
37
+ * know about this person" — resolves THROUGH the bypass-proof ReplicatedStoreReader
38
+ * union (server.ts injects this), so no caller reads a raw replica around the
39
+ * no-clobber rule. It returns the FOREIGN, READ-ONLY rendered context blocks (each
40
+ * already wrapped in the `<replicated-untrusted-data>` envelope). It is DISTINCT from
41
+ * the local-authoritative resolveByChannel/get/getContextForPerson — identity
42
+ * RESOLUTION of an inbound principal is LOCAL-ONLY (REQ-M14) and must NEVER read a
43
+ * foreign binding. Absent ⇒ no peer view (the single-machine no-op).
44
+ */
45
+ export interface RelationshipPeerReadSeam {
46
+ /** Render the FOREIGN replicated context for the person reached by these channels
47
+ * (the union of every peer's replica for the matching identity surface), or [] when
48
+ * dark / no peer knows them. The result is quoted untrusted data, never authoritative. */
49
+ peerContextForChannels(channels: UserChannel[]): string[];
50
+ }
15
51
  export declare class RelationshipManager {
16
52
  private relationships;
17
53
  /** Maps "channel_type:identifier" -> relationship ID for cross-platform resolution */
@@ -19,7 +55,31 @@ export declare class RelationshipManager {
19
55
  /** Maps normalized name -> set of relationship IDs for fuzzy name resolution */
20
56
  private nameIndex;
21
57
  private config;
22
- constructor(config: RelationshipManagerConfig);
58
+ /** WS2.3 replication emitter (injected, dark by default). Absent ⇒ strict no-op. */
59
+ private replication?;
60
+ /** WS2.3 union-read seam (injected, dark by default). Absent ⇒ no peer view. */
61
+ private peerRead?;
62
+ constructor(config: RelationshipManagerConfig, replication?: RelationshipReplicationEmitter);
63
+ /**
64
+ * Late-bind the WS2.3 replication emitter (server.ts constructs the union
65
+ * reader/journal/clock AFTER the manager). Idempotent; passing undefined detaches
66
+ * (back to single-machine no-op). The emit funnel checks `this.replication` per
67
+ * mutation, so attaching mid-life takes effect on the next save/delete.
68
+ */
69
+ setReplicationEmitter(emitter: RelationshipReplicationEmitter | undefined): void;
70
+ /** Late-bind the WS2.3 union-read seam (server.ts builds the union reader after the
71
+ * manager). Passing undefined detaches (no peer view). */
72
+ setPeerReadSeam(seam: RelationshipPeerReadSeam | undefined): void;
73
+ /**
74
+ * WS2.3 (REQ-M7/M14) — "what do my OTHER machines know about this person?" The
75
+ * peer-read surface, READ-ONLY + neutralized: it returns FOREIGN replicated context
76
+ * blocks (each already wrapped in `<replicated-untrusted-data>` and fully sanitized),
77
+ * tagged by origin, resolved THROUGH the bypass-proof union reader. It is a SEPARATE
78
+ * method from resolveByChannel/getContextForPerson — identity RESOLUTION of an
79
+ * inbound principal stays LOCAL-ONLY (REQ-M14): this never makes a foreign record the
80
+ * answer to "who is this". Returns [] when dark / no peer knows them.
81
+ */
82
+ peerContextForChannels(channels: UserChannel[]): string[];
23
83
  /** Normalize a name for fuzzy matching: lowercase, trim, collapse whitespace, strip leading @ */
24
84
  private normalizeName;
25
85
  /** Add a record to the name index */
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipManager.d.ts","sourceRoot":"","sources":["../../src/core/RelationshipManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelationshipManager.d.ts","sourceRoot":"","sources":["../../src/core/RelationshipManager.ts"],"names":[],"mappings":"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"}
@@ -26,13 +26,44 @@ export class RelationshipManager {
26
26
  /** Maps normalized name -> set of relationship IDs for fuzzy name resolution */
27
27
  nameIndex = new Map();
28
28
  config;
29
- constructor(config) {
29
+ /** WS2.3 replication emitter (injected, dark by default). Absent ⇒ strict no-op. */
30
+ replication;
31
+ /** WS2.3 union-read seam (injected, dark by default). Absent ⇒ no peer view. */
32
+ peerRead;
33
+ constructor(config, replication) {
30
34
  this.config = config;
35
+ this.replication = replication;
31
36
  if (!existsSync(config.relationshipsDir)) {
32
37
  mkdirSync(config.relationshipsDir, { recursive: true });
33
38
  }
34
39
  this.loadAll();
35
40
  }
41
+ /**
42
+ * Late-bind the WS2.3 replication emitter (server.ts constructs the union
43
+ * reader/journal/clock AFTER the manager). Idempotent; passing undefined detaches
44
+ * (back to single-machine no-op). The emit funnel checks `this.replication` per
45
+ * mutation, so attaching mid-life takes effect on the next save/delete.
46
+ */
47
+ setReplicationEmitter(emitter) {
48
+ this.replication = emitter;
49
+ }
50
+ /** Late-bind the WS2.3 union-read seam (server.ts builds the union reader after the
51
+ * manager). Passing undefined detaches (no peer view). */
52
+ setPeerReadSeam(seam) {
53
+ this.peerRead = seam;
54
+ }
55
+ /**
56
+ * WS2.3 (REQ-M7/M14) — "what do my OTHER machines know about this person?" The
57
+ * peer-read surface, READ-ONLY + neutralized: it returns FOREIGN replicated context
58
+ * blocks (each already wrapped in `<replicated-untrusted-data>` and fully sanitized),
59
+ * tagged by origin, resolved THROUGH the bypass-proof union reader. It is a SEPARATE
60
+ * method from resolveByChannel/getContextForPerson — identity RESOLUTION of an
61
+ * inbound principal stays LOCAL-ONLY (REQ-M14): this never makes a foreign record the
62
+ * answer to "who is this". Returns [] when dark / no peer knows them.
63
+ */
64
+ peerContextForChannels(channels) {
65
+ return this.peerRead ? this.peerRead.peerContextForChannels(channels) : [];
66
+ }
36
67
  /** Normalize a name for fuzzy matching: lowercase, trim, collapse whitespace, strip leading @ */
37
68
  normalizeName(name) {
38
69
  return name.trim().toLowerCase().replace(/^@/, '').replace(/[\s_-]+/g, ' ');
@@ -476,6 +507,14 @@ Respond with ONLY: YES or NO`;
476
507
  const merge = this.relationships.get(mergeId);
477
508
  if (!keep || !merge)
478
509
  return;
510
+ // WS2.3: snapshot the MERGED person's STANDALONE channel set BEFORE we fold its
511
+ // channels into the survivor — the coherent put(survivor)+delete(merged) pair the
512
+ // merge emits keys the tombstone on this OLD set. After the fold the survivor's
513
+ // channel set (and therefore its recordKey) SUBSUMES these, so the tombstone's
514
+ // recordKey is DISTINCT from the survivor's new recordKey — no replication loop,
515
+ // no tombstone that suppresses the survivor (the survivor's `put` carries the
516
+ // consolidated identity; the tombstone only retires the merged's standalone replica).
517
+ const mergedChannelsBefore = [...merge.channels];
479
518
  // Merge channels (respect MAX_CHANNELS cap)
480
519
  for (const channel of merge.channels) {
481
520
  if (keep.channels.length >= MAX_CHANNELS)
@@ -522,11 +561,24 @@ Respond with ONLY: YES or NO`;
522
561
  }
523
562
  }
524
563
  keep.significance = this.calculateSignificance(keep);
525
- this.save(keep);
564
+ this.save(keep); // emits the survivor `put` (now carrying the consolidated channel set)
526
565
  // Delete the merged record and clean up name index
527
566
  this.unindexName(mergeId, merge.name);
528
567
  this.relationships.delete(mergeId);
529
568
  this.deleteFile(mergeId);
569
+ // WS2.3: emit the merged record's TOMBSTONE keyed on its OLD standalone channel
570
+ // set so peers retire its standalone replica — the `delete` half of the coherent
571
+ // put+delete pair. Best-effort; strict no-op when dark. The survivor's recordKey
572
+ // (now subsuming these channels) differs from this tombstone's recordKey, so the
573
+ // tombstone can never suppress the survivor (no dangling tombstone, no loop).
574
+ if (this.replication) {
575
+ try {
576
+ this.replication.emitDelete(mergedChannelsBefore, new Date().toISOString());
577
+ }
578
+ catch {
579
+ // @silent-fallback-ok — additive replication never breaks the local merge.
580
+ }
581
+ }
530
582
  }
531
583
  /**
532
584
  * Delete a relationship and its disk file.
@@ -535,6 +587,9 @@ Respond with ONLY: YES or NO`;
535
587
  const record = this.relationships.get(id);
536
588
  if (!record)
537
589
  return false;
590
+ // Snapshot the channel set BEFORE we mutate the indexes — the WS2.3 tombstone is
591
+ // keyed on the channel-set identity surface (REQ-D4/D17), not the local UUID.
592
+ const channels = [...record.channels];
538
593
  // Remove channel index entries
539
594
  for (const channel of record.channels) {
540
595
  const channelKey = `${channel.type}:${channel.identifier}`;
@@ -546,6 +601,19 @@ Respond with ONLY: YES or NO`;
546
601
  this.unindexName(id, record.name);
547
602
  this.relationships.delete(id);
548
603
  this.deleteFile(id);
604
+ // WS2.3 (§4.2 REQ-D4): a delete propagates as a `relationship-record` `op:'delete'`
605
+ // TOMBSTONE keyed on the channel-set identity surface so it reaches the same human's
606
+ // record on every machine (incl. an offline-then-rejoining peer, §4.3) — never a
607
+ // record absence that cannot distinguish "deleted" from "never replicated". Emitted
608
+ // AFTER the durable local delete; best-effort; strict no-op when dark.
609
+ if (this.replication) {
610
+ try {
611
+ this.replication.emitDelete(channels, new Date().toISOString());
612
+ }
613
+ catch {
614
+ // @silent-fallback-ok — additive replication never breaks the local delete.
615
+ }
616
+ }
549
617
  return true;
550
618
  }
551
619
  /**
@@ -687,6 +755,22 @@ Respond with ONLY: YES or NO`;
687
755
  catch { /* ignore */ }
688
756
  throw err;
689
757
  }
758
+ // WS2.3 (ws23-relationships-userregistry-security §5 REQ-M3/M4): the single
759
+ // persistence funnel is the ONE place a `relationship-record` `put` is emitted,
760
+ // so every mutator (findOrCreate, updateNotes, linkChannel, addTags, …) replicates
761
+ // through it without per-method wiring. Best-effort + AFTER the durable local
762
+ // write succeeded: a replication failure must NEVER break the local write (the
763
+ // injected emitter swallows + counts internally). Strict no-op when no emitter is
764
+ // injected (the dark default).
765
+ if (this.replication) {
766
+ try {
767
+ this.replication.emitPut(record);
768
+ }
769
+ catch {
770
+ // @silent-fallback-ok — replication is additive; a local write must never fail
771
+ // because cross-machine emission did. The emitter records its own failures.
772
+ }
773
+ }
690
774
  }
691
775
  deleteFile(id) {
692
776
  this.validateId(id);
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipManager.js","sourceRoot":"","sources":["../../src/core/RelationshipManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelationshipManager.js","sourceRoot":"","sources":["../../src/core/RelationshipManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * RelationshipsReplicatedStore — the SECOND concrete consumer of the HLC
3
+ * replicated-store foundation (WS2.3) and the FIRST PII kind. It layers the
4
+ * `relationship-record` replicated kind onto the generic substrate
5
+ * (ReplicatedRecordEnvelope / UnionReader / ConflictStore / RollbackUnmerge /
6
+ * ReplicationBudget / StoreSnapshot) so that a person the agent knows on machine
7
+ * A is known on machine B — ONE relationship graph, not one-per-machine.
8
+ *
9
+ * It is the literal analog of `PreferencesReplicatedStore.ts` (the WS2.1 reference
10
+ * consumer), with the PII-specific hardening the security spec
11
+ * (`ws23-relationships-userregistry-security.md`) demands. THIS IS PURE LOGIC. No
12
+ * fs, no Date directly, no network. It defines:
13
+ *
14
+ * A. The `relationship-record` store schema — a STRICT typed validator that
15
+ * TYPE-CLAMPS every known field (REQ-M3): ISO-8601-only dates, finite-number
16
+ * counts, length-clamped free text. A foreign record is fully attacker-
17
+ * controlled (§2.3 injection), so the clamp is the defense that makes markup
18
+ * un-smuggleable through a field that bypasses sanitize() on render. The
19
+ * schema is a DISCRIMINATED UNION on `op` (gap #8): an `op:'put'` VALUE schema
20
+ * AND an `op:'delete'` TOMBSTONE schema coexist under the one kind, so a
21
+ * tombstone is never marked invalid/suspect by the value schema (REQ-D6).
22
+ *
23
+ * B. The disclosure-minimized PROJECTION (REQ-M4) — `buildRelationshipRecordData`
24
+ * emits ONLY the enumerated resolution + merge-relevant fields, NEVER the raw
25
+ * on-disk blob and NEVER the local UUID `id`. `recordKey` is the cross-machine
26
+ * IDENTITY SURFACE (REQ-D17), derived deterministically from the sorted
27
+ * channel-uids (a person is "the same" across machines by their channels,
28
+ * mirroring resolveByChannel) — never the per-machine `randomUUID()` id.
29
+ *
30
+ * C. The TOMBSTONE builder — `buildRelationshipTombstoneData` emits an
31
+ * `op:'delete'` record `{ recordKey, op, hlc, origin, deletedAt }` (§4.2) so a
32
+ * delete/erasure propagates as a positive signal across an offline-then-
33
+ * rejoining peer (§4.3) instead of a record absence that cannot distinguish
34
+ * "deleted" from "never replicated".
35
+ *
36
+ * D. The union-aware read — `mergeUnionToRelationships` collapses a
37
+ * `Map<recordKey, UnionResult>` (from ReplicatedStoreReader.readAll('relationships'))
38
+ * into the merged relationship view. HIGH-impact (preferences/relationships):
39
+ * an OPEN concurrent conflict is APPEND-BOTH-AND-FLAG — both versions surface,
40
+ * never a silent clobber; the read NEVER writes a foreign record into the local
41
+ * store (REQ-M7 read-only union).
42
+ *
43
+ * E. Foreign-record render safety — `renderForeignRelationshipContext` wraps a
44
+ * replicated record in an explicit `<replicated-untrusted-data origin="…">`
45
+ * envelope (§2.3) and sanitizes EVERY rendered field (the ISO-8601/finite-
46
+ * number type-clamps on apply already make the date/count fields injection-
47
+ * safe; the free-text fields are escaped here). There is no "trusted because
48
+ * machine-set" render slot for a foreign record.
49
+ *
50
+ * SAFETY POSTURE (§14): MECHANISM, dark by default. Nothing here blocks a
51
+ * user-initiated action. The local UUID `id`, the local `channelIndex`/`nameIndex`,
52
+ * and any local-only bookkeeping are NEVER part of the replicated schema and are
53
+ * stripped from every emitted projection (REQ-M4 disclosure minimization).
54
+ */
55
+ import type { RelationshipRecord, UserChannel } from './types.js';
56
+ import type { StoreFieldSchema, ReplicatedEnvelope } from './ReplicatedRecordEnvelope.js';
57
+ import type { ImpactTier, OriginRecord, UnionResult } from './UnionReader.js';
58
+ import type { ReplicatedKindBounds } from './ReplicationBudget.js';
59
+ import type { HlcTimestamp } from './HybridLogicalClock.js';
60
+ /** The stateSync config sub-key + advert suffix for this store (e.g.
61
+ * `multiMachine.stateSync.relationships.enabled`). Equal to the advert flag key
62
+ * `stateSyncReceive['relationships']`. */
63
+ export declare const RELATIONSHIP_STORE_KEY = "relationships";
64
+ /** The JournalKind string this store rides — the DUAL-REGISTRY's dynamic half.
65
+ * MUST also be present in CoherenceJournal.JOURNAL_KINDS (the static half), or the
66
+ * store advertises receive=true yet serves/applies/pulls nothing (§4 callout). */
67
+ export declare const RELATIONSHIP_RECORD_KIND = "relationship-record";
68
+ /**
69
+ * Relationships are HIGH-impact (security spec §5 REQ-M9 / parent §WS2): a
70
+ * concurrent divergent VALUE edit to the SAME identity surface from different
71
+ * origins goes through APPEND-BOTH-AND-FLAG — both versions preserved, ONE deduped
72
+ * conflict, never a silent overwrite (auto-merging two divergent people could fuse
73
+ * two distinct humans). The CONSUMER read path injects BOTH variants — see
74
+ * mergeUnionToRelationships.
75
+ */
76
+ export declare const RELATIONSHIP_IMPACT_TIER: ImpactTier;
77
+ /** Mirrors RelationshipManager.MAX_NOTES_LENGTH. */
78
+ export declare const MAX_NOTES_LENGTH = 10000;
79
+ /** Mirrors RelationshipManager.MAX_CHANNELS. */
80
+ export declare const MAX_CHANNELS = 50;
81
+ /** Themes cap (RelationshipManager keeps themes ≤ 20). */
82
+ export declare const MAX_THEMES = 20;
83
+ /** Recent-interactions cap fallback (config `maxRecentInteractions`; the projection
84
+ * clamps to this hard ceiling so a hostile peer can't inflate the count). */
85
+ export declare const MAX_RECENT_INTERACTIONS = 50;
86
+ /** Per-free-text-string clamp for name / arcSummary / communicationStyle / category /
87
+ * each tag / each interaction summary / each channel identifier. */
88
+ export declare const MAX_FREETEXT_LENGTH = 2000;
89
+ /** A channel `type` is a short slug. */
90
+ export declare const MAX_CHANNEL_TYPE_LENGTH = 64;
91
+ /** Tags cap. */
92
+ export declare const MAX_TAGS = 50;
93
+ /**
94
+ * Per-kind replication bounds (§8 / REQ-D1). A PII store is NEVER `rotateKeep: 0`
95
+ * (rotate but never delete) — unbounded PII history is a compliance defect. The
96
+ * relationship store is chatty (recordInteraction fires on every message), so the
97
+ * rate cap COALESCES (latest state per recordKey per interval, REQ-M12). The
98
+ * per-kind maxFileBytes here is the journal-level fallback; the aggregate replicated
99
+ * PII byte ceiling (REQ-D2, 64 MiB) caps the cross-(peer,kind) footprint.
100
+ */
101
+ export declare const RELATIONSHIP_RECORD_BOUNDS: ReplicatedKindBounds;
102
+ /**
103
+ * Per-entry size cap RAISED to 64KB for this PII kind (REQ-M3, gap #10). The
104
+ * default APPLIER_MAX_ENTRY_BYTES = 8KB is SMALLER than a fat relationship
105
+ * (MAX_NOTES_LENGTH=10_000 alone, PLUS bounded recentInteractions + MAX_CHANNELS),
106
+ * so under it the highest-PII records would never replicate AND would wedge the
107
+ * stream. 64KB is provably above the disclosure-minimized projection's maximum:
108
+ * name(2k) + notes(10k) + 20 themes×2k(40k) is already the dominant term, but
109
+ * themes are SHORT topic slugs in practice and EACH free-text is clamped to 2k —
110
+ * the realistic max (notes 10k + 50 channels×(64+2000) ≈ 103k worst-case) shows
111
+ * why we additionally enforce a HARD post-projection ceiling: a record that STILL
112
+ * exceeds 64KB after projection is REJECTED with a named error (not silent-
113
+ * truncate, not suspect-wedge). See assertProjectionUnderCap.
114
+ */
115
+ export declare const RELATIONSHIP_MAX_ENTRY_BYTES: number;
116
+ /**
117
+ * The store-specific field names the `relationship-record` VALUE schema OWNS (the
118
+ * unknown-field counter's allowlist). The local UUID `id` is DELIBERATELY ABSENT
119
+ * — it is per-machine and never replicated (REQ-D17 keys on the identity surface,
120
+ * not the id). `recordKey`/`hlc`/`op`/`origin`/`observed` are reserved envelope
121
+ * fields, never store fields.
122
+ */
123
+ export declare const RELATIONSHIP_STORE_KNOWN_FIELDS: ReadonlyArray<string>;
124
+ /** The tombstone's store-owned fields beyond the reserved envelope set (REQ-D6).
125
+ * `deletedAt` is the only store field a delete carries. */
126
+ export declare const RELATIONSHIP_TOMBSTONE_KNOWN_FIELDS: ReadonlyArray<string>;
127
+ /** Is `v` a valid ISO-8601 date string (and ONLY a date — no trailing markup)? A
128
+ * string that Date.parse rejects, or that round-trips to a different string, is not
129
+ * a clean ISO date and is rejected. */
130
+ export declare function isIso8601(v: unknown): v is string;
131
+ /**
132
+ * The `relationship-record` store schema (§4 / REQ-M3) — a DISCRIMINATED UNION on
133
+ * `op` (gap #8). Strict typed validation on top of the envelope: reject free text
134
+ * beyond the known fields, TYPE-CLAMP every known field, validate the date/number
135
+ * fields so markup cannot smuggle through a render slot that bypasses sanitize().
136
+ * Returns the validated store-specific object (known fields only), or null to reject
137
+ * the WHOLE record. PURE (no I/O, no mutation of `raw`).
138
+ *
139
+ * The `op` discriminator: the envelope validator has ALREADY validated `op` ∈
140
+ * {put,delete} before calling this. We branch on it so a tombstone
141
+ * `{recordKey, op:'delete', hlc, origin, deletedAt}` passes (only `deletedAt` is a
142
+ * legal store field for a delete) WITHOUT being marked invalid by the rich VALUE
143
+ * schema (REQ-D6).
144
+ */
145
+ export declare const relationshipRecordStoreSchema: StoreFieldSchema;
146
+ /**
147
+ * Normalize one channel into its stable uid form `type:identifier` (lowercased
148
+ * type, trimmed identifier). This is the SAME `${type}:${identifier}` key
149
+ * RelationshipManager.channelIndex uses to collide a person across platforms.
150
+ */
151
+ export declare function channelUid(channel: UserChannel): string;
152
+ /**
153
+ * Derive the cross-machine-stable recordKey for a relationship (REQ-D17). A person
154
+ * is "the same" across machines by their CHANNEL SET (mirroring resolveByChannel),
155
+ * NOT by the per-machine `randomUUID()` id — VM-A and VM-B mint different UUIDs for
156
+ * the same human, so a UUID-keyed record could never collide them.
157
+ *
158
+ * The key is a deterministic, collision-resistant hash of the SORTED, de-duplicated
159
+ * channel-uids: `sha256(sorted(channelUids).join('\n'))`, hex-truncated to 32 chars
160
+ * (the same shape UnionReader.conflictId uses). Sorting makes it order-independent
161
+ * (the two machines converge to the SAME key for the same channel set); the hash
162
+ * makes it a bounded, non-path-shaped string (the envelope's recordKey jail accepts
163
+ * it). A relationship with NO channels (a degenerate local-only record) is NOT
164
+ * replicable — it has no cross-machine identity surface — and is reported as null so
165
+ * the caller skips emission (it can never collide a stranger by an empty key).
166
+ *
167
+ * COLLISION SAFETY: two DIFFERENT people share a key ONLY if they share the EXACT
168
+ * same full channel set — which is the manager's own definition of "the same
169
+ * person" (resolveByChannel returns one record per channel-uid). SPLIT-IDENTITY
170
+ * SAFETY: the same person derives the SAME key on both machines IFF both hold the
171
+ * same channel set; when their channel sets differ (one machine learned an extra
172
+ * channel) the keys differ — which is correct (they are not yet provably the same
173
+ * person on the machine missing the channel), and the union/erasure intersection
174
+ * logic (REQ-D17) reconciles them by channel-uid overlap, never by key equality.
175
+ */
176
+ export declare function deriveRelationshipRecordKey(channels: ReadonlyArray<UserChannel>): string | null;
177
+ /** The `data` object a `relationship-record` journal entry carries. */
178
+ export type RelationshipRecordData = Record<string, unknown>;
179
+ /** Input to buildRelationshipRecordData: the record to emit, the freshly-ticked
180
+ * hlc, this machine's origin id, and the observed-witness (the hlc already merged
181
+ * for THIS recordKey before writing, or absent — §7.2). */
182
+ export interface BuildRelationshipRecordInput {
183
+ record: RelationshipRecord;
184
+ hlc: HlcTimestamp;
185
+ origin: string;
186
+ /** The HLC already merged for THIS recordKey before writing, or absent (§7.2). */
187
+ observed?: HlcTimestamp;
188
+ }
189
+ /** The named error a record-over-cap surfaces (REQ-M3): not silent-truncate, not
190
+ * suspect-wedge. */
191
+ export declare class RelationshipRecordTooLargeError extends Error {
192
+ readonly recordKey: string;
193
+ readonly bytes: number;
194
+ constructor(recordKey: string, bytes: number);
195
+ }
196
+ /**
197
+ * Build the disclosure-minimized `relationship-record` envelope `data` for an
198
+ * `op:'put'` (REQ-M4). Emits ONLY the enumerated resolution + merge-relevant
199
+ * fields — NEVER the raw on-disk blob, NEVER the local UUID `id`. recordKey = the
200
+ * derived channel-set identity surface (REQ-D17).
201
+ *
202
+ * Returns null when the record has NO channels (no cross-machine identity surface ⇒
203
+ * not replicable — the caller skips emission). Throws RelationshipRecordTooLargeError
204
+ * when the projection STILL exceeds the 64KB per-entry cap (a record that big is a
205
+ * NAMED, surfaced rejection, REQ-M3 gap #10 — never silent-truncate).
206
+ */
207
+ export declare function buildRelationshipRecordData(input: BuildRelationshipRecordInput): RelationshipRecordData | null;
208
+ /** Throw RelationshipRecordTooLargeError if the projected data serializes over the
209
+ * per-entry cap (REQ-M3). The cap is set so a legal disclosure-minimized record can
210
+ * never reach it; this is the belt-and-suspenders named rejection. */
211
+ export declare function assertProjectionUnderCap(recordKey: string, data: RelationshipRecordData): void;
212
+ /** Input to buildRelationshipTombstoneData: the channel set of the deleted person
213
+ * (to derive the recordKey identity surface), the freshly-ticked hlc, the origin,
214
+ * and the deletedAt timestamp. */
215
+ export interface BuildRelationshipTombstoneInput {
216
+ channels: ReadonlyArray<UserChannel>;
217
+ hlc: HlcTimestamp;
218
+ origin: string;
219
+ deletedAt: string;
220
+ observed?: HlcTimestamp;
221
+ }
222
+ /**
223
+ * Build an `op:'delete'` TOMBSTONE `data` for a relationship erasure (§4.2 REQ-D4).
224
+ * recordKey = the SAME channel-set identity surface the value records key on, so the
225
+ * tombstone reaches the same human's record on every machine even though the local
226
+ * UUIDs differ. Returns null when the person has no channels (no identity surface to
227
+ * tombstone). The exact field set is `{ recordKey, op:'delete', hlc, origin,
228
+ * deletedAt }` (the REQ-D6 tombstone schema branch).
229
+ */
230
+ export declare function buildRelationshipTombstoneData(input: BuildRelationshipTombstoneInput): RelationshipRecordData | null;
231
+ /** A merged relationship view entry: the projected record fields PLUS its origin
232
+ * machine id (so a foreign record is rendered inside the untrusted-data envelope).
233
+ * This is READ-ONLY — it is NEVER written back into the local store (REQ-M7). */
234
+ export interface MergedRelationshipView {
235
+ recordKey: string;
236
+ origin: string;
237
+ /** The validated, type-clamped projection fields (the receive-side schema already
238
+ * ran on apply; here `data` is that validated portion). */
239
+ data: Record<string, unknown>;
240
+ /** True when this view entry is one of ≥2 concurrent variants of an OPEN conflict
241
+ * (append-both — both surface; the read NEVER suppresses a usable view). */
242
+ conflicted: boolean;
243
+ }
244
+ /**
245
+ * Collapse a `Map<recordKey, UnionResult>` (from
246
+ * ReplicatedStoreReader.readAll('relationships')) into the merged relationship view.
247
+ * HIGH-impact contract (REQ-M9):
248
+ * - A resolved single value ⇒ that one view entry.
249
+ * - An OPEN concurrent conflict ⇒ BOTH (all) `put` variants as separate entries
250
+ * (append-both — the read NEVER suppresses a usable view waiting on operator
251
+ * resolution). A `delete` variant contributes nothing to display.
252
+ * - A delete-resolved key (every origin's latest is a tombstone) ⇒ nothing.
253
+ * The read is READ-ONLY: a replicated record NEVER clobbers a divergent local
254
+ * record (REQ-M7) — the local store files are never written here.
255
+ */
256
+ export declare function mergeUnionToRelationships(union: Map<string, UnionResult>): MergedRelationshipView[];
257
+ /**
258
+ * Render a FOREIGN (replicated) relationship record into a session-context block,
259
+ * wrapped in an explicit `<replicated-untrusted-data origin="…">` envelope (§2.3)
260
+ * so the session model treats it as a PEER'S CLAIM to re-ground against, never a
261
+ * directive. EVERY rendered field is escaped — there is no "trusted because machine-
262
+ * set" slot. (The date/count fields were already ISO-8601/finite-number type-clamped
263
+ * on apply, so they cannot carry markup; we escape defensively regardless.)
264
+ *
265
+ * This is the foreign-record analog of RelationshipManager.getContextForPerson — a
266
+ * caller asking "what do my OTHER machines know about this person" gets this block,
267
+ * NEVER the local-authoritative context. A null `data.name` (a malformed view) yields
268
+ * null.
269
+ */
270
+ export declare function renderForeignRelationshipContext(view: MergedRelationshipView): string | null;
271
+ /**
272
+ * Build an OriginRecord for the OWN relationship store (the single-origin
273
+ * materialization the union reader merges against peer replicas). recordKey =
274
+ * derived channel-set identity surface; the envelope carries a SYNTHETIC own-origin
275
+ * HLC stamp derived deterministically from the record's lastInteraction (physical)
276
+ * so the own record has a well-formed, stable position relative to peer records.
277
+ * Returns null for a channel-less record (no identity surface). The local UUID `id`
278
+ * is NEVER carried into the replicated namespace (REQ-M4 / REQ-D17).
279
+ */
280
+ export declare function relationshipToOriginRecord(record: RelationshipRecord, origin: string): OriginRecord | null;
281
+ /** The ReplicatedKindRegistry registration for the `relationship-record` store.
282
+ * server.ts registers this onto the shared registry; the dual-registry coupling
283
+ * test asserts `kind` is also present in JOURNAL_KINDS. */
284
+ export declare const RELATIONSHIP_KIND_REGISTRATION: {
285
+ readonly kind: "relationship-record";
286
+ readonly store: "relationships";
287
+ readonly schema: StoreFieldSchema;
288
+ };
289
+ /** Convenience: the store's contributing journal kinds (for rollback-unmerge's
290
+ * kindsForStore('relationships') wiring). */
291
+ export declare function relationshipContributingKinds(): string[];
292
+ /** The store's impact tier resolver, for ReplicatedStoreReader.tierOf. Returns HIGH
293
+ * for the `relationships` store (and HIGH for any unknown store — the conservative
294
+ * append-both-and-flag direction, never a silent clobber). */
295
+ export declare function relationshipTierOf(_store: string): ImpactTier;
296
+ /** Re-export the envelope type for callers building/applying relationship-record envelopes. */
297
+ export type { ReplicatedEnvelope };
298
+ //# sourceMappingURL=RelationshipsReplicatedStore.d.ts.map