@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,880 @@
1
+ {
2
+ "schemaVersion": 4,
3
+ "id": "facebook-page-web",
4
+ "version": "1.2.0",
5
+ "displayName": "Facebook Page (Authenticated Internal API)",
6
+ "surfaceId": "facebook-page",
7
+ "origins": [
8
+ "https://www.facebook.com"
9
+ ],
10
+ "browserDomains": [
11
+ "www.facebook.com"
12
+ ],
13
+ "operations": {
14
+ "comments.create": {
15
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
16
+ "risk": "R3",
17
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
18
+ "idempotency": "local-at-most-once",
19
+ "dedupeWindowMs": 86400000,
20
+ "input": {
21
+ "properties": {
22
+ "page_id": {
23
+ "type": "string",
24
+ "description": "Exact Facebook Page ID",
25
+ "minLength": 1,
26
+ "maxLength": 80
27
+ },
28
+ "post_id": {
29
+ "type": "string",
30
+ "description": "Exact Facebook post ID",
31
+ "minLength": 1,
32
+ "maxLength": 256
33
+ },
34
+ "body": {
35
+ "type": "string",
36
+ "description": "Comment body",
37
+ "minLength": 1,
38
+ "maxLength": 500
39
+ }
40
+ },
41
+ "required": [
42
+ "page_id",
43
+ "post_id",
44
+ "body"
45
+ ]
46
+ },
47
+ "webSession": {
48
+ "site": "facebook-page",
49
+ "action": "comments.create",
50
+ "contractVersion": 1,
51
+ "timeoutMs": 60000,
52
+ "maxOutputBytes": 10485760
53
+ }
54
+ },
55
+ "comments.read": {
56
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
57
+ "risk": "R1",
58
+ "sideEffect": "none",
59
+ "idempotency": "none",
60
+ "dedupeWindowMs": 0,
61
+ "input": {
62
+ "properties": {
63
+ "page_id": {
64
+ "type": "string",
65
+ "description": "Exact Facebook Page ID",
66
+ "minLength": 1,
67
+ "maxLength": 80
68
+ },
69
+ "post_id": {
70
+ "type": "string",
71
+ "description": "Exact Facebook post ID",
72
+ "minLength": 1,
73
+ "maxLength": 256
74
+ },
75
+ "cursor": {
76
+ "type": "string",
77
+ "description": "Opaque cursor returned by the preceding page",
78
+ "minLength": 1,
79
+ "maxLength": 4096
80
+ },
81
+ "limit": {
82
+ "type": "number",
83
+ "description": "Maximum comments",
84
+ "minimum": 1,
85
+ "maximum": 100
86
+ }
87
+ },
88
+ "required": [
89
+ "page_id",
90
+ "post_id"
91
+ ]
92
+ },
93
+ "webSession": {
94
+ "site": "facebook-page",
95
+ "action": "comments.read",
96
+ "contractVersion": 1,
97
+ "timeoutMs": 60000,
98
+ "maxOutputBytes": 10485760
99
+ }
100
+ },
101
+ "content.edit": {
102
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
103
+ "risk": "R3",
104
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
105
+ "idempotency": "local-at-most-once",
106
+ "dedupeWindowMs": 86400000,
107
+ "input": {
108
+ "properties": {
109
+ "page_id": {
110
+ "type": "string",
111
+ "description": "Exact Facebook Page ID",
112
+ "minLength": 1,
113
+ "maxLength": 80
114
+ },
115
+ "post_id": {
116
+ "type": "string",
117
+ "description": "Exact Facebook post ID",
118
+ "minLength": 1,
119
+ "maxLength": 256
120
+ },
121
+ "body": {
122
+ "type": "string",
123
+ "description": "Replacement text",
124
+ "minLength": 1,
125
+ "maxLength": 1000
126
+ }
127
+ },
128
+ "required": [
129
+ "page_id",
130
+ "post_id",
131
+ "body"
132
+ ]
133
+ },
134
+ "webSession": {
135
+ "site": "facebook-page",
136
+ "action": "content.edit",
137
+ "contractVersion": 1,
138
+ "timeoutMs": 60000,
139
+ "maxOutputBytes": 10485760
140
+ }
141
+ },
142
+ "content.save": {
143
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
144
+ "risk": "R2",
145
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
146
+ "idempotency": "local-at-most-once",
147
+ "dedupeWindowMs": 86400000,
148
+ "input": {
149
+ "properties": {
150
+ "page_id": {
151
+ "type": "string",
152
+ "description": "Exact Facebook Page ID",
153
+ "minLength": 1,
154
+ "maxLength": 80
155
+ },
156
+ "post_id": {
157
+ "type": "string",
158
+ "description": "Exact Facebook post ID",
159
+ "minLength": 1,
160
+ "maxLength": 256
161
+ },
162
+ "saved": {
163
+ "type": "boolean",
164
+ "description": "Exact desired saved state"
165
+ }
166
+ },
167
+ "required": [
168
+ "page_id",
169
+ "post_id",
170
+ "saved"
171
+ ]
172
+ },
173
+ "webSession": {
174
+ "site": "facebook-page",
175
+ "action": "content.save",
176
+ "contractVersion": 1,
177
+ "timeoutMs": 60000,
178
+ "maxOutputBytes": 10485760
179
+ }
180
+ },
181
+ "content.schedule": {
182
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
183
+ "risk": "R3",
184
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
185
+ "idempotency": "local-at-most-once",
186
+ "dedupeWindowMs": 86400000,
187
+ "input": {
188
+ "properties": {
189
+ "page_id": {
190
+ "type": "string",
191
+ "description": "Exact Facebook Page ID",
192
+ "minLength": 1,
193
+ "maxLength": 80
194
+ },
195
+ "post_id": {
196
+ "type": "string",
197
+ "description": "Exact Facebook post ID",
198
+ "minLength": 1,
199
+ "maxLength": 256
200
+ },
201
+ "scheduled_at": {
202
+ "type": "string",
203
+ "description": "Exact scheduled timestamp",
204
+ "minLength": 1,
205
+ "maxLength": 64
206
+ }
207
+ },
208
+ "required": [
209
+ "page_id",
210
+ "post_id",
211
+ "scheduled_at"
212
+ ]
213
+ },
214
+ "webSession": {
215
+ "site": "facebook-page",
216
+ "action": "content.schedule",
217
+ "contractVersion": 1,
218
+ "timeoutMs": 60000,
219
+ "maxOutputBytes": 10485760
220
+ }
221
+ },
222
+ "content.share": {
223
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
224
+ "risk": "R3",
225
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
226
+ "idempotency": "local-at-most-once",
227
+ "dedupeWindowMs": 86400000,
228
+ "input": {
229
+ "properties": {
230
+ "page_id": {
231
+ "type": "string",
232
+ "description": "Exact Facebook Page ID",
233
+ "minLength": 1,
234
+ "maxLength": 80
235
+ },
236
+ "post_id": {
237
+ "type": "string",
238
+ "description": "Exact Facebook post ID",
239
+ "minLength": 1,
240
+ "maxLength": 256
241
+ },
242
+ "destination": {
243
+ "type": "string",
244
+ "description": "Reviewed share destination",
245
+ "enum": [
246
+ "capture-required"
247
+ ]
248
+ }
249
+ },
250
+ "required": [
251
+ "page_id",
252
+ "post_id",
253
+ "destination"
254
+ ]
255
+ },
256
+ "webSession": {
257
+ "site": "facebook-page",
258
+ "action": "content.share",
259
+ "contractVersion": 1,
260
+ "timeoutMs": 60000,
261
+ "maxOutputBytes": 10485760
262
+ }
263
+ },
264
+ "feeds.read": {
265
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
266
+ "risk": "R1",
267
+ "sideEffect": "none",
268
+ "idempotency": "none",
269
+ "dedupeWindowMs": 0,
270
+ "input": {
271
+ "properties": {
272
+ "page_id": {
273
+ "type": "string",
274
+ "description": "Exact Facebook Page ID",
275
+ "minLength": 1,
276
+ "maxLength": 80
277
+ },
278
+ "feed": {
279
+ "type": "string",
280
+ "description": "Reviewed feed",
281
+ "enum": [
282
+ "home"
283
+ ]
284
+ },
285
+ "cursor": {
286
+ "type": "string",
287
+ "description": "Opaque cursor returned by the preceding page",
288
+ "minLength": 1,
289
+ "maxLength": 4096
290
+ },
291
+ "limit": {
292
+ "type": "number",
293
+ "description": "Maximum results",
294
+ "minimum": 1,
295
+ "maximum": 30
296
+ }
297
+ },
298
+ "required": [
299
+ "page_id",
300
+ "feed"
301
+ ]
302
+ },
303
+ "webSession": {
304
+ "site": "facebook-page",
305
+ "action": "feeds.read",
306
+ "contractVersion": 1,
307
+ "timeoutMs": 60000,
308
+ "maxOutputBytes": 10485760
309
+ }
310
+ },
311
+ "likes.set": {
312
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
313
+ "risk": "R2",
314
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
315
+ "idempotency": "local-at-most-once",
316
+ "dedupeWindowMs": 86400000,
317
+ "input": {
318
+ "properties": {
319
+ "page_id": {
320
+ "type": "string",
321
+ "description": "Exact Facebook Page ID",
322
+ "minLength": 1,
323
+ "maxLength": 80
324
+ },
325
+ "post_id": {
326
+ "type": "string",
327
+ "description": "Exact Facebook post ID",
328
+ "minLength": 1,
329
+ "maxLength": 256
330
+ },
331
+ "liked": {
332
+ "type": "boolean",
333
+ "description": "Exact desired like state"
334
+ }
335
+ },
336
+ "required": [
337
+ "page_id",
338
+ "post_id",
339
+ "liked"
340
+ ]
341
+ },
342
+ "webSession": {
343
+ "site": "facebook-page",
344
+ "action": "likes.set",
345
+ "contractVersion": 1,
346
+ "timeoutMs": 60000,
347
+ "maxOutputBytes": 10485760
348
+ }
349
+ },
350
+ "media.publish": {
351
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
352
+ "risk": "R3",
353
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
354
+ "idempotency": "local-at-most-once",
355
+ "dedupeWindowMs": 86400000,
356
+ "input": {
357
+ "properties": {
358
+ "page_id": {
359
+ "type": "string",
360
+ "description": "Exact Facebook Page ID",
361
+ "minLength": 1,
362
+ "maxLength": 80
363
+ },
364
+ "media": {
365
+ "type": "file",
366
+ "description": "Exact media file",
367
+ "maxBytes": 1073741824,
368
+ "mediaTypes": [
369
+ "image/*",
370
+ "video/*"
371
+ ]
372
+ },
373
+ "caption": {
374
+ "type": "string",
375
+ "description": "Optional media caption",
376
+ "minLength": 1,
377
+ "maxLength": 1000
378
+ },
379
+ "audience": {
380
+ "type": "string",
381
+ "description": "Explicit audience",
382
+ "enum": [
383
+ "default"
384
+ ]
385
+ }
386
+ },
387
+ "required": [
388
+ "page_id",
389
+ "media"
390
+ ]
391
+ },
392
+ "webSession": {
393
+ "site": "facebook-page",
394
+ "action": "media.publish",
395
+ "contractVersion": 1,
396
+ "timeoutMs": 60000,
397
+ "maxOutputBytes": 10485760
398
+ }
399
+ },
400
+ "media.read": {
401
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
402
+ "risk": "R1",
403
+ "sideEffect": "none",
404
+ "idempotency": "none",
405
+ "dedupeWindowMs": 0,
406
+ "input": {
407
+ "properties": {
408
+ "page_id": {
409
+ "type": "string",
410
+ "description": "Exact Facebook Page ID",
411
+ "minLength": 1,
412
+ "maxLength": 80
413
+ },
414
+ "post_id": {
415
+ "type": "string",
416
+ "description": "Exact Facebook post ID",
417
+ "minLength": 1,
418
+ "maxLength": 256
419
+ }
420
+ },
421
+ "required": [
422
+ "page_id",
423
+ "post_id"
424
+ ]
425
+ },
426
+ "webSession": {
427
+ "site": "facebook-page",
428
+ "action": "media.read",
429
+ "contractVersion": 1,
430
+ "timeoutMs": 60000,
431
+ "maxOutputBytes": 10485760
432
+ }
433
+ },
434
+ "messaging.list": {
435
+ "description": "Capture-required contract reservation: Page inbox actor switching and Page-vs-person recipient binding require a reviewed business-inbox capture.",
436
+ "risk": "R1",
437
+ "sideEffect": "none",
438
+ "idempotency": "none",
439
+ "dedupeWindowMs": 0,
440
+ "input": {
441
+ "properties": {
442
+ "page_id": {
443
+ "type": "string",
444
+ "description": "Exact Facebook Page ID",
445
+ "minLength": 1,
446
+ "maxLength": 80
447
+ },
448
+ "folder": {
449
+ "type": "string",
450
+ "description": "Reviewed inbox folder",
451
+ "enum": [
452
+ "inbox"
453
+ ]
454
+ },
455
+ "cursor": {
456
+ "type": "string",
457
+ "description": "Opaque cursor returned by the preceding page",
458
+ "minLength": 1,
459
+ "maxLength": 4096
460
+ },
461
+ "limit": {
462
+ "type": "number",
463
+ "description": "Maximum thread summaries",
464
+ "minimum": 1,
465
+ "maximum": 50
466
+ }
467
+ },
468
+ "required": [
469
+ "page_id",
470
+ "folder"
471
+ ]
472
+ },
473
+ "webSession": {
474
+ "site": "facebook-page",
475
+ "action": "messaging.list",
476
+ "contractVersion": 1,
477
+ "timeoutMs": 60000,
478
+ "maxOutputBytes": 10485760
479
+ }
480
+ },
481
+ "messaging.read": {
482
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
483
+ "risk": "R1",
484
+ "sideEffect": "none",
485
+ "idempotency": "none",
486
+ "dedupeWindowMs": 0,
487
+ "input": {
488
+ "properties": {
489
+ "page_id": {
490
+ "type": "string",
491
+ "description": "Exact Facebook Page ID",
492
+ "minLength": 1,
493
+ "maxLength": 80
494
+ },
495
+ "conversation_id": {
496
+ "type": "string",
497
+ "description": "Exact conversation ID",
498
+ "minLength": 1,
499
+ "maxLength": 512
500
+ },
501
+ "cursor": {
502
+ "type": "string",
503
+ "description": "Opaque cursor returned by the preceding page",
504
+ "minLength": 1,
505
+ "maxLength": 4096
506
+ },
507
+ "limit": {
508
+ "type": "number",
509
+ "description": "Maximum messages",
510
+ "minimum": 1,
511
+ "maximum": 100
512
+ }
513
+ },
514
+ "required": [
515
+ "page_id",
516
+ "conversation_id"
517
+ ]
518
+ },
519
+ "webSession": {
520
+ "site": "facebook-page",
521
+ "action": "messaging.read",
522
+ "contractVersion": 1,
523
+ "timeoutMs": 60000,
524
+ "maxOutputBytes": 10485760
525
+ }
526
+ },
527
+ "messaging.send": {
528
+ "description": "Capture-required contract reservation: Page messaging requires exact Page actor proof plus protocol-correct inbox transport.",
529
+ "risk": "R3",
530
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
531
+ "idempotency": "local-at-most-once",
532
+ "dedupeWindowMs": 86400000,
533
+ "input": {
534
+ "properties": {
535
+ "page_id": {
536
+ "type": "string",
537
+ "description": "Exact Facebook Page ID",
538
+ "minLength": 1,
539
+ "maxLength": 80
540
+ },
541
+ "conversation_id": {
542
+ "type": "string",
543
+ "description": "Exact conversation ID",
544
+ "minLength": 1,
545
+ "maxLength": 512
546
+ },
547
+ "body": {
548
+ "type": "string",
549
+ "description": "Message body",
550
+ "minLength": 1,
551
+ "maxLength": 1000
552
+ },
553
+ "attachment": {
554
+ "type": "file",
555
+ "description": "Optional exact message attachment",
556
+ "maxBytes": 1073741824,
557
+ "mediaTypes": [
558
+ "image/*",
559
+ "video/*",
560
+ "application/pdf"
561
+ ]
562
+ }
563
+ },
564
+ "required": [
565
+ "page_id",
566
+ "conversation_id",
567
+ "body"
568
+ ]
569
+ },
570
+ "webSession": {
571
+ "site": "facebook-page",
572
+ "action": "messaging.send",
573
+ "contractVersion": 1,
574
+ "timeoutMs": 60000,
575
+ "maxOutputBytes": 10485760
576
+ }
577
+ },
578
+ "posts.publish": {
579
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
580
+ "risk": "R3",
581
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
582
+ "idempotency": "local-at-most-once",
583
+ "dedupeWindowMs": 86400000,
584
+ "input": {
585
+ "properties": {
586
+ "page_id": {
587
+ "type": "string",
588
+ "description": "Exact Facebook Page ID",
589
+ "minLength": 1,
590
+ "maxLength": 80
591
+ },
592
+ "body": {
593
+ "type": "string",
594
+ "description": "Post body",
595
+ "minLength": 1,
596
+ "maxLength": 1000
597
+ },
598
+ "attachment": {
599
+ "type": "file",
600
+ "description": "Optional exact post attachment",
601
+ "maxBytes": 1073741824,
602
+ "mediaTypes": [
603
+ "image/*",
604
+ "video/*",
605
+ "image/gif"
606
+ ]
607
+ },
608
+ "audience": {
609
+ "type": "string",
610
+ "description": "Explicit audience",
611
+ "enum": [
612
+ "default"
613
+ ]
614
+ }
615
+ },
616
+ "required": [
617
+ "page_id",
618
+ "body"
619
+ ]
620
+ },
621
+ "webSession": {
622
+ "site": "facebook-page",
623
+ "action": "posts.publish",
624
+ "contractVersion": 1,
625
+ "timeoutMs": 60000,
626
+ "maxOutputBytes": 10485760
627
+ }
628
+ },
629
+ "posts.quote": {
630
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
631
+ "risk": "R3",
632
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
633
+ "idempotency": "local-at-most-once",
634
+ "dedupeWindowMs": 86400000,
635
+ "input": {
636
+ "properties": {
637
+ "page_id": {
638
+ "type": "string",
639
+ "description": "Exact Facebook Page ID",
640
+ "minLength": 1,
641
+ "maxLength": 80
642
+ },
643
+ "post_id": {
644
+ "type": "string",
645
+ "description": "Exact Facebook post ID",
646
+ "minLength": 1,
647
+ "maxLength": 256
648
+ },
649
+ "body": {
650
+ "type": "string",
651
+ "description": "Quote text",
652
+ "minLength": 1,
653
+ "maxLength": 1000
654
+ }
655
+ },
656
+ "required": [
657
+ "page_id",
658
+ "post_id",
659
+ "body"
660
+ ]
661
+ },
662
+ "webSession": {
663
+ "site": "facebook-page",
664
+ "action": "posts.quote",
665
+ "contractVersion": 1,
666
+ "timeoutMs": 60000,
667
+ "maxOutputBytes": 10485760
668
+ }
669
+ },
670
+ "posts.read": {
671
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
672
+ "risk": "R1",
673
+ "sideEffect": "none",
674
+ "idempotency": "none",
675
+ "dedupeWindowMs": 0,
676
+ "input": {
677
+ "properties": {
678
+ "page_id": {
679
+ "type": "string",
680
+ "description": "Exact Facebook Page ID",
681
+ "minLength": 1,
682
+ "maxLength": 80
683
+ },
684
+ "post_id": {
685
+ "type": "string",
686
+ "description": "Exact Facebook post ID",
687
+ "minLength": 1,
688
+ "maxLength": 256
689
+ }
690
+ },
691
+ "required": [
692
+ "page_id",
693
+ "post_id"
694
+ ]
695
+ },
696
+ "webSession": {
697
+ "site": "facebook-page",
698
+ "action": "posts.read",
699
+ "contractVersion": 1,
700
+ "timeoutMs": 60000,
701
+ "maxOutputBytes": 10485760
702
+ }
703
+ },
704
+ "posts.repost": {
705
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
706
+ "risk": "R3",
707
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
708
+ "idempotency": "local-at-most-once",
709
+ "dedupeWindowMs": 86400000,
710
+ "input": {
711
+ "properties": {
712
+ "page_id": {
713
+ "type": "string",
714
+ "description": "Exact Facebook Page ID",
715
+ "minLength": 1,
716
+ "maxLength": 80
717
+ },
718
+ "post_id": {
719
+ "type": "string",
720
+ "description": "Exact Facebook post ID",
721
+ "minLength": 1,
722
+ "maxLength": 256
723
+ },
724
+ "reposted": {
725
+ "type": "boolean",
726
+ "description": "Exact desired repost state"
727
+ }
728
+ },
729
+ "required": [
730
+ "page_id",
731
+ "post_id",
732
+ "reposted"
733
+ ]
734
+ },
735
+ "webSession": {
736
+ "site": "facebook-page",
737
+ "action": "posts.repost",
738
+ "contractVersion": 1,
739
+ "timeoutMs": 60000,
740
+ "maxOutputBytes": 10485760
741
+ }
742
+ },
743
+ "reactions.set": {
744
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
745
+ "risk": "R2",
746
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
747
+ "idempotency": "local-at-most-once",
748
+ "dedupeWindowMs": 86400000,
749
+ "input": {
750
+ "properties": {
751
+ "page_id": {
752
+ "type": "string",
753
+ "description": "Exact Facebook Page ID",
754
+ "minLength": 1,
755
+ "maxLength": 80
756
+ },
757
+ "post_id": {
758
+ "type": "string",
759
+ "description": "Exact Facebook post ID",
760
+ "minLength": 1,
761
+ "maxLength": 256
762
+ },
763
+ "reaction": {
764
+ "type": "string",
765
+ "description": "Exact desired reaction",
766
+ "enum": [
767
+ "none",
768
+ "like",
769
+ "love",
770
+ "care",
771
+ "haha",
772
+ "wow",
773
+ "sad",
774
+ "angry"
775
+ ]
776
+ }
777
+ },
778
+ "required": [
779
+ "page_id",
780
+ "post_id",
781
+ "reaction"
782
+ ]
783
+ },
784
+ "webSession": {
785
+ "site": "facebook-page",
786
+ "action": "reactions.set",
787
+ "contractVersion": 1,
788
+ "timeoutMs": 60000,
789
+ "maxOutputBytes": 10485760
790
+ }
791
+ },
792
+ "relationships.follow.set": {
793
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
794
+ "risk": "R2",
795
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
796
+ "idempotency": "local-at-most-once",
797
+ "dedupeWindowMs": 86400000,
798
+ "input": {
799
+ "properties": {
800
+ "page_id": {
801
+ "type": "string",
802
+ "description": "Exact Facebook Page ID",
803
+ "minLength": 1,
804
+ "maxLength": 80
805
+ },
806
+ "user_id": {
807
+ "type": "string",
808
+ "description": "Exact target account ID",
809
+ "minLength": 1,
810
+ "maxLength": 80
811
+ },
812
+ "following": {
813
+ "type": "boolean",
814
+ "description": "Exact desired following state"
815
+ }
816
+ },
817
+ "required": [
818
+ "page_id",
819
+ "user_id",
820
+ "following"
821
+ ]
822
+ },
823
+ "webSession": {
824
+ "site": "facebook-page",
825
+ "action": "relationships.follow.set",
826
+ "contractVersion": 1,
827
+ "timeoutMs": 60000,
828
+ "maxOutputBytes": 10485760
829
+ }
830
+ },
831
+ "replies.create": {
832
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
833
+ "risk": "R3",
834
+ "sideEffect": "Changes remote facebook-page state only after exact preview confirmation and reviewed dispatch.",
835
+ "idempotency": "local-at-most-once",
836
+ "dedupeWindowMs": 86400000,
837
+ "input": {
838
+ "properties": {
839
+ "page_id": {
840
+ "type": "string",
841
+ "description": "Exact Facebook Page ID",
842
+ "minLength": 1,
843
+ "maxLength": 80
844
+ },
845
+ "post_id": {
846
+ "type": "string",
847
+ "description": "Exact Facebook post ID",
848
+ "minLength": 1,
849
+ "maxLength": 256
850
+ },
851
+ "comment_id": {
852
+ "type": "string",
853
+ "description": "Exact parent comment ID",
854
+ "minLength": 1,
855
+ "maxLength": 256
856
+ },
857
+ "body": {
858
+ "type": "string",
859
+ "description": "Reply body",
860
+ "minLength": 1,
861
+ "maxLength": 500
862
+ }
863
+ },
864
+ "required": [
865
+ "page_id",
866
+ "post_id",
867
+ "comment_id",
868
+ "body"
869
+ ]
870
+ },
871
+ "webSession": {
872
+ "site": "facebook-page",
873
+ "action": "replies.create",
874
+ "contractVersion": 1,
875
+ "timeoutMs": 60000,
876
+ "maxOutputBytes": 10485760
877
+ }
878
+ }
879
+ }
880
+ }