@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,671 @@
1
+ {
2
+ "schemaVersion": 4,
3
+ "id": "instagram-web",
4
+ "version": "1.3.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.save": {
147
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
148
+ "risk": "R2",
149
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
150
+ "idempotency": "local-at-most-once",
151
+ "dedupeWindowMs": 86400000,
152
+ "input": {
153
+ "properties": {
154
+ "media_id": {
155
+ "type": "string",
156
+ "description": "Exact Instagram media ID",
157
+ "minLength": 1,
158
+ "maxLength": 80
159
+ },
160
+ "saved": {
161
+ "type": "boolean",
162
+ "description": "Exact desired saved state"
163
+ }
164
+ },
165
+ "required": [
166
+ "media_id",
167
+ "saved"
168
+ ]
169
+ },
170
+ "webSession": {
171
+ "site": "instagram",
172
+ "action": "content.save",
173
+ "contractVersion": 1,
174
+ "timeoutMs": 60000,
175
+ "maxOutputBytes": 8388608
176
+ }
177
+ },
178
+ "content.share": {
179
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
180
+ "risk": "R3",
181
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
182
+ "idempotency": "local-at-most-once",
183
+ "dedupeWindowMs": 86400000,
184
+ "input": {
185
+ "properties": {
186
+ "media_id": {
187
+ "type": "string",
188
+ "description": "Exact Instagram media ID",
189
+ "minLength": 1,
190
+ "maxLength": 80
191
+ },
192
+ "destination": {
193
+ "type": "string",
194
+ "description": "Reviewed share destination",
195
+ "enum": [
196
+ "capture-required"
197
+ ]
198
+ }
199
+ },
200
+ "required": [
201
+ "media_id",
202
+ "destination"
203
+ ]
204
+ },
205
+ "webSession": {
206
+ "site": "instagram",
207
+ "action": "content.share",
208
+ "contractVersion": 1,
209
+ "timeoutMs": 60000,
210
+ "maxOutputBytes": 8388608
211
+ }
212
+ },
213
+ "feeds.read": {
214
+ "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.",
215
+ "risk": "R1",
216
+ "sideEffect": "none",
217
+ "idempotency": "none",
218
+ "dedupeWindowMs": 0,
219
+ "input": {
220
+ "properties": {
221
+ "feed": {
222
+ "type": "string",
223
+ "description": "Reviewed feed",
224
+ "enum": [
225
+ "home"
226
+ ]
227
+ },
228
+ "limit": {
229
+ "type": "number",
230
+ "description": "Maximum results",
231
+ "minimum": 1,
232
+ "maximum": 30
233
+ }
234
+ },
235
+ "required": [
236
+ "feed"
237
+ ]
238
+ },
239
+ "webSession": {
240
+ "site": "instagram",
241
+ "action": "feeds.read",
242
+ "contractVersion": 2,
243
+ "timeoutMs": 60000,
244
+ "maxOutputBytes": 8388608
245
+ }
246
+ },
247
+ "likes.set": {
248
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
249
+ "risk": "R2",
250
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
251
+ "idempotency": "local-at-most-once",
252
+ "dedupeWindowMs": 86400000,
253
+ "input": {
254
+ "properties": {
255
+ "media_id": {
256
+ "type": "string",
257
+ "description": "Exact Instagram media ID",
258
+ "minLength": 1,
259
+ "maxLength": 80
260
+ },
261
+ "liked": {
262
+ "type": "boolean",
263
+ "description": "Exact desired like state"
264
+ }
265
+ },
266
+ "required": [
267
+ "media_id",
268
+ "liked"
269
+ ]
270
+ },
271
+ "webSession": {
272
+ "site": "instagram",
273
+ "action": "likes.set",
274
+ "contractVersion": 1,
275
+ "timeoutMs": 60000,
276
+ "maxOutputBytes": 8388608
277
+ }
278
+ },
279
+ "media.publish": {
280
+ "description": "Capture-required contract reservation: publish one exact JPEG, PNG, WebP, MP4, or QuickTime item only after actor, audience, attachment transport, processing, dispatch response, and independent publication readback are reviewed with an authorized fixture.",
281
+ "risk": "R3",
282
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
283
+ "idempotency": "local-at-most-once",
284
+ "dedupeWindowMs": 86400000,
285
+ "input": {
286
+ "properties": {
287
+ "media": {
288
+ "type": "file",
289
+ "description": "Exact media file",
290
+ "maxBytes": 1073741824,
291
+ "mediaTypes": [
292
+ "image/jpeg",
293
+ "image/png",
294
+ "image/webp",
295
+ "video/mp4",
296
+ "video/quicktime"
297
+ ]
298
+ },
299
+ "caption": {
300
+ "type": "string",
301
+ "description": "Optional media caption",
302
+ "minLength": 1,
303
+ "maxLength": 1000
304
+ },
305
+ "audience": {
306
+ "type": "string",
307
+ "description": "Explicit audience",
308
+ "enum": [
309
+ "default"
310
+ ]
311
+ }
312
+ },
313
+ "required": [
314
+ "media",
315
+ "audience"
316
+ ]
317
+ },
318
+ "webSession": {
319
+ "site": "instagram",
320
+ "action": "media.publish",
321
+ "contractVersion": 1,
322
+ "timeoutMs": 600000,
323
+ "maxOutputBytes": 8388608
324
+ }
325
+ },
326
+ "media.read": {
327
+ "description": "Observed contract: the target-bound media-info response supplies bounded media metadata without copying credentials.",
328
+ "risk": "R1",
329
+ "sideEffect": "none",
330
+ "idempotency": "none",
331
+ "dedupeWindowMs": 0,
332
+ "input": {
333
+ "properties": {
334
+ "media_id": {
335
+ "type": "string",
336
+ "description": "Exact Instagram media ID",
337
+ "minLength": 1,
338
+ "maxLength": 80
339
+ }
340
+ },
341
+ "required": [
342
+ "media_id"
343
+ ]
344
+ },
345
+ "webSession": {
346
+ "site": "instagram",
347
+ "action": "media.read",
348
+ "contractVersion": 1,
349
+ "timeoutMs": 60000,
350
+ "maxOutputBytes": 8388608
351
+ }
352
+ },
353
+ "messaging.list": {
354
+ "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.",
355
+ "risk": "R1",
356
+ "sideEffect": "none",
357
+ "idempotency": "none",
358
+ "dedupeWindowMs": 0,
359
+ "input": {
360
+ "properties": {
361
+ "folder": {
362
+ "type": "string",
363
+ "description": "Reviewed inbox folder",
364
+ "enum": [
365
+ "inbox"
366
+ ]
367
+ },
368
+ "limit": {
369
+ "type": "number",
370
+ "description": "Maximum thread summaries",
371
+ "minimum": 1,
372
+ "maximum": 50
373
+ }
374
+ },
375
+ "required": [
376
+ "folder"
377
+ ]
378
+ },
379
+ "webSession": {
380
+ "site": "instagram",
381
+ "action": "messaging.list",
382
+ "contractVersion": 2,
383
+ "timeoutMs": 60000,
384
+ "maxOutputBytes": 8388608
385
+ }
386
+ },
387
+ "messaging.read": {
388
+ "description": "Capture-required contract reservation: Direct thread reads require a reviewed no-seen/no-presence capture; listing evidence does not authorize reading messages.",
389
+ "risk": "R1",
390
+ "sideEffect": "none",
391
+ "idempotency": "none",
392
+ "dedupeWindowMs": 0,
393
+ "input": {
394
+ "properties": {
395
+ "conversation_id": {
396
+ "type": "string",
397
+ "description": "Exact conversation ID",
398
+ "minLength": 1,
399
+ "maxLength": 512
400
+ },
401
+ "cursor": {
402
+ "type": "string",
403
+ "description": "Opaque cursor returned by the preceding page",
404
+ "minLength": 1,
405
+ "maxLength": 4096
406
+ },
407
+ "limit": {
408
+ "type": "number",
409
+ "description": "Maximum messages",
410
+ "minimum": 1,
411
+ "maximum": 100
412
+ }
413
+ },
414
+ "required": [
415
+ "conversation_id"
416
+ ]
417
+ },
418
+ "webSession": {
419
+ "site": "instagram",
420
+ "action": "messaging.read",
421
+ "contractVersion": 1,
422
+ "timeoutMs": 60000,
423
+ "maxOutputBytes": 8388608
424
+ }
425
+ },
426
+ "messaging.send": {
427
+ "description": "Capture-required contract reservation: Instagram messaging is split across Direct, LS/Msys, and E2EE transports; plaintext replay is prohibited.",
428
+ "risk": "R3",
429
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
430
+ "idempotency": "local-at-most-once",
431
+ "dedupeWindowMs": 86400000,
432
+ "input": {
433
+ "properties": {
434
+ "conversation_id": {
435
+ "type": "string",
436
+ "description": "Exact conversation ID",
437
+ "minLength": 1,
438
+ "maxLength": 512
439
+ },
440
+ "body": {
441
+ "type": "string",
442
+ "description": "Message body",
443
+ "minLength": 1,
444
+ "maxLength": 1000
445
+ },
446
+ "attachment": {
447
+ "type": "file",
448
+ "description": "Optional exact message attachment",
449
+ "maxBytes": 1073741824,
450
+ "mediaTypes": [
451
+ "image/*",
452
+ "video/*"
453
+ ]
454
+ }
455
+ },
456
+ "required": [
457
+ "conversation_id",
458
+ "body"
459
+ ]
460
+ },
461
+ "webSession": {
462
+ "site": "instagram",
463
+ "action": "messaging.send",
464
+ "contractVersion": 1,
465
+ "timeoutMs": 60000,
466
+ "maxOutputBytes": 8388608
467
+ }
468
+ },
469
+ "posts.read": {
470
+ "description": "Observed contract: live direct /api/v1/media/{id}/info JSON with exact returned-media binding.",
471
+ "risk": "R1",
472
+ "sideEffect": "none",
473
+ "idempotency": "none",
474
+ "dedupeWindowMs": 0,
475
+ "input": {
476
+ "properties": {
477
+ "media_id": {
478
+ "type": "string",
479
+ "description": "Exact Instagram media ID",
480
+ "minLength": 1,
481
+ "maxLength": 80
482
+ }
483
+ },
484
+ "required": [
485
+ "media_id"
486
+ ]
487
+ },
488
+ "webSession": {
489
+ "site": "instagram",
490
+ "action": "posts.read",
491
+ "contractVersion": 1,
492
+ "timeoutMs": 60000,
493
+ "maxOutputBytes": 8388608
494
+ }
495
+ },
496
+ "posts.repost": {
497
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
498
+ "risk": "R3",
499
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
500
+ "idempotency": "local-at-most-once",
501
+ "dedupeWindowMs": 86400000,
502
+ "input": {
503
+ "properties": {
504
+ "media_id": {
505
+ "type": "string",
506
+ "description": "Exact Instagram media ID",
507
+ "minLength": 1,
508
+ "maxLength": 80
509
+ },
510
+ "reposted": {
511
+ "type": "boolean",
512
+ "description": "Exact desired repost state"
513
+ }
514
+ },
515
+ "required": [
516
+ "media_id",
517
+ "reposted"
518
+ ]
519
+ },
520
+ "webSession": {
521
+ "site": "instagram",
522
+ "action": "posts.repost",
523
+ "contractVersion": 1,
524
+ "timeoutMs": 60000,
525
+ "maxOutputBytes": 8388608
526
+ }
527
+ },
528
+ "profiles.read": {
529
+ "description": "Observed contract: read exact follower, following, and post counts from one target-bound signed-in Instagram profile response.",
530
+ "risk": "R1",
531
+ "sideEffect": "none",
532
+ "idempotency": "none",
533
+ "dedupeWindowMs": 0,
534
+ "input": {
535
+ "properties": {
536
+ "profile": {
537
+ "type": "string",
538
+ "description": "Canonical lowercase Instagram handle bound to the signed-in profile",
539
+ "minLength": 1,
540
+ "maxLength": 30
541
+ }
542
+ },
543
+ "required": [
544
+ "profile"
545
+ ]
546
+ },
547
+ "webSession": {
548
+ "site": "instagram",
549
+ "action": "profiles.read",
550
+ "contractVersion": 1,
551
+ "timeoutMs": 60000,
552
+ "maxOutputBytes": 8388608
553
+ }
554
+ },
555
+ "reactions.set": {
556
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
557
+ "risk": "R2",
558
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
559
+ "idempotency": "local-at-most-once",
560
+ "dedupeWindowMs": 86400000,
561
+ "input": {
562
+ "properties": {
563
+ "media_id": {
564
+ "type": "string",
565
+ "description": "Exact Instagram media ID",
566
+ "minLength": 1,
567
+ "maxLength": 80
568
+ },
569
+ "reaction": {
570
+ "type": "string",
571
+ "description": "Exact desired reaction",
572
+ "enum": [
573
+ "none",
574
+ "like",
575
+ "love",
576
+ "care",
577
+ "haha",
578
+ "wow",
579
+ "sad",
580
+ "angry"
581
+ ]
582
+ }
583
+ },
584
+ "required": [
585
+ "media_id",
586
+ "reaction"
587
+ ]
588
+ },
589
+ "webSession": {
590
+ "site": "instagram",
591
+ "action": "reactions.set",
592
+ "contractVersion": 1,
593
+ "timeoutMs": 60000,
594
+ "maxOutputBytes": 8388608
595
+ }
596
+ },
597
+ "relationships.follow.set": {
598
+ "description": "Capture-required contract reservation: the exact actor, target, mutation response, and independent desired-state readback require an authorized fixture.",
599
+ "risk": "R2",
600
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
601
+ "idempotency": "local-at-most-once",
602
+ "dedupeWindowMs": 86400000,
603
+ "input": {
604
+ "properties": {
605
+ "user_id": {
606
+ "type": "string",
607
+ "description": "Exact target account ID",
608
+ "minLength": 1,
609
+ "maxLength": 80
610
+ },
611
+ "following": {
612
+ "type": "boolean",
613
+ "description": "Exact desired following state"
614
+ }
615
+ },
616
+ "required": [
617
+ "user_id",
618
+ "following"
619
+ ]
620
+ },
621
+ "webSession": {
622
+ "site": "instagram",
623
+ "action": "relationships.follow.set",
624
+ "contractVersion": 1,
625
+ "timeoutMs": 60000,
626
+ "maxOutputBytes": 8388608
627
+ }
628
+ },
629
+ "replies.create": {
630
+ "description": "Capture-required contract reservation: the exact actor, audience, attachment transport, dispatch response, and independent publication readback require an authorized fixture.",
631
+ "risk": "R3",
632
+ "sideEffect": "Changes remote instagram state only after exact preview confirmation and reviewed dispatch.",
633
+ "idempotency": "local-at-most-once",
634
+ "dedupeWindowMs": 86400000,
635
+ "input": {
636
+ "properties": {
637
+ "media_id": {
638
+ "type": "string",
639
+ "description": "Exact Instagram media ID",
640
+ "minLength": 1,
641
+ "maxLength": 80
642
+ },
643
+ "comment_id": {
644
+ "type": "string",
645
+ "description": "Exact parent comment ID",
646
+ "minLength": 1,
647
+ "maxLength": 256
648
+ },
649
+ "body": {
650
+ "type": "string",
651
+ "description": "Reply body",
652
+ "minLength": 1,
653
+ "maxLength": 500
654
+ }
655
+ },
656
+ "required": [
657
+ "media_id",
658
+ "comment_id",
659
+ "body"
660
+ ]
661
+ },
662
+ "webSession": {
663
+ "site": "instagram",
664
+ "action": "replies.create",
665
+ "contractVersion": 1,
666
+ "timeoutMs": 60000,
667
+ "maxOutputBytes": 8388608
668
+ }
669
+ }
670
+ }
671
+ }