@hraness/ghostget 0.17.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.
Files changed (500) hide show
  1. package/CHANGELOG.md +458 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1359 -0
  4. package/bunfig.toml +2 -0
  5. package/dist/apple-photos-client.js +704 -0
  6. package/dist/beeper-client.js +4602 -0
  7. package/dist/client.js +1605 -0
  8. package/dist/index-26yq8q16.js +31 -0
  9. package/dist/index-9t13b4k7.js +508 -0
  10. package/dist/index-axwm9b3v.js +5 -0
  11. package/dist/index-gwk7rbyj.js +30 -0
  12. package/dist/index.js +701 -0
  13. package/dist/messaging.js +1130 -0
  14. package/dist/omni-client.js +1406 -0
  15. package/dist/whatsapp-client.js +355 -0
  16. package/docs/imessage-direct-provider.md +106 -0
  17. package/docs/rental-listings.md +94 -0
  18. package/package.json +600 -0
  19. package/skills/ghostget/SKILL.md +251 -0
  20. package/skills/ghostget/agents/openai.yaml +4 -0
  21. package/skills/ghostget/references/adapter-contract.md +181 -0
  22. package/skills/ghostget/references/apple-photos.md +115 -0
  23. package/skills/ghostget/references/article-drafts.md +235 -0
  24. package/skills/ghostget/references/code-owned-provider-scaffold.md +134 -0
  25. package/skills/ghostget/references/cross-posting-video.md +139 -0
  26. package/skills/ghostget/references/cross-posting.md +82 -0
  27. package/skills/ghostget/references/derivation.md +390 -0
  28. package/skills/ghostget/references/hraness-social-profile-stats.json +269 -0
  29. package/skills/ghostget/references/install.md +66 -0
  30. package/skills/ghostget/references/linkedin-adapter.md +442 -0
  31. package/skills/ghostget/references/messaging.md +168 -0
  32. package/skills/ghostget/references/meta-comet-contract.md +153 -0
  33. package/skills/ghostget/references/platform-patterns.md +122 -0
  34. package/skills/ghostget/references/provider-plugins.md +496 -0
  35. package/skills/ghostget/references/reddit-flair.md +78 -0
  36. package/skills/ghostget/references/safety-and-state.md +214 -0
  37. package/skills/ghostget/references/settlement-and-duplicate-cleanup.md +79 -0
  38. package/skills/ghostget/references/social-platform-routing.md +66 -0
  39. package/skills/ghostget/references/social-profile-stats.md +195 -0
  40. package/skills/ghostget/references/social-video-platform-routing.md +89 -0
  41. package/skills/ghostget/references/whatsapp-adapter.md +101 -0
  42. package/skills/ghostget/references/x-adapter.md +332 -0
  43. package/skills/ghostget/references/x-ai-disclosure.md +71 -0
  44. package/src/apple-photos-cli.ts +639 -0
  45. package/src/apple-photos-client-types.ts +168 -0
  46. package/src/apple-photos-client.ts +201 -0
  47. package/src/apple-photos-contact-evidence.ts +838 -0
  48. package/src/apple-photos-local-source.ts +1131 -0
  49. package/src/args.ts +2053 -0
  50. package/src/article-draft-document.ts +417 -0
  51. package/src/article-draft-embeds.ts +123 -0
  52. package/src/article-draft-images.ts +214 -0
  53. package/src/assets/adapter-template/wrench-adapter.json +40 -0
  54. package/src/assets/adapters/beeper/wrench-web-adapter.json +1500 -0
  55. package/src/assets/adapters/beeper/wrench-web-adapter.v1.0.0.json +129 -0
  56. package/src/assets/adapters/beeper/wrench-web-adapter.v1.1.0.json +207 -0
  57. package/src/assets/adapters/beeper/wrench-web-adapter.v2.0.0.json +1463 -0
  58. package/src/assets/adapters/beeper/wrench-web-adapter.v2.1.0.json +1463 -0
  59. package/src/assets/adapters/beeper/wrench-web-adapter.v2.2.0.json +1475 -0
  60. package/src/assets/adapters/beeper/wrench-web-adapter.v2.3.0.json +1488 -0
  61. package/src/assets/adapters/bluesky/wrench-web-adapter.json +684 -0
  62. package/src/assets/adapters/bluesky/wrench-web-adapter.v1.0.0.json +581 -0
  63. package/src/assets/adapters/bluesky/wrench-web-adapter.v1.1.0.json +581 -0
  64. package/src/assets/adapters/bluesky/wrench-web-adapter.v1.2.0.json +581 -0
  65. package/src/assets/adapters/bluesky/wrench-web-adapter.v1.3.0.json +615 -0
  66. package/src/assets/adapters/bluesky/wrench-web-adapter.v1.4.0.json +684 -0
  67. package/src/assets/adapters/bluesky/wrench-web-adapter.v1.5.0.json +684 -0
  68. package/src/assets/adapters/bluesky/wrench-web-adapter.v1.6.0.json +684 -0
  69. package/src/assets/adapters/clasificados/wrench-web-adapter.json +54 -0
  70. package/src/assets/adapters/facebook/wrench-web-adapter.json +750 -0
  71. package/src/assets/adapters/facebook/wrench-web-adapter.v1.0.0.json +706 -0
  72. package/src/assets/adapters/facebook/wrench-web-adapter.v1.1.0.json +703 -0
  73. package/src/assets/adapters/facebook/wrench-web-adapter.v1.2.0.json +750 -0
  74. package/src/assets/adapters/facebook-group/wrench-web-adapter.json +682 -0
  75. package/src/assets/adapters/facebook-group/wrench-web-adapter.v1.0.0.json +583 -0
  76. package/src/assets/adapters/facebook-group/wrench-web-adapter.v1.1.0.json +682 -0
  77. package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.json +437 -0
  78. package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.v1.0.0.json +383 -0
  79. package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.v1.1.0.json +437 -0
  80. package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.v1.1.1.json +437 -0
  81. package/src/assets/adapters/facebook-page/wrench-web-adapter.json +880 -0
  82. package/src/assets/adapters/facebook-page/wrench-web-adapter.v1.0.0.json +740 -0
  83. package/src/assets/adapters/facebook-page/wrench-web-adapter.v1.1.0.json +880 -0
  84. package/src/assets/adapters/github/wrench-web-adapter.json +69 -0
  85. package/src/assets/adapters/github/wrench-web-adapter.v1.0.0.json +42 -0
  86. package/src/assets/adapters/github/wrench-web-adapter.v1.1.0.json +69 -0
  87. package/src/assets/adapters/gmail/wrench-adapter.json +161 -0
  88. package/src/assets/adapters/gmail/wrench-adapter.v1.2.0.json +157 -0
  89. package/src/assets/adapters/hacker-news/wrench-web-adapter.json +315 -0
  90. package/src/assets/adapters/hacker-news/wrench-web-adapter.v1.0.0.json +315 -0
  91. package/src/assets/adapters/imessage/wrench-web-adapter.json +236 -0
  92. package/src/assets/adapters/instagram/wrench-web-adapter.json +719 -0
  93. package/src/assets/adapters/instagram/wrench-web-adapter.v1.0.0.json +627 -0
  94. package/src/assets/adapters/instagram/wrench-web-adapter.v1.1.0.json +609 -0
  95. package/src/assets/adapters/instagram/wrench-web-adapter.v1.2.0.json +640 -0
  96. package/src/assets/adapters/instagram/wrench-web-adapter.v1.3.0.json +671 -0
  97. package/src/assets/adapters/instagram/wrench-web-adapter.v1.4.0.json +710 -0
  98. package/src/assets/adapters/instagram/wrench-web-adapter.v1.5.0.json +710 -0
  99. package/src/assets/adapters/instagram/wrench-web-adapter.v1.6.0.json +719 -0
  100. package/src/assets/adapters/instagram/wrench-web-adapter.v1.7.0.json +719 -0
  101. package/src/assets/adapters/linkedin/wrench-adapter.json +442 -0
  102. package/src/assets/adapters/linkedin/wrench-adapter.v0.4.0.json +124 -0
  103. package/src/assets/adapters/linkedin/wrench-adapter.v1.0.0.json +411 -0
  104. package/src/assets/adapters/linkedin/wrench-web-adapter.json +914 -0
  105. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.0.0.json +604 -0
  106. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.1.0.json +604 -0
  107. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.10.0.json +809 -0
  108. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.11.0.json +809 -0
  109. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.12.0.json +820 -0
  110. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.13.0.json +819 -0
  111. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.14.0.json +819 -0
  112. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.15.0.json +819 -0
  113. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.16.0.json +874 -0
  114. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.17.0.json +874 -0
  115. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.18.0.json +874 -0
  116. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.19.0.json +874 -0
  117. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.2.0.json +731 -0
  118. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.3.0.json +768 -0
  119. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.4.0.json +808 -0
  120. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.5.0.json +808 -0
  121. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.6.0.json +808 -0
  122. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.7.0.json +825 -0
  123. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.8.0.json +792 -0
  124. package/src/assets/adapters/linkedin/wrench-web-adapter.v1.9.0.json +809 -0
  125. package/src/assets/adapters/reddit/wrench-web-adapter.json +855 -0
  126. package/src/assets/adapters/reddit/wrench-web-adapter.v1.0.0.json +577 -0
  127. package/src/assets/adapters/reddit/wrench-web-adapter.v1.1.0.json +604 -0
  128. package/src/assets/adapters/reddit/wrench-web-adapter.v1.10.0.json +712 -0
  129. package/src/assets/adapters/reddit/wrench-web-adapter.v1.11.0.json +712 -0
  130. package/src/assets/adapters/reddit/wrench-web-adapter.v1.12.0.json +712 -0
  131. package/src/assets/adapters/reddit/wrench-web-adapter.v1.2.0.json +653 -0
  132. package/src/assets/adapters/reddit/wrench-web-adapter.v1.3.0.json +712 -0
  133. package/src/assets/adapters/reddit/wrench-web-adapter.v1.4.0.json +713 -0
  134. package/src/assets/adapters/reddit/wrench-web-adapter.v1.5.0.json +712 -0
  135. package/src/assets/adapters/reddit/wrench-web-adapter.v1.6.0.json +713 -0
  136. package/src/assets/adapters/reddit/wrench-web-adapter.v1.7.0.json +713 -0
  137. package/src/assets/adapters/reddit/wrench-web-adapter.v1.8.0.json +713 -0
  138. package/src/assets/adapters/reddit/wrench-web-adapter.v1.9.0.json +713 -0
  139. package/src/assets/adapters/substack/wrench-web-adapter.json +936 -0
  140. package/src/assets/adapters/substack/wrench-web-adapter.v1.0.0.json +817 -0
  141. package/src/assets/adapters/substack/wrench-web-adapter.v1.1.0.json +812 -0
  142. package/src/assets/adapters/substack/wrench-web-adapter.v1.2.0.json +812 -0
  143. package/src/assets/adapters/substack/wrench-web-adapter.v1.3.0.json +902 -0
  144. package/src/assets/adapters/substack/wrench-web-adapter.v1.4.0.json +936 -0
  145. package/src/assets/adapters/substack/wrench-web-adapter.v1.5.0.json +936 -0
  146. package/src/assets/adapters/substack/wrench-web-adapter.v1.6.0.json +936 -0
  147. package/src/assets/adapters/threads/wrench-web-adapter.json +692 -0
  148. package/src/assets/adapters/threads/wrench-web-adapter.v1.0.0.json +629 -0
  149. package/src/assets/adapters/threads/wrench-web-adapter.v1.1.0.json +623 -0
  150. package/src/assets/adapters/threads/wrench-web-adapter.v1.2.0.json +622 -0
  151. package/src/assets/adapters/threads/wrench-web-adapter.v1.3.0.json +622 -0
  152. package/src/assets/adapters/threads/wrench-web-adapter.v1.4.0.json +622 -0
  153. package/src/assets/adapters/threads/wrench-web-adapter.v1.5.0.json +699 -0
  154. package/src/assets/adapters/threads/wrench-web-adapter.v1.6.0.json +693 -0
  155. package/src/assets/adapters/threads/wrench-web-adapter.v1.7.0.json +692 -0
  156. package/src/assets/adapters/tiktok/wrench-web-adapter.json +762 -0
  157. package/src/assets/adapters/tiktok/wrench-web-adapter.v1.0.0.json +681 -0
  158. package/src/assets/adapters/tiktok/wrench-web-adapter.v1.1.0.json +708 -0
  159. package/src/assets/adapters/tiktok/wrench-web-adapter.v1.2.0.json +762 -0
  160. package/src/assets/adapters/tiktok/wrench-web-adapter.v1.3.0.json +762 -0
  161. package/src/assets/adapters/twitch/wrench-web-adapter.json +42 -0
  162. package/src/assets/adapters/twitch/wrench-web-adapter.v1.0.0.json +42 -0
  163. package/src/assets/adapters/whatsapp/wrench-web-adapter.json +400 -0
  164. package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.0.0.json +355 -0
  165. package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.1.0.json +386 -0
  166. package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.2.0.json +386 -0
  167. package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.3.0.json +400 -0
  168. package/src/assets/adapters/x/wrench-adapter.json +749 -0
  169. package/src/assets/adapters/x/wrench-adapter.v1.0.0.json +700 -0
  170. package/src/assets/adapters/x/wrench-adapter.v1.1.0.json +707 -0
  171. package/src/assets/adapters/x/wrench-web-adapter.json +712 -0
  172. package/src/assets/adapters/x/wrench-web-adapter.v1.1.0.json +579 -0
  173. package/src/assets/adapters/x/wrench-web-adapter.v1.10.0.json +685 -0
  174. package/src/assets/adapters/x/wrench-web-adapter.v1.11.0.json +712 -0
  175. package/src/assets/adapters/x/wrench-web-adapter.v1.12.0.json +712 -0
  176. package/src/assets/adapters/x/wrench-web-adapter.v1.13.0.json +712 -0
  177. package/src/assets/adapters/x/wrench-web-adapter.v1.2.0.json +578 -0
  178. package/src/assets/adapters/x/wrench-web-adapter.v1.3.0.json +610 -0
  179. package/src/assets/adapters/x/wrench-web-adapter.v1.4.0.json +617 -0
  180. package/src/assets/adapters/x/wrench-web-adapter.v1.5.0.json +634 -0
  181. package/src/assets/adapters/x/wrench-web-adapter.v1.6.0.json +632 -0
  182. package/src/assets/adapters/x/wrench-web-adapter.v1.7.0.json +649 -0
  183. package/src/assets/adapters/x/wrench-web-adapter.v1.8.0.json +649 -0
  184. package/src/assets/adapters/x/wrench-web-adapter.v1.9.0.json +683 -0
  185. package/src/assets/adapters/youtube/wrench-web-adapter.json +561 -0
  186. package/src/assets/adapters/youtube/wrench-web-adapter.v1.0.0.json +465 -0
  187. package/src/assets/adapters/youtube/wrench-web-adapter.v1.1.0.json +519 -0
  188. package/src/assets/adapters/youtube/wrench-web-adapter.v1.2.0.json +561 -0
  189. package/src/assets/adapters/youtube/wrench-web-adapter.v1.3.0.json +561 -0
  190. package/src/assets/code-owned-provider-template/plugin.test.ts.template +54 -0
  191. package/src/assets/code-owned-provider-template/plugin.ts.template +102 -0
  192. package/src/assets/code-owned-provider-template/runtime.internal.test.ts.template +44 -0
  193. package/src/assets/code-owned-provider-template/runtime.ts.template +59 -0
  194. package/src/assets/code-owned-provider-template/wrench-adapter.json.template +33 -0
  195. package/src/assets/fonts/nebula-sans/LICENSE.txt +96 -0
  196. package/src/assets/fonts/nebula-sans/NebulaSans-Book.woff2 +0 -0
  197. package/src/assets/fonts/nebula-sans/PROVENANCE.md +14 -0
  198. package/src/assets.d.ts +4 -0
  199. package/src/auth.ts +1157 -0
  200. package/src/beeper-client-types.ts +169 -0
  201. package/src/beeper-client.ts +250 -0
  202. package/src/beeper-contact-interactions-cli.ts +180 -0
  203. package/src/beeper-contact-interactions.ts +1612 -0
  204. package/src/beeper-message-bundle-v1.ts +257 -0
  205. package/src/beeper-message-like-me-cli.ts +84 -0
  206. package/src/beeper-message-like-me-export.ts +2274 -0
  207. package/src/beeper-message-like-me-recovery.ts +931 -0
  208. package/src/beeper-message-like-me-source.ts +4034 -0
  209. package/src/browser-admission.ts +928 -0
  210. package/src/browser-snapshots.ts +260 -0
  211. package/src/browser.ts +3873 -0
  212. package/src/canonical-json.ts +60 -0
  213. package/src/catalog-cli.ts +638 -0
  214. package/src/cli.ts +208 -0
  215. package/src/client-types.ts +301 -0
  216. package/src/client.ts +2726 -0
  217. package/src/confirmed-write-failure.ts +44 -0
  218. package/src/confirmed-write-model.ts +72 -0
  219. package/src/confirmed-write-platform.ts +1055 -0
  220. package/src/confirmed-write-program.ts +224 -0
  221. package/src/confirmed-write-runtime.ts +16 -0
  222. package/src/cursor-token.ts +228 -0
  223. package/src/derivation-dnr-readiness.ts +367 -0
  224. package/src/derivation-file-chooser.ts +384 -0
  225. package/src/derivation-network-boundary.ts +835 -0
  226. package/src/derivation-network-guard.ts +782 -0
  227. package/src/derivation-network-proxy-helper.ts +440 -0
  228. package/src/derivation-network-proxy.ts +385 -0
  229. package/src/derive-command-helper.ts +693 -0
  230. package/src/derive-fixtures.ts +343 -0
  231. package/src/derive-review.ts +980 -0
  232. package/src/derive.ts +4754 -0
  233. package/src/fixtures/beeper-message-like-me-v1/accounts.ndjson +2 -0
  234. package/src/fixtures/beeper-message-like-me-v1/conversations.ndjson +1 -0
  235. package/src/fixtures/beeper-message-like-me-v1/manifest.json +1 -0
  236. package/src/fixtures/beeper-message-like-me-v1/messages.ndjson +2 -0
  237. package/src/fixtures/beeper-message-like-me-v1/participants.ndjson +3 -0
  238. package/src/fixtures/beeper-message-like-me-v1/reactions.ndjson +1 -0
  239. package/src/fixtures/beeper-message-like-me-v1/tombstones.ndjson +1 -0
  240. package/src/ghostget.ts +3672 -0
  241. package/src/gmail-capture.ts +1244 -0
  242. package/src/har-internal.ts +1242 -0
  243. package/src/har.ts +743 -0
  244. package/src/index.ts +218 -0
  245. package/src/invocation-read-platform.ts +55 -0
  246. package/src/invocation-read-program.ts +93 -0
  247. package/src/invocation-read-runtime.ts +11 -0
  248. package/src/linked-device-lifecycle-admission.ts +450 -0
  249. package/src/linked-device-lifecycle-journal.ts +1560 -0
  250. package/src/linked-device-lifecycle-runtime.ts +1602 -0
  251. package/src/local-cli-admission.ts +135 -0
  252. package/src/local-cli-contracts.ts +271 -0
  253. package/src/local-cli-execution.ts +98 -0
  254. package/src/local-cli-surface-contract.ts +1510 -0
  255. package/src/local-cli-tool-identity.ts +336 -0
  256. package/src/media/archive.ts +2325 -0
  257. package/src/media/args.ts +303 -0
  258. package/src/media/cli.ts +287 -0
  259. package/src/media/doctor.ts +475 -0
  260. package/src/media/ffmpeg.ts +1330 -0
  261. package/src/media/http-capture.ts +711 -0
  262. package/src/media/http-probe.ts +593 -0
  263. package/src/media/http.ts +387 -0
  264. package/src/media/index.ts +10 -0
  265. package/src/media/local-transcription.ts +613 -0
  266. package/src/media/lock.ts +321 -0
  267. package/src/media/manifest.ts +1712 -0
  268. package/src/media/metadata.ts +906 -0
  269. package/src/media/process.ts +723 -0
  270. package/src/media/revision.ts +166 -0
  271. package/src/media/runtime-closure.ts +1063 -0
  272. package/src/media/source-router.ts +187 -0
  273. package/src/media/transcriber-config.ts +1122 -0
  274. package/src/media/transcript-persistence-model.ts +15 -0
  275. package/src/media/transcript-persistence-platform.ts +89 -0
  276. package/src/media/transcript-persistence-program.ts +39 -0
  277. package/src/media/transcript-persistence-runtime.ts +24 -0
  278. package/src/media/transcript.ts +616 -0
  279. package/src/media/utf8-order.ts +30 -0
  280. package/src/media/whisper-cpp.ts +464 -0
  281. package/src/media/whisper-language.ts +58 -0
  282. package/src/media/yt-dlp.ts +439 -0
  283. package/src/message-like-me-agentic-messaging.ts +882 -0
  284. package/src/messaging-action-store.ts +793 -0
  285. package/src/messaging-runtime.ts +2136 -0
  286. package/src/messaging-store.ts +539 -0
  287. package/src/messaging-types.ts +1663 -0
  288. package/src/messaging.ts +334 -0
  289. package/src/model.ts +2671 -0
  290. package/src/oauth-google.ts +888 -0
  291. package/src/omni-client-types.ts +306 -0
  292. package/src/omni-client.ts +2225 -0
  293. package/src/omni-limits.ts +34 -0
  294. package/src/omni-model.ts +1614 -0
  295. package/src/omni-request.ts +379 -0
  296. package/src/omni-runtime.ts +1632 -0
  297. package/src/operation-deadline.ts +189 -0
  298. package/src/path-helper.ts +1656 -0
  299. package/src/pinned-https.ts +194 -0
  300. package/src/plan-assets.ts +832 -0
  301. package/src/platform-catalog.ts +1832 -0
  302. package/src/plugins/beeper-linked-device/plugin.ts +310 -0
  303. package/src/plugins/bluesky-web/plugin.ts +178 -0
  304. package/src/plugins/clasificados-web/plugin.ts +66 -0
  305. package/src/plugins/github-web/plugin.ts +80 -0
  306. package/src/plugins/gmail-official/plugin.ts +110 -0
  307. package/src/plugins/hacker-news-web/plugin.ts +52 -0
  308. package/src/plugins/imessage-direct/plugin.ts +195 -0
  309. package/src/plugins/imessage-direct/vendor/0001-fix-keep-AppleScript-send-payloads-out-of-child-argv.patch +1430 -0
  310. package/src/plugins/imessage-direct/vendor/0002-feat-rpc-add-exact-chat-lookup.patch +225 -0
  311. package/src/plugins/imessage-direct/vendor/provenance.json +80 -0
  312. package/src/plugins/linkedin-official/plugin.ts +84 -0
  313. package/src/plugins/linkedin-web/plugin.ts +412 -0
  314. package/src/plugins/meta-web/plugin.ts +317 -0
  315. package/src/plugins/reddit-web/flair.ts +492 -0
  316. package/src/plugins/reddit-web/plugin.ts +477 -0
  317. package/src/plugins/substack-web/plugin.ts +124 -0
  318. package/src/plugins/tiktok-web/plugin.ts +67 -0
  319. package/src/plugins/twitch-web/plugin.ts +54 -0
  320. package/src/plugins/whatsapp-linked-device/plugin.ts +105 -0
  321. package/src/plugins/x-official/plugin.ts +64 -0
  322. package/src/plugins/x-web/plugin.ts +488 -0
  323. package/src/plugins/youtube-web/plugin.ts +101 -0
  324. package/src/portable-run-recovery.ts +466 -0
  325. package/src/process-identity.ts +501 -0
  326. package/src/profile-clone-helper.ts +104 -0
  327. package/src/provider-catalog-views.ts +51 -0
  328. package/src/provider-context.ts +69 -0
  329. package/src/provider-contract-definitions-x.ts +45 -0
  330. package/src/provider-contract-definitions.ts +948 -0
  331. package/src/provider-contract-input-gmail.ts +176 -0
  332. package/src/provider-contract-input-linkedin.ts +77 -0
  333. package/src/provider-contract-input-x.ts +304 -0
  334. package/src/provider-contract-planning.ts +23 -0
  335. package/src/provider-contract-semantic-identity.ts +54 -0
  336. package/src/provider-contracts.ts +251 -0
  337. package/src/provider-http.ts +723 -0
  338. package/src/provider-plugin-auth.ts +36 -0
  339. package/src/provider-plugin-builtins.ts +229 -0
  340. package/src/provider-plugin-cleanup-barrier.ts +229 -0
  341. package/src/provider-plugin-cleanup-execution.ts +79 -0
  342. package/src/provider-plugin-cleanup-resource.ts +470 -0
  343. package/src/provider-plugin-contract-identity.ts +707 -0
  344. package/src/provider-plugin-host.ts +1972 -0
  345. package/src/provider-plugin-identifiers.ts +60 -0
  346. package/src/provider-plugin-invocation-lease.ts +889 -0
  347. package/src/provider-plugin-lifecycle-kernel.ts +566 -0
  348. package/src/provider-plugin-lifecycle.ts +1455 -0
  349. package/src/provider-plugin-module-analysis.ts +336 -0
  350. package/src/provider-plugin-package.ts +2530 -0
  351. package/src/provider-plugin-portable-authority.ts +106 -0
  352. package/src/provider-plugin-portable-catalog.ts +94 -0
  353. package/src/provider-plugin-portable-identity.ts +315 -0
  354. package/src/provider-plugin-portable-runtime.ts +2057 -0
  355. package/src/provider-plugin-protocol.ts +1625 -0
  356. package/src/provider-plugin-registry.ts +3342 -0
  357. package/src/provider-plugin-store.ts +2155 -0
  358. package/src/provider-plugin-test-fixture.ts +5 -0
  359. package/src/provider-plugin.ts +4907 -0
  360. package/src/provider-plugins.generated.ts +43 -0
  361. package/src/provider-plugins.ts +8 -0
  362. package/src/provider-subject.ts +41 -0
  363. package/src/provider.ts +315 -0
  364. package/src/providers/beeper-local-runtime.ts +5426 -0
  365. package/src/providers/beeper-local.ts +2739 -0
  366. package/src/providers/beeper-messaging.ts +462 -0
  367. package/src/providers/beeper-omni.ts +1159 -0
  368. package/src/providers/bluesky-web-runtime.ts +2895 -0
  369. package/src/providers/bluesky-web.ts +1614 -0
  370. package/src/providers/clasificados-web-runtime.ts +255 -0
  371. package/src/providers/clasificados-web.ts +503 -0
  372. package/src/providers/contact-projection.ts +301 -0
  373. package/src/providers/github-read-model.ts +94 -0
  374. package/src/providers/github-read-platform.ts +165 -0
  375. package/src/providers/github-read-program.ts +97 -0
  376. package/src/providers/github-web-runtime.ts +320 -0
  377. package/src/providers/github-web.ts +403 -0
  378. package/src/providers/gmail-api.ts +2834 -0
  379. package/src/providers/gmail-omni.ts +830 -0
  380. package/src/providers/gmail.ts +1130 -0
  381. package/src/providers/hacker-news-web-runtime.ts +220 -0
  382. package/src/providers/hacker-news-web.ts +809 -0
  383. package/src/providers/imessage-direct-install.ts +354 -0
  384. package/src/providers/imessage-direct-messaging.ts +532 -0
  385. package/src/providers/imessage-direct-omni.ts +400 -0
  386. package/src/providers/imessage-direct-runtime.ts +1498 -0
  387. package/src/providers/imessage-direct.ts +351 -0
  388. package/src/providers/instagram-video-foundations.ts +913 -0
  389. package/src/providers/instagram-web-profile-browser.ts +600 -0
  390. package/src/providers/iso-bmff.ts +338 -0
  391. package/src/providers/linkedin-company-platform.ts +42 -0
  392. package/src/providers/linkedin-company-program.ts +88 -0
  393. package/src/providers/linkedin-contact-failure.ts +84 -0
  394. package/src/providers/linkedin-contact-platform.ts +45 -0
  395. package/src/providers/linkedin-contact-program.ts +91 -0
  396. package/src/providers/linkedin-profile-activity-failure.ts +76 -0
  397. package/src/providers/linkedin-profile-activity-platform.ts +41 -0
  398. package/src/providers/linkedin-profile-activity-program.ts +67 -0
  399. package/src/providers/linkedin-read-failure.ts +52 -0
  400. package/src/providers/linkedin-self-platform.ts +53 -0
  401. package/src/providers/linkedin-self-program.ts +122 -0
  402. package/src/providers/linkedin-web-article-browser.ts +794 -0
  403. package/src/providers/linkedin-web-bootstrap.ts +146 -0
  404. package/src/providers/linkedin-web-contact.ts +830 -0
  405. package/src/providers/linkedin-web-feed-browser.ts +832 -0
  406. package/src/providers/linkedin-web-feed.ts +864 -0
  407. package/src/providers/linkedin-web-post-browser.ts +653 -0
  408. package/src/providers/linkedin-web-profile-browser.ts +683 -0
  409. package/src/providers/linkedin-web-runtime.ts +2388 -0
  410. package/src/providers/linkedin-web.ts +3305 -0
  411. package/src/providers/linkedin.ts +1885 -0
  412. package/src/providers/meta-bootstrap.ts +1043 -0
  413. package/src/providers/meta-facebook-group.ts +690 -0
  414. package/src/providers/meta-marketplace-relay.ts +747 -0
  415. package/src/providers/meta-omni.ts +373 -0
  416. package/src/providers/meta-relay-bundle.ts +1049 -0
  417. package/src/providers/meta-web-descriptors.ts +1740 -0
  418. package/src/providers/meta-web-runtime.ts +3388 -0
  419. package/src/providers/meta-web.ts +2931 -0
  420. package/src/providers/read-failure.ts +139 -0
  421. package/src/providers/reddit-omni.ts +462 -0
  422. package/src/providers/reddit-web-runtime.ts +1929 -0
  423. package/src/providers/reddit-web.ts +1611 -0
  424. package/src/providers/rental-listings.ts +460 -0
  425. package/src/providers/substack-omni.ts +406 -0
  426. package/src/providers/substack-video-mp4.ts +33 -0
  427. package/src/providers/substack-web-runtime.ts +2812 -0
  428. package/src/providers/substack-web.ts +1502 -0
  429. package/src/providers/tiktok-video-mp4.ts +33 -0
  430. package/src/providers/tiktok-web-runtime.ts +770 -0
  431. package/src/providers/tiktok-web.ts +2786 -0
  432. package/src/providers/twitch-web-runtime.ts +226 -0
  433. package/src/providers/twitch-web.ts +274 -0
  434. package/src/providers/whatsapp-account-identity.ts +55 -0
  435. package/src/providers/whatsapp-contact-projection-helper.ts +874 -0
  436. package/src/providers/whatsapp-contact-projection-protocol.ts +403 -0
  437. package/src/providers/whatsapp-interaction-projection-helper.ts +1452 -0
  438. package/src/providers/whatsapp-interaction-projection-protocol.ts +462 -0
  439. package/src/providers/whatsapp-message-export-projection-protocol.ts +532 -0
  440. package/src/providers/whatsapp-messaging.ts +132 -0
  441. package/src/providers/whatsapp-omni.ts +586 -0
  442. package/src/providers/whatsapp-web-runtime.ts +3108 -0
  443. package/src/providers/whatsapp-web.ts +1037 -0
  444. package/src/providers/x-image-provenance.ts +523 -0
  445. package/src/providers/x-made-with-ai.ts +106 -0
  446. package/src/providers/x-transaction-id.ts +413 -0
  447. package/src/providers/x-web-runtime.ts +3485 -0
  448. package/src/providers/x-web.ts +2332 -0
  449. package/src/providers/x.ts +1889 -0
  450. package/src/providers/youtube-web-runtime.ts +1400 -0
  451. package/src/providers/youtube-web.ts +1221 -0
  452. package/src/read-admission-runtime.ts +91 -0
  453. package/src/read-client.ts +521 -0
  454. package/src/read-effect-platform.ts +7 -0
  455. package/src/read-effect-runtime.ts +14 -0
  456. package/src/read-effect.ts +52 -0
  457. package/src/read-projection-admission.ts +866 -0
  458. package/src/read-projections.ts +3151 -0
  459. package/src/recovery.ts +1492 -0
  460. package/src/reviewed-template.ts +146 -0
  461. package/src/run-journal.ts +1272 -0
  462. package/src/runtime.ts +5116 -0
  463. package/src/scripts/generate-provider-plugin-catalog.ts +121 -0
  464. package/src/scripts/install-whatsapp-protocol.sh +232 -0
  465. package/src/scripts/recover-install-stages.ts +1491 -0
  466. package/src/scripts/resolve-state-home.ts +30 -0
  467. package/src/scripts/scaffold-web-provider.ts +973 -0
  468. package/src/scripts/sync-bundled-adapters.ts +695 -0
  469. package/src/session-secrets.ts +1183 -0
  470. package/src/state-helper.bunfig.toml +2 -0
  471. package/src/state-helper.ts +2914 -0
  472. package/src/storage.ts +3842 -0
  473. package/src/transport-policy.ts +2 -0
  474. package/src/usage.ts +182 -0
  475. package/src/version.ts +2 -0
  476. package/src/web-session-authentication-policy.ts +136 -0
  477. package/src/web-session-cleanup-admission.ts +2344 -0
  478. package/src/web-session-cleanup-join.ts +99 -0
  479. package/src/web-session-client.ts +996 -0
  480. package/src/web-session-contract-definitions.ts +820 -0
  481. package/src/web-session-contract-planning.ts +42 -0
  482. package/src/web-session-contracts.ts +228 -0
  483. package/src/web-session-cookies.ts +500 -0
  484. package/src/web-session-execution.ts +385 -0
  485. package/src/web-session-http.ts +373 -0
  486. package/src/web-session-read-errors.ts +19 -0
  487. package/src/web-session-read-runtime.ts +124 -0
  488. package/src/web-session-recovery.ts +818 -0
  489. package/src/web-session-sites.ts +58 -0
  490. package/src/web-session-template.ts +994 -0
  491. package/src/web-session.ts +93 -0
  492. package/src/whatsapp-client-binding.ts +21 -0
  493. package/src/whatsapp-client-types.ts +75 -0
  494. package/src/whatsapp-client.ts +395 -0
  495. package/src/whatsapp-export-coordinate.ts +17 -0
  496. package/src/whatsapp-message-bundle-v2.ts +195 -0
  497. package/src/whatsapp-message-like-me-cli.ts +195 -0
  498. package/src/whatsapp-message-like-me-export.ts +1072 -0
  499. package/src/whatsapp-message-like-me-source.ts +1012 -0
  500. package/tsconfig.json +67 -0
@@ -0,0 +1,1463 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "id": "beeper-local",
4
+ "version": "2.0.0",
5
+ "displayName": "Beeper (Pinned Local CLI)",
6
+ "surfaceId": "beeper",
7
+ "origins": [
8
+ "https://www.beeper.com"
9
+ ],
10
+ "browserDomains": [
11
+ "www.beeper.com"
12
+ ],
13
+ "operations": {
14
+ "accounts.list": {
15
+ "description": "List the exact account realm bound to the fixed local Beeper Desktop target.",
16
+ "risk": "R1",
17
+ "sideEffect": "none",
18
+ "idempotency": "none",
19
+ "dedupeWindowMs": 0,
20
+ "input": {
21
+ "properties": {},
22
+ "required": []
23
+ },
24
+ "localCli": {
25
+ "surface": "beeper",
26
+ "action": "accounts.list",
27
+ "contractVersion": 1,
28
+ "timeoutMs": 120000,
29
+ "maxOutputBytes": 10485760
30
+ }
31
+ },
32
+ "accounts.read": {
33
+ "description": "Read one exact connected Beeper account.",
34
+ "risk": "R1",
35
+ "sideEffect": "none",
36
+ "idempotency": "none",
37
+ "dedupeWindowMs": 0,
38
+ "input": {
39
+ "properties": {
40
+ "account_id": {
41
+ "type": "string",
42
+ "description": "Exact Beeper account ID returned by this adapter",
43
+ "minLength": 1,
44
+ "maxLength": 512
45
+ }
46
+ },
47
+ "required": [
48
+ "account_id"
49
+ ]
50
+ },
51
+ "localCli": {
52
+ "surface": "beeper",
53
+ "action": "accounts.read",
54
+ "contractVersion": 1,
55
+ "timeoutMs": 120000,
56
+ "maxOutputBytes": 10485760
57
+ }
58
+ },
59
+ "bridges.list": {
60
+ "description": "List one bounded, secret-free bridge capability catalog.",
61
+ "risk": "R1",
62
+ "sideEffect": "none",
63
+ "idempotency": "none",
64
+ "dedupeWindowMs": 0,
65
+ "input": {
66
+ "properties": {
67
+ "provider": {
68
+ "type": "string",
69
+ "description": "Optional exact bridge provider class",
70
+ "minLength": 1,
71
+ "maxLength": 32,
72
+ "enum": [
73
+ "local",
74
+ "cloud",
75
+ "self-hosted"
76
+ ]
77
+ },
78
+ "available": {
79
+ "type": "boolean",
80
+ "description": "Optionally require current availability"
81
+ },
82
+ "limit": {
83
+ "type": "number",
84
+ "description": "Maximum projected bridges",
85
+ "minimum": 1,
86
+ "maximum": 128
87
+ }
88
+ },
89
+ "required": []
90
+ },
91
+ "localCli": {
92
+ "surface": "beeper",
93
+ "action": "bridges.list",
94
+ "contractVersion": 1,
95
+ "timeoutMs": 120000,
96
+ "maxOutputBytes": 10485760
97
+ }
98
+ },
99
+ "bridges.read": {
100
+ "description": "Read one exact bridge and its secret-free capabilities.",
101
+ "risk": "R1",
102
+ "sideEffect": "none",
103
+ "idempotency": "none",
104
+ "dedupeWindowMs": 0,
105
+ "input": {
106
+ "properties": {
107
+ "bridge_id": {
108
+ "type": "string",
109
+ "description": "Exact bridge ID returned by this adapter",
110
+ "minLength": 1,
111
+ "maxLength": 512
112
+ }
113
+ },
114
+ "required": [
115
+ "bridge_id"
116
+ ]
117
+ },
118
+ "localCli": {
119
+ "surface": "beeper",
120
+ "action": "bridges.read",
121
+ "contractVersion": 1,
122
+ "timeoutMs": 120000,
123
+ "maxOutputBytes": 10485760
124
+ }
125
+ },
126
+ "contacts.list": {
127
+ "description": "List one bounded account-aware contact projection.",
128
+ "risk": "R1",
129
+ "sideEffect": "none",
130
+ "idempotency": "none",
131
+ "dedupeWindowMs": 0,
132
+ "input": {
133
+ "properties": {
134
+ "account_id": {
135
+ "type": "string",
136
+ "description": "Exact Beeper account ID returned by this adapter",
137
+ "minLength": 1,
138
+ "maxLength": 512
139
+ },
140
+ "limit": {
141
+ "type": "number",
142
+ "description": "Maximum projected contacts",
143
+ "minimum": 1,
144
+ "maximum": 200
145
+ }
146
+ },
147
+ "required": []
148
+ },
149
+ "localCli": {
150
+ "surface": "beeper",
151
+ "action": "contacts.list",
152
+ "contractVersion": 1,
153
+ "timeoutMs": 120000,
154
+ "maxOutputBytes": 10485760
155
+ }
156
+ },
157
+ "contacts.search": {
158
+ "description": "Search one bounded contact candidate window.",
159
+ "risk": "R1",
160
+ "sideEffect": "none",
161
+ "idempotency": "none",
162
+ "dedupeWindowMs": 0,
163
+ "input": {
164
+ "properties": {
165
+ "query": {
166
+ "type": "string",
167
+ "description": "Normalized bounded contact lookup text",
168
+ "minLength": 1,
169
+ "maxLength": 256
170
+ },
171
+ "account_id": {
172
+ "type": "string",
173
+ "description": "Exact Beeper account ID returned by this adapter",
174
+ "minLength": 1,
175
+ "maxLength": 512
176
+ },
177
+ "limit": {
178
+ "type": "number",
179
+ "description": "Maximum candidate contacts",
180
+ "minimum": 1,
181
+ "maximum": 20
182
+ }
183
+ },
184
+ "required": [
185
+ "query"
186
+ ]
187
+ },
188
+ "localCli": {
189
+ "surface": "beeper",
190
+ "action": "contacts.search",
191
+ "contractVersion": 1,
192
+ "timeoutMs": 120000,
193
+ "maxOutputBytes": 10485760
194
+ }
195
+ },
196
+ "contacts.read": {
197
+ "description": "Read one exact account-bound contact identity.",
198
+ "risk": "R1",
199
+ "sideEffect": "none",
200
+ "idempotency": "none",
201
+ "dedupeWindowMs": 0,
202
+ "input": {
203
+ "properties": {
204
+ "account_id": {
205
+ "type": "string",
206
+ "description": "Exact Beeper account ID returned by this adapter",
207
+ "minLength": 1,
208
+ "maxLength": 512
209
+ },
210
+ "contact_id": {
211
+ "type": "string",
212
+ "description": "Exact contact ID returned by this adapter",
213
+ "minLength": 1,
214
+ "maxLength": 2048
215
+ }
216
+ },
217
+ "required": [
218
+ "account_id",
219
+ "contact_id"
220
+ ]
221
+ },
222
+ "localCli": {
223
+ "surface": "beeper",
224
+ "action": "contacts.read",
225
+ "contractVersion": 1,
226
+ "timeoutMs": 120000,
227
+ "maxOutputBytes": 10485760
228
+ }
229
+ },
230
+ "messaging.list": {
231
+ "description": "List one bounded account-aware conversation projection.",
232
+ "risk": "R1",
233
+ "sideEffect": "none",
234
+ "idempotency": "none",
235
+ "dedupeWindowMs": 0,
236
+ "input": {
237
+ "properties": {
238
+ "account_id": {
239
+ "type": "string",
240
+ "description": "Exact Beeper account ID returned by this adapter",
241
+ "minLength": 1,
242
+ "maxLength": 512
243
+ },
244
+ "limit": {
245
+ "type": "number",
246
+ "description": "Maximum projected conversations",
247
+ "minimum": 1,
248
+ "maximum": 200
249
+ },
250
+ "archived": {
251
+ "type": "boolean",
252
+ "description": "Filter by archived state"
253
+ },
254
+ "pinned": {
255
+ "type": "boolean",
256
+ "description": "Filter by pinned state"
257
+ },
258
+ "muted": {
259
+ "type": "boolean",
260
+ "description": "Filter by muted state"
261
+ },
262
+ "unread": {
263
+ "type": "boolean",
264
+ "description": "Filter by unread state"
265
+ },
266
+ "low_priority": {
267
+ "type": "boolean",
268
+ "description": "Filter by low-priority state"
269
+ }
270
+ },
271
+ "required": []
272
+ },
273
+ "localCli": {
274
+ "surface": "beeper",
275
+ "action": "messaging.list",
276
+ "contractVersion": 1,
277
+ "timeoutMs": 120000,
278
+ "maxOutputBytes": 10485760
279
+ }
280
+ },
281
+ "messaging.search": {
282
+ "description": "Search one bounded conversation candidate window.",
283
+ "risk": "R1",
284
+ "sideEffect": "none",
285
+ "idempotency": "none",
286
+ "dedupeWindowMs": 0,
287
+ "input": {
288
+ "properties": {
289
+ "query": {
290
+ "type": "string",
291
+ "description": "Normalized bounded conversation lookup text",
292
+ "minLength": 1,
293
+ "maxLength": 256
294
+ },
295
+ "account_id": {
296
+ "type": "string",
297
+ "description": "Exact Beeper account ID returned by this adapter",
298
+ "minLength": 1,
299
+ "maxLength": 512
300
+ },
301
+ "limit": {
302
+ "type": "number",
303
+ "description": "Maximum candidate conversations",
304
+ "minimum": 1,
305
+ "maximum": 20
306
+ }
307
+ },
308
+ "required": [
309
+ "query"
310
+ ]
311
+ },
312
+ "localCli": {
313
+ "surface": "beeper",
314
+ "action": "messaging.search",
315
+ "contractVersion": 1,
316
+ "timeoutMs": 120000,
317
+ "maxOutputBytes": 10485760
318
+ }
319
+ },
320
+ "conversations.read": {
321
+ "description": "Read one exact account-bound conversation.",
322
+ "risk": "R1",
323
+ "sideEffect": "none",
324
+ "idempotency": "none",
325
+ "dedupeWindowMs": 0,
326
+ "input": {
327
+ "properties": {
328
+ "account_id": {
329
+ "type": "string",
330
+ "description": "Exact Beeper account ID returned by this adapter",
331
+ "minLength": 1,
332
+ "maxLength": 512
333
+ },
334
+ "conversation_id": {
335
+ "type": "string",
336
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
337
+ "minLength": 3,
338
+ "maxLength": 2048
339
+ },
340
+ "max_participants": {
341
+ "type": "number",
342
+ "description": "Maximum projected participants",
343
+ "minimum": 1,
344
+ "maximum": 500
345
+ }
346
+ },
347
+ "required": [
348
+ "account_id",
349
+ "conversation_id"
350
+ ]
351
+ },
352
+ "localCli": {
353
+ "surface": "beeper",
354
+ "action": "conversations.read",
355
+ "contractVersion": 1,
356
+ "timeoutMs": 120000,
357
+ "maxOutputBytes": 10485760
358
+ }
359
+ },
360
+ "messaging.read": {
361
+ "description": "Read one bounded page from one exact conversation.",
362
+ "risk": "R1",
363
+ "sideEffect": "none",
364
+ "idempotency": "none",
365
+ "dedupeWindowMs": 0,
366
+ "input": {
367
+ "properties": {
368
+ "account_id": {
369
+ "type": "string",
370
+ "description": "Exact Beeper account ID returned by this adapter",
371
+ "minLength": 1,
372
+ "maxLength": 512
373
+ },
374
+ "conversation_id": {
375
+ "type": "string",
376
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
377
+ "minLength": 3,
378
+ "maxLength": 2048
379
+ },
380
+ "before_cursor": {
381
+ "type": "string",
382
+ "description": "Exact provider cursor returned by a prior page",
383
+ "minLength": 1,
384
+ "maxLength": 2048
385
+ },
386
+ "after_cursor": {
387
+ "type": "string",
388
+ "description": "Exact provider cursor returned by a prior page",
389
+ "minLength": 1,
390
+ "maxLength": 2048
391
+ },
392
+ "limit": {
393
+ "type": "number",
394
+ "description": "Maximum projected messages",
395
+ "minimum": 1,
396
+ "maximum": 200
397
+ }
398
+ },
399
+ "required": [
400
+ "account_id",
401
+ "conversation_id"
402
+ ]
403
+ },
404
+ "localCli": {
405
+ "surface": "beeper",
406
+ "action": "messaging.read",
407
+ "contractVersion": 1,
408
+ "timeoutMs": 120000,
409
+ "maxOutputBytes": 10485760
410
+ }
411
+ },
412
+ "messaging.content.search": {
413
+ "description": "Search one bounded message-content candidate window.",
414
+ "risk": "R1",
415
+ "sideEffect": "none",
416
+ "idempotency": "none",
417
+ "dedupeWindowMs": 0,
418
+ "input": {
419
+ "properties": {
420
+ "query": {
421
+ "type": "string",
422
+ "description": "Normalized bounded message lookup text",
423
+ "minLength": 1,
424
+ "maxLength": 256
425
+ },
426
+ "account_id": {
427
+ "type": "string",
428
+ "description": "Exact Beeper account ID returned by this adapter",
429
+ "minLength": 1,
430
+ "maxLength": 512
431
+ },
432
+ "conversation_id": {
433
+ "type": "string",
434
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
435
+ "minLength": 3,
436
+ "maxLength": 2048
437
+ },
438
+ "chat_type": {
439
+ "type": "string",
440
+ "description": "Exact chat type filter",
441
+ "minLength": 1,
442
+ "maxLength": 16,
443
+ "enum": [
444
+ "group",
445
+ "single"
446
+ ]
447
+ },
448
+ "after": {
449
+ "type": "string",
450
+ "description": "Canonical UTC ISO timestamp",
451
+ "minLength": 20,
452
+ "maxLength": 64
453
+ },
454
+ "before": {
455
+ "type": "string",
456
+ "description": "Canonical UTC ISO timestamp",
457
+ "minLength": 20,
458
+ "maxLength": 64
459
+ },
460
+ "exclude_low_priority": {
461
+ "type": "boolean",
462
+ "description": "Exclude low-priority chats"
463
+ },
464
+ "include_muted": {
465
+ "type": "boolean",
466
+ "description": "Include muted chats"
467
+ },
468
+ "media": {
469
+ "type": "array",
470
+ "description": "Exact media-kind filters",
471
+ "items": {
472
+ "type": "string",
473
+ "description": "One exact media kind",
474
+ "minLength": 1,
475
+ "maxLength": 16,
476
+ "enum": [
477
+ "any",
478
+ "video",
479
+ "image",
480
+ "link",
481
+ "file"
482
+ ]
483
+ },
484
+ "minItems": 0,
485
+ "maxItems": 5
486
+ },
487
+ "sender": {
488
+ "type": "string",
489
+ "description": "Exact sender selector returned by this adapter",
490
+ "minLength": 1,
491
+ "maxLength": 2048
492
+ },
493
+ "limit": {
494
+ "type": "number",
495
+ "description": "Maximum projected message candidates",
496
+ "minimum": 1,
497
+ "maximum": 200
498
+ }
499
+ },
500
+ "required": []
501
+ },
502
+ "localCli": {
503
+ "surface": "beeper",
504
+ "action": "messaging.content.search",
505
+ "contractVersion": 1,
506
+ "timeoutMs": 120000,
507
+ "maxOutputBytes": 10485760
508
+ }
509
+ },
510
+ "messaging.message.read": {
511
+ "description": "Read one exact message from one exact conversation.",
512
+ "risk": "R1",
513
+ "sideEffect": "none",
514
+ "idempotency": "none",
515
+ "dedupeWindowMs": 0,
516
+ "input": {
517
+ "properties": {
518
+ "account_id": {
519
+ "type": "string",
520
+ "description": "Exact Beeper account ID returned by this adapter",
521
+ "minLength": 1,
522
+ "maxLength": 512
523
+ },
524
+ "conversation_id": {
525
+ "type": "string",
526
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
527
+ "minLength": 3,
528
+ "maxLength": 2048
529
+ },
530
+ "message_id": {
531
+ "type": "string",
532
+ "description": "Exact message ID returned by this adapter",
533
+ "minLength": 1,
534
+ "maxLength": 2048
535
+ }
536
+ },
537
+ "required": [
538
+ "account_id",
539
+ "conversation_id",
540
+ "message_id"
541
+ ]
542
+ },
543
+ "localCli": {
544
+ "surface": "beeper",
545
+ "action": "messaging.message.read",
546
+ "contractVersion": 1,
547
+ "timeoutMs": 120000,
548
+ "maxOutputBytes": 10485760
549
+ }
550
+ },
551
+ "messaging.context.read": {
552
+ "description": "Read bounded context around one exact message.",
553
+ "risk": "R1",
554
+ "sideEffect": "none",
555
+ "idempotency": "none",
556
+ "dedupeWindowMs": 0,
557
+ "input": {
558
+ "properties": {
559
+ "account_id": {
560
+ "type": "string",
561
+ "description": "Exact Beeper account ID returned by this adapter",
562
+ "minLength": 1,
563
+ "maxLength": 512
564
+ },
565
+ "conversation_id": {
566
+ "type": "string",
567
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
568
+ "minLength": 3,
569
+ "maxLength": 2048
570
+ },
571
+ "message_id": {
572
+ "type": "string",
573
+ "description": "Exact message ID returned by this adapter",
574
+ "minLength": 1,
575
+ "maxLength": 2048
576
+ },
577
+ "before": {
578
+ "type": "number",
579
+ "description": "Messages before the exact target",
580
+ "minimum": 0,
581
+ "maximum": 100
582
+ },
583
+ "after": {
584
+ "type": "number",
585
+ "description": "Messages after the exact target",
586
+ "minimum": 0,
587
+ "maximum": 100
588
+ }
589
+ },
590
+ "required": [
591
+ "account_id",
592
+ "conversation_id",
593
+ "message_id"
594
+ ]
595
+ },
596
+ "localCli": {
597
+ "surface": "beeper",
598
+ "action": "messaging.context.read",
599
+ "contractVersion": 1,
600
+ "timeoutMs": 120000,
601
+ "maxOutputBytes": 10485760
602
+ }
603
+ },
604
+ "messaging.send": {
605
+ "description": "Submit one confirmed text, file, sticker, or voice request to Beeper Desktop; network delivery is not asserted.",
606
+ "risk": "R3",
607
+ "sideEffect": "externally visible provider or Desktop mutation",
608
+ "idempotency": "local-at-most-once",
609
+ "dedupeWindowMs": 86400000,
610
+ "input": {
611
+ "properties": {
612
+ "account_id": {
613
+ "type": "string",
614
+ "description": "Exact Beeper account ID returned by this adapter",
615
+ "minLength": 1,
616
+ "maxLength": 512
617
+ },
618
+ "conversation_id": {
619
+ "type": "string",
620
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
621
+ "minLength": 3,
622
+ "maxLength": 2048
623
+ },
624
+ "kind": {
625
+ "type": "string",
626
+ "description": "Exact bounded send kind",
627
+ "minLength": 1,
628
+ "maxLength": 16,
629
+ "enum": [
630
+ "text",
631
+ "file",
632
+ "sticker",
633
+ "voice"
634
+ ]
635
+ },
636
+ "text": {
637
+ "type": "string",
638
+ "description": "Message text or optional file caption",
639
+ "minLength": 0,
640
+ "maxLength": 65536
641
+ },
642
+ "file": {
643
+ "type": "file",
644
+ "description": "Plan-bound file, sticker, or voice-note bytes",
645
+ "maxBytes": 524288000
646
+ },
647
+ "filename": {
648
+ "type": "string",
649
+ "description": "Provider-visible filename",
650
+ "minLength": 1,
651
+ "maxLength": 512
652
+ },
653
+ "mime_type": {
654
+ "type": "string",
655
+ "description": "Exact media type",
656
+ "minLength": 1,
657
+ "maxLength": 128
658
+ },
659
+ "duration_seconds": {
660
+ "type": "number",
661
+ "description": "Voice-note duration in seconds",
662
+ "minimum": 1,
663
+ "maximum": 86400
664
+ },
665
+ "reply_to": {
666
+ "type": "string",
667
+ "description": "Exact message ID returned by this adapter",
668
+ "minLength": 1,
669
+ "maxLength": 2048
670
+ },
671
+ "mentions": {
672
+ "type": "array",
673
+ "description": "Canonical Matrix/Beeper participant IDs",
674
+ "items": {
675
+ "type": "string",
676
+ "description": "Canonical Matrix/Beeper user ID",
677
+ "minLength": 3,
678
+ "maxLength": 2048
679
+ },
680
+ "minItems": 0,
681
+ "maxItems": 25
682
+ },
683
+ "no_preview": {
684
+ "type": "boolean",
685
+ "description": "Disable link previews for text"
686
+ }
687
+ },
688
+ "required": [
689
+ "account_id",
690
+ "conversation_id",
691
+ "kind"
692
+ ]
693
+ },
694
+ "localCli": {
695
+ "surface": "beeper",
696
+ "action": "messaging.send",
697
+ "contractVersion": 1,
698
+ "timeoutMs": 300000,
699
+ "maxOutputBytes": 10485760
700
+ }
701
+ },
702
+ "reactions.set": {
703
+ "description": "Set one exact reaction desired state.",
704
+ "risk": "R2",
705
+ "sideEffect": "reversible provider or private desired-state mutation",
706
+ "idempotency": "local-at-most-once",
707
+ "dedupeWindowMs": 86400000,
708
+ "input": {
709
+ "properties": {
710
+ "account_id": {
711
+ "type": "string",
712
+ "description": "Exact Beeper account ID returned by this adapter",
713
+ "minLength": 1,
714
+ "maxLength": 512
715
+ },
716
+ "conversation_id": {
717
+ "type": "string",
718
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
719
+ "minLength": 3,
720
+ "maxLength": 2048
721
+ },
722
+ "message_id": {
723
+ "type": "string",
724
+ "description": "Exact message ID returned by this adapter",
725
+ "minLength": 1,
726
+ "maxLength": 2048
727
+ },
728
+ "reaction": {
729
+ "type": "string",
730
+ "description": "Exact reaction text",
731
+ "minLength": 1,
732
+ "maxLength": 256
733
+ },
734
+ "enabled": {
735
+ "type": "boolean",
736
+ "description": "Desired reaction presence"
737
+ }
738
+ },
739
+ "required": [
740
+ "account_id",
741
+ "conversation_id",
742
+ "message_id",
743
+ "reaction",
744
+ "enabled"
745
+ ]
746
+ },
747
+ "localCli": {
748
+ "surface": "beeper",
749
+ "action": "reactions.set",
750
+ "contractVersion": 1,
751
+ "timeoutMs": 120000,
752
+ "maxOutputBytes": 10485760
753
+ }
754
+ },
755
+ "messaging.edit": {
756
+ "description": "Edit one exact message authored by the bound account.",
757
+ "risk": "R3",
758
+ "sideEffect": "externally visible provider or Desktop mutation",
759
+ "idempotency": "local-at-most-once",
760
+ "dedupeWindowMs": 86400000,
761
+ "input": {
762
+ "properties": {
763
+ "account_id": {
764
+ "type": "string",
765
+ "description": "Exact Beeper account ID returned by this adapter",
766
+ "minLength": 1,
767
+ "maxLength": 512
768
+ },
769
+ "conversation_id": {
770
+ "type": "string",
771
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
772
+ "minLength": 3,
773
+ "maxLength": 2048
774
+ },
775
+ "message_id": {
776
+ "type": "string",
777
+ "description": "Exact message ID returned by this adapter",
778
+ "minLength": 1,
779
+ "maxLength": 2048
780
+ },
781
+ "text": {
782
+ "type": "string",
783
+ "description": "Replacement message text",
784
+ "minLength": 1,
785
+ "maxLength": 65536
786
+ }
787
+ },
788
+ "required": [
789
+ "account_id",
790
+ "conversation_id",
791
+ "message_id",
792
+ "text"
793
+ ]
794
+ },
795
+ "localCli": {
796
+ "surface": "beeper",
797
+ "action": "messaging.edit",
798
+ "contractVersion": 1,
799
+ "timeoutMs": 120000,
800
+ "maxOutputBytes": 10485760
801
+ }
802
+ },
803
+ "conversations.start": {
804
+ "description": "Start one conversation with one exact account-bound user.",
805
+ "risk": "R3",
806
+ "sideEffect": "externally visible provider or Desktop mutation",
807
+ "idempotency": "local-at-most-once",
808
+ "dedupeWindowMs": 86400000,
809
+ "input": {
810
+ "properties": {
811
+ "account_id": {
812
+ "type": "string",
813
+ "description": "Exact Beeper account ID returned by this adapter",
814
+ "minLength": 1,
815
+ "maxLength": 512
816
+ },
817
+ "user_id": {
818
+ "type": "string",
819
+ "description": "Canonical Matrix/Beeper user ID",
820
+ "minLength": 3,
821
+ "maxLength": 2048
822
+ }
823
+ },
824
+ "required": [
825
+ "account_id",
826
+ "user_id"
827
+ ]
828
+ },
829
+ "localCli": {
830
+ "surface": "beeper",
831
+ "action": "conversations.start",
832
+ "contractVersion": 1,
833
+ "timeoutMs": 120000,
834
+ "maxOutputBytes": 10485760
835
+ }
836
+ },
837
+ "conversations.archive.set": {
838
+ "description": "Set one conversation archive desired state.",
839
+ "risk": "R2",
840
+ "sideEffect": "reversible provider or private desired-state mutation",
841
+ "idempotency": "local-at-most-once",
842
+ "dedupeWindowMs": 86400000,
843
+ "input": {
844
+ "properties": {
845
+ "account_id": {
846
+ "type": "string",
847
+ "description": "Exact Beeper account ID returned by this adapter",
848
+ "minLength": 1,
849
+ "maxLength": 512
850
+ },
851
+ "conversation_id": {
852
+ "type": "string",
853
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
854
+ "minLength": 3,
855
+ "maxLength": 2048
856
+ },
857
+ "enabled": {
858
+ "type": "boolean",
859
+ "description": "Desired archived state"
860
+ }
861
+ },
862
+ "required": [
863
+ "account_id",
864
+ "conversation_id",
865
+ "enabled"
866
+ ]
867
+ },
868
+ "localCli": {
869
+ "surface": "beeper",
870
+ "action": "conversations.archive.set",
871
+ "contractVersion": 1,
872
+ "timeoutMs": 120000,
873
+ "maxOutputBytes": 10485760
874
+ }
875
+ },
876
+ "conversations.pin.set": {
877
+ "description": "Set one conversation pin desired state.",
878
+ "risk": "R2",
879
+ "sideEffect": "reversible provider or private desired-state mutation",
880
+ "idempotency": "local-at-most-once",
881
+ "dedupeWindowMs": 86400000,
882
+ "input": {
883
+ "properties": {
884
+ "account_id": {
885
+ "type": "string",
886
+ "description": "Exact Beeper account ID returned by this adapter",
887
+ "minLength": 1,
888
+ "maxLength": 512
889
+ },
890
+ "conversation_id": {
891
+ "type": "string",
892
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
893
+ "minLength": 3,
894
+ "maxLength": 2048
895
+ },
896
+ "enabled": {
897
+ "type": "boolean",
898
+ "description": "Desired pinned state"
899
+ }
900
+ },
901
+ "required": [
902
+ "account_id",
903
+ "conversation_id",
904
+ "enabled"
905
+ ]
906
+ },
907
+ "localCli": {
908
+ "surface": "beeper",
909
+ "action": "conversations.pin.set",
910
+ "contractVersion": 1,
911
+ "timeoutMs": 120000,
912
+ "maxOutputBytes": 10485760
913
+ }
914
+ },
915
+ "conversations.mute.set": {
916
+ "description": "Set one conversation mute desired state.",
917
+ "risk": "R2",
918
+ "sideEffect": "reversible provider or private desired-state mutation",
919
+ "idempotency": "local-at-most-once",
920
+ "dedupeWindowMs": 86400000,
921
+ "input": {
922
+ "properties": {
923
+ "account_id": {
924
+ "type": "string",
925
+ "description": "Exact Beeper account ID returned by this adapter",
926
+ "minLength": 1,
927
+ "maxLength": 512
928
+ },
929
+ "conversation_id": {
930
+ "type": "string",
931
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
932
+ "minLength": 3,
933
+ "maxLength": 2048
934
+ },
935
+ "enabled": {
936
+ "type": "boolean",
937
+ "description": "Desired muted state"
938
+ }
939
+ },
940
+ "required": [
941
+ "account_id",
942
+ "conversation_id",
943
+ "enabled"
944
+ ]
945
+ },
946
+ "localCli": {
947
+ "surface": "beeper",
948
+ "action": "conversations.mute.set",
949
+ "contractVersion": 1,
950
+ "timeoutMs": 120000,
951
+ "maxOutputBytes": 10485760
952
+ }
953
+ },
954
+ "conversations.read-state.set": {
955
+ "description": "Set one conversation read marker, potentially emitting a network receipt.",
956
+ "risk": "R3",
957
+ "sideEffect": "externally visible provider or Desktop mutation",
958
+ "idempotency": "local-at-most-once",
959
+ "dedupeWindowMs": 86400000,
960
+ "input": {
961
+ "properties": {
962
+ "account_id": {
963
+ "type": "string",
964
+ "description": "Exact Beeper account ID returned by this adapter",
965
+ "minLength": 1,
966
+ "maxLength": 512
967
+ },
968
+ "conversation_id": {
969
+ "type": "string",
970
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
971
+ "minLength": 3,
972
+ "maxLength": 2048
973
+ },
974
+ "unread": {
975
+ "type": "boolean",
976
+ "description": "Desired marked-unread state"
977
+ },
978
+ "message_id": {
979
+ "type": "string",
980
+ "description": "Exact message ID returned by this adapter",
981
+ "minLength": 1,
982
+ "maxLength": 2048
983
+ }
984
+ },
985
+ "required": [
986
+ "account_id",
987
+ "conversation_id",
988
+ "unread"
989
+ ]
990
+ },
991
+ "localCli": {
992
+ "surface": "beeper",
993
+ "action": "conversations.read-state.set",
994
+ "contractVersion": 1,
995
+ "timeoutMs": 120000,
996
+ "maxOutputBytes": 10485760
997
+ }
998
+ },
999
+ "conversations.priority.set": {
1000
+ "description": "Set one conversation inbox priority desired state.",
1001
+ "risk": "R2",
1002
+ "sideEffect": "reversible provider or private desired-state mutation",
1003
+ "idempotency": "local-at-most-once",
1004
+ "dedupeWindowMs": 86400000,
1005
+ "input": {
1006
+ "properties": {
1007
+ "account_id": {
1008
+ "type": "string",
1009
+ "description": "Exact Beeper account ID returned by this adapter",
1010
+ "minLength": 1,
1011
+ "maxLength": 512
1012
+ },
1013
+ "conversation_id": {
1014
+ "type": "string",
1015
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1016
+ "minLength": 3,
1017
+ "maxLength": 2048
1018
+ },
1019
+ "level": {
1020
+ "type": "string",
1021
+ "description": "Desired inbox priority",
1022
+ "minLength": 1,
1023
+ "maxLength": 16,
1024
+ "enum": [
1025
+ "inbox",
1026
+ "low"
1027
+ ]
1028
+ }
1029
+ },
1030
+ "required": [
1031
+ "account_id",
1032
+ "conversation_id",
1033
+ "level"
1034
+ ]
1035
+ },
1036
+ "localCli": {
1037
+ "surface": "beeper",
1038
+ "action": "conversations.priority.set",
1039
+ "contractVersion": 1,
1040
+ "timeoutMs": 120000,
1041
+ "maxOutputBytes": 10485760
1042
+ }
1043
+ },
1044
+ "conversations.notify": {
1045
+ "description": "Send one explicit iMessage Notify Anyway alert.",
1046
+ "risk": "R3",
1047
+ "sideEffect": "externally visible provider or Desktop mutation",
1048
+ "idempotency": "local-at-most-once",
1049
+ "dedupeWindowMs": 86400000,
1050
+ "input": {
1051
+ "properties": {
1052
+ "account_id": {
1053
+ "type": "string",
1054
+ "description": "Exact Beeper account ID returned by this adapter",
1055
+ "minLength": 1,
1056
+ "maxLength": 512
1057
+ },
1058
+ "conversation_id": {
1059
+ "type": "string",
1060
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1061
+ "minLength": 3,
1062
+ "maxLength": 2048
1063
+ }
1064
+ },
1065
+ "required": [
1066
+ "account_id",
1067
+ "conversation_id"
1068
+ ]
1069
+ },
1070
+ "localCli": {
1071
+ "surface": "beeper",
1072
+ "action": "conversations.notify",
1073
+ "contractVersion": 1,
1074
+ "timeoutMs": 120000,
1075
+ "maxOutputBytes": 10485760
1076
+ }
1077
+ },
1078
+ "conversations.title.set": {
1079
+ "description": "Set one exact group-conversation title.",
1080
+ "risk": "R3",
1081
+ "sideEffect": "externally visible provider or Desktop mutation",
1082
+ "idempotency": "local-at-most-once",
1083
+ "dedupeWindowMs": 86400000,
1084
+ "input": {
1085
+ "properties": {
1086
+ "account_id": {
1087
+ "type": "string",
1088
+ "description": "Exact Beeper account ID returned by this adapter",
1089
+ "minLength": 1,
1090
+ "maxLength": 512
1091
+ },
1092
+ "conversation_id": {
1093
+ "type": "string",
1094
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1095
+ "minLength": 3,
1096
+ "maxLength": 2048
1097
+ },
1098
+ "title": {
1099
+ "type": "string",
1100
+ "description": "Replacement group title",
1101
+ "minLength": 1,
1102
+ "maxLength": 1024
1103
+ }
1104
+ },
1105
+ "required": [
1106
+ "account_id",
1107
+ "conversation_id",
1108
+ "title"
1109
+ ]
1110
+ },
1111
+ "localCli": {
1112
+ "surface": "beeper",
1113
+ "action": "conversations.title.set",
1114
+ "contractVersion": 1,
1115
+ "timeoutMs": 120000,
1116
+ "maxOutputBytes": 10485760
1117
+ }
1118
+ },
1119
+ "conversations.description.set": {
1120
+ "description": "Set or clear one exact group-conversation description.",
1121
+ "risk": "R3",
1122
+ "sideEffect": "externally visible provider or Desktop mutation",
1123
+ "idempotency": "local-at-most-once",
1124
+ "dedupeWindowMs": 86400000,
1125
+ "input": {
1126
+ "properties": {
1127
+ "account_id": {
1128
+ "type": "string",
1129
+ "description": "Exact Beeper account ID returned by this adapter",
1130
+ "minLength": 1,
1131
+ "maxLength": 512
1132
+ },
1133
+ "conversation_id": {
1134
+ "type": "string",
1135
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1136
+ "minLength": 3,
1137
+ "maxLength": 2048
1138
+ },
1139
+ "clear": {
1140
+ "type": "boolean",
1141
+ "description": "Clear the description"
1142
+ },
1143
+ "description": {
1144
+ "type": "string",
1145
+ "description": "Replacement group description",
1146
+ "minLength": 1,
1147
+ "maxLength": 65536
1148
+ }
1149
+ },
1150
+ "required": [
1151
+ "account_id",
1152
+ "conversation_id",
1153
+ "clear"
1154
+ ]
1155
+ },
1156
+ "localCli": {
1157
+ "surface": "beeper",
1158
+ "action": "conversations.description.set",
1159
+ "contractVersion": 1,
1160
+ "timeoutMs": 120000,
1161
+ "maxOutputBytes": 10485760
1162
+ }
1163
+ },
1164
+ "conversations.avatar.set": {
1165
+ "description": "Set or clear one exact group-conversation avatar.",
1166
+ "risk": "R3",
1167
+ "sideEffect": "externally visible provider or Desktop mutation",
1168
+ "idempotency": "local-at-most-once",
1169
+ "dedupeWindowMs": 86400000,
1170
+ "input": {
1171
+ "properties": {
1172
+ "account_id": {
1173
+ "type": "string",
1174
+ "description": "Exact Beeper account ID returned by this adapter",
1175
+ "minLength": 1,
1176
+ "maxLength": 512
1177
+ },
1178
+ "conversation_id": {
1179
+ "type": "string",
1180
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1181
+ "minLength": 3,
1182
+ "maxLength": 2048
1183
+ },
1184
+ "clear": {
1185
+ "type": "boolean",
1186
+ "description": "Clear the avatar"
1187
+ },
1188
+ "avatar": {
1189
+ "type": "file",
1190
+ "description": "Plan-bound replacement avatar bytes",
1191
+ "maxBytes": 16777216
1192
+ }
1193
+ },
1194
+ "required": [
1195
+ "account_id",
1196
+ "conversation_id",
1197
+ "clear"
1198
+ ]
1199
+ },
1200
+ "localCli": {
1201
+ "surface": "beeper",
1202
+ "action": "conversations.avatar.set",
1203
+ "contractVersion": 1,
1204
+ "timeoutMs": 120000,
1205
+ "maxOutputBytes": 10485760
1206
+ }
1207
+ },
1208
+ "conversations.draft.set": {
1209
+ "description": "Set or clear one private Desktop draft.",
1210
+ "risk": "R2",
1211
+ "sideEffect": "reversible provider or private desired-state mutation",
1212
+ "idempotency": "local-at-most-once",
1213
+ "dedupeWindowMs": 86400000,
1214
+ "input": {
1215
+ "properties": {
1216
+ "account_id": {
1217
+ "type": "string",
1218
+ "description": "Exact Beeper account ID returned by this adapter",
1219
+ "minLength": 1,
1220
+ "maxLength": 512
1221
+ },
1222
+ "conversation_id": {
1223
+ "type": "string",
1224
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1225
+ "minLength": 3,
1226
+ "maxLength": 2048
1227
+ },
1228
+ "clear": {
1229
+ "type": "boolean",
1230
+ "description": "Clear the draft"
1231
+ },
1232
+ "text": {
1233
+ "type": "string",
1234
+ "description": "Replacement private draft text",
1235
+ "minLength": 0,
1236
+ "maxLength": 65536
1237
+ },
1238
+ "attachment": {
1239
+ "type": "file",
1240
+ "description": "Plan-bound private draft attachment",
1241
+ "maxBytes": 524288000
1242
+ },
1243
+ "filename": {
1244
+ "type": "string",
1245
+ "description": "Attachment filename",
1246
+ "minLength": 1,
1247
+ "maxLength": 512
1248
+ },
1249
+ "mime_type": {
1250
+ "type": "string",
1251
+ "description": "Attachment media type",
1252
+ "minLength": 1,
1253
+ "maxLength": 128
1254
+ }
1255
+ },
1256
+ "required": [
1257
+ "account_id",
1258
+ "conversation_id",
1259
+ "clear"
1260
+ ]
1261
+ },
1262
+ "localCli": {
1263
+ "surface": "beeper",
1264
+ "action": "conversations.draft.set",
1265
+ "contractVersion": 1,
1266
+ "timeoutMs": 120000,
1267
+ "maxOutputBytes": 10485760
1268
+ }
1269
+ },
1270
+ "conversations.disappearing.set": {
1271
+ "description": "Set one disappearing-message retention interval.",
1272
+ "risk": "R3",
1273
+ "sideEffect": "externally visible provider or Desktop mutation",
1274
+ "idempotency": "local-at-most-once",
1275
+ "dedupeWindowMs": 86400000,
1276
+ "input": {
1277
+ "properties": {
1278
+ "account_id": {
1279
+ "type": "string",
1280
+ "description": "Exact Beeper account ID returned by this adapter",
1281
+ "minLength": 1,
1282
+ "maxLength": 512
1283
+ },
1284
+ "conversation_id": {
1285
+ "type": "string",
1286
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1287
+ "minLength": 3,
1288
+ "maxLength": 2048
1289
+ },
1290
+ "seconds": {
1291
+ "type": "number",
1292
+ "description": "Desired disappearing-message interval; zero disables",
1293
+ "minimum": 0,
1294
+ "maximum": 31536000
1295
+ }
1296
+ },
1297
+ "required": [
1298
+ "account_id",
1299
+ "conversation_id",
1300
+ "seconds"
1301
+ ]
1302
+ },
1303
+ "localCli": {
1304
+ "surface": "beeper",
1305
+ "action": "conversations.disappearing.set",
1306
+ "contractVersion": 1,
1307
+ "timeoutMs": 120000,
1308
+ "maxOutputBytes": 10485760
1309
+ }
1310
+ },
1311
+ "conversations.reminder.set": {
1312
+ "description": "Set or clear one private Desktop reminder.",
1313
+ "risk": "R2",
1314
+ "sideEffect": "reversible provider or private desired-state mutation",
1315
+ "idempotency": "local-at-most-once",
1316
+ "dedupeWindowMs": 86400000,
1317
+ "input": {
1318
+ "properties": {
1319
+ "account_id": {
1320
+ "type": "string",
1321
+ "description": "Exact Beeper account ID returned by this adapter",
1322
+ "minLength": 1,
1323
+ "maxLength": 512
1324
+ },
1325
+ "conversation_id": {
1326
+ "type": "string",
1327
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1328
+ "minLength": 3,
1329
+ "maxLength": 2048
1330
+ },
1331
+ "clear": {
1332
+ "type": "boolean",
1333
+ "description": "Clear the reminder"
1334
+ },
1335
+ "when": {
1336
+ "type": "string",
1337
+ "description": "Canonical UTC ISO timestamp",
1338
+ "minLength": 20,
1339
+ "maxLength": 64
1340
+ },
1341
+ "dismiss_on_message": {
1342
+ "type": "boolean",
1343
+ "description": "Dismiss when a message arrives"
1344
+ }
1345
+ },
1346
+ "required": [
1347
+ "account_id",
1348
+ "conversation_id",
1349
+ "clear"
1350
+ ]
1351
+ },
1352
+ "localCli": {
1353
+ "surface": "beeper",
1354
+ "action": "conversations.reminder.set",
1355
+ "contractVersion": 1,
1356
+ "timeoutMs": 120000,
1357
+ "maxOutputBytes": 10485760
1358
+ }
1359
+ },
1360
+ "conversations.focus": {
1361
+ "description": "Focus one exact Desktop conversation with optional plan-bound draft state.",
1362
+ "risk": "R2",
1363
+ "sideEffect": "reversible provider or private desired-state mutation",
1364
+ "idempotency": "local-at-most-once",
1365
+ "dedupeWindowMs": 86400000,
1366
+ "input": {
1367
+ "properties": {
1368
+ "account_id": {
1369
+ "type": "string",
1370
+ "description": "Exact Beeper account ID returned by this adapter",
1371
+ "minLength": 1,
1372
+ "maxLength": 512
1373
+ },
1374
+ "conversation_id": {
1375
+ "type": "string",
1376
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1377
+ "minLength": 3,
1378
+ "maxLength": 2048
1379
+ },
1380
+ "message_id": {
1381
+ "type": "string",
1382
+ "description": "Exact message ID returned by this adapter",
1383
+ "minLength": 1,
1384
+ "maxLength": 2048
1385
+ },
1386
+ "draft": {
1387
+ "type": "string",
1388
+ "description": "Plan-bound Desktop draft text",
1389
+ "minLength": 0,
1390
+ "maxLength": 65536
1391
+ },
1392
+ "attachment": {
1393
+ "type": "file",
1394
+ "description": "Plan-bound Desktop draft attachment",
1395
+ "maxBytes": 524288000
1396
+ }
1397
+ },
1398
+ "required": [
1399
+ "account_id",
1400
+ "conversation_id"
1401
+ ]
1402
+ },
1403
+ "localCli": {
1404
+ "surface": "beeper",
1405
+ "action": "conversations.focus",
1406
+ "contractVersion": 1,
1407
+ "timeoutMs": 120000,
1408
+ "maxOutputBytes": 10485760
1409
+ }
1410
+ },
1411
+ "presence.set": {
1412
+ "description": "Send one bounded typing or paused presence indication.",
1413
+ "risk": "R3",
1414
+ "sideEffect": "externally visible provider or Desktop mutation",
1415
+ "idempotency": "local-at-most-once",
1416
+ "dedupeWindowMs": 86400000,
1417
+ "input": {
1418
+ "properties": {
1419
+ "account_id": {
1420
+ "type": "string",
1421
+ "description": "Exact Beeper account ID returned by this adapter",
1422
+ "minLength": 1,
1423
+ "maxLength": 512
1424
+ },
1425
+ "conversation_id": {
1426
+ "type": "string",
1427
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1428
+ "minLength": 3,
1429
+ "maxLength": 2048
1430
+ },
1431
+ "state": {
1432
+ "type": "string",
1433
+ "description": "Exact presence state",
1434
+ "minLength": 1,
1435
+ "maxLength": 16,
1436
+ "enum": [
1437
+ "typing",
1438
+ "paused"
1439
+ ]
1440
+ },
1441
+ "duration_seconds": {
1442
+ "type": "number",
1443
+ "description": "Bounded typing duration before a separately journaled paused dispatch",
1444
+ "minimum": 1,
1445
+ "maximum": 30
1446
+ }
1447
+ },
1448
+ "required": [
1449
+ "account_id",
1450
+ "conversation_id",
1451
+ "state"
1452
+ ]
1453
+ },
1454
+ "localCli": {
1455
+ "surface": "beeper",
1456
+ "action": "presence.set",
1457
+ "contractVersion": 1,
1458
+ "timeoutMs": 120000,
1459
+ "maxOutputBytes": 10485760
1460
+ }
1461
+ }
1462
+ }
1463
+ }