@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,682 @@
1
+ {
2
+ "schemaVersion": 4,
3
+ "id": "facebook-group-web",
4
+ "version": "1.2.0",
5
+ "displayName": "Facebook Group (Authenticated Internal API)",
6
+ "surfaceId": "facebook-group",
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-group state only after exact preview confirmation and reviewed dispatch.",
18
+ "idempotency": "local-at-most-once",
19
+ "dedupeWindowMs": 86400000,
20
+ "input": {
21
+ "properties": {
22
+ "group_id": {
23
+ "type": "string",
24
+ "description": "Exact Facebook Group 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
+ "group_id",
43
+ "post_id",
44
+ "body"
45
+ ]
46
+ },
47
+ "webSession": {
48
+ "site": "facebook-group",
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
+ "group_id": {
64
+ "type": "string",
65
+ "description": "Exact Facebook Group 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
+ "group_id",
90
+ "post_id"
91
+ ]
92
+ },
93
+ "webSession": {
94
+ "site": "facebook-group",
95
+ "action": "comments.read",
96
+ "contractVersion": 1,
97
+ "timeoutMs": 60000,
98
+ "maxOutputBytes": 10485760
99
+ }
100
+ },
101
+ "communities.membership.set": {
102
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
103
+ "risk": "R2",
104
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
105
+ "idempotency": "local-at-most-once",
106
+ "dedupeWindowMs": 86400000,
107
+ "input": {
108
+ "properties": {
109
+ "group_id": {
110
+ "type": "string",
111
+ "description": "Exact Facebook Group ID",
112
+ "minLength": 1,
113
+ "maxLength": 80
114
+ },
115
+ "joined": {
116
+ "type": "boolean",
117
+ "description": "Exact desired membership state"
118
+ }
119
+ },
120
+ "required": [
121
+ "group_id",
122
+ "joined"
123
+ ]
124
+ },
125
+ "webSession": {
126
+ "site": "facebook-group",
127
+ "action": "communities.membership.set",
128
+ "contractVersion": 1,
129
+ "timeoutMs": 60000,
130
+ "maxOutputBytes": 10485760
131
+ }
132
+ },
133
+ "content.edit": {
134
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
135
+ "risk": "R3",
136
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
137
+ "idempotency": "local-at-most-once",
138
+ "dedupeWindowMs": 86400000,
139
+ "input": {
140
+ "properties": {
141
+ "group_id": {
142
+ "type": "string",
143
+ "description": "Exact Facebook Group ID",
144
+ "minLength": 1,
145
+ "maxLength": 80
146
+ },
147
+ "post_id": {
148
+ "type": "string",
149
+ "description": "Exact Facebook post ID",
150
+ "minLength": 1,
151
+ "maxLength": 256
152
+ },
153
+ "body": {
154
+ "type": "string",
155
+ "description": "Replacement text",
156
+ "minLength": 1,
157
+ "maxLength": 1000
158
+ }
159
+ },
160
+ "required": [
161
+ "group_id",
162
+ "post_id",
163
+ "body"
164
+ ]
165
+ },
166
+ "webSession": {
167
+ "site": "facebook-group",
168
+ "action": "content.edit",
169
+ "contractVersion": 1,
170
+ "timeoutMs": 60000,
171
+ "maxOutputBytes": 10485760
172
+ }
173
+ },
174
+ "content.save": {
175
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
176
+ "risk": "R2",
177
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
178
+ "idempotency": "local-at-most-once",
179
+ "dedupeWindowMs": 86400000,
180
+ "input": {
181
+ "properties": {
182
+ "group_id": {
183
+ "type": "string",
184
+ "description": "Exact Facebook Group ID",
185
+ "minLength": 1,
186
+ "maxLength": 80
187
+ },
188
+ "post_id": {
189
+ "type": "string",
190
+ "description": "Exact Facebook post ID",
191
+ "minLength": 1,
192
+ "maxLength": 256
193
+ },
194
+ "saved": {
195
+ "type": "boolean",
196
+ "description": "Exact desired saved state"
197
+ }
198
+ },
199
+ "required": [
200
+ "group_id",
201
+ "post_id",
202
+ "saved"
203
+ ]
204
+ },
205
+ "webSession": {
206
+ "site": "facebook-group",
207
+ "action": "content.save",
208
+ "contractVersion": 1,
209
+ "timeoutMs": 60000,
210
+ "maxOutputBytes": 10485760
211
+ }
212
+ },
213
+ "content.share": {
214
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
215
+ "risk": "R3",
216
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
217
+ "idempotency": "local-at-most-once",
218
+ "dedupeWindowMs": 86400000,
219
+ "input": {
220
+ "properties": {
221
+ "group_id": {
222
+ "type": "string",
223
+ "description": "Exact Facebook Group ID",
224
+ "minLength": 1,
225
+ "maxLength": 80
226
+ },
227
+ "post_id": {
228
+ "type": "string",
229
+ "description": "Exact Facebook post ID",
230
+ "minLength": 1,
231
+ "maxLength": 256
232
+ },
233
+ "destination": {
234
+ "type": "string",
235
+ "description": "Reviewed share destination",
236
+ "enum": [
237
+ "capture-required"
238
+ ]
239
+ }
240
+ },
241
+ "required": [
242
+ "group_id",
243
+ "post_id",
244
+ "destination"
245
+ ]
246
+ },
247
+ "webSession": {
248
+ "site": "facebook-group",
249
+ "action": "content.share",
250
+ "contractVersion": 1,
251
+ "timeoutMs": 60000,
252
+ "maxOutputBytes": 10485760
253
+ }
254
+ },
255
+ "feeds.read": {
256
+ "description": "Observed contract: bounded first-page Group feed from a direct signed-in HTML bootstrap, with exact current-user and numeric Group target binding, complete streamed-fragment assembly, and no client-script execution or pagination claim.",
257
+ "risk": "R1",
258
+ "sideEffect": "none",
259
+ "idempotency": "none",
260
+ "dedupeWindowMs": 0,
261
+ "input": {
262
+ "properties": {
263
+ "group_id": {
264
+ "type": "string",
265
+ "description": "Exact nonzero numeric Facebook Group ID",
266
+ "minLength": 1,
267
+ "maxLength": 32
268
+ },
269
+ "feed": {
270
+ "type": "string",
271
+ "description": "Reviewed feed",
272
+ "enum": [
273
+ "group"
274
+ ]
275
+ },
276
+ "limit": {
277
+ "type": "number",
278
+ "description": "Maximum results",
279
+ "minimum": 1,
280
+ "maximum": 30
281
+ }
282
+ },
283
+ "required": [
284
+ "group_id",
285
+ "feed"
286
+ ]
287
+ },
288
+ "webSession": {
289
+ "site": "facebook-group",
290
+ "action": "feeds.read",
291
+ "contractVersion": 2,
292
+ "timeoutMs": 60000,
293
+ "maxOutputBytes": 10485760
294
+ }
295
+ },
296
+ "likes.set": {
297
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
298
+ "risk": "R2",
299
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
300
+ "idempotency": "local-at-most-once",
301
+ "dedupeWindowMs": 86400000,
302
+ "input": {
303
+ "properties": {
304
+ "group_id": {
305
+ "type": "string",
306
+ "description": "Exact Facebook Group ID",
307
+ "minLength": 1,
308
+ "maxLength": 80
309
+ },
310
+ "post_id": {
311
+ "type": "string",
312
+ "description": "Exact Facebook post ID",
313
+ "minLength": 1,
314
+ "maxLength": 256
315
+ },
316
+ "liked": {
317
+ "type": "boolean",
318
+ "description": "Exact desired like state"
319
+ }
320
+ },
321
+ "required": [
322
+ "group_id",
323
+ "post_id",
324
+ "liked"
325
+ ]
326
+ },
327
+ "webSession": {
328
+ "site": "facebook-group",
329
+ "action": "likes.set",
330
+ "contractVersion": 1,
331
+ "timeoutMs": 60000,
332
+ "maxOutputBytes": 10485760
333
+ }
334
+ },
335
+ "media.publish": {
336
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
337
+ "risk": "R3",
338
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
339
+ "idempotency": "local-at-most-once",
340
+ "dedupeWindowMs": 86400000,
341
+ "input": {
342
+ "properties": {
343
+ "group_id": {
344
+ "type": "string",
345
+ "description": "Exact Facebook Group ID",
346
+ "minLength": 1,
347
+ "maxLength": 80
348
+ },
349
+ "media": {
350
+ "type": "file",
351
+ "description": "Exact media file",
352
+ "maxBytes": 1073741824,
353
+ "mediaTypes": [
354
+ "image/*",
355
+ "video/*"
356
+ ]
357
+ },
358
+ "caption": {
359
+ "type": "string",
360
+ "description": "Optional media caption",
361
+ "minLength": 1,
362
+ "maxLength": 1000
363
+ },
364
+ "audience": {
365
+ "type": "string",
366
+ "description": "Explicit audience",
367
+ "enum": [
368
+ "default"
369
+ ]
370
+ }
371
+ },
372
+ "required": [
373
+ "group_id",
374
+ "media"
375
+ ]
376
+ },
377
+ "webSession": {
378
+ "site": "facebook-group",
379
+ "action": "media.publish",
380
+ "contractVersion": 1,
381
+ "timeoutMs": 60000,
382
+ "maxOutputBytes": 10485760
383
+ }
384
+ },
385
+ "media.read": {
386
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
387
+ "risk": "R1",
388
+ "sideEffect": "none",
389
+ "idempotency": "none",
390
+ "dedupeWindowMs": 0,
391
+ "input": {
392
+ "properties": {
393
+ "group_id": {
394
+ "type": "string",
395
+ "description": "Exact Facebook Group ID",
396
+ "minLength": 1,
397
+ "maxLength": 80
398
+ },
399
+ "post_id": {
400
+ "type": "string",
401
+ "description": "Exact Facebook post ID",
402
+ "minLength": 1,
403
+ "maxLength": 256
404
+ }
405
+ },
406
+ "required": [
407
+ "group_id",
408
+ "post_id"
409
+ ]
410
+ },
411
+ "webSession": {
412
+ "site": "facebook-group",
413
+ "action": "media.read",
414
+ "contractVersion": 1,
415
+ "timeoutMs": 60000,
416
+ "maxOutputBytes": 10485760
417
+ }
418
+ },
419
+ "posts.publish": {
420
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
421
+ "risk": "R3",
422
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
423
+ "idempotency": "local-at-most-once",
424
+ "dedupeWindowMs": 86400000,
425
+ "input": {
426
+ "properties": {
427
+ "group_id": {
428
+ "type": "string",
429
+ "description": "Exact Facebook Group ID",
430
+ "minLength": 1,
431
+ "maxLength": 80
432
+ },
433
+ "body": {
434
+ "type": "string",
435
+ "description": "Post body",
436
+ "minLength": 1,
437
+ "maxLength": 1000
438
+ },
439
+ "attachment": {
440
+ "type": "file",
441
+ "description": "Optional exact post attachment",
442
+ "maxBytes": 1073741824,
443
+ "mediaTypes": [
444
+ "image/*",
445
+ "video/*",
446
+ "image/gif"
447
+ ]
448
+ },
449
+ "audience": {
450
+ "type": "string",
451
+ "description": "Explicit audience",
452
+ "enum": [
453
+ "default"
454
+ ]
455
+ }
456
+ },
457
+ "required": [
458
+ "group_id",
459
+ "body"
460
+ ]
461
+ },
462
+ "webSession": {
463
+ "site": "facebook-group",
464
+ "action": "posts.publish",
465
+ "contractVersion": 1,
466
+ "timeoutMs": 60000,
467
+ "maxOutputBytes": 10485760
468
+ }
469
+ },
470
+ "posts.quote": {
471
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
472
+ "risk": "R3",
473
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
474
+ "idempotency": "local-at-most-once",
475
+ "dedupeWindowMs": 86400000,
476
+ "input": {
477
+ "properties": {
478
+ "group_id": {
479
+ "type": "string",
480
+ "description": "Exact Facebook Group ID",
481
+ "minLength": 1,
482
+ "maxLength": 80
483
+ },
484
+ "post_id": {
485
+ "type": "string",
486
+ "description": "Exact Facebook post ID",
487
+ "minLength": 1,
488
+ "maxLength": 256
489
+ },
490
+ "body": {
491
+ "type": "string",
492
+ "description": "Quote text",
493
+ "minLength": 1,
494
+ "maxLength": 1000
495
+ }
496
+ },
497
+ "required": [
498
+ "group_id",
499
+ "post_id",
500
+ "body"
501
+ ]
502
+ },
503
+ "webSession": {
504
+ "site": "facebook-group",
505
+ "action": "posts.quote",
506
+ "contractVersion": 1,
507
+ "timeoutMs": 60000,
508
+ "maxOutputBytes": 10485760
509
+ }
510
+ },
511
+ "posts.read": {
512
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
513
+ "risk": "R1",
514
+ "sideEffect": "none",
515
+ "idempotency": "none",
516
+ "dedupeWindowMs": 0,
517
+ "input": {
518
+ "properties": {
519
+ "group_id": {
520
+ "type": "string",
521
+ "description": "Exact Facebook Group ID",
522
+ "minLength": 1,
523
+ "maxLength": 80
524
+ },
525
+ "post_id": {
526
+ "type": "string",
527
+ "description": "Exact Facebook post ID",
528
+ "minLength": 1,
529
+ "maxLength": 256
530
+ }
531
+ },
532
+ "required": [
533
+ "group_id",
534
+ "post_id"
535
+ ]
536
+ },
537
+ "webSession": {
538
+ "site": "facebook-group",
539
+ "action": "posts.read",
540
+ "contractVersion": 1,
541
+ "timeoutMs": 60000,
542
+ "maxOutputBytes": 10485760
543
+ }
544
+ },
545
+ "posts.repost": {
546
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
547
+ "risk": "R3",
548
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
549
+ "idempotency": "local-at-most-once",
550
+ "dedupeWindowMs": 86400000,
551
+ "input": {
552
+ "properties": {
553
+ "group_id": {
554
+ "type": "string",
555
+ "description": "Exact Facebook Group ID",
556
+ "minLength": 1,
557
+ "maxLength": 80
558
+ },
559
+ "post_id": {
560
+ "type": "string",
561
+ "description": "Exact Facebook post ID",
562
+ "minLength": 1,
563
+ "maxLength": 256
564
+ },
565
+ "reposted": {
566
+ "type": "boolean",
567
+ "description": "Exact desired repost state"
568
+ }
569
+ },
570
+ "required": [
571
+ "group_id",
572
+ "post_id",
573
+ "reposted"
574
+ ]
575
+ },
576
+ "webSession": {
577
+ "site": "facebook-group",
578
+ "action": "posts.repost",
579
+ "contractVersion": 1,
580
+ "timeoutMs": 60000,
581
+ "maxOutputBytes": 10485760
582
+ }
583
+ },
584
+ "reactions.set": {
585
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
586
+ "risk": "R2",
587
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
588
+ "idempotency": "local-at-most-once",
589
+ "dedupeWindowMs": 86400000,
590
+ "input": {
591
+ "properties": {
592
+ "group_id": {
593
+ "type": "string",
594
+ "description": "Exact Facebook Group ID",
595
+ "minLength": 1,
596
+ "maxLength": 80
597
+ },
598
+ "post_id": {
599
+ "type": "string",
600
+ "description": "Exact Facebook post ID",
601
+ "minLength": 1,
602
+ "maxLength": 256
603
+ },
604
+ "reaction": {
605
+ "type": "string",
606
+ "description": "Exact desired reaction",
607
+ "enum": [
608
+ "none",
609
+ "like",
610
+ "love",
611
+ "care",
612
+ "haha",
613
+ "wow",
614
+ "sad",
615
+ "angry"
616
+ ]
617
+ }
618
+ },
619
+ "required": [
620
+ "group_id",
621
+ "post_id",
622
+ "reaction"
623
+ ]
624
+ },
625
+ "webSession": {
626
+ "site": "facebook-group",
627
+ "action": "reactions.set",
628
+ "contractVersion": 1,
629
+ "timeoutMs": 60000,
630
+ "maxOutputBytes": 10485760
631
+ }
632
+ },
633
+ "replies.create": {
634
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
635
+ "risk": "R3",
636
+ "sideEffect": "Changes remote facebook-group state only after exact preview confirmation and reviewed dispatch.",
637
+ "idempotency": "local-at-most-once",
638
+ "dedupeWindowMs": 86400000,
639
+ "input": {
640
+ "properties": {
641
+ "group_id": {
642
+ "type": "string",
643
+ "description": "Exact Facebook Group ID",
644
+ "minLength": 1,
645
+ "maxLength": 80
646
+ },
647
+ "post_id": {
648
+ "type": "string",
649
+ "description": "Exact Facebook post ID",
650
+ "minLength": 1,
651
+ "maxLength": 256
652
+ },
653
+ "comment_id": {
654
+ "type": "string",
655
+ "description": "Exact parent comment ID",
656
+ "minLength": 1,
657
+ "maxLength": 256
658
+ },
659
+ "body": {
660
+ "type": "string",
661
+ "description": "Reply body",
662
+ "minLength": 1,
663
+ "maxLength": 500
664
+ }
665
+ },
666
+ "required": [
667
+ "group_id",
668
+ "post_id",
669
+ "comment_id",
670
+ "body"
671
+ ]
672
+ },
673
+ "webSession": {
674
+ "site": "facebook-group",
675
+ "action": "replies.create",
676
+ "contractVersion": 1,
677
+ "timeoutMs": 60000,
678
+ "maxOutputBytes": 10485760
679
+ }
680
+ }
681
+ }
682
+ }