@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,623 @@
1
+ {
2
+ "schemaVersion": 4,
3
+ "id": "threads-web",
4
+ "version": "1.1.0",
5
+ "displayName": "Threads (Authenticated Internal API)",
6
+ "surfaceId": "threads",
7
+ "origins": [
8
+ "https://www.threads.com"
9
+ ],
10
+ "browserDomains": [
11
+ "www.threads.com"
12
+ ],
13
+ "operations": {
14
+ "comments.read": {
15
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
16
+ "risk": "R1",
17
+ "sideEffect": "none",
18
+ "idempotency": "none",
19
+ "dedupeWindowMs": 0,
20
+ "input": {
21
+ "properties": {
22
+ "cursor": {
23
+ "type": "string",
24
+ "description": "Opaque cursor returned by the preceding page",
25
+ "minLength": 1,
26
+ "maxLength": 4096
27
+ },
28
+ "limit": {
29
+ "type": "number",
30
+ "description": "Maximum comments",
31
+ "minimum": 1,
32
+ "maximum": 100
33
+ },
34
+ "post_id": {
35
+ "type": "string",
36
+ "description": "Exact Threads post ID",
37
+ "minLength": 1,
38
+ "maxLength": 80
39
+ }
40
+ },
41
+ "required": [
42
+ "post_id"
43
+ ]
44
+ },
45
+ "webSession": {
46
+ "site": "threads",
47
+ "action": "comments.read",
48
+ "contractVersion": 1,
49
+ "timeoutMs": 60000,
50
+ "maxOutputBytes": 8388608
51
+ }
52
+ },
53
+ "content.edit": {
54
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
55
+ "risk": "R3",
56
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
57
+ "idempotency": "local-at-most-once",
58
+ "dedupeWindowMs": 86400000,
59
+ "input": {
60
+ "properties": {
61
+ "body": {
62
+ "type": "string",
63
+ "description": "Replacement text",
64
+ "minLength": 1,
65
+ "maxLength": 450
66
+ },
67
+ "post_id": {
68
+ "type": "string",
69
+ "description": "Exact Threads post ID",
70
+ "minLength": 1,
71
+ "maxLength": 80
72
+ }
73
+ },
74
+ "required": [
75
+ "post_id",
76
+ "body"
77
+ ]
78
+ },
79
+ "webSession": {
80
+ "site": "threads",
81
+ "action": "content.edit",
82
+ "contractVersion": 1,
83
+ "timeoutMs": 60000,
84
+ "maxOutputBytes": 8388608
85
+ }
86
+ },
87
+ "content.save": {
88
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
89
+ "risk": "R2",
90
+ "sideEffect": "Changes remote threads 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 Threads post ID",
98
+ "minLength": 1,
99
+ "maxLength": 80
100
+ },
101
+ "saved": {
102
+ "type": "boolean",
103
+ "description": "Exact desired saved state"
104
+ }
105
+ },
106
+ "required": [
107
+ "post_id",
108
+ "saved"
109
+ ]
110
+ },
111
+ "webSession": {
112
+ "site": "threads",
113
+ "action": "content.save",
114
+ "contractVersion": 1,
115
+ "timeoutMs": 60000,
116
+ "maxOutputBytes": 8388608
117
+ }
118
+ },
119
+ "content.share": {
120
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
121
+ "risk": "R3",
122
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
123
+ "idempotency": "local-at-most-once",
124
+ "dedupeWindowMs": 86400000,
125
+ "input": {
126
+ "properties": {
127
+ "destination": {
128
+ "type": "string",
129
+ "description": "Reviewed share destination",
130
+ "enum": [
131
+ "capture-required"
132
+ ]
133
+ },
134
+ "post_id": {
135
+ "type": "string",
136
+ "description": "Exact Threads post ID",
137
+ "minLength": 1,
138
+ "maxLength": 80
139
+ }
140
+ },
141
+ "required": [
142
+ "post_id",
143
+ "destination"
144
+ ]
145
+ },
146
+ "webSession": {
147
+ "site": "threads",
148
+ "action": "content.share",
149
+ "contractVersion": 1,
150
+ "timeoutMs": 60000,
151
+ "maxOutputBytes": 8388608
152
+ }
153
+ },
154
+ "feeds.read": {
155
+ "description": "Observed contract: one bounded first page from live direct signed-in Threads Relay preload JSON with exact Barcelona viewer binding and no continuation cursor accepted or exposed.",
156
+ "risk": "R1",
157
+ "sideEffect": "none",
158
+ "idempotency": "none",
159
+ "dedupeWindowMs": 0,
160
+ "input": {
161
+ "properties": {
162
+ "feed": {
163
+ "type": "string",
164
+ "description": "Reviewed feed",
165
+ "enum": [
166
+ "for-you"
167
+ ]
168
+ },
169
+ "limit": {
170
+ "type": "number",
171
+ "description": "Maximum results",
172
+ "minimum": 1,
173
+ "maximum": 30
174
+ }
175
+ },
176
+ "required": [
177
+ "feed"
178
+ ]
179
+ },
180
+ "webSession": {
181
+ "site": "threads",
182
+ "action": "feeds.read",
183
+ "contractVersion": 2,
184
+ "timeoutMs": 60000,
185
+ "maxOutputBytes": 8388608
186
+ }
187
+ },
188
+ "likes.set": {
189
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
190
+ "risk": "R2",
191
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
192
+ "idempotency": "local-at-most-once",
193
+ "dedupeWindowMs": 86400000,
194
+ "input": {
195
+ "properties": {
196
+ "liked": {
197
+ "type": "boolean",
198
+ "description": "Exact desired like state"
199
+ },
200
+ "post_id": {
201
+ "type": "string",
202
+ "description": "Exact Threads post ID",
203
+ "minLength": 1,
204
+ "maxLength": 80
205
+ }
206
+ },
207
+ "required": [
208
+ "post_id",
209
+ "liked"
210
+ ]
211
+ },
212
+ "webSession": {
213
+ "site": "threads",
214
+ "action": "likes.set",
215
+ "contractVersion": 1,
216
+ "timeoutMs": 60000,
217
+ "maxOutputBytes": 8388608
218
+ }
219
+ },
220
+ "media.read": {
221
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
222
+ "risk": "R1",
223
+ "sideEffect": "none",
224
+ "idempotency": "none",
225
+ "dedupeWindowMs": 0,
226
+ "input": {
227
+ "properties": {
228
+ "post_id": {
229
+ "type": "string",
230
+ "description": "Exact Threads post ID",
231
+ "minLength": 1,
232
+ "maxLength": 80
233
+ }
234
+ },
235
+ "required": [
236
+ "post_id"
237
+ ]
238
+ },
239
+ "webSession": {
240
+ "site": "threads",
241
+ "action": "media.read",
242
+ "contractVersion": 1,
243
+ "timeoutMs": 60000,
244
+ "maxOutputBytes": 8388608
245
+ }
246
+ },
247
+ "messaging.list": {
248
+ "description": "Capture-required contract reservation: Threads inbox uses Lightspeed/Msys state and may acknowledge or update presence; Relay setup metadata is not message-list authority.",
249
+ "risk": "R1",
250
+ "sideEffect": "none",
251
+ "idempotency": "none",
252
+ "dedupeWindowMs": 0,
253
+ "input": {
254
+ "properties": {
255
+ "cursor": {
256
+ "type": "string",
257
+ "description": "Opaque cursor returned by the preceding page",
258
+ "minLength": 1,
259
+ "maxLength": 4096
260
+ },
261
+ "folder": {
262
+ "type": "string",
263
+ "description": "Reviewed inbox folder",
264
+ "enum": [
265
+ "inbox"
266
+ ]
267
+ },
268
+ "limit": {
269
+ "type": "number",
270
+ "description": "Maximum thread summaries",
271
+ "minimum": 1,
272
+ "maximum": 50
273
+ }
274
+ },
275
+ "required": [
276
+ "folder"
277
+ ]
278
+ },
279
+ "webSession": {
280
+ "site": "threads",
281
+ "action": "messaging.list",
282
+ "contractVersion": 1,
283
+ "timeoutMs": 60000,
284
+ "maxOutputBytes": 8388608
285
+ }
286
+ },
287
+ "messaging.read": {
288
+ "description": "Capture-required contract reservation: Threads conversation reads require protocol-correct Lightspeed/Msys acknowledgement analysis.",
289
+ "risk": "R1",
290
+ "sideEffect": "none",
291
+ "idempotency": "none",
292
+ "dedupeWindowMs": 0,
293
+ "input": {
294
+ "properties": {
295
+ "conversation_id": {
296
+ "type": "string",
297
+ "description": "Exact conversation ID",
298
+ "minLength": 1,
299
+ "maxLength": 512
300
+ },
301
+ "cursor": {
302
+ "type": "string",
303
+ "description": "Opaque cursor returned by the preceding page",
304
+ "minLength": 1,
305
+ "maxLength": 4096
306
+ },
307
+ "limit": {
308
+ "type": "number",
309
+ "description": "Maximum messages",
310
+ "minimum": 1,
311
+ "maximum": 100
312
+ }
313
+ },
314
+ "required": [
315
+ "conversation_id"
316
+ ]
317
+ },
318
+ "webSession": {
319
+ "site": "threads",
320
+ "action": "messaging.read",
321
+ "contractVersion": 1,
322
+ "timeoutMs": 60000,
323
+ "maxOutputBytes": 8388608
324
+ }
325
+ },
326
+ "messaging.send": {
327
+ "description": "Capture-required contract reservation: Threads message send requires protocol-correct Lightspeed/Msys or E2EE implementation.",
328
+ "risk": "R3",
329
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
330
+ "idempotency": "local-at-most-once",
331
+ "dedupeWindowMs": 86400000,
332
+ "input": {
333
+ "properties": {
334
+ "attachment": {
335
+ "type": "file",
336
+ "description": "Optional exact message attachment",
337
+ "maxBytes": 1073741824,
338
+ "mediaTypes": [
339
+ "image/*",
340
+ "video/*"
341
+ ]
342
+ },
343
+ "body": {
344
+ "type": "string",
345
+ "description": "Message body",
346
+ "minLength": 1,
347
+ "maxLength": 1000
348
+ },
349
+ "conversation_id": {
350
+ "type": "string",
351
+ "description": "Exact conversation ID",
352
+ "minLength": 1,
353
+ "maxLength": 512
354
+ }
355
+ },
356
+ "required": [
357
+ "conversation_id",
358
+ "body"
359
+ ]
360
+ },
361
+ "webSession": {
362
+ "site": "threads",
363
+ "action": "messaging.send",
364
+ "contractVersion": 1,
365
+ "timeoutMs": 60000,
366
+ "maxOutputBytes": 8388608
367
+ }
368
+ },
369
+ "posts.publish": {
370
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
371
+ "risk": "R3",
372
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
373
+ "idempotency": "local-at-most-once",
374
+ "dedupeWindowMs": 86400000,
375
+ "input": {
376
+ "properties": {
377
+ "attachment": {
378
+ "type": "file",
379
+ "description": "Optional exact post attachment",
380
+ "maxBytes": 1073741824,
381
+ "mediaTypes": [
382
+ "image/*",
383
+ "video/*",
384
+ "image/gif"
385
+ ]
386
+ },
387
+ "audience": {
388
+ "type": "string",
389
+ "description": "Explicit audience",
390
+ "enum": [
391
+ "default"
392
+ ]
393
+ },
394
+ "body": {
395
+ "type": "string",
396
+ "description": "Post body",
397
+ "minLength": 1,
398
+ "maxLength": 450
399
+ }
400
+ },
401
+ "required": [
402
+ "body"
403
+ ]
404
+ },
405
+ "webSession": {
406
+ "site": "threads",
407
+ "action": "posts.publish",
408
+ "contractVersion": 1,
409
+ "timeoutMs": 60000,
410
+ "maxOutputBytes": 8388608
411
+ }
412
+ },
413
+ "posts.quote": {
414
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
415
+ "risk": "R3",
416
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
417
+ "idempotency": "local-at-most-once",
418
+ "dedupeWindowMs": 86400000,
419
+ "input": {
420
+ "properties": {
421
+ "body": {
422
+ "type": "string",
423
+ "description": "Quote text",
424
+ "minLength": 1,
425
+ "maxLength": 450
426
+ },
427
+ "post_id": {
428
+ "type": "string",
429
+ "description": "Exact Threads post ID",
430
+ "minLength": 1,
431
+ "maxLength": 80
432
+ }
433
+ },
434
+ "required": [
435
+ "post_id",
436
+ "body"
437
+ ]
438
+ },
439
+ "webSession": {
440
+ "site": "threads",
441
+ "action": "posts.quote",
442
+ "contractVersion": 1,
443
+ "timeoutMs": 60000,
444
+ "maxOutputBytes": 8388608
445
+ }
446
+ },
447
+ "posts.read": {
448
+ "description": "Capture-required contract reservation: the exact acknowledgement-free response and target binding still require a reviewed live capture.",
449
+ "risk": "R1",
450
+ "sideEffect": "none",
451
+ "idempotency": "none",
452
+ "dedupeWindowMs": 0,
453
+ "input": {
454
+ "properties": {
455
+ "post_id": {
456
+ "type": "string",
457
+ "description": "Exact Threads post ID",
458
+ "minLength": 1,
459
+ "maxLength": 80
460
+ }
461
+ },
462
+ "required": [
463
+ "post_id"
464
+ ]
465
+ },
466
+ "webSession": {
467
+ "site": "threads",
468
+ "action": "posts.read",
469
+ "contractVersion": 1,
470
+ "timeoutMs": 60000,
471
+ "maxOutputBytes": 8388608
472
+ }
473
+ },
474
+ "posts.repost": {
475
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
476
+ "risk": "R3",
477
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
478
+ "idempotency": "local-at-most-once",
479
+ "dedupeWindowMs": 86400000,
480
+ "input": {
481
+ "properties": {
482
+ "post_id": {
483
+ "type": "string",
484
+ "description": "Exact Threads post ID",
485
+ "minLength": 1,
486
+ "maxLength": 80
487
+ },
488
+ "reposted": {
489
+ "type": "boolean",
490
+ "description": "Exact desired repost state"
491
+ }
492
+ },
493
+ "required": [
494
+ "post_id",
495
+ "reposted"
496
+ ]
497
+ },
498
+ "webSession": {
499
+ "site": "threads",
500
+ "action": "posts.repost",
501
+ "contractVersion": 1,
502
+ "timeoutMs": 60000,
503
+ "maxOutputBytes": 8388608
504
+ }
505
+ },
506
+ "relationships.follow.set": {
507
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
508
+ "risk": "R2",
509
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
510
+ "idempotency": "local-at-most-once",
511
+ "dedupeWindowMs": 86400000,
512
+ "input": {
513
+ "properties": {
514
+ "following": {
515
+ "type": "boolean",
516
+ "description": "Exact desired following state"
517
+ },
518
+ "user_id": {
519
+ "type": "string",
520
+ "description": "Exact target account ID",
521
+ "minLength": 1,
522
+ "maxLength": 80
523
+ }
524
+ },
525
+ "required": [
526
+ "user_id",
527
+ "following"
528
+ ]
529
+ },
530
+ "webSession": {
531
+ "site": "threads",
532
+ "action": "relationships.follow.set",
533
+ "contractVersion": 1,
534
+ "timeoutMs": 60000,
535
+ "maxOutputBytes": 8388608
536
+ }
537
+ },
538
+ "replies.create": {
539
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
540
+ "risk": "R3",
541
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
542
+ "idempotency": "local-at-most-once",
543
+ "dedupeWindowMs": 86400000,
544
+ "input": {
545
+ "properties": {
546
+ "attachment": {
547
+ "type": "file",
548
+ "description": "Optional exact reply attachment",
549
+ "maxBytes": 1073741824,
550
+ "mediaTypes": [
551
+ "image/*",
552
+ "video/*",
553
+ "image/gif"
554
+ ]
555
+ },
556
+ "body": {
557
+ "type": "string",
558
+ "description": "Reply body",
559
+ "minLength": 1,
560
+ "maxLength": 450
561
+ },
562
+ "comment_id": {
563
+ "type": "string",
564
+ "description": "Exact parent comment ID",
565
+ "minLength": 1,
566
+ "maxLength": 256
567
+ },
568
+ "post_id": {
569
+ "type": "string",
570
+ "description": "Exact Threads post ID",
571
+ "minLength": 1,
572
+ "maxLength": 80
573
+ }
574
+ },
575
+ "required": [
576
+ "post_id",
577
+ "comment_id",
578
+ "body"
579
+ ]
580
+ },
581
+ "webSession": {
582
+ "site": "threads",
583
+ "action": "replies.create",
584
+ "contractVersion": 1,
585
+ "timeoutMs": 60000,
586
+ "maxOutputBytes": 8388608
587
+ }
588
+ },
589
+ "threads.publish": {
590
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
591
+ "risk": "R3",
592
+ "sideEffect": "Changes remote threads state only after exact preview confirmation and reviewed dispatch.",
593
+ "idempotency": "local-at-most-once",
594
+ "dedupeWindowMs": 86400000,
595
+ "input": {
596
+ "properties": {
597
+ "items": {
598
+ "type": "array",
599
+ "description": "Ordered root and self-replies",
600
+ "items": {
601
+ "type": "string",
602
+ "description": "One thread item",
603
+ "minLength": 1,
604
+ "maxLength": 450
605
+ },
606
+ "minItems": 1,
607
+ "maxItems": 25
608
+ }
609
+ },
610
+ "required": [
611
+ "items"
612
+ ]
613
+ },
614
+ "webSession": {
615
+ "site": "threads",
616
+ "action": "threads.publish",
617
+ "contractVersion": 1,
618
+ "timeoutMs": 60000,
619
+ "maxOutputBytes": 8388608
620
+ }
621
+ }
622
+ }
623
+ }