diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 4108301..cb517df 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -16,6 +16,8 @@ jobs: publish: name: publish runs-on: ubuntu-latest + permissions: + contents: write steps: - uses: actions/checkout@v4 @@ -43,4 +45,6 @@ jobs: - name: Upload MCP Server DXT GitHub release asset run: | gh release upload ${{ github.event.release.tag_name }} \ - packages/mcp-server/post_for_me_api.dxt + packages/mcp-server/post_for_me_api.mcpb + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index 520dec3..de22327 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -19,3 +19,4 @@ jobs: bash ./bin/check-release-environment env: NPM_TOKEN: ${{ secrets.POST_FOR_ME_NPM_TOKEN || secrets.NPM_TOKEN }} + diff --git a/.gitignore b/.gitignore index 4b27d0f..d62bea5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,6 @@ dist dist-deno /*.tgz .idea/ +.eslintcache dist-bundle -*.dxt +*.mcpb diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0d1bebe..64e0684 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.0" + ".": "1.7.0" } diff --git a/.stats.yml b/.stats.yml index a8ef33b..a1ca89d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 14 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/day-moon-development%2Fpost-for-me-128141f7efe71c23ed45cbe11880e650abc378d65cad1d1f1d1534bb43b84347.yml -openapi_spec_hash: 5a8da35f79513f602bab72ec0cf8ee9e +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/day-moon-development%2Fpost-for-me-7be03abbf7f1e1c9fa36b3299590b9fd4008eb418656be347e7e688c90616c5f.yml +openapi_spec_hash: 9bebba0f071db50935e153bb9735e540 config_hash: 11f1fa08f11ac07d06bf1d8a633113d6 diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bd8bb0..ec726b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,45 @@ # Changelog +## 1.7.0 (2025-10-03) + +Full Changelog: [v1.6.0...v1.7.0](https://github.com/DayMoonDevelopment/post-for-me-typescript/compare/v1.6.0...v1.7.0) + +### Features + +* **api:** api update ([70d810c](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/70d810cdae8a39c4980537245acffc91c4008c87)) +* **api:** api update ([5bb1334](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/5bb1334ff4fa9fd2a4c42c4a8743e8797f454aa0)) +* **api:** api update ([567186b](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/567186b3340ae2b29caad0ac32728ed3b12635a7)) +* **mcp:** add docs search tool ([5d7e625](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/5d7e6254e4cf1a1b8d4ff2fce317a0f33f5756c7)) +* **mcp:** add option for including docs tools ([098b996](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/098b9966ca39104ade6fdda8003729022336ae0f)) +* **mcp:** enable experimental docs search tool ([3f70e41](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/3f70e41731e60a2e86ad8c60dadbe03d7fcdf430)) + + +### Bug Fixes + +* **ci:** set permissions for DXT publish action ([b108f37](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/b108f37b8b2571adf362e72428a4ab47f665a25d)) +* **mcp:** fix cli argument parsing logic ([1dcba49](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/1dcba49a8f5a3b58d1e8df96e74ddf259d4737d5)) +* **mcp:** resolve a linting issue in server code ([38db0c1](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/38db0c14b4c3321f6e48998523fd761a9b6f8218)) + + +### Performance Improvements + +* faster formatting ([5195e23](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/5195e23de72b9b40b184d97b4cc5369210900bd7)) + + +### Chores + +* **codegen:** internal codegen update ([a2eae84](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/a2eae846e22aaf9fe24d9e2645ab2e7300b414f1)) +* do not install brew dependencies in ./scripts/bootstrap by default ([c6e597b](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/c6e597b69862b04d7fff08b0e717d18523c4a761)) +* **internal:** codegen related update ([714b258](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/714b258bcb09ca37c011d955db03d79aa30cbbcd)) +* **internal:** fix incremental formatting in some cases ([0d0a799](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/0d0a79982ff602ac70f3d75cb381f180f6905125)) +* **internal:** gitignore .mcpb files ([d014387](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/d014387e3459d966ad6c77d70e0a37f7478ca933)) +* **internal:** ignore .eslintcache ([412ef1d](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/412ef1df5980010e50ac5225d3718bc7f5854fca)) +* **internal:** remove .eslintcache ([9bf0ae4](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/9bf0ae47ea97dd8cc83b6651e89d28c654227410)) +* **internal:** remove deprecated `compilerOptions.baseUrl` from tsconfig.json ([4e3a331](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/4e3a331bb6e0d90d52910df2aec7dc3f6e18e502)) +* **mcp:** allow pointing `docs_search` tool at other URLs ([61242ef](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/61242ef7124865eba3313157c83d10b5a77b0056)) +* **mcp:** rename dxt to mcpb ([5ed6664](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/5ed6664513a311a73320050f6e8de00794366110)) +* update lockfile ([1bd889f](https://github.com/DayMoonDevelopment/post-for-me-typescript/commit/1bd889f9305635d3cdb931b2a38023e35e6296fb)) + ## 1.6.0 (2025-09-12) Full Changelog: [v1.5.3...v1.6.0](https://github.com/DayMoonDevelopment/post-for-me-typescript/compare/v1.5.3...v1.6.0) diff --git a/package.json b/package.json index 0d49a55..9b294f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "post-for-me", - "version": "1.6.0", + "version": "1.7.0", "description": "The official TypeScript library for the Post For Me API", "author": "Post For Me ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/build b/packages/mcp-server/build index 0fb7957..c8b34de 100644 --- a/packages/mcp-server/build +++ b/packages/mcp-server/build @@ -32,7 +32,7 @@ chmod +x dist/index.js DIST_PATH=./dist PKG_IMPORT_PATH=post-for-me-mcp/ node ../../scripts/utils/postprocess-files.cjs # mcp bundle -rm -rf dist-bundle post_for_me_api.dxt; mkdir dist-bundle +rm -rf dist-bundle post_for_me_api.mcpb; mkdir dist-bundle # copy package.json PKG_JSON_PATH=../../packages/mcp-server/package.json node ../../scripts/utils/make-dist-package-json.cjs > dist-bundle/package.json @@ -48,9 +48,9 @@ cd .. # pack bundle cp manifest.json dist-bundle -npx dxt pack dist-bundle post_for_me_api.dxt +npx mcpb pack dist-bundle post_for_me_api.mcpb -npx dxt sign post_for_me_api.dxt --self-signed +npx mcpb sign post_for_me_api.mcpb --self-signed # clean up rm -rf dist-bundle diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index 6ca4b2e..2cb307c 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -1,5 +1,5 @@ { - "dxt_version": "0.1", + "dxt_version": "0.2", "name": "post-for-me-mcp", "version": "1.5.3", "description": "The official MCP Server for the Post For Me API", @@ -15,7 +15,7 @@ "documentation": "https://api.postforme.dev/docs", "server": { "type": "node", - "entry_point": "${__dirname}/index.js", + "entry_point": "index.js", "mcp_config": { "command": "node", "args": ["${__dirname}/index.js"], @@ -32,6 +32,7 @@ "type": "string" } }, + "tools": [], "tools_generated": true, "compatibility": { "runtimes": { diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 7aed529..c239d11 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "post-for-me-mcp", - "version": "1.6.0", + "version": "1.7.0", "description": "The official MCP Server for the Post For Me API", "author": "Post For Me ", "types": "dist/index.d.ts", @@ -47,7 +47,7 @@ "mcp-server": "dist/index.js" }, "devDependencies": { - "@anthropic-ai/dxt": "^0.2.6", + "@anthropic-ai/mcpb": "^1.1.0", "@types/cors": "^2.8.19", "@types/express": "^5.0.3", "@types/jest": "^29.4.0", diff --git a/packages/mcp-server/src/docs-search-tool.ts b/packages/mcp-server/src/docs-search-tool.ts new file mode 100644 index 0000000..d713cf7 --- /dev/null +++ b/packages/mcp-server/src/docs-search-tool.ts @@ -0,0 +1,48 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { Metadata, asTextContentResult } from './tools/types'; + +import { Tool } from '@modelcontextprotocol/sdk/types.js'; + +export const metadata: Metadata = { + resource: 'all', + operation: 'read', + tags: [], + httpMethod: 'get', +}; + +export const tool: Tool = { + name: 'search_docs', + description: + 'Search for documentation for how to use the client to interact with the API.\nThe tool will return an array of Markdown-formatted documentation pages.', + inputSchema: { + type: 'object', + properties: { + query: { + type: 'string', + description: 'The query to search for.', + }, + language: { + type: 'string', + description: 'The language for the SDK to search for.', + enum: ['http', 'python', 'go', 'typescript', 'terraform', 'ruby', 'java', 'kotlin'], + }, + }, + required: ['query', 'language'], + }, + annotations: { + readOnlyHint: true, + }, +}; + +const docsSearchURL = + process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/post-for-me/docs/search'; + +export const handler = async (_: unknown, args: Record | undefined) => { + const body = args as any; + const query = new URLSearchParams(body).toString(); + const result = await fetch(`${docsSearchURL}?${query}`); + return asTextContentResult(await result.json()); +}; + +export default { metadata, tool, handler }; diff --git a/packages/mcp-server/src/options.ts b/packages/mcp-server/src/options.ts index ecc9f10..4fe3b98 100644 --- a/packages/mcp-server/src/options.ts +++ b/packages/mcp-server/src/options.ts @@ -17,6 +17,7 @@ export type McpOptions = { includeDynamicTools?: boolean | undefined; includeAllTools?: boolean | undefined; includeCodeTools?: boolean | undefined; + includeDocsTools?: boolean | undefined; filters?: Filter[] | undefined; capabilities?: Partial | undefined; }; @@ -55,13 +56,13 @@ export function parseCLIOptions(): CLIOptions { .option('tools', { type: 'string', array: true, - choices: ['dynamic', 'all', 'code'], + choices: ['dynamic', 'all', 'code', 'docs'], description: 'Use dynamic tools or all tools', }) .option('no-tools', { type: 'string', array: true, - choices: ['dynamic', 'all', 'code'], + choices: ['dynamic', 'all', 'code', 'docs'], description: 'Do not use any dynamic or all tools', }) .option('tool', { @@ -245,13 +246,15 @@ export function parseCLIOptions(): CLIOptions { } } - const shouldIncludeToolType = (toolType: 'dynamic' | 'all' | 'code') => - explicitTools ? argv.tools?.includes(toolType) && !argv.noTools?.includes(toolType) : undefined; + const shouldIncludeToolType = (toolType: 'dynamic' | 'all' | 'code' | 'docs') => + argv.noTools?.includes(toolType) ? false + : argv.tools?.includes(toolType) ? true + : undefined; - const explicitTools = Boolean(argv.tools || argv.noTools); const includeDynamicTools = shouldIncludeToolType('dynamic'); const includeAllTools = shouldIncludeToolType('all'); const includeCodeTools = shouldIncludeToolType('code'); + const includeDocsTools = shouldIncludeToolType('docs'); const transport = argv.transport as 'stdio' | 'http'; @@ -261,6 +264,7 @@ export function parseCLIOptions(): CLIOptions { includeDynamicTools, includeAllTools, includeCodeTools, + includeDocsTools, filters, capabilities: clientCapabilities, list: argv.list || false, @@ -280,8 +284,8 @@ const coerceArray = (zodType: T) => ); const QueryOptions = z.object({ - tools: coerceArray(z.enum(['dynamic', 'all'])).describe('Use dynamic tools or all tools'), - no_tools: coerceArray(z.enum(['dynamic', 'all'])).describe('Do not use dynamic tools or all tools'), + tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Use dynamic tools or all tools'), + no_tools: coerceArray(z.enum(['dynamic', 'all', 'docs'])).describe('Do not use dynamic tools or all tools'), tool: coerceArray(z.string()).describe('Include tools matching the specified names'), resource: coerceArray(z.string()).describe('Include tools matching the specified resources'), operation: coerceArray(z.enum(['read', 'write'])).describe( @@ -376,11 +380,17 @@ export function parseQueryOptions(defaultOptions: McpOptions, query: unknown): M : queryOptions.tools?.includes('all') ? true : defaultOptions.includeAllTools; + let docsTools: boolean | undefined = + queryOptions.no_tools && queryOptions.no_tools?.includes('docs') ? false + : queryOptions.tools?.includes('docs') ? true + : defaultOptions.includeDocsTools; + return { client: queryOptions.client ?? defaultOptions.client, includeDynamicTools: dynamicTools, includeAllTools: allTools, includeCodeTools: undefined, + includeDocsTools: docsTools, filters, capabilities: clientCapabilities, }; diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 4d1d77f..aae9923 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -21,6 +21,7 @@ import { } from './compat'; import { dynamicTools } from './dynamic-tools'; import { codeTool } from './code-tool'; +import docsSearchTool from './docs-search-tool'; import { McpOptions } from './options'; export { McpOptions } from './options'; @@ -33,7 +34,7 @@ export const newMcpServer = () => new McpServer( { name: 'post_for_me_api', - version: '1.6.0', + version: '1.7.0', }, { capabilities: { tools: {}, logging: {} } }, ); @@ -147,7 +148,7 @@ export function initMcpServer(params: { export async function selectTools(endpoints: Endpoint[], options?: McpOptions): Promise { const filteredEndpoints = query(options?.filters ?? [], endpoints); - let includedTools = filteredEndpoints; + let includedTools = filteredEndpoints.slice(); if (includedTools.length > 0) { if (options?.includeDynamicTools) { @@ -155,16 +156,18 @@ export async function selectTools(endpoints: Endpoint[], options?: McpOptions): } } else { if (options?.includeAllTools) { - includedTools = endpoints; + includedTools = endpoints.slice(); } else if (options?.includeDynamicTools) { includedTools = dynamicTools(endpoints); } else if (options?.includeCodeTools) { includedTools = [await codeTool()]; } else { - includedTools = endpoints; + includedTools = endpoints.slice(); } } - + if (options?.includeDocsTools ?? true) { + includedTools.push(docsSearchTool); + } const capabilities = { ...defaultClientCapabilities, ...options?.capabilities }; return applyCompatibilityTransformations(includedTools, capabilities); } diff --git a/packages/mcp-server/src/tools/social-accounts/create-auth-url-social-accounts.ts b/packages/mcp-server/src/tools/social-accounts/create-auth-url-social-accounts.ts index fb85b45..15b3145 100644 --- a/packages/mcp-server/src/tools/social-accounts/create-auth-url-social-accounts.ts +++ b/packages/mcp-server/src/tools/social-accounts/create-auth-url-social-accounts.ts @@ -49,6 +49,19 @@ export const tool: Tool = { }, required: ['app_password', 'handle'], }, + instagram: { + type: 'object', + description: 'Additional data for connecting instagram accounts', + properties: { + connection_type: { + type: 'string', + description: + 'The type of connection; instagram for using login with instagram, facebook for using login with facebook.', + enum: ['instagram', 'facebook'], + }, + }, + required: ['connection_type'], + }, linkedin: { type: 'object', description: 'Additional data for connecting linkedin accounts', diff --git a/packages/mcp-server/src/tools/social-posts/create-social-posts.ts b/packages/mcp-server/src/tools/social-posts/create-social-posts.ts index 925ab9a..02268e5 100644 --- a/packages/mcp-server/src/tools/social-posts/create-social-posts.ts +++ b/packages/mcp-server/src/tools/social-posts/create-social-posts.ts @@ -53,6 +53,10 @@ export const tool: Tool = { type: 'boolean', description: 'Allow stitch on TikTok', }, + auto_add_music: { + type: 'boolean', + description: 'Will automatically add music to photo posts on TikTok', + }, board_ids: { type: 'array', description: 'Pinterest board IDs', @@ -65,6 +69,22 @@ export const tool: Tool = { description: 'Overrides the `caption` from the post', additionalProperties: true, }, + collaborators: { + type: 'array', + description: + 'List of page ids or users to invite as collaborators for a Video Reel (Instagram and Facebook)', + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: true, + }, + }, + }, + community_id: { + type: 'string', + description: 'Id of the twitter community to post to', + }, disclose_branded_content: { type: 'boolean', description: 'Disclose branded content on TikTok', @@ -86,6 +106,11 @@ export const tool: Tool = { type: 'string', description: 'Pinterest post link', }, + location: { + type: 'string', + description: + 'Page id with a location that you want to tag the image or video with (Instagram and Facebook)', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -98,10 +123,46 @@ export const tool: Tool = { description: 'Post placement for Facebook/Instagram/Threads', enum: ['reels', 'timeline', 'stories'], }, + poll: { + type: 'object', + description: 'Poll options for the twitter', + properties: { + duration_minutes: { + type: 'number', + description: 'Duration of the poll in minutes', + }, + options: { + type: 'array', + description: 'The choices of the poll, requiring 2-4 options', + items: { + type: 'string', + }, + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, + }, + required: ['duration_minutes', 'options'], + }, privacy_status: { type: 'string', description: 'Sets the privacy status for TikTok (private, public)', }, + quote_tweet_id: { + type: 'string', + description: 'Id of the tweet you want to quote', + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, + share_to_feed: { + type: 'boolean', + description: 'If false Instagram video posts will only be shown in the Reels tab', + }, title: { type: 'string', description: 'Overrides the `title` from the post', @@ -134,6 +195,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -212,6 +308,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -236,6 +367,21 @@ export const tool: Tool = { description: 'Overrides the `caption` from the post', additionalProperties: true, }, + collaborators: { + type: 'array', + description: 'List of page ids to invite as collaborators for a Video Reel', + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: true, + }, + }, + }, + location: { + type: 'string', + description: 'Page id with a location that you want to tag the image or video with', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -246,6 +392,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -282,6 +463,10 @@ export const tool: Tool = { type: 'string', }, }, + location: { + type: 'string', + description: 'Page id with a location that you want to tag the image or video with', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -292,6 +477,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -311,6 +531,10 @@ export const tool: Tool = { description: 'Instagram post placement', enum: ['reels', 'stories', 'timeline'], }, + share_to_feed: { + type: 'boolean', + description: 'If false video posts will only be shown in the Reels tab', + }, }, }, linkedin_configuration_dto: { @@ -331,6 +555,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -376,6 +635,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -410,6 +704,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -446,6 +775,10 @@ export const tool: Tool = { type: 'boolean', description: 'Allow stitch on TikTok', }, + auto_add_music: { + type: 'boolean', + description: 'Will automatically add music to photo posts', + }, caption: { type: 'object', description: 'Overrides the `caption` from the post', @@ -478,6 +811,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -510,6 +878,10 @@ export const tool: Tool = { description: 'Overrides the `caption` from the post', additionalProperties: true, }, + community_id: { + type: 'string', + description: 'Id of the community to post to', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -520,6 +892,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -534,6 +941,38 @@ export const tool: Tool = { required: ['url'], }, }, + poll: { + type: 'object', + description: 'Poll options for the tweet', + properties: { + duration_minutes: { + type: 'number', + description: 'Duration of the poll in minutes', + }, + options: { + type: 'array', + description: 'The choices of the poll, requiring 2-4 options', + items: { + type: 'string', + }, + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, + }, + required: ['duration_minutes', 'options'], + }, + quote_tweet_id: { + type: 'string', + description: 'Id of the tweet you want to quote', + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, }, }, youtube_configuration_dto: { @@ -554,6 +993,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', diff --git a/packages/mcp-server/src/tools/social-posts/update-social-posts.ts b/packages/mcp-server/src/tools/social-posts/update-social-posts.ts index 4f96037..aaf968b 100644 --- a/packages/mcp-server/src/tools/social-posts/update-social-posts.ts +++ b/packages/mcp-server/src/tools/social-posts/update-social-posts.ts @@ -56,6 +56,10 @@ export const tool: Tool = { type: 'boolean', description: 'Allow stitch on TikTok', }, + auto_add_music: { + type: 'boolean', + description: 'Will automatically add music to photo posts on TikTok', + }, board_ids: { type: 'array', description: 'Pinterest board IDs', @@ -68,6 +72,22 @@ export const tool: Tool = { description: 'Overrides the `caption` from the post', additionalProperties: true, }, + collaborators: { + type: 'array', + description: + 'List of page ids or users to invite as collaborators for a Video Reel (Instagram and Facebook)', + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: true, + }, + }, + }, + community_id: { + type: 'string', + description: 'Id of the twitter community to post to', + }, disclose_branded_content: { type: 'boolean', description: 'Disclose branded content on TikTok', @@ -89,6 +109,11 @@ export const tool: Tool = { type: 'string', description: 'Pinterest post link', }, + location: { + type: 'string', + description: + 'Page id with a location that you want to tag the image or video with (Instagram and Facebook)', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -101,10 +126,46 @@ export const tool: Tool = { description: 'Post placement for Facebook/Instagram/Threads', enum: ['reels', 'timeline', 'stories'], }, + poll: { + type: 'object', + description: 'Poll options for the twitter', + properties: { + duration_minutes: { + type: 'number', + description: 'Duration of the poll in minutes', + }, + options: { + type: 'array', + description: 'The choices of the poll, requiring 2-4 options', + items: { + type: 'string', + }, + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, + }, + required: ['duration_minutes', 'options'], + }, privacy_status: { type: 'string', description: 'Sets the privacy status for TikTok (private, public)', }, + quote_tweet_id: { + type: 'string', + description: 'Id of the tweet you want to quote', + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, + share_to_feed: { + type: 'boolean', + description: 'If false Instagram video posts will only be shown in the Reels tab', + }, title: { type: 'string', description: 'Overrides the `title` from the post', @@ -137,6 +198,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -215,6 +311,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -239,6 +370,21 @@ export const tool: Tool = { description: 'Overrides the `caption` from the post', additionalProperties: true, }, + collaborators: { + type: 'array', + description: 'List of page ids to invite as collaborators for a Video Reel', + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: true, + }, + }, + }, + location: { + type: 'string', + description: 'Page id with a location that you want to tag the image or video with', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -249,6 +395,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -285,6 +466,10 @@ export const tool: Tool = { type: 'string', }, }, + location: { + type: 'string', + description: 'Page id with a location that you want to tag the image or video with', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -295,6 +480,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -314,6 +534,10 @@ export const tool: Tool = { description: 'Instagram post placement', enum: ['reels', 'stories', 'timeline'], }, + share_to_feed: { + type: 'boolean', + description: 'If false video posts will only be shown in the Reels tab', + }, }, }, linkedin_configuration_dto: { @@ -334,6 +558,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -379,6 +638,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -413,6 +707,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -449,6 +778,10 @@ export const tool: Tool = { type: 'boolean', description: 'Allow stitch on TikTok', }, + auto_add_music: { + type: 'boolean', + description: 'Will automatically add music to photo posts', + }, caption: { type: 'object', description: 'Overrides the `caption` from the post', @@ -481,6 +814,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -513,6 +881,10 @@ export const tool: Tool = { description: 'Overrides the `caption` from the post', additionalProperties: true, }, + community_id: { + type: 'string', + description: 'Id of the community to post to', + }, media: { type: 'array', description: 'Overrides the `media` from the post', @@ -523,6 +895,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', @@ -537,6 +944,38 @@ export const tool: Tool = { required: ['url'], }, }, + poll: { + type: 'object', + description: 'Poll options for the tweet', + properties: { + duration_minutes: { + type: 'number', + description: 'Duration of the poll in minutes', + }, + options: { + type: 'array', + description: 'The choices of the poll, requiring 2-4 options', + items: { + type: 'string', + }, + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, + }, + required: ['duration_minutes', 'options'], + }, + quote_tweet_id: { + type: 'string', + description: 'Id of the tweet you want to quote', + }, + reply_settings: { + type: 'string', + description: 'Who can reply to the tweet', + enum: ['following', 'mentionedUsers', 'subscribers', 'verified'], + }, }, }, youtube_configuration_dto: { @@ -557,6 +996,41 @@ export const tool: Tool = { type: 'string', description: 'Public URL of the media', }, + tags: { + type: 'array', + description: 'List of tags to attach to the media', + items: { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Facebook User ID, Instagram Username or Instagram product id to tag', + }, + platform: { + type: 'string', + description: 'The platform for the tags', + enum: ['facebook', 'instagram'], + }, + type: { + type: 'string', + description: + 'The type of tag, user to tag accounts, product to tag products (only supported for instagram)', + enum: ['user', 'product'], + }, + x: { + type: 'number', + description: + 'Percentage distance from left edge of the image, Not required for videos or stories', + }, + y: { + type: 'number', + description: + 'Percentage distance from top edge of the image, Not required for videos or stories', + }, + }, + required: ['id', 'platform', 'type'], + }, + }, thumbnail_timestamp_ms: { type: 'object', description: 'Timestamp in milliseconds of frame to use as thumbnail for the media', diff --git a/packages/mcp-server/tsconfig.build.json b/packages/mcp-server/tsconfig.build.json index 9329047..42d9b9b 100644 --- a/packages/mcp-server/tsconfig.build.json +++ b/packages/mcp-server/tsconfig.build.json @@ -5,8 +5,8 @@ "compilerOptions": { "rootDir": "./dist/src", "paths": { - "post-for-me-mcp/*": ["dist/src/*"], - "post-for-me-mcp": ["dist/src/index.ts"] + "post-for-me-mcp/*": ["./dist/src/*"], + "post-for-me-mcp": ["./dist/src/index.ts"] }, "noEmit": false, "declaration": true, diff --git a/packages/mcp-server/tsconfig.json b/packages/mcp-server/tsconfig.json index ad39d15..cc7c581 100644 --- a/packages/mcp-server/tsconfig.json +++ b/packages/mcp-server/tsconfig.json @@ -7,10 +7,9 @@ "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true, - "baseUrl": "./", "paths": { - "post-for-me-mcp/*": ["src/*"], - "post-for-me-mcp": ["src/index.ts"] + "post-for-me-mcp/*": ["./src/*"], + "post-for-me-mcp": ["./src/index.ts"] }, "noEmit": true, diff --git a/packages/mcp-server/yarn.lock b/packages/mcp-server/yarn.lock index ad81983..966d057 100644 --- a/packages/mcp-server/yarn.lock +++ b/packages/mcp-server/yarn.lock @@ -10,20 +10,6 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@anthropic-ai/dxt@^0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@anthropic-ai/dxt/-/dxt-0.2.6.tgz#636197c3d083c9136ac3b5a11d2ba82477fdc2c6" - integrity sha512-5VSqKRpkytTYh5UJz9jOaI8zLXNCe4Gc+ArKGFV6IeWnEPP0Qnd0k+V3pO8cYzp92Puf/+Cgo0xc4haE0azTXg== - dependencies: - "@inquirer/prompts" "^6.0.1" - commander "^13.1.0" - fflate "^0.8.2" - galactus "^1.0.0" - ignore "^7.0.5" - node-forge "^1.3.1" - pretty-bytes "^5.6.0" - zod "^3.25.67" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" @@ -350,144 +336,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@inquirer/checkbox@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-3.0.1.tgz#0a57f704265f78c36e17f07e421b98efb4b9867b" - integrity sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" - -"@inquirer/confirm@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-4.0.1.tgz#9106d6bffa0b2fdd0e4f60319b6f04f2e06e6e25" - integrity sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - -"@inquirer/core@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.2.1.tgz#677c49dee399c9063f31e0c93f0f37bddc67add1" - integrity sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg== - dependencies: - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - "@types/mute-stream" "^0.0.4" - "@types/node" "^22.5.5" - "@types/wrap-ansi" "^3.0.0" - ansi-escapes "^4.3.2" - cli-width "^4.1.0" - mute-stream "^1.0.0" - signal-exit "^4.1.0" - strip-ansi "^6.0.1" - wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/editor@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-3.0.1.tgz#d109f21e050af6b960725388cb1c04214ed7c7bc" - integrity sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - external-editor "^3.1.0" - -"@inquirer/expand@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-3.0.1.tgz#aed9183cac4d12811be47a4a895ea8e82a17e22c" - integrity sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/figures@^1.0.6": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.13.tgz#ad0afd62baab1c23175115a9b62f511b6a751e45" - integrity sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw== - -"@inquirer/input@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-3.0.1.tgz#de63d49e516487388508d42049deb70f2cb5f28e" - integrity sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - -"@inquirer/number@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-2.0.1.tgz#b9863080d02ab7dc2e56e16433d83abea0f2a980" - integrity sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - -"@inquirer/password@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-3.0.1.tgz#2a9a9143591088336bbd573bcb05d5bf080dbf87" - integrity sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - ansi-escapes "^4.3.2" - -"@inquirer/prompts@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-6.0.1.tgz#43f5c0ed35c5ebfe52f1d43d46da2d363d950071" - integrity sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A== - dependencies: - "@inquirer/checkbox" "^3.0.1" - "@inquirer/confirm" "^4.0.1" - "@inquirer/editor" "^3.0.1" - "@inquirer/expand" "^3.0.1" - "@inquirer/input" "^3.0.1" - "@inquirer/number" "^2.0.1" - "@inquirer/password" "^3.0.1" - "@inquirer/rawlist" "^3.0.1" - "@inquirer/search" "^2.0.1" - "@inquirer/select" "^3.0.1" - -"@inquirer/rawlist@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-3.0.1.tgz#729def358419cc929045f264131878ed379e0af3" - integrity sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/type" "^2.0.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/search@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-2.0.1.tgz#69b774a0a826de2e27b48981d01bc5ad81e73721" - integrity sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - yoctocolors-cjs "^2.1.2" - -"@inquirer/select@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-3.0.1.tgz#1df9ed27fb85a5f526d559ac5ce7cc4e9dc4e7ec" - integrity sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q== - dependencies: - "@inquirer/core" "^9.2.1" - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" - -"@inquirer/type@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-2.0.0.tgz#08fa513dca2cb6264fe1b0a2fabade051444e3f6" - integrity sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag== - dependencies: - mute-stream "^1.0.0" - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -947,13 +795,6 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/mute-stream@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478" - integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow== - dependencies: - "@types/node" "*" - "@types/node@*": version "22.15.17" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" @@ -961,13 +802,6 @@ dependencies: undici-types "~6.21.0" -"@types/node@^22.5.5": - version "22.18.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.18.0.tgz#9e4709be4f104e3568f7dd1c71e2949bf147a47b" - integrity sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ== - dependencies: - undici-types "~6.21.0" - "@types/qs@*", "@types/qs@^6.14.0": version "6.14.0" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" @@ -1000,11 +834,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/wrap-ansi@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" - integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== - "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -1151,7 +980,7 @@ ajv@^6.12.4, ajv@^6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: +ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -1393,11 +1222,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - ci-info@^3.2.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -1413,11 +1237,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -1454,11 +1273,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" - integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1871,15 +1685,6 @@ express@^5.0.1, express@^5.1.0: type-is "^2.0.1" vary "^1.1.2" -external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -1925,11 +1730,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fflate@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" - integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -1993,14 +1793,6 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== -flora-colossus@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flora-colossus/-/flora-colossus-2.0.0.tgz#af1e85db0a8256ef05f3fb531c1235236c97220a" - integrity sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA== - dependencies: - debug "^4.3.4" - fs-extra "^10.1.0" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -2011,15 +1803,6 @@ fresh@^2.0.0: resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2035,15 +1818,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -galactus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/galactus/-/galactus-1.0.0.tgz#c2615182afa0c6d0859b92e56ae36d052827db7e" - integrity sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ== - dependencies: - debug "^4.3.4" - flora-colossus "^2.0.0" - fs-extra "^10.1.0" - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -2136,7 +1910,7 @@ gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: +graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -2191,23 +1965,11 @@ iconv-lite@0.6.3, iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -ignore@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" - integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== - import-fresh@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" @@ -2786,15 +2548,6 @@ json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" - integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -2968,11 +2721,6 @@ ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -2983,11 +2731,6 @@ negotiator@^1.0.0: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== -node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3053,11 +2796,6 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - p-all@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-all/-/p-all-3.0.0.tgz#077c023c37e75e760193badab2bad3ccd5782bfb" @@ -3201,11 +2939,6 @@ prettier@^3.0.0: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== -pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -3353,7 +3086,7 @@ safe-buffer@5.2.1, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -3457,11 +3190,6 @@ signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -3606,13 +3334,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -3753,11 +3474,6 @@ undici-types@~6.21.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -3821,15 +3537,6 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -3890,11 +3597,6 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yoctocolors-cjs@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz#7e4964ea8ec422b7a40ac917d3a344cfd2304baa" - integrity sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== - zod-to-json-schema@^3.24.1, zod-to-json-schema@^3.24.5: version "3.24.5" resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz#d1095440b147fb7c2093812a53c54df8d5df50a3" @@ -3910,7 +3612,7 @@ zod@^3.23.8: resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== -zod@^3.25.20, zod@^3.25.67: +zod@^3.25.20: version "3.25.76" resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== diff --git a/scripts/bootstrap b/scripts/bootstrap index 062a034..a8b69ff 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -4,10 +4,18 @@ set -e cd "$(dirname "$0")/.." -if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ]; then +if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then brew bundle check >/dev/null 2>&1 || { - echo "==> Installing Homebrew dependencies…" - brew bundle + echo -n "==> Install Homebrew dependencies? (y/N): " + read -r response + case "$response" in + [yY][eE][sS]|[yY]) + brew bundle + ;; + *) + ;; + esac + echo } fi diff --git a/scripts/fast-format b/scripts/fast-format new file mode 100755 index 0000000..53721ac --- /dev/null +++ b/scripts/fast-format @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo "Script started with $# arguments" +echo "Arguments: $*" +echo "Script location: $(dirname "$0")" + +cd "$(dirname "$0")/.." +echo "Changed to directory: $(pwd)" + +if [ $# -eq 0 ]; then + echo "Usage: $0 [additional-formatter-args...]" + echo "The file should contain one file path per line" + exit 1 +fi + +FILE_LIST="$1" + +echo "Looking for file: $FILE_LIST" + +if [ ! -f "$FILE_LIST" ]; then + echo "Error: File '$FILE_LIST' not found" + exit 1 +fi + +echo "==> Running eslint --fix" +ESLINT_FILES="$(grep '\.ts$' "$FILE_LIST" || true)" +if ! [ -z "$ESLINT_FILES" ]; then + echo "$ESLINT_FILES" | xargs ./node_modules/.bin/eslint --cache --fix +fi + +echo "==> Running prettier --write" +# format things eslint didn't +PRETTIER_FILES="$(grep '\.\(js\|json\)$' "$FILE_LIST" || true)" +if ! [ -z "$PRETTIER_FILES" ]; then + echo "$PRETTIER_FILES" | xargs ./node_modules/.bin/prettier \ + --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern \ + '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs' +fi diff --git a/src/resources/social-accounts.ts b/src/resources/social-accounts.ts index e3f350b..f782027 100644 --- a/src/resources/social-accounts.ts +++ b/src/resources/social-accounts.ts @@ -349,6 +349,11 @@ export namespace SocialAccountCreateAuthURLParams { */ bluesky?: PlatformData.Bluesky; + /** + * Additional data for connecting instagram accounts + */ + instagram?: PlatformData.Instagram; + /** * Additional data for connecting linkedin accounts */ @@ -371,6 +376,17 @@ export namespace SocialAccountCreateAuthURLParams { handle: string; } + /** + * Additional data for connecting instagram accounts + */ + export interface Instagram { + /** + * The type of connection; instagram for using login with instagram, facebook for + * using login with facebook. + */ + connection_type: 'instagram' | 'facebook'; + } + /** * Additional data for connecting linkedin accounts */ diff --git a/src/resources/social-posts.ts b/src/resources/social-posts.ts index 6dd821a..6971585 100644 --- a/src/resources/social-posts.ts +++ b/src/resources/social-posts.ts @@ -65,6 +65,11 @@ export namespace BlueskyConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -75,6 +80,38 @@ export namespace BlueskyConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface CreateSocialPost { @@ -153,6 +190,11 @@ export namespace CreateSocialPost { */ allow_stitch?: boolean | null; + /** + * Will automatically add music to photo posts on TikTok + */ + auto_add_music?: boolean | null; + /** * Pinterest board IDs */ @@ -163,6 +205,17 @@ export namespace CreateSocialPost { */ caption?: unknown | null; + /** + * List of page ids or users to invite as collaborators for a Video Reel (Instagram + * and Facebook) + */ + collaborators?: Array> | null; + + /** + * Id of the twitter community to post to + */ + community_id?: string; + /** * Disclose branded content on TikTok */ @@ -189,6 +242,12 @@ export namespace CreateSocialPost { */ link?: string | null; + /** + * Page id with a location that you want to tag the image or video with (Instagram + * and Facebook) + */ + location?: string | null; + /** * Overrides the `media` from the post */ @@ -199,16 +258,58 @@ export namespace CreateSocialPost { */ placement?: 'reels' | 'timeline' | 'stories' | null; + /** + * Poll options for the twitter + */ + poll?: Configuration.Poll; + /** * Sets the privacy status for TikTok (private, public) */ privacy_status?: string | null; + /** + * Id of the tweet you want to quote + */ + quote_tweet_id?: string; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified' | null; + + /** + * If false Instagram video posts will only be shown in the Reels tab + */ + share_to_feed?: boolean | null; + /** * Overrides the `title` from the post */ title?: string | null; } + + export namespace Configuration { + /** + * Poll options for the twitter + */ + export interface Poll { + /** + * Duration of the poll in minutes + */ + duration_minutes: number; + + /** + * The choices of the poll, requiring 2-4 options + */ + options: Array; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified'; + } + } } export interface Media { @@ -217,6 +318,11 @@ export namespace CreateSocialPost { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -227,6 +333,38 @@ export namespace CreateSocialPost { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface FacebookConfigurationDto { @@ -235,6 +373,16 @@ export interface FacebookConfigurationDto { */ caption?: unknown | null; + /** + * List of page ids to invite as collaborators for a Video Reel + */ + collaborators?: Array> | null; + + /** + * Page id with a location that you want to tag the image or video with + */ + location?: string | null; + /** * Overrides the `media` from the post */ @@ -253,6 +401,11 @@ export namespace FacebookConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -263,6 +416,38 @@ export namespace FacebookConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface InstagramConfigurationDto { @@ -276,6 +461,11 @@ export interface InstagramConfigurationDto { */ collaborators?: Array | null; + /** + * Page id with a location that you want to tag the image or video with + */ + location?: string | null; + /** * Overrides the `media` from the post */ @@ -285,6 +475,11 @@ export interface InstagramConfigurationDto { * Instagram post placement */ placement?: 'reels' | 'stories' | 'timeline' | null; + + /** + * If false video posts will only be shown in the Reels tab + */ + share_to_feed?: boolean | null; } export namespace InstagramConfigurationDto { @@ -294,6 +489,11 @@ export namespace InstagramConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -304,6 +504,38 @@ export namespace InstagramConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface LinkedinConfigurationDto { @@ -325,6 +557,11 @@ export namespace LinkedinConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -335,6 +572,38 @@ export namespace LinkedinConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface PinterestConfigurationDto { @@ -366,6 +635,11 @@ export namespace PinterestConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -376,6 +650,38 @@ export namespace PinterestConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface PlatformConfigurationsDto { @@ -520,6 +826,11 @@ export namespace SocialPost { */ allow_stitch?: boolean | null; + /** + * Will automatically add music to photo posts on TikTok + */ + auto_add_music?: boolean | null; + /** * Pinterest board IDs */ @@ -530,6 +841,17 @@ export namespace SocialPost { */ caption?: unknown | null; + /** + * List of page ids or users to invite as collaborators for a Video Reel (Instagram + * and Facebook) + */ + collaborators?: Array> | null; + + /** + * Id of the twitter community to post to + */ + community_id?: string; + /** * Disclose branded content on TikTok */ @@ -556,6 +878,12 @@ export namespace SocialPost { */ link?: string | null; + /** + * Page id with a location that you want to tag the image or video with (Instagram + * and Facebook) + */ + location?: string | null; + /** * Overrides the `media` from the post */ @@ -566,16 +894,58 @@ export namespace SocialPost { */ placement?: 'reels' | 'timeline' | 'stories' | null; + /** + * Poll options for the twitter + */ + poll?: Configuration.Poll; + /** * Sets the privacy status for TikTok (private, public) */ privacy_status?: string | null; + /** + * Id of the tweet you want to quote + */ + quote_tweet_id?: string; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified' | null; + + /** + * If false Instagram video posts will only be shown in the Reels tab + */ + share_to_feed?: boolean | null; + /** * Overrides the `title` from the post */ title?: string | null; } + + export namespace Configuration { + /** + * Poll options for the twitter + */ + export interface Poll { + /** + * Duration of the poll in minutes + */ + duration_minutes: number; + + /** + * The choices of the poll, requiring 2-4 options + */ + options: Array; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified'; + } + } } export interface Media { @@ -584,6 +954,11 @@ export namespace SocialPost { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -594,6 +969,38 @@ export namespace SocialPost { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface ThreadsConfigurationDto { @@ -620,6 +1027,11 @@ export namespace ThreadsConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -630,6 +1042,38 @@ export namespace ThreadsConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface TiktokConfiguration { @@ -648,6 +1092,11 @@ export interface TiktokConfiguration { */ allow_stitch?: boolean | null; + /** + * Will automatically add music to photo posts + */ + auto_add_music?: boolean | null; + /** * Overrides the `caption` from the post */ @@ -697,6 +1146,11 @@ export namespace TiktokConfiguration { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -707,6 +1161,38 @@ export namespace TiktokConfiguration { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface TwitterConfigurationDto { @@ -715,10 +1201,30 @@ export interface TwitterConfigurationDto { */ caption?: unknown | null; + /** + * Id of the community to post to + */ + community_id?: string; + /** * Overrides the `media` from the post */ media?: Array | null; + + /** + * Poll options for the tweet + */ + poll?: TwitterConfigurationDto.Poll; + + /** + * Id of the tweet you want to quote + */ + quote_tweet_id?: string; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified' | null; } export namespace TwitterConfigurationDto { @@ -728,6 +1234,11 @@ export namespace TwitterConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -738,6 +1249,58 @@ export namespace TwitterConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } + + /** + * Poll options for the tweet + */ + export interface Poll { + /** + * Duration of the poll in minutes + */ + duration_minutes: number; + + /** + * The choices of the poll, requiring 2-4 options + */ + options: Array; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified'; + } } export interface YoutubeConfigurationDto { @@ -764,6 +1327,11 @@ export namespace YoutubeConfigurationDto { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -774,6 +1342,38 @@ export namespace YoutubeConfigurationDto { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface SocialPostListResponse { @@ -889,6 +1489,11 @@ export namespace SocialPostCreateParams { */ allow_stitch?: boolean | null; + /** + * Will automatically add music to photo posts on TikTok + */ + auto_add_music?: boolean | null; + /** * Pinterest board IDs */ @@ -899,6 +1504,17 @@ export namespace SocialPostCreateParams { */ caption?: unknown | null; + /** + * List of page ids or users to invite as collaborators for a Video Reel (Instagram + * and Facebook) + */ + collaborators?: Array> | null; + + /** + * Id of the twitter community to post to + */ + community_id?: string; + /** * Disclose branded content on TikTok */ @@ -925,6 +1541,12 @@ export namespace SocialPostCreateParams { */ link?: string | null; + /** + * Page id with a location that you want to tag the image or video with (Instagram + * and Facebook) + */ + location?: string | null; + /** * Overrides the `media` from the post */ @@ -935,16 +1557,58 @@ export namespace SocialPostCreateParams { */ placement?: 'reels' | 'timeline' | 'stories' | null; + /** + * Poll options for the twitter + */ + poll?: Configuration.Poll; + /** * Sets the privacy status for TikTok (private, public) */ privacy_status?: string | null; + /** + * Id of the tweet you want to quote + */ + quote_tweet_id?: string; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified' | null; + + /** + * If false Instagram video posts will only be shown in the Reels tab + */ + share_to_feed?: boolean | null; + /** * Overrides the `title` from the post */ title?: string | null; } + + export namespace Configuration { + /** + * Poll options for the twitter + */ + export interface Poll { + /** + * Duration of the poll in minutes + */ + duration_minutes: number; + + /** + * The choices of the poll, requiring 2-4 options + */ + options: Array; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified'; + } + } } export interface Media { @@ -953,6 +1617,11 @@ export namespace SocialPostCreateParams { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -963,6 +1632,38 @@ export namespace SocialPostCreateParams { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface SocialPostUpdateParams { @@ -1041,6 +1742,11 @@ export namespace SocialPostUpdateParams { */ allow_stitch?: boolean | null; + /** + * Will automatically add music to photo posts on TikTok + */ + auto_add_music?: boolean | null; + /** * Pinterest board IDs */ @@ -1051,6 +1757,17 @@ export namespace SocialPostUpdateParams { */ caption?: unknown | null; + /** + * List of page ids or users to invite as collaborators for a Video Reel (Instagram + * and Facebook) + */ + collaborators?: Array> | null; + + /** + * Id of the twitter community to post to + */ + community_id?: string; + /** * Disclose branded content on TikTok */ @@ -1077,6 +1794,12 @@ export namespace SocialPostUpdateParams { */ link?: string | null; + /** + * Page id with a location that you want to tag the image or video with (Instagram + * and Facebook) + */ + location?: string | null; + /** * Overrides the `media` from the post */ @@ -1087,16 +1810,58 @@ export namespace SocialPostUpdateParams { */ placement?: 'reels' | 'timeline' | 'stories' | null; + /** + * Poll options for the twitter + */ + poll?: Configuration.Poll; + /** * Sets the privacy status for TikTok (private, public) */ privacy_status?: string | null; + /** + * Id of the tweet you want to quote + */ + quote_tweet_id?: string; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified' | null; + + /** + * If false Instagram video posts will only be shown in the Reels tab + */ + share_to_feed?: boolean | null; + /** * Overrides the `title` from the post */ title?: string | null; } + + export namespace Configuration { + /** + * Poll options for the twitter + */ + export interface Poll { + /** + * Duration of the poll in minutes + */ + duration_minutes: number; + + /** + * The choices of the poll, requiring 2-4 options + */ + options: Array; + + /** + * Who can reply to the tweet + */ + reply_settings?: 'following' | 'mentionedUsers' | 'subscribers' | 'verified'; + } + } } export interface Media { @@ -1105,6 +1870,11 @@ export namespace SocialPostUpdateParams { */ url: string; + /** + * List of tags to attach to the media + */ + tags?: Array | null; + /** * Timestamp in milliseconds of frame to use as thumbnail for the media */ @@ -1115,6 +1885,38 @@ export namespace SocialPostUpdateParams { */ thumbnail_url?: unknown | null; } + + export namespace Media { + export interface Tag { + /** + * Facebook User ID, Instagram Username or Instagram product id to tag + */ + id: string; + + /** + * The platform for the tags + */ + platform: 'facebook' | 'instagram'; + + /** + * The type of tag, user to tag accounts, product to tag products (only supported + * for instagram) + */ + type: 'user' | 'product'; + + /** + * Percentage distance from left edge of the image, Not required for videos or + * stories + */ + x?: number; + + /** + * Percentage distance from top edge of the image, Not required for videos or + * stories + */ + y?: number; + } + } } export interface SocialPostListParams { diff --git a/src/version.ts b/src/version.ts index 8fe4c2e..1c2e261 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '1.6.0'; // x-release-please-version +export const VERSION = '1.7.0'; // x-release-please-version diff --git a/tests/api-resources/social-accounts.test.ts b/tests/api-resources/social-accounts.test.ts index ae8b33c..e9cf4df 100644 --- a/tests/api-resources/social-accounts.test.ts +++ b/tests/api-resources/social-accounts.test.ts @@ -113,6 +113,7 @@ describe('resource socialAccounts', () => { external_id: 'external_id', platform_data: { bluesky: { app_password: 'app_password', handle: 'handle' }, + instagram: { connection_type: 'instagram' }, linkedin: { connection_type: 'personal' }, }, }); diff --git a/tests/api-resources/social-posts.test.ts b/tests/api-resources/social-posts.test.ts index 8ea1df1..d50abea 100644 --- a/tests/api-resources/social-posts.test.ts +++ b/tests/api-resources/social-posts.test.ts @@ -31,16 +31,24 @@ describe('resource socialPosts', () => { allow_comment: true, allow_duet: true, allow_stitch: true, + auto_add_music: true, board_ids: ['string'], caption: {}, + collaborators: [[{}]], + community_id: 'community_id', disclose_branded_content: true, disclose_your_brand: true, is_ai_generated: true, is_draft: true, link: 'link', + location: 'location', media: ['string'], placement: 'reels', + poll: { duration_minutes: 0, options: ['string'], reply_settings: 'following' }, privacy_status: 'privacy_status', + quote_tweet_id: 'quote_tweet_id', + reply_settings: 'following', + share_to_feed: true, title: 'title', }, social_account_id: 'social_account_id', @@ -48,42 +56,109 @@ describe('resource socialPosts', () => { ], external_id: 'external_id', isDraft: true, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], platform_configurations: { - bluesky: { caption: {}, media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }] }, + bluesky: { + caption: {}, + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], + }, facebook: { caption: {}, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + collaborators: [[{}]], + location: 'location', + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], placement: 'reels', }, instagram: { caption: {}, collaborators: ['string'], - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + location: 'location', + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], placement: 'reels', + share_to_feed: true, + }, + linkedin: { + caption: {}, + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], }, - linkedin: { caption: {}, media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }] }, pinterest: { board_ids: ['string'], caption: {}, link: 'link', - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], }, threads: { caption: {}, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], placement: 'reels', }, tiktok: { allow_comment: true, allow_duet: true, allow_stitch: true, + auto_add_music: true, caption: {}, disclose_branded_content: true, disclose_your_brand: true, is_ai_generated: true, is_draft: true, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], privacy_status: 'privacy_status', title: 'title', }, @@ -91,19 +166,48 @@ describe('resource socialPosts', () => { allow_comment: true, allow_duet: true, allow_stitch: true, + auto_add_music: true, caption: {}, disclose_branded_content: true, disclose_your_brand: true, is_ai_generated: true, is_draft: true, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], privacy_status: 'privacy_status', title: 'title', }, - x: { caption: {}, media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }] }, + x: { + caption: {}, + community_id: 'community_id', + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], + poll: { duration_minutes: 0, options: ['string'], reply_settings: 'following' }, + quote_tweet_id: 'quote_tweet_id', + reply_settings: 'following', + }, youtube: { caption: {}, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], title: 'title', }, }, @@ -149,16 +253,24 @@ describe('resource socialPosts', () => { allow_comment: true, allow_duet: true, allow_stitch: true, + auto_add_music: true, board_ids: ['string'], caption: {}, + collaborators: [[{}]], + community_id: 'community_id', disclose_branded_content: true, disclose_your_brand: true, is_ai_generated: true, is_draft: true, link: 'link', + location: 'location', media: ['string'], placement: 'reels', + poll: { duration_minutes: 0, options: ['string'], reply_settings: 'following' }, privacy_status: 'privacy_status', + quote_tweet_id: 'quote_tweet_id', + reply_settings: 'following', + share_to_feed: true, title: 'title', }, social_account_id: 'social_account_id', @@ -166,42 +278,109 @@ describe('resource socialPosts', () => { ], external_id: 'external_id', isDraft: true, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], platform_configurations: { - bluesky: { caption: {}, media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }] }, + bluesky: { + caption: {}, + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], + }, facebook: { caption: {}, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + collaborators: [[{}]], + location: 'location', + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], placement: 'reels', }, instagram: { caption: {}, collaborators: ['string'], - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + location: 'location', + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], placement: 'reels', + share_to_feed: true, + }, + linkedin: { + caption: {}, + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], }, - linkedin: { caption: {}, media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }] }, pinterest: { board_ids: ['string'], caption: {}, link: 'link', - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], }, threads: { caption: {}, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], placement: 'reels', }, tiktok: { allow_comment: true, allow_duet: true, allow_stitch: true, + auto_add_music: true, caption: {}, disclose_branded_content: true, disclose_your_brand: true, is_ai_generated: true, is_draft: true, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], privacy_status: 'privacy_status', title: 'title', }, @@ -209,19 +388,48 @@ describe('resource socialPosts', () => { allow_comment: true, allow_duet: true, allow_stitch: true, + auto_add_music: true, caption: {}, disclose_branded_content: true, disclose_your_brand: true, is_ai_generated: true, is_draft: true, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], privacy_status: 'privacy_status', title: 'title', }, - x: { caption: {}, media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }] }, + x: { + caption: {}, + community_id: 'community_id', + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], + poll: { duration_minutes: 0, options: ['string'], reply_settings: 'following' }, + quote_tweet_id: 'quote_tweet_id', + reply_settings: 'following', + }, youtube: { caption: {}, - media: [{ url: 'url', thumbnail_timestamp_ms: {}, thumbnail_url: {} }], + media: [ + { + url: 'url', + tags: [{ id: 'id', platform: 'facebook', type: 'user', x: 0, y: 0 }], + thumbnail_timestamp_ms: {}, + thumbnail_url: {}, + }, + ], title: 'title', }, }, diff --git a/tsconfig.build.json b/tsconfig.build.json index 03aca69..8ed42cb 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -5,8 +5,8 @@ "compilerOptions": { "rootDir": "./dist/src", "paths": { - "post-for-me/*": ["dist/src/*"], - "post-for-me": ["dist/src/index.ts"] + "post-for-me/*": ["./dist/src/*"], + "post-for-me": ["./dist/src/index.ts"] }, "noEmit": false, "declaration": true, diff --git a/tsconfig.json b/tsconfig.json index b4281e4..12d9829 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,10 +7,9 @@ "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true, - "baseUrl": "./", "paths": { - "post-for-me/*": ["src/*"], - "post-for-me": ["src/index.ts"] + "post-for-me/*": ["./src/*"], + "post-for-me": ["./src/index.ts"] }, "noEmit": true,