@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.
- package/CHANGELOG.md +458 -0
- package/LICENSE +21 -0
- package/README.md +1359 -0
- package/bunfig.toml +2 -0
- package/dist/apple-photos-client.js +704 -0
- package/dist/beeper-client.js +4602 -0
- package/dist/client.js +1605 -0
- package/dist/index-26yq8q16.js +31 -0
- package/dist/index-9t13b4k7.js +508 -0
- package/dist/index-axwm9b3v.js +5 -0
- package/dist/index-gwk7rbyj.js +30 -0
- package/dist/index.js +701 -0
- package/dist/messaging.js +1130 -0
- package/dist/omni-client.js +1406 -0
- package/dist/whatsapp-client.js +355 -0
- package/docs/imessage-direct-provider.md +106 -0
- package/docs/rental-listings.md +94 -0
- package/package.json +600 -0
- package/skills/ghostget/SKILL.md +251 -0
- package/skills/ghostget/agents/openai.yaml +4 -0
- package/skills/ghostget/references/adapter-contract.md +181 -0
- package/skills/ghostget/references/apple-photos.md +115 -0
- package/skills/ghostget/references/article-drafts.md +235 -0
- package/skills/ghostget/references/code-owned-provider-scaffold.md +134 -0
- package/skills/ghostget/references/cross-posting-video.md +139 -0
- package/skills/ghostget/references/cross-posting.md +82 -0
- package/skills/ghostget/references/derivation.md +390 -0
- package/skills/ghostget/references/hraness-social-profile-stats.json +269 -0
- package/skills/ghostget/references/install.md +66 -0
- package/skills/ghostget/references/linkedin-adapter.md +442 -0
- package/skills/ghostget/references/messaging.md +168 -0
- package/skills/ghostget/references/meta-comet-contract.md +153 -0
- package/skills/ghostget/references/platform-patterns.md +122 -0
- package/skills/ghostget/references/provider-plugins.md +496 -0
- package/skills/ghostget/references/reddit-flair.md +78 -0
- package/skills/ghostget/references/safety-and-state.md +214 -0
- package/skills/ghostget/references/settlement-and-duplicate-cleanup.md +79 -0
- package/skills/ghostget/references/social-platform-routing.md +66 -0
- package/skills/ghostget/references/social-profile-stats.md +195 -0
- package/skills/ghostget/references/social-video-platform-routing.md +89 -0
- package/skills/ghostget/references/whatsapp-adapter.md +101 -0
- package/skills/ghostget/references/x-adapter.md +332 -0
- package/skills/ghostget/references/x-ai-disclosure.md +71 -0
- package/src/apple-photos-cli.ts +639 -0
- package/src/apple-photos-client-types.ts +168 -0
- package/src/apple-photos-client.ts +201 -0
- package/src/apple-photos-contact-evidence.ts +838 -0
- package/src/apple-photos-local-source.ts +1131 -0
- package/src/args.ts +2053 -0
- package/src/article-draft-document.ts +417 -0
- package/src/article-draft-embeds.ts +123 -0
- package/src/article-draft-images.ts +214 -0
- package/src/assets/adapter-template/wrench-adapter.json +40 -0
- package/src/assets/adapters/beeper/wrench-web-adapter.json +1500 -0
- package/src/assets/adapters/beeper/wrench-web-adapter.v1.0.0.json +129 -0
- package/src/assets/adapters/beeper/wrench-web-adapter.v1.1.0.json +207 -0
- package/src/assets/adapters/beeper/wrench-web-adapter.v2.0.0.json +1463 -0
- package/src/assets/adapters/beeper/wrench-web-adapter.v2.1.0.json +1463 -0
- package/src/assets/adapters/beeper/wrench-web-adapter.v2.2.0.json +1475 -0
- package/src/assets/adapters/beeper/wrench-web-adapter.v2.3.0.json +1488 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.json +684 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.v1.0.0.json +581 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.v1.1.0.json +581 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.v1.2.0.json +581 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.v1.3.0.json +615 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.v1.4.0.json +684 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.v1.5.0.json +684 -0
- package/src/assets/adapters/bluesky/wrench-web-adapter.v1.6.0.json +684 -0
- package/src/assets/adapters/clasificados/wrench-web-adapter.json +54 -0
- package/src/assets/adapters/facebook/wrench-web-adapter.json +750 -0
- package/src/assets/adapters/facebook/wrench-web-adapter.v1.0.0.json +706 -0
- package/src/assets/adapters/facebook/wrench-web-adapter.v1.1.0.json +703 -0
- package/src/assets/adapters/facebook/wrench-web-adapter.v1.2.0.json +750 -0
- package/src/assets/adapters/facebook-group/wrench-web-adapter.json +682 -0
- package/src/assets/adapters/facebook-group/wrench-web-adapter.v1.0.0.json +583 -0
- package/src/assets/adapters/facebook-group/wrench-web-adapter.v1.1.0.json +682 -0
- package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.json +437 -0
- package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.v1.0.0.json +383 -0
- package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.v1.1.0.json +437 -0
- package/src/assets/adapters/facebook-marketplace/wrench-web-adapter.v1.1.1.json +437 -0
- package/src/assets/adapters/facebook-page/wrench-web-adapter.json +880 -0
- package/src/assets/adapters/facebook-page/wrench-web-adapter.v1.0.0.json +740 -0
- package/src/assets/adapters/facebook-page/wrench-web-adapter.v1.1.0.json +880 -0
- package/src/assets/adapters/github/wrench-web-adapter.json +69 -0
- package/src/assets/adapters/github/wrench-web-adapter.v1.0.0.json +42 -0
- package/src/assets/adapters/github/wrench-web-adapter.v1.1.0.json +69 -0
- package/src/assets/adapters/gmail/wrench-adapter.json +161 -0
- package/src/assets/adapters/gmail/wrench-adapter.v1.2.0.json +157 -0
- package/src/assets/adapters/hacker-news/wrench-web-adapter.json +315 -0
- package/src/assets/adapters/hacker-news/wrench-web-adapter.v1.0.0.json +315 -0
- package/src/assets/adapters/imessage/wrench-web-adapter.json +236 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.json +719 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.0.0.json +627 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.1.0.json +609 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.2.0.json +640 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.3.0.json +671 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.4.0.json +710 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.5.0.json +710 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.6.0.json +719 -0
- package/src/assets/adapters/instagram/wrench-web-adapter.v1.7.0.json +719 -0
- package/src/assets/adapters/linkedin/wrench-adapter.json +442 -0
- package/src/assets/adapters/linkedin/wrench-adapter.v0.4.0.json +124 -0
- package/src/assets/adapters/linkedin/wrench-adapter.v1.0.0.json +411 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.json +914 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.0.0.json +604 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.1.0.json +604 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.10.0.json +809 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.11.0.json +809 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.12.0.json +820 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.13.0.json +819 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.14.0.json +819 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.15.0.json +819 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.16.0.json +874 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.17.0.json +874 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.18.0.json +874 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.19.0.json +874 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.2.0.json +731 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.3.0.json +768 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.4.0.json +808 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.5.0.json +808 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.6.0.json +808 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.7.0.json +825 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.8.0.json +792 -0
- package/src/assets/adapters/linkedin/wrench-web-adapter.v1.9.0.json +809 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.json +855 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.0.0.json +577 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.1.0.json +604 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.10.0.json +712 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.11.0.json +712 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.12.0.json +712 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.2.0.json +653 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.3.0.json +712 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.4.0.json +713 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.5.0.json +712 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.6.0.json +713 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.7.0.json +713 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.8.0.json +713 -0
- package/src/assets/adapters/reddit/wrench-web-adapter.v1.9.0.json +713 -0
- package/src/assets/adapters/substack/wrench-web-adapter.json +936 -0
- package/src/assets/adapters/substack/wrench-web-adapter.v1.0.0.json +817 -0
- package/src/assets/adapters/substack/wrench-web-adapter.v1.1.0.json +812 -0
- package/src/assets/adapters/substack/wrench-web-adapter.v1.2.0.json +812 -0
- package/src/assets/adapters/substack/wrench-web-adapter.v1.3.0.json +902 -0
- package/src/assets/adapters/substack/wrench-web-adapter.v1.4.0.json +936 -0
- package/src/assets/adapters/substack/wrench-web-adapter.v1.5.0.json +936 -0
- package/src/assets/adapters/substack/wrench-web-adapter.v1.6.0.json +936 -0
- package/src/assets/adapters/threads/wrench-web-adapter.json +692 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.0.0.json +629 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.1.0.json +623 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.2.0.json +622 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.3.0.json +622 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.4.0.json +622 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.5.0.json +699 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.6.0.json +693 -0
- package/src/assets/adapters/threads/wrench-web-adapter.v1.7.0.json +692 -0
- package/src/assets/adapters/tiktok/wrench-web-adapter.json +762 -0
- package/src/assets/adapters/tiktok/wrench-web-adapter.v1.0.0.json +681 -0
- package/src/assets/adapters/tiktok/wrench-web-adapter.v1.1.0.json +708 -0
- package/src/assets/adapters/tiktok/wrench-web-adapter.v1.2.0.json +762 -0
- package/src/assets/adapters/tiktok/wrench-web-adapter.v1.3.0.json +762 -0
- package/src/assets/adapters/twitch/wrench-web-adapter.json +42 -0
- package/src/assets/adapters/twitch/wrench-web-adapter.v1.0.0.json +42 -0
- package/src/assets/adapters/whatsapp/wrench-web-adapter.json +400 -0
- package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.0.0.json +355 -0
- package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.1.0.json +386 -0
- package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.2.0.json +386 -0
- package/src/assets/adapters/whatsapp/wrench-web-adapter.v1.3.0.json +400 -0
- package/src/assets/adapters/x/wrench-adapter.json +749 -0
- package/src/assets/adapters/x/wrench-adapter.v1.0.0.json +700 -0
- package/src/assets/adapters/x/wrench-adapter.v1.1.0.json +707 -0
- package/src/assets/adapters/x/wrench-web-adapter.json +712 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.1.0.json +579 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.10.0.json +685 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.11.0.json +712 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.12.0.json +712 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.13.0.json +712 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.2.0.json +578 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.3.0.json +610 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.4.0.json +617 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.5.0.json +634 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.6.0.json +632 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.7.0.json +649 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.8.0.json +649 -0
- package/src/assets/adapters/x/wrench-web-adapter.v1.9.0.json +683 -0
- package/src/assets/adapters/youtube/wrench-web-adapter.json +561 -0
- package/src/assets/adapters/youtube/wrench-web-adapter.v1.0.0.json +465 -0
- package/src/assets/adapters/youtube/wrench-web-adapter.v1.1.0.json +519 -0
- package/src/assets/adapters/youtube/wrench-web-adapter.v1.2.0.json +561 -0
- package/src/assets/adapters/youtube/wrench-web-adapter.v1.3.0.json +561 -0
- package/src/assets/code-owned-provider-template/plugin.test.ts.template +54 -0
- package/src/assets/code-owned-provider-template/plugin.ts.template +102 -0
- package/src/assets/code-owned-provider-template/runtime.internal.test.ts.template +44 -0
- package/src/assets/code-owned-provider-template/runtime.ts.template +59 -0
- package/src/assets/code-owned-provider-template/wrench-adapter.json.template +33 -0
- package/src/assets/fonts/nebula-sans/LICENSE.txt +96 -0
- package/src/assets/fonts/nebula-sans/NebulaSans-Book.woff2 +0 -0
- package/src/assets/fonts/nebula-sans/PROVENANCE.md +14 -0
- package/src/assets.d.ts +4 -0
- package/src/auth.ts +1157 -0
- package/src/beeper-client-types.ts +169 -0
- package/src/beeper-client.ts +250 -0
- package/src/beeper-contact-interactions-cli.ts +180 -0
- package/src/beeper-contact-interactions.ts +1612 -0
- package/src/beeper-message-bundle-v1.ts +257 -0
- package/src/beeper-message-like-me-cli.ts +84 -0
- package/src/beeper-message-like-me-export.ts +2274 -0
- package/src/beeper-message-like-me-recovery.ts +931 -0
- package/src/beeper-message-like-me-source.ts +4034 -0
- package/src/browser-admission.ts +928 -0
- package/src/browser-snapshots.ts +260 -0
- package/src/browser.ts +3873 -0
- package/src/canonical-json.ts +60 -0
- package/src/catalog-cli.ts +638 -0
- package/src/cli.ts +208 -0
- package/src/client-types.ts +301 -0
- package/src/client.ts +2726 -0
- package/src/confirmed-write-failure.ts +44 -0
- package/src/confirmed-write-model.ts +72 -0
- package/src/confirmed-write-platform.ts +1055 -0
- package/src/confirmed-write-program.ts +224 -0
- package/src/confirmed-write-runtime.ts +16 -0
- package/src/cursor-token.ts +228 -0
- package/src/derivation-dnr-readiness.ts +367 -0
- package/src/derivation-file-chooser.ts +384 -0
- package/src/derivation-network-boundary.ts +835 -0
- package/src/derivation-network-guard.ts +782 -0
- package/src/derivation-network-proxy-helper.ts +440 -0
- package/src/derivation-network-proxy.ts +385 -0
- package/src/derive-command-helper.ts +693 -0
- package/src/derive-fixtures.ts +343 -0
- package/src/derive-review.ts +980 -0
- package/src/derive.ts +4754 -0
- package/src/fixtures/beeper-message-like-me-v1/accounts.ndjson +2 -0
- package/src/fixtures/beeper-message-like-me-v1/conversations.ndjson +1 -0
- package/src/fixtures/beeper-message-like-me-v1/manifest.json +1 -0
- package/src/fixtures/beeper-message-like-me-v1/messages.ndjson +2 -0
- package/src/fixtures/beeper-message-like-me-v1/participants.ndjson +3 -0
- package/src/fixtures/beeper-message-like-me-v1/reactions.ndjson +1 -0
- package/src/fixtures/beeper-message-like-me-v1/tombstones.ndjson +1 -0
- package/src/ghostget.ts +3672 -0
- package/src/gmail-capture.ts +1244 -0
- package/src/har-internal.ts +1242 -0
- package/src/har.ts +743 -0
- package/src/index.ts +218 -0
- package/src/invocation-read-platform.ts +55 -0
- package/src/invocation-read-program.ts +93 -0
- package/src/invocation-read-runtime.ts +11 -0
- package/src/linked-device-lifecycle-admission.ts +450 -0
- package/src/linked-device-lifecycle-journal.ts +1560 -0
- package/src/linked-device-lifecycle-runtime.ts +1602 -0
- package/src/local-cli-admission.ts +135 -0
- package/src/local-cli-contracts.ts +271 -0
- package/src/local-cli-execution.ts +98 -0
- package/src/local-cli-surface-contract.ts +1510 -0
- package/src/local-cli-tool-identity.ts +336 -0
- package/src/media/archive.ts +2325 -0
- package/src/media/args.ts +303 -0
- package/src/media/cli.ts +287 -0
- package/src/media/doctor.ts +475 -0
- package/src/media/ffmpeg.ts +1330 -0
- package/src/media/http-capture.ts +711 -0
- package/src/media/http-probe.ts +593 -0
- package/src/media/http.ts +387 -0
- package/src/media/index.ts +10 -0
- package/src/media/local-transcription.ts +613 -0
- package/src/media/lock.ts +321 -0
- package/src/media/manifest.ts +1712 -0
- package/src/media/metadata.ts +906 -0
- package/src/media/process.ts +723 -0
- package/src/media/revision.ts +166 -0
- package/src/media/runtime-closure.ts +1063 -0
- package/src/media/source-router.ts +187 -0
- package/src/media/transcriber-config.ts +1122 -0
- package/src/media/transcript-persistence-model.ts +15 -0
- package/src/media/transcript-persistence-platform.ts +89 -0
- package/src/media/transcript-persistence-program.ts +39 -0
- package/src/media/transcript-persistence-runtime.ts +24 -0
- package/src/media/transcript.ts +616 -0
- package/src/media/utf8-order.ts +30 -0
- package/src/media/whisper-cpp.ts +464 -0
- package/src/media/whisper-language.ts +58 -0
- package/src/media/yt-dlp.ts +439 -0
- package/src/message-like-me-agentic-messaging.ts +882 -0
- package/src/messaging-action-store.ts +793 -0
- package/src/messaging-runtime.ts +2136 -0
- package/src/messaging-store.ts +539 -0
- package/src/messaging-types.ts +1663 -0
- package/src/messaging.ts +334 -0
- package/src/model.ts +2671 -0
- package/src/oauth-google.ts +888 -0
- package/src/omni-client-types.ts +306 -0
- package/src/omni-client.ts +2225 -0
- package/src/omni-limits.ts +34 -0
- package/src/omni-model.ts +1614 -0
- package/src/omni-request.ts +379 -0
- package/src/omni-runtime.ts +1632 -0
- package/src/operation-deadline.ts +189 -0
- package/src/path-helper.ts +1656 -0
- package/src/pinned-https.ts +194 -0
- package/src/plan-assets.ts +832 -0
- package/src/platform-catalog.ts +1832 -0
- package/src/plugins/beeper-linked-device/plugin.ts +310 -0
- package/src/plugins/bluesky-web/plugin.ts +178 -0
- package/src/plugins/clasificados-web/plugin.ts +66 -0
- package/src/plugins/github-web/plugin.ts +80 -0
- package/src/plugins/gmail-official/plugin.ts +110 -0
- package/src/plugins/hacker-news-web/plugin.ts +52 -0
- package/src/plugins/imessage-direct/plugin.ts +195 -0
- package/src/plugins/imessage-direct/vendor/0001-fix-keep-AppleScript-send-payloads-out-of-child-argv.patch +1430 -0
- package/src/plugins/imessage-direct/vendor/0002-feat-rpc-add-exact-chat-lookup.patch +225 -0
- package/src/plugins/imessage-direct/vendor/provenance.json +80 -0
- package/src/plugins/linkedin-official/plugin.ts +84 -0
- package/src/plugins/linkedin-web/plugin.ts +412 -0
- package/src/plugins/meta-web/plugin.ts +317 -0
- package/src/plugins/reddit-web/flair.ts +492 -0
- package/src/plugins/reddit-web/plugin.ts +477 -0
- package/src/plugins/substack-web/plugin.ts +124 -0
- package/src/plugins/tiktok-web/plugin.ts +67 -0
- package/src/plugins/twitch-web/plugin.ts +54 -0
- package/src/plugins/whatsapp-linked-device/plugin.ts +105 -0
- package/src/plugins/x-official/plugin.ts +64 -0
- package/src/plugins/x-web/plugin.ts +488 -0
- package/src/plugins/youtube-web/plugin.ts +101 -0
- package/src/portable-run-recovery.ts +466 -0
- package/src/process-identity.ts +501 -0
- package/src/profile-clone-helper.ts +104 -0
- package/src/provider-catalog-views.ts +51 -0
- package/src/provider-context.ts +69 -0
- package/src/provider-contract-definitions-x.ts +45 -0
- package/src/provider-contract-definitions.ts +948 -0
- package/src/provider-contract-input-gmail.ts +176 -0
- package/src/provider-contract-input-linkedin.ts +77 -0
- package/src/provider-contract-input-x.ts +304 -0
- package/src/provider-contract-planning.ts +23 -0
- package/src/provider-contract-semantic-identity.ts +54 -0
- package/src/provider-contracts.ts +251 -0
- package/src/provider-http.ts +723 -0
- package/src/provider-plugin-auth.ts +36 -0
- package/src/provider-plugin-builtins.ts +229 -0
- package/src/provider-plugin-cleanup-barrier.ts +229 -0
- package/src/provider-plugin-cleanup-execution.ts +79 -0
- package/src/provider-plugin-cleanup-resource.ts +470 -0
- package/src/provider-plugin-contract-identity.ts +707 -0
- package/src/provider-plugin-host.ts +1972 -0
- package/src/provider-plugin-identifiers.ts +60 -0
- package/src/provider-plugin-invocation-lease.ts +889 -0
- package/src/provider-plugin-lifecycle-kernel.ts +566 -0
- package/src/provider-plugin-lifecycle.ts +1455 -0
- package/src/provider-plugin-module-analysis.ts +336 -0
- package/src/provider-plugin-package.ts +2530 -0
- package/src/provider-plugin-portable-authority.ts +106 -0
- package/src/provider-plugin-portable-catalog.ts +94 -0
- package/src/provider-plugin-portable-identity.ts +315 -0
- package/src/provider-plugin-portable-runtime.ts +2057 -0
- package/src/provider-plugin-protocol.ts +1625 -0
- package/src/provider-plugin-registry.ts +3342 -0
- package/src/provider-plugin-store.ts +2155 -0
- package/src/provider-plugin-test-fixture.ts +5 -0
- package/src/provider-plugin.ts +4907 -0
- package/src/provider-plugins.generated.ts +43 -0
- package/src/provider-plugins.ts +8 -0
- package/src/provider-subject.ts +41 -0
- package/src/provider.ts +315 -0
- package/src/providers/beeper-local-runtime.ts +5426 -0
- package/src/providers/beeper-local.ts +2739 -0
- package/src/providers/beeper-messaging.ts +462 -0
- package/src/providers/beeper-omni.ts +1159 -0
- package/src/providers/bluesky-web-runtime.ts +2895 -0
- package/src/providers/bluesky-web.ts +1614 -0
- package/src/providers/clasificados-web-runtime.ts +255 -0
- package/src/providers/clasificados-web.ts +503 -0
- package/src/providers/contact-projection.ts +301 -0
- package/src/providers/github-read-model.ts +94 -0
- package/src/providers/github-read-platform.ts +165 -0
- package/src/providers/github-read-program.ts +97 -0
- package/src/providers/github-web-runtime.ts +320 -0
- package/src/providers/github-web.ts +403 -0
- package/src/providers/gmail-api.ts +2834 -0
- package/src/providers/gmail-omni.ts +830 -0
- package/src/providers/gmail.ts +1130 -0
- package/src/providers/hacker-news-web-runtime.ts +220 -0
- package/src/providers/hacker-news-web.ts +809 -0
- package/src/providers/imessage-direct-install.ts +354 -0
- package/src/providers/imessage-direct-messaging.ts +532 -0
- package/src/providers/imessage-direct-omni.ts +400 -0
- package/src/providers/imessage-direct-runtime.ts +1498 -0
- package/src/providers/imessage-direct.ts +351 -0
- package/src/providers/instagram-video-foundations.ts +913 -0
- package/src/providers/instagram-web-profile-browser.ts +600 -0
- package/src/providers/iso-bmff.ts +338 -0
- package/src/providers/linkedin-company-platform.ts +42 -0
- package/src/providers/linkedin-company-program.ts +88 -0
- package/src/providers/linkedin-contact-failure.ts +84 -0
- package/src/providers/linkedin-contact-platform.ts +45 -0
- package/src/providers/linkedin-contact-program.ts +91 -0
- package/src/providers/linkedin-profile-activity-failure.ts +76 -0
- package/src/providers/linkedin-profile-activity-platform.ts +41 -0
- package/src/providers/linkedin-profile-activity-program.ts +67 -0
- package/src/providers/linkedin-read-failure.ts +52 -0
- package/src/providers/linkedin-self-platform.ts +53 -0
- package/src/providers/linkedin-self-program.ts +122 -0
- package/src/providers/linkedin-web-article-browser.ts +794 -0
- package/src/providers/linkedin-web-bootstrap.ts +146 -0
- package/src/providers/linkedin-web-contact.ts +830 -0
- package/src/providers/linkedin-web-feed-browser.ts +832 -0
- package/src/providers/linkedin-web-feed.ts +864 -0
- package/src/providers/linkedin-web-post-browser.ts +653 -0
- package/src/providers/linkedin-web-profile-browser.ts +683 -0
- package/src/providers/linkedin-web-runtime.ts +2388 -0
- package/src/providers/linkedin-web.ts +3305 -0
- package/src/providers/linkedin.ts +1885 -0
- package/src/providers/meta-bootstrap.ts +1043 -0
- package/src/providers/meta-facebook-group.ts +690 -0
- package/src/providers/meta-marketplace-relay.ts +747 -0
- package/src/providers/meta-omni.ts +373 -0
- package/src/providers/meta-relay-bundle.ts +1049 -0
- package/src/providers/meta-web-descriptors.ts +1740 -0
- package/src/providers/meta-web-runtime.ts +3388 -0
- package/src/providers/meta-web.ts +2931 -0
- package/src/providers/read-failure.ts +139 -0
- package/src/providers/reddit-omni.ts +462 -0
- package/src/providers/reddit-web-runtime.ts +1929 -0
- package/src/providers/reddit-web.ts +1611 -0
- package/src/providers/rental-listings.ts +460 -0
- package/src/providers/substack-omni.ts +406 -0
- package/src/providers/substack-video-mp4.ts +33 -0
- package/src/providers/substack-web-runtime.ts +2812 -0
- package/src/providers/substack-web.ts +1502 -0
- package/src/providers/tiktok-video-mp4.ts +33 -0
- package/src/providers/tiktok-web-runtime.ts +770 -0
- package/src/providers/tiktok-web.ts +2786 -0
- package/src/providers/twitch-web-runtime.ts +226 -0
- package/src/providers/twitch-web.ts +274 -0
- package/src/providers/whatsapp-account-identity.ts +55 -0
- package/src/providers/whatsapp-contact-projection-helper.ts +874 -0
- package/src/providers/whatsapp-contact-projection-protocol.ts +403 -0
- package/src/providers/whatsapp-interaction-projection-helper.ts +1452 -0
- package/src/providers/whatsapp-interaction-projection-protocol.ts +462 -0
- package/src/providers/whatsapp-message-export-projection-protocol.ts +532 -0
- package/src/providers/whatsapp-messaging.ts +132 -0
- package/src/providers/whatsapp-omni.ts +586 -0
- package/src/providers/whatsapp-web-runtime.ts +3108 -0
- package/src/providers/whatsapp-web.ts +1037 -0
- package/src/providers/x-image-provenance.ts +523 -0
- package/src/providers/x-made-with-ai.ts +106 -0
- package/src/providers/x-transaction-id.ts +413 -0
- package/src/providers/x-web-runtime.ts +3485 -0
- package/src/providers/x-web.ts +2332 -0
- package/src/providers/x.ts +1889 -0
- package/src/providers/youtube-web-runtime.ts +1400 -0
- package/src/providers/youtube-web.ts +1221 -0
- package/src/read-admission-runtime.ts +91 -0
- package/src/read-client.ts +521 -0
- package/src/read-effect-platform.ts +7 -0
- package/src/read-effect-runtime.ts +14 -0
- package/src/read-effect.ts +52 -0
- package/src/read-projection-admission.ts +866 -0
- package/src/read-projections.ts +3151 -0
- package/src/recovery.ts +1492 -0
- package/src/reviewed-template.ts +146 -0
- package/src/run-journal.ts +1272 -0
- package/src/runtime.ts +5116 -0
- package/src/scripts/generate-provider-plugin-catalog.ts +121 -0
- package/src/scripts/install-whatsapp-protocol.sh +232 -0
- package/src/scripts/recover-install-stages.ts +1491 -0
- package/src/scripts/resolve-state-home.ts +30 -0
- package/src/scripts/scaffold-web-provider.ts +973 -0
- package/src/scripts/sync-bundled-adapters.ts +695 -0
- package/src/session-secrets.ts +1183 -0
- package/src/state-helper.bunfig.toml +2 -0
- package/src/state-helper.ts +2914 -0
- package/src/storage.ts +3842 -0
- package/src/transport-policy.ts +2 -0
- package/src/usage.ts +182 -0
- package/src/version.ts +2 -0
- package/src/web-session-authentication-policy.ts +136 -0
- package/src/web-session-cleanup-admission.ts +2344 -0
- package/src/web-session-cleanup-join.ts +99 -0
- package/src/web-session-client.ts +996 -0
- package/src/web-session-contract-definitions.ts +820 -0
- package/src/web-session-contract-planning.ts +42 -0
- package/src/web-session-contracts.ts +228 -0
- package/src/web-session-cookies.ts +500 -0
- package/src/web-session-execution.ts +385 -0
- package/src/web-session-http.ts +373 -0
- package/src/web-session-read-errors.ts +19 -0
- package/src/web-session-read-runtime.ts +124 -0
- package/src/web-session-recovery.ts +818 -0
- package/src/web-session-sites.ts +58 -0
- package/src/web-session-template.ts +994 -0
- package/src/web-session.ts +93 -0
- package/src/whatsapp-client-binding.ts +21 -0
- package/src/whatsapp-client-types.ts +75 -0
- package/src/whatsapp-client.ts +395 -0
- package/src/whatsapp-export-coordinate.ts +17 -0
- package/src/whatsapp-message-bundle-v2.ts +195 -0
- package/src/whatsapp-message-like-me-cli.ts +195 -0
- package/src/whatsapp-message-like-me-export.ts +1072 -0
- package/src/whatsapp-message-like-me-source.ts +1012 -0
- package/tsconfig.json +67 -0
|
@@ -0,0 +1,712 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 4,
|
|
3
|
+
"id": "x-web",
|
|
4
|
+
"version": "1.12.0",
|
|
5
|
+
"displayName": "X (Authenticated Web API)",
|
|
6
|
+
"surfaceId": "x",
|
|
7
|
+
"origins": [
|
|
8
|
+
"https://x.com"
|
|
9
|
+
],
|
|
10
|
+
"browserDomains": [
|
|
11
|
+
"x.com"
|
|
12
|
+
],
|
|
13
|
+
"operations": {
|
|
14
|
+
"profiles.read": {
|
|
15
|
+
"description": "Observed contract: read one exact X profile through the current captured first-party UserByScreenName GraphQL query with target-bound exact follower and following 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 X handle without a leading @",
|
|
25
|
+
"minLength": 1,
|
|
26
|
+
"maxLength": 15
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"required": [
|
|
30
|
+
"handle"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"webSession": {
|
|
34
|
+
"site": "x",
|
|
35
|
+
"action": "profiles.read",
|
|
36
|
+
"contractVersion": 1,
|
|
37
|
+
"timeoutMs": 60000,
|
|
38
|
+
"maxOutputBytes": 2097152
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"feeds.read": {
|
|
42
|
+
"description": "Observed contract: read one complete bounded X For You, Following, user, List, search, or bookmarks provider page through its current captured first-party GraphQL query; bookmarks pages emit stable export items keyed by post_id plus a next-page cursor; user/List responses must echo the requested identity and an over-limit page fails without exposing its end cursor.",
|
|
43
|
+
"risk": "R1",
|
|
44
|
+
"sideEffect": "none",
|
|
45
|
+
"idempotency": "none",
|
|
46
|
+
"dedupeWindowMs": 0,
|
|
47
|
+
"input": {
|
|
48
|
+
"properties": {
|
|
49
|
+
"feed": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "Exact X timeline or discovery surface",
|
|
52
|
+
"enum": [
|
|
53
|
+
"for-you",
|
|
54
|
+
"following",
|
|
55
|
+
"user",
|
|
56
|
+
"list",
|
|
57
|
+
"search",
|
|
58
|
+
"bookmarks"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"user_id": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"description": "Exact X user ID for a user feed",
|
|
64
|
+
"minLength": 1,
|
|
65
|
+
"maxLength": 32
|
|
66
|
+
},
|
|
67
|
+
"list_id": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"description": "Exact X List ID",
|
|
70
|
+
"minLength": 1,
|
|
71
|
+
"maxLength": 32
|
|
72
|
+
},
|
|
73
|
+
"query": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"description": "Exact X search query",
|
|
76
|
+
"minLength": 1,
|
|
77
|
+
"maxLength": 512
|
|
78
|
+
},
|
|
79
|
+
"cursor": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"description": "Opaque cursor returned by the preceding page",
|
|
82
|
+
"minLength": 1,
|
|
83
|
+
"maxLength": 4096
|
|
84
|
+
},
|
|
85
|
+
"limit": {
|
|
86
|
+
"type": "number",
|
|
87
|
+
"description": "Maximum timeline entries to project",
|
|
88
|
+
"minimum": 1,
|
|
89
|
+
"maximum": 100
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"required": [
|
|
93
|
+
"feed"
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
"webSession": {
|
|
97
|
+
"site": "x",
|
|
98
|
+
"action": "feeds.read",
|
|
99
|
+
"contractVersion": 1,
|
|
100
|
+
"timeoutMs": 60000,
|
|
101
|
+
"maxOutputBytes": 4194304
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"posts.read": {
|
|
105
|
+
"description": "Observed contract: read one X post through the current captured TweetDetail first-party GraphQL query with a bounded normalized projection.",
|
|
106
|
+
"risk": "R1",
|
|
107
|
+
"sideEffect": "none",
|
|
108
|
+
"idempotency": "none",
|
|
109
|
+
"dedupeWindowMs": 0,
|
|
110
|
+
"input": {
|
|
111
|
+
"properties": {
|
|
112
|
+
"post_id": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"description": "Exact X post ID",
|
|
115
|
+
"minLength": 1,
|
|
116
|
+
"maxLength": 32
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"required": [
|
|
120
|
+
"post_id"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"webSession": {
|
|
124
|
+
"site": "x",
|
|
125
|
+
"action": "posts.read",
|
|
126
|
+
"contractVersion": 1,
|
|
127
|
+
"timeoutMs": 60000,
|
|
128
|
+
"maxOutputBytes": 2097152
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"comments.read": {
|
|
132
|
+
"description": "Observed contract: read one complete bounded X conversation page through the current captured TweetDetail query; an over-limit reply page fails without exposing its end cursor.",
|
|
133
|
+
"risk": "R1",
|
|
134
|
+
"sideEffect": "none",
|
|
135
|
+
"idempotency": "none",
|
|
136
|
+
"dedupeWindowMs": 0,
|
|
137
|
+
"input": {
|
|
138
|
+
"properties": {
|
|
139
|
+
"post_id": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"description": "Exact root X post ID",
|
|
142
|
+
"minLength": 1,
|
|
143
|
+
"maxLength": 32
|
|
144
|
+
},
|
|
145
|
+
"cursor": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"description": "Opaque conversation cursor returned by the preceding page",
|
|
148
|
+
"minLength": 1,
|
|
149
|
+
"maxLength": 4096
|
|
150
|
+
},
|
|
151
|
+
"limit": {
|
|
152
|
+
"type": "number",
|
|
153
|
+
"description": "Maximum conversation entries to project",
|
|
154
|
+
"minimum": 1,
|
|
155
|
+
"maximum": 100
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"required": [
|
|
159
|
+
"post_id"
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
"webSession": {
|
|
163
|
+
"site": "x",
|
|
164
|
+
"action": "comments.read",
|
|
165
|
+
"contractVersion": 1,
|
|
166
|
+
"timeoutMs": 60000,
|
|
167
|
+
"maxOutputBytes": 4194304
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"messaging.list": {
|
|
171
|
+
"description": "Capture-required contract reservation: current X DMs use encrypted X Chat events, so plaintext inbox listing remains disabled until verified key recovery is installed.",
|
|
172
|
+
"risk": "R1",
|
|
173
|
+
"sideEffect": "none",
|
|
174
|
+
"idempotency": "none",
|
|
175
|
+
"dedupeWindowMs": 0,
|
|
176
|
+
"input": {
|
|
177
|
+
"properties": {
|
|
178
|
+
"folder": {
|
|
179
|
+
"type": "string",
|
|
180
|
+
"description": "Exact X direct-message folder",
|
|
181
|
+
"enum": [
|
|
182
|
+
"inbox",
|
|
183
|
+
"requests",
|
|
184
|
+
"additional"
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
"cursor": {
|
|
188
|
+
"type": "string",
|
|
189
|
+
"description": "Opaque cursor returned by the preceding page",
|
|
190
|
+
"minLength": 1,
|
|
191
|
+
"maxLength": 4096
|
|
192
|
+
},
|
|
193
|
+
"limit": {
|
|
194
|
+
"type": "number",
|
|
195
|
+
"description": "Maximum conversations to project",
|
|
196
|
+
"minimum": 1,
|
|
197
|
+
"maximum": 100
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"required": [
|
|
201
|
+
"folder"
|
|
202
|
+
]
|
|
203
|
+
},
|
|
204
|
+
"webSession": {
|
|
205
|
+
"site": "x",
|
|
206
|
+
"action": "messaging.list",
|
|
207
|
+
"contractVersion": 1,
|
|
208
|
+
"timeoutMs": 60000,
|
|
209
|
+
"maxOutputBytes": 4194304
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"messaging.read": {
|
|
213
|
+
"description": "Capture-required contract reservation: current X Chat events are encrypted, so plaintext conversation reads remain disabled until verified key recovery and acknowledgement-free handling are installed.",
|
|
214
|
+
"risk": "R1",
|
|
215
|
+
"sideEffect": "none",
|
|
216
|
+
"idempotency": "none",
|
|
217
|
+
"dedupeWindowMs": 0,
|
|
218
|
+
"input": {
|
|
219
|
+
"properties": {
|
|
220
|
+
"conversation_id": {
|
|
221
|
+
"type": "string",
|
|
222
|
+
"description": "Exact opaque conversation identifier returned by messaging.list",
|
|
223
|
+
"minLength": 1,
|
|
224
|
+
"maxLength": 512
|
|
225
|
+
},
|
|
226
|
+
"cursor": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"description": "Opaque cursor returned by the preceding page",
|
|
229
|
+
"minLength": 1,
|
|
230
|
+
"maxLength": 4096
|
|
231
|
+
},
|
|
232
|
+
"limit": {
|
|
233
|
+
"type": "number",
|
|
234
|
+
"description": "Maximum messages to project",
|
|
235
|
+
"minimum": 1,
|
|
236
|
+
"maximum": 100
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"required": [
|
|
240
|
+
"conversation_id"
|
|
241
|
+
]
|
|
242
|
+
},
|
|
243
|
+
"webSession": {
|
|
244
|
+
"site": "x",
|
|
245
|
+
"action": "messaging.read",
|
|
246
|
+
"contractVersion": 1,
|
|
247
|
+
"timeoutMs": 60000,
|
|
248
|
+
"maxOutputBytes": 4194304
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
"articles.read": {
|
|
252
|
+
"description": "Observed contract: read one exact current-viewer-owned private X Article draft through the current ArticleEntityResultByRestId query. The closed output binds the exact article ID, viewer-owner ID, Draft lifecycle, unpublished state, one-line title, and bounded rich content; published Articles remain outside this contract.",
|
|
253
|
+
"risk": "R1",
|
|
254
|
+
"sideEffect": "none",
|
|
255
|
+
"idempotency": "none",
|
|
256
|
+
"dedupeWindowMs": 0,
|
|
257
|
+
"input": {
|
|
258
|
+
"properties": {
|
|
259
|
+
"article_id": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"description": "Exact 1-19 digit private X Article draft ID owned by the current viewer",
|
|
262
|
+
"minLength": 1,
|
|
263
|
+
"maxLength": 19
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"required": [
|
|
267
|
+
"article_id"
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
"webSession": {
|
|
271
|
+
"site": "x",
|
|
272
|
+
"action": "articles.read",
|
|
273
|
+
"contractVersion": 2,
|
|
274
|
+
"timeoutMs": 60000,
|
|
275
|
+
"maxOutputBytes": 4194304
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
"messaging.send": {
|
|
279
|
+
"description": "Capture-required contract reservation: send one confirmed X DM, optionally with one reviewed attachment, after the current mutation, target binding, and media path are captured and reviewed.",
|
|
280
|
+
"risk": "R3",
|
|
281
|
+
"sideEffect": "Sends one externally visible X direct message to the exact confirmed user or conversation.",
|
|
282
|
+
"idempotency": "local-at-most-once",
|
|
283
|
+
"dedupeWindowMs": 86400000,
|
|
284
|
+
"input": {
|
|
285
|
+
"properties": {
|
|
286
|
+
"target_kind": {
|
|
287
|
+
"type": "string",
|
|
288
|
+
"description": "Send to an existing conversation or one exact X user",
|
|
289
|
+
"enum": [
|
|
290
|
+
"conversation",
|
|
291
|
+
"user"
|
|
292
|
+
]
|
|
293
|
+
},
|
|
294
|
+
"target_id": {
|
|
295
|
+
"type": "string",
|
|
296
|
+
"description": "Exact conversation or X user ID selected by target_kind",
|
|
297
|
+
"minLength": 1,
|
|
298
|
+
"maxLength": 512
|
|
299
|
+
},
|
|
300
|
+
"body": {
|
|
301
|
+
"type": "string",
|
|
302
|
+
"description": "Exact direct-message text; an optional reviewed attachment may accompany it",
|
|
303
|
+
"minLength": 1,
|
|
304
|
+
"maxLength": 1000
|
|
305
|
+
},
|
|
306
|
+
"media": {
|
|
307
|
+
"type": "file",
|
|
308
|
+
"description": "Optional reviewed direct-message image, GIF, or video",
|
|
309
|
+
"maxBytes": 536870912,
|
|
310
|
+
"mediaTypes": [
|
|
311
|
+
"image/jpeg",
|
|
312
|
+
"image/png",
|
|
313
|
+
"image/gif",
|
|
314
|
+
"video/mp4"
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
"media_alt_text": {
|
|
318
|
+
"type": "string",
|
|
319
|
+
"description": "Optional accessibility text for reviewed image media",
|
|
320
|
+
"minLength": 1,
|
|
321
|
+
"maxLength": 1000
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
"required": [
|
|
325
|
+
"target_kind",
|
|
326
|
+
"target_id",
|
|
327
|
+
"body"
|
|
328
|
+
]
|
|
329
|
+
},
|
|
330
|
+
"webSession": {
|
|
331
|
+
"site": "x",
|
|
332
|
+
"action": "messaging.send",
|
|
333
|
+
"contractVersion": 1,
|
|
334
|
+
"timeoutMs": 600000,
|
|
335
|
+
"maxOutputBytes": 2097152
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"posts.publish": {
|
|
339
|
+
"description": "Observed contract: publish one confirmed X post with optional reviewed PNG or MP4 through pixels-only upload scrub, CreateTweet response, and fail-closed TweetResultByRestId Made with AI readback.",
|
|
340
|
+
"risk": "R3",
|
|
341
|
+
"sideEffect": "Publishes one externally visible X post with the exact confirmed content and reply audience.",
|
|
342
|
+
"idempotency": "local-at-most-once",
|
|
343
|
+
"dedupeWindowMs": 86400000,
|
|
344
|
+
"input": {
|
|
345
|
+
"properties": {
|
|
346
|
+
"body": {
|
|
347
|
+
"type": "string",
|
|
348
|
+
"description": "Exact post content",
|
|
349
|
+
"minLength": 1,
|
|
350
|
+
"maxLength": 280
|
|
351
|
+
},
|
|
352
|
+
"media": {
|
|
353
|
+
"type": "file",
|
|
354
|
+
"description": "Optional single plan-bound PNG or MP4",
|
|
355
|
+
"maxBytes": 536870912,
|
|
356
|
+
"mediaTypes": [
|
|
357
|
+
"image/png",
|
|
358
|
+
"video/mp4"
|
|
359
|
+
]
|
|
360
|
+
},
|
|
361
|
+
"media_type": {
|
|
362
|
+
"type": "string",
|
|
363
|
+
"description": "Exact media type when one PNG or MP4 is attached",
|
|
364
|
+
"enum": [
|
|
365
|
+
"image/png",
|
|
366
|
+
"video/mp4"
|
|
367
|
+
]
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
"required": [
|
|
371
|
+
"body"
|
|
372
|
+
]
|
|
373
|
+
},
|
|
374
|
+
"webSession": {
|
|
375
|
+
"site": "x",
|
|
376
|
+
"action": "posts.publish",
|
|
377
|
+
"contractVersion": 4,
|
|
378
|
+
"timeoutMs": 600000,
|
|
379
|
+
"maxOutputBytes": 2097152
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
"threads.publish": {
|
|
383
|
+
"description": "Capture-required contract reservation: publish one confirmed text-only X thread only after an authorized live fixture proves each current CreateTweet dispatch.",
|
|
384
|
+
"risk": "R3",
|
|
385
|
+
"sideEffect": "Publishes one externally visible ordered X thread containing every exact confirmed item.",
|
|
386
|
+
"idempotency": "local-at-most-once",
|
|
387
|
+
"dedupeWindowMs": 86400000,
|
|
388
|
+
"input": {
|
|
389
|
+
"properties": {
|
|
390
|
+
"items": {
|
|
391
|
+
"type": "array",
|
|
392
|
+
"description": "Exact ordered post texts, beginning with the thread root",
|
|
393
|
+
"items": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"description": "One exact X thread item",
|
|
396
|
+
"minLength": 1,
|
|
397
|
+
"maxLength": 280
|
|
398
|
+
},
|
|
399
|
+
"minItems": 1,
|
|
400
|
+
"maxItems": 25
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
"required": [
|
|
404
|
+
"items"
|
|
405
|
+
]
|
|
406
|
+
},
|
|
407
|
+
"webSession": {
|
|
408
|
+
"site": "x",
|
|
409
|
+
"action": "threads.publish",
|
|
410
|
+
"contractVersion": 1,
|
|
411
|
+
"timeoutMs": 600000,
|
|
412
|
+
"maxOutputBytes": 2097152
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
"replies.create": {
|
|
416
|
+
"description": "Capture-required contract reservation: publish one confirmed text-only reply only after an authorized live fixture proves current transaction-header and parent binding behavior.",
|
|
417
|
+
"risk": "R3",
|
|
418
|
+
"sideEffect": "Publishes one externally visible X reply to the exact confirmed parent post.",
|
|
419
|
+
"idempotency": "local-at-most-once",
|
|
420
|
+
"dedupeWindowMs": 86400000,
|
|
421
|
+
"input": {
|
|
422
|
+
"properties": {
|
|
423
|
+
"post_id": {
|
|
424
|
+
"type": "string",
|
|
425
|
+
"description": "Exact parent X post ID",
|
|
426
|
+
"minLength": 1,
|
|
427
|
+
"maxLength": 32
|
|
428
|
+
},
|
|
429
|
+
"body": {
|
|
430
|
+
"type": "string",
|
|
431
|
+
"description": "Exact text-only reply content",
|
|
432
|
+
"minLength": 1,
|
|
433
|
+
"maxLength": 280
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
"required": [
|
|
437
|
+
"post_id",
|
|
438
|
+
"body"
|
|
439
|
+
]
|
|
440
|
+
},
|
|
441
|
+
"webSession": {
|
|
442
|
+
"site": "x",
|
|
443
|
+
"action": "replies.create",
|
|
444
|
+
"contractVersion": 1,
|
|
445
|
+
"timeoutMs": 600000,
|
|
446
|
+
"maxOutputBytes": 2097152
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
"posts.repost": {
|
|
450
|
+
"description": "Capture-required contract reservation: set repost state only after an authorized live fixture proves current transaction-header and readback behavior.",
|
|
451
|
+
"risk": "R3",
|
|
452
|
+
"sideEffect": "Creates or removes the authenticated account's repost of the exact confirmed X post.",
|
|
453
|
+
"idempotency": "local-at-most-once",
|
|
454
|
+
"dedupeWindowMs": 86400000,
|
|
455
|
+
"input": {
|
|
456
|
+
"properties": {
|
|
457
|
+
"post_id": {
|
|
458
|
+
"type": "string",
|
|
459
|
+
"description": "Exact X post ID",
|
|
460
|
+
"minLength": 1,
|
|
461
|
+
"maxLength": 32
|
|
462
|
+
},
|
|
463
|
+
"reposted": {
|
|
464
|
+
"type": "boolean",
|
|
465
|
+
"description": "Exact desired repost state"
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
"required": [
|
|
469
|
+
"post_id",
|
|
470
|
+
"reposted"
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
"webSession": {
|
|
474
|
+
"site": "x",
|
|
475
|
+
"action": "posts.repost",
|
|
476
|
+
"contractVersion": 1,
|
|
477
|
+
"timeoutMs": 60000,
|
|
478
|
+
"maxOutputBytes": 2097152
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
"posts.quote": {
|
|
482
|
+
"description": "Capture-required contract reservation: publish one confirmed text-only quote only after an authorized live fixture proves current transaction-header and quote binding behavior.",
|
|
483
|
+
"risk": "R3",
|
|
484
|
+
"sideEffect": "Publishes one externally visible X quote post for the exact confirmed source post.",
|
|
485
|
+
"idempotency": "local-at-most-once",
|
|
486
|
+
"dedupeWindowMs": 86400000,
|
|
487
|
+
"input": {
|
|
488
|
+
"properties": {
|
|
489
|
+
"post_id": {
|
|
490
|
+
"type": "string",
|
|
491
|
+
"description": "Exact quoted X post ID",
|
|
492
|
+
"minLength": 1,
|
|
493
|
+
"maxLength": 32
|
|
494
|
+
},
|
|
495
|
+
"body": {
|
|
496
|
+
"type": "string",
|
|
497
|
+
"description": "Exact text-only quote content",
|
|
498
|
+
"minLength": 1,
|
|
499
|
+
"maxLength": 280
|
|
500
|
+
}
|
|
501
|
+
},
|
|
502
|
+
"required": [
|
|
503
|
+
"post_id",
|
|
504
|
+
"body"
|
|
505
|
+
]
|
|
506
|
+
},
|
|
507
|
+
"webSession": {
|
|
508
|
+
"site": "x",
|
|
509
|
+
"action": "posts.quote",
|
|
510
|
+
"contractVersion": 1,
|
|
511
|
+
"timeoutMs": 600000,
|
|
512
|
+
"maxOutputBytes": 2097152
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
"likes.set": {
|
|
516
|
+
"description": "Observed contract: set or clear one exact X like through the current FavoriteTweet or UnfavoriteTweet mutation, then verify the desired state through an independent TweetResultByRestId readback.",
|
|
517
|
+
"risk": "R2",
|
|
518
|
+
"sideEffect": "Sets or clears the authenticated account's like on the exact confirmed X post.",
|
|
519
|
+
"idempotency": "local-at-most-once",
|
|
520
|
+
"dedupeWindowMs": 86400000,
|
|
521
|
+
"input": {
|
|
522
|
+
"properties": {
|
|
523
|
+
"post_id": {
|
|
524
|
+
"type": "string",
|
|
525
|
+
"description": "Exact X post ID",
|
|
526
|
+
"minLength": 1,
|
|
527
|
+
"maxLength": 32
|
|
528
|
+
},
|
|
529
|
+
"liked": {
|
|
530
|
+
"type": "boolean",
|
|
531
|
+
"description": "Exact desired like state"
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
"required": [
|
|
535
|
+
"post_id",
|
|
536
|
+
"liked"
|
|
537
|
+
]
|
|
538
|
+
},
|
|
539
|
+
"webSession": {
|
|
540
|
+
"site": "x",
|
|
541
|
+
"action": "likes.set",
|
|
542
|
+
"contractVersion": 2,
|
|
543
|
+
"timeoutMs": 60000,
|
|
544
|
+
"maxOutputBytes": 2097152
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
"content.save": {
|
|
548
|
+
"description": "Observed contract: set or clear one exact X bookmark through the current first-party mutation, then verify the desired state through an independent post readback.",
|
|
549
|
+
"risk": "R2",
|
|
550
|
+
"sideEffect": "Saves or removes the exact confirmed X post in the authenticated account's bookmarks.",
|
|
551
|
+
"idempotency": "local-at-most-once",
|
|
552
|
+
"dedupeWindowMs": 86400000,
|
|
553
|
+
"input": {
|
|
554
|
+
"properties": {
|
|
555
|
+
"post_id": {
|
|
556
|
+
"type": "string",
|
|
557
|
+
"description": "Exact X post ID",
|
|
558
|
+
"minLength": 1,
|
|
559
|
+
"maxLength": 32
|
|
560
|
+
},
|
|
561
|
+
"saved": {
|
|
562
|
+
"type": "boolean",
|
|
563
|
+
"description": "Exact desired bookmark state"
|
|
564
|
+
}
|
|
565
|
+
},
|
|
566
|
+
"required": [
|
|
567
|
+
"post_id",
|
|
568
|
+
"saved"
|
|
569
|
+
]
|
|
570
|
+
},
|
|
571
|
+
"webSession": {
|
|
572
|
+
"site": "x",
|
|
573
|
+
"action": "content.save",
|
|
574
|
+
"contractVersion": 1,
|
|
575
|
+
"timeoutMs": 60000,
|
|
576
|
+
"maxOutputBytes": 2097152
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
"content.delete": {
|
|
580
|
+
"description": "Capture-required contract reservation: delete one exact current-account X post only after the current DeleteTweet request, accepted response, author binding, and exact not-found readback are live-proven.",
|
|
581
|
+
"risk": "R3",
|
|
582
|
+
"sideEffect": "Permanently deletes the exact confirmed authored X post from the authenticated account.",
|
|
583
|
+
"idempotency": "local-at-most-once",
|
|
584
|
+
"dedupeWindowMs": 2592000000,
|
|
585
|
+
"input": {
|
|
586
|
+
"properties": {
|
|
587
|
+
"post_id": {
|
|
588
|
+
"type": "string",
|
|
589
|
+
"description": "Exact X post ID",
|
|
590
|
+
"minLength": 1,
|
|
591
|
+
"maxLength": 32
|
|
592
|
+
},
|
|
593
|
+
"expected_text": {
|
|
594
|
+
"type": "string",
|
|
595
|
+
"description": "Exact current post text used for pre-delete confirmation",
|
|
596
|
+
"minLength": 1,
|
|
597
|
+
"maxLength": 280
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
"required": [
|
|
601
|
+
"post_id",
|
|
602
|
+
"expected_text"
|
|
603
|
+
]
|
|
604
|
+
},
|
|
605
|
+
"webSession": {
|
|
606
|
+
"site": "x",
|
|
607
|
+
"action": "content.delete",
|
|
608
|
+
"contractVersion": 1,
|
|
609
|
+
"timeoutMs": 60000,
|
|
610
|
+
"maxOutputBytes": 2097152
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
"articles.draft.save": {
|
|
614
|
+
"description": "Create or replace one private native X Article draft from ArticleDraftDocument schemaVersion 2 with ordered local inline images. This operation has no publish-capable branch.",
|
|
615
|
+
"risk": "R2",
|
|
616
|
+
"sideEffect": "Creates one private native X Article draft, or replaces the exact confirmed existing private draft, with the confirmed title, structure, styles, native links, inline image bytes, and captions; it never publishes the draft.",
|
|
617
|
+
"idempotency": "local-at-most-once",
|
|
618
|
+
"dedupeWindowMs": 86400000,
|
|
619
|
+
"input": {
|
|
620
|
+
"properties": {
|
|
621
|
+
"title": {
|
|
622
|
+
"type": "string",
|
|
623
|
+
"description": "Exact native article title",
|
|
624
|
+
"minLength": 1,
|
|
625
|
+
"maxLength": 100
|
|
626
|
+
},
|
|
627
|
+
"document": {
|
|
628
|
+
"type": "string",
|
|
629
|
+
"description": "Canonical JSON for ArticleDraftDocument schemaVersion 2; supports bounded paragraphs, headings, lists, blockquotes, native HTTPS links, text styles, and ordered inline image blocks with optional captions; X Article image alt text remains capture-required",
|
|
630
|
+
"minLength": 1,
|
|
631
|
+
"maxLength": 524288
|
|
632
|
+
},
|
|
633
|
+
"draft_id": {
|
|
634
|
+
"type": "string",
|
|
635
|
+
"description": "Optional exact existing private X Article draft to replace in place",
|
|
636
|
+
"minLength": 1,
|
|
637
|
+
"maxLength": 19
|
|
638
|
+
},
|
|
639
|
+
"inline_images": {
|
|
640
|
+
"type": "array",
|
|
641
|
+
"description": "Ordered plan-bound local image files referenced by document imageIndex",
|
|
642
|
+
"items": {
|
|
643
|
+
"type": "file",
|
|
644
|
+
"description": "One exact JPEG, PNG, or WebP inline image",
|
|
645
|
+
"maxBytes": 5242880,
|
|
646
|
+
"mediaTypes": [
|
|
647
|
+
"image/jpeg",
|
|
648
|
+
"image/png",
|
|
649
|
+
"image/webp"
|
|
650
|
+
]
|
|
651
|
+
},
|
|
652
|
+
"minItems": 1,
|
|
653
|
+
"maxItems": 20
|
|
654
|
+
}
|
|
655
|
+
},
|
|
656
|
+
"required": [
|
|
657
|
+
"title",
|
|
658
|
+
"document",
|
|
659
|
+
"inline_images"
|
|
660
|
+
]
|
|
661
|
+
},
|
|
662
|
+
"webSession": {
|
|
663
|
+
"site": "x",
|
|
664
|
+
"action": "articles.draft.save",
|
|
665
|
+
"contractVersion": 2,
|
|
666
|
+
"timeoutMs": 600000,
|
|
667
|
+
"maxOutputBytes": 2097152
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
"articles.publish": {
|
|
671
|
+
"description": "Capture-required reservation: publish one exact existing private X Article draft only after the distinct publish mutation and public readback are captured and response-bound.",
|
|
672
|
+
"risk": "R3",
|
|
673
|
+
"sideEffect": "Publishes one externally visible native X Article from the exact confirmed private draft.",
|
|
674
|
+
"idempotency": "local-at-most-once",
|
|
675
|
+
"dedupeWindowMs": 86400000,
|
|
676
|
+
"input": {
|
|
677
|
+
"properties": {
|
|
678
|
+
"title": {
|
|
679
|
+
"type": "string",
|
|
680
|
+
"description": "Exact native article title used for confirmation",
|
|
681
|
+
"minLength": 1,
|
|
682
|
+
"maxLength": 100
|
|
683
|
+
},
|
|
684
|
+
"body": {
|
|
685
|
+
"type": "string",
|
|
686
|
+
"description": "Exact native article body used for confirmation",
|
|
687
|
+
"minLength": 1,
|
|
688
|
+
"maxLength": 20000
|
|
689
|
+
},
|
|
690
|
+
"draft_id": {
|
|
691
|
+
"type": "string",
|
|
692
|
+
"description": "Exact private X Article draft to publish",
|
|
693
|
+
"minLength": 1,
|
|
694
|
+
"maxLength": 19
|
|
695
|
+
}
|
|
696
|
+
},
|
|
697
|
+
"required": [
|
|
698
|
+
"title",
|
|
699
|
+
"body",
|
|
700
|
+
"draft_id"
|
|
701
|
+
]
|
|
702
|
+
},
|
|
703
|
+
"webSession": {
|
|
704
|
+
"site": "x",
|
|
705
|
+
"action": "articles.publish",
|
|
706
|
+
"contractVersion": 4,
|
|
707
|
+
"timeoutMs": 60000,
|
|
708
|
+
"maxOutputBytes": 2097152
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
}
|