@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,1475 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "id": "beeper-local",
4
+ "version": "2.2.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": 2,
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": 2,
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": 2,
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": 2,
408
+ "timeoutMs": 120000,
409
+ "maxOutputBytes": 10485760
410
+ }
411
+ },
412
+ "messaging.content.search": {
413
+ "description": "Search and paginate one bounded message-content candidate window through the exact local provider index.",
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
+ "before_cursor": {
461
+ "type": "string",
462
+ "description": "Exact opaque provider cursor returned by a prior older-results page",
463
+ "minLength": 1,
464
+ "maxLength": 2048
465
+ },
466
+ "after_cursor": {
467
+ "type": "string",
468
+ "description": "Exact opaque provider cursor returned by a prior newer-results page",
469
+ "minLength": 1,
470
+ "maxLength": 2048
471
+ },
472
+ "exclude_low_priority": {
473
+ "type": "boolean",
474
+ "description": "Exclude low-priority chats"
475
+ },
476
+ "include_muted": {
477
+ "type": "boolean",
478
+ "description": "Include muted chats"
479
+ },
480
+ "media": {
481
+ "type": "array",
482
+ "description": "Exact media-kind filters",
483
+ "items": {
484
+ "type": "string",
485
+ "description": "One exact media kind",
486
+ "minLength": 1,
487
+ "maxLength": 16,
488
+ "enum": [
489
+ "any",
490
+ "video",
491
+ "image",
492
+ "link",
493
+ "file"
494
+ ]
495
+ },
496
+ "minItems": 0,
497
+ "maxItems": 5
498
+ },
499
+ "sender": {
500
+ "type": "string",
501
+ "description": "Exact sender selector returned by this adapter",
502
+ "minLength": 1,
503
+ "maxLength": 2048
504
+ },
505
+ "limit": {
506
+ "type": "number",
507
+ "description": "Maximum projected message candidates",
508
+ "minimum": 1,
509
+ "maximum": 200
510
+ }
511
+ },
512
+ "required": []
513
+ },
514
+ "localCli": {
515
+ "surface": "beeper",
516
+ "action": "messaging.content.search",
517
+ "contractVersion": 2,
518
+ "timeoutMs": 120000,
519
+ "maxOutputBytes": 10485760
520
+ }
521
+ },
522
+ "messaging.message.read": {
523
+ "description": "Read one exact message from one exact conversation.",
524
+ "risk": "R1",
525
+ "sideEffect": "none",
526
+ "idempotency": "none",
527
+ "dedupeWindowMs": 0,
528
+ "input": {
529
+ "properties": {
530
+ "account_id": {
531
+ "type": "string",
532
+ "description": "Exact Beeper account ID returned by this adapter",
533
+ "minLength": 1,
534
+ "maxLength": 512
535
+ },
536
+ "conversation_id": {
537
+ "type": "string",
538
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
539
+ "minLength": 3,
540
+ "maxLength": 2048
541
+ },
542
+ "message_id": {
543
+ "type": "string",
544
+ "description": "Exact message ID returned by this adapter",
545
+ "minLength": 1,
546
+ "maxLength": 2048
547
+ }
548
+ },
549
+ "required": [
550
+ "account_id",
551
+ "conversation_id",
552
+ "message_id"
553
+ ]
554
+ },
555
+ "localCli": {
556
+ "surface": "beeper",
557
+ "action": "messaging.message.read",
558
+ "contractVersion": 1,
559
+ "timeoutMs": 120000,
560
+ "maxOutputBytes": 10485760
561
+ }
562
+ },
563
+ "messaging.context.read": {
564
+ "description": "Read bounded context around one exact message.",
565
+ "risk": "R1",
566
+ "sideEffect": "none",
567
+ "idempotency": "none",
568
+ "dedupeWindowMs": 0,
569
+ "input": {
570
+ "properties": {
571
+ "account_id": {
572
+ "type": "string",
573
+ "description": "Exact Beeper account ID returned by this adapter",
574
+ "minLength": 1,
575
+ "maxLength": 512
576
+ },
577
+ "conversation_id": {
578
+ "type": "string",
579
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
580
+ "minLength": 3,
581
+ "maxLength": 2048
582
+ },
583
+ "message_id": {
584
+ "type": "string",
585
+ "description": "Exact message ID returned by this adapter",
586
+ "minLength": 1,
587
+ "maxLength": 2048
588
+ },
589
+ "before": {
590
+ "type": "number",
591
+ "description": "Messages before the exact target",
592
+ "minimum": 0,
593
+ "maximum": 100
594
+ },
595
+ "after": {
596
+ "type": "number",
597
+ "description": "Messages after the exact target",
598
+ "minimum": 0,
599
+ "maximum": 100
600
+ }
601
+ },
602
+ "required": [
603
+ "account_id",
604
+ "conversation_id",
605
+ "message_id"
606
+ ]
607
+ },
608
+ "localCli": {
609
+ "surface": "beeper",
610
+ "action": "messaging.context.read",
611
+ "contractVersion": 1,
612
+ "timeoutMs": 120000,
613
+ "maxOutputBytes": 10485760
614
+ }
615
+ },
616
+ "messaging.send": {
617
+ "description": "Submit one confirmed text, file, sticker, or voice request to Beeper Desktop; network delivery is not asserted.",
618
+ "risk": "R3",
619
+ "sideEffect": "externally visible provider or Desktop mutation",
620
+ "idempotency": "local-at-most-once",
621
+ "dedupeWindowMs": 86400000,
622
+ "input": {
623
+ "properties": {
624
+ "account_id": {
625
+ "type": "string",
626
+ "description": "Exact Beeper account ID returned by this adapter",
627
+ "minLength": 1,
628
+ "maxLength": 512
629
+ },
630
+ "conversation_id": {
631
+ "type": "string",
632
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
633
+ "minLength": 3,
634
+ "maxLength": 2048
635
+ },
636
+ "kind": {
637
+ "type": "string",
638
+ "description": "Exact bounded send kind",
639
+ "minLength": 1,
640
+ "maxLength": 16,
641
+ "enum": [
642
+ "text",
643
+ "file",
644
+ "sticker",
645
+ "voice"
646
+ ]
647
+ },
648
+ "text": {
649
+ "type": "string",
650
+ "description": "Message text or optional file caption",
651
+ "minLength": 0,
652
+ "maxLength": 65536
653
+ },
654
+ "file": {
655
+ "type": "file",
656
+ "description": "Plan-bound file, sticker, or voice-note bytes",
657
+ "maxBytes": 524288000
658
+ },
659
+ "filename": {
660
+ "type": "string",
661
+ "description": "Provider-visible filename",
662
+ "minLength": 1,
663
+ "maxLength": 512
664
+ },
665
+ "mime_type": {
666
+ "type": "string",
667
+ "description": "Exact media type",
668
+ "minLength": 1,
669
+ "maxLength": 128
670
+ },
671
+ "duration_seconds": {
672
+ "type": "number",
673
+ "description": "Voice-note duration in seconds",
674
+ "minimum": 1,
675
+ "maximum": 86400
676
+ },
677
+ "reply_to": {
678
+ "type": "string",
679
+ "description": "Exact message ID returned by this adapter",
680
+ "minLength": 1,
681
+ "maxLength": 2048
682
+ },
683
+ "mentions": {
684
+ "type": "array",
685
+ "description": "Canonical Matrix/Beeper participant IDs",
686
+ "items": {
687
+ "type": "string",
688
+ "description": "Canonical Matrix/Beeper user ID",
689
+ "minLength": 3,
690
+ "maxLength": 2048
691
+ },
692
+ "minItems": 0,
693
+ "maxItems": 25
694
+ },
695
+ "no_preview": {
696
+ "type": "boolean",
697
+ "description": "Disable link previews for text"
698
+ }
699
+ },
700
+ "required": [
701
+ "account_id",
702
+ "conversation_id",
703
+ "kind"
704
+ ]
705
+ },
706
+ "localCli": {
707
+ "surface": "beeper",
708
+ "action": "messaging.send",
709
+ "contractVersion": 1,
710
+ "timeoutMs": 300000,
711
+ "maxOutputBytes": 10485760
712
+ }
713
+ },
714
+ "reactions.set": {
715
+ "description": "Set one exact reaction desired state.",
716
+ "risk": "R2",
717
+ "sideEffect": "reversible provider or private desired-state mutation",
718
+ "idempotency": "local-at-most-once",
719
+ "dedupeWindowMs": 86400000,
720
+ "input": {
721
+ "properties": {
722
+ "account_id": {
723
+ "type": "string",
724
+ "description": "Exact Beeper account ID returned by this adapter",
725
+ "minLength": 1,
726
+ "maxLength": 512
727
+ },
728
+ "conversation_id": {
729
+ "type": "string",
730
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
731
+ "minLength": 3,
732
+ "maxLength": 2048
733
+ },
734
+ "message_id": {
735
+ "type": "string",
736
+ "description": "Exact message ID returned by this adapter",
737
+ "minLength": 1,
738
+ "maxLength": 2048
739
+ },
740
+ "reaction": {
741
+ "type": "string",
742
+ "description": "Exact reaction text",
743
+ "minLength": 1,
744
+ "maxLength": 256
745
+ },
746
+ "enabled": {
747
+ "type": "boolean",
748
+ "description": "Desired reaction presence"
749
+ }
750
+ },
751
+ "required": [
752
+ "account_id",
753
+ "conversation_id",
754
+ "message_id",
755
+ "reaction",
756
+ "enabled"
757
+ ]
758
+ },
759
+ "localCli": {
760
+ "surface": "beeper",
761
+ "action": "reactions.set",
762
+ "contractVersion": 1,
763
+ "timeoutMs": 120000,
764
+ "maxOutputBytes": 10485760
765
+ }
766
+ },
767
+ "messaging.edit": {
768
+ "description": "Edit one exact message authored by the bound account.",
769
+ "risk": "R3",
770
+ "sideEffect": "externally visible provider or Desktop mutation",
771
+ "idempotency": "local-at-most-once",
772
+ "dedupeWindowMs": 86400000,
773
+ "input": {
774
+ "properties": {
775
+ "account_id": {
776
+ "type": "string",
777
+ "description": "Exact Beeper account ID returned by this adapter",
778
+ "minLength": 1,
779
+ "maxLength": 512
780
+ },
781
+ "conversation_id": {
782
+ "type": "string",
783
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
784
+ "minLength": 3,
785
+ "maxLength": 2048
786
+ },
787
+ "message_id": {
788
+ "type": "string",
789
+ "description": "Exact message ID returned by this adapter",
790
+ "minLength": 1,
791
+ "maxLength": 2048
792
+ },
793
+ "text": {
794
+ "type": "string",
795
+ "description": "Replacement message text",
796
+ "minLength": 1,
797
+ "maxLength": 65536
798
+ }
799
+ },
800
+ "required": [
801
+ "account_id",
802
+ "conversation_id",
803
+ "message_id",
804
+ "text"
805
+ ]
806
+ },
807
+ "localCli": {
808
+ "surface": "beeper",
809
+ "action": "messaging.edit",
810
+ "contractVersion": 1,
811
+ "timeoutMs": 120000,
812
+ "maxOutputBytes": 10485760
813
+ }
814
+ },
815
+ "conversations.start": {
816
+ "description": "Start one conversation with one exact account-bound user.",
817
+ "risk": "R3",
818
+ "sideEffect": "externally visible provider or Desktop mutation",
819
+ "idempotency": "local-at-most-once",
820
+ "dedupeWindowMs": 86400000,
821
+ "input": {
822
+ "properties": {
823
+ "account_id": {
824
+ "type": "string",
825
+ "description": "Exact Beeper account ID returned by this adapter",
826
+ "minLength": 1,
827
+ "maxLength": 512
828
+ },
829
+ "user_id": {
830
+ "type": "string",
831
+ "description": "Canonical Matrix/Beeper user ID",
832
+ "minLength": 3,
833
+ "maxLength": 2048
834
+ }
835
+ },
836
+ "required": [
837
+ "account_id",
838
+ "user_id"
839
+ ]
840
+ },
841
+ "localCli": {
842
+ "surface": "beeper",
843
+ "action": "conversations.start",
844
+ "contractVersion": 1,
845
+ "timeoutMs": 120000,
846
+ "maxOutputBytes": 10485760
847
+ }
848
+ },
849
+ "conversations.archive.set": {
850
+ "description": "Set one conversation archive desired state.",
851
+ "risk": "R2",
852
+ "sideEffect": "reversible provider or private desired-state mutation",
853
+ "idempotency": "local-at-most-once",
854
+ "dedupeWindowMs": 86400000,
855
+ "input": {
856
+ "properties": {
857
+ "account_id": {
858
+ "type": "string",
859
+ "description": "Exact Beeper account ID returned by this adapter",
860
+ "minLength": 1,
861
+ "maxLength": 512
862
+ },
863
+ "conversation_id": {
864
+ "type": "string",
865
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
866
+ "minLength": 3,
867
+ "maxLength": 2048
868
+ },
869
+ "enabled": {
870
+ "type": "boolean",
871
+ "description": "Desired archived state"
872
+ }
873
+ },
874
+ "required": [
875
+ "account_id",
876
+ "conversation_id",
877
+ "enabled"
878
+ ]
879
+ },
880
+ "localCli": {
881
+ "surface": "beeper",
882
+ "action": "conversations.archive.set",
883
+ "contractVersion": 1,
884
+ "timeoutMs": 120000,
885
+ "maxOutputBytes": 10485760
886
+ }
887
+ },
888
+ "conversations.pin.set": {
889
+ "description": "Set one conversation pin desired state.",
890
+ "risk": "R2",
891
+ "sideEffect": "reversible provider or private desired-state mutation",
892
+ "idempotency": "local-at-most-once",
893
+ "dedupeWindowMs": 86400000,
894
+ "input": {
895
+ "properties": {
896
+ "account_id": {
897
+ "type": "string",
898
+ "description": "Exact Beeper account ID returned by this adapter",
899
+ "minLength": 1,
900
+ "maxLength": 512
901
+ },
902
+ "conversation_id": {
903
+ "type": "string",
904
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
905
+ "minLength": 3,
906
+ "maxLength": 2048
907
+ },
908
+ "enabled": {
909
+ "type": "boolean",
910
+ "description": "Desired pinned state"
911
+ }
912
+ },
913
+ "required": [
914
+ "account_id",
915
+ "conversation_id",
916
+ "enabled"
917
+ ]
918
+ },
919
+ "localCli": {
920
+ "surface": "beeper",
921
+ "action": "conversations.pin.set",
922
+ "contractVersion": 1,
923
+ "timeoutMs": 120000,
924
+ "maxOutputBytes": 10485760
925
+ }
926
+ },
927
+ "conversations.mute.set": {
928
+ "description": "Set one conversation mute desired state.",
929
+ "risk": "R2",
930
+ "sideEffect": "reversible provider or private desired-state mutation",
931
+ "idempotency": "local-at-most-once",
932
+ "dedupeWindowMs": 86400000,
933
+ "input": {
934
+ "properties": {
935
+ "account_id": {
936
+ "type": "string",
937
+ "description": "Exact Beeper account ID returned by this adapter",
938
+ "minLength": 1,
939
+ "maxLength": 512
940
+ },
941
+ "conversation_id": {
942
+ "type": "string",
943
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
944
+ "minLength": 3,
945
+ "maxLength": 2048
946
+ },
947
+ "enabled": {
948
+ "type": "boolean",
949
+ "description": "Desired muted state"
950
+ }
951
+ },
952
+ "required": [
953
+ "account_id",
954
+ "conversation_id",
955
+ "enabled"
956
+ ]
957
+ },
958
+ "localCli": {
959
+ "surface": "beeper",
960
+ "action": "conversations.mute.set",
961
+ "contractVersion": 1,
962
+ "timeoutMs": 120000,
963
+ "maxOutputBytes": 10485760
964
+ }
965
+ },
966
+ "conversations.read-state.set": {
967
+ "description": "Set one conversation read marker, potentially emitting a network receipt.",
968
+ "risk": "R3",
969
+ "sideEffect": "externally visible provider or Desktop mutation",
970
+ "idempotency": "local-at-most-once",
971
+ "dedupeWindowMs": 86400000,
972
+ "input": {
973
+ "properties": {
974
+ "account_id": {
975
+ "type": "string",
976
+ "description": "Exact Beeper account ID returned by this adapter",
977
+ "minLength": 1,
978
+ "maxLength": 512
979
+ },
980
+ "conversation_id": {
981
+ "type": "string",
982
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
983
+ "minLength": 3,
984
+ "maxLength": 2048
985
+ },
986
+ "unread": {
987
+ "type": "boolean",
988
+ "description": "Desired marked-unread state"
989
+ },
990
+ "message_id": {
991
+ "type": "string",
992
+ "description": "Exact message ID returned by this adapter",
993
+ "minLength": 1,
994
+ "maxLength": 2048
995
+ }
996
+ },
997
+ "required": [
998
+ "account_id",
999
+ "conversation_id",
1000
+ "unread"
1001
+ ]
1002
+ },
1003
+ "localCli": {
1004
+ "surface": "beeper",
1005
+ "action": "conversations.read-state.set",
1006
+ "contractVersion": 1,
1007
+ "timeoutMs": 120000,
1008
+ "maxOutputBytes": 10485760
1009
+ }
1010
+ },
1011
+ "conversations.priority.set": {
1012
+ "description": "Set one conversation inbox priority desired state.",
1013
+ "risk": "R2",
1014
+ "sideEffect": "reversible provider or private desired-state mutation",
1015
+ "idempotency": "local-at-most-once",
1016
+ "dedupeWindowMs": 86400000,
1017
+ "input": {
1018
+ "properties": {
1019
+ "account_id": {
1020
+ "type": "string",
1021
+ "description": "Exact Beeper account ID returned by this adapter",
1022
+ "minLength": 1,
1023
+ "maxLength": 512
1024
+ },
1025
+ "conversation_id": {
1026
+ "type": "string",
1027
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1028
+ "minLength": 3,
1029
+ "maxLength": 2048
1030
+ },
1031
+ "level": {
1032
+ "type": "string",
1033
+ "description": "Desired inbox priority",
1034
+ "minLength": 1,
1035
+ "maxLength": 16,
1036
+ "enum": [
1037
+ "inbox",
1038
+ "low"
1039
+ ]
1040
+ }
1041
+ },
1042
+ "required": [
1043
+ "account_id",
1044
+ "conversation_id",
1045
+ "level"
1046
+ ]
1047
+ },
1048
+ "localCli": {
1049
+ "surface": "beeper",
1050
+ "action": "conversations.priority.set",
1051
+ "contractVersion": 1,
1052
+ "timeoutMs": 120000,
1053
+ "maxOutputBytes": 10485760
1054
+ }
1055
+ },
1056
+ "conversations.notify": {
1057
+ "description": "Send one explicit iMessage Notify Anyway alert.",
1058
+ "risk": "R3",
1059
+ "sideEffect": "externally visible provider or Desktop mutation",
1060
+ "idempotency": "local-at-most-once",
1061
+ "dedupeWindowMs": 86400000,
1062
+ "input": {
1063
+ "properties": {
1064
+ "account_id": {
1065
+ "type": "string",
1066
+ "description": "Exact Beeper account ID returned by this adapter",
1067
+ "minLength": 1,
1068
+ "maxLength": 512
1069
+ },
1070
+ "conversation_id": {
1071
+ "type": "string",
1072
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1073
+ "minLength": 3,
1074
+ "maxLength": 2048
1075
+ }
1076
+ },
1077
+ "required": [
1078
+ "account_id",
1079
+ "conversation_id"
1080
+ ]
1081
+ },
1082
+ "localCli": {
1083
+ "surface": "beeper",
1084
+ "action": "conversations.notify",
1085
+ "contractVersion": 1,
1086
+ "timeoutMs": 120000,
1087
+ "maxOutputBytes": 10485760
1088
+ }
1089
+ },
1090
+ "conversations.title.set": {
1091
+ "description": "Set one exact group-conversation title.",
1092
+ "risk": "R3",
1093
+ "sideEffect": "externally visible provider or Desktop mutation",
1094
+ "idempotency": "local-at-most-once",
1095
+ "dedupeWindowMs": 86400000,
1096
+ "input": {
1097
+ "properties": {
1098
+ "account_id": {
1099
+ "type": "string",
1100
+ "description": "Exact Beeper account ID returned by this adapter",
1101
+ "minLength": 1,
1102
+ "maxLength": 512
1103
+ },
1104
+ "conversation_id": {
1105
+ "type": "string",
1106
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1107
+ "minLength": 3,
1108
+ "maxLength": 2048
1109
+ },
1110
+ "title": {
1111
+ "type": "string",
1112
+ "description": "Replacement group title",
1113
+ "minLength": 1,
1114
+ "maxLength": 1024
1115
+ }
1116
+ },
1117
+ "required": [
1118
+ "account_id",
1119
+ "conversation_id",
1120
+ "title"
1121
+ ]
1122
+ },
1123
+ "localCli": {
1124
+ "surface": "beeper",
1125
+ "action": "conversations.title.set",
1126
+ "contractVersion": 1,
1127
+ "timeoutMs": 120000,
1128
+ "maxOutputBytes": 10485760
1129
+ }
1130
+ },
1131
+ "conversations.description.set": {
1132
+ "description": "Set or clear one exact group-conversation description.",
1133
+ "risk": "R3",
1134
+ "sideEffect": "externally visible provider or Desktop mutation",
1135
+ "idempotency": "local-at-most-once",
1136
+ "dedupeWindowMs": 86400000,
1137
+ "input": {
1138
+ "properties": {
1139
+ "account_id": {
1140
+ "type": "string",
1141
+ "description": "Exact Beeper account ID returned by this adapter",
1142
+ "minLength": 1,
1143
+ "maxLength": 512
1144
+ },
1145
+ "conversation_id": {
1146
+ "type": "string",
1147
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1148
+ "minLength": 3,
1149
+ "maxLength": 2048
1150
+ },
1151
+ "clear": {
1152
+ "type": "boolean",
1153
+ "description": "Clear the description"
1154
+ },
1155
+ "description": {
1156
+ "type": "string",
1157
+ "description": "Replacement group description",
1158
+ "minLength": 1,
1159
+ "maxLength": 65536
1160
+ }
1161
+ },
1162
+ "required": [
1163
+ "account_id",
1164
+ "conversation_id",
1165
+ "clear"
1166
+ ]
1167
+ },
1168
+ "localCli": {
1169
+ "surface": "beeper",
1170
+ "action": "conversations.description.set",
1171
+ "contractVersion": 1,
1172
+ "timeoutMs": 120000,
1173
+ "maxOutputBytes": 10485760
1174
+ }
1175
+ },
1176
+ "conversations.avatar.set": {
1177
+ "description": "Set or clear one exact group-conversation avatar.",
1178
+ "risk": "R3",
1179
+ "sideEffect": "externally visible provider or Desktop mutation",
1180
+ "idempotency": "local-at-most-once",
1181
+ "dedupeWindowMs": 86400000,
1182
+ "input": {
1183
+ "properties": {
1184
+ "account_id": {
1185
+ "type": "string",
1186
+ "description": "Exact Beeper account ID returned by this adapter",
1187
+ "minLength": 1,
1188
+ "maxLength": 512
1189
+ },
1190
+ "conversation_id": {
1191
+ "type": "string",
1192
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1193
+ "minLength": 3,
1194
+ "maxLength": 2048
1195
+ },
1196
+ "clear": {
1197
+ "type": "boolean",
1198
+ "description": "Clear the avatar"
1199
+ },
1200
+ "avatar": {
1201
+ "type": "file",
1202
+ "description": "Plan-bound replacement avatar bytes",
1203
+ "maxBytes": 16777216
1204
+ }
1205
+ },
1206
+ "required": [
1207
+ "account_id",
1208
+ "conversation_id",
1209
+ "clear"
1210
+ ]
1211
+ },
1212
+ "localCli": {
1213
+ "surface": "beeper",
1214
+ "action": "conversations.avatar.set",
1215
+ "contractVersion": 1,
1216
+ "timeoutMs": 120000,
1217
+ "maxOutputBytes": 10485760
1218
+ }
1219
+ },
1220
+ "conversations.draft.set": {
1221
+ "description": "Set or clear one private Desktop draft.",
1222
+ "risk": "R2",
1223
+ "sideEffect": "reversible provider or private desired-state mutation",
1224
+ "idempotency": "local-at-most-once",
1225
+ "dedupeWindowMs": 86400000,
1226
+ "input": {
1227
+ "properties": {
1228
+ "account_id": {
1229
+ "type": "string",
1230
+ "description": "Exact Beeper account ID returned by this adapter",
1231
+ "minLength": 1,
1232
+ "maxLength": 512
1233
+ },
1234
+ "conversation_id": {
1235
+ "type": "string",
1236
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1237
+ "minLength": 3,
1238
+ "maxLength": 2048
1239
+ },
1240
+ "clear": {
1241
+ "type": "boolean",
1242
+ "description": "Clear the draft"
1243
+ },
1244
+ "text": {
1245
+ "type": "string",
1246
+ "description": "Replacement private draft text",
1247
+ "minLength": 0,
1248
+ "maxLength": 65536
1249
+ },
1250
+ "attachment": {
1251
+ "type": "file",
1252
+ "description": "Plan-bound private draft attachment",
1253
+ "maxBytes": 524288000
1254
+ },
1255
+ "filename": {
1256
+ "type": "string",
1257
+ "description": "Attachment filename",
1258
+ "minLength": 1,
1259
+ "maxLength": 512
1260
+ },
1261
+ "mime_type": {
1262
+ "type": "string",
1263
+ "description": "Attachment media type",
1264
+ "minLength": 1,
1265
+ "maxLength": 128
1266
+ }
1267
+ },
1268
+ "required": [
1269
+ "account_id",
1270
+ "conversation_id",
1271
+ "clear"
1272
+ ]
1273
+ },
1274
+ "localCli": {
1275
+ "surface": "beeper",
1276
+ "action": "conversations.draft.set",
1277
+ "contractVersion": 1,
1278
+ "timeoutMs": 120000,
1279
+ "maxOutputBytes": 10485760
1280
+ }
1281
+ },
1282
+ "conversations.disappearing.set": {
1283
+ "description": "Set one disappearing-message retention interval.",
1284
+ "risk": "R3",
1285
+ "sideEffect": "externally visible provider or Desktop mutation",
1286
+ "idempotency": "local-at-most-once",
1287
+ "dedupeWindowMs": 86400000,
1288
+ "input": {
1289
+ "properties": {
1290
+ "account_id": {
1291
+ "type": "string",
1292
+ "description": "Exact Beeper account ID returned by this adapter",
1293
+ "minLength": 1,
1294
+ "maxLength": 512
1295
+ },
1296
+ "conversation_id": {
1297
+ "type": "string",
1298
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1299
+ "minLength": 3,
1300
+ "maxLength": 2048
1301
+ },
1302
+ "seconds": {
1303
+ "type": "number",
1304
+ "description": "Desired disappearing-message interval; zero disables",
1305
+ "minimum": 0,
1306
+ "maximum": 31536000
1307
+ }
1308
+ },
1309
+ "required": [
1310
+ "account_id",
1311
+ "conversation_id",
1312
+ "seconds"
1313
+ ]
1314
+ },
1315
+ "localCli": {
1316
+ "surface": "beeper",
1317
+ "action": "conversations.disappearing.set",
1318
+ "contractVersion": 1,
1319
+ "timeoutMs": 120000,
1320
+ "maxOutputBytes": 10485760
1321
+ }
1322
+ },
1323
+ "conversations.reminder.set": {
1324
+ "description": "Set or clear one private Desktop reminder.",
1325
+ "risk": "R2",
1326
+ "sideEffect": "reversible provider or private desired-state mutation",
1327
+ "idempotency": "local-at-most-once",
1328
+ "dedupeWindowMs": 86400000,
1329
+ "input": {
1330
+ "properties": {
1331
+ "account_id": {
1332
+ "type": "string",
1333
+ "description": "Exact Beeper account ID returned by this adapter",
1334
+ "minLength": 1,
1335
+ "maxLength": 512
1336
+ },
1337
+ "conversation_id": {
1338
+ "type": "string",
1339
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1340
+ "minLength": 3,
1341
+ "maxLength": 2048
1342
+ },
1343
+ "clear": {
1344
+ "type": "boolean",
1345
+ "description": "Clear the reminder"
1346
+ },
1347
+ "when": {
1348
+ "type": "string",
1349
+ "description": "Canonical UTC ISO timestamp",
1350
+ "minLength": 20,
1351
+ "maxLength": 64
1352
+ },
1353
+ "dismiss_on_message": {
1354
+ "type": "boolean",
1355
+ "description": "Dismiss when a message arrives"
1356
+ }
1357
+ },
1358
+ "required": [
1359
+ "account_id",
1360
+ "conversation_id",
1361
+ "clear"
1362
+ ]
1363
+ },
1364
+ "localCli": {
1365
+ "surface": "beeper",
1366
+ "action": "conversations.reminder.set",
1367
+ "contractVersion": 1,
1368
+ "timeoutMs": 120000,
1369
+ "maxOutputBytes": 10485760
1370
+ }
1371
+ },
1372
+ "conversations.focus": {
1373
+ "description": "Focus one exact Desktop conversation with optional plan-bound draft state.",
1374
+ "risk": "R2",
1375
+ "sideEffect": "reversible provider or private desired-state mutation",
1376
+ "idempotency": "local-at-most-once",
1377
+ "dedupeWindowMs": 86400000,
1378
+ "input": {
1379
+ "properties": {
1380
+ "account_id": {
1381
+ "type": "string",
1382
+ "description": "Exact Beeper account ID returned by this adapter",
1383
+ "minLength": 1,
1384
+ "maxLength": 512
1385
+ },
1386
+ "conversation_id": {
1387
+ "type": "string",
1388
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1389
+ "minLength": 3,
1390
+ "maxLength": 2048
1391
+ },
1392
+ "message_id": {
1393
+ "type": "string",
1394
+ "description": "Exact message ID returned by this adapter",
1395
+ "minLength": 1,
1396
+ "maxLength": 2048
1397
+ },
1398
+ "draft": {
1399
+ "type": "string",
1400
+ "description": "Plan-bound Desktop draft text",
1401
+ "minLength": 0,
1402
+ "maxLength": 65536
1403
+ },
1404
+ "attachment": {
1405
+ "type": "file",
1406
+ "description": "Plan-bound Desktop draft attachment",
1407
+ "maxBytes": 524288000
1408
+ }
1409
+ },
1410
+ "required": [
1411
+ "account_id",
1412
+ "conversation_id"
1413
+ ]
1414
+ },
1415
+ "localCli": {
1416
+ "surface": "beeper",
1417
+ "action": "conversations.focus",
1418
+ "contractVersion": 1,
1419
+ "timeoutMs": 120000,
1420
+ "maxOutputBytes": 10485760
1421
+ }
1422
+ },
1423
+ "presence.set": {
1424
+ "description": "Send one bounded typing or paused presence indication.",
1425
+ "risk": "R3",
1426
+ "sideEffect": "externally visible provider or Desktop mutation",
1427
+ "idempotency": "local-at-most-once",
1428
+ "dedupeWindowMs": 86400000,
1429
+ "input": {
1430
+ "properties": {
1431
+ "account_id": {
1432
+ "type": "string",
1433
+ "description": "Exact Beeper account ID returned by this adapter",
1434
+ "minLength": 1,
1435
+ "maxLength": 512
1436
+ },
1437
+ "conversation_id": {
1438
+ "type": "string",
1439
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1440
+ "minLength": 3,
1441
+ "maxLength": 2048
1442
+ },
1443
+ "state": {
1444
+ "type": "string",
1445
+ "description": "Exact presence state",
1446
+ "minLength": 1,
1447
+ "maxLength": 16,
1448
+ "enum": [
1449
+ "typing",
1450
+ "paused"
1451
+ ]
1452
+ },
1453
+ "duration_seconds": {
1454
+ "type": "number",
1455
+ "description": "Bounded typing duration before a separately journaled paused dispatch",
1456
+ "minimum": 1,
1457
+ "maximum": 30
1458
+ }
1459
+ },
1460
+ "required": [
1461
+ "account_id",
1462
+ "conversation_id",
1463
+ "state"
1464
+ ]
1465
+ },
1466
+ "localCli": {
1467
+ "surface": "beeper",
1468
+ "action": "presence.set",
1469
+ "contractVersion": 1,
1470
+ "timeoutMs": 120000,
1471
+ "maxOutputBytes": 10485760
1472
+ }
1473
+ }
1474
+ }
1475
+ }