@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,708 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 4,
|
|
3
|
+
"id": "tiktok-web",
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"displayName": "TikTok (Authenticated Web API)",
|
|
6
|
+
"surfaceId": "tiktok",
|
|
7
|
+
"origins": [
|
|
8
|
+
"https://www.tiktok.com"
|
|
9
|
+
],
|
|
10
|
+
"browserDomains": [
|
|
11
|
+
"www.tiktok.com"
|
|
12
|
+
],
|
|
13
|
+
"operations": {
|
|
14
|
+
"profiles.read": {
|
|
15
|
+
"description": "Observed contract: read exact follower, following, and lifetime-like counts for the viewer-bound current TikTok profile through the fixed first-party user-detail endpoint.",
|
|
16
|
+
"risk": "R1",
|
|
17
|
+
"sideEffect": "none",
|
|
18
|
+
"idempotency": "none",
|
|
19
|
+
"dedupeWindowMs": 0,
|
|
20
|
+
"input": {
|
|
21
|
+
"properties": {
|
|
22
|
+
"profile": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"description": "Exact TikTok handle without @",
|
|
25
|
+
"minLength": 2,
|
|
26
|
+
"maxLength": 24
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"required": [
|
|
30
|
+
"profile"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"webSession": {
|
|
34
|
+
"site": "tiktok",
|
|
35
|
+
"action": "profiles.read",
|
|
36
|
+
"contractVersion": 1,
|
|
37
|
+
"timeoutMs": 60000,
|
|
38
|
+
"maxOutputBytes": 2097152
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"feeds.read": {
|
|
42
|
+
"description": "Observed contract: read one bounded signer-free TikTok For You response through the exact first-party recommendation endpoint after binding the current viewer.",
|
|
43
|
+
"risk": "R1",
|
|
44
|
+
"sideEffect": "none",
|
|
45
|
+
"idempotency": "none",
|
|
46
|
+
"dedupeWindowMs": 0,
|
|
47
|
+
"input": {
|
|
48
|
+
"properties": {
|
|
49
|
+
"feed": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "Exact TikTok feed supported by the reviewed direct request",
|
|
52
|
+
"enum": [
|
|
53
|
+
"for-you"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"limit": {
|
|
57
|
+
"type": "number",
|
|
58
|
+
"description": "Maximum complete response page to project",
|
|
59
|
+
"minimum": 1,
|
|
60
|
+
"maximum": 30
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"required": [
|
|
64
|
+
"feed"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"webSession": {
|
|
68
|
+
"site": "tiktok",
|
|
69
|
+
"action": "feeds.read",
|
|
70
|
+
"contractVersion": 1,
|
|
71
|
+
"timeoutMs": 60000,
|
|
72
|
+
"maxOutputBytes": 4194304
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"posts.read": {
|
|
76
|
+
"description": "Capture-required contract reservation: read one exact TikTok post after current item-detail proof generation and a bounded target-bound response are reviewed.",
|
|
77
|
+
"risk": "R1",
|
|
78
|
+
"sideEffect": "none",
|
|
79
|
+
"idempotency": "none",
|
|
80
|
+
"dedupeWindowMs": 0,
|
|
81
|
+
"input": {
|
|
82
|
+
"properties": {
|
|
83
|
+
"post_id": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"description": "Exact decimal TikTok post ID",
|
|
86
|
+
"minLength": 1,
|
|
87
|
+
"maxLength": 32
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"required": [
|
|
91
|
+
"post_id"
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"webSession": {
|
|
95
|
+
"site": "tiktok",
|
|
96
|
+
"action": "posts.read",
|
|
97
|
+
"contractVersion": 1,
|
|
98
|
+
"timeoutMs": 60000,
|
|
99
|
+
"maxOutputBytes": 4194304
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"media.read": {
|
|
103
|
+
"description": "Capture-required contract reservation: resolve one exact TikTok post's bounded media metadata without persisting expiring playback credentials.",
|
|
104
|
+
"risk": "R1",
|
|
105
|
+
"sideEffect": "none",
|
|
106
|
+
"idempotency": "none",
|
|
107
|
+
"dedupeWindowMs": 0,
|
|
108
|
+
"input": {
|
|
109
|
+
"properties": {
|
|
110
|
+
"post_id": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"description": "Exact decimal TikTok post ID",
|
|
113
|
+
"minLength": 1,
|
|
114
|
+
"maxLength": 32
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"required": [
|
|
118
|
+
"post_id"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"webSession": {
|
|
122
|
+
"site": "tiktok",
|
|
123
|
+
"action": "media.read",
|
|
124
|
+
"contractVersion": 1,
|
|
125
|
+
"timeoutMs": 60000,
|
|
126
|
+
"maxOutputBytes": 4194304
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"comments.read": {
|
|
130
|
+
"description": "Observed contract: read one bounded acknowledgement-free TikTok comment page through the exact signer-free first-party list endpoint and bind every comment to the requested post.",
|
|
131
|
+
"risk": "R1",
|
|
132
|
+
"sideEffect": "none",
|
|
133
|
+
"idempotency": "none",
|
|
134
|
+
"dedupeWindowMs": 0,
|
|
135
|
+
"input": {
|
|
136
|
+
"properties": {
|
|
137
|
+
"post_id": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"description": "Exact decimal TikTok post ID",
|
|
140
|
+
"minLength": 1,
|
|
141
|
+
"maxLength": 32
|
|
142
|
+
},
|
|
143
|
+
"cursor": {
|
|
144
|
+
"type": "number",
|
|
145
|
+
"description": "Decimal cursor returned by the preceding comment page",
|
|
146
|
+
"minimum": 0,
|
|
147
|
+
"maximum": 9007199254740991
|
|
148
|
+
},
|
|
149
|
+
"limit": {
|
|
150
|
+
"type": "number",
|
|
151
|
+
"description": "Maximum complete comment response page to project",
|
|
152
|
+
"minimum": 1,
|
|
153
|
+
"maximum": 50
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"required": [
|
|
157
|
+
"post_id"
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"webSession": {
|
|
161
|
+
"site": "tiktok",
|
|
162
|
+
"action": "comments.read",
|
|
163
|
+
"contractVersion": 1,
|
|
164
|
+
"timeoutMs": 60000,
|
|
165
|
+
"maxOutputBytes": 4194304
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"messaging.list": {
|
|
169
|
+
"description": "Capture-required contract reservation: list one TikTok inbox folder without read receipts, presence, or acknowledgement side effects.",
|
|
170
|
+
"risk": "R1",
|
|
171
|
+
"sideEffect": "none",
|
|
172
|
+
"idempotency": "none",
|
|
173
|
+
"dedupeWindowMs": 0,
|
|
174
|
+
"input": {
|
|
175
|
+
"properties": {
|
|
176
|
+
"folder": {
|
|
177
|
+
"type": "string",
|
|
178
|
+
"description": "Exact TikTok inbox folder",
|
|
179
|
+
"enum": [
|
|
180
|
+
"inbox",
|
|
181
|
+
"requests"
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"cursor": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"description": "Opaque cursor returned by the preceding inbox page",
|
|
187
|
+
"minLength": 1,
|
|
188
|
+
"maxLength": 4096
|
|
189
|
+
},
|
|
190
|
+
"limit": {
|
|
191
|
+
"type": "number",
|
|
192
|
+
"description": "Maximum conversations to project",
|
|
193
|
+
"minimum": 1,
|
|
194
|
+
"maximum": 100
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
"required": [
|
|
198
|
+
"folder"
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
"webSession": {
|
|
202
|
+
"site": "tiktok",
|
|
203
|
+
"action": "messaging.list",
|
|
204
|
+
"contractVersion": 1,
|
|
205
|
+
"timeoutMs": 60000,
|
|
206
|
+
"maxOutputBytes": 4194304
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"messaging.read": {
|
|
210
|
+
"description": "Capture-required contract reservation: read one exact TikTok conversation without read receipts, presence, or acknowledgement side effects.",
|
|
211
|
+
"risk": "R1",
|
|
212
|
+
"sideEffect": "none",
|
|
213
|
+
"idempotency": "none",
|
|
214
|
+
"dedupeWindowMs": 0,
|
|
215
|
+
"input": {
|
|
216
|
+
"properties": {
|
|
217
|
+
"conversation_id": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"description": "Exact opaque TikTok conversation ID returned by messaging.list",
|
|
220
|
+
"minLength": 1,
|
|
221
|
+
"maxLength": 512
|
|
222
|
+
},
|
|
223
|
+
"cursor": {
|
|
224
|
+
"type": "string",
|
|
225
|
+
"description": "Opaque cursor returned by the preceding conversation page",
|
|
226
|
+
"minLength": 1,
|
|
227
|
+
"maxLength": 4096
|
|
228
|
+
},
|
|
229
|
+
"limit": {
|
|
230
|
+
"type": "number",
|
|
231
|
+
"description": "Maximum messages to project",
|
|
232
|
+
"minimum": 1,
|
|
233
|
+
"maximum": 100
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"required": [
|
|
237
|
+
"conversation_id"
|
|
238
|
+
]
|
|
239
|
+
},
|
|
240
|
+
"webSession": {
|
|
241
|
+
"site": "tiktok",
|
|
242
|
+
"action": "messaging.read",
|
|
243
|
+
"contractVersion": 1,
|
|
244
|
+
"timeoutMs": 60000,
|
|
245
|
+
"maxOutputBytes": 4194304
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"likes.set": {
|
|
249
|
+
"description": "Capture-required contract reservation: set one exact TikTok like state only after current csrf/proof material, target binding, and independent readback are proven.",
|
|
250
|
+
"risk": "R2",
|
|
251
|
+
"sideEffect": "Sets or clears the authenticated viewer's like on the exact confirmed TikTok post.",
|
|
252
|
+
"idempotency": "local-at-most-once",
|
|
253
|
+
"dedupeWindowMs": 86400000,
|
|
254
|
+
"input": {
|
|
255
|
+
"properties": {
|
|
256
|
+
"post_id": {
|
|
257
|
+
"type": "string",
|
|
258
|
+
"description": "Exact decimal TikTok post ID",
|
|
259
|
+
"minLength": 1,
|
|
260
|
+
"maxLength": 32
|
|
261
|
+
},
|
|
262
|
+
"liked": {
|
|
263
|
+
"type": "boolean",
|
|
264
|
+
"description": "Exact desired like state"
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"required": [
|
|
268
|
+
"post_id",
|
|
269
|
+
"liked"
|
|
270
|
+
]
|
|
271
|
+
},
|
|
272
|
+
"webSession": {
|
|
273
|
+
"site": "tiktok",
|
|
274
|
+
"action": "likes.set",
|
|
275
|
+
"contractVersion": 1,
|
|
276
|
+
"timeoutMs": 60000,
|
|
277
|
+
"maxOutputBytes": 2097152
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"content.save": {
|
|
281
|
+
"description": "Capture-required contract reservation: set one exact TikTok saved state only after current csrf/proof material, target binding, and independent saved-list readback are proven.",
|
|
282
|
+
"risk": "R2",
|
|
283
|
+
"sideEffect": "Saves or removes the exact confirmed TikTok post in the authenticated viewer's collection.",
|
|
284
|
+
"idempotency": "local-at-most-once",
|
|
285
|
+
"dedupeWindowMs": 86400000,
|
|
286
|
+
"input": {
|
|
287
|
+
"properties": {
|
|
288
|
+
"post_id": {
|
|
289
|
+
"type": "string",
|
|
290
|
+
"description": "Exact decimal TikTok post ID",
|
|
291
|
+
"minLength": 1,
|
|
292
|
+
"maxLength": 32
|
|
293
|
+
},
|
|
294
|
+
"saved": {
|
|
295
|
+
"type": "boolean",
|
|
296
|
+
"description": "Exact desired saved state"
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
"required": [
|
|
300
|
+
"post_id",
|
|
301
|
+
"saved"
|
|
302
|
+
]
|
|
303
|
+
},
|
|
304
|
+
"webSession": {
|
|
305
|
+
"site": "tiktok",
|
|
306
|
+
"action": "content.save",
|
|
307
|
+
"contractVersion": 1,
|
|
308
|
+
"timeoutMs": 60000,
|
|
309
|
+
"maxOutputBytes": 2097152
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"relationships.follow.set": {
|
|
313
|
+
"description": "Capture-required contract reservation: set one exact TikTok follow state only after the current AB-selected mutation and independent relationship readback are proven.",
|
|
314
|
+
"risk": "R2",
|
|
315
|
+
"sideEffect": "Follows or unfollows the exact confirmed TikTok account as the authenticated viewer.",
|
|
316
|
+
"idempotency": "local-at-most-once",
|
|
317
|
+
"dedupeWindowMs": 86400000,
|
|
318
|
+
"input": {
|
|
319
|
+
"properties": {
|
|
320
|
+
"user_id": {
|
|
321
|
+
"type": "string",
|
|
322
|
+
"description": "Exact decimal target TikTok user ID",
|
|
323
|
+
"minLength": 1,
|
|
324
|
+
"maxLength": 32
|
|
325
|
+
},
|
|
326
|
+
"sec_user_id": {
|
|
327
|
+
"type": "string",
|
|
328
|
+
"description": "Exact target TikTok secUid paired with user_id",
|
|
329
|
+
"minLength": 16,
|
|
330
|
+
"maxLength": 256
|
|
331
|
+
},
|
|
332
|
+
"following": {
|
|
333
|
+
"type": "boolean",
|
|
334
|
+
"description": "Exact desired follow state"
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
"required": [
|
|
338
|
+
"user_id",
|
|
339
|
+
"sec_user_id",
|
|
340
|
+
"following"
|
|
341
|
+
]
|
|
342
|
+
},
|
|
343
|
+
"webSession": {
|
|
344
|
+
"site": "tiktok",
|
|
345
|
+
"action": "relationships.follow.set",
|
|
346
|
+
"contractVersion": 1,
|
|
347
|
+
"timeoutMs": 60000,
|
|
348
|
+
"maxOutputBytes": 2097152
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
"comments.create": {
|
|
352
|
+
"description": "Capture-required contract reservation: publish one confirmed TikTok comment after an authorized live fixture proves current proof material and actor/root response binding.",
|
|
353
|
+
"risk": "R3",
|
|
354
|
+
"sideEffect": "Publishes one externally visible TikTok comment on the exact confirmed post.",
|
|
355
|
+
"idempotency": "local-at-most-once",
|
|
356
|
+
"dedupeWindowMs": 86400000,
|
|
357
|
+
"input": {
|
|
358
|
+
"properties": {
|
|
359
|
+
"post_id": {
|
|
360
|
+
"type": "string",
|
|
361
|
+
"description": "Exact decimal TikTok post ID",
|
|
362
|
+
"minLength": 1,
|
|
363
|
+
"maxLength": 32
|
|
364
|
+
},
|
|
365
|
+
"body": {
|
|
366
|
+
"type": "string",
|
|
367
|
+
"description": "Exact comment text",
|
|
368
|
+
"minLength": 1,
|
|
369
|
+
"maxLength": 100
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
"required": [
|
|
373
|
+
"post_id",
|
|
374
|
+
"body"
|
|
375
|
+
]
|
|
376
|
+
},
|
|
377
|
+
"webSession": {
|
|
378
|
+
"site": "tiktok",
|
|
379
|
+
"action": "comments.create",
|
|
380
|
+
"contractVersion": 1,
|
|
381
|
+
"timeoutMs": 60000,
|
|
382
|
+
"maxOutputBytes": 2097152
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
"replies.create": {
|
|
386
|
+
"description": "Capture-required contract reservation: publish one confirmed TikTok reply after an authorized live fixture proves actor/root/parent response binding.",
|
|
387
|
+
"risk": "R3",
|
|
388
|
+
"sideEffect": "Publishes one externally visible TikTok reply to the exact confirmed comment.",
|
|
389
|
+
"idempotency": "local-at-most-once",
|
|
390
|
+
"dedupeWindowMs": 86400000,
|
|
391
|
+
"input": {
|
|
392
|
+
"properties": {
|
|
393
|
+
"post_id": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"description": "Exact decimal TikTok root post ID",
|
|
396
|
+
"minLength": 1,
|
|
397
|
+
"maxLength": 32
|
|
398
|
+
},
|
|
399
|
+
"comment_id": {
|
|
400
|
+
"type": "string",
|
|
401
|
+
"description": "Exact decimal parent TikTok comment ID",
|
|
402
|
+
"minLength": 1,
|
|
403
|
+
"maxLength": 32
|
|
404
|
+
},
|
|
405
|
+
"body": {
|
|
406
|
+
"type": "string",
|
|
407
|
+
"description": "Exact reply text",
|
|
408
|
+
"minLength": 1,
|
|
409
|
+
"maxLength": 100
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
"required": [
|
|
413
|
+
"post_id",
|
|
414
|
+
"comment_id",
|
|
415
|
+
"body"
|
|
416
|
+
]
|
|
417
|
+
},
|
|
418
|
+
"webSession": {
|
|
419
|
+
"site": "tiktok",
|
|
420
|
+
"action": "replies.create",
|
|
421
|
+
"contractVersion": 1,
|
|
422
|
+
"timeoutMs": 60000,
|
|
423
|
+
"maxOutputBytes": 2097152
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
"messaging.send": {
|
|
427
|
+
"description": "Capture-required contract reservation: send one confirmed TikTok DM, optionally with one reviewed attachment, after target and delivery response binding are proven.",
|
|
428
|
+
"risk": "R3",
|
|
429
|
+
"sideEffect": "Sends one externally visible TikTok direct message to the exact confirmed user or conversation.",
|
|
430
|
+
"idempotency": "local-at-most-once",
|
|
431
|
+
"dedupeWindowMs": 86400000,
|
|
432
|
+
"input": {
|
|
433
|
+
"properties": {
|
|
434
|
+
"target_kind": {
|
|
435
|
+
"type": "string",
|
|
436
|
+
"description": "Send to an existing conversation or one exact TikTok user",
|
|
437
|
+
"enum": [
|
|
438
|
+
"conversation",
|
|
439
|
+
"user"
|
|
440
|
+
]
|
|
441
|
+
},
|
|
442
|
+
"target_id": {
|
|
443
|
+
"type": "string",
|
|
444
|
+
"description": "Exact conversation or user identifier selected by target_kind",
|
|
445
|
+
"minLength": 1,
|
|
446
|
+
"maxLength": 512
|
|
447
|
+
},
|
|
448
|
+
"body": {
|
|
449
|
+
"type": "string",
|
|
450
|
+
"description": "Exact direct-message text",
|
|
451
|
+
"minLength": 1,
|
|
452
|
+
"maxLength": 1000
|
|
453
|
+
},
|
|
454
|
+
"media": {
|
|
455
|
+
"type": "file",
|
|
456
|
+
"description": "Optional reviewed TikTok DM video",
|
|
457
|
+
"maxBytes": 536870912,
|
|
458
|
+
"mediaTypes": [
|
|
459
|
+
"video/mp4"
|
|
460
|
+
]
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
"required": [
|
|
464
|
+
"target_kind",
|
|
465
|
+
"target_id",
|
|
466
|
+
"body"
|
|
467
|
+
]
|
|
468
|
+
},
|
|
469
|
+
"webSession": {
|
|
470
|
+
"site": "tiktok",
|
|
471
|
+
"action": "messaging.send",
|
|
472
|
+
"contractVersion": 1,
|
|
473
|
+
"timeoutMs": 600000,
|
|
474
|
+
"maxOutputBytes": 2097152
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
"posts.publish": {
|
|
478
|
+
"description": "Capture-required contract reservation: publish one confirmed native TikTok text post after actor, audience, and returned post binding are proven.",
|
|
479
|
+
"risk": "R3",
|
|
480
|
+
"sideEffect": "Publishes one externally visible TikTok text post with the exact confirmed content and audience.",
|
|
481
|
+
"idempotency": "local-at-most-once",
|
|
482
|
+
"dedupeWindowMs": 86400000,
|
|
483
|
+
"input": {
|
|
484
|
+
"properties": {
|
|
485
|
+
"body": {
|
|
486
|
+
"type": "string",
|
|
487
|
+
"description": "Exact native text-post content",
|
|
488
|
+
"minLength": 1,
|
|
489
|
+
"maxLength": 500
|
|
490
|
+
},
|
|
491
|
+
"audience": {
|
|
492
|
+
"type": "string",
|
|
493
|
+
"description": "Exact reviewed audience option",
|
|
494
|
+
"enum": [
|
|
495
|
+
"public",
|
|
496
|
+
"friends",
|
|
497
|
+
"private"
|
|
498
|
+
]
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
"required": [
|
|
502
|
+
"body",
|
|
503
|
+
"audience"
|
|
504
|
+
]
|
|
505
|
+
},
|
|
506
|
+
"webSession": {
|
|
507
|
+
"site": "tiktok",
|
|
508
|
+
"action": "posts.publish",
|
|
509
|
+
"contractVersion": 1,
|
|
510
|
+
"timeoutMs": 600000,
|
|
511
|
+
"maxOutputBytes": 2097152
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
"media.publish": {
|
|
515
|
+
"description": "Capture-required contract reservation: upload and publish one confirmed TikTok image or video only after byte transfer, declarations, audience, and returned post binding are proven.",
|
|
516
|
+
"risk": "R3",
|
|
517
|
+
"sideEffect": "Uploads and publishes one externally visible TikTok media post with the exact confirmed bytes, caption, settings, and audience.",
|
|
518
|
+
"idempotency": "local-at-most-once",
|
|
519
|
+
"dedupeWindowMs": 86400000,
|
|
520
|
+
"input": {
|
|
521
|
+
"properties": {
|
|
522
|
+
"media": {
|
|
523
|
+
"type": "file",
|
|
524
|
+
"description": "Exact reviewed image or video bytes",
|
|
525
|
+
"maxBytes": 1073741824,
|
|
526
|
+
"mediaTypes": [
|
|
527
|
+
"image/jpeg",
|
|
528
|
+
"image/png",
|
|
529
|
+
"video/mp4",
|
|
530
|
+
"video/quicktime"
|
|
531
|
+
]
|
|
532
|
+
},
|
|
533
|
+
"caption": {
|
|
534
|
+
"type": "string",
|
|
535
|
+
"description": "Optional exact media caption",
|
|
536
|
+
"minLength": 1,
|
|
537
|
+
"maxLength": 500
|
|
538
|
+
},
|
|
539
|
+
"audience": {
|
|
540
|
+
"type": "string",
|
|
541
|
+
"description": "Exact reviewed audience option",
|
|
542
|
+
"enum": [
|
|
543
|
+
"public",
|
|
544
|
+
"friends",
|
|
545
|
+
"private"
|
|
546
|
+
]
|
|
547
|
+
},
|
|
548
|
+
"allow_comments": {
|
|
549
|
+
"type": "boolean",
|
|
550
|
+
"description": "Exact desired comment permission"
|
|
551
|
+
},
|
|
552
|
+
"allow_duet": {
|
|
553
|
+
"type": "boolean",
|
|
554
|
+
"description": "Exact desired duet permission"
|
|
555
|
+
},
|
|
556
|
+
"allow_stitch": {
|
|
557
|
+
"type": "boolean",
|
|
558
|
+
"description": "Exact desired stitch permission"
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
"required": [
|
|
562
|
+
"media",
|
|
563
|
+
"audience",
|
|
564
|
+
"allow_comments",
|
|
565
|
+
"allow_duet",
|
|
566
|
+
"allow_stitch"
|
|
567
|
+
]
|
|
568
|
+
},
|
|
569
|
+
"webSession": {
|
|
570
|
+
"site": "tiktok",
|
|
571
|
+
"action": "media.publish",
|
|
572
|
+
"contractVersion": 1,
|
|
573
|
+
"timeoutMs": 600000,
|
|
574
|
+
"maxOutputBytes": 2097152
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
"content.schedule": {
|
|
578
|
+
"description": "Capture-required contract reservation: schedule one confirmed TikTok media post after exact Studio upload, time-zone, audience, and schedule bindings are proven.",
|
|
579
|
+
"risk": "R3",
|
|
580
|
+
"sideEffect": "Uploads and schedules one TikTok media post for externally visible publication at the exact confirmed time.",
|
|
581
|
+
"idempotency": "local-at-most-once",
|
|
582
|
+
"dedupeWindowMs": 86400000,
|
|
583
|
+
"input": {
|
|
584
|
+
"properties": {
|
|
585
|
+
"media": {
|
|
586
|
+
"type": "file",
|
|
587
|
+
"description": "Exact reviewed image or video bytes",
|
|
588
|
+
"maxBytes": 1073741824,
|
|
589
|
+
"mediaTypes": [
|
|
590
|
+
"image/jpeg",
|
|
591
|
+
"image/png",
|
|
592
|
+
"video/mp4",
|
|
593
|
+
"video/quicktime"
|
|
594
|
+
]
|
|
595
|
+
},
|
|
596
|
+
"caption": {
|
|
597
|
+
"type": "string",
|
|
598
|
+
"description": "Optional exact scheduled-post caption",
|
|
599
|
+
"minLength": 1,
|
|
600
|
+
"maxLength": 500
|
|
601
|
+
},
|
|
602
|
+
"scheduled_at": {
|
|
603
|
+
"type": "string",
|
|
604
|
+
"description": "Exact reviewed ISO 8601 publication timestamp with offset",
|
|
605
|
+
"minLength": 20,
|
|
606
|
+
"maxLength": 64
|
|
607
|
+
},
|
|
608
|
+
"audience": {
|
|
609
|
+
"type": "string",
|
|
610
|
+
"description": "Exact reviewed audience option",
|
|
611
|
+
"enum": [
|
|
612
|
+
"public",
|
|
613
|
+
"friends",
|
|
614
|
+
"private"
|
|
615
|
+
]
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
"required": [
|
|
619
|
+
"media",
|
|
620
|
+
"scheduled_at",
|
|
621
|
+
"audience"
|
|
622
|
+
]
|
|
623
|
+
},
|
|
624
|
+
"webSession": {
|
|
625
|
+
"site": "tiktok",
|
|
626
|
+
"action": "content.schedule",
|
|
627
|
+
"contractVersion": 1,
|
|
628
|
+
"timeoutMs": 600000,
|
|
629
|
+
"maxOutputBytes": 2097152
|
|
630
|
+
}
|
|
631
|
+
},
|
|
632
|
+
"content.share": {
|
|
633
|
+
"description": "Capture-required contract reservation: share one exact TikTok post to one confirmed internal recipient only after destination and delivery response binding are proven.",
|
|
634
|
+
"risk": "R3",
|
|
635
|
+
"sideEffect": "Sends one externally visible TikTok share to the exact confirmed user or conversation.",
|
|
636
|
+
"idempotency": "local-at-most-once",
|
|
637
|
+
"dedupeWindowMs": 86400000,
|
|
638
|
+
"input": {
|
|
639
|
+
"properties": {
|
|
640
|
+
"post_id": {
|
|
641
|
+
"type": "string",
|
|
642
|
+
"description": "Exact decimal TikTok post ID",
|
|
643
|
+
"minLength": 1,
|
|
644
|
+
"maxLength": 32
|
|
645
|
+
},
|
|
646
|
+
"target_kind": {
|
|
647
|
+
"type": "string",
|
|
648
|
+
"description": "Share to an existing conversation or one exact TikTok user",
|
|
649
|
+
"enum": [
|
|
650
|
+
"conversation",
|
|
651
|
+
"user"
|
|
652
|
+
]
|
|
653
|
+
},
|
|
654
|
+
"target_id": {
|
|
655
|
+
"type": "string",
|
|
656
|
+
"description": "Exact conversation or user identifier selected by target_kind",
|
|
657
|
+
"minLength": 1,
|
|
658
|
+
"maxLength": 512
|
|
659
|
+
}
|
|
660
|
+
},
|
|
661
|
+
"required": [
|
|
662
|
+
"post_id",
|
|
663
|
+
"target_kind",
|
|
664
|
+
"target_id"
|
|
665
|
+
]
|
|
666
|
+
},
|
|
667
|
+
"webSession": {
|
|
668
|
+
"site": "tiktok",
|
|
669
|
+
"action": "content.share",
|
|
670
|
+
"contractVersion": 1,
|
|
671
|
+
"timeoutMs": 60000,
|
|
672
|
+
"maxOutputBytes": 2097152
|
|
673
|
+
}
|
|
674
|
+
},
|
|
675
|
+
"posts.repost": {
|
|
676
|
+
"description": "Capture-required contract reservation: set one exact TikTok repost state only after the current upvote mutation, actor/target response binding, and independent readback are proven.",
|
|
677
|
+
"risk": "R3",
|
|
678
|
+
"sideEffect": "Creates or removes the authenticated viewer's externally visible repost of the exact confirmed TikTok post.",
|
|
679
|
+
"idempotency": "local-at-most-once",
|
|
680
|
+
"dedupeWindowMs": 86400000,
|
|
681
|
+
"input": {
|
|
682
|
+
"properties": {
|
|
683
|
+
"post_id": {
|
|
684
|
+
"type": "string",
|
|
685
|
+
"description": "Exact decimal TikTok post ID",
|
|
686
|
+
"minLength": 1,
|
|
687
|
+
"maxLength": 32
|
|
688
|
+
},
|
|
689
|
+
"reposted": {
|
|
690
|
+
"type": "boolean",
|
|
691
|
+
"description": "Exact desired repost state"
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
"required": [
|
|
695
|
+
"post_id",
|
|
696
|
+
"reposted"
|
|
697
|
+
]
|
|
698
|
+
},
|
|
699
|
+
"webSession": {
|
|
700
|
+
"site": "tiktok",
|
|
701
|
+
"action": "posts.repost",
|
|
702
|
+
"contractVersion": 1,
|
|
703
|
+
"timeoutMs": 60000,
|
|
704
|
+
"maxOutputBytes": 2097152
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
}
|