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