@real-life/trust-protocol 0.3.2 → 0.5.0
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/CHANGELOG.md +97 -0
- package/README.md +209 -78
- package/dist/ack.d.ts +84 -0
- package/dist/ack.d.ts.map +1 -0
- package/dist/ack.js +114 -0
- package/dist/ack.js.map +1 -0
- package/dist/adapters/vti-mediator.d.ts +169 -0
- package/dist/adapters/vti-mediator.d.ts.map +1 -0
- package/dist/adapters/vti-mediator.js +659 -0
- package/dist/adapters/vti-mediator.js.map +1 -0
- package/dist/anchor.d.ts +226 -0
- package/dist/anchor.d.ts.map +1 -0
- package/dist/anchor.js +347 -0
- package/dist/anchor.js.map +1 -0
- package/dist/{holder.d.ts → carrier-holder.d.ts} +1 -1
- package/dist/carrier-holder.d.ts.map +1 -0
- package/dist/{holder.js → carrier-holder.js} +5 -4
- package/dist/carrier-holder.js.map +1 -0
- package/dist/carrier-identity.js +4 -4
- package/dist/carrier-identity.js.map +1 -1
- package/dist/carrier.d.ts.map +1 -1
- package/dist/carrier.js +4 -3
- package/dist/carrier.js.map +1 -1
- package/dist/ceremony.d.ts +3 -2
- package/dist/ceremony.d.ts.map +1 -1
- package/dist/ceremony.js +16 -26
- package/dist/ceremony.js.map +1 -1
- package/dist/codec.d.ts +54 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +494 -0
- package/dist/codec.js.map +1 -0
- package/dist/continuity.d.ts +67 -0
- package/dist/continuity.d.ts.map +1 -0
- package/dist/continuity.js +110 -0
- package/dist/continuity.js.map +1 -0
- package/dist/core.d.ts +4 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js.map +1 -1
- package/dist/crypto.d.ts +23 -7
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +54 -20
- package/dist/crypto.js.map +1 -1
- package/dist/delivery.d.ts +31 -3
- package/dist/delivery.d.ts.map +1 -1
- package/dist/delivery.js +75 -28
- package/dist/delivery.js.map +1 -1
- package/dist/encounter/ceremony.d.ts +37 -0
- package/dist/encounter/ceremony.d.ts.map +1 -0
- package/dist/encounter/ceremony.js +662 -0
- package/dist/encounter/ceremony.js.map +1 -0
- package/dist/encounter.d.ts +91 -1
- package/dist/encounter.d.ts.map +1 -1
- package/dist/encounter.js +191 -12
- package/dist/encounter.js.map +1 -1
- package/dist/engine.d.ts +303 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1509 -0
- package/dist/engine.js.map +1 -0
- package/dist/entropy.d.ts +28 -0
- package/dist/entropy.d.ts.map +1 -0
- package/dist/entropy.js +96 -0
- package/dist/entropy.js.map +1 -0
- package/dist/events.d.ts +198 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/fixtures.d.ts +30 -0
- package/dist/fixtures.d.ts.map +1 -0
- package/dist/fixtures.js +155 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/forge.d.ts +47 -0
- package/dist/forge.d.ts.map +1 -0
- package/dist/forge.js +20 -0
- package/dist/forge.js.map +1 -0
- package/dist/group-star.d.ts +251 -0
- package/dist/group-star.d.ts.map +1 -0
- package/dist/group-star.js +348 -0
- package/dist/group-star.js.map +1 -0
- package/dist/holder-api.d.ts +165 -0
- package/dist/holder-api.d.ts.map +1 -0
- package/dist/holder-api.js +142 -0
- package/dist/holder-api.js.map +1 -0
- package/dist/holder-state-v1.d.ts +801 -0
- package/dist/holder-state-v1.d.ts.map +1 -0
- package/dist/holder-state-v1.js +2 -0
- package/dist/holder-state-v1.js.map +1 -0
- package/dist/holder-state-v2.d.ts +858 -0
- package/dist/holder-state-v2.d.ts.map +1 -0
- package/dist/holder-state-v2.js +2 -0
- package/dist/holder-state-v2.js.map +1 -0
- package/dist/identity-state.d.ts +43 -0
- package/dist/identity-state.d.ts.map +1 -0
- package/dist/identity-state.js +345 -0
- package/dist/identity-state.js.map +1 -0
- package/dist/identity.d.ts +24 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +70 -11
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +27 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -29
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +37 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +22 -0
- package/dist/internal.js.map +1 -0
- package/dist/introduction/holder.d.ts +18 -0
- package/dist/introduction/holder.d.ts.map +1 -0
- package/dist/introduction/holder.js +764 -0
- package/dist/introduction/holder.js.map +1 -0
- package/dist/introduction.d.ts +101 -0
- package/dist/introduction.d.ts.map +1 -0
- package/dist/introduction.js +132 -0
- package/dist/introduction.js.map +1 -0
- package/dist/invariants.d.ts +43 -0
- package/dist/invariants.d.ts.map +1 -0
- package/dist/invariants.js +953 -0
- package/dist/invariants.js.map +1 -0
- package/dist/keys-seed.d.ts +7 -0
- package/dist/keys-seed.d.ts.map +1 -0
- package/dist/keys-seed.js +133 -0
- package/dist/keys-seed.js.map +1 -0
- package/dist/log-memory.d.ts +12 -0
- package/dist/log-memory.d.ts.map +1 -0
- package/dist/log-memory.js +101 -0
- package/dist/log-memory.js.map +1 -0
- package/dist/membership/holder.d.ts +33 -0
- package/dist/membership/holder.d.ts.map +1 -0
- package/dist/membership/holder.js +929 -0
- package/dist/membership/holder.js.map +1 -0
- package/dist/membership.d.ts +123 -0
- package/dist/membership.d.ts.map +1 -0
- package/dist/membership.js +180 -0
- package/dist/membership.js.map +1 -0
- package/dist/message/holder.d.ts +49 -0
- package/dist/message/holder.d.ts.map +1 -0
- package/dist/message/holder.js +290 -0
- package/dist/message/holder.js.map +1 -0
- package/dist/message.d.ts +43 -0
- package/dist/message.d.ts.map +1 -0
- package/dist/message.js +51 -0
- package/dist/message.js.map +1 -0
- package/dist/ports.d.ts +237 -0
- package/dist/ports.d.ts.map +1 -0
- package/dist/ports.js +2 -0
- package/dist/ports.js.map +1 -0
- package/dist/profile.d.ts +56 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +193 -0
- package/dist/profile.js.map +1 -0
- package/dist/prompts.d.ts +14 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +69 -0
- package/dist/prompts.js.map +1 -0
- package/dist/receive.d.ts +134 -0
- package/dist/receive.d.ts.map +1 -0
- package/dist/receive.js +317 -0
- package/dist/receive.js.map +1 -0
- package/dist/results.d.ts +173 -0
- package/dist/results.d.ts.map +1 -0
- package/dist/results.js +21 -0
- package/dist/results.js.map +1 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +45 -38
- package/dist/schemas.js.map +1 -1
- package/dist/sha256.d.ts +3 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +69 -0
- package/dist/sha256.js.map +1 -0
- package/dist/star.d.ts +31 -0
- package/dist/star.d.ts.map +1 -0
- package/dist/star.js +56 -0
- package/dist/star.js.map +1 -0
- package/dist/state-builder.d.ts +42 -0
- package/dist/state-builder.d.ts.map +1 -0
- package/dist/state-builder.js +100 -0
- package/dist/state-builder.js.map +1 -0
- package/dist/state.d.ts +914 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +37 -0
- package/dist/state.js.map +1 -0
- package/dist/store-contract.d.ts +11 -0
- package/dist/store-contract.d.ts.map +1 -0
- package/dist/store-contract.js +189 -0
- package/dist/store-contract.js.map +1 -0
- package/dist/store-memory.d.ts +8 -0
- package/dist/store-memory.d.ts.map +1 -0
- package/dist/store-memory.js +17 -0
- package/dist/store-memory.js.map +1 -0
- package/dist/testing.d.ts +22 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +21 -0
- package/dist/testing.js.map +1 -0
- package/dist/trust/continuity.d.ts +71 -0
- package/dist/trust/continuity.d.ts.map +1 -0
- package/dist/trust/continuity.js +1222 -0
- package/dist/trust/continuity.js.map +1 -0
- package/dist/trust/duties.d.ts +67 -0
- package/dist/trust/duties.d.ts.map +1 -0
- package/dist/trust/duties.js +179 -0
- package/dist/trust/duties.js.map +1 -0
- package/dist/trust/entries.d.ts +139 -0
- package/dist/trust/entries.d.ts.map +1 -0
- package/dist/trust/entries.js +795 -0
- package/dist/trust/entries.js.map +1 -0
- package/dist/trust/group-star.d.ts +43 -0
- package/dist/trust/group-star.d.ts.map +1 -0
- package/dist/trust/group-star.js +188 -0
- package/dist/trust/group-star.js.map +1 -0
- package/dist/trust/mapping.d.ts +56 -0
- package/dist/trust/mapping.d.ts.map +1 -0
- package/dist/trust/mapping.js +584 -0
- package/dist/trust/mapping.js.map +1 -0
- package/dist/trust/profile.d.ts +25 -0
- package/dist/trust/profile.d.ts.map +1 -0
- package/dist/trust/profile.js +249 -0
- package/dist/trust/profile.js.map +1 -0
- package/dist/trust/star.d.ts +208 -0
- package/dist/trust/star.d.ts.map +1 -0
- package/dist/trust/star.js +588 -0
- package/dist/trust/star.js.map +1 -0
- package/dist/trust/state.d.ts +83 -0
- package/dist/trust/state.d.ts.map +1 -0
- package/dist/trust/state.js +154 -0
- package/dist/trust/state.js.map +1 -0
- package/dist/util-freeze.d.ts +3 -0
- package/dist/util-freeze.d.ts.map +1 -0
- package/dist/util-freeze.js +11 -0
- package/dist/util-freeze.js.map +1 -0
- package/dist/views.d.ts +179 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +286 -0
- package/dist/views.js.map +1 -0
- package/dist/visibility.d.ts +5 -5
- package/dist/visibility.d.ts.map +1 -1
- package/dist/visibility.js +22 -28
- package/dist/visibility.js.map +1 -1
- package/dist/wire.d.ts +218 -83
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js.map +1 -1
- package/package.json +60 -10
- package/schemas/holder-state-v1.schema.json +3880 -0
- package/schemas/holder-state-v2.schema.json +4123 -0
- package/dist/holder.d.ts.map +0 -1
- package/dist/holder.js.map +0 -1
- package/dist/probe/acks.d.ts +0 -27
- package/dist/probe/acks.d.ts.map +0 -1
- package/dist/probe/acks.js +0 -152
- package/dist/probe/acks.js.map +0 -1
- package/dist/probe/continuity.d.ts +0 -20
- package/dist/probe/continuity.d.ts.map +0 -1
- package/dist/probe/continuity.js +0 -805
- package/dist/probe/continuity.js.map +0 -1
- package/dist/probe/deps.d.ts +0 -61
- package/dist/probe/deps.d.ts.map +0 -1
- package/dist/probe/deps.js +0 -54
- package/dist/probe/deps.js.map +0 -1
- package/dist/probe/encounter.d.ts +0 -26
- package/dist/probe/encounter.d.ts.map +0 -1
- package/dist/probe/encounter.js +0 -938
- package/dist/probe/encounter.js.map +0 -1
- package/dist/probe/introduce.d.ts +0 -62
- package/dist/probe/introduce.d.ts.map +0 -1
- package/dist/probe/introduce.js +0 -306
- package/dist/probe/introduce.js.map +0 -1
- package/dist/probe/membership.d.ts +0 -96
- package/dist/probe/membership.d.ts.map +0 -1
- package/dist/probe/membership.js +0 -467
- package/dist/probe/membership.js.map +0 -1
- package/dist/probe/trust.d.ts +0 -156
- package/dist/probe/trust.d.ts.map +0 -1
- package/dist/probe/trust.js +0 -1233
- package/dist/probe/trust.js.map +0 -1
- package/dist/probe.d.ts +0 -7
- package/dist/probe.d.ts.map +0 -1
- package/dist/probe.js +0 -42
- package/dist/probe.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"membership.js","sourceRoot":"","sources":["../../src/probe/membership.ts"],"names":[],"mappings":"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","sourcesContent":["// groups.mjs — Stage C: groups over the introduced channel. PROBE.\n// DOM-free, on rltp-core + rltp-crypto (+ the shipped schemas: the invite\n// IS the DTG InvitationCredential of membership-invite/0.2, the accept IS\n// membership-accept/0.2 — both schema-validated at issuance AND receipt).\n//\n// WHAT THIS PROBE EXERCISES (the converged Membership 0.16 / Access 0.30\n// semantics, instantiated live):\n// founding — the founder signs the genesis under a FOUNDING pair\n// context (Access 3.4.1: group/<digest> cannot exist\n// before the digest does); genesisDigest = multihash\n// over the proof-free genesis; the founder then derives\n// the member anchor group/<digest> and self-enrolls.\n// prelude — the inviter cannot derive the invitee's member anchor;\n// the invitee's app derives it from the genesisDigest\n// (canonical-u before the label, Access 5.1) and answers\n// over the EXISTING relationship channel (Membership 1.2).\n// invite — a conformant DTG InvitationCredential in a delivery\n// document WITHOUT a document proof (one carrier,\n// Membership 2); invitee re-derives and compares\n// (the prelude check, Membership 3.1).\n// accept — consent, task-proved under the subject; ref = the\n// CREDENTIAL digest (decoded-bytes equality).\n// admission — the inviter runs the Access 5.3 pair-internal checks\n// (path convention, time window incl. membership-skew,\n// size budget, card enclosure profile) and updates the\n// roster; a WELCOME (probe form) carries the roster to\n// members over their channels.\n// OUT OF PROBE SCOPE (named, not faked): the full access-operation\n// envelope (oid/prev/epochs), welcome seal + keydist/epoch keys, vouch\n// paths and candidacy surfacing, removal. That is the library's next\n// growth ring — the checks here are the real ones, the transport forms\n// marked @probe are not wire-normative.\nimport { jcs, makeValidator, toU, sameDigest, tsec, calOK } from '../core.js'\nimport * as C from './deps.js'\nimport type { Person } from './deps.js'\nimport { SCHEMAS } from '../schemas.js'\n\nconst V = makeValidator(SCHEMAS)\nconst validOr = (data: any, file: string) => { const s = SCHEMAS[file]; const errs = V.validate(data, s, s); if (errs.length) throw new Error(file + ': ' + errs[0]); return data }\nconst MEMBERSHIP_SKEW = 300 // PT5M (Membership §5)\nconst TT = 'https://real-life.org/trust-tasks/'\nconst CTX3 = ['https://www.w3.org/ns/credentials/v2', 'https://firstperson.network/credentials/dtg/v1', 'https://real-life.org/rltp/v1']\nconst say = (p: Person, m: string) => p.log.push(m)\nconst uuid = (ent?: any) => ent ?? globalThis.crypto.randomUUID()\n\n// member anchor: canonical-u re-encoding BEFORE the label (Access 5.1)\nexport async function memberContext (p: Person, genesisDigest: string) {\n const label = 'group/' + toU(genesisDigest)\n const ctx = await C.labeledContext(p.rootIkm, label)\n p.contexts.set(ctx.anchor, ctx); p.contexts.set(ctx.keyAgreement, ctx)\n return ctx\n}\nconst memberCard = async (ctx: any, name: string, whenIso: string) =>\n validOr(await C.signCard(ctx, C.cardBody(ctx, { name }), whenIso), 'contact-card.schema.json')\n\n// ── founding ────────────────────────────────────────────────────────────\nexport async function foundGroup (p: Person, label: string, when: number, ent: any = {}) {\n const iso = C.iso(when)\n const founding = await C.pairContext(p.rootIkm, ent.foundingNonce ?? C.rand(32)) // pair class: the founding occasion\n const groupDid = C.anchorOfEd((await C.edFromSeed(ent.groupSeed ?? C.rand(32))).pubRaw) // group address (probe mint; Identity work)\n const genesisBody = { type: 'group-genesis@probe', group: groupDid, label, founder: founding.anchor, issuedAt: iso }\n const genesis = await C.diSign(founding, genesisBody, iso)\n const genesisDigest = await C.digestDoc(genesisBody) // proof-free signature input (Access 3.2)\n const my = await memberContext(p, genesisDigest)\n const card = await memberCard(my, p.name, iso)\n const g: any = {\n label, groupDid, genesisDigest, genesis, myMemberCtx: my, role: 'founder',\n vouchThreshold: ent.vouchThreshold ?? 1, // Bürgschaftsschwelle (Gruppenregel; UI zeigt sie nur > 1)\n vouchesReceived: new Map(), // Bürgschaften FÜR MICH (issuer -> vouch@2)\n myVouches: new Map(), // Bürgschaften VON MIR (candidate -> vouch@2)\n roster: new Map([[my.anchor, { name: p.name, card, addedAt: iso, founder: true }]]),\n threads: new Map(), // invitee member anchor -> { threadId, invite } (open invitations)\n }\n p.groups.set(genesisDigest, g)\n say(p, `Gruppe „${label}\" gegründet — Genesis unter Gründungs-pair-Anker, Member-Anker ${my.anchor.slice(0, 20)}… abgeleitet`)\n return g\n}\n\n// ── transport helper: sealed doc over an existing relationship channel ──\nasync function sendDoc (p: Person, contact: any, doc: any, ent: any = {}) {\n return { to: contact, env: await C.seal(doc, contact.channel.counterpartKa, ent) }\n}\nconst channelCtxOf = (p: Person, doc: any) => p.contexts.get(doc.recipient) ?? null\nconst contactByAnchor = (p: Person, anchor: string) => p.contacts.get(anchor) ?? null\nconst contactOfIssuer = (p: Person, issuer: string) => p.contacts.get(issuer) ?? null\n\n// ── prelude (Membership 1.2/3.1: the invitee supplies the member anchor) ─\nexport async function preludeRequest (p: Person, contactAnchor: string, genesisDigest: string, when: number, ent: any = {}) {\n const contact = contactByAnchor(p, contactAnchor)\n const g = p.groups.get(genesisDigest)\n const body = {\n id: uuid(ent.id), type: TT + 'membership-prelude-request@probe',\n issuer: contact.channel.own.anchor, recipient: contactAnchor,\n threadId: uuid(ent.threadId), issuedAt: C.iso(when),\n payload: { genesisDigest, group: g.groupDid, label: g.label },\n }\n const doc = await C.diSign(contact.channel.own, body, C.iso(when))\n say(p, `Prelude an ${contact.name}: genesisDigest der Gruppe „${g.label}\" über den Beziehungs-Kanal`)\n return sendDoc(p, contact, doc, ent)\n}\n\n// ── receive dispatch: every membership doc travels the channel sealed ───\n// Returns { handled, outbound?: [{to, env}], prompt?: entry }.\nexport async function receiveDoc (p: Person, env: any, when: number, ent: any = {}) {\n const opened = await C.openEnvelope(p, env) // Stufen 1–4, Cache-Lesung\n if (opened.duplicate) return { handled: true, duplicate: true }\n if (opened.error) return { handled: false }\n const r = await receiveDocInner(p, env, opened.doc, when, ent)\n if (r?.handled && !(r as any).error) C.effectDone(p, opened.digest)\n return r\n}\nasync function receiveDocInner (p: Person, env: any, doc: any, when: number, ent: any = {}) {\n const ctx = channelCtxOf(p, { recipient: env.rkid }) ?? p.contexts.get(env.rkid)\n if (!ctx) return { handled: false }\n if (typeof doc?.type !== 'string' || !doc.type.startsWith(TT + 'membership-')) return { handled: false, doc }\n // the sender is identified by the CHANNEL the envelope arrived on (rkid\n // names our own pair context of exactly one relationship) — membership\n // documents carry MEMBER anchors as issuer, which no contact key holds\n const from = [...p.contacts.values()].find((c) => c.channel?.own?.anchor === ctx.anchor) ?? contactOfIssuer(p, doc.issuer)\n switch (doc.type.slice((TT + 'membership-').length)) {\n case 'prelude-request@probe': {\n // form BEFORE fields (review 3, M-3): a valid signature binds\n // whatever was signed — payload.genesisDigest earns its type here\n if (!C.shaped(doc, { issuer: 'string', threadId: 'string', payload: 'object', proof: 'object' })\n || !C.shaped(doc.payload, { genesisDigest: 'string', group: 'string', label: 'string' })) return { handled: true, error: 'malformed prelude' }\n if (!from || !(await C.diVerify(doc, doc.issuer))) return { handled: true, error: 'prelude proof' }\n let my\n try { my = await memberContext(p, doc.payload.genesisDigest) } catch { return { handled: true, error: 'genesisDigest not canonical' } }\n const body = {\n id: uuid(), type: TT + 'membership-prelude-reply@probe',\n issuer: from.channel.own.anchor, recipient: doc.issuer,\n threadId: doc.threadId, issuedAt: C.iso(when),\n payload: { genesisDigest: doc.payload.genesisDigest, memberAnchor: my.anchor },\n }\n const reply = await C.diSign(from.channel.own, body, C.iso(when))\n say(p, `Prelude von ${from.name}: Member-Anker für „${doc.payload.label}\" abgeleitet und geantwortet`)\n return { handled: true, outbound: [await sendDoc(p, from, reply, ent)] }\n }\n case 'prelude-reply@probe': {\n if (!C.shaped(doc, { issuer: 'string', threadId: 'string', payload: 'object', proof: 'object' })\n || !C.shaped(doc.payload, { genesisDigest: 'string', memberAnchor: 'string' })\n || C.edRawOfAnchor(doc.payload.memberAnchor) === null) return { handled: true, error: 'malformed prelude-reply' }\n if (!from || !(await C.diVerify(doc, doc.issuer))) return { handled: true, error: 'prelude-reply proof' }\n const g = [...p.groups.values()].find((g) => g.genesisDigest === doc.payload.genesisDigest)\n if (!g) return { handled: true, error: 'unknown group' }\n // Log erst NACH dem gelungenen Bau; ein Schema-Throw aus\n // buildInvite verlässt die Empfangs-Promise nie (Review 9, P-B2)\n let inv\n try { inv = await buildInvite(p, g, from, doc.payload.memberAnchor, when, doc.threadId, ent) }\n catch (e: any) { return { handled: true, error: 'invite build: ' + String(e?.message ?? e) } }\n say(p, `${from.name}s Member-Anker erhalten — Einladung wird ausgestellt`)\n return { handled: true, outbound: [inv] }\n }\n case 'invite/0.2': return handleInvite(p, doc, from, when)\n case 'accept/0.2': return handleAccept(p, doc, from, when, ent)\n case 'welcome@probe': return handleWelcome(p, doc, from)\n case 'vouch/0.1': return handleVouch(p, doc, from)\n }\n return { handled: false, doc }\n}\n\n// ── the invite: a conformant DTG InvitationCredential (one carrier) ─────\nexport async function buildInvite (p: Person, g: any, contact: any, inviteeMemberAnchor: string, when: number, threadId: string, ent: any = {}) {\n const iso = C.iso(when), until = C.iso(when + 24 * 3600 * 1000)\n const inviterCard = await memberCard(g.myMemberCtx, p.name, iso)\n const credBody = {\n '@context': CTX3,\n type: ['VerifiableCredential', 'DTGCredential', 'InvitationCredential', 'MembershipInvite'],\n issuer: g.myMemberCtx.anchor,\n credentialSubject: { id: inviteeMemberAnchor, group: g.groupDid, genesisDigest: g.genesisDigest, card: inviterCard, name: g.label },\n validFrom: iso, validUntil: until, taskContext: threadId,\n }\n const invite = await C.diSign(g.myMemberCtx, credBody, iso)\n validOr({ invite }, 'payload-membership-invite.schema.json')\n const doc = { // document-level proof ABSENT: the credential is the one carrier (Membership 2)\n id: uuid(ent.docId), type: TT + 'membership-invite/0.2',\n issuer: g.myMemberCtx.anchor, recipient: inviteeMemberAnchor,\n threadId, issuedAt: iso, payload: { invite },\n }\n validOr(doc, 'rltp-delivery-document.schema.json')\n g.threads.set(inviteeMemberAnchor, { threadId, invite, contactAnchor: [...p.contacts.entries()].find(([, c]) => c === contact)![0] })\n say(p, `Einladung (InvitationCredential) an ${contact.name} — Thread ${threadId.slice(0, 8)}…`)\n return sendDoc(p, contact, doc, ent)\n}\n\nasync function handleInvite (p: Person, doc: any, from: any, when: number) {\n if (!from) return { handled: true, error: 'invite not from a held contact' }\n const inv = doc.payload?.invite\n try { validOr(doc.payload, 'payload-membership-invite.schema.json'); validOr(doc, 'rltp-delivery-document.schema.json') } catch (e: any) { say(p, 'Einladung schema-ungültig: ' + e.message); return { handled: true, error: 'schema' } }\n if ('proof' in doc) { say(p, 'Einladung trägt Dokument-Proof — one carrier verletzt'); return { handled: true, error: 'one-carrier' } }\n if (!(await C.diVerify(inv, inv.issuer))) return { handled: true, error: 'credential proof' }\n if (inv.issuer !== doc.issuer || inv.credentialSubject.id !== doc.recipient || inv.taskContext !== doc.threadId) return { handled: true, error: 'document bindings' }\n if (inv.credentialSubject.card.anchor !== inv.issuer || !(await C.diVerify(inv.credentialSubject.card, inv.issuer))) return { handled: true, error: 'card ownership' }\n const cardOK = !('sentTo' in inv.credentialSubject.card) && !('boundTo' in inv.credentialSubject.card) && !('deliveryHints' in inv.credentialSubject.card)\n if (!cardOK) return { handled: true, error: 'card enclosure profile' }\n if (![inv.validFrom, inv.validUntil, inv.proof.created].every(calOK) || tsec(inv.validUntil) < tsec(inv.validFrom)) return { handled: true, error: 'validity' }\n // THE PRELUDE CHECK (Membership 3.1): my own derivation from the\n // genesisDigest must equal credentialSubject.id — a substituted anchor\n // dies here, whatever the prelude's path was\n const my = await memberContext(p, inv.credentialSubject.genesisDigest)\n if (my.anchor !== inv.credentialSubject.id) { say(p, 'Prelude-Check FEHLGESCHLAGEN: Einladung nennt nicht meine Ableitung'); return { handled: true, error: 'prelude mismatch' } }\n const entry = { kind: 'invite', doc, invite: inv, from: from.name, fromAnchor: doc.issuer, fromContact: from, myMemberCtx: my, decided: false }\n p.inbox.push(entry)\n say(p, `${from.name} lädt dich in „${inv.credentialSubject.name ?? 'eine Gruppe'}\" ein (Einladung geprüft, Prelude-Check bestanden)`)\n return { handled: true, prompt: entry }\n}\n\n// ── the accept: consent, task-proved, credential-digest ref ─────────────\nexport async function acceptInvite (p: Person, entry: any, when: number, ent: any = {}) {\n const inv = entry.invite\n const iso = C.iso(when)\n const card = await memberCard(entry.myMemberCtx, p.name, iso)\n const payload = { accept: {\n group: inv.credentialSubject.group, subject: entry.myMemberCtx.anchor,\n ref: await C.digestDoc(inv), // the invitation identity: JCS over the COMPLETE credential incl. proof\n card, candidacy: ent.candidacy ?? false,\n } }\n validOr(payload, 'payload-membership-accept.schema.json')\n const body = {\n id: uuid(ent.docId), type: TT + 'membership-accept/0.2',\n issuer: entry.myMemberCtx.anchor, recipient: inv.issuer,\n threadId: inv.taskContext, issuedAt: iso, payload,\n }\n const doc = await C.diSign(entry.myMemberCtx, body, iso) // task proof under the subject (Membership 2)\n validOr(doc, 'rltp-delivery-document.schema.json')\n entry.decided = true; entry.accepted = true\n say(p, `Beitritt zu „${inv.credentialSubject.name}\" erklärt (Accept, ref = Credential-Digest)`)\n return sendDoc(p, entry.fromContact, doc, ent)\n}\n\n// ── admission: the Access 5.3 pair-internal checks, then roster + welcome ─\nasync function handleAccept (p: Person, doc: any, from: any, when: number, ent: any = {}) {\n const g = [...p.groups.values()].find((g) => g.threads.has(doc.issuer))\n if (!g) return { handled: true, error: 'no open invitation for this subject' }\n const th = g.threads.get(doc.issuer)\n const inv = th.invite, acc = doc.payload?.accept\n const fail = async (why: string) => { say(p, `Admission abgelehnt: ${why}`); return { handled: true, error: why } }\n try { validOr(doc.payload, 'payload-membership-accept.schema.json'); validOr(doc, 'rltp-delivery-document.schema.json') } catch { return fail('schema') }\n if (!(await C.diVerify(doc, doc.issuer))) return fail('accept task proof')\n if (!sameDigest(acc.ref, await C.digestDoc(inv))) return fail('ref ≠ credential digest') // decoded-bytes equality\n if (acc.subject !== inv.credentialSubject.id || acc.subject !== doc.issuer) return fail('subject binding')\n if (acc.group !== inv.credentialSubject.group || !sameDigest(inv.credentialSubject.genesisDigest, g.genesisDigest)) return fail('group binding')\n if (doc.threadId !== inv.taskContext) return fail('thread binding')\n if (acc.card.anchor !== acc.subject || !(await C.diVerify(acc.card, acc.subject))) return fail('card ownership')\n if (('sentTo' in acc.card) || ('boundTo' in acc.card) || ('deliveryHints' in acc.card)) return fail('card enclosure profile')\n if (![doc.issuedAt, doc.proof.created].every(calOK)) return fail('calendar validity')\n if (tsec(doc.issuedAt) > tsec(inv.validUntil) + MEMBERSHIP_SKEW * 1000 || tsec(doc.proof.created) > tsec(inv.validUntil) + MEMBERSHIP_SKEW * 1000) return fail('accept after validUntil + membership-skew')\n if (Buffer_(jcs(doc)) > 16384 || Buffer_(jcs({ invite: inv })) > 16384) return fail('size budget')\n if (!g.roster.has(inv.issuer)) return fail('inviter not a member')\n if (g.roster.has(acc.subject)) { say(p, 'Same-Subject-Admission: idempotent'); return { handled: true, idempotent: true } }\n // ATOMICITY (review 3, B-2): every await that can fail — digest,\n // signing, sealing — happens BEFORE the first state mutation. If the\n // welcome cannot be built, the roster has not grown, the thread still\n // stands, and the SAME delivery can be retried cleanly.\n const newEntry = { name: acc.card.name, card: acc.card, addedAt: C.iso(when), candidacy: acc.candidacy === true,\n acceptDigest: await C.digestDoc(doc), contactAnchor: th.contactAnchor }\n const contact = contactByAnchor(p, th.contactAnchor)\n const rosterAfter = [...g.roster.entries(), [acc.subject, newEntry] as const]\n const wBody = {\n id: uuid(), type: TT + 'membership-welcome@probe',\n issuer: g.myMemberCtx.anchor, recipient: acc.subject,\n threadId: doc.threadId, issuedAt: C.iso(when),\n payload: { genesisDigest: g.genesisDigest, group: g.groupDid, label: g.label, genesis: g.genesis, vouchThreshold: g.vouchThreshold ?? 1,\n roster: rosterAfter.map(([anchor, m]: any) => ({ anchor, name: m.name, addedAt: m.addedAt, founder: !!m.founder, candidacy: !!m.candidacy, acceptDigest: m.acceptDigest ?? null })) },\n }\n const welcome = await sendDoc(p, contact, await C.diSign(g.myMemberCtx, wBody, C.iso(when)), ent)\n // — from here on, synchronous only —\n g.roster.set(acc.subject, newEntry)\n { const c = contactByAnchor(p, th.contactAnchor); if (c) (c.sharedGroups ??= []).push(g.genesisDigest) } // der Inviter WEISS, wer beigetreten ist\n g.threads.delete(doc.issuer)\n say(p, `${acc.card.name} ist Mitglied von „${g.label}\" — Admission kanonisch, Consent konsumiert`)\n return { handled: true, admitted: acc.subject, outbound: [welcome] }\n}\nconst Buffer_ = (s: any) => new TextEncoder().encode(s).length\n\nasync function handleWelcome (p: Person, doc: any, from: any) {\n // form BEFORE fields (M-3): the roster travels as data and becomes\n // this person's map — every entry earns its shape before adoption\n if (!C.shaped(doc, { issuer: 'string', recipient: 'string', threadId: 'string', payload: 'object', proof: 'object' })\n || !C.shaped(doc.payload, { genesisDigest: 'string', group: 'string', label: 'string', roster: 'array' })\n || !doc.payload.roster.every((m: any) => C.shaped(m, { anchor: 'string', name: 'string', addedAt: 'string' }))) return { handled: true, error: 'malformed welcome' }\n if (toU(doc.payload.genesisDigest) !== doc.payload.genesisDigest) return { handled: true, error: 'malformed welcome (genesisDigest)' }\n if (!(await C.diVerify(doc, doc.issuer))) return { handled: true, error: 'welcome proof' }\n const gd = doc.payload.genesisDigest\n let my\n try { my = await memberContext(p, gd) } catch { return { handled: true, error: 'genesisDigest not canonical' } }\n if (doc.recipient !== my.anchor) return { handled: true, error: 'welcome not for my member anchor' }\n // a held group is never rewritten by a later welcome\n if (p.groups.has(gd)) return { handled: true, idempotent: true }\n // the welcome answers an invitation THIS device accepted (Membership\n // Tasks: it travels in the invite's thread, from the inviter, for the\n // accept's subject and the invited group) — a signed welcome from a held\n // contact without that binding adopts nothing\n const entry = p.inbox.find((e: any) => e.kind === 'invite' && e.accepted && !e.welcomed\n && e.invite.taskContext === doc.threadId && e.invite.issuer === doc.issuer\n && e.myMemberCtx.anchor === doc.recipient\n && e.invite.credentialSubject.genesisDigest === gd && e.invite.credentialSubject.group === doc.payload.group)\n if (!entry) return { handled: true, error: 'welcome without an accepted invitation' }\n const listed = new Set(doc.payload.roster.map((m: any) => m.anchor))\n if (!listed.has(doc.issuer) || !listed.has(my.anchor)) return { handled: true, error: 'welcome roster omits its issuer or subject' }\n const g: any = {\n label: doc.payload.label, groupDid: doc.payload.group, genesisDigest: gd,\n genesis: doc.payload.genesis, myMemberCtx: my, role: 'member',\n vouchThreshold: doc.payload.vouchThreshold ?? 1,\n vouchesReceived: new Map(), myVouches: new Map(),\n roster: new Map(doc.payload.roster.map((m: any) => [m.anchor, m])),\n threads: new Map(),\n }\n g.myAcceptDigest = g.roster.get(my.anchor)?.acceptDigest ?? null\n p.groups.set(gd, g)\n entry.welcomed = true\n if (from) (from.sharedGroups ??= []).push(gd) // der Invitee WEISS, wer ihn eingeladen hat\n say(p, `Willkommen in „${g.label}\" — Roster mit ${g.roster.size} Mitgliedern übernommen`)\n return { handled: true, joined: gd }\n}\n\n// ── die Bürgschaft (Task membership-vouch/0.1, Artefakt vouch@2) ────────\n// ein konformes DTG EndorsementCredential ──────────────────────────────\n// (AdmissionVouch, Access 4.2/4.3): genesisDigest bindet die Gruppe,\n// accept bindet die KONSENTIERTE Kandidatur (keine stehende Bürgschaft),\n// provenance ist selbst-attestiert (met | introduced). Signiert unter dem\n// MEMBER-Anker des Bürgen; schema-validiert bei Ausstellung UND Empfang.\n// Transport (probe): über den Beziehungs-Kanal zum KANDIDATEN — nur wer\n// einen Kanal zum Kandidaten hält, kann liefern (per-device-Wissen,\n// nichts wird erfunden); der Kandidat sammelt und zählt gegen die\n// Schwelle. Gruppenweite Sichtbarkeit der Zählung = Access-Envelope-Ring.\nexport async function vouchFor (p: Person, genesisDigest: string, candidateAnchor: string, provenance: any, when: number, ent: any = {}) {\n const g = p.groups.get(genesisDigest)\n const m = g?.roster.get(candidateAnchor)\n if (!g || !m) return { error: 'unbekannter Kandidat' }\n if (!m.candidacy) return { error: 'keine sichtbare Kandidatur (Opt-in fehlt)' }\n if (!m.acceptDigest) return { error: 'kein accept-Bezug — Bürgschaft wäre stehend' }\n if (!m.contactAnchor || !p.contacts.get(m.contactAnchor)) return { error: 'kein Kanal zum Kandidaten' }\n if (g.myVouches.has(candidateAnchor)) return { error: 'bereits gebürgt' }\n const iso = C.iso(when)\n const cred = await C.diSign(g.myMemberCtx, {\n '@context': CTX3,\n type: ['VerifiableCredential', 'DTGCredential', 'EndorsementCredential', 'AdmissionVouch'],\n issuer: g.myMemberCtx.anchor,\n validFrom: iso,\n credentialSubject: { id: candidateAnchor, endorsement: {\n type: 'AdmissionVouch', genesisDigest: toU(g.genesisDigest), accept: toU(m.acceptDigest), provenance } },\n }, iso)\n validOr(cred, 'access-vouch.schema.json')\n g.myVouches.set(candidateAnchor, cred)\n const contact = p.contacts.get(m.contactAnchor)\n const doc = {\n id: uuid(ent.docId), type: TT + 'membership-vouch/0.1',\n issuer: g.myMemberCtx.anchor, recipient: candidateAnchor,\n threadId: uuid(ent.threadId), issuedAt: iso, payload: { vouch: cred },\n }\n say(p, `Bürgschaft für ${m.name} in „${g.label}\" ausgestellt (${provenance}, accept-gebunden)`)\n return sendDoc(p, contact, await C.diSign(g.myMemberCtx, doc, iso), ent)\n}\n\n// Kandidatenseite: jede Prüfung an ihrem Punkt, dann zählen\nasync function handleVouch (p: Person, doc: any, from: any) {\n const cred = doc.payload?.vouch\n const g = [...p.groups.values()].find((g) => cred && sameDigest(cred.credentialSubject?.endorsement?.genesisDigest ?? '', g.genesisDigest))\n const fail = (why: string) => { say(p, `Bürgschaft verworfen: ${why}`); return { handled: true, error: why } }\n if (!g) return fail('unbekannte Gruppe')\n try { validOr(cred, 'access-vouch.schema.json') } catch { return fail('schema') }\n if (!(await C.diVerify(cred, cred.issuer)) || !(await C.diVerify(doc, doc.issuer))) return fail('proof')\n if (cred.issuer !== doc.issuer) return fail('issuer binding')\n if (!g.roster.has(cred.issuer)) return fail('Bürge ist kein Mitglied')\n if (cred.credentialSubject.id !== g.myMemberCtx.anchor) return fail('nicht für mich')\n if (!g.myAcceptDigest || !sameDigest(cred.credentialSubject.endorsement.accept, g.myAcceptDigest)) return fail('accept-Bindung')\n if (g.vouchesReceived.has(cred.issuer)) { say(p, 'Bürgschaft doppelt — idempotent'); return { handled: true, idempotent: true } }\n g.vouchesReceived.set(cred.issuer, cred)\n const n = g.vouchesReceived.size, need = g.vouchThreshold ?? 1\n if (n >= need) {\n const me = g.roster.get(g.myMemberCtx.anchor)\n if (me) me.candidacy = false\n g.candidacyFulfilled = true\n say(p, `Bürgschaft von ${g.roster.get(cred.issuer)?.name ?? '?'} — Schwelle erreicht (${n}/${need}), Kandidatur erfüllt`)\n } else {\n say(p, `Bürgschaft von ${g.roster.get(cred.issuer)?.name ?? '?'} erhalten (${n}/${need})`)\n }\n return { handled: true, vouched: cred.issuer, fulfilled: n >= need }\n}\n"]}
|
package/dist/probe/trust.d.ts
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import * as C from './deps.js';
|
|
2
|
-
import type { Person } from './deps.js';
|
|
3
|
-
export declare const GRADE_WAIT = 86400000;
|
|
4
|
-
export declare const ADMISSION_BOUND: bigint;
|
|
5
|
-
export declare function hmac(keyBytes: Uint8Array, msg: string): Promise<string>;
|
|
6
|
-
export declare const hmacU: (keyBytes: Uint8Array, msg: string) => Promise<string>;
|
|
7
|
-
export declare function communityContext(p: Person): Promise<C.Context>;
|
|
8
|
-
export declare const selfCard: (p: Person, whenIso: string) => Promise<C.CardBody & {
|
|
9
|
-
proof: Record<string, any>;
|
|
10
|
-
}>;
|
|
11
|
-
export declare function selfCard1(p: Person): Promise<{
|
|
12
|
-
body: {
|
|
13
|
-
type: string;
|
|
14
|
-
anchor: string;
|
|
15
|
-
keyAgreement: string;
|
|
16
|
-
};
|
|
17
|
-
proof: {
|
|
18
|
-
proofValue: string;
|
|
19
|
-
};
|
|
20
|
-
}>;
|
|
21
|
-
export declare function makeMapping(p: Person, counterpartAnchor: string, when: number): Promise<{
|
|
22
|
-
body: {
|
|
23
|
-
type: string;
|
|
24
|
-
pair: any;
|
|
25
|
-
self: string;
|
|
26
|
-
to: string;
|
|
27
|
-
card: {
|
|
28
|
-
body: {
|
|
29
|
-
type: string;
|
|
30
|
-
anchor: string;
|
|
31
|
-
keyAgreement: string;
|
|
32
|
-
};
|
|
33
|
-
proof: {
|
|
34
|
-
proofValue: string;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
revision: string;
|
|
38
|
-
issuedAt: string;
|
|
39
|
-
};
|
|
40
|
-
proof: {
|
|
41
|
-
mac1: string;
|
|
42
|
-
mac2: string;
|
|
43
|
-
};
|
|
44
|
-
}>;
|
|
45
|
-
export declare function verifyMapping(p: Person, m: any, arrivalKey?: string): Promise<boolean>;
|
|
46
|
-
export declare function forgeMapping(forger: Person, victimCard: any, pairAnchor: string, when: number): Promise<{
|
|
47
|
-
body: {
|
|
48
|
-
type: string;
|
|
49
|
-
pair: string;
|
|
50
|
-
self: any;
|
|
51
|
-
to: any;
|
|
52
|
-
card: any;
|
|
53
|
-
revision: string;
|
|
54
|
-
issuedAt: string;
|
|
55
|
-
};
|
|
56
|
-
proof: {
|
|
57
|
-
mac1: string;
|
|
58
|
-
mac2: string;
|
|
59
|
-
};
|
|
60
|
-
}>;
|
|
61
|
-
/** Departure (Sektion 2): der Abgang EINER Beziehung entfernt nur
|
|
62
|
-
* ihren Alias — „the relationships themselves remain fully active"
|
|
63
|
-
* (Review 16, B-3): der verschmolzene Eintrag (und sein Slot) stirbt
|
|
64
|
-
* erst mit der LETZTEN Beziehung */
|
|
65
|
-
export declare function departMember(p: Person, relId: string, when: number): void;
|
|
66
|
-
export declare function promotionCommit(p: Person, relId: string, self: string, contactKey: string, when: number): any;
|
|
67
|
-
/** Kettung (B-4): der neue Kopf löst über die überlebende Beziehung auf;
|
|
68
|
-
* hält die frische Beziehung schon einen EIGENEN Eintrag, verschmilzt
|
|
69
|
-
* er atomar mit dem der alten (früheste Position, Aliase, k−1) */
|
|
70
|
-
export declare function chainAdmission(p: Person, survivingRelId: string, freshRelId: string, newContactKey: string, when: number): any;
|
|
71
|
-
/**
|
|
72
|
-
* Die Rekonziliations-Sicht (5.4): {(member, grade)} der admittierten,
|
|
73
|
-
* unmaskierten Mitglieder. Maske: keine verifizierte Declaration UND
|
|
74
|
-
* grade-wait (24h ab Admission) offen → nicht in der Sicht; nach
|
|
75
|
-
* Ablauf fail-closed 'count'.
|
|
76
|
-
*/
|
|
77
|
-
export declare function viewOf(p: Person, when: number): {
|
|
78
|
-
member: string;
|
|
79
|
-
grade: string;
|
|
80
|
-
}[];
|
|
81
|
-
export declare function buildStar(p: Person, contact: any, when: number): Promise<{
|
|
82
|
-
type: string;
|
|
83
|
-
salt: string;
|
|
84
|
-
seq: string;
|
|
85
|
-
last: boolean;
|
|
86
|
-
count: string;
|
|
87
|
-
blinded: string[];
|
|
88
|
-
} | null>;
|
|
89
|
-
export declare function starMatch(p: Person, entry: any, snap: any, anchor: string): Promise<any>;
|
|
90
|
-
export declare function refreshStarInfo(p: Person): Promise<void>;
|
|
91
|
-
export declare const withIssueLock: <T>(contact: any, fn: () => Promise<T>) => Promise<T>;
|
|
92
|
-
export declare const peekRev: (contact: any, field: string) => string;
|
|
93
|
-
export declare const withContactLock: <T>(contact: any, fn: () => Promise<T>) => Promise<T>;
|
|
94
|
-
/**
|
|
95
|
-
* reconcile (5.4 — die eine Regel): divergiert die Sicht von der
|
|
96
|
-
* Baseline (⊥ = divergent, das New-Head-Korollar), und ist nicht
|
|
97
|
-
* pausiert, wird der AKTUELLE Stand geliefert — an JEDEM weiteren
|
|
98
|
-
* Delivery-Kontakt unter frischem, höherem Salt (5.4 wörtlich,
|
|
99
|
-
* Review 23; Salts sind ausdrücklich nicht dicht). Es gibt keinen
|
|
100
|
-
* Same-View-Retry; die 4.4-Byte-Identität ist eine Formvorschrift
|
|
101
|
-
* für Chunk-Retries, keine Anordnung.
|
|
102
|
-
*/
|
|
103
|
-
export declare function reconcile(p: Person, counterpartAnchor: string, when: number, ent?: any): Promise<{
|
|
104
|
-
to: any;
|
|
105
|
-
kind: string;
|
|
106
|
-
envs: any[];
|
|
107
|
-
salt: string;
|
|
108
|
-
} | null>;
|
|
109
|
-
export declare const stampGradeOut: (p: Person, contact: any, grade: string) => void;
|
|
110
|
-
export declare function setTrust(p: Person, counterpartAnchor: string, when: number, ent?: any): Promise<{
|
|
111
|
-
to: any;
|
|
112
|
-
outbound: any[];
|
|
113
|
-
env: any;
|
|
114
|
-
error?: undefined;
|
|
115
|
-
} | {
|
|
116
|
-
error: string;
|
|
117
|
-
}>;
|
|
118
|
-
/**
|
|
119
|
-
* setGrade (5.5): die spätere Grade-Entscheidung des Subjekts — auch
|
|
120
|
-
* 'count' (die Wahl gehört dem Kontakt; register no. 3 kollabiert sie
|
|
121
|
-
* nur im Default-UX). Producer der Declaration, Revision monoton.
|
|
122
|
-
*/
|
|
123
|
-
export declare function setGrade(p: Person, counterpartAnchor: string, grade: 'count' | 'blinded', when: number, ent?: any): Promise<{
|
|
124
|
-
to: any;
|
|
125
|
-
outbound: any[];
|
|
126
|
-
error?: undefined;
|
|
127
|
-
} | {
|
|
128
|
-
error: string;
|
|
129
|
-
}>;
|
|
130
|
-
export declare function setTrustPaused(p: Person, counterpartAnchor: string, paused: boolean): void;
|
|
131
|
-
/**
|
|
132
|
-
* V2 (5.5): auf dem neuen Kopf stellt das Subjekt seinen zuletzt
|
|
133
|
-
* ausgestellten Grade neu aus — Revision startet im neuen Tupel-Scope,
|
|
134
|
-
* keine Nutzerfrage; das Mapping reist als MAY (6a.4) mit. Die Pause
|
|
135
|
-
* supprimiert dies NICHT (5.5 kennt keine Pause-Ausnahme — sie
|
|
136
|
-
* supprimiert nur die Stern-Delivery); die Pflicht (trustReissueDue)
|
|
137
|
-
* stirbt erst mit der QUITTIERTEN Zustellung der Declaration.
|
|
138
|
-
*/
|
|
139
|
-
export declare function reissueTrust(p: Person, counterpartAnchor: string, when: number, ent?: any): Promise<{
|
|
140
|
-
to: any;
|
|
141
|
-
outbound: any[];
|
|
142
|
-
} | null>;
|
|
143
|
-
/**
|
|
144
|
-
* Der Producer-Sweep (Host-Vertrag): erst die V2-Pflichten, dann die
|
|
145
|
-
* 5.4-Rekonziliation je Empfänger. Idempotent, per-recipient resilient,
|
|
146
|
-
* Retries byte-identisch.
|
|
147
|
-
*/
|
|
148
|
-
export declare function starRefreshAll(p: Person, when: number, ent?: any): Promise<any[] & {
|
|
149
|
-
failures: {
|
|
150
|
-
to: string;
|
|
151
|
-
error: string;
|
|
152
|
-
}[];
|
|
153
|
-
}>;
|
|
154
|
-
export declare function receiveTrustDoc(p: Person, env: any, when: number, ent?: any): Promise<any>;
|
|
155
|
-
export declare function receiveAck(p: Person, env: any): Promise<any>;
|
|
156
|
-
//# sourceMappingURL=trust.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/probe/trust.ts"],"names":[],"mappings":"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"}
|