@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,1488 @@
1
+ {
2
+ "schemaVersion": 6,
3
+ "id": "beeper-local",
4
+ "version": "2.3.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
+ "platform-sdk"
77
+ ]
78
+ },
79
+ "available": {
80
+ "type": "boolean",
81
+ "description": "Optionally require current availability"
82
+ },
83
+ "limit": {
84
+ "type": "number",
85
+ "description": "Maximum projected bridges",
86
+ "minimum": 1,
87
+ "maximum": 128
88
+ }
89
+ },
90
+ "required": []
91
+ },
92
+ "localCli": {
93
+ "surface": "beeper",
94
+ "action": "bridges.list",
95
+ "contractVersion": 2,
96
+ "timeoutMs": 120000,
97
+ "maxOutputBytes": 10485760
98
+ }
99
+ },
100
+ "bridges.read": {
101
+ "description": "Read one exact bridge and its secret-free capabilities.",
102
+ "risk": "R1",
103
+ "sideEffect": "none",
104
+ "idempotency": "none",
105
+ "dedupeWindowMs": 0,
106
+ "input": {
107
+ "properties": {
108
+ "bridge_id": {
109
+ "type": "string",
110
+ "description": "Exact bridge ID returned by this adapter",
111
+ "minLength": 1,
112
+ "maxLength": 512
113
+ }
114
+ },
115
+ "required": [
116
+ "bridge_id"
117
+ ]
118
+ },
119
+ "localCli": {
120
+ "surface": "beeper",
121
+ "action": "bridges.read",
122
+ "contractVersion": 1,
123
+ "timeoutMs": 120000,
124
+ "maxOutputBytes": 10485760
125
+ }
126
+ },
127
+ "contacts.list": {
128
+ "description": "List one bounded account-aware contact projection.",
129
+ "risk": "R1",
130
+ "sideEffect": "none",
131
+ "idempotency": "none",
132
+ "dedupeWindowMs": 0,
133
+ "input": {
134
+ "properties": {
135
+ "account_id": {
136
+ "type": "string",
137
+ "description": "Exact Beeper account ID returned by this adapter",
138
+ "minLength": 1,
139
+ "maxLength": 512
140
+ },
141
+ "query": {
142
+ "type": "string",
143
+ "description": "Optional normalized provider-blended candidate query of at most 256 UTF-8 bytes",
144
+ "minLength": 1,
145
+ "maxLength": 256
146
+ },
147
+ "limit": {
148
+ "type": "number",
149
+ "description": "Maximum projected contacts",
150
+ "minimum": 1,
151
+ "maximum": 200
152
+ }
153
+ },
154
+ "required": []
155
+ },
156
+ "localCli": {
157
+ "surface": "beeper",
158
+ "action": "contacts.list",
159
+ "contractVersion": 2,
160
+ "timeoutMs": 120000,
161
+ "maxOutputBytes": 10485760
162
+ }
163
+ },
164
+ "contacts.search": {
165
+ "description": "Search one bounded contact candidate window.",
166
+ "risk": "R1",
167
+ "sideEffect": "none",
168
+ "idempotency": "none",
169
+ "dedupeWindowMs": 0,
170
+ "input": {
171
+ "properties": {
172
+ "query": {
173
+ "type": "string",
174
+ "description": "Normalized bounded contact lookup text",
175
+ "minLength": 1,
176
+ "maxLength": 256
177
+ },
178
+ "account_id": {
179
+ "type": "string",
180
+ "description": "Exact Beeper account ID returned by this adapter",
181
+ "minLength": 1,
182
+ "maxLength": 512
183
+ },
184
+ "limit": {
185
+ "type": "number",
186
+ "description": "Maximum candidate contacts",
187
+ "minimum": 1,
188
+ "maximum": 20
189
+ }
190
+ },
191
+ "required": [
192
+ "query"
193
+ ]
194
+ },
195
+ "localCli": {
196
+ "surface": "beeper",
197
+ "action": "contacts.search",
198
+ "contractVersion": 1,
199
+ "timeoutMs": 120000,
200
+ "maxOutputBytes": 10485760
201
+ }
202
+ },
203
+ "contacts.read": {
204
+ "description": "Read one exact account-bound contact identity.",
205
+ "risk": "R1",
206
+ "sideEffect": "none",
207
+ "idempotency": "none",
208
+ "dedupeWindowMs": 0,
209
+ "input": {
210
+ "properties": {
211
+ "account_id": {
212
+ "type": "string",
213
+ "description": "Exact Beeper account ID returned by this adapter",
214
+ "minLength": 1,
215
+ "maxLength": 512
216
+ },
217
+ "contact_id": {
218
+ "type": "string",
219
+ "description": "Exact contact ID returned by this adapter",
220
+ "minLength": 1,
221
+ "maxLength": 2048
222
+ }
223
+ },
224
+ "required": [
225
+ "account_id",
226
+ "contact_id"
227
+ ]
228
+ },
229
+ "localCli": {
230
+ "surface": "beeper",
231
+ "action": "contacts.read",
232
+ "contractVersion": 1,
233
+ "timeoutMs": 120000,
234
+ "maxOutputBytes": 10485760
235
+ }
236
+ },
237
+ "messaging.list": {
238
+ "description": "List one bounded account-aware conversation projection.",
239
+ "risk": "R1",
240
+ "sideEffect": "none",
241
+ "idempotency": "none",
242
+ "dedupeWindowMs": 0,
243
+ "input": {
244
+ "properties": {
245
+ "account_id": {
246
+ "type": "string",
247
+ "description": "Exact Beeper account ID returned by this adapter",
248
+ "minLength": 1,
249
+ "maxLength": 512
250
+ },
251
+ "limit": {
252
+ "type": "number",
253
+ "description": "Maximum projected conversations",
254
+ "minimum": 1,
255
+ "maximum": 200
256
+ },
257
+ "archived": {
258
+ "type": "boolean",
259
+ "description": "Filter by archived state"
260
+ },
261
+ "pinned": {
262
+ "type": "boolean",
263
+ "description": "Filter by pinned state"
264
+ },
265
+ "muted": {
266
+ "type": "boolean",
267
+ "description": "Filter by muted state"
268
+ },
269
+ "unread": {
270
+ "type": "boolean",
271
+ "description": "Filter by unread state"
272
+ },
273
+ "low_priority": {
274
+ "type": "boolean",
275
+ "description": "Filter by low-priority state"
276
+ }
277
+ },
278
+ "required": []
279
+ },
280
+ "localCli": {
281
+ "surface": "beeper",
282
+ "action": "messaging.list",
283
+ "contractVersion": 1,
284
+ "timeoutMs": 120000,
285
+ "maxOutputBytes": 10485760
286
+ }
287
+ },
288
+ "messaging.search": {
289
+ "description": "Search one bounded conversation candidate window.",
290
+ "risk": "R1",
291
+ "sideEffect": "none",
292
+ "idempotency": "none",
293
+ "dedupeWindowMs": 0,
294
+ "input": {
295
+ "properties": {
296
+ "query": {
297
+ "type": "string",
298
+ "description": "Normalized bounded conversation lookup text",
299
+ "minLength": 1,
300
+ "maxLength": 256
301
+ },
302
+ "account_id": {
303
+ "type": "string",
304
+ "description": "Exact Beeper account ID returned by this adapter",
305
+ "minLength": 1,
306
+ "maxLength": 512
307
+ },
308
+ "limit": {
309
+ "type": "number",
310
+ "description": "Maximum candidate conversations",
311
+ "minimum": 1,
312
+ "maximum": 20
313
+ }
314
+ },
315
+ "required": [
316
+ "query"
317
+ ]
318
+ },
319
+ "localCli": {
320
+ "surface": "beeper",
321
+ "action": "messaging.search",
322
+ "contractVersion": 2,
323
+ "timeoutMs": 120000,
324
+ "maxOutputBytes": 10485760
325
+ }
326
+ },
327
+ "conversations.read": {
328
+ "description": "Read one exact account-bound conversation.",
329
+ "risk": "R1",
330
+ "sideEffect": "none",
331
+ "idempotency": "none",
332
+ "dedupeWindowMs": 0,
333
+ "input": {
334
+ "properties": {
335
+ "account_id": {
336
+ "type": "string",
337
+ "description": "Exact Beeper account ID returned by this adapter",
338
+ "minLength": 1,
339
+ "maxLength": 512
340
+ },
341
+ "conversation_id": {
342
+ "type": "string",
343
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
344
+ "minLength": 3,
345
+ "maxLength": 2048
346
+ },
347
+ "max_participants": {
348
+ "type": "number",
349
+ "description": "Maximum projected participants",
350
+ "minimum": 1,
351
+ "maximum": 500
352
+ }
353
+ },
354
+ "required": [
355
+ "account_id",
356
+ "conversation_id"
357
+ ]
358
+ },
359
+ "localCli": {
360
+ "surface": "beeper",
361
+ "action": "conversations.read",
362
+ "contractVersion": 2,
363
+ "timeoutMs": 120000,
364
+ "maxOutputBytes": 10485760
365
+ }
366
+ },
367
+ "messaging.read": {
368
+ "description": "Read one bounded page from one exact conversation.",
369
+ "risk": "R1",
370
+ "sideEffect": "none",
371
+ "idempotency": "none",
372
+ "dedupeWindowMs": 0,
373
+ "input": {
374
+ "properties": {
375
+ "account_id": {
376
+ "type": "string",
377
+ "description": "Exact Beeper account ID returned by this adapter",
378
+ "minLength": 1,
379
+ "maxLength": 512
380
+ },
381
+ "conversation_id": {
382
+ "type": "string",
383
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
384
+ "minLength": 3,
385
+ "maxLength": 2048
386
+ },
387
+ "before_cursor": {
388
+ "type": "string",
389
+ "description": "Exact opaque provider cursor returned by a prior page",
390
+ "minLength": 1,
391
+ "maxLength": 2048
392
+ },
393
+ "after_cursor": {
394
+ "type": "string",
395
+ "description": "Exact opaque provider cursor returned by a prior page",
396
+ "minLength": 1,
397
+ "maxLength": 2048
398
+ },
399
+ "sender": {
400
+ "type": "string",
401
+ "description": "Exact sender filter: me, others, or one bounded opaque provider user ID",
402
+ "minLength": 1,
403
+ "maxLength": 2048
404
+ },
405
+ "limit": {
406
+ "type": "number",
407
+ "description": "Maximum projected messages",
408
+ "minimum": 1,
409
+ "maximum": 200
410
+ }
411
+ },
412
+ "required": [
413
+ "account_id",
414
+ "conversation_id"
415
+ ]
416
+ },
417
+ "localCli": {
418
+ "surface": "beeper",
419
+ "action": "messaging.read",
420
+ "contractVersion": 3,
421
+ "timeoutMs": 120000,
422
+ "maxOutputBytes": 10485760
423
+ }
424
+ },
425
+ "messaging.content.search": {
426
+ "description": "Search and paginate one bounded message-content candidate window through the exact local provider index.",
427
+ "risk": "R1",
428
+ "sideEffect": "none",
429
+ "idempotency": "none",
430
+ "dedupeWindowMs": 0,
431
+ "input": {
432
+ "properties": {
433
+ "query": {
434
+ "type": "string",
435
+ "description": "Normalized bounded message lookup text",
436
+ "minLength": 1,
437
+ "maxLength": 256
438
+ },
439
+ "account_id": {
440
+ "type": "string",
441
+ "description": "Exact Beeper account ID returned by this adapter",
442
+ "minLength": 1,
443
+ "maxLength": 512
444
+ },
445
+ "conversation_id": {
446
+ "type": "string",
447
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
448
+ "minLength": 3,
449
+ "maxLength": 2048
450
+ },
451
+ "chat_type": {
452
+ "type": "string",
453
+ "description": "Exact chat type filter",
454
+ "minLength": 1,
455
+ "maxLength": 16,
456
+ "enum": [
457
+ "group",
458
+ "single"
459
+ ]
460
+ },
461
+ "after": {
462
+ "type": "string",
463
+ "description": "Canonical UTC ISO timestamp",
464
+ "minLength": 20,
465
+ "maxLength": 64
466
+ },
467
+ "before": {
468
+ "type": "string",
469
+ "description": "Canonical UTC ISO timestamp",
470
+ "minLength": 20,
471
+ "maxLength": 64
472
+ },
473
+ "before_cursor": {
474
+ "type": "string",
475
+ "description": "Exact opaque provider cursor returned by a prior older-results page",
476
+ "minLength": 1,
477
+ "maxLength": 2048
478
+ },
479
+ "after_cursor": {
480
+ "type": "string",
481
+ "description": "Exact opaque provider cursor returned by a prior newer-results page",
482
+ "minLength": 1,
483
+ "maxLength": 2048
484
+ },
485
+ "exclude_low_priority": {
486
+ "type": "boolean",
487
+ "description": "Exclude low-priority chats"
488
+ },
489
+ "include_muted": {
490
+ "type": "boolean",
491
+ "description": "Include muted chats"
492
+ },
493
+ "media": {
494
+ "type": "array",
495
+ "description": "Exact media-kind filters",
496
+ "items": {
497
+ "type": "string",
498
+ "description": "One exact media kind",
499
+ "minLength": 1,
500
+ "maxLength": 16,
501
+ "enum": [
502
+ "any",
503
+ "video",
504
+ "image",
505
+ "link",
506
+ "file"
507
+ ]
508
+ },
509
+ "minItems": 0,
510
+ "maxItems": 5
511
+ },
512
+ "sender": {
513
+ "type": "string",
514
+ "description": "Exact sender selector returned by this adapter",
515
+ "minLength": 1,
516
+ "maxLength": 2048
517
+ },
518
+ "limit": {
519
+ "type": "number",
520
+ "description": "Maximum projected message candidates",
521
+ "minimum": 1,
522
+ "maximum": 200
523
+ }
524
+ },
525
+ "required": []
526
+ },
527
+ "localCli": {
528
+ "surface": "beeper",
529
+ "action": "messaging.content.search",
530
+ "contractVersion": 2,
531
+ "timeoutMs": 120000,
532
+ "maxOutputBytes": 10485760
533
+ }
534
+ },
535
+ "messaging.message.read": {
536
+ "description": "Read one exact message from one exact conversation.",
537
+ "risk": "R1",
538
+ "sideEffect": "none",
539
+ "idempotency": "none",
540
+ "dedupeWindowMs": 0,
541
+ "input": {
542
+ "properties": {
543
+ "account_id": {
544
+ "type": "string",
545
+ "description": "Exact Beeper account ID returned by this adapter",
546
+ "minLength": 1,
547
+ "maxLength": 512
548
+ },
549
+ "conversation_id": {
550
+ "type": "string",
551
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
552
+ "minLength": 3,
553
+ "maxLength": 2048
554
+ },
555
+ "message_id": {
556
+ "type": "string",
557
+ "description": "Exact message ID returned by this adapter",
558
+ "minLength": 1,
559
+ "maxLength": 2048
560
+ }
561
+ },
562
+ "required": [
563
+ "account_id",
564
+ "conversation_id",
565
+ "message_id"
566
+ ]
567
+ },
568
+ "localCli": {
569
+ "surface": "beeper",
570
+ "action": "messaging.message.read",
571
+ "contractVersion": 1,
572
+ "timeoutMs": 120000,
573
+ "maxOutputBytes": 10485760
574
+ }
575
+ },
576
+ "messaging.context.read": {
577
+ "description": "Read bounded context around one exact message.",
578
+ "risk": "R1",
579
+ "sideEffect": "none",
580
+ "idempotency": "none",
581
+ "dedupeWindowMs": 0,
582
+ "input": {
583
+ "properties": {
584
+ "account_id": {
585
+ "type": "string",
586
+ "description": "Exact Beeper account ID returned by this adapter",
587
+ "minLength": 1,
588
+ "maxLength": 512
589
+ },
590
+ "conversation_id": {
591
+ "type": "string",
592
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
593
+ "minLength": 3,
594
+ "maxLength": 2048
595
+ },
596
+ "message_id": {
597
+ "type": "string",
598
+ "description": "Exact message ID returned by this adapter",
599
+ "minLength": 1,
600
+ "maxLength": 2048
601
+ },
602
+ "before": {
603
+ "type": "number",
604
+ "description": "Messages before the exact target",
605
+ "minimum": 0,
606
+ "maximum": 100
607
+ },
608
+ "after": {
609
+ "type": "number",
610
+ "description": "Messages after the exact target",
611
+ "minimum": 0,
612
+ "maximum": 100
613
+ }
614
+ },
615
+ "required": [
616
+ "account_id",
617
+ "conversation_id",
618
+ "message_id"
619
+ ]
620
+ },
621
+ "localCli": {
622
+ "surface": "beeper",
623
+ "action": "messaging.context.read",
624
+ "contractVersion": 1,
625
+ "timeoutMs": 120000,
626
+ "maxOutputBytes": 10485760
627
+ }
628
+ },
629
+ "messaging.send": {
630
+ "description": "Submit one confirmed text, file, sticker, or voice request to Beeper Desktop; network delivery is not asserted.",
631
+ "risk": "R3",
632
+ "sideEffect": "externally visible provider or Desktop mutation",
633
+ "idempotency": "local-at-most-once",
634
+ "dedupeWindowMs": 86400000,
635
+ "input": {
636
+ "properties": {
637
+ "account_id": {
638
+ "type": "string",
639
+ "description": "Exact Beeper account ID returned by this adapter",
640
+ "minLength": 1,
641
+ "maxLength": 512
642
+ },
643
+ "conversation_id": {
644
+ "type": "string",
645
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
646
+ "minLength": 3,
647
+ "maxLength": 2048
648
+ },
649
+ "kind": {
650
+ "type": "string",
651
+ "description": "Exact bounded send kind",
652
+ "minLength": 1,
653
+ "maxLength": 16,
654
+ "enum": [
655
+ "text",
656
+ "file",
657
+ "sticker",
658
+ "voice"
659
+ ]
660
+ },
661
+ "text": {
662
+ "type": "string",
663
+ "description": "Message text or optional file caption",
664
+ "minLength": 0,
665
+ "maxLength": 65536
666
+ },
667
+ "file": {
668
+ "type": "file",
669
+ "description": "Plan-bound file, sticker, or voice-note bytes",
670
+ "maxBytes": 524288000
671
+ },
672
+ "filename": {
673
+ "type": "string",
674
+ "description": "Provider-visible filename",
675
+ "minLength": 1,
676
+ "maxLength": 512
677
+ },
678
+ "mime_type": {
679
+ "type": "string",
680
+ "description": "Exact media type",
681
+ "minLength": 1,
682
+ "maxLength": 128
683
+ },
684
+ "duration_seconds": {
685
+ "type": "number",
686
+ "description": "Voice-note duration in seconds",
687
+ "minimum": 1,
688
+ "maximum": 86400
689
+ },
690
+ "reply_to": {
691
+ "type": "string",
692
+ "description": "Exact message ID returned by this adapter",
693
+ "minLength": 1,
694
+ "maxLength": 2048
695
+ },
696
+ "mentions": {
697
+ "type": "array",
698
+ "description": "Canonical Matrix/Beeper participant IDs",
699
+ "items": {
700
+ "type": "string",
701
+ "description": "Canonical Matrix/Beeper user ID",
702
+ "minLength": 3,
703
+ "maxLength": 2048
704
+ },
705
+ "minItems": 0,
706
+ "maxItems": 25
707
+ },
708
+ "no_preview": {
709
+ "type": "boolean",
710
+ "description": "Disable link previews for text"
711
+ }
712
+ },
713
+ "required": [
714
+ "account_id",
715
+ "conversation_id",
716
+ "kind"
717
+ ]
718
+ },
719
+ "localCli": {
720
+ "surface": "beeper",
721
+ "action": "messaging.send",
722
+ "contractVersion": 1,
723
+ "timeoutMs": 300000,
724
+ "maxOutputBytes": 10485760
725
+ }
726
+ },
727
+ "reactions.set": {
728
+ "description": "Set one exact reaction desired state.",
729
+ "risk": "R2",
730
+ "sideEffect": "reversible provider or private desired-state mutation",
731
+ "idempotency": "local-at-most-once",
732
+ "dedupeWindowMs": 86400000,
733
+ "input": {
734
+ "properties": {
735
+ "account_id": {
736
+ "type": "string",
737
+ "description": "Exact Beeper account ID returned by this adapter",
738
+ "minLength": 1,
739
+ "maxLength": 512
740
+ },
741
+ "conversation_id": {
742
+ "type": "string",
743
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
744
+ "minLength": 3,
745
+ "maxLength": 2048
746
+ },
747
+ "message_id": {
748
+ "type": "string",
749
+ "description": "Exact message ID returned by this adapter",
750
+ "minLength": 1,
751
+ "maxLength": 2048
752
+ },
753
+ "reaction": {
754
+ "type": "string",
755
+ "description": "Exact reaction text",
756
+ "minLength": 1,
757
+ "maxLength": 256
758
+ },
759
+ "enabled": {
760
+ "type": "boolean",
761
+ "description": "Desired reaction presence"
762
+ }
763
+ },
764
+ "required": [
765
+ "account_id",
766
+ "conversation_id",
767
+ "message_id",
768
+ "reaction",
769
+ "enabled"
770
+ ]
771
+ },
772
+ "localCli": {
773
+ "surface": "beeper",
774
+ "action": "reactions.set",
775
+ "contractVersion": 1,
776
+ "timeoutMs": 120000,
777
+ "maxOutputBytes": 10485760
778
+ }
779
+ },
780
+ "messaging.edit": {
781
+ "description": "Edit one exact message authored by the bound account.",
782
+ "risk": "R3",
783
+ "sideEffect": "externally visible provider or Desktop mutation",
784
+ "idempotency": "local-at-most-once",
785
+ "dedupeWindowMs": 86400000,
786
+ "input": {
787
+ "properties": {
788
+ "account_id": {
789
+ "type": "string",
790
+ "description": "Exact Beeper account ID returned by this adapter",
791
+ "minLength": 1,
792
+ "maxLength": 512
793
+ },
794
+ "conversation_id": {
795
+ "type": "string",
796
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
797
+ "minLength": 3,
798
+ "maxLength": 2048
799
+ },
800
+ "message_id": {
801
+ "type": "string",
802
+ "description": "Exact message ID returned by this adapter",
803
+ "minLength": 1,
804
+ "maxLength": 2048
805
+ },
806
+ "text": {
807
+ "type": "string",
808
+ "description": "Replacement message text",
809
+ "minLength": 1,
810
+ "maxLength": 65536
811
+ }
812
+ },
813
+ "required": [
814
+ "account_id",
815
+ "conversation_id",
816
+ "message_id",
817
+ "text"
818
+ ]
819
+ },
820
+ "localCli": {
821
+ "surface": "beeper",
822
+ "action": "messaging.edit",
823
+ "contractVersion": 1,
824
+ "timeoutMs": 120000,
825
+ "maxOutputBytes": 10485760
826
+ }
827
+ },
828
+ "conversations.start": {
829
+ "description": "Start one conversation with one exact account-bound user.",
830
+ "risk": "R3",
831
+ "sideEffect": "externally visible provider or Desktop mutation",
832
+ "idempotency": "local-at-most-once",
833
+ "dedupeWindowMs": 86400000,
834
+ "input": {
835
+ "properties": {
836
+ "account_id": {
837
+ "type": "string",
838
+ "description": "Exact Beeper account ID returned by this adapter",
839
+ "minLength": 1,
840
+ "maxLength": 512
841
+ },
842
+ "user_id": {
843
+ "type": "string",
844
+ "description": "Canonical Matrix/Beeper user ID",
845
+ "minLength": 3,
846
+ "maxLength": 2048
847
+ }
848
+ },
849
+ "required": [
850
+ "account_id",
851
+ "user_id"
852
+ ]
853
+ },
854
+ "localCli": {
855
+ "surface": "beeper",
856
+ "action": "conversations.start",
857
+ "contractVersion": 1,
858
+ "timeoutMs": 120000,
859
+ "maxOutputBytes": 10485760
860
+ }
861
+ },
862
+ "conversations.archive.set": {
863
+ "description": "Set one conversation archive desired state.",
864
+ "risk": "R2",
865
+ "sideEffect": "reversible provider or private desired-state mutation",
866
+ "idempotency": "local-at-most-once",
867
+ "dedupeWindowMs": 86400000,
868
+ "input": {
869
+ "properties": {
870
+ "account_id": {
871
+ "type": "string",
872
+ "description": "Exact Beeper account ID returned by this adapter",
873
+ "minLength": 1,
874
+ "maxLength": 512
875
+ },
876
+ "conversation_id": {
877
+ "type": "string",
878
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
879
+ "minLength": 3,
880
+ "maxLength": 2048
881
+ },
882
+ "enabled": {
883
+ "type": "boolean",
884
+ "description": "Desired archived state"
885
+ }
886
+ },
887
+ "required": [
888
+ "account_id",
889
+ "conversation_id",
890
+ "enabled"
891
+ ]
892
+ },
893
+ "localCli": {
894
+ "surface": "beeper",
895
+ "action": "conversations.archive.set",
896
+ "contractVersion": 1,
897
+ "timeoutMs": 120000,
898
+ "maxOutputBytes": 10485760
899
+ }
900
+ },
901
+ "conversations.pin.set": {
902
+ "description": "Set one conversation pin desired state.",
903
+ "risk": "R2",
904
+ "sideEffect": "reversible provider or private desired-state mutation",
905
+ "idempotency": "local-at-most-once",
906
+ "dedupeWindowMs": 86400000,
907
+ "input": {
908
+ "properties": {
909
+ "account_id": {
910
+ "type": "string",
911
+ "description": "Exact Beeper account ID returned by this adapter",
912
+ "minLength": 1,
913
+ "maxLength": 512
914
+ },
915
+ "conversation_id": {
916
+ "type": "string",
917
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
918
+ "minLength": 3,
919
+ "maxLength": 2048
920
+ },
921
+ "enabled": {
922
+ "type": "boolean",
923
+ "description": "Desired pinned state"
924
+ }
925
+ },
926
+ "required": [
927
+ "account_id",
928
+ "conversation_id",
929
+ "enabled"
930
+ ]
931
+ },
932
+ "localCli": {
933
+ "surface": "beeper",
934
+ "action": "conversations.pin.set",
935
+ "contractVersion": 1,
936
+ "timeoutMs": 120000,
937
+ "maxOutputBytes": 10485760
938
+ }
939
+ },
940
+ "conversations.mute.set": {
941
+ "description": "Set one conversation mute desired state.",
942
+ "risk": "R2",
943
+ "sideEffect": "reversible provider or private desired-state mutation",
944
+ "idempotency": "local-at-most-once",
945
+ "dedupeWindowMs": 86400000,
946
+ "input": {
947
+ "properties": {
948
+ "account_id": {
949
+ "type": "string",
950
+ "description": "Exact Beeper account ID returned by this adapter",
951
+ "minLength": 1,
952
+ "maxLength": 512
953
+ },
954
+ "conversation_id": {
955
+ "type": "string",
956
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
957
+ "minLength": 3,
958
+ "maxLength": 2048
959
+ },
960
+ "enabled": {
961
+ "type": "boolean",
962
+ "description": "Desired muted state"
963
+ }
964
+ },
965
+ "required": [
966
+ "account_id",
967
+ "conversation_id",
968
+ "enabled"
969
+ ]
970
+ },
971
+ "localCli": {
972
+ "surface": "beeper",
973
+ "action": "conversations.mute.set",
974
+ "contractVersion": 1,
975
+ "timeoutMs": 120000,
976
+ "maxOutputBytes": 10485760
977
+ }
978
+ },
979
+ "conversations.read-state.set": {
980
+ "description": "Set one conversation read marker, potentially emitting a network receipt.",
981
+ "risk": "R3",
982
+ "sideEffect": "externally visible provider or Desktop mutation",
983
+ "idempotency": "local-at-most-once",
984
+ "dedupeWindowMs": 86400000,
985
+ "input": {
986
+ "properties": {
987
+ "account_id": {
988
+ "type": "string",
989
+ "description": "Exact Beeper account ID returned by this adapter",
990
+ "minLength": 1,
991
+ "maxLength": 512
992
+ },
993
+ "conversation_id": {
994
+ "type": "string",
995
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
996
+ "minLength": 3,
997
+ "maxLength": 2048
998
+ },
999
+ "unread": {
1000
+ "type": "boolean",
1001
+ "description": "Desired marked-unread state"
1002
+ },
1003
+ "message_id": {
1004
+ "type": "string",
1005
+ "description": "Exact message ID returned by this adapter",
1006
+ "minLength": 1,
1007
+ "maxLength": 2048
1008
+ }
1009
+ },
1010
+ "required": [
1011
+ "account_id",
1012
+ "conversation_id",
1013
+ "unread"
1014
+ ]
1015
+ },
1016
+ "localCli": {
1017
+ "surface": "beeper",
1018
+ "action": "conversations.read-state.set",
1019
+ "contractVersion": 1,
1020
+ "timeoutMs": 120000,
1021
+ "maxOutputBytes": 10485760
1022
+ }
1023
+ },
1024
+ "conversations.priority.set": {
1025
+ "description": "Set one conversation inbox priority desired state.",
1026
+ "risk": "R2",
1027
+ "sideEffect": "reversible provider or private desired-state mutation",
1028
+ "idempotency": "local-at-most-once",
1029
+ "dedupeWindowMs": 86400000,
1030
+ "input": {
1031
+ "properties": {
1032
+ "account_id": {
1033
+ "type": "string",
1034
+ "description": "Exact Beeper account ID returned by this adapter",
1035
+ "minLength": 1,
1036
+ "maxLength": 512
1037
+ },
1038
+ "conversation_id": {
1039
+ "type": "string",
1040
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1041
+ "minLength": 3,
1042
+ "maxLength": 2048
1043
+ },
1044
+ "level": {
1045
+ "type": "string",
1046
+ "description": "Desired inbox priority",
1047
+ "minLength": 1,
1048
+ "maxLength": 16,
1049
+ "enum": [
1050
+ "inbox",
1051
+ "low"
1052
+ ]
1053
+ }
1054
+ },
1055
+ "required": [
1056
+ "account_id",
1057
+ "conversation_id",
1058
+ "level"
1059
+ ]
1060
+ },
1061
+ "localCli": {
1062
+ "surface": "beeper",
1063
+ "action": "conversations.priority.set",
1064
+ "contractVersion": 1,
1065
+ "timeoutMs": 120000,
1066
+ "maxOutputBytes": 10485760
1067
+ }
1068
+ },
1069
+ "conversations.notify": {
1070
+ "description": "Send one explicit iMessage Notify Anyway alert.",
1071
+ "risk": "R3",
1072
+ "sideEffect": "externally visible provider or Desktop mutation",
1073
+ "idempotency": "local-at-most-once",
1074
+ "dedupeWindowMs": 86400000,
1075
+ "input": {
1076
+ "properties": {
1077
+ "account_id": {
1078
+ "type": "string",
1079
+ "description": "Exact Beeper account ID returned by this adapter",
1080
+ "minLength": 1,
1081
+ "maxLength": 512
1082
+ },
1083
+ "conversation_id": {
1084
+ "type": "string",
1085
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1086
+ "minLength": 3,
1087
+ "maxLength": 2048
1088
+ }
1089
+ },
1090
+ "required": [
1091
+ "account_id",
1092
+ "conversation_id"
1093
+ ]
1094
+ },
1095
+ "localCli": {
1096
+ "surface": "beeper",
1097
+ "action": "conversations.notify",
1098
+ "contractVersion": 1,
1099
+ "timeoutMs": 120000,
1100
+ "maxOutputBytes": 10485760
1101
+ }
1102
+ },
1103
+ "conversations.title.set": {
1104
+ "description": "Set one exact group-conversation title.",
1105
+ "risk": "R3",
1106
+ "sideEffect": "externally visible provider or Desktop mutation",
1107
+ "idempotency": "local-at-most-once",
1108
+ "dedupeWindowMs": 86400000,
1109
+ "input": {
1110
+ "properties": {
1111
+ "account_id": {
1112
+ "type": "string",
1113
+ "description": "Exact Beeper account ID returned by this adapter",
1114
+ "minLength": 1,
1115
+ "maxLength": 512
1116
+ },
1117
+ "conversation_id": {
1118
+ "type": "string",
1119
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1120
+ "minLength": 3,
1121
+ "maxLength": 2048
1122
+ },
1123
+ "title": {
1124
+ "type": "string",
1125
+ "description": "Replacement group title",
1126
+ "minLength": 1,
1127
+ "maxLength": 1024
1128
+ }
1129
+ },
1130
+ "required": [
1131
+ "account_id",
1132
+ "conversation_id",
1133
+ "title"
1134
+ ]
1135
+ },
1136
+ "localCli": {
1137
+ "surface": "beeper",
1138
+ "action": "conversations.title.set",
1139
+ "contractVersion": 1,
1140
+ "timeoutMs": 120000,
1141
+ "maxOutputBytes": 10485760
1142
+ }
1143
+ },
1144
+ "conversations.description.set": {
1145
+ "description": "Set or clear one exact group-conversation description.",
1146
+ "risk": "R3",
1147
+ "sideEffect": "externally visible provider or Desktop mutation",
1148
+ "idempotency": "local-at-most-once",
1149
+ "dedupeWindowMs": 86400000,
1150
+ "input": {
1151
+ "properties": {
1152
+ "account_id": {
1153
+ "type": "string",
1154
+ "description": "Exact Beeper account ID returned by this adapter",
1155
+ "minLength": 1,
1156
+ "maxLength": 512
1157
+ },
1158
+ "conversation_id": {
1159
+ "type": "string",
1160
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1161
+ "minLength": 3,
1162
+ "maxLength": 2048
1163
+ },
1164
+ "clear": {
1165
+ "type": "boolean",
1166
+ "description": "Clear the description"
1167
+ },
1168
+ "description": {
1169
+ "type": "string",
1170
+ "description": "Replacement group description",
1171
+ "minLength": 1,
1172
+ "maxLength": 65536
1173
+ }
1174
+ },
1175
+ "required": [
1176
+ "account_id",
1177
+ "conversation_id",
1178
+ "clear"
1179
+ ]
1180
+ },
1181
+ "localCli": {
1182
+ "surface": "beeper",
1183
+ "action": "conversations.description.set",
1184
+ "contractVersion": 1,
1185
+ "timeoutMs": 120000,
1186
+ "maxOutputBytes": 10485760
1187
+ }
1188
+ },
1189
+ "conversations.avatar.set": {
1190
+ "description": "Set or clear one exact group-conversation avatar.",
1191
+ "risk": "R3",
1192
+ "sideEffect": "externally visible provider or Desktop mutation",
1193
+ "idempotency": "local-at-most-once",
1194
+ "dedupeWindowMs": 86400000,
1195
+ "input": {
1196
+ "properties": {
1197
+ "account_id": {
1198
+ "type": "string",
1199
+ "description": "Exact Beeper account ID returned by this adapter",
1200
+ "minLength": 1,
1201
+ "maxLength": 512
1202
+ },
1203
+ "conversation_id": {
1204
+ "type": "string",
1205
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1206
+ "minLength": 3,
1207
+ "maxLength": 2048
1208
+ },
1209
+ "clear": {
1210
+ "type": "boolean",
1211
+ "description": "Clear the avatar"
1212
+ },
1213
+ "avatar": {
1214
+ "type": "file",
1215
+ "description": "Plan-bound replacement avatar bytes",
1216
+ "maxBytes": 16777216
1217
+ }
1218
+ },
1219
+ "required": [
1220
+ "account_id",
1221
+ "conversation_id",
1222
+ "clear"
1223
+ ]
1224
+ },
1225
+ "localCli": {
1226
+ "surface": "beeper",
1227
+ "action": "conversations.avatar.set",
1228
+ "contractVersion": 1,
1229
+ "timeoutMs": 120000,
1230
+ "maxOutputBytes": 10485760
1231
+ }
1232
+ },
1233
+ "conversations.draft.set": {
1234
+ "description": "Set or clear one private Desktop draft.",
1235
+ "risk": "R2",
1236
+ "sideEffect": "reversible provider or private desired-state mutation",
1237
+ "idempotency": "local-at-most-once",
1238
+ "dedupeWindowMs": 86400000,
1239
+ "input": {
1240
+ "properties": {
1241
+ "account_id": {
1242
+ "type": "string",
1243
+ "description": "Exact Beeper account ID returned by this adapter",
1244
+ "minLength": 1,
1245
+ "maxLength": 512
1246
+ },
1247
+ "conversation_id": {
1248
+ "type": "string",
1249
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1250
+ "minLength": 3,
1251
+ "maxLength": 2048
1252
+ },
1253
+ "clear": {
1254
+ "type": "boolean",
1255
+ "description": "Clear the draft"
1256
+ },
1257
+ "text": {
1258
+ "type": "string",
1259
+ "description": "Replacement private draft text",
1260
+ "minLength": 0,
1261
+ "maxLength": 65536
1262
+ },
1263
+ "attachment": {
1264
+ "type": "file",
1265
+ "description": "Plan-bound private draft attachment",
1266
+ "maxBytes": 524288000
1267
+ },
1268
+ "filename": {
1269
+ "type": "string",
1270
+ "description": "Attachment filename",
1271
+ "minLength": 1,
1272
+ "maxLength": 512
1273
+ },
1274
+ "mime_type": {
1275
+ "type": "string",
1276
+ "description": "Attachment media type",
1277
+ "minLength": 1,
1278
+ "maxLength": 128
1279
+ }
1280
+ },
1281
+ "required": [
1282
+ "account_id",
1283
+ "conversation_id",
1284
+ "clear"
1285
+ ]
1286
+ },
1287
+ "localCli": {
1288
+ "surface": "beeper",
1289
+ "action": "conversations.draft.set",
1290
+ "contractVersion": 1,
1291
+ "timeoutMs": 120000,
1292
+ "maxOutputBytes": 10485760
1293
+ }
1294
+ },
1295
+ "conversations.disappearing.set": {
1296
+ "description": "Set one disappearing-message retention interval.",
1297
+ "risk": "R3",
1298
+ "sideEffect": "externally visible provider or Desktop mutation",
1299
+ "idempotency": "local-at-most-once",
1300
+ "dedupeWindowMs": 86400000,
1301
+ "input": {
1302
+ "properties": {
1303
+ "account_id": {
1304
+ "type": "string",
1305
+ "description": "Exact Beeper account ID returned by this adapter",
1306
+ "minLength": 1,
1307
+ "maxLength": 512
1308
+ },
1309
+ "conversation_id": {
1310
+ "type": "string",
1311
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1312
+ "minLength": 3,
1313
+ "maxLength": 2048
1314
+ },
1315
+ "seconds": {
1316
+ "type": "number",
1317
+ "description": "Desired disappearing-message interval; zero disables",
1318
+ "minimum": 0,
1319
+ "maximum": 31536000
1320
+ }
1321
+ },
1322
+ "required": [
1323
+ "account_id",
1324
+ "conversation_id",
1325
+ "seconds"
1326
+ ]
1327
+ },
1328
+ "localCli": {
1329
+ "surface": "beeper",
1330
+ "action": "conversations.disappearing.set",
1331
+ "contractVersion": 1,
1332
+ "timeoutMs": 120000,
1333
+ "maxOutputBytes": 10485760
1334
+ }
1335
+ },
1336
+ "conversations.reminder.set": {
1337
+ "description": "Set or clear one private Desktop reminder.",
1338
+ "risk": "R2",
1339
+ "sideEffect": "reversible provider or private desired-state mutation",
1340
+ "idempotency": "local-at-most-once",
1341
+ "dedupeWindowMs": 86400000,
1342
+ "input": {
1343
+ "properties": {
1344
+ "account_id": {
1345
+ "type": "string",
1346
+ "description": "Exact Beeper account ID returned by this adapter",
1347
+ "minLength": 1,
1348
+ "maxLength": 512
1349
+ },
1350
+ "conversation_id": {
1351
+ "type": "string",
1352
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1353
+ "minLength": 3,
1354
+ "maxLength": 2048
1355
+ },
1356
+ "clear": {
1357
+ "type": "boolean",
1358
+ "description": "Clear the reminder"
1359
+ },
1360
+ "when": {
1361
+ "type": "string",
1362
+ "description": "Canonical UTC ISO timestamp",
1363
+ "minLength": 20,
1364
+ "maxLength": 64
1365
+ },
1366
+ "dismiss_on_message": {
1367
+ "type": "boolean",
1368
+ "description": "Dismiss when a message arrives"
1369
+ }
1370
+ },
1371
+ "required": [
1372
+ "account_id",
1373
+ "conversation_id",
1374
+ "clear"
1375
+ ]
1376
+ },
1377
+ "localCli": {
1378
+ "surface": "beeper",
1379
+ "action": "conversations.reminder.set",
1380
+ "contractVersion": 1,
1381
+ "timeoutMs": 120000,
1382
+ "maxOutputBytes": 10485760
1383
+ }
1384
+ },
1385
+ "conversations.focus": {
1386
+ "description": "Focus one exact Desktop conversation with optional plan-bound draft state.",
1387
+ "risk": "R2",
1388
+ "sideEffect": "reversible provider or private desired-state mutation",
1389
+ "idempotency": "local-at-most-once",
1390
+ "dedupeWindowMs": 86400000,
1391
+ "input": {
1392
+ "properties": {
1393
+ "account_id": {
1394
+ "type": "string",
1395
+ "description": "Exact Beeper account ID returned by this adapter",
1396
+ "minLength": 1,
1397
+ "maxLength": 512
1398
+ },
1399
+ "conversation_id": {
1400
+ "type": "string",
1401
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1402
+ "minLength": 3,
1403
+ "maxLength": 2048
1404
+ },
1405
+ "message_id": {
1406
+ "type": "string",
1407
+ "description": "Exact message ID returned by this adapter",
1408
+ "minLength": 1,
1409
+ "maxLength": 2048
1410
+ },
1411
+ "draft": {
1412
+ "type": "string",
1413
+ "description": "Plan-bound Desktop draft text",
1414
+ "minLength": 0,
1415
+ "maxLength": 65536
1416
+ },
1417
+ "attachment": {
1418
+ "type": "file",
1419
+ "description": "Plan-bound Desktop draft attachment",
1420
+ "maxBytes": 524288000
1421
+ }
1422
+ },
1423
+ "required": [
1424
+ "account_id",
1425
+ "conversation_id"
1426
+ ]
1427
+ },
1428
+ "localCli": {
1429
+ "surface": "beeper",
1430
+ "action": "conversations.focus",
1431
+ "contractVersion": 1,
1432
+ "timeoutMs": 120000,
1433
+ "maxOutputBytes": 10485760
1434
+ }
1435
+ },
1436
+ "presence.set": {
1437
+ "description": "Send one bounded typing or paused presence indication.",
1438
+ "risk": "R3",
1439
+ "sideEffect": "externally visible provider or Desktop mutation",
1440
+ "idempotency": "local-at-most-once",
1441
+ "dedupeWindowMs": 86400000,
1442
+ "input": {
1443
+ "properties": {
1444
+ "account_id": {
1445
+ "type": "string",
1446
+ "description": "Exact Beeper account ID returned by this adapter",
1447
+ "minLength": 1,
1448
+ "maxLength": 512
1449
+ },
1450
+ "conversation_id": {
1451
+ "type": "string",
1452
+ "description": "Canonical full Beeper/Matrix chat ID returned by this adapter",
1453
+ "minLength": 3,
1454
+ "maxLength": 2048
1455
+ },
1456
+ "state": {
1457
+ "type": "string",
1458
+ "description": "Exact presence state",
1459
+ "minLength": 1,
1460
+ "maxLength": 16,
1461
+ "enum": [
1462
+ "typing",
1463
+ "paused"
1464
+ ]
1465
+ },
1466
+ "duration_seconds": {
1467
+ "type": "number",
1468
+ "description": "Bounded typing duration before a separately journaled paused dispatch",
1469
+ "minimum": 1,
1470
+ "maximum": 30
1471
+ }
1472
+ },
1473
+ "required": [
1474
+ "account_id",
1475
+ "conversation_id",
1476
+ "state"
1477
+ ]
1478
+ },
1479
+ "localCli": {
1480
+ "surface": "beeper",
1481
+ "action": "presence.set",
1482
+ "contractVersion": 1,
1483
+ "timeoutMs": 120000,
1484
+ "maxOutputBytes": 10485760
1485
+ }
1486
+ }
1487
+ }
1488
+ }