@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,615 @@
1
+ {
2
+ "schemaVersion": 4,
3
+ "id": "bluesky-web",
4
+ "version": "1.3.0",
5
+ "displayName": "Bluesky (Authenticated AT Protocol API)",
6
+ "surfaceId": "bluesky",
7
+ "origins": [
8
+ "https://bsky.app"
9
+ ],
10
+ "browserDomains": [
11
+ "bsky.app"
12
+ ],
13
+ "operations": {
14
+ "feeds.read": {
15
+ "description": "Read one bounded authenticated Bluesky home timeline, notification feed, or private bookmark feed through fixed account-bound XRPC queries.",
16
+ "risk": "R1",
17
+ "sideEffect": "none",
18
+ "idempotency": "none",
19
+ "dedupeWindowMs": 0,
20
+ "input": {
21
+ "properties": {
22
+ "feed": {
23
+ "type": "string",
24
+ "description": "Exact reviewed Bluesky feed",
25
+ "enum": [
26
+ "home",
27
+ "notifications",
28
+ "bookmarks"
29
+ ]
30
+ },
31
+ "limit": {
32
+ "type": "number",
33
+ "description": "Maximum projected feed items",
34
+ "minimum": 1,
35
+ "maximum": 100
36
+ },
37
+ "cursor": {
38
+ "type": "string",
39
+ "description": "Optional opaque cursor returned by the same feed",
40
+ "minLength": 1,
41
+ "maxLength": 8192
42
+ }
43
+ },
44
+ "required": [
45
+ "feed"
46
+ ]
47
+ },
48
+ "webSession": {
49
+ "site": "bluesky",
50
+ "action": "feeds.read",
51
+ "contractVersion": 1,
52
+ "timeoutMs": 60000,
53
+ "maxOutputBytes": 8388608
54
+ }
55
+ },
56
+ "posts.read": {
57
+ "description": "Read one exact Bluesky post through a fixed XRPC query with exact AT URI binding and bounded projection.",
58
+ "risk": "R1",
59
+ "sideEffect": "none",
60
+ "idempotency": "none",
61
+ "dedupeWindowMs": 0,
62
+ "input": {
63
+ "properties": {
64
+ "post_uri": {
65
+ "type": "string",
66
+ "description": "Exact app.bsky.feed.post AT URI",
67
+ "minLength": 32,
68
+ "maxLength": 1024
69
+ }
70
+ },
71
+ "required": [
72
+ "post_uri"
73
+ ]
74
+ },
75
+ "webSession": {
76
+ "site": "bluesky",
77
+ "action": "posts.read",
78
+ "contractVersion": 1,
79
+ "timeoutMs": 60000,
80
+ "maxOutputBytes": 8388608
81
+ }
82
+ },
83
+ "comments.read": {
84
+ "description": "Read one bounded Bluesky reply tree through a fixed XRPC query bound to the exact requested post.",
85
+ "risk": "R1",
86
+ "sideEffect": "none",
87
+ "idempotency": "none",
88
+ "dedupeWindowMs": 0,
89
+ "input": {
90
+ "properties": {
91
+ "post_uri": {
92
+ "type": "string",
93
+ "description": "Exact app.bsky.feed.post AT URI",
94
+ "minLength": 32,
95
+ "maxLength": 1024
96
+ },
97
+ "limit": {
98
+ "type": "number",
99
+ "description": "Maximum projected replies",
100
+ "minimum": 1,
101
+ "maximum": 100
102
+ }
103
+ },
104
+ "required": [
105
+ "post_uri"
106
+ ]
107
+ },
108
+ "webSession": {
109
+ "site": "bluesky",
110
+ "action": "comments.read",
111
+ "contractVersion": 1,
112
+ "timeoutMs": 60000,
113
+ "maxOutputBytes": 8388608
114
+ }
115
+ },
116
+ "media.read": {
117
+ "description": "Read metadata-only Bluesky attachments through a fixed XRPC query without returning signed media URLs.",
118
+ "risk": "R1",
119
+ "sideEffect": "none",
120
+ "idempotency": "none",
121
+ "dedupeWindowMs": 0,
122
+ "input": {
123
+ "properties": {
124
+ "post_uri": {
125
+ "type": "string",
126
+ "description": "Exact app.bsky.feed.post AT URI",
127
+ "minLength": 32,
128
+ "maxLength": 1024
129
+ }
130
+ },
131
+ "required": [
132
+ "post_uri"
133
+ ]
134
+ },
135
+ "webSession": {
136
+ "site": "bluesky",
137
+ "action": "media.read",
138
+ "contractVersion": 1,
139
+ "timeoutMs": 60000,
140
+ "maxOutputBytes": 8388608
141
+ }
142
+ },
143
+ "messaging.list": {
144
+ "description": "Capture-required contract reservation: list one bounded page of Bluesky conversations only after a live nonempty fixture proves exact bsky_chat proxy routing and viewer membership projection.",
145
+ "risk": "R1",
146
+ "sideEffect": "none",
147
+ "idempotency": "none",
148
+ "dedupeWindowMs": 0,
149
+ "input": {
150
+ "properties": {
151
+ "limit": {
152
+ "type": "number",
153
+ "description": "Maximum projected conversations",
154
+ "minimum": 1,
155
+ "maximum": 100
156
+ },
157
+ "cursor": {
158
+ "type": "string",
159
+ "description": "Optional opaque conversation cursor",
160
+ "minLength": 1,
161
+ "maxLength": 8192
162
+ }
163
+ },
164
+ "required": []
165
+ },
166
+ "webSession": {
167
+ "site": "bluesky",
168
+ "action": "messaging.list",
169
+ "contractVersion": 1,
170
+ "timeoutMs": 60000,
171
+ "maxOutputBytes": 8388608
172
+ }
173
+ },
174
+ "messaging.read": {
175
+ "description": "Capture-required contract reservation: read one exact Bluesky conversation only after a live fixture proves exact bsky_chat proxy routing, membership, conversation binding, and message projection.",
176
+ "risk": "R1",
177
+ "sideEffect": "none",
178
+ "idempotency": "none",
179
+ "dedupeWindowMs": 0,
180
+ "input": {
181
+ "properties": {
182
+ "convo_id": {
183
+ "type": "string",
184
+ "description": "Exact Bluesky conversation ID",
185
+ "minLength": 1,
186
+ "maxLength": 512
187
+ },
188
+ "limit": {
189
+ "type": "number",
190
+ "description": "Maximum projected messages",
191
+ "minimum": 1,
192
+ "maximum": 100
193
+ },
194
+ "cursor": {
195
+ "type": "string",
196
+ "description": "Optional opaque message cursor",
197
+ "minLength": 1,
198
+ "maxLength": 8192
199
+ }
200
+ },
201
+ "required": [
202
+ "convo_id"
203
+ ]
204
+ },
205
+ "webSession": {
206
+ "site": "bluesky",
207
+ "action": "messaging.read",
208
+ "contractVersion": 1,
209
+ "timeoutMs": 60000,
210
+ "maxOutputBytes": 8388608
211
+ }
212
+ },
213
+ "likes.set": {
214
+ "description": "Capture-required contract reservation: set or clear one exact like only after an authorized live fixture proves the record exchange and independent post-view readback.",
215
+ "risk": "R2",
216
+ "sideEffect": "Sets or clears the authenticated Bluesky account's like on the exact confirmed post.",
217
+ "idempotency": "local-at-most-once",
218
+ "dedupeWindowMs": 86400000,
219
+ "input": {
220
+ "properties": {
221
+ "post_uri": {
222
+ "type": "string",
223
+ "description": "Exact app.bsky.feed.post AT URI",
224
+ "minLength": 32,
225
+ "maxLength": 1024
226
+ },
227
+ "liked": {
228
+ "type": "boolean",
229
+ "description": "Exact desired like state"
230
+ }
231
+ },
232
+ "required": [
233
+ "post_uri",
234
+ "liked"
235
+ ]
236
+ },
237
+ "webSession": {
238
+ "site": "bluesky",
239
+ "action": "likes.set",
240
+ "contractVersion": 1,
241
+ "timeoutMs": 60000,
242
+ "maxOutputBytes": 8388608
243
+ }
244
+ },
245
+ "content.save": {
246
+ "description": "Capture-required contract reservation: set or clear one exact private bookmark only after an authorized live fixture proves the procedure and independent post-view readback.",
247
+ "risk": "R2",
248
+ "sideEffect": "Saves or unsaves the exact confirmed post in the authenticated Bluesky account's private bookmarks.",
249
+ "idempotency": "local-at-most-once",
250
+ "dedupeWindowMs": 86400000,
251
+ "input": {
252
+ "properties": {
253
+ "post_uri": {
254
+ "type": "string",
255
+ "description": "Exact app.bsky.feed.post AT URI",
256
+ "minLength": 32,
257
+ "maxLength": 1024
258
+ },
259
+ "saved": {
260
+ "type": "boolean",
261
+ "description": "Exact desired private bookmark state"
262
+ }
263
+ },
264
+ "required": [
265
+ "post_uri",
266
+ "saved"
267
+ ]
268
+ },
269
+ "webSession": {
270
+ "site": "bluesky",
271
+ "action": "content.save",
272
+ "contractVersion": 1,
273
+ "timeoutMs": 60000,
274
+ "maxOutputBytes": 8388608
275
+ }
276
+ },
277
+ "content.delete": {
278
+ "description": "Delete one exact current-account Bluesky post only after an authoritative PDS pre-read binds its confirmed CID; submit deleteRecord with swapRecord and independently verify authoritative RecordNotFound.",
279
+ "risk": "R3",
280
+ "sideEffect": "Permanently deletes the exact confirmed authored Bluesky post from the authenticated account repository.",
281
+ "idempotency": "local-at-most-once",
282
+ "dedupeWindowMs": 2592000000,
283
+ "input": {
284
+ "properties": {
285
+ "post_uri": {
286
+ "type": "string",
287
+ "description": "Exact current-account app.bsky.feed.post AT URI",
288
+ "minLength": 32,
289
+ "maxLength": 1024
290
+ },
291
+ "expected_cid": {
292
+ "type": "string",
293
+ "description": "Exact confirmed current record CID",
294
+ "minLength": 11,
295
+ "maxLength": 201
296
+ }
297
+ },
298
+ "required": [
299
+ "post_uri",
300
+ "expected_cid"
301
+ ]
302
+ },
303
+ "webSession": {
304
+ "site": "bluesky",
305
+ "action": "content.delete",
306
+ "contractVersion": 1,
307
+ "timeoutMs": 60000,
308
+ "maxOutputBytes": 8388608
309
+ }
310
+ },
311
+ "relationships.follow.set": {
312
+ "description": "Capture-required contract reservation: follow or unfollow one exact DID only after an authorized live fixture proves record exchange and independent profile readback.",
313
+ "risk": "R2",
314
+ "sideEffect": "Follows or unfollows the exact confirmed Bluesky account as the authenticated viewer.",
315
+ "idempotency": "local-at-most-once",
316
+ "dedupeWindowMs": 86400000,
317
+ "input": {
318
+ "properties": {
319
+ "actor_did": {
320
+ "type": "string",
321
+ "description": "Exact target Bluesky DID",
322
+ "minLength": 32,
323
+ "maxLength": 255
324
+ },
325
+ "followed": {
326
+ "type": "boolean",
327
+ "description": "Exact desired follow state"
328
+ }
329
+ },
330
+ "required": [
331
+ "actor_did",
332
+ "followed"
333
+ ]
334
+ },
335
+ "webSession": {
336
+ "site": "bluesky",
337
+ "action": "relationships.follow.set",
338
+ "contractVersion": 1,
339
+ "timeoutMs": 60000,
340
+ "maxOutputBytes": 8388608
341
+ }
342
+ },
343
+ "posts.repost": {
344
+ "description": "Capture-required contract reservation: repost or undo one exact post only after an authorized live fixture proves record exchange and independent post-view readback.",
345
+ "risk": "R3",
346
+ "sideEffect": "Reposts or removes the authenticated Bluesky account's repost of the exact confirmed post.",
347
+ "idempotency": "local-at-most-once",
348
+ "dedupeWindowMs": 86400000,
349
+ "input": {
350
+ "properties": {
351
+ "post_uri": {
352
+ "type": "string",
353
+ "description": "Exact app.bsky.feed.post AT URI",
354
+ "minLength": 32,
355
+ "maxLength": 1024
356
+ },
357
+ "reposted": {
358
+ "type": "boolean",
359
+ "description": "Exact desired repost state"
360
+ }
361
+ },
362
+ "required": [
363
+ "post_uri",
364
+ "reposted"
365
+ ]
366
+ },
367
+ "webSession": {
368
+ "site": "bluesky",
369
+ "action": "posts.repost",
370
+ "contractVersion": 1,
371
+ "timeoutMs": 60000,
372
+ "maxOutputBytes": 8388608
373
+ }
374
+ },
375
+ "posts.publish": {
376
+ "description": "Publish one plain-text or single-image post through the observed uploadBlob/createRecord contract with exact actor, text, attachment, record revision, and independent getPosts readback binding.",
377
+ "risk": "R3",
378
+ "sideEffect": "Publishes one externally visible Bluesky post with the exact confirmed text and optional image.",
379
+ "idempotency": "local-at-most-once",
380
+ "dedupeWindowMs": 86400000,
381
+ "input": {
382
+ "properties": {
383
+ "body": {
384
+ "type": "string",
385
+ "description": "Exact plain-text post body",
386
+ "minLength": 1,
387
+ "maxLength": 280
388
+ },
389
+ "media": {
390
+ "type": "file",
391
+ "description": "Optional single plan-bound image",
392
+ "maxBytes": 2000000,
393
+ "mediaTypes": [
394
+ "image/jpeg",
395
+ "image/png",
396
+ "image/webp"
397
+ ]
398
+ },
399
+ "media_type": {
400
+ "type": "string",
401
+ "description": "Exact media type when an image is attached",
402
+ "enum": [
403
+ "image/jpeg",
404
+ "image/png",
405
+ "image/webp"
406
+ ]
407
+ },
408
+ "alt": {
409
+ "type": "string",
410
+ "description": "Optional exact image alt text",
411
+ "minLength": 0,
412
+ "maxLength": 10000
413
+ }
414
+ },
415
+ "required": [
416
+ "body"
417
+ ]
418
+ },
419
+ "webSession": {
420
+ "site": "bluesky",
421
+ "action": "posts.publish",
422
+ "contractVersion": 3,
423
+ "timeoutMs": 600000,
424
+ "maxOutputBytes": 8388608
425
+ }
426
+ },
427
+ "replies.create": {
428
+ "description": "Capture-required contract reservation: publish one plain-text or single-image reply only after an authorized live fixture proves actor, root, parent, response, and readback binding.",
429
+ "risk": "R3",
430
+ "sideEffect": "Publishes one externally visible reply to the exact confirmed Bluesky post.",
431
+ "idempotency": "local-at-most-once",
432
+ "dedupeWindowMs": 86400000,
433
+ "input": {
434
+ "properties": {
435
+ "post_uri": {
436
+ "type": "string",
437
+ "description": "Exact parent app.bsky.feed.post AT URI",
438
+ "minLength": 32,
439
+ "maxLength": 1024
440
+ },
441
+ "body": {
442
+ "type": "string",
443
+ "description": "Exact plain-text reply body",
444
+ "minLength": 1,
445
+ "maxLength": 280
446
+ },
447
+ "media": {
448
+ "type": "file",
449
+ "description": "Optional single plan-bound reply image",
450
+ "maxBytes": 2000000,
451
+ "mediaTypes": [
452
+ "image/jpeg",
453
+ "image/png",
454
+ "image/webp"
455
+ ]
456
+ },
457
+ "media_type": {
458
+ "type": "string",
459
+ "description": "Exact media type when an image is attached",
460
+ "enum": [
461
+ "image/jpeg",
462
+ "image/png",
463
+ "image/webp"
464
+ ]
465
+ },
466
+ "alt": {
467
+ "type": "string",
468
+ "description": "Optional exact image alt text",
469
+ "minLength": 0,
470
+ "maxLength": 10000
471
+ }
472
+ },
473
+ "required": [
474
+ "post_uri",
475
+ "body"
476
+ ]
477
+ },
478
+ "webSession": {
479
+ "site": "bluesky",
480
+ "action": "replies.create",
481
+ "contractVersion": 1,
482
+ "timeoutMs": 600000,
483
+ "maxOutputBytes": 8388608
484
+ }
485
+ },
486
+ "posts.quote": {
487
+ "description": "Capture-required contract reservation: publish one quoted post only after an authorized live fixture proves the exact embedded strong reference and independent readback.",
488
+ "risk": "R3",
489
+ "sideEffect": "Publishes one externally visible Bluesky quote post for the exact confirmed source post.",
490
+ "idempotency": "local-at-most-once",
491
+ "dedupeWindowMs": 86400000,
492
+ "input": {
493
+ "properties": {
494
+ "post_uri": {
495
+ "type": "string",
496
+ "description": "Exact quoted app.bsky.feed.post AT URI",
497
+ "minLength": 32,
498
+ "maxLength": 1024
499
+ },
500
+ "body": {
501
+ "type": "string",
502
+ "description": "Exact plain-text quote commentary",
503
+ "minLength": 1,
504
+ "maxLength": 280
505
+ }
506
+ },
507
+ "required": [
508
+ "post_uri",
509
+ "body"
510
+ ]
511
+ },
512
+ "webSession": {
513
+ "site": "bluesky",
514
+ "action": "posts.quote",
515
+ "contractVersion": 1,
516
+ "timeoutMs": 600000,
517
+ "maxOutputBytes": 8388608
518
+ }
519
+ },
520
+ "threads.publish": {
521
+ "description": "Capture-required contract reservation: publish one ordered one-to-twenty-five-item thread only after an authorized live fixture proves every root/reply dispatch and independent readback.",
522
+ "risk": "R3",
523
+ "sideEffect": "Publishes one externally visible ordered Bluesky thread containing every exact confirmed item.",
524
+ "idempotency": "local-at-most-once",
525
+ "dedupeWindowMs": 86400000,
526
+ "input": {
527
+ "properties": {
528
+ "items": {
529
+ "type": "array",
530
+ "description": "Exact ordered post texts beginning with the thread root",
531
+ "items": {
532
+ "type": "string",
533
+ "description": "One exact Bluesky thread item",
534
+ "minLength": 1,
535
+ "maxLength": 280
536
+ },
537
+ "minItems": 1,
538
+ "maxItems": 25
539
+ }
540
+ },
541
+ "required": [
542
+ "items"
543
+ ]
544
+ },
545
+ "webSession": {
546
+ "site": "bluesky",
547
+ "action": "threads.publish",
548
+ "contractVersion": 1,
549
+ "timeoutMs": 600000,
550
+ "maxOutputBytes": 8388608
551
+ }
552
+ },
553
+ "messaging.send": {
554
+ "description": "Capture-required contract reservation: send one exact message only after an authorized live fixture proves conversation membership, sender, response, and independent getMessages readback.",
555
+ "risk": "R3",
556
+ "sideEffect": "Sends one message with the exact confirmed text to the exact confirmed Bluesky conversation.",
557
+ "idempotency": "local-at-most-once",
558
+ "dedupeWindowMs": 86400000,
559
+ "input": {
560
+ "properties": {
561
+ "convo_id": {
562
+ "type": "string",
563
+ "description": "Exact Bluesky conversation ID",
564
+ "minLength": 1,
565
+ "maxLength": 512
566
+ },
567
+ "body": {
568
+ "type": "string",
569
+ "description": "Exact message text",
570
+ "minLength": 1,
571
+ "maxLength": 1000
572
+ }
573
+ },
574
+ "required": [
575
+ "convo_id",
576
+ "body"
577
+ ]
578
+ },
579
+ "webSession": {
580
+ "site": "bluesky",
581
+ "action": "messaging.send",
582
+ "contractVersion": 1,
583
+ "timeoutMs": 60000,
584
+ "maxOutputBytes": 8388608
585
+ }
586
+ },
587
+ "content.share": {
588
+ "description": "Capture-required contract reservation: no separate native Bluesky share mutation is proven beyond the supported repost and quote operations.",
589
+ "risk": "R3",
590
+ "sideEffect": "Shares the exact confirmed Bluesky post through a distinct provider-visible target if such a native contract is proven.",
591
+ "idempotency": "local-at-most-once",
592
+ "dedupeWindowMs": 86400000,
593
+ "input": {
594
+ "properties": {
595
+ "post_uri": {
596
+ "type": "string",
597
+ "description": "Exact app.bsky.feed.post AT URI",
598
+ "minLength": 32,
599
+ "maxLength": 1024
600
+ }
601
+ },
602
+ "required": [
603
+ "post_uri"
604
+ ]
605
+ },
606
+ "webSession": {
607
+ "site": "bluesky",
608
+ "action": "content.share",
609
+ "contractVersion": 1,
610
+ "timeoutMs": 60000,
611
+ "maxOutputBytes": 8388608
612
+ }
613
+ }
614
+ }
615
+ }