@cliangdev/conductor 0.24.1 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/claude/commands/conductor/creative.md +90 -0
- package/assets/claude/skills/conductor-creative/SKILL.md +129 -51
- package/assets/claude/skills/conductor-creative/references/brand-kit-setup.md +41 -0
- package/assets/cli-manifest.json +38 -3
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +2 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/creative/assertions.js +22 -11
- package/dist/creative/frame.js +3 -3
- package/dist/creative/job/file-transport.mjs +211 -0
- package/dist/creative/job/render.mjs +84 -2
- package/dist/creative/job/server.mjs +70 -13
- package/dist/lib/creative-render.d.ts +62 -0
- package/dist/lib/creative-render.d.ts.map +1 -1
- package/dist/lib/creative-render.js +51 -0
- package/dist/lib/creative-render.js.map +1 -1
- package/dist/lib/plugin-assets.d.ts +48 -1
- package/dist/lib/plugin-assets.d.ts.map +1 -1
- package/dist/lib/plugin-assets.js +272 -22
- package/dist/lib/plugin-assets.js.map +1 -1
- package/dist/mcp/api.d.ts +18 -1
- package/dist/mcp/api.d.ts.map +1 -1
- package/dist/mcp/api.js +20 -2
- package/dist/mcp/api.js.map +1 -1
- package/dist/mcp/index.d.ts +2414 -471
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +246 -77
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/tools/creative-drafts.d.ts +134 -0
- package/dist/mcp/tools/creative-drafts.d.ts.map +1 -0
- package/dist/mcp/tools/creative-drafts.js +405 -0
- package/dist/mcp/tools/creative-drafts.js.map +1 -0
- package/dist/mcp/tools/creatives.d.ts +60 -0
- package/dist/mcp/tools/creatives.d.ts.map +1 -1
- package/dist/mcp/tools/creatives.js +219 -23
- package/dist/mcp/tools/creatives.js.map +1 -1
- package/package.json +1 -1
- package/scripts/build-creative.mjs +1 -0
package/dist/mcp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AA8GA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqtCjB,CAAA;AAwBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,CAAC,EAAE,OAAO;;cACxD,OAAO;cAAQ,MAAM;kBAAY,MAAM;;cAAa,MAAM;cAAQ,MAAM;;EAOtG;AAoBD,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA60BlD"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AA8MA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8vCjB,CAAA;AAwBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,CAAC,EAAE,OAAO;;cACxD,OAAO;cAAQ,MAAM;kBAAY,MAAM;;cAAa,MAAM;cAAQ,MAAM;;EAOtG;AAoBD,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA83BlD"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
4
4
|
import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { getConfig, resolveProject } from './config.js';
|
|
6
6
|
import { ApiError } from './api.js';
|
|
7
|
+
import { refreshInstalledPluginAssets } from '../lib/plugin-assets.js';
|
|
7
8
|
import { createWorkItem, updateWorkItem, setWorkItemStatus, listWorkItems, getWorkItem, } from './tools/issues.js';
|
|
8
9
|
import { deleteDocument, scaffoldDocument, writeDocument } from './tools/documents.js';
|
|
9
10
|
import { listWorkItemComments } from './tools/comments.js';
|
|
@@ -15,7 +16,8 @@ import { submitKnowledgeSource, readKnowledgeSources, searchKnowledge, readKnowl
|
|
|
15
16
|
import { listPublishTargets, setPublishTargets, uploadAsset, retryFailedPublishTargets, completeManualPublish, } from './tools/marketing.js';
|
|
16
17
|
import { createPost, getPostStatus, submitPost, listPosts, submitReview, listAssets, getPostAnalytics, listTopPosts, } from './tools/posts.js';
|
|
17
18
|
import { getMarketingInsights } from './tools/insights.js';
|
|
18
|
-
import { getBrandKit, listCreatives, getCreative, createCreative, updateCreative, uploadCreativeMedia, uploadCreativePhoto, renderCreativeTool, previewCreative, attachCreativeToPost, createExperiment, } from './tools/creatives.js';
|
|
19
|
+
import { getBrandKit, updateBrandKit, uploadBrandImage, listCreatives, listCreativeMedia, getCreative, createCreative, updateCreative, uploadCreativeMedia, uploadCreativePhoto, renderCreativeTool, previewCreative, attachCreativeToPost, createExperiment, } from './tools/creatives.js';
|
|
20
|
+
import { previewCreativeDraft, commitCreativeDraft, } from './tools/creative-drafts.js';
|
|
19
21
|
import { resolveCreativeId } from '../lib/creative-id.js';
|
|
20
22
|
const CREATIVE_TOOLS = [
|
|
21
23
|
'get_creative',
|
|
@@ -23,10 +25,93 @@ const CREATIVE_TOOLS = [
|
|
|
23
25
|
'update_creative',
|
|
24
26
|
'render_creative',
|
|
25
27
|
'preview_creative',
|
|
28
|
+
'preview_creative_draft',
|
|
26
29
|
'attach_creative_to_post',
|
|
27
30
|
'create_experiment',
|
|
28
31
|
];
|
|
29
32
|
import { listProjectDocs, readProjectDoc, writeProjectDoc, moveProjectDoc, deleteProjectDoc, setProjectDocTask, listProjectDocComments, commentOnProjectDoc, respondToProjectDocComment, listProjectDocVersions, restoreProjectDocVersion, uploadProjectDocImage, moveProjectFolder, deleteProjectFolder, } from './tools/project-docs.js';
|
|
33
|
+
/** The Creative fields shared by create_creative and preview_creative_draft (everything but variantOf). */
|
|
34
|
+
const CREATIVE_FIELD_PROPERTIES = {
|
|
35
|
+
brandKitId: { type: 'string', description: "Brand Kit this Creative renders with (optional — defaults to the project's default kit)" },
|
|
36
|
+
name: { type: 'string', description: 'Internal name, not shown on the artwork (optional)' },
|
|
37
|
+
state: { type: 'string', enum: ['DRAFT', 'READY', 'ARCHIVED'], description: 'Defaults to DRAFT (optional)' },
|
|
38
|
+
kind: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
enum: ['STILL', 'MOTION', 'CLIP'],
|
|
41
|
+
description: 'Defaults to STILL (a brand-rendered photo/headline). CLIP is a finished video used as-is via clipMedia. MOTION is the same brand layout animated into a short video — set motion (and optionally audio) too.',
|
|
42
|
+
},
|
|
43
|
+
clipMedia: {
|
|
44
|
+
type: 'object',
|
|
45
|
+
additionalProperties: { type: 'string' },
|
|
46
|
+
description: 'CLIP only: media ids per placement from upload_creative_media, e.g. {"default": mediaId, "9x16": mediaId}. "default" covers any placement without its own entry.',
|
|
47
|
+
},
|
|
48
|
+
motion: {
|
|
49
|
+
type: 'object',
|
|
50
|
+
description: 'MOTION only: the animation timeline. preset: fade-up (default) | word-by-word | accent-pop | none. durationSec: 3-60, default 8. background.source: photo (default, animated by background.motion: zoom-in default | zoom-out | pan-left | pan-right | none) or clip (background.clipMediaId, a VIDEO media id, plus background.clipStartSec). endCard: default true — the last 2s hold the finished composition with the CTA.',
|
|
51
|
+
properties: {
|
|
52
|
+
preset: { type: 'string', enum: ['fade-up', 'word-by-word', 'accent-pop', 'none'] },
|
|
53
|
+
durationSec: { type: 'number' },
|
|
54
|
+
background: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
source: { type: 'string', enum: ['photo', 'clip'] },
|
|
58
|
+
motion: { type: 'string', enum: ['zoom-in', 'zoom-out', 'pan-left', 'pan-right', 'none'] },
|
|
59
|
+
clipMediaId: { type: 'string' },
|
|
60
|
+
clipStartSec: { type: 'number' },
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
endCard: { type: 'boolean' },
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
audio: {
|
|
67
|
+
type: 'object',
|
|
68
|
+
description: 'MOTION only: source: clip (the background clip\'s own sound — default when it has one) | track (a library track) | none. trackId: an AUDIO media id from upload_creative_media (source=track). volume: 0-1, default 0.8 (track only). fadeOutSec: 0-5, default 1 (track only).',
|
|
69
|
+
properties: {
|
|
70
|
+
source: { type: 'string', enum: ['clip', 'track', 'none'] },
|
|
71
|
+
trackId: { type: 'string' },
|
|
72
|
+
volume: { type: 'number' },
|
|
73
|
+
fadeOutSec: { type: 'number' },
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
layout: { type: 'string', description: "Layout key from the creative registry, e.g. stacked/bleed/card/split (optional — defaults to the registry's first layout)" },
|
|
77
|
+
theme: { type: 'string', enum: ['dark', 'light'], description: 'Optional — defaults to dark' },
|
|
78
|
+
photoId: { type: 'string', description: 'A photo from upload_creative_photo (optional)' },
|
|
79
|
+
focalOverride: { type: 'object', additionalProperties: { type: 'string' }, description: 'Per-placement focal point override, e.g. {"9x16":"50% 30%"} (optional)' },
|
|
80
|
+
headline: { type: 'string', description: 'Exactly one *accent phrase* marked with asterisks, when the Brand Kit requires one (optional)' },
|
|
81
|
+
body: { type: 'string', description: 'Body copy (optional)' },
|
|
82
|
+
caption: { type: 'string', description: "The post caption this Creative is meant for, carried through but never rendered onto the artwork (optional)" },
|
|
83
|
+
altText: { type: 'string', description: 'Accessibility description of the photo, not the copy (optional)' },
|
|
84
|
+
placements: { type: 'array', items: { type: 'string' }, description: "Extra placement keys this Creative opts into beyond the Brand Kit's enabled set (optional)" },
|
|
85
|
+
sequenceKind: { type: 'string', enum: ['story', 'carousel'], description: 'Set to render a multi-beat sequence instead of one frame (optional)' },
|
|
86
|
+
sequence: {
|
|
87
|
+
type: 'array',
|
|
88
|
+
description: 'Story beats (2-7) or carousel cards (2-10); each inherits the Creative and overrides only what changes (optional)',
|
|
89
|
+
items: {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: {
|
|
92
|
+
headline: { type: 'string' },
|
|
93
|
+
body: { type: 'string' },
|
|
94
|
+
photoId: { type: 'string' },
|
|
95
|
+
cta: { type: 'boolean', description: 'Forces the CTA row on/off for this beat (optional — default: only the last beat shows it)' },
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
carouselRatio: { type: 'string', description: 'Aspect ratio key for a carousel sequence, e.g. 4x5 or 1x1 (optional)' },
|
|
100
|
+
lockup: { type: 'string', enum: ['plain', 'chip'], description: 'Optional — defaults to plain. "chip" puts the logo lockup on a white pill, for busy photography.' },
|
|
101
|
+
layoutOverrides: {
|
|
102
|
+
type: 'object',
|
|
103
|
+
description: 'Per-placement overrides of layout-derived numbers, in pixels (optional). A placement key not named here keeps the layout\'s own default.',
|
|
104
|
+
properties: {
|
|
105
|
+
band: { type: 'object', additionalProperties: { type: 'integer' }, description: 'Overrides the stacked layout\'s photo band height per placement, e.g. {"9x16": 1200}' },
|
|
106
|
+
padBottom: { type: 'object', additionalProperties: { type: 'integer' }, description: "Overrides the 9x16 panel's bottom safe-zone clearance per placement" },
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
typeOverrides: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
description: 'Pins the headline type per placement (optional): {"<placementKey>": [fontSize, lineHeight?, letterSpacing?]}. fontSize is in artboard px (a 9x16 board is 1080 wide), lineHeight a unitless multiplier of fontSize (e.g. 1.0), letterSpacing in px (usually negative); leave the last two out for the engine\'s defaults at that size, e.g. {"9x16": [96], "1x1": [88]}. A placement with no entry is auto-fitted. A pinned size is not shrunk to fit, so re-check the preview. Changing headline or layout on update clears pinned sizes unless typeOverrides is sent again.',
|
|
112
|
+
additionalProperties: { type: 'array', items: { type: 'number' }, minItems: 1, maxItems: 3 },
|
|
113
|
+
},
|
|
114
|
+
};
|
|
30
115
|
export const TOOLS = [
|
|
31
116
|
// --- Canonical Work Item tools (v2 /work-items surface) ---
|
|
32
117
|
{
|
|
@@ -993,11 +1078,80 @@ export const TOOLS = [
|
|
|
993
1078
|
// --- Creatives: Brand Kit + Creative library + local rendering ---
|
|
994
1079
|
{
|
|
995
1080
|
name: 'get_brand_kit',
|
|
996
|
-
description: "Read a workspace Brand Kit: colour tokens, font, logo/wordmark/badge URLs, CTA claim, copy rules, approved lines, enabled placements, and the Knowledge page path holding its prose context. Omit kitId for the project's default kit.",
|
|
1081
|
+
description: "Read a workspace Brand Kit: colour tokens, font, logo/wordmark/badge URLs, CTA claim, copy rules, approved lines, enabled placements, and the Knowledge page path holding its prose context. Omit kitId for the project's default kit. Also carries `configured: false` plus a `nextStep` when the kit looks unset — check this before writing a Creative against it.",
|
|
1082
|
+
inputSchema: {
|
|
1083
|
+
type: 'object',
|
|
1084
|
+
properties: {
|
|
1085
|
+
kitId: { type: 'string', description: "Brand Kit id (optional — omit for the project's default kit)" },
|
|
1086
|
+
},
|
|
1087
|
+
},
|
|
1088
|
+
},
|
|
1089
|
+
{
|
|
1090
|
+
name: 'update_brand_kit',
|
|
1091
|
+
description: "Patch a workspace Brand Kit's name, tokens, font, CTA claim, copy rules, approved lines, enabled placements or Knowledge page path. Every field is set-replace and optional — omit to leave it unchanged — except tokens, which merges onto the kit's existing set (only the keys given change). A 422 names the failing field. Call get_brand_kit after to verify.",
|
|
1092
|
+
inputSchema: {
|
|
1093
|
+
type: 'object',
|
|
1094
|
+
properties: {
|
|
1095
|
+
kitId: { type: 'string', description: "Brand Kit id (optional — omit for the project's default kit)" },
|
|
1096
|
+
name: { type: 'string', description: 'Kit display name (optional)' },
|
|
1097
|
+
fontFamily: { type: 'string', description: 'Font family name (optional)' },
|
|
1098
|
+
fontUrl: { type: 'string', description: 'URL the renderer loads the font from (optional)' },
|
|
1099
|
+
tokens: {
|
|
1100
|
+
type: 'object',
|
|
1101
|
+
additionalProperties: { type: 'string' },
|
|
1102
|
+
description: 'CSS custom properties the renderer maps to (e.g. accent, accent2, darkBg, darkInk, lightBg, lightCard, ink, ink2), each a #RRGGBB hex colour. Only the keys given here change — every other existing token is kept (optional).',
|
|
1103
|
+
},
|
|
1104
|
+
ctaClaim: { type: 'string', description: 'The call-to-action line rendered on a Creative (optional)' },
|
|
1105
|
+
accentPhraseRequired: { type: 'boolean', description: 'Whether a Creative headline must mark exactly one *accent phrase* (optional)' },
|
|
1106
|
+
copyRules: {
|
|
1107
|
+
type: 'array',
|
|
1108
|
+
description: "Replaces the whole list of brand copy rules (optional). Each is enforced against every field it names on every Creative write.",
|
|
1109
|
+
items: {
|
|
1110
|
+
type: 'object',
|
|
1111
|
+
properties: {
|
|
1112
|
+
id: { type: 'string' },
|
|
1113
|
+
pattern: { type: 'string', description: 'Regex tested against the field text' },
|
|
1114
|
+
flags: { type: 'string', description: 'Any of "i" (case-insensitive), "m" (multiline) — optional' },
|
|
1115
|
+
message: { type: 'string', description: 'Shown verbatim when the rule fails' },
|
|
1116
|
+
fields: { type: 'array', items: { type: 'string', enum: ['headline', 'body', 'caption'] } },
|
|
1117
|
+
exceptPattern: { type: 'string', description: 'Matches stripped from the text before pattern is tested (optional)' },
|
|
1118
|
+
},
|
|
1119
|
+
required: ['id', 'pattern', 'message', 'fields'],
|
|
1120
|
+
},
|
|
1121
|
+
},
|
|
1122
|
+
approvedLines: { type: 'array', items: { type: 'string' }, description: 'Replaces the whole list of pre-cleared verbatim lines (optional). Mutually exclusive with addApprovedLines.' },
|
|
1123
|
+
addApprovedLines: { type: 'array', items: { type: 'string' }, description: 'Appends to the existing approved lines instead of replacing them (optional). Mutually exclusive with approvedLines.' },
|
|
1124
|
+
enabledPlacements: { type: 'array', items: { type: 'string' }, description: 'Placement keys (from the creative registry) this kit exports by default (optional)' },
|
|
1125
|
+
knowledgePagePath: { type: 'string', description: "Wiki page path holding this brand's prose context (optional)" },
|
|
1126
|
+
},
|
|
1127
|
+
},
|
|
1128
|
+
},
|
|
1129
|
+
{
|
|
1130
|
+
name: 'upload_brand_image',
|
|
1131
|
+
description: "Upload a workspace's logo mark, wordmark or badge into a Brand Kit image slot from a local file or a public URL (mint, PUT, confirm in one call). wordmark_light is light-coloured lettering, for a dark frame; wordmark_dark is dark lettering, for a light frame. Call get_brand_kit after to verify.",
|
|
997
1132
|
inputSchema: {
|
|
998
1133
|
type: 'object',
|
|
999
1134
|
properties: {
|
|
1000
1135
|
kitId: { type: 'string', description: "Brand Kit id (optional — omit for the project's default kit)" },
|
|
1136
|
+
slot: {
|
|
1137
|
+
type: 'string',
|
|
1138
|
+
enum: ['mark', 'wordmark_dark', 'wordmark_light', 'badge'],
|
|
1139
|
+
description: 'mark: standalone logomark. wordmark_dark: dark lettering, for light frames. wordmark_light: light lettering, for dark frames. badge: a compact combined lockup.',
|
|
1140
|
+
},
|
|
1141
|
+
filePath: { type: 'string', description: 'A file on this machine (use this or url)' },
|
|
1142
|
+
url: { type: 'string', description: 'A public http(s) URL (use this or filePath)' },
|
|
1143
|
+
},
|
|
1144
|
+
required: ['slot'],
|
|
1145
|
+
},
|
|
1146
|
+
},
|
|
1147
|
+
{
|
|
1148
|
+
name: 'list_creative_media',
|
|
1149
|
+
description: "The project's media library (photos, videos, audio) — id, label, kind, dimensions/duration, checked/blocked review state (with reason), provenance and a URL to look at it. Call before upload_creative_media to reuse existing, already-checked media instead of uploading a duplicate.",
|
|
1150
|
+
inputSchema: {
|
|
1151
|
+
type: 'object',
|
|
1152
|
+
properties: {
|
|
1153
|
+
kind: { type: 'string', enum: ['IMAGE', 'VIDEO', 'AUDIO'], description: 'Filter to one kind (optional — omit for every kind)' },
|
|
1154
|
+
includeBlocked: { type: 'boolean', description: 'Include media a human has marked blocked (optional, default false)' },
|
|
1001
1155
|
},
|
|
1002
1156
|
},
|
|
1003
1157
|
},
|
|
@@ -1030,80 +1184,7 @@ export const TOOLS = [
|
|
|
1030
1184
|
type: 'object',
|
|
1031
1185
|
properties: {
|
|
1032
1186
|
variantOf: { type: 'string', description: 'Cut a lettered variant of this existing Creative instead of creating a fresh one (optional)' },
|
|
1033
|
-
|
|
1034
|
-
name: { type: 'string', description: 'Internal name, not shown on the artwork (optional)' },
|
|
1035
|
-
state: { type: 'string', enum: ['DRAFT', 'READY', 'ARCHIVED'], description: 'Defaults to DRAFT (optional)' },
|
|
1036
|
-
kind: {
|
|
1037
|
-
type: 'string',
|
|
1038
|
-
enum: ['STILL', 'MOTION', 'CLIP'],
|
|
1039
|
-
description: 'Defaults to STILL (a brand-rendered photo/headline). CLIP is a finished video used as-is via clipMedia. MOTION is the same brand layout animated into a short video — set motion (and optionally audio) too.',
|
|
1040
|
-
},
|
|
1041
|
-
clipMedia: {
|
|
1042
|
-
type: 'object',
|
|
1043
|
-
additionalProperties: { type: 'string' },
|
|
1044
|
-
description: 'CLIP only: media ids per placement from upload_creative_media, e.g. {"default": mediaId, "9x16": mediaId}. "default" covers any placement without its own entry.',
|
|
1045
|
-
},
|
|
1046
|
-
motion: {
|
|
1047
|
-
type: 'object',
|
|
1048
|
-
description: 'MOTION only: the animation timeline. preset: fade-up (default) | word-by-word | accent-pop | none. durationSec: 3-60, default 8. background.source: photo (default, animated by background.motion: zoom-in default | zoom-out | pan-left | pan-right | none) or clip (background.clipMediaId, a VIDEO media id, plus background.clipStartSec). endCard: default true — the last 2s hold the finished composition with the CTA.',
|
|
1049
|
-
properties: {
|
|
1050
|
-
preset: { type: 'string', enum: ['fade-up', 'word-by-word', 'accent-pop', 'none'] },
|
|
1051
|
-
durationSec: { type: 'number' },
|
|
1052
|
-
background: {
|
|
1053
|
-
type: 'object',
|
|
1054
|
-
properties: {
|
|
1055
|
-
source: { type: 'string', enum: ['photo', 'clip'] },
|
|
1056
|
-
motion: { type: 'string', enum: ['zoom-in', 'zoom-out', 'pan-left', 'pan-right', 'none'] },
|
|
1057
|
-
clipMediaId: { type: 'string' },
|
|
1058
|
-
clipStartSec: { type: 'number' },
|
|
1059
|
-
},
|
|
1060
|
-
},
|
|
1061
|
-
endCard: { type: 'boolean' },
|
|
1062
|
-
},
|
|
1063
|
-
},
|
|
1064
|
-
audio: {
|
|
1065
|
-
type: 'object',
|
|
1066
|
-
description: 'MOTION only: source: clip (the background clip\'s own sound — default when it has one) | track (a library track) | none. trackId: an AUDIO media id from upload_creative_media (source=track). volume: 0-1, default 0.8 (track only). fadeOutSec: 0-5, default 1 (track only).',
|
|
1067
|
-
properties: {
|
|
1068
|
-
source: { type: 'string', enum: ['clip', 'track', 'none'] },
|
|
1069
|
-
trackId: { type: 'string' },
|
|
1070
|
-
volume: { type: 'number' },
|
|
1071
|
-
fadeOutSec: { type: 'number' },
|
|
1072
|
-
},
|
|
1073
|
-
},
|
|
1074
|
-
layout: { type: 'string', description: "Layout key from the creative registry, e.g. stacked/bleed/card/split (optional — defaults to the registry's first layout)" },
|
|
1075
|
-
theme: { type: 'string', enum: ['dark', 'light'], description: 'Optional — defaults to dark' },
|
|
1076
|
-
photoId: { type: 'string', description: 'A photo from upload_creative_photo (optional)' },
|
|
1077
|
-
focalOverride: { type: 'object', additionalProperties: { type: 'string' }, description: 'Per-placement focal point override, e.g. {"9x16":"50% 30%"} (optional)' },
|
|
1078
|
-
headline: { type: 'string', description: 'Exactly one *accent phrase* marked with asterisks, when the Brand Kit requires one (optional)' },
|
|
1079
|
-
body: { type: 'string', description: 'Body copy (optional)' },
|
|
1080
|
-
caption: { type: 'string', description: "The post caption this Creative is meant for, carried through but never rendered onto the artwork (optional)" },
|
|
1081
|
-
altText: { type: 'string', description: 'Accessibility description of the photo, not the copy (optional)' },
|
|
1082
|
-
placements: { type: 'array', items: { type: 'string' }, description: "Extra placement keys this Creative opts into beyond the Brand Kit's enabled set (optional)" },
|
|
1083
|
-
sequenceKind: { type: 'string', enum: ['story', 'carousel'], description: 'Set to render a multi-beat sequence instead of one frame (optional)' },
|
|
1084
|
-
sequence: {
|
|
1085
|
-
type: 'array',
|
|
1086
|
-
description: 'Story beats (2-7) or carousel cards (2-10); each inherits the Creative and overrides only what changes (optional)',
|
|
1087
|
-
items: {
|
|
1088
|
-
type: 'object',
|
|
1089
|
-
properties: {
|
|
1090
|
-
headline: { type: 'string' },
|
|
1091
|
-
body: { type: 'string' },
|
|
1092
|
-
photoId: { type: 'string' },
|
|
1093
|
-
cta: { type: 'boolean', description: 'Forces the CTA row on/off for this beat (optional — default: only the last beat shows it)' },
|
|
1094
|
-
},
|
|
1095
|
-
},
|
|
1096
|
-
},
|
|
1097
|
-
carouselRatio: { type: 'string', description: 'Aspect ratio key for a carousel sequence, e.g. 4x5 or 1x1 (optional)' },
|
|
1098
|
-
lockup: { type: 'string', enum: ['plain', 'chip'], description: 'Optional — defaults to plain. "chip" puts the logo lockup on a white pill, for busy photography.' },
|
|
1099
|
-
layoutOverrides: {
|
|
1100
|
-
type: 'object',
|
|
1101
|
-
description: 'Per-placement overrides of layout-derived numbers, in pixels (optional). A placement key not named here keeps the layout\'s own default.',
|
|
1102
|
-
properties: {
|
|
1103
|
-
band: { type: 'object', additionalProperties: { type: 'integer' }, description: 'Overrides the stacked layout\'s photo band height per placement, e.g. {"9x16": 1200}' },
|
|
1104
|
-
padBottom: { type: 'object', additionalProperties: { type: 'integer' }, description: "Overrides the 9x16 panel's bottom safe-zone clearance per placement" },
|
|
1105
|
-
},
|
|
1106
|
-
},
|
|
1187
|
+
...CREATIVE_FIELD_PROPERTIES,
|
|
1107
1188
|
},
|
|
1108
1189
|
},
|
|
1109
1190
|
},
|
|
@@ -1177,6 +1258,7 @@ export const TOOLS = [
|
|
|
1177
1258
|
padBottom: { type: 'object', additionalProperties: { type: 'integer' } },
|
|
1178
1259
|
},
|
|
1179
1260
|
},
|
|
1261
|
+
typeOverrides: CREATIVE_FIELD_PROPERTIES.typeOverrides,
|
|
1180
1262
|
},
|
|
1181
1263
|
required: ['creativeId', 'version'],
|
|
1182
1264
|
},
|
|
@@ -1236,6 +1318,50 @@ export const TOOLS = [
|
|
|
1236
1318
|
required: ['creativeId'],
|
|
1237
1319
|
},
|
|
1238
1320
|
},
|
|
1321
|
+
{
|
|
1322
|
+
name: 'preview_creative_draft',
|
|
1323
|
+
description: "Look at a Creative BEFORE anything is saved: renders a draft on this machine and returns the contact sheet as an image plus the draftDir, readiness gaps and warnings. Takes the create_creative fields, plus local files (photoPath, clipPath, audioPath, per-beat photoPath) that are used for the render only. It never writes to Conductor — no Creative, no upload. It also runs the full render's per-placement checks (text spill, platform safe zones such as TikTok/Reels' overlay band, contrast, fonts, images) without saving anything and returns them as checks plus a passed flag. If passed is false, fix the design (copy, layout, layoutOverrides, typeOverrides) and call this again BEFORE showing the image or asking for approval — a failing check would fail the real render. Only when passed is true, show the image to the person; only after they approve, call commit_creative_draft. To change something, call this again. With baseCreativeId, previews edits on top of a saved Creative. Violations come back as a structured error and nothing is rendered.",
|
|
1324
|
+
inputSchema: {
|
|
1325
|
+
type: 'object',
|
|
1326
|
+
properties: {
|
|
1327
|
+
...CREATIVE_FIELD_PROPERTIES,
|
|
1328
|
+
sequence: {
|
|
1329
|
+
type: 'array',
|
|
1330
|
+
description: 'Story beats (2-7) or carousel cards (2-10); each inherits the Creative and overrides only what changes (optional)',
|
|
1331
|
+
items: {
|
|
1332
|
+
type: 'object',
|
|
1333
|
+
properties: {
|
|
1334
|
+
headline: { type: 'string' },
|
|
1335
|
+
body: { type: 'string' },
|
|
1336
|
+
photoPath: { type: 'string', description: 'A photo on this machine for this beat (optional; use instead of photoId)' },
|
|
1337
|
+
photoId: { type: 'string' },
|
|
1338
|
+
cta: { type: 'boolean', description: 'Forces the CTA row on/off for this beat (optional)' },
|
|
1339
|
+
},
|
|
1340
|
+
},
|
|
1341
|
+
},
|
|
1342
|
+
photoPath: { type: 'string', description: 'A photo on this machine (optional; use instead of photoId)' },
|
|
1343
|
+
clipPath: { type: 'string', description: 'MOTION only: a video clip on this machine used as the background (optional; use instead of motion.background.clipMediaId)' },
|
|
1344
|
+
audioPath: { type: 'string', description: 'MOTION only: an audio file on this machine used as the music track (optional; use instead of audio.trackId)' },
|
|
1345
|
+
baseCreativeId: { type: 'string', description: 'Preview edits on top of this saved Creative: only the fields given here change (optional). commit_creative_draft then updates it.' },
|
|
1346
|
+
draftDir: { type: 'string', description: 'Folder to write the draft into (optional — defaults to <project>/.conductor/drafts/<timestamp>-<slug>/)' },
|
|
1347
|
+
full: { type: 'boolean', description: 'Render every placement at full size instead of one contact sheet (optional, default false; slower, and the image shown is the first placement)' },
|
|
1348
|
+
},
|
|
1349
|
+
},
|
|
1350
|
+
},
|
|
1351
|
+
{
|
|
1352
|
+
name: 'commit_creative_draft',
|
|
1353
|
+
description: "Save a draft the person has APPROVED: uploads its local files, creates the Creative (or updates baseCreativeId's), then renders the real frames. Call only after preview_creative_draft's image was shown and approved — this is the first write to Conductor. A draft can be committed once. Returns the Creative id, display id, frames and readiness; call get_creative to verify.",
|
|
1354
|
+
inputSchema: {
|
|
1355
|
+
type: 'object',
|
|
1356
|
+
properties: {
|
|
1357
|
+
draftDir: { type: 'string', description: 'The draftDir preview_creative_draft returned' },
|
|
1358
|
+
source: { type: 'string', description: 'Provenance note recorded on each uploaded file, e.g. a URL or "Generated with <model> on <date>" (optional)' },
|
|
1359
|
+
licence: { type: 'string', description: 'Licence recorded on each uploaded file, e.g. "Own work" (optional)' },
|
|
1360
|
+
aiGenerated: { type: 'boolean', description: 'Whether the uploaded files are AI-generated (optional, informational only)' },
|
|
1361
|
+
},
|
|
1362
|
+
required: ['draftDir'],
|
|
1363
|
+
},
|
|
1364
|
+
},
|
|
1239
1365
|
{
|
|
1240
1366
|
name: 'attach_creative_to_post',
|
|
1241
1367
|
description: "Attach a Creative's rendered frames to a Post as its media — placement to platform (9x16 to TikTok/Instagram Reels, 4x5 to Instagram feed, 1x1 to Facebook, story to story targets; sequence frames in order) — for every destination that has not set its own custom media. Uses the latest SUCCEEDED, non-preview render unless renderId is given. Call get_post_status (postId) to verify.",
|
|
@@ -1316,6 +1442,7 @@ function errorResponse(error) {
|
|
|
1316
1442
|
};
|
|
1317
1443
|
}
|
|
1318
1444
|
export async function runMcpServer() {
|
|
1445
|
+
refreshInstalledPluginAssets({ log: (message) => process.stderr.write(`${message}\n`) });
|
|
1319
1446
|
const server = new Server({ name: 'conductor-mcp', version: '0.1.0' }, { capabilities: { tools: {} } });
|
|
1320
1447
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
1321
1448
|
return { tools: TOOLS };
|
|
@@ -1344,7 +1471,7 @@ export async function runMcpServer() {
|
|
|
1344
1471
|
const params = (args ?? {});
|
|
1345
1472
|
try {
|
|
1346
1473
|
// Creative tools accept a display id ("12a") wherever they take a Creative.
|
|
1347
|
-
for (const key of ['creativeId', 'variantOf']) {
|
|
1474
|
+
for (const key of ['creativeId', 'variantOf', 'baseCreativeId']) {
|
|
1348
1475
|
if (typeof params[key] === 'string' && CREATIVE_TOOLS.includes(name)) {
|
|
1349
1476
|
params[key] = await resolveCreativeId(params[key], config);
|
|
1350
1477
|
}
|
|
@@ -1811,6 +1938,15 @@ export async function runMcpServer() {
|
|
|
1811
1938
|
case 'get_brand_kit': {
|
|
1812
1939
|
return successResponse(await getBrandKit({ kitId: params['kitId'] }, config));
|
|
1813
1940
|
}
|
|
1941
|
+
case 'update_brand_kit': {
|
|
1942
|
+
return successResponse(await updateBrandKit(params, config));
|
|
1943
|
+
}
|
|
1944
|
+
case 'upload_brand_image': {
|
|
1945
|
+
return successResponse(await uploadBrandImage(params, config));
|
|
1946
|
+
}
|
|
1947
|
+
case 'list_creative_media': {
|
|
1948
|
+
return successResponse(await listCreativeMedia(params, config));
|
|
1949
|
+
}
|
|
1814
1950
|
case 'list_creatives': {
|
|
1815
1951
|
return successResponse(await listCreatives({ state: params['state'], brandKitId: params['brandKitId'] }, config));
|
|
1816
1952
|
}
|
|
@@ -1869,6 +2005,39 @@ export async function runMcpServer() {
|
|
|
1869
2005
|
}
|
|
1870
2006
|
return successResponse(result);
|
|
1871
2007
|
}
|
|
2008
|
+
case 'preview_creative_draft': {
|
|
2009
|
+
const progressToken = request.params._meta?.progressToken;
|
|
2010
|
+
let step = 0;
|
|
2011
|
+
const onProgress = progressToken === undefined
|
|
2012
|
+
? undefined
|
|
2013
|
+
: (...args) => {
|
|
2014
|
+
step += 1;
|
|
2015
|
+
void extra.sendNotification({
|
|
2016
|
+
method: 'notifications/progress',
|
|
2017
|
+
params: { progressToken, progress: step, message: args.map(String).join(' ') },
|
|
2018
|
+
}).catch(() => { });
|
|
2019
|
+
};
|
|
2020
|
+
const result = await previewCreativeDraft(params, config, { log: onProgress });
|
|
2021
|
+
if (!result.ok) {
|
|
2022
|
+
return errorResponse({
|
|
2023
|
+
error: result.error,
|
|
2024
|
+
...(result.status ? { status: result.status } : {}),
|
|
2025
|
+
...(result.violations ? { violations: result.violations } : {}),
|
|
2026
|
+
rendered: false,
|
|
2027
|
+
...(result.draftDir ? { draftDir: result.draftDir } : {}),
|
|
2028
|
+
});
|
|
2029
|
+
}
|
|
2030
|
+
const { image, ...meta } = result;
|
|
2031
|
+
return image ? imageResponse(image, meta) : successResponse(meta);
|
|
2032
|
+
}
|
|
2033
|
+
case 'commit_creative_draft': {
|
|
2034
|
+
return successResponse(await commitCreativeDraft({
|
|
2035
|
+
draftDir: params['draftDir'],
|
|
2036
|
+
source: params['source'],
|
|
2037
|
+
licence: params['licence'],
|
|
2038
|
+
aiGenerated: params['aiGenerated'],
|
|
2039
|
+
}, config));
|
|
2040
|
+
}
|
|
1872
2041
|
case 'attach_creative_to_post': {
|
|
1873
2042
|
return successResponse(await attachCreativeToPost({
|
|
1874
2043
|
creativeId: params['creativeId'],
|