@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,719 @@
1
+ {
2
+ "schemaVersion": 4,
3
+ "id": "instagram-web",
4
+ "version": "1.7.0",
5
+ "displayName": "Instagram (Authenticated Web API)",
6
+ "surfaceId": "instagram",
7
+ "origins": [
8
+ "https://www.instagram.com"
9
+ ],
10
+ "browserDomains": [
11
+ "www.instagram.com"
12
+ ],
13
+ "operations": {
14
+ "contacts.list": {
15
+ "description": "List unique non-viewer participants from one bounded first page of the reviewed Instagram Direct inbox summary, with explicit contact-set and message-statistics incompleteness.",
16
+ "risk": "R1",
17
+ "sideEffect": "none",
18
+ "idempotency": "none",
19
+ "dedupeWindowMs": 0,
20
+ "input": {
21
+ "properties": {
22
+ "thread_limit": {
23
+ "type": "number",
24
+ "description": "Maximum first-page inbox threads inspected for participants",
25
+ "minimum": 1,
26
+ "maximum": 50
27
+ },
28
+ "contact_limit": {
29
+ "type": "number",
30
+ "description": "Maximum unique participant contacts projected",
31
+ "minimum": 1,
32
+ "maximum": 100
33
+ }
34
+ },
35
+ "required": []
36
+ },
37
+ "webSession": {
38
+ "site": "instagram",
39
+ "action": "contacts.list",
40
+ "contractVersion": 1,
41
+ "timeoutMs": 60000,
42
+ "maxOutputBytes": 8388608
43
+ }
44
+ },
45
+ "comments.create": {
46
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
47
+ "risk": "R3",
48
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
49
+ "idempotency": "local-at-most-once",
50
+ "dedupeWindowMs": 86400000,
51
+ "input": {
52
+ "properties": {
53
+ "media_id": {
54
+ "type": "string",
55
+ "description": "Exact Instagram media ID",
56
+ "minLength": 1,
57
+ "maxLength": 80
58
+ },
59
+ "body": {
60
+ "type": "string",
61
+ "description": "Comment body",
62
+ "minLength": 1,
63
+ "maxLength": 500
64
+ }
65
+ },
66
+ "required": [
67
+ "media_id",
68
+ "body"
69
+ ]
70
+ },
71
+ "webSession": {
72
+ "site": "instagram",
73
+ "action": "comments.create",
74
+ "contractVersion": 1,
75
+ "timeoutMs": 60000,
76
+ "maxOutputBytes": 8388608
77
+ }
78
+ },
79
+ "comments.read": {
80
+ "description": "Observed contract: one bounded first page from live direct /api/v1/media/{id}/comments JSON with caption/root binding and no continuation cursor accepted or exposed.",
81
+ "risk": "R1",
82
+ "sideEffect": "none",
83
+ "idempotency": "none",
84
+ "dedupeWindowMs": 0,
85
+ "input": {
86
+ "properties": {
87
+ "media_id": {
88
+ "type": "string",
89
+ "description": "Exact Instagram media ID",
90
+ "minLength": 1,
91
+ "maxLength": 80
92
+ },
93
+ "limit": {
94
+ "type": "number",
95
+ "description": "Maximum comments",
96
+ "minimum": 1,
97
+ "maximum": 100
98
+ }
99
+ },
100
+ "required": [
101
+ "media_id"
102
+ ]
103
+ },
104
+ "webSession": {
105
+ "site": "instagram",
106
+ "action": "comments.read",
107
+ "contractVersion": 2,
108
+ "timeoutMs": 60000,
109
+ "maxOutputBytes": 8388608
110
+ }
111
+ },
112
+ "content.edit": {
113
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
114
+ "risk": "R3",
115
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
116
+ "idempotency": "local-at-most-once",
117
+ "dedupeWindowMs": 86400000,
118
+ "input": {
119
+ "properties": {
120
+ "media_id": {
121
+ "type": "string",
122
+ "description": "Exact Instagram media ID",
123
+ "minLength": 1,
124
+ "maxLength": 80
125
+ },
126
+ "body": {
127
+ "type": "string",
128
+ "description": "Replacement text",
129
+ "minLength": 1,
130
+ "maxLength": 1000
131
+ }
132
+ },
133
+ "required": [
134
+ "media_id",
135
+ "body"
136
+ ]
137
+ },
138
+ "webSession": {
139
+ "site": "instagram",
140
+ "action": "content.edit",
141
+ "contractVersion": 1,
142
+ "timeoutMs": 60000,
143
+ "maxOutputBytes": 8388608
144
+ }
145
+ },
146
+ "content.delete": {
147
+ "description": "Observed contract: remove one exact current-account Instagram video after two exact media-info pre-reads bind its full ID, shortcode, actor, expected caption, and video kind; verify the did_delete response and exact authenticated soft-200 removal marker.",
148
+ "risk": "R3",
149
+ "sideEffect": "Removes the exact confirmed Instagram video from the authenticated account's profile and public permalink; no physical-erasure guarantee is made.",
150
+ "idempotency": "local-at-most-once",
151
+ "dedupeWindowMs": 2592000000,
152
+ "input": {
153
+ "properties": {
154
+ "media_id": {
155
+ "type": "string",
156
+ "description": "Exact full Instagram media ID (<media-pk>_<viewer-id>)",
157
+ "minLength": 1,
158
+ "maxLength": 65
159
+ },
160
+ "expected_caption": {
161
+ "type": "string",
162
+ "description": "Exact current caption used for pre-delete confirmation",
163
+ "minLength": 1,
164
+ "maxLength": 1000
165
+ },
166
+ "expected_media_kind": {
167
+ "type": "string",
168
+ "description": "Exact current media kind used for pre-delete confirmation",
169
+ "enum": [
170
+ "video"
171
+ ]
172
+ }
173
+ },
174
+ "required": [
175
+ "media_id",
176
+ "expected_caption",
177
+ "expected_media_kind"
178
+ ]
179
+ },
180
+ "webSession": {
181
+ "site": "instagram",
182
+ "action": "content.delete",
183
+ "contractVersion": 2,
184
+ "timeoutMs": 60000,
185
+ "maxOutputBytes": 8388608
186
+ }
187
+ },
188
+ "content.save": {
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 instagram state only after exact preview confirmation and reviewed dispatch.",
192
+ "idempotency": "local-at-most-once",
193
+ "dedupeWindowMs": 86400000,
194
+ "input": {
195
+ "properties": {
196
+ "media_id": {
197
+ "type": "string",
198
+ "description": "Exact Instagram media ID",
199
+ "minLength": 1,
200
+ "maxLength": 80
201
+ },
202
+ "saved": {
203
+ "type": "boolean",
204
+ "description": "Exact desired saved state"
205
+ }
206
+ },
207
+ "required": [
208
+ "media_id",
209
+ "saved"
210
+ ]
211
+ },
212
+ "webSession": {
213
+ "site": "instagram",
214
+ "action": "content.save",
215
+ "contractVersion": 1,
216
+ "timeoutMs": 60000,
217
+ "maxOutputBytes": 8388608
218
+ }
219
+ },
220
+ "content.share": {
221
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
222
+ "risk": "R3",
223
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
224
+ "idempotency": "local-at-most-once",
225
+ "dedupeWindowMs": 86400000,
226
+ "input": {
227
+ "properties": {
228
+ "media_id": {
229
+ "type": "string",
230
+ "description": "Exact Instagram media ID",
231
+ "minLength": 1,
232
+ "maxLength": 80
233
+ },
234
+ "destination": {
235
+ "type": "string",
236
+ "description": "Reviewed share destination",
237
+ "enum": [
238
+ "capture-required"
239
+ ]
240
+ }
241
+ },
242
+ "required": [
243
+ "media_id",
244
+ "destination"
245
+ ]
246
+ },
247
+ "webSession": {
248
+ "site": "instagram",
249
+ "action": "content.share",
250
+ "contractVersion": 1,
251
+ "timeoutMs": 60000,
252
+ "maxOutputBytes": 8388608
253
+ }
254
+ },
255
+ "feeds.read": {
256
+ "description": "Observed contract: one bounded first page from live direct /api/v1/feed/timeline JSON with viewer binding and no continuation cursor accepted or exposed.",
257
+ "risk": "R1",
258
+ "sideEffect": "none",
259
+ "idempotency": "none",
260
+ "dedupeWindowMs": 0,
261
+ "input": {
262
+ "properties": {
263
+ "feed": {
264
+ "type": "string",
265
+ "description": "Reviewed feed",
266
+ "enum": [
267
+ "home"
268
+ ]
269
+ },
270
+ "limit": {
271
+ "type": "number",
272
+ "description": "Maximum results",
273
+ "minimum": 1,
274
+ "maximum": 30
275
+ }
276
+ },
277
+ "required": [
278
+ "feed"
279
+ ]
280
+ },
281
+ "webSession": {
282
+ "site": "instagram",
283
+ "action": "feeds.read",
284
+ "contractVersion": 2,
285
+ "timeoutMs": 60000,
286
+ "maxOutputBytes": 8388608
287
+ }
288
+ },
289
+ "likes.set": {
290
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
291
+ "risk": "R2",
292
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
293
+ "idempotency": "local-at-most-once",
294
+ "dedupeWindowMs": 86400000,
295
+ "input": {
296
+ "properties": {
297
+ "media_id": {
298
+ "type": "string",
299
+ "description": "Exact Instagram media ID",
300
+ "minLength": 1,
301
+ "maxLength": 80
302
+ },
303
+ "liked": {
304
+ "type": "boolean",
305
+ "description": "Exact desired like state"
306
+ }
307
+ },
308
+ "required": [
309
+ "media_id",
310
+ "liked"
311
+ ]
312
+ },
313
+ "webSession": {
314
+ "site": "instagram",
315
+ "action": "likes.set",
316
+ "contractVersion": 1,
317
+ "timeoutMs": 60000,
318
+ "maxOutputBytes": 8388608
319
+ }
320
+ },
321
+ "media.publish": {
322
+ "description": "Capture-required contract reservation: bind one exact stable MP4 plus one exact plan-bound JPEG cover for the captured video-then-cover uploads, but do not dispatch until the observed first configure 202 can be reconciled without repeating the configure POST.",
323
+ "risk": "R3",
324
+ "sideEffect": "Publishes one exact MP4 video with the confirmed caption to the authenticated Instagram account.",
325
+ "idempotency": "local-at-most-once",
326
+ "dedupeWindowMs": 86400000,
327
+ "input": {
328
+ "properties": {
329
+ "media": {
330
+ "type": "file",
331
+ "description": "Exact plan-bound MP4 video",
332
+ "maxBytes": 134217728,
333
+ "mediaTypes": [
334
+ "video/mp4"
335
+ ]
336
+ },
337
+ "thumbnail": {
338
+ "type": "file",
339
+ "description": "Exact plan-bound JPEG thumbnail",
340
+ "maxBytes": 8388608,
341
+ "mediaTypes": [
342
+ "image/jpeg"
343
+ ]
344
+ },
345
+ "caption": {
346
+ "type": "string",
347
+ "description": "Exact non-empty video caption",
348
+ "minLength": 1,
349
+ "maxLength": 1000
350
+ },
351
+ "audience": {
352
+ "type": "string",
353
+ "description": "Explicit audience",
354
+ "enum": [
355
+ "default"
356
+ ]
357
+ }
358
+ },
359
+ "required": [
360
+ "media",
361
+ "thumbnail",
362
+ "caption",
363
+ "audience"
364
+ ]
365
+ },
366
+ "webSession": {
367
+ "site": "instagram",
368
+ "action": "media.publish",
369
+ "contractVersion": 3,
370
+ "timeoutMs": 600000,
371
+ "maxOutputBytes": 8388608
372
+ }
373
+ },
374
+ "media.read": {
375
+ "description": "Observed contract: the target-bound media-info response supplies bounded media metadata without copying credentials.",
376
+ "risk": "R1",
377
+ "sideEffect": "none",
378
+ "idempotency": "none",
379
+ "dedupeWindowMs": 0,
380
+ "input": {
381
+ "properties": {
382
+ "media_id": {
383
+ "type": "string",
384
+ "description": "Exact Instagram media ID",
385
+ "minLength": 1,
386
+ "maxLength": 80
387
+ }
388
+ },
389
+ "required": [
390
+ "media_id"
391
+ ]
392
+ },
393
+ "webSession": {
394
+ "site": "instagram",
395
+ "action": "media.read",
396
+ "contractVersion": 1,
397
+ "timeoutMs": 60000,
398
+ "maxOutputBytes": 8388608
399
+ }
400
+ },
401
+ "messaging.list": {
402
+ "description": "Observed contract: one bounded first page from the live direct_v2 inbox summary GET, with no continuation cursor accepted or exposed and no seen, ack, or presence endpoint issued.",
403
+ "risk": "R1",
404
+ "sideEffect": "none",
405
+ "idempotency": "none",
406
+ "dedupeWindowMs": 0,
407
+ "input": {
408
+ "properties": {
409
+ "folder": {
410
+ "type": "string",
411
+ "description": "Reviewed inbox folder",
412
+ "enum": [
413
+ "inbox"
414
+ ]
415
+ },
416
+ "limit": {
417
+ "type": "number",
418
+ "description": "Maximum thread summaries",
419
+ "minimum": 1,
420
+ "maximum": 50
421
+ }
422
+ },
423
+ "required": [
424
+ "folder"
425
+ ]
426
+ },
427
+ "webSession": {
428
+ "site": "instagram",
429
+ "action": "messaging.list",
430
+ "contractVersion": 2,
431
+ "timeoutMs": 60000,
432
+ "maxOutputBytes": 8388608
433
+ }
434
+ },
435
+ "messaging.read": {
436
+ "description": "Capture-required contract reservation: Direct thread reads require a reviewed no-seen/no-presence capture; listing evidence does not authorize reading messages.",
437
+ "risk": "R1",
438
+ "sideEffect": "none",
439
+ "idempotency": "none",
440
+ "dedupeWindowMs": 0,
441
+ "input": {
442
+ "properties": {
443
+ "conversation_id": {
444
+ "type": "string",
445
+ "description": "Exact conversation ID",
446
+ "minLength": 1,
447
+ "maxLength": 512
448
+ },
449
+ "cursor": {
450
+ "type": "string",
451
+ "description": "Opaque cursor returned by the preceding page",
452
+ "minLength": 1,
453
+ "maxLength": 4096
454
+ },
455
+ "limit": {
456
+ "type": "number",
457
+ "description": "Maximum messages",
458
+ "minimum": 1,
459
+ "maximum": 100
460
+ }
461
+ },
462
+ "required": [
463
+ "conversation_id"
464
+ ]
465
+ },
466
+ "webSession": {
467
+ "site": "instagram",
468
+ "action": "messaging.read",
469
+ "contractVersion": 1,
470
+ "timeoutMs": 60000,
471
+ "maxOutputBytes": 8388608
472
+ }
473
+ },
474
+ "messaging.send": {
475
+ "description": "Capture-required contract reservation: Instagram messaging is split across Direct, LS/Msys, and E2EE transports; plaintext replay is prohibited.",
476
+ "risk": "R3",
477
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
478
+ "idempotency": "local-at-most-once",
479
+ "dedupeWindowMs": 86400000,
480
+ "input": {
481
+ "properties": {
482
+ "conversation_id": {
483
+ "type": "string",
484
+ "description": "Exact conversation ID",
485
+ "minLength": 1,
486
+ "maxLength": 512
487
+ },
488
+ "body": {
489
+ "type": "string",
490
+ "description": "Message body",
491
+ "minLength": 1,
492
+ "maxLength": 1000
493
+ },
494
+ "attachment": {
495
+ "type": "file",
496
+ "description": "Optional exact message attachment",
497
+ "maxBytes": 1073741824,
498
+ "mediaTypes": [
499
+ "image/*",
500
+ "video/*"
501
+ ]
502
+ }
503
+ },
504
+ "required": [
505
+ "conversation_id",
506
+ "body"
507
+ ]
508
+ },
509
+ "webSession": {
510
+ "site": "instagram",
511
+ "action": "messaging.send",
512
+ "contractVersion": 1,
513
+ "timeoutMs": 60000,
514
+ "maxOutputBytes": 8388608
515
+ }
516
+ },
517
+ "posts.read": {
518
+ "description": "Observed contract: live direct /api/v1/media/{id}/info JSON with exact returned-media binding.",
519
+ "risk": "R1",
520
+ "sideEffect": "none",
521
+ "idempotency": "none",
522
+ "dedupeWindowMs": 0,
523
+ "input": {
524
+ "properties": {
525
+ "media_id": {
526
+ "type": "string",
527
+ "description": "Exact Instagram media ID",
528
+ "minLength": 1,
529
+ "maxLength": 80
530
+ }
531
+ },
532
+ "required": [
533
+ "media_id"
534
+ ]
535
+ },
536
+ "webSession": {
537
+ "site": "instagram",
538
+ "action": "posts.read",
539
+ "contractVersion": 1,
540
+ "timeoutMs": 60000,
541
+ "maxOutputBytes": 8388608
542
+ }
543
+ },
544
+ "posts.repost": {
545
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
546
+ "risk": "R3",
547
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
548
+ "idempotency": "local-at-most-once",
549
+ "dedupeWindowMs": 86400000,
550
+ "input": {
551
+ "properties": {
552
+ "media_id": {
553
+ "type": "string",
554
+ "description": "Exact Instagram media ID",
555
+ "minLength": 1,
556
+ "maxLength": 80
557
+ },
558
+ "reposted": {
559
+ "type": "boolean",
560
+ "description": "Exact desired repost state"
561
+ }
562
+ },
563
+ "required": [
564
+ "media_id",
565
+ "reposted"
566
+ ]
567
+ },
568
+ "webSession": {
569
+ "site": "instagram",
570
+ "action": "posts.repost",
571
+ "contractVersion": 1,
572
+ "timeoutMs": 60000,
573
+ "maxOutputBytes": 8388608
574
+ }
575
+ },
576
+ "profiles.read": {
577
+ "description": "Observed contract: read exact follower, following, and post counts from one target-bound signed-in Instagram profile response.",
578
+ "risk": "R1",
579
+ "sideEffect": "none",
580
+ "idempotency": "none",
581
+ "dedupeWindowMs": 0,
582
+ "input": {
583
+ "properties": {
584
+ "profile": {
585
+ "type": "string",
586
+ "description": "Canonical lowercase Instagram handle bound to the signed-in profile",
587
+ "minLength": 1,
588
+ "maxLength": 30
589
+ }
590
+ },
591
+ "required": [
592
+ "profile"
593
+ ]
594
+ },
595
+ "webSession": {
596
+ "site": "instagram",
597
+ "action": "profiles.read",
598
+ "contractVersion": 1,
599
+ "timeoutMs": 60000,
600
+ "maxOutputBytes": 8388608
601
+ }
602
+ },
603
+ "reactions.set": {
604
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
605
+ "risk": "R2",
606
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
607
+ "idempotency": "local-at-most-once",
608
+ "dedupeWindowMs": 86400000,
609
+ "input": {
610
+ "properties": {
611
+ "media_id": {
612
+ "type": "string",
613
+ "description": "Exact Instagram media ID",
614
+ "minLength": 1,
615
+ "maxLength": 80
616
+ },
617
+ "reaction": {
618
+ "type": "string",
619
+ "description": "Exact desired reaction",
620
+ "enum": [
621
+ "none",
622
+ "like",
623
+ "love",
624
+ "care",
625
+ "haha",
626
+ "wow",
627
+ "sad",
628
+ "angry"
629
+ ]
630
+ }
631
+ },
632
+ "required": [
633
+ "media_id",
634
+ "reaction"
635
+ ]
636
+ },
637
+ "webSession": {
638
+ "site": "instagram",
639
+ "action": "reactions.set",
640
+ "contractVersion": 1,
641
+ "timeoutMs": 60000,
642
+ "maxOutputBytes": 8388608
643
+ }
644
+ },
645
+ "relationships.follow.set": {
646
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
647
+ "risk": "R2",
648
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
649
+ "idempotency": "local-at-most-once",
650
+ "dedupeWindowMs": 86400000,
651
+ "input": {
652
+ "properties": {
653
+ "user_id": {
654
+ "type": "string",
655
+ "description": "Exact target account ID",
656
+ "minLength": 1,
657
+ "maxLength": 80
658
+ },
659
+ "following": {
660
+ "type": "boolean",
661
+ "description": "Exact desired following state"
662
+ }
663
+ },
664
+ "required": [
665
+ "user_id",
666
+ "following"
667
+ ]
668
+ },
669
+ "webSession": {
670
+ "site": "instagram",
671
+ "action": "relationships.follow.set",
672
+ "contractVersion": 1,
673
+ "timeoutMs": 60000,
674
+ "maxOutputBytes": 8388608
675
+ }
676
+ },
677
+ "replies.create": {
678
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
679
+ "risk": "R3",
680
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
681
+ "idempotency": "local-at-most-once",
682
+ "dedupeWindowMs": 86400000,
683
+ "input": {
684
+ "properties": {
685
+ "media_id": {
686
+ "type": "string",
687
+ "description": "Exact Instagram media ID",
688
+ "minLength": 1,
689
+ "maxLength": 80
690
+ },
691
+ "comment_id": {
692
+ "type": "string",
693
+ "description": "Exact parent comment ID",
694
+ "minLength": 1,
695
+ "maxLength": 256
696
+ },
697
+ "body": {
698
+ "type": "string",
699
+ "description": "Reply body",
700
+ "minLength": 1,
701
+ "maxLength": 500
702
+ }
703
+ },
704
+ "required": [
705
+ "media_id",
706
+ "comment_id",
707
+ "body"
708
+ ]
709
+ },
710
+ "webSession": {
711
+ "site": "instagram",
712
+ "action": "replies.create",
713
+ "contractVersion": 1,
714
+ "timeoutMs": 60000,
715
+ "maxOutputBytes": 8388608
716
+ }
717
+ }
718
+ }
719
+ }