@ours.network/sdk 2.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -2
- package/dist/api/contacts.js +1 -1
- package/dist/api/files.d.ts +4 -6
- package/dist/api/files.js +1 -1
- package/dist/api/history.d.ts +14 -0
- package/dist/api/history.js +2 -0
- package/dist/api/identity.js +1 -1
- package/dist/api/messaging.d.ts +7 -7
- package/dist/api/messaging.js +1 -1
- package/dist/api/profile.js +1 -1
- package/dist/api/types.d.ts +21 -69
- package/dist/book.js +1 -1
- package/dist/boot.js +1 -1
- package/dist/chunk-23BNCGF6.js +2 -0
- package/dist/{chunk-64C2NWXL.js → chunk-2TG2NHED.js} +1 -1
- package/dist/{chunk-HPPNU5YV.js → chunk-32DN6MBS.js} +1 -1
- package/dist/{chunk-T76BFV6S.js → chunk-4NP2YNWX.js} +1 -1
- package/dist/{chunk-7JZS2BAP.js → chunk-5DE7MMDG.js} +1 -1
- package/dist/{chunk-OWZIFNZN.js → chunk-7GBZLXV2.js} +1 -1
- package/dist/{chunk-2PVVBIA7.js → chunk-7M7H7ZAV.js} +1 -1
- package/dist/chunk-DRALQ2W5.js +2 -0
- package/dist/chunk-EPLWWBVB.js +2 -0
- package/dist/chunk-GZNPN3B5.js +4 -0
- package/dist/chunk-H7CVIQ7G.js +2 -0
- package/dist/{chunk-OA7XXAFG.js → chunk-HZCFYJAG.js} +1 -1
- package/dist/chunk-JOKNFUW3.js +4 -0
- package/dist/chunk-JTBQO6IT.js +2 -0
- package/dist/chunk-KIS5USR4.js +2 -0
- package/dist/chunk-OMUFZVAY.js +4 -0
- package/dist/chunk-P62PZ44T.js +2 -0
- package/dist/{chunk-3CDGP5EO.js → chunk-Q44JJZFN.js} +1 -1
- package/dist/chunk-S4JI2DB5.js +2 -0
- package/dist/{chunk-3KI5FM4I.js → chunk-SEZTXIKN.js} +1 -1
- package/dist/chunk-TXAIJEXA.js +171 -0
- package/dist/{chunk-CGAOZPMV.js → chunk-USG7J2P2.js} +1 -1
- package/dist/chunk-UVQY3IFO.js +2 -0
- package/dist/chunk-VIZVYPRQ.js +2 -0
- package/dist/chunk-WXCHUQ3J.js +2 -0
- package/dist/client/http.d.ts +7 -8
- package/dist/client/http.js +1 -1
- package/dist/client/select.js +1 -1
- package/dist/client.js +1 -1
- package/dist/cluster/control.js +1 -1
- package/dist/cluster/manifest.js +1 -1
- package/dist/connector.js +1 -1
- package/dist/events.d.ts +6 -12
- package/dist/events.js +1 -1
- package/dist/gc.js +1 -1
- package/dist/history.d.ts +195 -0
- package/dist/history.js +2 -0
- package/dist/http/api-routes.d.ts +5 -6
- package/dist/http/api-routes.js +1 -1
- package/dist/http/server.js +1 -1
- package/dist/identity/hierarchy.js +1 -1
- package/dist/identity/lease.js +1 -1
- package/dist/identity/lifecycle.js +1 -1
- package/dist/identity/model.d.ts +0 -1
- package/dist/identity/model.js +1 -1
- package/dist/identity/provision.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/messaging/send.d.ts +8 -2
- package/dist/messaging/send.js +1 -1
- package/dist/mufl/handlers.js +1 -1
- package/dist/mufl/tx.js +1 -1
- package/dist/mufl_code/{7962BB01B1D3E782A1F80B083A900AEC30BAC8F8CE79282B31821802B94A39B6.muflo → 351F16D444E6DAA252D4A8D829D17204360D9015FEF670ACE68FB4747BB3B14E.muflo} +0 -0
- package/dist/notify.d.ts +0 -1
- package/dist/notify.js +1 -1
- package/dist/render/adapt-to-json.d.ts +0 -5
- package/dist/render/adapt-to-json.js +1 -1
- package/dist/runtime/env.js +1 -1
- package/dist/state.js +1 -1
- package/dist/sweeps.js +1 -1
- package/dist/uploads.js +1 -1
- package/package.json +5 -3
- package/dist/api/conversations.d.ts +0 -48
- package/dist/api/conversations.js +0 -2
- package/dist/chunk-AQK45DI7.js +0 -2
- package/dist/chunk-CGXQP3Q4.js +0 -2
- package/dist/chunk-CIHGEBUR.js +0 -2
- package/dist/chunk-K7TLSZ3X.js +0 -2
- package/dist/chunk-LKFYUCN7.js +0 -2
- package/dist/chunk-MQ5AXTPT.js +0 -5
- package/dist/chunk-PQXV4GQ5.js +0 -2
- package/dist/chunk-R5ISAB5B.js +0 -2
- package/dist/chunk-TIBWO3T3.js +0 -2
- package/dist/chunk-TUWHVJ37.js +0 -6
- package/dist/chunk-V7PKYHV7.js +0 -2
- package/dist/chunk-W2BPK7VV.js +0 -2
- package/dist/chunk-XT75POTM.js +0 -2
- package/dist/chunk-XYU2DSWR.js +0 -2
- package/dist/inbox.d.ts +0 -38
- package/dist/inbox.js +0 -2
package/dist/chunk-K7TLSZ3X.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as E,b as k,d as A}from"./chunk-2PVVBIA7.js";import{A as y,H as T,I,J as _,M as R,V as x}from"./chunk-MQ5AXTPT.js";import{a as S}from"./chunk-TUWHVJ37.js";import{a as l,d as u,e as d,g as w}from"./chunk-7JZS2BAP.js";import{a as $,c as m,q as v}from"./chunk-CIHGEBUR.js";import{c as s,i as r}from"./chunk-T76BFV6S.js";import{join as b}from"node:path";import*as i from"node:fs";function D(e){try{$.remove_packet(e.cid)}catch(t){r(`remove_packet(${e.cid}) failed:`,String(t))}m.delete(e.name);try{x(e)}catch(t){r(`failed to unpublish "${e.name}" from the contact book:`,String(t))}l.has(e.name)&&(l.delete(e.name),w()),e.name===k&&(E(null),A());try{i.rmSync(e.dir,{recursive:!0,force:!0}),y.delete(e.name)}catch(t){return`deleting ${e.dir} failed: ${String(t)}`}return null}function F(e,t){let n=e.temp;return n?(n.closing||(n.closing=(async()=>{r(`[${e.name}] closing temporary identity (${t})`);let o=[];try{o=T(a=>S(_(e,"::a2a_messaging::list_contacts",a)))}catch(a){r(`[${e.name}] contact snapshot failed during close (continuing with local cleanup):`,String(a))}let p=0,c=0;u.add(e.name);try{for(let a of o)try{await I(async C=>{let h=(await R(e,"::a2a_messaging::remove_contact",{contact:a.container_id},C)).Reduce("notified");return h.IsNil()?!1:h.GetBoolean()})?p++:c++}catch(g){c++,r(`[${e.name}] remove-me to ${a.container_id} failed (continuing):`,String(g))}}finally{u.delete(e.name)}let f=D(e);return f?r(`[${e.name}] temporary identity close: LOCAL DELETE FAILED \u2014 ${f}`):r(`[${e.name}] temporary identity closed: ${o.length} contact(s), ${p} remove-me notice(s) queued, ${c} not sent (delivery unverified by design)`),{attempted:o.length,notified:p,failed:c,deleteError:f}})()),n.closing):Promise.reject(new Error(`identity "${e.name}" is not temporary`))}function H(){for(let e of[...m.values()]){let t=e.temp;if(!t||t.closing||d(t.owner.pid))continue;let n=l.get(e.name);n&&d(n.pid)||F(e,`stale lease \u2014 owner pid ${t.owner.pid} is dead`).catch(o=>r(`[${e.name}] stale-temp reclaim failed:`,String(o)))}}function J(){if(i.existsSync(s))for(let e of i.readdirSync(s,{withFileTypes:!0})){if(!e.isDirectory()||m.has(e.name))continue;let t=b(s,e.name),n=v(t);if(!(!n||d(n.owner.pid)))try{i.rmSync(t,{recursive:!0,force:!0}),y.delete(e.name),r(`[${e.name}] removed orphaned temporary-identity dir (owner pid ${n.owner.pid} dead, no live packet)`)}catch(o){r(`[${e.name}] failed to remove orphaned temporary-identity dir:`,String(o))}}}export{D as a,F as b,H as c,J as d};
|
package/dist/chunk-LKFYUCN7.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
var i=new Set(["e2e_app_recv","migration_deferred_flush"]);function a(e){let n=new Set;for(let t of e){if(!t||typeof t!="object")continue;let r=t.event;if(typeof r!="string"||!i.has(r))continue;let s=t.wire_id;typeof s=="string"&&s.length>0&&n.add(s)}return n}function o(e,n){return e&&n.has(e)?"e2e":"legacy"}function g(e,n){let t=o(e.wire_id,n);return{msg_id:e.msg_id,wire_id:e.wire_id,from:{id:e.sender_id,name:e.sender_name},encryption:t,transport:t==="e2e"?"double_ratchet":"legacy_box",text:e.text,date:e.date,status:e.status,reply_to:e.reply_to}}function d(e,n){let t=e.map(r=>g(r,n));return{count:t.length,messages:t}}export{a,o as b,g as c,d};
|
package/dist/chunk-MQ5AXTPT.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as H}from"./chunk-YRPUM6JG.js";import{c as me}from"./chunk-TUWHVJ37.js";import{d as de}from"./chunk-7JZS2BAP.js";import{a as L,c as x,d as k,e as G,f as oe,g as se,h as K,i as D,j as I,k as B,l as M,p as ae,v as ce}from"./chunk-CIHGEBUR.js";import{c as V,i as l,o as j,p as ne}from"./chunk-T76BFV6S.js";import{a as ue}from"./chunk-LKFYUCN7.js";import{c as le,f as fe,g as pe}from"./chunk-XYU2DSWR.js";import{join as Ie}from"node:path";import*as _ from"node:fs";import{AdaptObjectLifetime as $e}from"@adapt-toolkit/sdk/common";import{object_to_adapt_value as be}from"@adapt-toolkit/sdk/wrapper";import*as y from"node:fs";import{randomBytes as Ee}from"node:crypto";import*as $ from"node:fs";import{randomBytes as Te}from"node:crypto";import{PacketWrapperConfigurator as ze}from"@adapt-toolkit/sdk/wrappers";import{AdaptObjectLifetime as Ve}from"@adapt-toolkit/sdk/common";function Je(e){let t=[],s=e.Reduce("degraded");if(s.IsNil())return t;for(let r=0;;r++){let a=s.Reduce(r);if(a.IsNil())break;t.push({cid:a.Reduce("container_id").Visualize(),name:a.Reduce("name").Visualize(),attempts:Number(a.Reduce("attempts").Visualize()),queued:Number(a.Reduce("queued").Visualize())})}return t}function Ne(e){let t=[],s=e.Reduce("queues");if(s.IsNil())return t;for(let r=0;;r++){let a=s.Reduce(r);if(a.IsNil())break;t.push({cid:a.Reduce("container_id").Visualize(),queued:Number(a.Reduce("queued").Visualize()),degraded:a.Reduce("degraded").GetBoolean()})}return t}async function X(e,t){try{let s=await h(async r=>{let a=await v(e,"::a2a_messaging::flush_deferred",{contact:t},r);return Number(a.Reduce("flushed").Visualize())});s>0&&l(`[${e.name}] flushed ${s} deferred message(s) to ${t.slice(0,12)}\u2026`)}catch(s){l(`[${e.name}] deferred flush to ${t.slice(0,12)}\u2026 failed:`,String(s))}}async function ge(e){try{let t=await h(async r=>{let a=await v(e,"::a2a_messaging::restore_degraded_contacts",{},r);return Number(a.Reduce("requested").Visualize())});t>0&&l(`[${e.name}] contact restore requested for ${t} degraded contact(s)`);let s=S(r=>Ne(R(e,"::a2a_messaging::list_deferred_queues",r)));for(let r of s)r.degraded||await X(e,r.cid)}catch(t){l(`[${e.name}] contact-restore sweep failed:`,String(t))}}async function xe(e){try{let t=await h(async s=>{let r=await v(e,"::a2a_messaging::reconcile_advertise",{},s),a=d=>r.Reduce(d).IsNil()?0:Number(r.Reduce(d).Visualize());return{changed:/true/i.test(r.Reduce("changed").Visualize()),capabilityAdvertised:a("capability_advertised"),legacyReadvertised:a("legacy_readvertised")}});(t.capabilityAdvertised>0||t.legacyReadvertised>0)&&l(`[${e.name}] capability reconcile: changed=${t.changed} advertised=${t.capabilityAdvertised} legacy_migration_bootstrap=${t.legacyReadvertised}`)}catch(t){l(`[${e.name}] capability reconcile sweep failed:`,String(t))}}var Y=new Set;function q(e){if(!Y.has(e.name)){Y.add(e.name);for(let t of[2e3,15e3])setTimeout(()=>{t===15e3&&Y.delete(e.name);let s=x.get(e.name);s&&xe(s)},t)}}async function We(e){try{let t=await h(async s=>{let r=await v(e,"::a2a_messaging::readvertise_e2e_recovery",{},s);return Number(r.Reduce("readvertised").Visualize())});t>0&&l(`[${e.name}] re-advertised fresh AD to ${t} e2e contact(s) (session recovery)`)}catch(t){l(`[${e.name}] e2e recovery re-advertise failed:`,String(t))}try{await h(async t=>{await v(e,"::a2a_messaging::sweep_e2e_migrations",{},t)})}catch(t){l(`[${e.name}] e2e migration sweep failed:`,String(t))}try{let t=await h(async s=>{let r=await v(e,"::a2a_messaging::redrive_unacked_sweep",{},s),a=d=>r.Reduce(d).IsNil()?0:Number(r.Reduce(d).Visualize());return{redriven:a("redriven_contacts"),purged:a("purged_contacts"),deferred:a("deferred_contacts")}});(t.redriven>0||t.purged>0||t.deferred>0)&&l(`[${e.name}] unacked sweep: redriven=${t.redriven} ttl_purged=${t.purged} deferred=${t.deferred} contact(s)`)}catch(t){l(`[${e.name}] unacked redrive sweep failed:`,String(t))}}function ye(e,t){e.pw.on_return_data=s=>{let r=new Ve;s.Attach(r);try{let a=s.Reduce("kind").Visualize();if(a==="save_state"){z(e);return}if(a==="notify_agent"){let i=s.Reduce("payload"),f=i.Reduce("event").Visualize();if(f==="message_received"){let o=i.Reduce("sender_name").Visualize(),n=i.Reduce("sender_id"),u=n.IsNil()?"":n.Visualize(),c=i.Reduce("msg_id").Visualize(),p=i.Reduce("wire_id"),m=p.IsNil()?"":p.Visualize(),w=i.Reduce("date").Visualize();g(e,{event:"message_received",from:o,sender_name:o,sender_id:u,msg_id:c,wire_id:m,date:w}),P(e),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] new message from ${o} (#${c})`))}else if(f==="receipt_received"){let o=i.Reduce("sender_id"),n=o.IsNil()?"":String(o.Visualize()),u=i.Reduce("kind"),c=u.IsNil()?"":String(u.Visualize()),p=[],m=i.Reduce("wire_ids");if(!m.IsNil())for(let O=0;;O++){let re=m.Reduce(O);if(re.IsNil())break;p.push(String(re.Visualize()))}let w=i.Reduce("date"),b=w.IsNil()?new Date().toISOString():String(w.Visualize());g(e,{event:"receipt_received",sender_id:n,kind:c,wire_ids:p,date:b})}else if(f==="file_received"){let o=i.Reduce("sender_name").Visualize(),n=i.Reduce("sender_id").Visualize(),u=i.Reduce("file_id").Visualize(),c=i.Reduce("wire_id").Visualize(),p=i.Reduce("filename").Visualize(),m=i.Reduce("mime").Visualize(),w=i.Reduce("bytes").Visualize(),b=i.Reduce("date").Visualize();g(e,{event:"file_received",from:o,sender_id:n,file_id:u,wire_id:c,filename:p,mime:m,bytes:w,date:b}),P(e),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] new file ${p} (${w} B) from ${o} (sender_id ${n}, file_id ${u}, wire_id ${c})`))}else if(f==="contact_accepted"){let o=i.Reduce("name").Visualize(),n=i.Reduce("container_id").Visualize();q(e),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] contact "${o}" (${n}) accepted your invite.`))}else if(f==="local_contact_added"){let o=i.Reduce("name").Visualize(),n=i.Reduce("container_id").Visualize();q(e),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] local contact "${o}" (${n}) connected via the contact book.`))}else if(f==="contact_name_collision"){let o=i.Reduce("message").Visualize(),n=i.Reduce("desired").Visualize(),u=i.Reduce("assigned").Visualize(),c=i.Reduce("existing_container_id").Visualize(),p=i.Reduce("container_id").Visualize();g(e,{event:"contact_name_collision",desired:n,assigned:u,existing_container_id:c,container_id:p}),l(`[${e.name}] CONTACT NAME COLLISION \u2014 ${o}`),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] \u26A0 ${o}`))}else if(f==="sibling_contact_added"){let o=i.Reduce("name").Visualize(),n=i.Reduce("container_id").Visualize();g(e,{event:"sibling_contact_added",from:o}),q(e),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] sibling "${o}" (${n}) connected (intra-root auto-accept).`))}else if(f==="local_contact_request"){let o=i.Reduce("name").Visualize(),n=i.Reduce("container_id").Visualize();g(e,{event:"local_contact_request",from:o}),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] pending local introduction from "${o}" (${n}) \u2014 approve or reject with respond_to_introduction.`))}else if(f==="pending_message"){let o=i.Reduce("sender_name").Visualize(),n=i.Reduce("queued").Visualize();g(e,{event:"pending_message",from:o,queued:n}),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] "${o}" queued a message awaiting introduction approval (${n} queued).`))}else if(f==="e2e_restore_rejected")g(e,{event:"e2e_restore_rejected"}),l(`[${e.name}] E2E RESTORE REJECTED \u2014 corrupt session blob failed pickle_key validation; reset to empty e2e state, self-heal fallback will re-establish`),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] persisted e2e sessions were corrupt \u2014 rejected cleanly, sessions re-establishing`));else if(f==="contact_restored"){let o=i.Reduce("name").Visualize(),n=i.Reduce("container_id").Visualize();g(e,{event:"contact_restored",from:o}),l(`[${e.name}] contact "${o}" restored (re-keyed)`),process.nextTick(()=>void X(e,String(n)))}else if(f==="migration_active"){let o=i.Reduce("cid").Visualize(),n=i.Reduce("role").Visualize(),u=T(i,"epoch"),c=T(i,"session_id");g(e,{event:"migration_active",cid:String(o),role:String(n),...u?{epoch:u}:{},...c?{session_id:c}:{}}),l(`[migration] active cid=${o} role=${n}${u?` epoch=${u}`:""}${c?` session_id=${c}`:""}`)}else if(f==="e2e_app_send"){let o=i.Reduce("cid").Visualize(),n=T(i,"session_id"),u=i.Reduce("olm_type").Visualize(),c=i.Reduce("wire_id").Visualize(),p=i.Reduce("retained").IsNil()?void 0:i.Reduce("retained").GetBoolean(),m=[],w=i.Reduce("evicted");if(!w.IsNil())for(let b=0;;b++){let O=w.Reduce(b);if(O.IsNil())break;m.push(String(O.Visualize()))}g(e,{event:"e2e_app_send",cid:String(o),session_id:n,olm_type:String(u),wire_id:String(c),...p===!1?{retained:!1}:{},...m.length?{evicted:m}:{}}),l(`[${e.name}] [e2e-app] send cid=${o} session_id=${n} olm_type=${u} wire_id=${c}${p===!1?" retained=false":""}${m.length?` evicted=${m.join(",")}`:""}`),m.length&&process.nextTick(()=>t.onNotify(e.name,`[${e.name}] redrive window overflow: ${m.length} older unacked send(s) lost their auto-resend guarantee (${m.join(", ")})`))}else if(f==="dedup_degraded"){let o=i.Reduce("cid").Visualize(),n=i.Reduce("dropped_wire_id").Visualize();g(e,{event:"dedup_degraded",cid:String(o),dropped_wire_id:String(n)}),l(`[${e.name}] [e2e-app] DEDUP DEGRADED cid=${o} dropped_wire_id=${n} (storage ceiling \u2014 a late redrive of that id could re-deposit)`),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] dedup window overflowed for ${String(o).slice(0,12)}\u2026 \u2014 one oldest entry dropped (guarantee loss surfaced)`))}else if(f==="e2e_delivery_expired"){let o=i.Reduce("cid").Visualize(),n=[],u=i.Reduce("wire_ids");if(!u.IsNil())for(let c=0;;c++){let p=u.Reduce(c);if(p.IsNil())break;n.push(String(p.Visualize()))}g(e,{event:"e2e_delivery_expired",cid:String(o),wire_ids:n}),l(`[${e.name}] [e2e-app] delivery EXPIRED (2-day TTL, receipt never arrived) cid=${o} wire_ids=${n.join(",")}`),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] ${n.length} message(s)/file(s) to ${String(o).slice(0,12)}\u2026 expired undelivered (no receipt within 2 days)`))}else if(f==="e2e_app_recv"){let o=i.Reduce("cid").Visualize(),n=T(i,"session_id"),u=i.Reduce("ok").GetBoolean(),c=i.Reduce("wire_id").Visualize(),p=i.Reduce("code").IsNil()?void 0:String(i.Reduce("code").Visualize()),m=!i.Reduce("duplicate").IsNil(),w=!i.Reduce("file").IsNil();g(e,{event:"e2e_app_recv",cid:String(o),session_id:n,ok:u,wire_id:String(c),...p?{code:p}:{},...m?{duplicate:!0}:{},...w?{file:!0}:{}}),l(`[${e.name}] [e2e-app] recv cid=${o} session_id=${n} ok=${u} wire_id=${c}${p?` code=${p}`:""}${m?" duplicate=true":""}${w?" file=true":""}`)}else if(f==="e2e_rekey"){let o=i.Reduce("cid").Visualize(),n=i.Reduce("role").Visualize(),u=T(i,"session_id"),c=i.Reduce("attempts").IsNil()?void 0:String(i.Reduce("attempts").Visualize()),p=i.Reduce("peer_supports").IsNil()?void 0:String(i.Reduce("peer_supports").Visualize()),m=i.Reduce("rejected").IsNil()?void 0:String(i.Reduce("rejected").Visualize());g(e,{event:"e2e_rekey",cid:String(o),role:String(n),...u?{session_id:u}:{},...c?{attempts:c}:{},...p?{peer_supports:p}:{},...m?{rejected:m}:{}}),l(`[${e.name}] [e2e-rekey] cid=${o} role=${n}${u?` session_id=${u}`:""}${c?` attempts=${c}`:""}${p?` peer_supports=${p}`:""}${m?` rejected=${m}`:""}`)}else if(f==="migration_deferred_flush"){let o=i.Reduce("cid").Visualize(),n=i.Reduce("wire_id").Visualize();g(e,{event:"migration_deferred_flush",cid:String(o),wire_id:String(n)}),l(`[migration] flush-notify cid=${o} wire_id=${n} (deferred\u2192e2e; core delivers)`)}else if(f==="migration_stalled"){let o=i.Reduce("cid").Visualize(),n=i.Reduce("phase").Visualize(),u=i.Reduce("attempts").Visualize();g(e,{event:"migration_stalled",cid:String(o),phase:String(n),attempts:String(u)}),l(`[migration] stalled-notify cid=${o} phase=${n} attempts=${u} (core re-drives via sweep)`)}else if(f==="downgrade_refused"){let o=i.Reduce("cid").Visualize(),n=i.Reduce("wire_id"),u=n.IsNil()?"":String(n.Visualize());g(e,{event:"downgrade_refused",cid:String(o),...u?{wire_id:u}:{}}),l(`[e2e-route] downgrade-dropped cid=${o}${u?` wire_id=${u}`:""} (legacy plaintext from a migrated peer \u2014 dropped by core)`),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] a message from a migrated contact was rejected as an unsafe downgrade (dropped).`))}else if(f==="contact_removed"){let o=String(i.Reduce("cid").Visualize()),n=de.has(e.name);g(e,{event:"contact_removed",cid:o,by:n?"local":"peer"}),n||(l(`[${e.name}] contact ${o} removed you (authenticated peer removal notice) \u2014 dropped from contacts`),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] contact ${o.slice(0,12)}\u2026 removed you as a contact (the removal was applied locally too).`)))}else if(f==="monitoring_disabled"){let o=String(i.Reduce("cid").Visualize()),n=i.Reduce("cause"),u=n.IsNil()?"":String(n.Visualize());g(e,{event:"monitoring_disabled",cid:o,...u?{cause:u}:{}}),l(`[${e.name}] monitoring disabled (cid=${o}${u?` cause=${u}`:""})`),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] the monitoring/control-plane binding was disabled${u==="control_plane_removed_contact"?" \u2014 the control plane removed you as a contact":""}.`))}else f==="control_request"||f==="host_provision_child"||f==="host_destroy_child"||f==="host_mint_child_invite"||f==="host_set_child_monitoring"?l(`[${e.name}] ${f}: the daemon-side control plane is removed \u2014 ignoring`):g(e,{event:f});return}let d=e.pending.shift();if(!d)return;clearTimeout(d.timer),d.resolve(s.Reduce("payload").Detach())}finally{r.Finalize()}},e.pw.on_transaction_failure=s=>{let r=e.pending.shift();r?(clearTimeout(r.timer),r.reject(new Error(s))):(l(`[${e.name}] inbound transaction rejected:`,s),g(e,{event:"inbound_error",message:s}),process.nextTick(()=>t.onNotify(e.name,`[${e.name}] inbound transaction rejected: ${s}`)))}}import{join as Z}from"node:path";import*as N from"node:fs";var E=()=>Z(V,j),ee=()=>Z(E(),"registrar.key"),Q=()=>Z(E(),"book.json");function _e(){try{let e=JSON.parse(N.readFileSync(Q(),"utf8"));return e&&typeof e.entries=="object"?e.entries:{}}catch{return{}}}function we(e){N.mkdirSync(E(),{recursive:!0});let t=`${Q()}.tmp`;N.writeFileSync(t,JSON.stringify({v:1,entries:e},null,2),{mode:384}),N.renameSync(t,Q())}function te(e){return S(t=>Buffer.from(R(e,"::actor::export_address_document",t).GetBinary()))}function C(e){return S(t=>Buffer.from(R(e,"::actor::export_signing_secret",t).Serialize()).toString("hex"))}async function he(e){if(!k)throw new Error("registrar is not available");let t=te(e),s=await h(async a=>{let d=await v(k,"::actor::sign_book_entry",{name:e.name,ad:k.pw.packet.NewBinaryFromBuffer(t).Attach(a)},a);return Buffer.from(d.Reduce("sig").GetBinary()).toString("base64url")}),r=_e();r[e.name]={v:1,name:e.name,container_id:e.cid,address_document:t.toString("base64url"),published_at:new Date().toISOString(),registrar_sig:s},we(r),l(`[${e.name}] published to the local contact book`)}function st(e){let t=_e(),s=Object.entries(t).find(([,r])=>r.container_id===e.cid);s&&(delete t[s[0]],we(t),l(`[${e.name}] removed from the local contact book (entry "${s[0]}")`))}async function ve(e){if(!G)throw new Error("registrar is not available");await h(async t=>{await v(e,"::actor::pin_registrar",{registrar_ad:e.pw.packet.NewBinaryFromBuffer(G).Attach(t)},t)})}function U(e,t,s,r=!0,a,d=!1){let i=new ze;i.deferred_exposure=d;let f=["--unit_hash",H.hash,"--seed_phrase",t,"--unit_dir_path",H.dir];return a&&f.push("--init_trn_argument",JSON.stringify(a)),i.process_arguments(f),new Promise((o,n)=>{let u=setTimeout(()=>n(new Error(`packet creation for "${e}" timed out`)),3e4);L.packet_manager.create_packet(i,c=>{clearTimeout(u);let p={name:e,cid:S(m=>c.packet.GetContainerID().Attach(m).Visualize()),pw:c,dir:s,pending:[],lock:Promise.resolve()};ye(p,Se),r&&x.set(e,p),l(`[${e}] packet created \u2014 container id ${p.cid}`),o(p)},H.contents)})}var A=new Set(ce());A.size>0&&l(`reserved ${A.size} persisted identity name(s) at module load: ${[...A].join(", ")}`);async function ht(e,t={exposeLocal:!0,localAutoAccept:!0}){if(A.has(e)||x.has(e))throw new Error(`identity name "${e}" is reserved \u2014 a persisted identity with this name is restoring, present, or being provisioned; refusing to provision over it`);A.add(e);try{let s=K(e);$.mkdirSync(s,{recursive:!0,mode:448});let r;t.temp&&(r={owner:{tokenHash:t.temp.tokenHash,pid:t.temp.pid},createdAt:Date.now()},ae(s,r));let a=Te(24).toString("hex"),d=await U(e,a,s);return r&&(d.temp=r),$.writeFileSync(D(s),C(d),{mode:384}),await h(async i=>{await v(d,"::a2a_messaging::set_my_name",{name:e},i)}),await ve(d),t.localAutoAccept||await h(async i=>{await v(d,"::actor::set_local_policy",{auto_accept:!1},i)}),t.exposeLocal&&await he(d),z(d),d}catch(s){throw A.delete(e),s}}async function vt(e){let t=K(e),s=$.readFileSync(D(t),"utf8").trim(),r=await U(e,"",t,!1,s,!0);l(`[${e}] created QUARANTINED (no routing/broker registration, not client-bindable) \u2014 importing state before exposure`);let a=Number(process.env.OURS_TEST_RESTORE_HOLD_MS||"")||0;a>0&&(l(`[${e}] TEST HOLD: keeping restore open ${a}ms (OURS_TEST_RESTORE_HOLD_MS)`),await new Promise(o=>setTimeout(o,a)));let d=o=>/timed out waiting for the transaction result/.test(String(o)),i=(o,n,u)=>{l(`[${e}] ${o} ${n} \u2014 identity left UNEXPOSED and UNTRACKED (fail-closed)`);try{g(r,{event:"restore_fail_closed",step:o,error:String(u).slice(0,300)})}catch{}x.delete(e);try{L.remove_packet(r.cid)}catch(c){l(`[${e}] quarantined-packet teardown failed:`,String(c))}throw new Error(`identity "${e}": ${o} failed during restore (${n}) \u2014 left unexposed (fail-closed)`)},f=(o,n)=>i(o,"outcome UNKNOWN (timeout): the transaction may still execute and exposure would race it",n);if(Re(t)){let o=!1;try{if(process.env.OURS_TEST_FORCE_IMPORT_TIMEOUT==="1")throw new Error("timed out waiting for the transaction result (forced by OURS_TEST_FORCE_IMPORT_TIMEOUT)");let n=$.readFileSync(I(t));await h(async u=>{let c=r.pw.packet.ParseValue(new Uint8Array(n)).Attach(u),p=Number(process.env.OURS_IMPORT_TIMEOUT_MS||"")||void 0;await v(r,"::actor::import_state",c,u,p)}),o=!0,l(`[${e}] state import completed (positively observed)`)}catch(n){d(n)&&f("import_state",n),l(`[${e}] FAILED TO IMPORT SAVED STATE \u2014 continuing with the reseeded identity; surviving contacts (if the blob was partially migrated) self-heal via contact restore:`,String(n)),g(r,{event:"state_import_failed",error:String(n).slice(0,300)});try{let u=`${I(t)}.failed-${Date.now()}`;$.renameSync(I(t),u),$.chmodSync(u,384),l(`[${e}] unreadable state blob preserved as state_data.bin.failed-*`)}catch{}}if(o){try{let c=await h(async p=>{let m=await v(r,"::a2a_messaging::commit_e2e_restore",{},p),w=m.Reduce("status").Visualize(),b=m.Reduce("sessions").IsNil()?"0":m.Reduce("sessions").Visualize();return{status:String(w),sessions:String(b)}});l(`[${e}] e2e restore commit: status=${c.status} sessions=${c.sessions}`)}catch(c){d(c)&&f("commit_e2e_restore",c),l(`[${e}] E2E RESTORE REJECTED \u2014 staged session blob failed pickle_key validation; discarding it, fresh account + self-heal fallback take over: ${String(c).slice(0,260)}`),g(r,{event:"e2e_restore_rejected",origin:"restore",error:String(c).slice(0,300)});try{await h(async p=>{await v(r,"::a2a_messaging::reject_e2e_restore",{},p)})}catch(p){d(p)&&f("reject_e2e_restore",p),l(`[${e}] reject_e2e_restore failed (staging is transient; continuing):`,String(p))}}try{r.pw.refresh_identity_proof_document(),l(`[${e}] transport IPD refreshed from post-import state`)}catch(c){i("ipd_refresh","FAILED (IPD would advertise a stale bundle)",c)}let n=!1,u="";try{if(process.env.OURS_TEST_FORCE_IPD_INCOHERENT==="1")throw new Error("forced incoherent (OURS_TEST_FORCE_IPD_INCOHERENT)");let c=S(w=>String(R(r,"::a2a_messaging::e2e_self_fp",w).Reduce("ik").Visualize())),p=r.pw.identity_proof_document.Visualize(),m=c.replace(/^0x/i,"");n=m.length>=32&&p.toLowerCase().includes(m.toLowerCase()),u=c.slice(0,18),g(r,{event:"ipd_coherence",ik:c,coherent:n})}catch(c){i("ipd_coherence","probe FAILED (coherence unprovable)",c)}l(`[${e}] IPD/e2e coherence: account_ik=${u}\u2026 ipd_advertises_it=${n}`),n||i("ipd_coherence","IPD does NOT advertise the live account ik",new Error("incoherent transport IPD"))}}return L.expose_packet(r.cid),x.set(e,r),l(`[${e}] EXPOSED (routing + broker registration) \u2014 import phase complete`),await ge(r),P(r),r}async function Vt(){y.mkdirSync(E(),{recursive:!0});let e;try{e=y.readFileSync(ee(),"utf8").trim()}catch{}let t=Ee(24).toString("hex");oe(await U(j,t,E(),!1,e)),e||y.writeFileSync(ee(),C(k),{mode:384}),se(te(k)),l(`contact-book registrar ready (${k.cid})`)}function Re(e){try{return y.existsSync(I(e))&&y.statSync(I(e)).size>0}catch{return!1}}function Ae(e){let t=S(d=>Buffer.from(R(e,"::actor::export_state",d).Serialize()));y.mkdirSync(e.dir,{recursive:!0,mode:448});let s=I(e.dir),r=`${s}.tmp`,a;try{a=y.openSync(r,"w",384),y.fchmodSync(a,384),y.writeFileSync(a,t),y.fsyncSync(a),y.closeSync(a),a=void 0,y.renameSync(r,s),y.chmodSync(s,384);try{y.chmodSync(D(e.dir),384)}catch{}let d=y.openSync(e.dir,"r");try{y.fsyncSync(d)}finally{y.closeSync(d)}}catch(d){if(a!==void 0)try{y.closeSync(a)}catch{}try{y.rmSync(r,{force:!0})}catch{}throw d}}function z(e){try{Ae(e),e.persistFailed&&(e.persistFailed=!1,l(`[${e.name}] persist recovered \u2014 quarantine lifted`),g(e,{event:"persist_recovered"}))}catch(t){e.persistFailed=!0,l(`[${e.name}] PERSIST FAILED \u2014 identity quarantined (fail-closed), outbound of this txn withheld:`,String(t));try{g(e,{event:"persist_failed",error:String(t).slice(0,300)})}catch{}throw process.nextTick(()=>ie(e.name,`[${e.name}] PERSIST FAILED \u2014 messaging quarantined until the state file is writable again`)),t}}function S(e){let t=new $e;try{return e(t)}finally{t.Finalize()}}async function h(e){let t=new $e;try{return await e(t)}finally{t.Finalize()}}function R(e,t,s,r){let a=be({name:t,targ:r}),d=e.pw.packet.ExecuteTransaction(a);return a.Destroy(),s?d.Attach(s):d}async function Oe(e,t){let s=e.lock,r;e.lock=new Promise(a=>r=a),await s;try{return await t()}finally{r()}}function De(e,t,s=25e3){return new Promise((r,a)=>{let d=setTimeout(()=>{let i=e.pending.findIndex(f=>f.timer===d);i>=0&&e.pending.splice(i,1),a(new Error("timed out waiting for the transaction result"))},s);e.pending.push({resolve:r,reject:a,timer:d}),e.pw.add_client_message(t)})}function v(e,t,s,r,a){if(e.persistFailed)try{z(e)}catch(i){return Promise.reject(new Error(`identity "${e.name}" is quarantined: state persist is failing (${String(i)}) \u2014 mutations are rejected until state_data.bin is writable again`))}let d=be({name:t,targ:s});return Oe(e,()=>De(e,d,a)).then(i=>{if(d.Destroy(),e.persistFailed){try{i.Destroy()}catch{}throw new Error(`identity "${e.name}": state persist FAILED \u2014 this transaction's outbound was withheld (fail-closed); fix the state directory and retry`)}return r?i.Attach(r):i},i=>{try{d.Destroy()}catch{}throw i})}var F=null;function Ht(e){F?.uninstall(),F=e===null?null:{hook:e,uninstall:le("notification",e)}}function qt(e){F?.hook===e&&(F.uninstall(),F=null)}function ie(e,t){pe(e,t)}var Se={onNotify:(e,t)=>ie(e,t)},W={inbound:["message_received","file_received"],intro:["local_contact_request","pending_message"],get wake(){return[...W.inbound,...W.intro]}};function Pe(e){if(e===null||e==="")return null;let t=new Set;for(let s of e.split(",")){let r=s.trim();if(r==="")continue;let a=W[r];if(!a)throw new Error(r);for(let d of a)t.add(d)}return t}function Fe(e,t){return t===null?!0:typeof e.event=="string"&&t.has(e.event)}var J=new Map;function je(e){let t=J.get(e);if(!(!t||t.size===0))for(let s of[...t])try{s()}catch{}}function Le(e,t){return new Promise(s=>{let r=J.get(e);r||(r=new Set,J.set(e,r));let a=!1,d=()=>{a||(a=!0,r.delete(i),r.size===0&&J.delete(e),clearTimeout(f),s())},i=d,f=setTimeout(d,t);r.add(i)})}function g(e,t){try{_.mkdirSync(e.dir,{recursive:!0,mode:448}),_.appendFileSync(B(e.dir),JSON.stringify(t)+`
|
|
3
|
-
`)}catch(s){l(`[${e.name}] failed to append notifications.log:`,String(s))}je(e.name),fe(e,t)}function Ct(e){let t=B(e.dir),s="";try{s=_.readFileSync(t,"utf8")}catch{return new Set}let r=[];for(let a of s.split(`
|
|
4
|
-
`))if(a.trim())try{r.push(JSON.parse(a))}catch{}return ue(r)}function T(e,t){let s=e.Reduce(t);return s.IsNil()?"":Buffer.from(s.GetBinary()).toString("hex")}var Be=Number(process.env.OURS_NOTIFY_LONGPOLL_MS)>0?Number(process.env.OURS_NOTIFY_LONGPOLL_MS):25e3,Me=250;function ke(e){try{return _.statSync(e).size}catch{return 0}}function He(e,t,s){if(s<=t)return{events:[],cursor:t};let r=Buffer.alloc(s-t),a=0;try{let o=_.openSync(e,"r");try{a=_.readSync(o,r,0,r.length,t)}finally{_.closeSync(o)}}catch{return{events:[],cursor:t}}let d=r.subarray(0,a),i=d.lastIndexOf(10);if(i===-1)return{events:[],cursor:t};let f=[];for(let o of d.subarray(0,i+1).toString("utf8").split(`
|
|
5
|
-
`))if(o.trim())try{f.push(JSON.parse(o))}catch{}return{events:f,cursor:t+i+1}}async function Ut(e,t,s,r,a=null){let d=B(Ie(V,s)),i=(c,p)=>{t.writableEnded||(t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({cursor:c,events:p})))},f;try{f=Pe(a)}catch(c){t.writableEnded||(t.writeHead(400,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:`unknown notification kind "${String(c.message)}" \u2014 known kinds: ${Object.keys(W).sort().join(", ")}`})));return}if(r===null||r==="tip"){i(ke(d),[]);return}let o=parseInt(r,10);if(!Number.isFinite(o)||o<0){t.writableEnded||(t.writeHead(400,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:"invalid since cursor"})));return}let n=!1;e.on("close",()=>{n=!0});let u=Date.now()+Be;for(;!n;){let c=ke(d);if(o>c&&(o=0),c>o){let{events:p,cursor:m}=He(d,o,c);o=m;let w=f===null?p:p.filter(b=>Fe(b,f));if(w.length>0){i(m,w);return}}if(Date.now()>=u)break;await Le(s,Math.min(Me,u-Date.now()))}n||i(o,[])}function P(e){try{let{unread:t,unreadFiles:s}=S(d=>{let f=me(R(e,"::actor::list_incoming_messages",d)).filter(u=>u.status==="unread"),o=R(e,"::actor::list_incoming_files",d),n=[];if(!o.IsNil())for(let u=0;;u++){let c=o.Reduce(u);if(c.IsNil())break;c.Reduce("status").Visualize()==="unread"&&n.push({file_id:c.Reduce("file_id").Visualize(),sender_id:c.Reduce("sender_id").Visualize(),from:c.Reduce("sender_name").Visualize(),filename:c.Reduce("filename").Visualize(),mime:c.Reduce("mime").Visualize(),bytes:c.Reduce("size").Visualize(),date:c.Reduce("date").Visualize(),wire_id:c.Reduce("wire_id").Visualize()})}return{unread:f,unreadFiles:n}}),r={count:t.length,recent:t.slice(-10).map(d=>({from:d.sender_name,msg_id:d.msg_id,date:d.date})),files:s.length,unread_files:s.slice(-10)};_.mkdirSync(e.dir,{recursive:!0,mode:448});let a=`${M(e.dir)}.tmp`;_.writeFileSync(a,JSON.stringify(r)),_.renameSync(a,M(e.dir))}catch(t){l(`[${e.name}] failed to refresh unread snapshot:`,String(t))}}function Jt(){let e=[],t=[];try{t=_.readdirSync(V,{withFileTypes:!0})}catch{return{identities:e}}for(let s of t){if(!s.isDirectory()||ne(s.name)!==null)continue;let r;try{r=JSON.parse(_.readFileSync(M(Ie(V,s.name)),"utf8"))}catch{continue}let a=Number.isSafeInteger(r.count)&&Number(r.count)>=0?Number(r.count):0,d=Number.isSafeInteger(r.files)&&Number(r.files)>=0?Number(r.files):0;if(a===0&&d===0)continue;let i=Array.isArray(r.recent)?r.recent.slice(-10).flatMap(o=>{if(!o||typeof o!="object")return[];let n=o;return typeof n.from!="string"||!["string","number"].includes(typeof n.msg_id)||typeof n.date!="string"?[]:[{from:n.from,msg_id:n.msg_id,date:n.date}]}):[],f=Array.isArray(r.unread_files)?r.unread_files.slice(-10).flatMap(o=>{if(!o||typeof o!="object")return[];let n=o;return typeof n.from!="string"||typeof n.filename!="string"||typeof n.mime!="string"||typeof n.wire_id!="string"?[]:[{from:n.from,filename:n.filename,mime:n.mime,wire_id:n.wire_id,...typeof n.sender_id=="string"?{sender_id:n.sender_id}:{},...["string","number"].includes(typeof n.file_id)?{file_id:n.file_id}:{},...["string","number"].includes(typeof n.bytes)?{bytes:n.bytes}:{},...typeof n.date=="string"?{date:n.date}:{}}]}):[];e.push({name:s.name,count:a,recent:i,files:d,unread_files:f})}return e.sort((s,r)=>String(s.name).localeCompare(String(r.name))),{identities:e}}export{Ht as a,qt as b,ie as c,Se as d,W as e,Pe as f,Fe as g,je as h,Le as i,g as j,Ct as k,T as l,ke as m,He as n,Ut as o,P as p,Jt as q,Je as r,Ne as s,X as t,ge as u,xe as v,q as w,We as x,ye as y,U as z,A,ht as B,vt as C,Vt as D,Re as E,Ae as F,z as G,S as H,h as I,R as J,Oe as K,De as L,v as M,E as N,ee as O,Q as P,_e as Q,we as R,te as S,C as T,he as U,st as V,ve as W};
|
package/dist/chunk-PQXV4GQ5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{I as m,M as s,u as c,v as l,x as f}from"./chunk-MQ5AXTPT.js";import{c as o}from"./chunk-CIHGEBUR.js";import{f as i,i as a}from"./chunk-T76BFV6S.js";var e=null,n=!1;function v(){e||(e=setInterval(()=>{n||(n=!0,(async()=>{try{for(let t of o.values()){try{await m(async r=>{await s(t,"::actor::gc",{},r)})}catch(r){a(`gc(${t.name}) failed:`,String(r))}await c(t),await l(t),await f(t)}}finally{n=!1}})())},i),e.unref?.(),a(`message GC timer armed (every ${i}ms)`))}function w(){e&&(clearInterval(e),e=null)}export{v as a,w as b};
|
package/dist/chunk-R5ISAB5B.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as s}from"./chunk-HPPNU5YV.js";import{I as h,J as y,K as x,L as F,M as l}from"./chunk-65KGEJBX.js";import{H as S,I as d,J as _,M as f,p as c}from"./chunk-MQ5AXTPT.js";import{d as p,f as g}from"./chunk-TUWHVJ37.js";import{t as m,u as w}from"./chunk-CIHGEBUR.js";import{a}from"./chunk-Y3VPZJTG.js";async function N(r){let n=s(r);try{return S(t=>p(_(n,"::actor::list_incoming_files",t)))}catch(t){throw l("list_incoming_files",String(t))}}async function P(r,n={}){let t=s(r),{wire_ids:e}=n;if(e!==void 0){if(e.length<1||e.length>32)throw h(32);if(e.some(i=>!m(i)))throw y();if(new Set(e).size!==e.length)throw x()}try{let i=await d(async o=>{let u=await f(t,"::actor::get_files",e===void 0?{}:{wire_ids:e},o);return await g(t,u.Reduce("files"))});return c(t),{files:i.files,text:i.text,mode:e===void 0?"all_unread":"selected",requested:e??null}}catch(i){let o=String(i);throw e!==void 0&&/unknown, stale, or no longer unread/i.test(o)?F():l("get_files",o)}}function T(r,n){let t=s(r);return{existsOnDisk:w(t,n.wire_id)!==null}}async function b(r,n){let t=s(r),{file_ids:e}=n;try{let i=await d(async o=>(await f(t,"::actor::defer_files",{file_ids:e},o)).Reduce("deferred").Visualize());return c(t),{deferred:i}}catch(i){throw l("defer_files",String(i))}}export{N as a,P as b,T as c,b as d};
|
package/dist/chunk-TIBWO3T3.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as d}from"./chunk-HPPNU5YV.js";import{M as r,y as T,z as j}from"./chunk-65KGEJBX.js";import{H as y,I as u,J as p,M as l,Q as N,U as L,V as A,p as z,r as P,w as f}from"./chunk-MQ5AXTPT.js";import{a as C,b as V,g as x,h as I,j as S,k as B}from"./chunk-TUWHVJ37.js";import{d as _,f as k}from"./chunk-7JZS2BAP.js";async function U(s,a={}){let e=d(s),{name:i,mode:o}=a;if(o==="public"&&i)throw T();try{return await u(async t=>{let n={};i&&(n.name=i),o&&(n.mode=o);let c=await l(e,"::a2a_messaging::generate_invite",n,t);return{blob:S(Buffer.from(c.Reduce("invite").GetBinary())),inviteId:c.Reduce("invite_id").Visualize(),mode:c.Reduce("mode").Visualize()==="public"?"public":"one_time"}})}catch(t){throw r("generate_invite",String(t))}}async function $(s){let a=d(s);try{return y(e=>{let i=p(a,"::a2a_messaging::list_invites",e),o=[];if(i.IsNil())return o;for(let t of i.GetKeys()){let n=i.Reduce(t);if(n.IsNil())continue;let c=n.Reduce("assigned").Visualize(),m=n.Reduce("created").Visualize();o.push({invite_id:typeof t=="string"?t:t.Visualize(),mode:n.Reduce("mode").Visualize(),assigned:c==="%%NIL"?"":c,created:m==="%%NIL"?"":m})}return o})}catch(e){throw r("list_invites",String(e))}}async function H(s,a){let e=d(s),{invite_id:i}=a;try{return await u(async o=>{let t=await l(e,"::a2a_messaging::revoke_invite",{invite_id:i},o),n=t.Reduce("was_public");return{revoked:t.Reduce("revoked").GetBoolean(),wasPublic:n.IsNil()?!1:n.GetBoolean()}})}catch(o){throw r("revoke_invite",String(o))}}async function J(s,a){let e=d(s),{invite:i,name:o}=a,t;try{if(t=B(i),t.length===0)throw new Error("the invite blob is empty")}catch(n){throw r("add_contact",n instanceof Error?n.message:"the invite blob is not valid.","INVITE_MALFORMED")}try{return await u(async n=>{let m={invite:e.pw.packet.NewBinaryFromBuffer(t).Attach(n)};o&&(m.name=o);let g=await l(e,"::a2a_messaging::add_contact",m,n),R=g.Reduce("container_id").Visualize(),v=g.Reduce("pending").Visualize(),h=g.Reduce("inviter_name").Visualize(),w=b=>!b||b==="%%NIL",G=w(v)?w(h)?R:h:v;return f(e),{display:G,cid:R}})}catch(n){throw r("add_contact",String(n))}}async function Q(s){let a=d(s);try{return y(e=>({contacts:C(p(a,"::a2a_messaging::list_contacts",e)),pending:x(p(a,"::actor::list_pending_introductions",e)),roots:I(p(a,"::a2a_messaging::list_contact_roots",e)),degraded:P(p(a,"::a2a_messaging::list_degraded_contacts",e)),renames:V(p(a,"::a2a_messaging::list_import_renames",e))}))}catch(e){throw r("list_contacts",String(e))}}async function X(s){let a=Object.values(N()),e=s.leaseToken(),i=e?k(e)?.identity:void 0;return a.map(o=>({name:o.name,container_id:o.container_id,published_at:o.published_at,isMine:o.name===i}))}async function Y(s,a){let e=d(s),{expose:i,auto_accept:o}=a;if(i===void 0&&o===void 0)throw j();let t=[];try{return o!==void 0&&(await u(async n=>{await l(e,"::actor::set_local_policy",{auto_accept:o},n)}),t.push(`auto_accept=${o}`)),i===!0?(await L(e),t.push("published in the local contact book")):i===!1&&(A(e),t.push("removed from the local contact book")),{identity:e.name,changes:t}}catch(n){throw r("set_local_book_policy",String(n))}}async function Z(s,a){let e=d(s),{contact:i}=a;try{return _.add(e.name),await u(async o=>{let t=await l(e,"::a2a_messaging::remove_contact",{contact:i},o),n=t.Reduce("removed").Visualize(),c=t.Reduce("container_id").Visualize(),m=t.Reduce("notified"),g=m.IsNil()?void 0:m.GetBoolean();return{name:n,cid:c,notified:g}})}catch(o){throw r("remove_contact",String(o))}finally{_.delete(e.name)}}async function ee(s,a){let e=d(s),{contact:i,name:o}=a;try{return await u(async t=>{let n=await l(e,"::a2a_messaging::rename_contact",{contact:i,name:o},t);return{from:n.Reduce("renamed").Visualize(),cid:n.Reduce("container_id").Visualize()}})}catch(t){throw r("rename_contact",String(t))}}async function te(s,a){let e=d(s),{contact:i,action:o}=a;try{if(o==="approve"){let t=await u(async n=>{let c=await l(e,"::actor::approve_introduction",{contact:i},n);return{action:"approve",name:c.Reduce("approved").Visualize(),cid:c.Reduce("container_id").Visualize(),flushed:c.Reduce("flushed").Visualize()}});return z(e),f(e),t}return await u(async t=>{let n=await l(e,"::actor::reject_introduction",{contact:i},t);return{action:"reject",name:n.Reduce("rejected").Visualize(),dropped:n.Reduce("dropped_messages").Visualize()}})}catch(t){throw r("respond_to_introduction",String(t))}}export{U as a,$ as b,H as c,J as d,Q as e,X as f,Y as g,Z as h,ee as i,te as j};
|
package/dist/chunk-TUWHVJ37.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as p,h as w,j as I,k as b,l as x}from"./chunk-DIRW7I4S.js";import{m as h}from"./chunk-CIHGEBUR.js";import{b as _}from"./chunk-T76BFV6S.js";import{b as z}from"./chunk-P55RJGZU.js";import{basename as M,join as $}from"node:path";import{createHash as S,randomUUID as G}from"node:crypto";import{mkdir as C,open as O,rename as v,unlink as N,lstat as D}from"node:fs/promises";import{brotliCompressSync as K,brotliDecompressSync as P}from"node:zlib";function Z(e){let n=[];if(e.IsNil())return n;for(let i of e.GetKeys()){let t=e.Reduce(i);t.IsNil()||n.push({name:t.Reduce("name").Visualize(),container_id:t.Reduce("container_id").Visualize()})}return n}function ee(e){let n={};if(e.IsNil())return n;for(let i of e.GetKeys()){let t=e.Reduce(i);t.IsNil()||(n[typeof i=="string"?i:i.Visualize()]=t.Visualize())}return n}function te(e){let n=[];if(e.IsNil())return n;for(let i=0;;i++){let t=e.Reduce(i);if(t.IsNil())break;let s=t.Reduce("reply_to"),o=null;if(!s.IsNil()){o={wire_id:s.Reduce("wire_id").Visualize()};let r=s.Reduce("sentence");r.IsNil()||(o.sentence=parseInt(r.Visualize(),10))}n.push({msg_id:parseInt(t.Reduce("msg_id").Visualize(),10),sender_id:t.Reduce("sender_id").Visualize(),sender_name:t.Reduce("sender_name").Visualize(),text:t.Reduce("text").Visualize(),date:t.Reduce("date").Visualize(),status:t.Reduce("status").Visualize(),wire_id:t.Reduce("wire_id").Visualize(),reply_to:o})}return n}function ie(e){let n=[];if(e.IsNil())return n;for(let i=0;;i++){let t=e.Reduce(i);if(t.IsNil())break;let s=t.Reduce("filename").Visualize(),o=t.Reduce("mime").Visualize()||"application/octet-stream",r=t.Reduce("reply_to"),a=null;if(!r.IsNil()){a={wire_id:r.Reduce("wire_id").Visualize()};let u=parseInt(r.Reduce("sentence").Visualize(),10);Number.isSafeInteger(u)&&u>0&&(a.sentence=u)}n.push({file_id:parseInt(t.Reduce("file_id").Visualize(),10),wire_id:t.Reduce("wire_id").Visualize(),from:{id:t.Reduce("sender_id").Visualize(),name:t.Reduce("sender_name").Visualize()},filename:s,mime:o,size:parseInt(t.Reduce("size").Visualize(),10),size_source:"received_payload",status:t.Reduce("status").Visualize(),date:t.Reduce("date").Visualize(),sha256:null,reply_to:a,kind:p(o,s)?"voice_message":"file"})}return n}function ne(e){if(e.length===0)return"No files received.";let n=[];for(let i of e){let t=i.kind==="voice_message"?"\u{1F3A4} voice message \xB7 ":"";n.push(` \u2022 ${t}${i.filename} (${i.mime}, ${i.size} B) from ${i.from.name} [${i.status}] {${i.wire_id}} sender_id=${i.from.id}`)}return`${n.length} file(s):
|
|
3
|
-
${n.join(`
|
|
4
|
-
`)}`}async function j(e,n,i){await C(e,{recursive:!0,mode:448});let t=await D(e);if(!t.isDirectory()||t.isSymbolicLink())throw new Error("received-files directory is not a safe directory");let s=$(e,`.${M(n)}.${G()}.tmp`),o=await O(s,"wx",384);try{await o.writeFile(i),await o.sync()}catch(r){throw await o.close().catch(()=>{}),await N(s).catch(()=>{}),r}await o.close();try{await v(s,n)}catch(r){throw await N(s).catch(()=>{}),r}}async function re(e,n){let i=[];if(n.IsNil())return{text:"No new files.",files:i};let t=h(e),s=[];for(let o=0;;o++){let r=n.Reduce(o);if(r.IsNil())break;let a=r.Reduce("filename").Visualize(),u=r.Reduce("mime").Visualize()||"application/octet-stream",f=r.Reduce("sender_name").Visualize(),A=r.Reduce("sender_id").Visualize(),F=parseInt(r.Reduce("file_id").Visualize(),10),B=r.Reduce("date").Visualize(),d=r.Reduce("wire_id").Visualize(),c=Buffer.from(r.Reduce("data").GetBinary()),V=S("sha256").update(c).digest("hex"),l=$(t,`${d}-${z(a)}`);await j(t,l,c);let g={file_id:F,wire_id:d,from:{id:A,name:f},filename:a,path:l,mime:u,size:c.length,sha256:V,status:"processed",date:B,kind:p(u,a)?"voice_message":"file",sender:f};if(p(u,a)){let y=w(_.stt),m;if(!y.ready)m={kind:"unconfigured",reason:y.reason};else{let R=await I(c,a,u,_.stt);m=R.ok?{kind:"transcript",text:R.text}:{kind:"failed",error:R.error}}g.transcription=b(y,m,{audioPath:l,wireId:d}),s.push(x({sender:f,wire:d,savedPath:l,sizeBytes:c.length},m)),i.push(g);continue}i.push(g),s.push(` \u2022 ${a} (${u}, ${c.length} B, sha256 ${V}) from ${f} \u2192 ${l} {${d}}`)}return s.length===0?{text:"No new files.",files:i}:{text:`${s.length} new file(s) written to your identity's files dir \u2014 paths + metadata below (bytes stay on disk, never in this result). If your OS user can read the path, use it directly; otherwise use save_file({ wire_id, dest_path }) to stream a copy to a path you can write:
|
|
5
|
-
${s.join(`
|
|
6
|
-
`)}`,files:i}}function se(e){let n=[];if(e.IsNil())return n;for(let i of e.GetKeys()){let t=e.Reduce(i);t.IsNil()||n.push({container_id:typeof i=="string"?i:i.Visualize(),name:t.Reduce("name").Visualize(),queued:parseInt(t.Reduce("queued").Visualize(),10)||0})}return n}function oe(e){let n={};if(e.IsNil())return n;for(let i of e.GetKeys()){let t=e.Reduce(i);t.IsNil()||(n[typeof i=="string"?i:i.Visualize()]={root_cid:t.Reduce("root_cid").Visualize(),root_name:t.Reduce("root_name").Visualize(),role_id:t.Reduce("role_id").Visualize()})}return n}function ae(e){if(!e)return"";let n=e.root_name||e.root_cid;return e.role_id?` [role "${e.role_id}" of ${n}]`:` [root identity of ${n}]`}function q(e){return K(e).toString("base64url")}function ue(e){return P(Buffer.from(e.replace(/\s+/g,""),"base64url"))}var E=new Set(["members","caps"]);function L(e){try{let n=e.GetNumber();return Number.isInteger(n)?n:NaN}catch{return NaN}}function k(e,n){if(e.IsNil())return null;let i;try{i=e.GetKeys()}catch{try{return q(Buffer.from(e.GetBinary()))}catch{}try{return e.GetBoolean()}catch{}try{let t=e.GetNumber();if(!Number.isNaN(t))return t}catch{}return e.Visualize()}if(i.length>0){if(i.map(L).every((r,a)=>r===a))return i.map((r,a)=>k(e.Reduce(a)));let o={};for(let r of i)o[r.Visualize()]=k(e.Reduce(r),r.Visualize());return o}return n!==void 0&&E.has(n)?[]:{}}export{Z as a,ee as b,te as c,ie as d,ne as e,re as f,se as g,oe as h,ae as i,q as j,ue as k,k as l};
|
package/dist/chunk-V7PKYHV7.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as s,e as p}from"./chunk-2PVVBIA7.js";import{I as f,M as c,Q as g,S as l,w as u}from"./chunk-MQ5AXTPT.js";import{c as d,d as a}from"./chunk-CIHGEBUR.js";function S(e,t){if(!s||!d.has(s))return null;let r=d.get(t)??[...d.values()].find(n=>n.cid===t);if(!r||r.name===e.name)return null;let i=n=>n.name===s||p(n).roleId!=="";return i(e)&&i(r)?r:null}async function V(e,t,r){let i=l(t);return await f(async n=>{await c(e,"::actor::connect_sibling",{name:t.name,target_ad:e.pw.packet.NewBinaryFromBuffer(i).Attach(n),text:r},n)}),u(e),`"${t.name}" was not a contact yet \u2014 connected as an intra-root sibling (delegation-cert auto-accept) and delivered the message.`}async function N(e,t,r){if(!a)throw new Error(`"${t}" is not a contact, and the local contact book is unavailable.`);let i=g(),n=i[t]??Object.values(i).find(o=>o.container_id===t);if(!n)throw new Error(`"${t}" is not a contact and has no local contact-book entry. Use generate_invite/add_contact for remote peers, or list_local_contact_book to see local ones.`);if(n.container_id===e.cid)throw new Error("that contact-book entry is this identity itself.");let m=Buffer.from(n.address_document,"base64url"),w=Buffer.from(n.registrar_sig,"base64url"),y=l(e);return await f(async o=>{let k=await c(a,"::actor::mint_introduction",{joiner_ad:a.pw.packet.NewBinaryFromBuffer(y).Attach(o),target_ad:a.pw.packet.NewBinaryFromBuffer(m).Attach(o)},o),b=Buffer.from(k.Reduce("intro").GetBinary());await c(e,"::actor::connect_local",{name:n.name,target_ad:e.pw.packet.NewBinaryFromBuffer(m).Attach(o),intro:e.pw.packet.NewBinaryFromBuffer(b).Attach(o),entry_sig:e.pw.packet.NewBinaryFromBuffer(w).Attach(o),text:r},o)}),u(e),`"${n.name}" was not a contact yet \u2014 connected via the local contact book and sent the message with the introduction. If "${n.name}" requires approval for local introductions, delivery completes once they approve.`}var R=e=>{let t=n=>!e.Reduce(n).IsNil(),r=e.Reduce("wire_id").Visualize(),i=t("sent_to")?e.Reduce("sent_to").Visualize():"";if(t("downgrade_refused"))return{kind:"refused",wireId:r,cid:i};if(t("migrating"))return{kind:"migrating",wireId:r,cid:i,queued:t("queued")?Number(e.Reduce("queued").Visualize()):0};if(t("route")){let n=t("retained")&&!e.Reduce("retained").GetBoolean();return{kind:"e2e",wireId:r,cid:i,notRetained:n}}return t("deferred")?{kind:"deferred",wireId:r,queued:t("queued")?Number(e.Reduce("queued").Visualize()):0}:{kind:"sent",wireId:r}};export{S as a,V as b,N as c,R as d};
|
package/dist/chunk-W2BPK7VV.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as H}from"./chunk-EHCBEY52.js";import{c as L,d as B}from"./chunk-K7TLSZ3X.js";import{d as F}from"./chunk-3CDGP5EO.js";import{a as u,b as n,c as A,d as U,e as P,f as C}from"./chunk-2PVVBIA7.js";import{A as I,C as D,D as N,W as M,j as k,v as h,x as g}from"./chunk-MQ5AXTPT.js";import{a as v,b as E,c as O}from"./chunk-YRPUM6JG.js";import{g as $}from"./chunk-7JZS2BAP.js";import{a as f,b as _,c as l,d as b,q as y,r as S,v as R}from"./chunk-CIHGEBUR.js";import{d as m,h as s,i as o}from"./chunk-T76BFV6S.js";import{adapt_wrapper as K}from"@adapt-toolkit/sdk/executables";var T=!1;function ne(){return T}function j(){if(T)throw new Error('bootWrapper() has already run in this process. It boots the ADAPT environment, which can only be initialised once \u2014 a second call fails inside the native layer with "Failed to invoke initializer in ADAPT environment", which names neither the double init nor the caller. NOTE THAT startDaemon() CALLS bootWrapper() ITSELF: the two are alternatives, not steps. Use startDaemon() for the HTTP daemon, or bootWrapper() alone for a stdio/in-process host \u2014 never both.');T=!0,H()}async function ae(){j(),s?.update("wrapper"),O(v());let x=["--broker_address",m,"--test_mode","--logger_config","--level","INFO","--stdout","stderr","--logger_config_end"];o(`booting wrapper (unit ${E.hash.slice(0,12)}\u2026, broker ${m})`),_(await K.start(x)),f.on_packet_created_cb=e=>o(`wrapper: packet ready ${e.slice(0,12)}\u2026`),f.start();let p=Number(process.env.OURS_TEST_BOOT_HOLD_MS||"")||0;p>0&&(o(`TEST HOLD: boot window open ${p}ms (OURS_TEST_BOOT_HOLD_MS)`),await new Promise(e=>setTimeout(e,p))),s?.update("registrar");try{await N()}catch(e){o("failed to start the contact-book registrar (local contact book disabled):",String(e))}S();let i=R(),d=Math.max(0,Number(process.env.OURS_TEST_FAKE_RESTORE_COUNT||"")||0),c=Math.max(0,Number(process.env.OURS_TEST_FAKE_RESTORE_MS||"")||0),W=i.length===0&&d>0?d:i.length;s?.update("identities",{completed:0,total:W});for(let e of i)I.add(e);if(i.length===0&&d>0){o(`TEST: simulating ${d} fake identity restore(s), ${c}ms each`);for(let e=0;e<d;e++)c>0&&await new Promise(a=>setTimeout(a,c)),s?.update("identities",{completed:e+1,total:d})}else if(i.length===0)o("no persisted identities \u2014 start with create_identity");else{o(`restoring ${i.length} identit${i.length===1?"y":"ies"}: ${i.join(", ")}`);for(let[e,a]of i.entries()){try{let t=await D(a);b&&await M(t);let r=y(t.dir);r&&(t.temp=r)}catch(t){o(`failed to restore "${a}":`,String(t))}s?.update("identities",{completed:e+1,total:i.length})}}s?.update("reconciliation"),F(),u(A()),n&&!l.has(n)&&(o(`root marker names a missing identity "${n}" \u2014 clearing it`),u(null),U()),n&&o(`root identity: ${n}`);{let e=n?l.get(n):void 0;n&&!e&&o(`re-delegation on upgrade DEGRADED: root "${n}" is not among the restored identities \u2014 role certs not refreshed this boot`);let a=[];if(e)for(let t of l.values()){if(t.name===e.name)continue;let r;try{r=P(t)}catch{r=void 0}if(!(!r||!r.hasCert)){if(r.rootCid!==e.cid){o(`[${t.name}] re-delegation skipped: delegated by a different root (${r.rootCid.slice(0,12)}\u2026), not this host root \u2014 left as-is`);continue}try{await C(e,t),a.push(t)}catch(w){k(t,{event:"redelegation_failed",error:String(w).slice(0,300)}),o(`[${t.name}] boot re-delegation (upgrade cert refresh) failed:`,String(w))}}}for(let t of l.values()){await h(t),await g(t);for(let r of[1e4,3e4,9e4])setTimeout(()=>{h(t).catch(()=>{})},r),setTimeout(()=>{g(t).catch(()=>{})},r)}a.length>0&&o(`refreshed ${a.length} role delegation cert(s) against the live AD on boot`)}$(),B(),L()}export{ne as a,ae as b};
|
package/dist/chunk-XT75POTM.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-HPPNU5YV.js";import{M as i}from"./chunk-65KGEJBX.js";import{H as u,I as d,J as l,M as p}from"./chunk-MQ5AXTPT.js";function m(s){let o=[],r=s.Reduce("messages");if(r.IsNil())return o;for(let e=0;;e++){let t=r.Reduce(e);if(t.IsNil())break;let n=t.Reduce("wire_id"),c=t.Reduce("receipt");o.push({dir:t.Reduce("dir").Visualize()==="out"?"out":"in",text:t.Reduce("text").Visualize(),date:t.Reduce("date").Visualize(),read:t.Reduce("read").GetBoolean(),wire_id:n.IsNil()?"":n.Visualize(),receipt:c.IsNil()?null:c.Visualize()})}return o}async function _(s,o){let r=a(s);try{let e=u(t=>m(l(r,"::actor::get_conversation",t,{contact:o.contact})));return{contact:o.contact,messages:e}}catch(e){throw i("get_conversation",String(e))}}async function v(s,o){let r=a(s);try{let e=u(t=>{let n=l(r,"::actor::get_receipts",t,{contact:o.contact}).Reduce("receipts"),c={};if(n.IsNil())return c;for(let R of n.GetKeys()){let y=R.Visualize();c[y]=n.Reduce(y).Visualize()}return c});return{contact:o.contact,receipts:e}}catch(e){throw i("get_receipts",String(e))}}async function h(s,o){let r=a(s);try{let e=await d(async t=>{let n=await p(r,"::actor::mark_read",{contact:o.contact},t);return Number(n.Reduce("marked").Visualize())});return{contact:o.contact,marked:e}}catch(e){throw i("mark_read",String(e))}}async function C(s,o){let r=a(s);try{return await d(async e=>{let t=await p(r,"::actor::set_local_policy",{keep_history:o.keep_history},e);return{keepHistory:t.Reduce("keep_history").GetBoolean(),autoAccept:t.Reduce("auto_accept").GetBoolean()}})}catch(e){throw i("set_local_policy",String(e))}}export{_ as a,v as b,h as c,C as d};
|
package/dist/chunk-XYU2DSWR.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
-
var t=e=>typeof e=="string"&&e.length>0,s=e=>({event:"sync_required",reason:"legacy_or_malformed_event",source_event:e});function o(e){if(!t(e.event))return s("unknown");if(e.event==="message_received")return!t(e.sender_id)||!t(e.sender_name)||!t(e.msg_id)||!t(e.wire_id)||!t(e.date)?s("message_received"):{event:"message_received",sender_id:e.sender_id,sender_name:e.sender_name,from:t(e.from)?e.from:e.sender_name,msg_id:e.msg_id,wire_id:e.wire_id,date:e.date};if(e.event==="receipt_received"){let n=e.kind,i=e.wire_ids;return!t(e.sender_id)||n!=="delivered"&&n!=="read"||!Array.isArray(i)||i.length===0||!i.every(t)?s("receipt_received"):{event:"receipt_received",sender_id:e.sender_id,kind:n,wire_ids:[...i],date:t(e.date)?e.date:new Date().toISOString()}}return e}var a=new Set(["message_received","receipt_received","file_received","contact_name_collision","sibling_contact_added","local_contact_request","pending_message","e2e_restore_rejected","contact_restored","migration_active","e2e_app_send","dedup_degraded","e2e_delivery_expired","e2e_app_recv","e2e_rekey","migration_deferred_flush","migration_stalled","downgrade_refused","contact_removed","monitoring_disabled","inbound_error"]),d={event:()=>{},notification:()=>{}},r={...d};function c(e,n){return r[e]=n,()=>{r[e]===n&&(r[e]=d[e])}}function _(){Object.assign(r,d)}function v(e){return r[e]===d[e]}function g(e,n){let i=o(n);r.event({identity:e.name,event:i.event,record:i})}function m(e,n){r.notification(e,n)}export{o as a,a as b,c,_ as d,v as e,g as f,m as g};
|
package/dist/inbox.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export type EncryptionType = 'legacy' | 'e2e';
|
|
2
|
-
export declare function e2eWireIdsFromEvents(events: Array<Record<string, unknown>>): Set<string>;
|
|
3
|
-
export declare function encryptionFor(wireId: string | undefined | null, e2eWireIds: Set<string>): EncryptionType;
|
|
4
|
-
export type MessageJson = {
|
|
5
|
-
msg_id: number;
|
|
6
|
-
wire_id: string;
|
|
7
|
-
from: {
|
|
8
|
-
id: string;
|
|
9
|
-
name: string;
|
|
10
|
-
};
|
|
11
|
-
encryption: EncryptionType;
|
|
12
|
-
transport: 'double_ratchet' | 'legacy_box';
|
|
13
|
-
text: string;
|
|
14
|
-
date: string;
|
|
15
|
-
status: string;
|
|
16
|
-
reply_to: {
|
|
17
|
-
wire_id: string;
|
|
18
|
-
sentence?: number;
|
|
19
|
-
} | null;
|
|
20
|
-
};
|
|
21
|
-
export type InboxLike = {
|
|
22
|
-
msg_id: number;
|
|
23
|
-
sender_id: string;
|
|
24
|
-
sender_name: string;
|
|
25
|
-
text: string;
|
|
26
|
-
date: string;
|
|
27
|
-
status: string;
|
|
28
|
-
wire_id: string;
|
|
29
|
-
reply_to: {
|
|
30
|
-
wire_id: string;
|
|
31
|
-
sentence?: number;
|
|
32
|
-
} | null;
|
|
33
|
-
};
|
|
34
|
-
export declare function toMessageJson(m: InboxLike, e2eWireIds: Set<string>): MessageJson;
|
|
35
|
-
export declare function buildMessagesPayload(msgs: InboxLike[], e2eWireIds: Set<string>): {
|
|
36
|
-
count: number;
|
|
37
|
-
messages: MessageJson[];
|
|
38
|
-
};
|
package/dist/inbox.js
DELETED