instar 1.3.602 → 1.3.604

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 (83) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +108 -2
  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 +36 -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 +12 -2
  10. package/dist/core/CoherenceJournal.js.map +1 -1
  11. package/dist/core/CredentialLocationLedger.d.ts +70 -0
  12. package/dist/core/CredentialLocationLedger.d.ts.map +1 -1
  13. package/dist/core/CredentialLocationLedger.js +126 -0
  14. package/dist/core/CredentialLocationLedger.js.map +1 -1
  15. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  16. package/dist/core/PostUpdateMigrator.js +25 -0
  17. package/dist/core/PostUpdateMigrator.js.map +1 -1
  18. package/dist/core/ThreadlinePairingReplicatedStore.d.ts +285 -0
  19. package/dist/core/ThreadlinePairingReplicatedStore.d.ts.map +1 -0
  20. package/dist/core/ThreadlinePairingReplicatedStore.js +462 -0
  21. package/dist/core/ThreadlinePairingReplicatedStore.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/core/types.d.ts +22 -0
  26. package/dist/core/types.d.ts.map +1 -1
  27. package/dist/core/types.js.map +1 -1
  28. package/dist/scaffold/templates.d.ts.map +1 -1
  29. package/dist/scaffold/templates.js +6 -0
  30. package/dist/scaffold/templates.js.map +1 -1
  31. package/dist/server/routes.d.ts.map +1 -1
  32. package/dist/server/routes.js +323 -0
  33. package/dist/server/routes.js.map +1 -1
  34. package/dist/threadline/AgentTrustManager.d.ts +201 -1
  35. package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
  36. package/dist/threadline/AgentTrustManager.js +395 -2
  37. package/dist/threadline/AgentTrustManager.js.map +1 -1
  38. package/dist/threadline/CredentialShareGate.d.ts +66 -0
  39. package/dist/threadline/CredentialShareGate.d.ts.map +1 -0
  40. package/dist/threadline/CredentialShareGate.js +82 -0
  41. package/dist/threadline/CredentialShareGate.js.map +1 -0
  42. package/dist/threadline/InboundMessageGate.d.ts +46 -1
  43. package/dist/threadline/InboundMessageGate.d.ts.map +1 -1
  44. package/dist/threadline/InboundMessageGate.js +105 -0
  45. package/dist/threadline/InboundMessageGate.js.map +1 -1
  46. package/dist/threadline/PairVerifyReceipt.d.ts +69 -0
  47. package/dist/threadline/PairVerifyReceipt.d.ts.map +1 -0
  48. package/dist/threadline/PairVerifyReceipt.js +151 -0
  49. package/dist/threadline/PairVerifyReceipt.js.map +1 -0
  50. package/dist/threadline/PairingPendingStore.d.ts +55 -0
  51. package/dist/threadline/PairingPendingStore.d.ts.map +1 -0
  52. package/dist/threadline/PairingPendingStore.js +110 -0
  53. package/dist/threadline/PairingPendingStore.js.map +1 -0
  54. package/dist/threadline/ThreadlineBootstrap.d.ts +11 -0
  55. package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
  56. package/dist/threadline/ThreadlineBootstrap.js +5 -0
  57. package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
  58. package/dist/threadline/ThreadlineCrypto.d.ts +28 -0
  59. package/dist/threadline/ThreadlineCrypto.d.ts.map +1 -1
  60. package/dist/threadline/ThreadlineCrypto.js +100 -0
  61. package/dist/threadline/ThreadlineCrypto.js.map +1 -1
  62. package/dist/threadline/ThreadlineEndpoints.d.ts +8 -0
  63. package/dist/threadline/ThreadlineEndpoints.d.ts.map +1 -1
  64. package/dist/threadline/ThreadlineEndpoints.js +5 -0
  65. package/dist/threadline/ThreadlineEndpoints.js.map +1 -1
  66. package/dist/threadline/ThreadlineMCPServer.d.ts +3 -1
  67. package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
  68. package/dist/threadline/ThreadlineMCPServer.js +107 -1
  69. package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
  70. package/dist/threadline/client/ThreadlineClient.d.ts +10 -0
  71. package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -1
  72. package/dist/threadline/client/ThreadlineClient.js +13 -0
  73. package/dist/threadline/client/ThreadlineClient.js.map +1 -1
  74. package/package.json +2 -1
  75. package/scripts/check-e2e-pairing.cjs +4 -1
  76. package/src/data/builtin-manifest.json +63 -63
  77. package/src/data/state-coherence-registry.json +26 -0
  78. package/src/scaffold/templates.ts +6 -0
  79. package/src/threadline/data/sas-wordlist-en.json +1 -0
  80. package/upgrades/1.3.603.md +39 -0
  81. package/upgrades/1.3.604.md +57 -0
  82. package/upgrades/side-effects/credential-identity-audit.md +183 -0
  83. package/upgrades/side-effects/secure-a2a-verified-pairing.md +116 -0
@@ -0,0 +1,285 @@
1
+ /**
2
+ * ThreadlinePairingReplicatedStore — replicate ONLY the verified-IDENTITY RESULT of a
3
+ * Secure A2A pairing across the agent's OWN machines (Secure A2A Verified Pairing §3.8 /
4
+ * FD11). It is the EIGHTH concrete consumer of the HLC replicated-store foundation,
5
+ * layering a `threadline-pairing-record` replicated kind onto the generic substrate
6
+ * (ReplicatedRecordEnvelope / UnionReader / ReplicationBudget) so that a pairing a HUMAN
7
+ * SAS-verified on machine A is HONORED on machine B — without ever re-deriving the SAS on B.
8
+ *
9
+ * It is the literal analog of the WS2 PII stores (RelationshipsReplicatedStore /
10
+ * TopicOperatorReplicatedStore): type-clamp on receive, untrusted-envelope render,
11
+ * fingerprint-keyed identity, tombstone on revoke, dark by default. THIS IS PURE LOGIC.
12
+ * No fs, no Date directly, no network.
13
+ *
14
+ * ── THE SECURITY BOUNDARY THAT MAKES THIS SAFE (§3.8) ────────────────────────────────
15
+ *
16
+ * Only FIVE fields ever cross a machine boundary:
17
+ * { peerFp, peerIdentityPub, state:'mutual-verified', verifiedAt, verifiedOnMachine }
18
+ * NEVER the SAS words, NEVER the shared secret, NEVER the relay token — those are bound to
19
+ * the MACHINE-LOCAL handshake's ephemeral shared secret (machine A and B derive DIFFERENT
20
+ * secrets/SAS for the same peer) and stay machine-local by design. This serializer
21
+ * STRUCTURALLY cannot leak them: its INPUT type (`VerifiedPairingResult`) does not even
22
+ * HAVE a sasWords/sharedSecret/relayToken field, and the projection enumerates the five
23
+ * fields explicitly — there is no spread of an on-disk blob, so a secret that is not a
24
+ * field of the input can never become a field of the output.
25
+ *
26
+ * ── HOW MACHINE B HONORS A REPLICATED RECORD (codex finding 1, MATERIAL) ──────────────
27
+ *
28
+ * Machine B honors a replicated `mutual-verified` record ONLY by PINNING the record's
29
+ * `peerIdentityPub`. The honoring decision lives in the CONSUMER (AgentTrustManager.
30
+ * inheritReplicatedVerification): a handshake on B for that `peerFp` whose presented
31
+ * identity key does NOT match the pinned `peerIdentityPub` is REFUSED the inheritance and
32
+ * downgraded to `pending-verification` (re-verify on B) — never auto-`mutual-verified`,
33
+ * never silently-untrusted-but-honored. The replicated grant binds to the exact identity
34
+ * key the human verified. (The `peerFp` is itself the first 16 bytes of that key, so a
35
+ * mismatch is a fingerprint-collision/substitution attempt.)
36
+ *
37
+ * INHERITED = `identity-verified`, NOT channel-ready (codex round-2 finding 1): the
38
+ * replicated record asserts only "this identity key was SAS-verified by a human somewhere".
39
+ * Before B may open credential-share to that peer, B must ADDITIONALLY have its OWN live
40
+ * encrypted+signed handshake channel (the outbound CredentialShareGate already enforces the
41
+ * encrypted-path half). So credential-share on B = inherited `identity-verified` (key-pinned)
42
+ * AND B's own live encrypted channel.
43
+ *
44
+ * A `verification-failed`/revoke propagates as a TOMBSTONE so an un-verify sticks pool-wide.
45
+ *
46
+ * SAFETY POSTURE (§3.8 / §3.10): MECHANISM, ships DARK behind
47
+ * `multiMachine.stateSync.threadlinePairing.{enabled:false, dryRun:true}` — flag-off is a
48
+ * strict no-op (single-machine agents unaffected). Nothing here blocks a user action.
49
+ */
50
+ import type { StoreFieldSchema, ReplicatedEnvelope } from './ReplicatedRecordEnvelope.js';
51
+ import type { ImpactTier, OriginRecord, UnionResult } from './UnionReader.js';
52
+ import type { ReplicatedKindBounds } from './ReplicationBudget.js';
53
+ import type { HlcTimestamp } from './HybridLogicalClock.js';
54
+ /** The stateSync config sub-key + advert suffix for this store (e.g.
55
+ * `multiMachine.stateSync.threadlinePairing.enabled`). Equal to the advert flag key
56
+ * `stateSyncReceive['threadlinePairing']`. */
57
+ export declare const THREADLINE_PAIRING_STORE_KEY = "threadlinePairing";
58
+ /** The JournalKind string this store rides — the DUAL-REGISTRY's dynamic half.
59
+ * MUST also be present in CoherenceJournal.JOURNAL_KINDS (the static half), or the
60
+ * store advertises receive=true yet serves/applies/pulls nothing. */
61
+ export declare const THREADLINE_PAIRING_RECORD_KIND = "threadline-pairing-record";
62
+ /**
63
+ * Pairing results are HIGH-impact at the REPLICATION layer (a divergent concurrent
64
+ * edit goes through APPEND-BOTH-AND-FLAG — never a silent clobber). In practice a
65
+ * verified-identity result is monotonic per (peerFp, identity key) and the consumer
66
+ * key-pins, so a genuine concurrent divergence (two machines verifying a DIFFERENT
67
+ * identity key for the SAME peerFp) is exactly the fingerprint-substitution case the
68
+ * append-both surfaces rather than auto-merges.
69
+ */
70
+ export declare const THREADLINE_PAIRING_IMPACT_TIER: ImpactTier;
71
+ /** The single state value a verified-identity result may carry across the wire (§3.8):
72
+ * ONLY `mutual-verified`. A `pending-verification` (machine-local SAS state) NEVER
73
+ * replicates; an un-verify propagates as a tombstone, not a state value. */
74
+ export declare const REPLICATED_PAIRING_STATE: "mutual-verified";
75
+ /** A peer fingerprint is the first 16 bytes (32 hex chars) of the Ed25519 public key. */
76
+ export declare const PAIRING_FP_MIN_LEN = 4;
77
+ export declare const PAIRING_FP_MAX_LEN = 128;
78
+ /** An Ed25519 public key is 32 bytes = 64 hex chars; allow a tolerant range. */
79
+ export declare const PAIRING_PUB_MAX_LEN = 256;
80
+ /** verifiedOnMachine is a machine id (origin-shaped); length-bounded. */
81
+ export declare const PAIRING_MACHINE_ID_MAX_LEN = 256;
82
+ /**
83
+ * Per-kind replication bounds. The pairing store is FEW + bounded (one record per
84
+ * verified peer — single digits in practice). The rate cap COALESCES (latest state per
85
+ * recordKey per interval) so a re-handshake/re-verify loop cannot flood the stream.
86
+ * NEVER `rotateKeep: 0`.
87
+ */
88
+ export declare const THREADLINE_PAIRING_RECORD_BOUNDS: ReplicatedKindBounds;
89
+ /** Per-entry size cap. A pairing record is tiny (5 short fields); 8KB is generous. */
90
+ export declare const THREADLINE_PAIRING_MAX_ENTRY_BYTES: number;
91
+ /**
92
+ * The store-specific field names the VALUE schema OWNS. DELIBERATELY a CLOSED set of
93
+ * FOUR (the fifth replicated field, `peerFp`, is carried by the envelope `recordKey` —
94
+ * see deriveThreadlinePairingRecordKey). The SAS words, shared secret, and relay token
95
+ * are NOT in this allowlist by construction, so the envelope validator DROPS any such
96
+ * field a hostile/buggy peer smuggles in. `recordKey`/`hlc`/`op`/`origin`/`observed`
97
+ * are reserved envelope fields, never store fields.
98
+ */
99
+ export declare const THREADLINE_PAIRING_STORE_KNOWN_FIELDS: ReadonlyArray<string>;
100
+ /** The tombstone's store-owned fields beyond the reserved envelope set. `deletedAt`
101
+ * is the only store field a delete (revoke/verification-failed) carries. */
102
+ export declare const THREADLINE_PAIRING_TOMBSTONE_KNOWN_FIELDS: ReadonlyArray<string>;
103
+ /** Is `v` a valid ISO-8601 date string (and ONLY a date — no smuggled markup)? */
104
+ export declare function isIso8601(v: unknown): v is string;
105
+ /**
106
+ * The `threadline-pairing-record` store schema — a DISCRIMINATED UNION on `op`. Strict
107
+ * typed validation on top of the envelope: TYPE-CLAMP every known field (verifiedAt
108
+ * ISO-8601-only, peerFp/peerIdentityPub hex-only, state MUST EQUAL 'mutual-verified',
109
+ * verifiedOnMachine length-bounded) so markup cannot smuggle through a render slot AND
110
+ * a non-`mutual-verified` state can never become a replicated value. Returns the
111
+ * validated store-specific object (known fields only), or null to reject the WHOLE
112
+ * record. PURE (no I/O, no mutation of `raw`).
113
+ *
114
+ * The envelope validator has ALREADY validated `op` ∈ {put,delete} before calling this.
115
+ */
116
+ export declare const threadlinePairingRecordStoreSchema: StoreFieldSchema;
117
+ /**
118
+ * Derive the cross-machine-stable recordKey for a pairing. A peer is "the same" across
119
+ * machines by their FINGERPRINT (the first 16 bytes of their Ed25519 identity key), which
120
+ * is itself stable + machine-independent. We hash it to a bounded, non-path-shaped string
121
+ * (the same shape UnionReader.conflictId uses) so the envelope's recordKey jail accepts it.
122
+ * Returns null for an empty/degenerate fingerprint (no identity surface — skip emission).
123
+ */
124
+ export declare function deriveThreadlinePairingRecordKey(peerFp: string): string | null;
125
+ /**
126
+ * The MINIMAL verified-identity RESULT — the ONLY shape that ever crosses a machine
127
+ * boundary (§3.8). This type STRUCTURALLY prevents the SAS, shared secret, and relay
128
+ * token from being replicated: it does not have those fields, so the serializer below
129
+ * (which projects ONLY this object's enumerated fields) can never emit them.
130
+ */
131
+ export interface VerifiedPairingResult {
132
+ /** The peer's fingerprint (first 16 bytes of their Ed25519 key, hex). */
133
+ peerFp: string;
134
+ /** The peer's Ed25519 identity public key (hex) — the value machine B PINS against. */
135
+ peerIdentityPub: string;
136
+ /** The single replicated state. Always 'mutual-verified' (a value record never carries
137
+ * any other state — an un-verify is a tombstone). */
138
+ state: typeof REPLICATED_PAIRING_STATE;
139
+ /** When the local operator SAS-confirmed the peer (ISO-8601). */
140
+ verifiedAt: string;
141
+ /** The machine id whose operator did the SAS comparison. */
142
+ verifiedOnMachine: string;
143
+ }
144
+ /** The `data` object a `threadline-pairing-record` journal entry carries. */
145
+ export type ThreadlinePairingRecordData = Record<string, unknown>;
146
+ /** Input to buildThreadlinePairingRecordData: the result to emit, the freshly-ticked
147
+ * hlc, this machine's origin id, and the observed-witness (or absent). */
148
+ export interface BuildThreadlinePairingRecordInput {
149
+ result: VerifiedPairingResult;
150
+ hlc: HlcTimestamp;
151
+ origin: string;
152
+ observed?: HlcTimestamp;
153
+ }
154
+ /** The named error a record-over-cap surfaces (never silent-truncate). A pairing record
155
+ * is tiny so this is purely belt-and-suspenders. */
156
+ export declare class ThreadlinePairingRecordTooLargeError extends Error {
157
+ readonly recordKey: string;
158
+ readonly bytes: number;
159
+ constructor(recordKey: string, bytes: number);
160
+ }
161
+ /**
162
+ * Build the `threadline-pairing-record` envelope `data` for an `op:'put'`. Emits ONLY
163
+ * the FIVE allowed fields (§3.8) — peerFp + peerIdentityPub + state + verifiedAt +
164
+ * verifiedOnMachine (peerFp via the envelope recordKey AND as an explicit field for the
165
+ * consumer). NEVER the SAS / shared secret / relay token — structurally impossible,
166
+ * since they are not fields of `VerifiedPairingResult` and the projection is an explicit
167
+ * enumeration (no blob spread).
168
+ *
169
+ * Returns null when the fingerprint has no identity surface (the caller skips emission).
170
+ * Throws ThreadlinePairingRecordTooLargeError if the projection somehow exceeds the cap.
171
+ */
172
+ export declare function buildThreadlinePairingRecordData(input: BuildThreadlinePairingRecordInput): ThreadlinePairingRecordData | null;
173
+ /** Throw ThreadlinePairingRecordTooLargeError if the projected data serializes over the
174
+ * per-entry cap. */
175
+ export declare function assertProjectionUnderCap(recordKey: string, data: ThreadlinePairingRecordData): void;
176
+ /** Input to buildThreadlinePairingTombstoneData: the peer fingerprint of the un-verified
177
+ * pairing, the freshly-ticked hlc, the origin, and the deletedAt timestamp. */
178
+ export interface BuildThreadlinePairingTombstoneInput {
179
+ peerFp: string;
180
+ hlc: HlcTimestamp;
181
+ origin: string;
182
+ deletedAt: string;
183
+ observed?: HlcTimestamp;
184
+ }
185
+ /**
186
+ * Build an `op:'delete'` TOMBSTONE `data` for a pairing revoke / verification-failed
187
+ * (§3.8). recordKey = the SAME fingerprint identity surface the value records key on, so
188
+ * the tombstone reaches the same peer's record on every machine — an un-verify sticks
189
+ * pool-wide even on a machine that was offline at revoke time. Returns null for an empty
190
+ * fingerprint (no identity surface to tombstone).
191
+ */
192
+ export declare function buildThreadlinePairingTombstoneData(input: BuildThreadlinePairingTombstoneInput): ThreadlinePairingRecordData | null;
193
+ /** A merged pairing view entry: the projected record fields PLUS its origin machine id.
194
+ * READ-ONLY — it is NEVER written back into the local store. */
195
+ export interface MergedPairingView {
196
+ recordKey: string;
197
+ origin: string;
198
+ /** The validated, type-clamped projection fields. */
199
+ data: Record<string, unknown>;
200
+ /** True when this view entry is one of ≥2 concurrent variants of an OPEN conflict
201
+ * (append-both — both surface, never a silent clobber). */
202
+ conflicted: boolean;
203
+ }
204
+ /**
205
+ * Collapse a `Map<recordKey, UnionResult>` into the merged pairing view.
206
+ * - A resolved single value ⇒ that one view entry.
207
+ * - An OPEN concurrent conflict ⇒ BOTH (all) `put` variants (append-both — never a
208
+ * silent clobber; two machines verifying a DIFFERENT identity key for the SAME
209
+ * peerFp is exactly the substitution case to surface, not auto-merge).
210
+ * - A delete-resolved key (every origin's latest is a tombstone) ⇒ nothing (the
211
+ * revoke-resurrection guard: a later delete wins over an earlier put).
212
+ * READ-ONLY: a replicated record NEVER clobbers a divergent local record.
213
+ */
214
+ export declare function mergeUnionToPairings(union: Map<string, UnionResult>): MergedPairingView[];
215
+ /** The verdict of evaluating whether machine B may INHERIT a replicated pairing for a
216
+ * peer it is handshaking with, given the identity key B's live handshake presented. */
217
+ export type InheritDecision =
218
+ /** No replicated mutual-verified record for this peer — nothing to inherit. */
219
+ {
220
+ honor: false;
221
+ reason: 'no-replicated-record';
222
+ }
223
+ /** A replicated record exists but its pinned key does NOT match B's handshake key —
224
+ * REFUSE inheritance + downgrade to pending-verification (re-verify on B). A
225
+ * fingerprint-substitution attempt. */
226
+ | {
227
+ honor: false;
228
+ reason: 'identity-key-mismatch';
229
+ pinnedKey: string;
230
+ presentedKey: string;
231
+ }
232
+ /** Honor: the pinned identity key matches → B inherits `identity-verified` (NOT
233
+ * channel-ready; the credential gate still requires B's own encrypted channel). */
234
+ | {
235
+ honor: true;
236
+ pinnedKey: string;
237
+ verifiedAt?: string;
238
+ verifiedOnMachine?: string;
239
+ };
240
+ /**
241
+ * Decide whether machine B HONORS a replicated mutual-verified pairing for `peerFp`,
242
+ * given the identity public key B's OWN live handshake presented for that peer
243
+ * (`presentedIdentityPub`, or undefined if B has no live handshake yet).
244
+ *
245
+ * The honoring rule (§3.8): pin the record's `peerIdentityPub`. If B has a live handshake
246
+ * AND its presented key differs from the pinned key → REFUSE (identity-key-mismatch →
247
+ * downgrade to pending-verification). If B has no live handshake yet, the inheritance is
248
+ * honored as `identity-verified` against the pinned key (B's own encrypted channel is a
249
+ * SEPARATE precondition the credential gate enforces — inherited ≠ channel-ready).
250
+ *
251
+ * Reads the merged view (the union of peer replicas) and resolves the record for `peerFp`.
252
+ * A null `presentedIdentityPub` means "no live handshake key to contradict the pin yet" —
253
+ * the inheritance is honored (key-pinned) but stays NOT-channel-ready.
254
+ */
255
+ export declare function evaluateInheritedVerification(views: ReadonlyArray<MergedPairingView>, peerFp: string, presentedIdentityPub: string | undefined): InheritDecision;
256
+ /**
257
+ * Render a FOREIGN (replicated) pairing record into a context block, wrapped in an
258
+ * explicit `<replicated-untrusted-data origin="…">` envelope so a reader treats it as a
259
+ * PEER MACHINE'S claim to re-ground against, never a directive. EVERY field is escaped.
260
+ * A malformed view (no peerFp) yields null. The SAS / secret / token can never appear
261
+ * here — they are never fields of the record.
262
+ */
263
+ export declare function renderForeignPairingContext(view: MergedPairingView): string | null;
264
+ /**
265
+ * Build an OriginRecord for the OWN pairing store (the single-origin materialization the
266
+ * union reader merges against peer replicas). recordKey = derived fingerprint identity
267
+ * surface; the envelope carries a SYNTHETIC own-origin HLC stamp derived deterministically
268
+ * from verifiedAt (physical) so the own record has a well-formed, stable position relative
269
+ * to peer records. Returns null for a degenerate record (no identity surface). The
270
+ * machine-local SAS / pending state is NEVER carried into the replicated namespace.
271
+ */
272
+ export declare function pairingResultToOriginRecord(result: VerifiedPairingResult, origin: string): OriginRecord | null;
273
+ /** The ReplicatedKindRegistry registration for the `threadline-pairing-record` store. */
274
+ export declare const THREADLINE_PAIRING_KIND_REGISTRATION: {
275
+ readonly kind: "threadline-pairing-record";
276
+ readonly store: "threadlinePairing";
277
+ readonly schema: StoreFieldSchema;
278
+ };
279
+ /** Convenience: the store's contributing journal kinds (for rollback-unmerge wiring). */
280
+ export declare function threadlinePairingContributingKinds(): string[];
281
+ /** The store's impact tier resolver, for ReplicatedStoreReader.tierOf. */
282
+ export declare function threadlinePairingTierOf(_store: string): ImpactTier;
283
+ /** Re-export the envelope type for callers building/applying pairing-record envelopes. */
284
+ export type { ReplicatedEnvelope };
285
+ //# sourceMappingURL=ThreadlinePairingReplicatedStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadlinePairingReplicatedStore.d.ts","sourceRoot":"","sources":["../../src/core/ThreadlinePairingReplicatedStore.ts"],"names":[],"mappings":"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"}