@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,731 @@
1
+ {
2
+ "schemaVersion": 4,
3
+ "id": "linkedin-web",
4
+ "version": "1.2.0",
5
+ "displayName": "LinkedIn (Authenticated Web API)",
6
+ "surfaceId": "linkedin",
7
+ "origins": [
8
+ "https://www.linkedin.com"
9
+ ],
10
+ "browserDomains": [
11
+ "www.linkedin.com"
12
+ ],
13
+ "operations": {
14
+ "feeds.read": {
15
+ "description": "Capture-required contract reservation: the LinkedIn home-feed query revision is known, but execution remains disabled until exact current variables and a bounded response projection are captured and reviewed.",
16
+ "risk": "R1",
17
+ "sideEffect": "none",
18
+ "idempotency": "none",
19
+ "dedupeWindowMs": 0,
20
+ "input": {
21
+ "properties": {
22
+ "feed": {
23
+ "type": "string",
24
+ "description": "Captured feed surface",
25
+ "enum": [
26
+ "home"
27
+ ]
28
+ },
29
+ "cursor": {
30
+ "type": "string",
31
+ "description": "Opaque cursor returned by the preceding page",
32
+ "minLength": 1,
33
+ "maxLength": 4096
34
+ },
35
+ "limit": {
36
+ "type": "number",
37
+ "description": "Maximum feed entries to project",
38
+ "minimum": 1,
39
+ "maximum": 100
40
+ }
41
+ },
42
+ "required": [
43
+ "feed"
44
+ ]
45
+ },
46
+ "webSession": {
47
+ "site": "linkedin",
48
+ "action": "feeds.read",
49
+ "contractVersion": 1,
50
+ "timeoutMs": 60000,
51
+ "maxOutputBytes": 4194304
52
+ }
53
+ },
54
+ "profiles.read": {
55
+ "description": "Capture-required contract reservation: read one exact LinkedIn member profile only after public-identifier or profile-URN lookup, viewer binding, and the bounded response projection are captured and reviewed.",
56
+ "risk": "R1",
57
+ "sideEffect": "none",
58
+ "idempotency": "none",
59
+ "dedupeWindowMs": 0,
60
+ "input": {
61
+ "properties": {
62
+ "profile": {
63
+ "type": "string",
64
+ "description": "Exact LinkedIn public profile identifier or provider profile URN",
65
+ "minLength": 1,
66
+ "maxLength": 512
67
+ }
68
+ },
69
+ "required": [
70
+ "profile"
71
+ ]
72
+ },
73
+ "webSession": {
74
+ "site": "linkedin",
75
+ "action": "profiles.read",
76
+ "contractVersion": 1,
77
+ "timeoutMs": 60000,
78
+ "maxOutputBytes": 2097152
79
+ }
80
+ },
81
+ "organizations.read": {
82
+ "description": "Capture-required contract reservation: read one exact LinkedIn organization Page only after public-identifier or organization-URN lookup, viewer binding, and the bounded response projection are captured and reviewed.",
83
+ "risk": "R1",
84
+ "sideEffect": "none",
85
+ "idempotency": "none",
86
+ "dedupeWindowMs": 0,
87
+ "input": {
88
+ "properties": {
89
+ "organization": {
90
+ "type": "string",
91
+ "description": "Exact LinkedIn organization public identifier or provider organization URN",
92
+ "minLength": 1,
93
+ "maxLength": 512
94
+ }
95
+ },
96
+ "required": [
97
+ "organization"
98
+ ]
99
+ },
100
+ "webSession": {
101
+ "site": "linkedin",
102
+ "action": "organizations.read",
103
+ "contractVersion": 1,
104
+ "timeoutMs": 60000,
105
+ "maxOutputBytes": 2097152
106
+ }
107
+ },
108
+ "relationships.recommendations.read": {
109
+ "description": "Capture-required contract reservation: list one bounded page of LinkedIn recommended connections only after the exact viewer-bound collection, paging variables, and completeness projection are captured and reviewed.",
110
+ "risk": "R1",
111
+ "sideEffect": "none",
112
+ "idempotency": "none",
113
+ "dedupeWindowMs": 0,
114
+ "input": {
115
+ "properties": {
116
+ "source": {
117
+ "type": "string",
118
+ "description": "Exact recommended-connections surface",
119
+ "enum": [
120
+ "all"
121
+ ]
122
+ },
123
+ "cursor": {
124
+ "type": "string",
125
+ "description": "Opaque cursor returned by the preceding recommendations page",
126
+ "minLength": 1,
127
+ "maxLength": 4096
128
+ },
129
+ "limit": {
130
+ "type": "number",
131
+ "description": "Maximum recommended profiles to project",
132
+ "minimum": 1,
133
+ "maximum": 100
134
+ }
135
+ },
136
+ "required": [
137
+ "source"
138
+ ]
139
+ },
140
+ "webSession": {
141
+ "site": "linkedin",
142
+ "action": "relationships.recommendations.read",
143
+ "contractVersion": 1,
144
+ "timeoutMs": 60000,
145
+ "maxOutputBytes": 4194304
146
+ }
147
+ },
148
+ "messaging.list": {
149
+ "description": "Capture-required contract reservation: list one bounded LinkedIn inbox page only after the current-account mailbox projection, registered query, paging, completeness, and acknowledgement-free behavior are recaptured and reviewed.",
150
+ "risk": "R1",
151
+ "sideEffect": "none",
152
+ "idempotency": "none",
153
+ "dedupeWindowMs": 0,
154
+ "input": {
155
+ "properties": {
156
+ "folder": {
157
+ "type": "string",
158
+ "description": "Exact LinkedIn inbox folder",
159
+ "enum": [
160
+ "focused",
161
+ "other",
162
+ "requests",
163
+ "archive",
164
+ "spam",
165
+ "all"
166
+ ]
167
+ },
168
+ "cursor": {
169
+ "type": "string",
170
+ "description": "Opaque cursor returned by the preceding page",
171
+ "minLength": 1,
172
+ "maxLength": 4096
173
+ },
174
+ "limit": {
175
+ "type": "number",
176
+ "description": "Maximum conversations to project",
177
+ "minimum": 1,
178
+ "maximum": 100
179
+ }
180
+ },
181
+ "required": [
182
+ "folder"
183
+ ]
184
+ },
185
+ "webSession": {
186
+ "site": "linkedin",
187
+ "action": "messaging.list",
188
+ "contractVersion": 1,
189
+ "timeoutMs": 60000,
190
+ "maxOutputBytes": 4194304
191
+ }
192
+ },
193
+ "messaging.read": {
194
+ "description": "Capture-required contract reservation: the LinkedIn message query revision is known, but execution remains disabled until exact current variables and acknowledgement-free response handling are captured and reviewed.",
195
+ "risk": "R1",
196
+ "sideEffect": "none",
197
+ "idempotency": "none",
198
+ "dedupeWindowMs": 0,
199
+ "input": {
200
+ "properties": {
201
+ "conversation_id": {
202
+ "type": "string",
203
+ "description": "Exact opaque conversation identifier returned by messaging.list",
204
+ "minLength": 1,
205
+ "maxLength": 512
206
+ },
207
+ "cursor": {
208
+ "type": "string",
209
+ "description": "Opaque cursor returned by the preceding page",
210
+ "minLength": 1,
211
+ "maxLength": 4096
212
+ },
213
+ "limit": {
214
+ "type": "number",
215
+ "description": "Maximum messages to project",
216
+ "minimum": 1,
217
+ "maximum": 100
218
+ }
219
+ },
220
+ "required": [
221
+ "conversation_id"
222
+ ]
223
+ },
224
+ "webSession": {
225
+ "site": "linkedin",
226
+ "action": "messaging.read",
227
+ "contractVersion": 1,
228
+ "timeoutMs": 60000,
229
+ "maxOutputBytes": 4194304
230
+ }
231
+ },
232
+ "messaging.send": {
233
+ "description": "Capture-required contract reservation: send one confirmed LinkedIn message, optionally with one reviewed attachment, only after createMessage request and response bindings are captured and reviewed.",
234
+ "risk": "R3",
235
+ "sideEffect": "Sends one externally visible LinkedIn message to the exact confirmed conversation.",
236
+ "idempotency": "local-at-most-once",
237
+ "dedupeWindowMs": 86400000,
238
+ "input": {
239
+ "properties": {
240
+ "conversation_id": {
241
+ "type": "string",
242
+ "description": "Exact opaque conversation identifier returned by messaging.list",
243
+ "minLength": 1,
244
+ "maxLength": 512
245
+ },
246
+ "body": {
247
+ "type": "string",
248
+ "description": "Exact message text",
249
+ "minLength": 1,
250
+ "maxLength": 8000
251
+ },
252
+ "media": {
253
+ "type": "file",
254
+ "description": "Optional reviewed image, video, or document attachment",
255
+ "maxBytes": 536870912,
256
+ "mediaTypes": [
257
+ "image/jpeg",
258
+ "image/png",
259
+ "image/gif",
260
+ "video/mp4",
261
+ "application/pdf",
262
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
263
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
264
+ ]
265
+ }
266
+ },
267
+ "required": [
268
+ "conversation_id",
269
+ "body"
270
+ ]
271
+ },
272
+ "webSession": {
273
+ "site": "linkedin",
274
+ "action": "messaging.send",
275
+ "contractVersion": 1,
276
+ "timeoutMs": 600000,
277
+ "maxOutputBytes": 2097152
278
+ }
279
+ },
280
+ "posts.read": {
281
+ "description": "Capture-required contract reservation: read one LinkedIn consumer-web post after its exact first-party post-detail query and bounded projection are captured and reviewed.",
282
+ "risk": "R1",
283
+ "sideEffect": "none",
284
+ "idempotency": "none",
285
+ "dedupeWindowMs": 0,
286
+ "input": {
287
+ "properties": {
288
+ "post_urn": {
289
+ "type": "string",
290
+ "description": "Exact LinkedIn share or UGC-post URN",
291
+ "minLength": 1,
292
+ "maxLength": 500
293
+ }
294
+ },
295
+ "required": [
296
+ "post_urn"
297
+ ]
298
+ },
299
+ "webSession": {
300
+ "site": "linkedin",
301
+ "action": "posts.read",
302
+ "contractVersion": 1,
303
+ "timeoutMs": 60000,
304
+ "maxOutputBytes": 2097152
305
+ }
306
+ },
307
+ "comments.read": {
308
+ "description": "Capture-required contract reservation: list one bounded page of comments for an exact LinkedIn post after the consumer-web collection request is captured and reviewed.",
309
+ "risk": "R1",
310
+ "sideEffect": "none",
311
+ "idempotency": "none",
312
+ "dedupeWindowMs": 0,
313
+ "input": {
314
+ "properties": {
315
+ "post_urn": {
316
+ "type": "string",
317
+ "description": "Exact LinkedIn share or UGC-post URN",
318
+ "minLength": 1,
319
+ "maxLength": 500
320
+ },
321
+ "cursor": {
322
+ "type": "string",
323
+ "description": "Opaque cursor returned by the preceding page",
324
+ "minLength": 1,
325
+ "maxLength": 4096
326
+ },
327
+ "limit": {
328
+ "type": "number",
329
+ "description": "Maximum comments to project",
330
+ "minimum": 1,
331
+ "maximum": 100
332
+ }
333
+ },
334
+ "required": [
335
+ "post_urn"
336
+ ]
337
+ },
338
+ "webSession": {
339
+ "site": "linkedin",
340
+ "action": "comments.read",
341
+ "contractVersion": 1,
342
+ "timeoutMs": 60000,
343
+ "maxOutputBytes": 4194304
344
+ }
345
+ },
346
+ "articles.read": {
347
+ "description": "Capture-required contract reservation: list LinkedIn first-party article records only after a fresh capture proves exact author, article identity, and paging response bindings.",
348
+ "risk": "R1",
349
+ "sideEffect": "none",
350
+ "idempotency": "none",
351
+ "dedupeWindowMs": 0,
352
+ "input": {
353
+ "properties": {
354
+ "author_urn": {
355
+ "type": "string",
356
+ "description": "Exact LinkedIn person or organization author URN",
357
+ "minLength": 1,
358
+ "maxLength": 500
359
+ },
360
+ "start": {
361
+ "type": "number",
362
+ "description": "Zero-based article offset",
363
+ "minimum": 0,
364
+ "maximum": 100000
365
+ },
366
+ "limit": {
367
+ "type": "number",
368
+ "description": "Maximum article records to project",
369
+ "minimum": 1,
370
+ "maximum": 100
371
+ }
372
+ },
373
+ "required": [
374
+ "author_urn"
375
+ ]
376
+ },
377
+ "webSession": {
378
+ "site": "linkedin",
379
+ "action": "articles.read",
380
+ "contractVersion": 1,
381
+ "timeoutMs": 60000,
382
+ "maxOutputBytes": 4194304
383
+ }
384
+ },
385
+ "posts.publish": {
386
+ "description": "Capture-required contract reservation: publish one confirmed LinkedIn post with optional reviewed media or link after each sharebox and upload request shape is captured and response-bound.",
387
+ "risk": "R3",
388
+ "sideEffect": "Publishes one externally visible LinkedIn post with the exact confirmed audience and content.",
389
+ "idempotency": "local-at-most-once",
390
+ "dedupeWindowMs": 86400000,
391
+ "input": {
392
+ "properties": {
393
+ "body": {
394
+ "type": "string",
395
+ "description": "Exact post commentary",
396
+ "minLength": 1,
397
+ "maxLength": 3000
398
+ },
399
+ "visibility": {
400
+ "type": "string",
401
+ "description": "Confirmed post audience",
402
+ "enum": [
403
+ "public",
404
+ "connections"
405
+ ]
406
+ },
407
+ "media": {
408
+ "type": "array",
409
+ "description": "Optional reviewed images, or one reviewed video or document",
410
+ "items": {
411
+ "type": "file",
412
+ "description": "One exact post attachment",
413
+ "maxBytes": 536870912,
414
+ "mediaTypes": [
415
+ "image/jpeg",
416
+ "image/png",
417
+ "image/gif",
418
+ "video/mp4",
419
+ "application/pdf",
420
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
421
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
422
+ ]
423
+ },
424
+ "minItems": 1,
425
+ "maxItems": 20
426
+ },
427
+ "media_title": {
428
+ "type": "string",
429
+ "description": "Optional document or video title",
430
+ "minLength": 1,
431
+ "maxLength": 200
432
+ },
433
+ "alt_text": {
434
+ "type": "string",
435
+ "description": "Optional image alternative text",
436
+ "minLength": 1,
437
+ "maxLength": 4000
438
+ },
439
+ "link_url": {
440
+ "type": "string",
441
+ "description": "Optional exact HTTPS link-card source",
442
+ "minLength": 1,
443
+ "maxLength": 8192
444
+ }
445
+ },
446
+ "required": [
447
+ "body",
448
+ "visibility"
449
+ ]
450
+ },
451
+ "webSession": {
452
+ "site": "linkedin",
453
+ "action": "posts.publish",
454
+ "contractVersion": 1,
455
+ "timeoutMs": 600000,
456
+ "maxOutputBytes": 2097152
457
+ }
458
+ },
459
+ "posts.repost": {
460
+ "description": "Capture-required contract reservation: create one confirmed LinkedIn repost after the exact repost mutation and returned post identity are captured and reviewed.",
461
+ "risk": "R3",
462
+ "sideEffect": "Creates one externally visible LinkedIn repost of the exact confirmed post.",
463
+ "idempotency": "local-at-most-once",
464
+ "dedupeWindowMs": 86400000,
465
+ "input": {
466
+ "properties": {
467
+ "post_urn": {
468
+ "type": "string",
469
+ "description": "Exact LinkedIn share or UGC-post URN to repost",
470
+ "minLength": 1,
471
+ "maxLength": 500
472
+ }
473
+ },
474
+ "required": [
475
+ "post_urn"
476
+ ]
477
+ },
478
+ "webSession": {
479
+ "site": "linkedin",
480
+ "action": "posts.repost",
481
+ "contractVersion": 1,
482
+ "timeoutMs": 60000,
483
+ "maxOutputBytes": 2097152
484
+ }
485
+ },
486
+ "posts.quote": {
487
+ "description": "Capture-required contract reservation: publish one confirmed LinkedIn quote repost after its exact mutation and returned post identity are captured and reviewed.",
488
+ "risk": "R3",
489
+ "sideEffect": "Publishes one externally visible LinkedIn quote repost with the exact confirmed commentary.",
490
+ "idempotency": "local-at-most-once",
491
+ "dedupeWindowMs": 86400000,
492
+ "input": {
493
+ "properties": {
494
+ "post_urn": {
495
+ "type": "string",
496
+ "description": "Exact LinkedIn share or UGC-post URN to quote",
497
+ "minLength": 1,
498
+ "maxLength": 500
499
+ },
500
+ "body": {
501
+ "type": "string",
502
+ "description": "Exact quote commentary",
503
+ "minLength": 1,
504
+ "maxLength": 3000
505
+ },
506
+ "visibility": {
507
+ "type": "string",
508
+ "description": "Confirmed quote-post audience",
509
+ "enum": [
510
+ "public",
511
+ "connections"
512
+ ]
513
+ }
514
+ },
515
+ "required": [
516
+ "post_urn",
517
+ "body",
518
+ "visibility"
519
+ ]
520
+ },
521
+ "webSession": {
522
+ "site": "linkedin",
523
+ "action": "posts.quote",
524
+ "contractVersion": 1,
525
+ "timeoutMs": 60000,
526
+ "maxOutputBytes": 2097152
527
+ }
528
+ },
529
+ "comments.create": {
530
+ "description": "Capture-required contract reservation: create one confirmed top-level LinkedIn comment after exact actor, post, and returned-comment bindings are captured and reviewed.",
531
+ "risk": "R3",
532
+ "sideEffect": "Publishes one externally visible comment on the exact confirmed LinkedIn post.",
533
+ "idempotency": "local-at-most-once",
534
+ "dedupeWindowMs": 86400000,
535
+ "input": {
536
+ "properties": {
537
+ "post_urn": {
538
+ "type": "string",
539
+ "description": "Exact LinkedIn share or UGC-post URN",
540
+ "minLength": 1,
541
+ "maxLength": 500
542
+ },
543
+ "body": {
544
+ "type": "string",
545
+ "description": "Exact comment text",
546
+ "minLength": 1,
547
+ "maxLength": 500
548
+ }
549
+ },
550
+ "required": [
551
+ "post_urn",
552
+ "body"
553
+ ]
554
+ },
555
+ "webSession": {
556
+ "site": "linkedin",
557
+ "action": "comments.create",
558
+ "contractVersion": 1,
559
+ "timeoutMs": 60000,
560
+ "maxOutputBytes": 2097152
561
+ }
562
+ },
563
+ "replies.create": {
564
+ "description": "Capture-required contract reservation: create one confirmed LinkedIn comment reply after exact actor, root, parent, and returned-reply bindings are captured and reviewed.",
565
+ "risk": "R3",
566
+ "sideEffect": "Publishes one externally visible reply to the exact confirmed LinkedIn comment.",
567
+ "idempotency": "local-at-most-once",
568
+ "dedupeWindowMs": 86400000,
569
+ "input": {
570
+ "properties": {
571
+ "post_urn": {
572
+ "type": "string",
573
+ "description": "Exact root LinkedIn share or UGC-post URN",
574
+ "minLength": 1,
575
+ "maxLength": 500
576
+ },
577
+ "comment_urn": {
578
+ "type": "string",
579
+ "description": "Exact parent comment URN",
580
+ "minLength": 1,
581
+ "maxLength": 1000
582
+ },
583
+ "body": {
584
+ "type": "string",
585
+ "description": "Exact reply text",
586
+ "minLength": 1,
587
+ "maxLength": 500
588
+ }
589
+ },
590
+ "required": [
591
+ "post_urn",
592
+ "comment_urn",
593
+ "body"
594
+ ]
595
+ },
596
+ "webSession": {
597
+ "site": "linkedin",
598
+ "action": "replies.create",
599
+ "contractVersion": 1,
600
+ "timeoutMs": 60000,
601
+ "maxOutputBytes": 2097152
602
+ }
603
+ },
604
+ "reactions.set": {
605
+ "description": "Capture-required contract reservation: set the exact desired LinkedIn reaction after reviewed create and delete mutations can bind the actor, target post, and resulting state.",
606
+ "risk": "R2",
607
+ "sideEffect": "Sets or clears the authenticated account's reaction on the exact confirmed LinkedIn post.",
608
+ "idempotency": "local-at-most-once",
609
+ "dedupeWindowMs": 86400000,
610
+ "input": {
611
+ "properties": {
612
+ "post_urn": {
613
+ "type": "string",
614
+ "description": "Exact LinkedIn share or UGC-post URN",
615
+ "minLength": 1,
616
+ "maxLength": 500
617
+ },
618
+ "reaction": {
619
+ "type": "string",
620
+ "description": "Exact desired reaction, or none to clear it",
621
+ "enum": [
622
+ "like",
623
+ "celebrate",
624
+ "support",
625
+ "love",
626
+ "insightful",
627
+ "funny",
628
+ "none"
629
+ ]
630
+ }
631
+ },
632
+ "required": [
633
+ "post_urn",
634
+ "reaction"
635
+ ]
636
+ },
637
+ "webSession": {
638
+ "site": "linkedin",
639
+ "action": "reactions.set",
640
+ "contractVersion": 1,
641
+ "timeoutMs": 60000,
642
+ "maxOutputBytes": 2097152
643
+ }
644
+ },
645
+ "relationships.connect": {
646
+ "description": "Capture-required contract reservation: send one confirmed LinkedIn connection invitation only after the exact viewer, target profile, optional note, duplicate state, request, and response bindings are captured and reviewed.",
647
+ "risk": "R3",
648
+ "sideEffect": "Sends one externally visible LinkedIn connection invitation to the exact confirmed profile.",
649
+ "idempotency": "local-at-most-once",
650
+ "dedupeWindowMs": 86400000,
651
+ "input": {
652
+ "properties": {
653
+ "target_profile_urn": {
654
+ "type": "string",
655
+ "description": "Exact LinkedIn profile URN returned by a reviewed profile or recommendation read",
656
+ "minLength": 1,
657
+ "maxLength": 512
658
+ },
659
+ "note": {
660
+ "type": "string",
661
+ "description": "Optional exact invitation note",
662
+ "minLength": 1,
663
+ "maxLength": 300
664
+ }
665
+ },
666
+ "required": [
667
+ "target_profile_urn"
668
+ ]
669
+ },
670
+ "webSession": {
671
+ "site": "linkedin",
672
+ "action": "relationships.connect",
673
+ "contractVersion": 1,
674
+ "timeoutMs": 60000,
675
+ "maxOutputBytes": 2097152
676
+ }
677
+ },
678
+ "articles.publish": {
679
+ "description": "Capture-required contract reservation: publish one confirmed native LinkedIn article only after its draft, optional cover upload, and publish sequence is captured and response-bound.",
680
+ "risk": "R3",
681
+ "sideEffect": "Publishes one externally visible native LinkedIn article with the exact confirmed title, body, cover, and audience.",
682
+ "idempotency": "local-at-most-once",
683
+ "dedupeWindowMs": 86400000,
684
+ "input": {
685
+ "properties": {
686
+ "title": {
687
+ "type": "string",
688
+ "description": "Exact article title",
689
+ "minLength": 1,
690
+ "maxLength": 150
691
+ },
692
+ "body": {
693
+ "type": "string",
694
+ "description": "Exact native article body",
695
+ "minLength": 1,
696
+ "maxLength": 125000
697
+ },
698
+ "cover_image": {
699
+ "type": "file",
700
+ "description": "Optional reviewed article cover image",
701
+ "maxBytes": 20971520,
702
+ "mediaTypes": [
703
+ "image/jpeg",
704
+ "image/png"
705
+ ]
706
+ },
707
+ "visibility": {
708
+ "type": "string",
709
+ "description": "Confirmed article audience",
710
+ "enum": [
711
+ "public",
712
+ "connections"
713
+ ]
714
+ }
715
+ },
716
+ "required": [
717
+ "title",
718
+ "body",
719
+ "visibility"
720
+ ]
721
+ },
722
+ "webSession": {
723
+ "site": "linkedin",
724
+ "action": "articles.publish",
725
+ "contractVersion": 1,
726
+ "timeoutMs": 600000,
727
+ "maxOutputBytes": 2097152
728
+ }
729
+ }
730
+ }
731
+ }