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