@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": "reddit-web",
|
|
4
|
+
"version": "1.5.0",
|
|
5
|
+
"displayName": "Reddit (Authenticated Web API)",
|
|
6
|
+
"surfaceId": "reddit",
|
|
7
|
+
"origins": [
|
|
8
|
+
"https://www.reddit.com"
|
|
9
|
+
],
|
|
10
|
+
"browserDomains": [
|
|
11
|
+
"www.reddit.com"
|
|
12
|
+
],
|
|
13
|
+
"operations": {
|
|
14
|
+
"profiles.read": {
|
|
15
|
+
"description": "Observed contract: read exact follower and karma counts for the viewer-bound current Reddit profile, then count the complete visible overview listing for the contributions metric.",
|
|
16
|
+
"risk": "R1",
|
|
17
|
+
"sideEffect": "none",
|
|
18
|
+
"idempotency": "none",
|
|
19
|
+
"dedupeWindowMs": 0,
|
|
20
|
+
"input": {
|
|
21
|
+
"properties": {
|
|
22
|
+
"profile": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"description": "Exact Reddit profile handle without u/",
|
|
25
|
+
"minLength": 1,
|
|
26
|
+
"maxLength": 64
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"required": [
|
|
30
|
+
"profile"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"webSession": {
|
|
34
|
+
"site": "reddit",
|
|
35
|
+
"action": "profiles.read",
|
|
36
|
+
"contractVersion": 1,
|
|
37
|
+
"timeoutMs": 60000,
|
|
38
|
+
"maxOutputBytes": 4194304
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"feeds.read": {
|
|
42
|
+
"description": "Observed contract: read one bounded signed-in Reddit home Listing through the exact JSON endpoint with explicit raw JSON and fullname pagination.",
|
|
43
|
+
"risk": "R1",
|
|
44
|
+
"sideEffect": "none",
|
|
45
|
+
"idempotency": "none",
|
|
46
|
+
"dedupeWindowMs": 0,
|
|
47
|
+
"input": {
|
|
48
|
+
"properties": {
|
|
49
|
+
"feed": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "Exact reviewed Reddit feed",
|
|
52
|
+
"enum": [
|
|
53
|
+
"home"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"after": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "Fullname cursor returned by the preceding Listing",
|
|
59
|
+
"minLength": 4,
|
|
60
|
+
"maxLength": 40
|
|
61
|
+
},
|
|
62
|
+
"limit": {
|
|
63
|
+
"type": "number",
|
|
64
|
+
"description": "Maximum posts in the complete Listing page",
|
|
65
|
+
"minimum": 1,
|
|
66
|
+
"maximum": 100
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"required": [
|
|
70
|
+
"feed"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"webSession": {
|
|
74
|
+
"site": "reddit",
|
|
75
|
+
"action": "feeds.read",
|
|
76
|
+
"contractVersion": 1,
|
|
77
|
+
"timeoutMs": 60000,
|
|
78
|
+
"maxOutputBytes": 4194304
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"posts.read": {
|
|
82
|
+
"description": "Observed contract: read one exact Reddit post from the root of its target-bound comments Listing.",
|
|
83
|
+
"risk": "R1",
|
|
84
|
+
"sideEffect": "none",
|
|
85
|
+
"idempotency": "none",
|
|
86
|
+
"dedupeWindowMs": 0,
|
|
87
|
+
"input": {
|
|
88
|
+
"properties": {
|
|
89
|
+
"post_id": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"description": "Exact t3_ Reddit post fullname",
|
|
92
|
+
"minLength": 4,
|
|
93
|
+
"maxLength": 40
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"required": [
|
|
97
|
+
"post_id"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"webSession": {
|
|
101
|
+
"site": "reddit",
|
|
102
|
+
"action": "posts.read",
|
|
103
|
+
"contractVersion": 1,
|
|
104
|
+
"timeoutMs": 60000,
|
|
105
|
+
"maxOutputBytes": 4194304
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"comments.read": {
|
|
109
|
+
"description": "Observed contract: read one bounded Reddit comment tree through the exact target-bound comments Listing without acknowledgement traffic.",
|
|
110
|
+
"risk": "R1",
|
|
111
|
+
"sideEffect": "none",
|
|
112
|
+
"idempotency": "none",
|
|
113
|
+
"dedupeWindowMs": 0,
|
|
114
|
+
"input": {
|
|
115
|
+
"properties": {
|
|
116
|
+
"post_id": {
|
|
117
|
+
"type": "string",
|
|
118
|
+
"description": "Exact t3_ Reddit post fullname",
|
|
119
|
+
"minLength": 4,
|
|
120
|
+
"maxLength": 40
|
|
121
|
+
},
|
|
122
|
+
"limit": {
|
|
123
|
+
"type": "number",
|
|
124
|
+
"description": "Maximum projected comments",
|
|
125
|
+
"minimum": 1,
|
|
126
|
+
"maximum": 100
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"required": [
|
|
130
|
+
"post_id"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"webSession": {
|
|
134
|
+
"site": "reddit",
|
|
135
|
+
"action": "comments.read",
|
|
136
|
+
"contractVersion": 1,
|
|
137
|
+
"timeoutMs": 60000,
|
|
138
|
+
"maxOutputBytes": 4194304
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"messaging.list": {
|
|
142
|
+
"description": "Observed contract: list one bounded legacy Reddit inbox, unread, or sent Listing with mark=false and no expanded replies.",
|
|
143
|
+
"risk": "R1",
|
|
144
|
+
"sideEffect": "none",
|
|
145
|
+
"idempotency": "none",
|
|
146
|
+
"dedupeWindowMs": 0,
|
|
147
|
+
"input": {
|
|
148
|
+
"properties": {
|
|
149
|
+
"folder": {
|
|
150
|
+
"type": "string",
|
|
151
|
+
"description": "Exact legacy Reddit message folder",
|
|
152
|
+
"enum": [
|
|
153
|
+
"inbox",
|
|
154
|
+
"unread",
|
|
155
|
+
"sent"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"after": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"description": "Fullname cursor returned by the preceding Listing",
|
|
161
|
+
"minLength": 4,
|
|
162
|
+
"maxLength": 40
|
|
163
|
+
},
|
|
164
|
+
"limit": {
|
|
165
|
+
"type": "number",
|
|
166
|
+
"description": "Maximum messages or notifications in the Listing",
|
|
167
|
+
"minimum": 1,
|
|
168
|
+
"maximum": 100
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"required": [
|
|
172
|
+
"folder"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
"webSession": {
|
|
176
|
+
"site": "reddit",
|
|
177
|
+
"action": "messaging.list",
|
|
178
|
+
"contractVersion": 1,
|
|
179
|
+
"timeoutMs": 60000,
|
|
180
|
+
"maxOutputBytes": 4194304
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"messaging.read": {
|
|
184
|
+
"description": "Observed contract: read one exact legacy Reddit message thread through the selected Listing folder's mid filter with mark=false.",
|
|
185
|
+
"risk": "R1",
|
|
186
|
+
"sideEffect": "none",
|
|
187
|
+
"idempotency": "none",
|
|
188
|
+
"dedupeWindowMs": 0,
|
|
189
|
+
"input": {
|
|
190
|
+
"properties": {
|
|
191
|
+
"folder": {
|
|
192
|
+
"type": "string",
|
|
193
|
+
"description": "Exact legacy Reddit message folder containing the target",
|
|
194
|
+
"enum": [
|
|
195
|
+
"inbox",
|
|
196
|
+
"unread",
|
|
197
|
+
"sent"
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
"message_id": {
|
|
201
|
+
"type": "string",
|
|
202
|
+
"description": "Exact t4_ Reddit message fullname",
|
|
203
|
+
"minLength": 4,
|
|
204
|
+
"maxLength": 40
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"required": [
|
|
208
|
+
"folder",
|
|
209
|
+
"message_id"
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
"webSession": {
|
|
213
|
+
"site": "reddit",
|
|
214
|
+
"action": "messaging.read",
|
|
215
|
+
"contractVersion": 1,
|
|
216
|
+
"timeoutMs": 60000,
|
|
217
|
+
"maxOutputBytes": 4194304
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"reactions.set": {
|
|
221
|
+
"description": "Capture-required contract reservation: the exact /api/vote implementation and independent target readback are deterministic-test proven, but an authorized low-stakes live fixture is still required.",
|
|
222
|
+
"risk": "R2",
|
|
223
|
+
"sideEffect": "Casts one human-confirmed vote direction on the exact Reddit link or comment; Reddit requires votes to proxy a human action one-for-one.",
|
|
224
|
+
"idempotency": "local-at-most-once",
|
|
225
|
+
"dedupeWindowMs": 86400000,
|
|
226
|
+
"input": {
|
|
227
|
+
"properties": {
|
|
228
|
+
"thing_id": {
|
|
229
|
+
"type": "string",
|
|
230
|
+
"description": "Exact t1_ comment or t3_ post fullname",
|
|
231
|
+
"minLength": 4,
|
|
232
|
+
"maxLength": 40
|
|
233
|
+
},
|
|
234
|
+
"direction": {
|
|
235
|
+
"type": "number",
|
|
236
|
+
"description": "Exact desired vote direction: -1 down, 0 neutral, or 1 up",
|
|
237
|
+
"enum": [
|
|
238
|
+
-1,
|
|
239
|
+
0,
|
|
240
|
+
1
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"required": [
|
|
245
|
+
"thing_id",
|
|
246
|
+
"direction"
|
|
247
|
+
]
|
|
248
|
+
},
|
|
249
|
+
"webSession": {
|
|
250
|
+
"site": "reddit",
|
|
251
|
+
"action": "reactions.set",
|
|
252
|
+
"contractVersion": 1,
|
|
253
|
+
"timeoutMs": 60000,
|
|
254
|
+
"maxOutputBytes": 2097152
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"content.save": {
|
|
258
|
+
"description": "Capture-required contract reservation: the exact /api/save and /api/unsave implementation and independent target readback are deterministic-test proven, but an authorized low-stakes live fixture is still required.",
|
|
259
|
+
"risk": "R2",
|
|
260
|
+
"sideEffect": "Saves or unsaves the exact confirmed Reddit post or comment for the authenticated account.",
|
|
261
|
+
"idempotency": "local-at-most-once",
|
|
262
|
+
"dedupeWindowMs": 86400000,
|
|
263
|
+
"input": {
|
|
264
|
+
"properties": {
|
|
265
|
+
"thing_id": {
|
|
266
|
+
"type": "string",
|
|
267
|
+
"description": "Exact t1_ comment or t3_ post fullname",
|
|
268
|
+
"minLength": 4,
|
|
269
|
+
"maxLength": 40
|
|
270
|
+
},
|
|
271
|
+
"saved": {
|
|
272
|
+
"type": "boolean",
|
|
273
|
+
"description": "Exact desired saved state"
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"required": [
|
|
277
|
+
"thing_id",
|
|
278
|
+
"saved"
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
"webSession": {
|
|
282
|
+
"site": "reddit",
|
|
283
|
+
"action": "content.save",
|
|
284
|
+
"contractVersion": 1,
|
|
285
|
+
"timeoutMs": 60000,
|
|
286
|
+
"maxOutputBytes": 2097152
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
"content.delete": {
|
|
290
|
+
"description": "Observed contract: delete one exact current-account Reddit post only after an authored-post pre-read binds its confirmed title, then independently verify exact-target absence.",
|
|
291
|
+
"risk": "R3",
|
|
292
|
+
"sideEffect": "Permanently deletes the exact confirmed Reddit post authored by the authenticated account.",
|
|
293
|
+
"idempotency": "local-at-most-once",
|
|
294
|
+
"dedupeWindowMs": 2592000000,
|
|
295
|
+
"input": {
|
|
296
|
+
"properties": {
|
|
297
|
+
"post_id": {
|
|
298
|
+
"type": "string",
|
|
299
|
+
"description": "Exact t3_ Reddit post fullname",
|
|
300
|
+
"minLength": 4,
|
|
301
|
+
"maxLength": 40
|
|
302
|
+
},
|
|
303
|
+
"expected_title": {
|
|
304
|
+
"type": "string",
|
|
305
|
+
"description": "Exact current post title used for pre-delete confirmation",
|
|
306
|
+
"minLength": 1,
|
|
307
|
+
"maxLength": 280
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"required": [
|
|
311
|
+
"post_id",
|
|
312
|
+
"expected_title"
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
"webSession": {
|
|
316
|
+
"site": "reddit",
|
|
317
|
+
"action": "content.delete",
|
|
318
|
+
"contractVersion": 1,
|
|
319
|
+
"timeoutMs": 60000,
|
|
320
|
+
"maxOutputBytes": 4194304
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"communities.membership.set": {
|
|
324
|
+
"description": "Capture-required contract reservation: subscribe to or unsubscribe from one exact subreddit only after form variants, actor binding, and independent membership readback are reviewed.",
|
|
325
|
+
"risk": "R2",
|
|
326
|
+
"sideEffect": "Joins or leaves the exact confirmed Reddit community for the authenticated account.",
|
|
327
|
+
"idempotency": "local-at-most-once",
|
|
328
|
+
"dedupeWindowMs": 86400000,
|
|
329
|
+
"input": {
|
|
330
|
+
"properties": {
|
|
331
|
+
"community_id": {
|
|
332
|
+
"type": "string",
|
|
333
|
+
"description": "Exact t5_ subreddit fullname",
|
|
334
|
+
"minLength": 4,
|
|
335
|
+
"maxLength": 40
|
|
336
|
+
},
|
|
337
|
+
"joined": {
|
|
338
|
+
"type": "boolean",
|
|
339
|
+
"description": "Exact desired community membership state"
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
"required": [
|
|
343
|
+
"community_id",
|
|
344
|
+
"joined"
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
"webSession": {
|
|
348
|
+
"site": "reddit",
|
|
349
|
+
"action": "communities.membership.set",
|
|
350
|
+
"contractVersion": 1,
|
|
351
|
+
"timeoutMs": 60000,
|
|
352
|
+
"maxOutputBytes": 2097152
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
"relationships.follow.set": {
|
|
356
|
+
"description": "Capture-required contract reservation: follow or unfollow one exact Reddit target only after the target class, mutation, and independent relationship readback are reviewed.",
|
|
357
|
+
"risk": "R2",
|
|
358
|
+
"sideEffect": "Sets the authenticated Reddit account's follow state for the exact confirmed target.",
|
|
359
|
+
"idempotency": "local-at-most-once",
|
|
360
|
+
"dedupeWindowMs": 86400000,
|
|
361
|
+
"input": {
|
|
362
|
+
"properties": {
|
|
363
|
+
"target_id": {
|
|
364
|
+
"type": "string",
|
|
365
|
+
"description": "Exact reviewed Reddit target fullname",
|
|
366
|
+
"minLength": 4,
|
|
367
|
+
"maxLength": 40
|
|
368
|
+
},
|
|
369
|
+
"followed": {
|
|
370
|
+
"type": "boolean",
|
|
371
|
+
"description": "Exact desired follow state"
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
"required": [
|
|
375
|
+
"target_id",
|
|
376
|
+
"followed"
|
|
377
|
+
]
|
|
378
|
+
},
|
|
379
|
+
"webSession": {
|
|
380
|
+
"site": "reddit",
|
|
381
|
+
"action": "relationships.follow.set",
|
|
382
|
+
"contractVersion": 1,
|
|
383
|
+
"timeoutMs": 60000,
|
|
384
|
+
"maxOutputBytes": 2097152
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
"media.read": {
|
|
388
|
+
"description": "Capture-required contract reservation: project bounded media metadata for one exact Reddit post without retaining expiring playback credentials.",
|
|
389
|
+
"risk": "R1",
|
|
390
|
+
"sideEffect": "none",
|
|
391
|
+
"idempotency": "none",
|
|
392
|
+
"dedupeWindowMs": 0,
|
|
393
|
+
"input": {
|
|
394
|
+
"properties": {
|
|
395
|
+
"post_id": {
|
|
396
|
+
"type": "string",
|
|
397
|
+
"description": "Exact t3_ Reddit post fullname",
|
|
398
|
+
"minLength": 4,
|
|
399
|
+
"maxLength": 40
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
"required": [
|
|
403
|
+
"post_id"
|
|
404
|
+
]
|
|
405
|
+
},
|
|
406
|
+
"webSession": {
|
|
407
|
+
"site": "reddit",
|
|
408
|
+
"action": "media.read",
|
|
409
|
+
"contractVersion": 1,
|
|
410
|
+
"timeoutMs": 60000,
|
|
411
|
+
"maxOutputBytes": 4194304
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
"media.publish": {
|
|
415
|
+
"description": "Observed contract: publish one exact MP4 plus PNG/JPEG poster through captured old-Reddit cookie-authenticated leases and exact S3 transfers, explicit post declarations, response-websocket target binding, and independent hosted-video readback.",
|
|
416
|
+
"risk": "R3",
|
|
417
|
+
"sideEffect": "Uploads one video and publishes one externally visible Reddit post in the exact confirmed community.",
|
|
418
|
+
"idempotency": "local-at-most-once",
|
|
419
|
+
"dedupeWindowMs": 86400000,
|
|
420
|
+
"input": {
|
|
421
|
+
"properties": {
|
|
422
|
+
"community": {
|
|
423
|
+
"type": "string",
|
|
424
|
+
"description": "Exact destination subreddit name",
|
|
425
|
+
"minLength": 2,
|
|
426
|
+
"maxLength": 21
|
|
427
|
+
},
|
|
428
|
+
"title": {
|
|
429
|
+
"type": "string",
|
|
430
|
+
"description": "Exact video-post title",
|
|
431
|
+
"minLength": 1,
|
|
432
|
+
"maxLength": 280
|
|
433
|
+
},
|
|
434
|
+
"body": {
|
|
435
|
+
"type": "string",
|
|
436
|
+
"description": "Optional exact video-post body",
|
|
437
|
+
"minLength": 1,
|
|
438
|
+
"maxLength": 10000
|
|
439
|
+
},
|
|
440
|
+
"media": {
|
|
441
|
+
"type": "file",
|
|
442
|
+
"description": "Exact plan-bound Reddit MP4",
|
|
443
|
+
"maxBytes": 536870912,
|
|
444
|
+
"mediaTypes": [
|
|
445
|
+
"video/mp4"
|
|
446
|
+
]
|
|
447
|
+
},
|
|
448
|
+
"thumbnail": {
|
|
449
|
+
"type": "file",
|
|
450
|
+
"description": "Exact plan-bound PNG or JPEG poster for the native video",
|
|
451
|
+
"maxBytes": 20971520,
|
|
452
|
+
"mediaTypes": [
|
|
453
|
+
"image/jpeg",
|
|
454
|
+
"image/png"
|
|
455
|
+
]
|
|
456
|
+
},
|
|
457
|
+
"nsfw": {
|
|
458
|
+
"type": "boolean",
|
|
459
|
+
"description": "Explicit adult-content declaration"
|
|
460
|
+
},
|
|
461
|
+
"spoiler": {
|
|
462
|
+
"type": "boolean",
|
|
463
|
+
"description": "Explicit spoiler declaration"
|
|
464
|
+
},
|
|
465
|
+
"send_replies": {
|
|
466
|
+
"type": "boolean",
|
|
467
|
+
"description": "Explicit reply-notification choice"
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"required": [
|
|
471
|
+
"community",
|
|
472
|
+
"title",
|
|
473
|
+
"media",
|
|
474
|
+
"thumbnail",
|
|
475
|
+
"nsfw",
|
|
476
|
+
"spoiler",
|
|
477
|
+
"send_replies"
|
|
478
|
+
]
|
|
479
|
+
},
|
|
480
|
+
"webSession": {
|
|
481
|
+
"site": "reddit",
|
|
482
|
+
"action": "media.publish",
|
|
483
|
+
"contractVersion": 4,
|
|
484
|
+
"timeoutMs": 600000,
|
|
485
|
+
"maxOutputBytes": 8388608
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
"comments.create": {
|
|
489
|
+
"description": "Capture-required contract reservation: publish one top-level Reddit comment only after an authorized actor/root-bound fixture is reviewed.",
|
|
490
|
+
"risk": "R3",
|
|
491
|
+
"sideEffect": "Publishes one externally visible comment on the exact confirmed Reddit post.",
|
|
492
|
+
"idempotency": "local-at-most-once",
|
|
493
|
+
"dedupeWindowMs": 86400000,
|
|
494
|
+
"input": {
|
|
495
|
+
"properties": {
|
|
496
|
+
"post_id": {
|
|
497
|
+
"type": "string",
|
|
498
|
+
"description": "Exact t3_ Reddit post fullname",
|
|
499
|
+
"minLength": 4,
|
|
500
|
+
"maxLength": 40
|
|
501
|
+
},
|
|
502
|
+
"body": {
|
|
503
|
+
"type": "string",
|
|
504
|
+
"description": "Exact comment body",
|
|
505
|
+
"minLength": 1,
|
|
506
|
+
"maxLength": 2000
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
"required": [
|
|
510
|
+
"post_id",
|
|
511
|
+
"body"
|
|
512
|
+
]
|
|
513
|
+
},
|
|
514
|
+
"webSession": {
|
|
515
|
+
"site": "reddit",
|
|
516
|
+
"action": "comments.create",
|
|
517
|
+
"contractVersion": 1,
|
|
518
|
+
"timeoutMs": 60000,
|
|
519
|
+
"maxOutputBytes": 2097152
|
|
520
|
+
}
|
|
521
|
+
},
|
|
522
|
+
"replies.create": {
|
|
523
|
+
"description": "Capture-required contract reservation: publish one Reddit comment or legacy-message reply only after an authorized actor/root/parent-bound fixture is reviewed.",
|
|
524
|
+
"risk": "R3",
|
|
525
|
+
"sideEffect": "Publishes one externally visible reply to the exact confirmed Reddit parent.",
|
|
526
|
+
"idempotency": "local-at-most-once",
|
|
527
|
+
"dedupeWindowMs": 86400000,
|
|
528
|
+
"input": {
|
|
529
|
+
"properties": {
|
|
530
|
+
"parent_id": {
|
|
531
|
+
"type": "string",
|
|
532
|
+
"description": "Exact t1_ comment or t4_ legacy-message parent fullname",
|
|
533
|
+
"minLength": 4,
|
|
534
|
+
"maxLength": 40
|
|
535
|
+
},
|
|
536
|
+
"body": {
|
|
537
|
+
"type": "string",
|
|
538
|
+
"description": "Exact reply body",
|
|
539
|
+
"minLength": 1,
|
|
540
|
+
"maxLength": 2000
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
"required": [
|
|
544
|
+
"parent_id",
|
|
545
|
+
"body"
|
|
546
|
+
]
|
|
547
|
+
},
|
|
548
|
+
"webSession": {
|
|
549
|
+
"site": "reddit",
|
|
550
|
+
"action": "replies.create",
|
|
551
|
+
"contractVersion": 1,
|
|
552
|
+
"timeoutMs": 60000,
|
|
553
|
+
"maxOutputBytes": 2097152
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
"content.edit": {
|
|
557
|
+
"description": "Capture-required contract reservation: edit one exact authored Reddit post or comment only after response and independent content readback are reviewed.",
|
|
558
|
+
"risk": "R3",
|
|
559
|
+
"sideEffect": "Edits the externally visible body of the exact confirmed authored Reddit post or comment.",
|
|
560
|
+
"idempotency": "local-at-most-once",
|
|
561
|
+
"dedupeWindowMs": 86400000,
|
|
562
|
+
"input": {
|
|
563
|
+
"properties": {
|
|
564
|
+
"thing_id": {
|
|
565
|
+
"type": "string",
|
|
566
|
+
"description": "Exact authored t1_ comment or t3_ post fullname",
|
|
567
|
+
"minLength": 4,
|
|
568
|
+
"maxLength": 40
|
|
569
|
+
},
|
|
570
|
+
"body": {
|
|
571
|
+
"type": "string",
|
|
572
|
+
"description": "Exact replacement body",
|
|
573
|
+
"minLength": 1,
|
|
574
|
+
"maxLength": 10000
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
"required": [
|
|
578
|
+
"thing_id",
|
|
579
|
+
"body"
|
|
580
|
+
]
|
|
581
|
+
},
|
|
582
|
+
"webSession": {
|
|
583
|
+
"site": "reddit",
|
|
584
|
+
"action": "content.edit",
|
|
585
|
+
"contractVersion": 1,
|
|
586
|
+
"timeoutMs": 60000,
|
|
587
|
+
"maxOutputBytes": 2097152
|
|
588
|
+
}
|
|
589
|
+
},
|
|
590
|
+
"messaging.send": {
|
|
591
|
+
"description": "Capture-required contract reservation: send one legacy private message or Reddit Chat message only through its separately reviewed transport and recipient binding.",
|
|
592
|
+
"risk": "R3",
|
|
593
|
+
"sideEffect": "Sends one externally visible message to the exact confirmed Reddit recipient.",
|
|
594
|
+
"idempotency": "local-at-most-once",
|
|
595
|
+
"dedupeWindowMs": 86400000,
|
|
596
|
+
"input": {
|
|
597
|
+
"properties": {
|
|
598
|
+
"recipient": {
|
|
599
|
+
"type": "string",
|
|
600
|
+
"description": "Exact Reddit username",
|
|
601
|
+
"minLength": 1,
|
|
602
|
+
"maxLength": 64
|
|
603
|
+
},
|
|
604
|
+
"subject": {
|
|
605
|
+
"type": "string",
|
|
606
|
+
"description": "Exact legacy-message subject when applicable",
|
|
607
|
+
"minLength": 1,
|
|
608
|
+
"maxLength": 100
|
|
609
|
+
},
|
|
610
|
+
"body": {
|
|
611
|
+
"type": "string",
|
|
612
|
+
"description": "Exact message body",
|
|
613
|
+
"minLength": 1,
|
|
614
|
+
"maxLength": 1000
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
"required": [
|
|
618
|
+
"recipient",
|
|
619
|
+
"body"
|
|
620
|
+
]
|
|
621
|
+
},
|
|
622
|
+
"webSession": {
|
|
623
|
+
"site": "reddit",
|
|
624
|
+
"action": "messaging.send",
|
|
625
|
+
"contractVersion": 1,
|
|
626
|
+
"timeoutMs": 60000,
|
|
627
|
+
"maxOutputBytes": 2097152
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
"posts.publish": {
|
|
631
|
+
"description": "Capture-required contract reservation: publish one Reddit self, link, image, or video post only after its exact submission and media workflow is reviewed.",
|
|
632
|
+
"risk": "R3",
|
|
633
|
+
"sideEffect": "Publishes one externally visible post in the exact confirmed Reddit community.",
|
|
634
|
+
"idempotency": "local-at-most-once",
|
|
635
|
+
"dedupeWindowMs": 86400000,
|
|
636
|
+
"input": {
|
|
637
|
+
"properties": {
|
|
638
|
+
"community": {
|
|
639
|
+
"type": "string",
|
|
640
|
+
"description": "Exact destination subreddit name",
|
|
641
|
+
"minLength": 1,
|
|
642
|
+
"maxLength": 64
|
|
643
|
+
},
|
|
644
|
+
"title": {
|
|
645
|
+
"type": "string",
|
|
646
|
+
"description": "Exact post title",
|
|
647
|
+
"minLength": 1,
|
|
648
|
+
"maxLength": 280
|
|
649
|
+
},
|
|
650
|
+
"body": {
|
|
651
|
+
"type": "string",
|
|
652
|
+
"description": "Exact self-post body",
|
|
653
|
+
"minLength": 1,
|
|
654
|
+
"maxLength": 10000
|
|
655
|
+
}
|
|
656
|
+
},
|
|
657
|
+
"required": [
|
|
658
|
+
"community",
|
|
659
|
+
"title"
|
|
660
|
+
]
|
|
661
|
+
},
|
|
662
|
+
"webSession": {
|
|
663
|
+
"site": "reddit",
|
|
664
|
+
"action": "posts.publish",
|
|
665
|
+
"contractVersion": 1,
|
|
666
|
+
"timeoutMs": 60000,
|
|
667
|
+
"maxOutputBytes": 4194304
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
"posts.repost": {
|
|
671
|
+
"description": "Capture-required contract reservation: crosspost one exact Reddit post only after source, destination, actor, response, and independent readback are reviewed.",
|
|
672
|
+
"risk": "R3",
|
|
673
|
+
"sideEffect": "Publishes one externally visible crosspost in the exact confirmed Reddit community.",
|
|
674
|
+
"idempotency": "local-at-most-once",
|
|
675
|
+
"dedupeWindowMs": 86400000,
|
|
676
|
+
"input": {
|
|
677
|
+
"properties": {
|
|
678
|
+
"post_id": {
|
|
679
|
+
"type": "string",
|
|
680
|
+
"description": "Exact source t3_ Reddit post fullname",
|
|
681
|
+
"minLength": 4,
|
|
682
|
+
"maxLength": 40
|
|
683
|
+
},
|
|
684
|
+
"community": {
|
|
685
|
+
"type": "string",
|
|
686
|
+
"description": "Exact destination subreddit name",
|
|
687
|
+
"minLength": 1,
|
|
688
|
+
"maxLength": 64
|
|
689
|
+
},
|
|
690
|
+
"title": {
|
|
691
|
+
"type": "string",
|
|
692
|
+
"description": "Exact crosspost title",
|
|
693
|
+
"minLength": 1,
|
|
694
|
+
"maxLength": 280
|
|
695
|
+
}
|
|
696
|
+
},
|
|
697
|
+
"required": [
|
|
698
|
+
"post_id",
|
|
699
|
+
"community",
|
|
700
|
+
"title"
|
|
701
|
+
]
|
|
702
|
+
},
|
|
703
|
+
"webSession": {
|
|
704
|
+
"site": "reddit",
|
|
705
|
+
"action": "posts.repost",
|
|
706
|
+
"contractVersion": 1,
|
|
707
|
+
"timeoutMs": 60000,
|
|
708
|
+
"maxOutputBytes": 4194304
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
}
|