@ours.network/messenger-server 1.0.16 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +44 -0
  2. package/dist/chunks/{chunk-XTLMQC4C.js → chunk-PRK6P4OX.js} +1 -1
  3. package/dist/chunks/{server-E57EQNMC.js → server-JWHXNVMM.js} +1493 -1139
  4. package/dist/cli.js +4 -3
  5. package/dist/web/assets/{abnfDiagram-N423BO3Z-zYLPcj1g.js → abnfDiagram-N423BO3Z-CaNAt0IP.js} +2 -2
  6. package/dist/web/assets/{abnfDiagram-N423BO3Z-zYLPcj1g.js.map → abnfDiagram-N423BO3Z-CaNAt0IP.js.map} +1 -1
  7. package/dist/web/assets/{arc-BFMe4chQ.js → arc-ri02Lqr2.js} +2 -2
  8. package/dist/web/assets/{arc-BFMe4chQ.js.map → arc-ri02Lqr2.js.map} +1 -1
  9. package/dist/web/assets/{architectureDiagram-T3A2C74G-BKelkZKH.js → architectureDiagram-T3A2C74G-BcWe26Zl.js} +2 -2
  10. package/dist/web/assets/{architectureDiagram-T3A2C74G-BKelkZKH.js.map → architectureDiagram-T3A2C74G-BcWe26Zl.js.map} +1 -1
  11. package/dist/web/assets/{blockDiagram-VBNYF7ZC-CHED2d6n.js → blockDiagram-VBNYF7ZC-B9XdY5wU.js} +2 -2
  12. package/dist/web/assets/{blockDiagram-VBNYF7ZC-CHED2d6n.js.map → blockDiagram-VBNYF7ZC-B9XdY5wU.js.map} +1 -1
  13. package/dist/web/assets/{browser-C90Z8xCa.js → browser-PbepkUqh.js} +2 -2
  14. package/dist/web/assets/{browser-C90Z8xCa.js.map → browser-PbepkUqh.js.map} +1 -1
  15. package/dist/web/assets/{c4Diagram-5PPSVZJV-BM9MTPjg.js → c4Diagram-5PPSVZJV-BOhZdiso.js} +2 -2
  16. package/dist/web/assets/{c4Diagram-5PPSVZJV-BM9MTPjg.js.map → c4Diagram-5PPSVZJV-BOhZdiso.js.map} +1 -1
  17. package/dist/web/assets/channel-B-t5DHUk.js +2 -0
  18. package/dist/web/assets/{channel-CNo4GWLb.js.map → channel-B-t5DHUk.js.map} +1 -1
  19. package/dist/web/assets/{chunk-2GRJ4B5K-C4iVGbxx.js → chunk-2GRJ4B5K-BmDtDHkM.js} +2 -2
  20. package/dist/web/assets/{chunk-2GRJ4B5K-C4iVGbxx.js.map → chunk-2GRJ4B5K-BmDtDHkM.js.map} +1 -1
  21. package/dist/web/assets/{chunk-2Q5K7J3B-Dve8Pse2.js → chunk-2Q5K7J3B-BO2yESYY.js} +2 -2
  22. package/dist/web/assets/{chunk-2Q5K7J3B-Dve8Pse2.js.map → chunk-2Q5K7J3B-BO2yESYY.js.map} +1 -1
  23. package/dist/web/assets/{chunk-5RXB4S5H-C2oB-qjN.js → chunk-5RXB4S5H-kiRAsZwd.js} +2 -2
  24. package/dist/web/assets/{chunk-5RXB4S5H-C2oB-qjN.js.map → chunk-5RXB4S5H-kiRAsZwd.js.map} +1 -1
  25. package/dist/web/assets/{chunk-5VM5RSS4-DWcZ1FCf.js → chunk-5VM5RSS4-xV0NOwF4.js} +2 -2
  26. package/dist/web/assets/{chunk-5VM5RSS4-DWcZ1FCf.js.map → chunk-5VM5RSS4-xV0NOwF4.js.map} +1 -1
  27. package/dist/web/assets/{chunk-6Q2QTUOP-DiQ5-a8V.js → chunk-6Q2QTUOP-8NePja9o.js} +2 -2
  28. package/dist/web/assets/{chunk-6Q2QTUOP-DiQ5-a8V.js.map → chunk-6Q2QTUOP-8NePja9o.js.map} +1 -1
  29. package/dist/web/assets/{chunk-GF5L2VYU-CFdwjOhW.js → chunk-GF5L2VYU-CUJFN94c.js} +2 -2
  30. package/dist/web/assets/{chunk-GF5L2VYU-CFdwjOhW.js.map → chunk-GF5L2VYU-CUJFN94c.js.map} +1 -1
  31. package/dist/web/assets/{chunk-JWPE2WC7-Bw73DQVt.js → chunk-JWPE2WC7-CmSXGXsn.js} +2 -2
  32. package/dist/web/assets/{chunk-JWPE2WC7-Bw73DQVt.js.map → chunk-JWPE2WC7-CmSXGXsn.js.map} +1 -1
  33. package/dist/web/assets/{chunk-KBJHAD2P-DjRu5gDe.js → chunk-KBJHAD2P-BwZFX8JQ.js} +2 -2
  34. package/dist/web/assets/{chunk-KBJHAD2P-DjRu5gDe.js.map → chunk-KBJHAD2P-BwZFX8JQ.js.map} +1 -1
  35. package/dist/web/assets/{chunk-RYQCIY6F-DH_lQJgv.js → chunk-RYQCIY6F-Dc_jHsY9.js} +2 -2
  36. package/dist/web/assets/{chunk-RYQCIY6F-DH_lQJgv.js.map → chunk-RYQCIY6F-Dc_jHsY9.js.map} +1 -1
  37. package/dist/web/assets/{chunk-XXDRQBXY-D-sQ51mo.js → chunk-XXDRQBXY-BSpU2O2R.js} +2 -2
  38. package/dist/web/assets/{chunk-XXDRQBXY-D-sQ51mo.js.map → chunk-XXDRQBXY-BSpU2O2R.js.map} +1 -1
  39. package/dist/web/assets/classDiagram-JCYQIIEL-GYNSwMqh.js +2 -0
  40. package/dist/web/assets/{classDiagram-JCYQIIEL-n1b9u-Rf.js.map → classDiagram-JCYQIIEL-GYNSwMqh.js.map} +1 -1
  41. package/dist/web/assets/classDiagram-v2-OCEON4UE-GYNSwMqh.js +2 -0
  42. package/dist/web/assets/{classDiagram-v2-OCEON4UE-n1b9u-Rf.js.map → classDiagram-v2-OCEON4UE-GYNSwMqh.js.map} +1 -1
  43. package/dist/web/assets/{cose-bilkent-JH36ORCC-DqKiC30z.js → cose-bilkent-JH36ORCC-D-4EPeBC.js} +2 -2
  44. package/dist/web/assets/{cose-bilkent-JH36ORCC-DqKiC30z.js.map → cose-bilkent-JH36ORCC-D-4EPeBC.js.map} +1 -1
  45. package/dist/web/assets/{cynefin-VYW2F7L2-NdwQRwjo.js → cynefin-VYW2F7L2-DghzfVZI.js} +2 -2
  46. package/dist/web/assets/{cynefin-VYW2F7L2-NdwQRwjo.js.map → cynefin-VYW2F7L2-DghzfVZI.js.map} +1 -1
  47. package/dist/web/assets/{cynefinDiagram-MW4NZA55-BQAM0nx5.js → cynefinDiagram-MW4NZA55-BHcay-r_.js} +2 -2
  48. package/dist/web/assets/{cynefinDiagram-MW4NZA55-BQAM0nx5.js.map → cynefinDiagram-MW4NZA55-BHcay-r_.js.map} +1 -1
  49. package/dist/web/assets/{dagre-VZM6K2ZE-BakUuCWI.js → dagre-VZM6K2ZE-Des0F0T2.js} +2 -2
  50. package/dist/web/assets/{dagre-VZM6K2ZE-BakUuCWI.js.map → dagre-VZM6K2ZE-Des0F0T2.js.map} +1 -1
  51. package/dist/web/assets/{diagram-7IWD3JNH-DqlokNoJ.js → diagram-7IWD3JNH-CyIsW9-s.js} +2 -2
  52. package/dist/web/assets/{diagram-7IWD3JNH-DqlokNoJ.js.map → diagram-7IWD3JNH-CyIsW9-s.js.map} +1 -1
  53. package/dist/web/assets/{diagram-B4RE2ZJO-CxfL2Ohr.js → diagram-B4RE2ZJO-CPfT5zo4.js} +2 -2
  54. package/dist/web/assets/{diagram-B4RE2ZJO-CxfL2Ohr.js.map → diagram-B4RE2ZJO-CPfT5zo4.js.map} +1 -1
  55. package/dist/web/assets/{diagram-LBJQPF4R-Bf5hVD55.js → diagram-LBJQPF4R-BnhAYxgj.js} +2 -2
  56. package/dist/web/assets/{diagram-LBJQPF4R-Bf5hVD55.js.map → diagram-LBJQPF4R-BnhAYxgj.js.map} +1 -1
  57. package/dist/web/assets/{diagram-Q27KOJAE-CvO71PHg.js → diagram-Q27KOJAE-BTUkMYjS.js} +2 -2
  58. package/dist/web/assets/{diagram-Q27KOJAE-CvO71PHg.js.map → diagram-Q27KOJAE-BTUkMYjS.js.map} +1 -1
  59. package/dist/web/assets/{diagram-UB23O5K3-iQhxWPij.js → diagram-UB23O5K3-BO_rjksX.js} +2 -2
  60. package/dist/web/assets/{diagram-UB23O5K3-iQhxWPij.js.map → diagram-UB23O5K3-BO_rjksX.js.map} +1 -1
  61. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-3knPZeRi.js → ebnfDiagram-BXEA7PRR-Bfw7baSq.js} +2 -2
  62. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-3knPZeRi.js.map → ebnfDiagram-BXEA7PRR-Bfw7baSq.js.map} +1 -1
  63. package/dist/web/assets/{erDiagram-JOGREHBK-BusNzhCo.js → erDiagram-JOGREHBK-CGBfvZDV.js} +2 -2
  64. package/dist/web/assets/{erDiagram-JOGREHBK-BusNzhCo.js.map → erDiagram-JOGREHBK-CGBfvZDV.js.map} +1 -1
  65. package/dist/web/assets/{flowDiagram-UKHOOZJN-D1GiHCui.js → flowDiagram-UKHOOZJN-B5EmiiTz.js} +2 -2
  66. package/dist/web/assets/{flowDiagram-UKHOOZJN-D1GiHCui.js.map → flowDiagram-UKHOOZJN-B5EmiiTz.js.map} +1 -1
  67. package/dist/web/assets/{ganttDiagram-PKOTCBZU-cQM02Z_A.js → ganttDiagram-PKOTCBZU-CGqSoEb0.js} +2 -2
  68. package/dist/web/assets/{ganttDiagram-PKOTCBZU-cQM02Z_A.js.map → ganttDiagram-PKOTCBZU-CGqSoEb0.js.map} +1 -1
  69. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-mys_yOmq.js → gitGraphDiagram-DS77QQ5N-DH6rsz4e.js} +2 -2
  70. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-mys_yOmq.js.map → gitGraphDiagram-DS77QQ5N-DH6rsz4e.js.map} +1 -1
  71. package/dist/web/assets/index-C00qXlD3.js +321 -0
  72. package/dist/web/assets/index-C00qXlD3.js.map +1 -0
  73. package/dist/web/assets/index-x_ixrgA8.css +1 -0
  74. package/dist/web/assets/{infoDiagram-6WML65LV-CYUIhFE6.js → infoDiagram-6WML65LV-8GyCoK8Y.js} +2 -2
  75. package/dist/web/assets/{infoDiagram-6WML65LV-CYUIhFE6.js.map → infoDiagram-6WML65LV-8GyCoK8Y.js.map} +1 -1
  76. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-D0gaNJgz.js → ishikawaDiagram-WSZJBQD7-DsTRK7c-.js} +2 -2
  77. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-D0gaNJgz.js.map → ishikawaDiagram-WSZJBQD7-DsTRK7c-.js.map} +1 -1
  78. package/dist/web/assets/{journeyDiagram-NVQOT4AX-DIhXjZwD.js → journeyDiagram-NVQOT4AX-CoEJq9zb.js} +2 -2
  79. package/dist/web/assets/{journeyDiagram-NVQOT4AX-DIhXjZwD.js.map → journeyDiagram-NVQOT4AX-CoEJq9zb.js.map} +1 -1
  80. package/dist/web/assets/{jsQR-C8ubx0fr.js → jsQR-BOfQcojE.js} +2 -2
  81. package/dist/web/assets/{jsQR-C8ubx0fr.js.map → jsQR-BOfQcojE.js.map} +1 -1
  82. package/dist/web/assets/{kanban-definition-27J2QSJJ-BxGDo3GN.js → kanban-definition-27J2QSJJ-DIzs-NjM.js} +2 -2
  83. package/dist/web/assets/{kanban-definition-27J2QSJJ-BxGDo3GN.js.map → kanban-definition-27J2QSJJ-DIzs-NjM.js.map} +1 -1
  84. package/dist/web/assets/{linear-CUc_zRCa.js → linear-DFz1zZyg.js} +2 -2
  85. package/dist/web/assets/{linear-CUc_zRCa.js.map → linear-DFz1zZyg.js.map} +1 -1
  86. package/dist/web/assets/{mermaid.core-CT_PukdE.js → mermaid.core-f1Ho-4dn.js} +5 -5
  87. package/dist/web/assets/{mermaid.core-CT_PukdE.js.map → mermaid.core-f1Ho-4dn.js.map} +1 -1
  88. package/dist/web/assets/{mindmap-definition-FAOFIHXS-DzSWAB1J.js → mindmap-definition-FAOFIHXS-BGel_L1u.js} +2 -2
  89. package/dist/web/assets/{mindmap-definition-FAOFIHXS-DzSWAB1J.js.map → mindmap-definition-FAOFIHXS-BGel_L1u.js.map} +1 -1
  90. package/dist/web/assets/{pegDiagram-VL7TDLO6-B7M9OfRG.js → pegDiagram-VL7TDLO6-CH3zwC78.js} +2 -2
  91. package/dist/web/assets/{pegDiagram-VL7TDLO6-B7M9OfRG.js.map → pegDiagram-VL7TDLO6-CH3zwC78.js.map} +1 -1
  92. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-BcYxwyY_.js → pieDiagram-7S7Q4E2Y-DENb9y8v.js} +2 -2
  93. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-BcYxwyY_.js.map → pieDiagram-7S7Q4E2Y-DENb9y8v.js.map} +1 -1
  94. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-Cqm-8BCr.js → quadrantDiagram-CIZ2JOQS-BLK1220s.js} +2 -2
  95. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-Cqm-8BCr.js.map → quadrantDiagram-CIZ2JOQS-BLK1220s.js.map} +1 -1
  96. package/dist/web/assets/{railroadDiagram-AXF67PYL-Cd4kbtKm.js → railroadDiagram-AXF67PYL-BBDl06Il.js} +2 -2
  97. package/dist/web/assets/{railroadDiagram-AXF67PYL-Cd4kbtKm.js.map → railroadDiagram-AXF67PYL-BBDl06Il.js.map} +1 -1
  98. package/dist/web/assets/{requirementDiagram-LRYGKXZP-0QC6DgKB.js → requirementDiagram-LRYGKXZP-Kfi1Dz3z.js} +2 -2
  99. package/dist/web/assets/{requirementDiagram-LRYGKXZP-0QC6DgKB.js.map → requirementDiagram-LRYGKXZP-Kfi1Dz3z.js.map} +1 -1
  100. package/dist/web/assets/{sankeyDiagram-W5VNT64P-Dbw_ZsTK.js → sankeyDiagram-W5VNT64P-C4iAR6nR.js} +2 -2
  101. package/dist/web/assets/{sankeyDiagram-W5VNT64P-Dbw_ZsTK.js.map → sankeyDiagram-W5VNT64P-C4iAR6nR.js.map} +1 -1
  102. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-CTtqv5hy.js → sequenceDiagram-SI44F4Z6-CKRWa4zT.js} +2 -2
  103. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-CTtqv5hy.js.map → sequenceDiagram-SI44F4Z6-CKRWa4zT.js.map} +1 -1
  104. package/dist/web/assets/{sizeCapture-X5ZJPWSS-DEKrTD1X.js → sizeCapture-X5ZJPWSS-BNtX7Lu1.js} +2 -2
  105. package/dist/web/assets/{sizeCapture-X5ZJPWSS-DEKrTD1X.js.map → sizeCapture-X5ZJPWSS-BNtX7Lu1.js.map} +1 -1
  106. package/dist/web/assets/{stateDiagram-OKZ733FA-QTIZuWV9.js → stateDiagram-OKZ733FA-5ZsbTa9R.js} +2 -2
  107. package/dist/web/assets/{stateDiagram-OKZ733FA-QTIZuWV9.js.map → stateDiagram-OKZ733FA-5ZsbTa9R.js.map} +1 -1
  108. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DTZRWphk.js +2 -0
  109. package/dist/web/assets/{stateDiagram-v2-UEYNNEHI-CrwRGZAU.js.map → stateDiagram-v2-UEYNNEHI-DTZRWphk.js.map} +1 -1
  110. package/dist/web/assets/{swimlanes-SLNWSIFB-uVYP6afm.js → swimlanes-SLNWSIFB-g2hMvWhj.js} +3 -3
  111. package/dist/web/assets/{swimlanes-SLNWSIFB-uVYP6afm.js.map → swimlanes-SLNWSIFB-g2hMvWhj.js.map} +1 -1
  112. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-DhyxkK3y.js +9 -0
  113. package/dist/web/assets/{swimlanesDiagram-ULZ7WXOC-Ck34axny.js.map → swimlanesDiagram-ULZ7WXOC-DhyxkK3y.js.map} +1 -1
  114. package/dist/web/assets/{timeline-definition-Z64GVDOM-qp3Mh9Uw.js → timeline-definition-Z64GVDOM-CDKcjIt1.js} +2 -2
  115. package/dist/web/assets/{timeline-definition-Z64GVDOM-qp3Mh9Uw.js.map → timeline-definition-Z64GVDOM-CDKcjIt1.js.map} +1 -1
  116. package/dist/web/assets/{vennDiagram-T6HMQDX7-BV12qOhE.js → vennDiagram-T6HMQDX7-tW7OofM5.js} +2 -2
  117. package/dist/web/assets/{vennDiagram-T6HMQDX7-BV12qOhE.js.map → vennDiagram-T6HMQDX7-tW7OofM5.js.map} +1 -1
  118. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-CD3UVrjV.js → wardleyDiagram-T6FBY63Y-CFrWaO2w.js} +2 -2
  119. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-CD3UVrjV.js.map → wardleyDiagram-T6FBY63Y-CFrWaO2w.js.map} +1 -1
  120. package/dist/web/assets/{xychartDiagram-ELKLHX3M-cB0ynd1S.js → xychartDiagram-ELKLHX3M-Ci3g3fFj.js} +2 -2
  121. package/dist/web/assets/{xychartDiagram-ELKLHX3M-cB0ynd1S.js.map → xychartDiagram-ELKLHX3M-Ci3g3fFj.js.map} +1 -1
  122. package/dist/web/index.html +2 -2
  123. package/dist/web/sw.js +1 -1
  124. package/dist/web/version.json +1 -1
  125. package/package.json +9 -8
  126. package/dist/web/assets/channel-CNo4GWLb.js +0 -2
  127. package/dist/web/assets/classDiagram-JCYQIIEL-n1b9u-Rf.js +0 -2
  128. package/dist/web/assets/classDiagram-v2-OCEON4UE-n1b9u-Rf.js +0 -2
  129. package/dist/web/assets/index-BWQQ5ucz.css +0 -1
  130. package/dist/web/assets/index-CAvELUgG.js +0 -321
  131. package/dist/web/assets/index-CAvELUgG.js.map +0 -1
  132. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-CrwRGZAU.js +0 -2
  133. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-Ck34axny.js +0 -9
package/README.md CHANGED
@@ -66,6 +66,7 @@ OURS_MESSENGER_PORT default 8420; 0 selects a dynamic public port
66
66
  OURS_MESSENGER_PUBLIC_ORIGIN required exact external http(s) origin
67
67
  OURS_MESSENGER_STATE_DIR default ~/.ours-messenger
68
68
  OURS_MESSENGER_FORCE default false
69
+ OURS_MESSENGER_TYPED_COMMANDS default true; false disables typed-command REST operations
69
70
  OURS_MESSENGER_VAPID_PUBLIC_KEY optional; must be paired with the private key
70
71
  OURS_MESSENGER_VAPID_PRIVATE_KEY optional secret; never expose to the browser
71
72
  OURS_MESSENGER_VAPID_SUBJECT default mailto:admin@localhost
@@ -125,6 +126,49 @@ React nodes without raw HTML execution. Direct media responses allowlist only
125
126
  raster image/audio/video MIME types for inline use; HTML, SVG, XML, PDF, scripts,
126
127
  and unknown formats are opaque attachments with `nosniff` and a sandboxing CSP.
127
128
 
129
+ ### Recipient-scoped typed commands
130
+
131
+ The command button in a conversation discovers the selected contact's
132
+ authenticated SDK catalog and binds the returned fingerprint to that exact
133
+ recipient CID. A submission carries the recipient CID, catalog fingerprint, and
134
+ a browser-generated invocation ID; the server rechecks all three immediately
135
+ before calling the SDK. Every command requires an explicit confirmation. The
136
+ Messenger server never registers handlers or executes recipient code locally.
137
+
138
+ The generated form deliberately supports a bounded JSON Schema subset:
139
+ `type`, `title`, `description`, `default`, `enum`, `minimum`, `maximum`,
140
+ `minLength`, `maxLength`, `properties`, `required`, `items`, `minItems`, and
141
+ `maxItems`; supported values are object, array, string, number, integer,
142
+ boolean, and null. Catalogs are capped at 64 commands, schemas/arguments at 64
143
+ KiB, JSON nesting at 12 levels, and rendered controls at 64. Unsupported
144
+ keywords or ambiguous schemas are refused visibly rather than guessed. Names,
145
+ documentation, values, errors, and results render only as escaped React text or
146
+ JSON.
147
+
148
+ Invocation reservations are written atomically under
149
+ `OURS_MESSENGER_STATE_DIR` before network transmission. Repeating an identical
150
+ ID returns its durable accepted, pending, failed, or indeterminate outcome
151
+ without retransmission, including after restart or catalog removal; reusing an
152
+ ID for another CID or payload is rejected. At the fixed store limit, new sends
153
+ fail closed instead of discarding earlier mutation keys. An interrupted send
154
+ stays indeterminate and the UI tells the user to inspect conversation history,
155
+ never to retry blindly. Before transmission, the browser also saves the current
156
+ attempt under an identity-and-recipient-scoped local key. A reload exposes that
157
+ attempt and can reconcile it by replaying the same invocation ID through the
158
+ server dedupe store; starting another attempt requires an explicit reset after
159
+ the user verifies the outcome. Optional schema properties remain omitted until
160
+ added and can be removed again, while explicit empty strings, zero, false, null,
161
+ arrays, and empty-string keys are preserved. Invalid raw array input remains
162
+ visible, is announced, and blocks submission.
163
+
164
+ Commands and command results remain ordinary encrypted history entries. A
165
+ result is accepted as completed only when it has the strict SDK `{ok,result}`
166
+ or `{ok:false,error}` shape, comes from the authenticated expected peer CID, and
167
+ replies to the exact outgoing typed-command row. Malformed or unmatched results
168
+ render as safe failures in normal chronology. Set
169
+ `OURS_MESSENGER_TYPED_COMMANDS=false` for immediate rollback without changing
170
+ text or file behavior.
171
+
128
172
  ## WebPush
129
173
 
130
174
  Web Push is an explicit per-browser opt-in in Settings. The default `Full`
@@ -37,7 +37,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
37
37
  var define_MESSENGER_BUILD_INFO_default;
38
38
  var init_define_MESSENGER_BUILD_INFO = __esm({
39
39
  "<define:__MESSENGER_BUILD_INFO__>"() {
40
- define_MESSENGER_BUILD_INFO_default = { name: "@ours.network/messenger-server", version: "1.0.16", sha: "85f2701df6347d83a115486b3fb2843954aa351c", dirty: false };
40
+ define_MESSENGER_BUILD_INFO_default = { name: "@ours.network/messenger-server", version: "1.0.18", sha: "fc69d758b33ed660f9f4fd4ee5e9b44aa0fe1b7e", dirty: false };
41
41
  }
42
42
  });
43
43