@wix/mcp 1.0.23 → 1.0.24
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/build/bin-standalone.js +714 -252
- package/build/bin-standalone.js.map +4 -4
- package/build/cjs/index.cjs +1137 -362
- package/build/cjs/index.cjs.map +4 -4
- package/build/dts/api-call/index.d.ts +7 -1
- package/build/dts/api-call/index.d.ts.map +1 -1
- package/build/dts/api-call/index.js +110 -42
- package/build/dts/api-call/index.js.map +1 -1
- package/build/dts/api-call/upload-image-tool.d.ts +8 -0
- package/build/dts/api-call/upload-image-tool.d.ts.map +1 -0
- package/build/dts/api-call/upload-image-tool.js +150 -0
- package/build/dts/api-call/upload-image-tool.js.map +1 -0
- package/build/dts/api-call/validation.d.ts +1 -0
- package/build/dts/api-call/validation.d.ts.map +1 -1
- package/build/dts/api-call/validation.js +7 -7
- package/build/dts/api-call/validation.js.map +1 -1
- package/build/dts/cli-tools/cli.d.ts.map +1 -1
- package/build/dts/cli-tools/cli.js +6 -4
- package/build/dts/cli-tools/cli.js.map +1 -1
- package/build/dts/config/default-config.d.ts +41 -0
- package/build/dts/config/default-config.d.ts.map +1 -0
- package/build/dts/config/default-config.js +169 -0
- package/build/dts/config/default-config.js.map +1 -0
- package/build/dts/docs/docs.d.ts +12 -2
- package/build/dts/docs/docs.d.ts.map +1 -1
- package/build/dts/docs/docs.js +27 -101
- package/build/dts/docs/docs.js.map +1 -1
- package/build/dts/docs/fetch-article.d.ts +1 -1
- package/build/dts/docs/fetch-article.d.ts.map +1 -1
- package/build/dts/docs/fetch-article.js +39 -1
- package/build/dts/docs/fetch-article.js.map +1 -1
- package/build/dts/docs/get-to-know.d.ts +9 -4
- package/build/dts/docs/get-to-know.d.ts.map +1 -1
- package/build/dts/docs/get-to-know.js +76 -81
- package/build/dts/docs/get-to-know.js.map +1 -1
- package/build/dts/docs/semanticSearch.d.ts.map +1 -1
- package/build/dts/docs/semanticSearch.js +4 -1
- package/build/dts/docs/semanticSearch.js.map +1 -1
- package/build/dts/docs/semanticSearch.test.js +5 -14
- package/build/dts/docs/semanticSearch.test.js.map +1 -1
- package/build/dts/index.d.ts +4 -3
- package/build/dts/index.d.ts.map +1 -1
- package/build/dts/index.js +4 -2
- package/build/dts/index.js.map +1 -1
- package/build/dts/infra/logger.d.ts +1 -0
- package/build/dts/infra/logger.d.ts.map +1 -1
- package/build/dts/infra/logger.js +4 -0
- package/build/dts/infra/logger.js.map +1 -1
- package/build/dts/infra/widget-payload.d.ts +11 -0
- package/build/dts/infra/widget-payload.d.ts.map +1 -0
- package/build/dts/infra/widget-payload.js +2 -0
- package/build/dts/infra/widget-payload.js.map +1 -0
- package/build/dts/site-widget-tools/constants.d.ts +4 -0
- package/build/dts/site-widget-tools/constants.d.ts.map +1 -0
- package/build/dts/site-widget-tools/constants.js +6 -0
- package/build/dts/site-widget-tools/constants.js.map +1 -0
- package/build/dts/site-widget-tools/edit-site-tool/index.d.ts +4 -0
- package/build/dts/site-widget-tools/edit-site-tool/index.d.ts.map +1 -0
- package/build/dts/site-widget-tools/edit-site-tool/index.js +171 -0
- package/build/dts/site-widget-tools/edit-site-tool/index.js.map +1 -0
- package/build/dts/site-widget-tools/index.d.ts +4 -0
- package/build/dts/site-widget-tools/index.d.ts.map +1 -0
- package/build/dts/site-widget-tools/index.js +4 -0
- package/build/dts/site-widget-tools/index.js.map +1 -0
- package/build/dts/site-widget-tools/pull-site-creation-job-tool/index.d.ts +4 -0
- package/build/dts/site-widget-tools/pull-site-creation-job-tool/index.d.ts.map +1 -0
- package/build/dts/{pull-site-creation-job-tool → site-widget-tools/pull-site-creation-job-tool}/index.js +60 -27
- package/build/dts/site-widget-tools/pull-site-creation-job-tool/index.js.map +1 -0
- package/build/dts/site-widget-tools/pull-site-creation-job-tool/types.d.ts +52 -0
- package/build/dts/site-widget-tools/pull-site-creation-job-tool/types.d.ts.map +1 -0
- package/build/dts/site-widget-tools/pull-site-creation-job-tool/types.js +2 -0
- package/build/dts/site-widget-tools/pull-site-creation-job-tool/types.js.map +1 -0
- package/build/dts/site-widget-tools/site-builder-tool/index.d.ts +4 -0
- package/build/dts/site-widget-tools/site-builder-tool/index.d.ts.map +1 -0
- package/build/dts/{site-builder-tool → site-widget-tools/site-builder-tool}/index.js +13 -16
- package/build/dts/site-widget-tools/site-builder-tool/index.js.map +1 -0
- package/build/dts/support/index.d.ts.map +1 -1
- package/build/dts/support/index.js +10 -16
- package/build/dts/support/index.js.map +1 -1
- package/build/dts/wix-mcp-server.d.ts +2 -0
- package/build/dts/wix-mcp-server.d.ts.map +1 -1
- package/build/dts/wix-mcp-server.js +8 -0
- package/build/dts/wix-mcp-server.js.map +1 -1
- package/build/esm/index.js +1129 -362
- package/build/esm/index.js.map +4 -4
- package/package.json +28 -25
- package/build/dts/pull-site-creation-job-tool/constants.d.ts +0 -3
- package/build/dts/pull-site-creation-job-tool/constants.d.ts.map +0 -1
- package/build/dts/pull-site-creation-job-tool/constants.js +0 -3
- package/build/dts/pull-site-creation-job-tool/constants.js.map +0 -1
- package/build/dts/pull-site-creation-job-tool/index.d.ts +0 -21
- package/build/dts/pull-site-creation-job-tool/index.d.ts.map +0 -1
- package/build/dts/pull-site-creation-job-tool/index.js.map +0 -1
- package/build/dts/site-builder-tool/constants.d.ts +0 -7
- package/build/dts/site-builder-tool/constants.d.ts.map +0 -1
- package/build/dts/site-builder-tool/constants.js +0 -7
- package/build/dts/site-builder-tool/constants.js.map +0 -1
- package/build/dts/site-builder-tool/index.d.ts +0 -4
- package/build/dts/site-builder-tool/index.d.ts.map +0 -1
- package/build/dts/site-builder-tool/index.js.map +0 -1
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { WixMcpServer } from '../wix-mcp-server.js';
|
|
2
2
|
import { McpAuthenticationStrategy } from '../auth/index.js';
|
|
3
|
-
export
|
|
3
|
+
export interface ToolHintsConfig {
|
|
4
|
+
readOnlyHint?: boolean;
|
|
5
|
+
destructiveHint?: boolean;
|
|
6
|
+
openWorldHint?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export { addUploadImageTool } from './upload-image-tool.js';
|
|
9
|
+
export declare function addApiCallTool(server: WixMcpServer, strategy: McpAuthenticationStrategy, allowedTools?: string[], disableTools?: string[], enableTools?: string[], toolDescriptions?: Record<string, string>, toolHints?: Record<string, ToolHintsConfig>): void;
|
|
4
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api-call/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api-call/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAK7D,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AA8B5D,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,yBAAyB,EACnC,YAAY,GAAE,MAAM,EAAwD,EAC5E,YAAY,GAAE,MAAM,EAAO,EAC3B,WAAW,GAAE,MAAM,EAAO,EAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,QAmU5C"}
|
|
@@ -2,37 +2,73 @@ import { z } from 'zod';
|
|
|
2
2
|
import { HttpClient } from '@wix/http-client';
|
|
3
3
|
import { logger } from '../infra/logger.js';
|
|
4
4
|
import { handleWixAPIResponse } from '../tool-utils.js';
|
|
5
|
-
import { isApiUrlAllowed } from './validation.js';
|
|
6
|
-
|
|
5
|
+
import { ALLOWED_HOSTNAMES, isApiUrlAllowed } from './validation.js';
|
|
6
|
+
import { addUploadImageTool } from './upload-image-tool.js';
|
|
7
|
+
import { defaultToolDescriptions } from '../config/default-config.js';
|
|
8
|
+
export { addUploadImageTool } from './upload-image-tool.js';
|
|
9
|
+
const MAX_RESPONSE_SIZE = 50000; // ~50KB cap
|
|
10
|
+
function formatApiResponse(responseData) {
|
|
11
|
+
// Detect if response is HTML (likely wrong endpoint or auth redirect)
|
|
12
|
+
if (typeof responseData === 'string' &&
|
|
13
|
+
responseData.trim().startsWith('<!DOCTYPE')) {
|
|
14
|
+
return {
|
|
15
|
+
text: 'Error: API returned HTML instead of JSON. This usually means the URL is incorrect or points to a web page instead of an API endpoint. Please verify the URL.',
|
|
16
|
+
isError: true
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
let responseText = JSON.stringify(responseData);
|
|
20
|
+
if (responseText.length > MAX_RESPONSE_SIZE) {
|
|
21
|
+
responseText =
|
|
22
|
+
responseText.slice(0, MAX_RESPONSE_SIZE) +
|
|
23
|
+
`\n...[TRUNCATED - response was ${responseText.length} chars, showing first ${MAX_RESPONSE_SIZE}]`;
|
|
24
|
+
}
|
|
25
|
+
return { text: responseText, isError: false };
|
|
26
|
+
}
|
|
27
|
+
export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI', 'ListWixSites', 'ManageWixSite'], disableTools = [], enableTools = [], toolDescriptions, toolHints) {
|
|
28
|
+
// Compute effective allowed tools: (default + enableTools) - disableTools
|
|
29
|
+
const effectiveAllowedTools = [
|
|
30
|
+
...new Set([...allowedTools, ...enableTools])
|
|
31
|
+
].filter((tool) => !disableTools.includes(tool));
|
|
32
|
+
// Helper to get tool hints with defaults
|
|
33
|
+
const getHints = (toolName, defaults) => ({
|
|
34
|
+
readOnlyHint: toolHints?.[toolName]?.readOnlyHint ?? defaults.readOnlyHint,
|
|
35
|
+
destructiveHint: toolHints?.[toolName]?.destructiveHint ?? defaults.destructiveHint,
|
|
36
|
+
openWorldHint: toolHints?.[toolName]?.openWorldHint ?? defaults.openWorldHint
|
|
37
|
+
});
|
|
7
38
|
// Helper to get description (custom or default)
|
|
8
39
|
const getDescription = (toolName, defaultDesc) => toolDescriptions?.[toolName] ?? defaultDesc;
|
|
9
|
-
if (
|
|
40
|
+
if (effectiveAllowedTools.includes('CallWixSiteAPI') &&
|
|
10
41
|
!disableTools.includes('CallWixSiteAPI')) {
|
|
11
|
-
|
|
12
|
-
'Call Wix apis on a business or site. Use this to create, read, update, and delete data and other Wix entities in your Wix site,',
|
|
13
|
-
`You should ALWAYS check the rest docs - "SearchWixRESTDocumentation" for the specific API you want to call, don't just call it without knowing what it does, CHECK THE DOCS`,
|
|
14
|
-
'Error Handling:',
|
|
15
|
-
'If the error is related to missing installed app or "WDE0110: Wix Code not enabled", you should install the missing app by using ReadFullDocsArticle tool to fetch the article - https://dev.wix.com/docs/kb-only/MCP_REST_RECIPES_KB_ID/TRAIN_wix.devcenter.apps.installer.v1.AppsInstallerService.InstallApp',
|
|
16
|
-
'**Note:** there is no need to check if an app is installed/ Wix Code enabled in advance, just call the API and handle the error if it occurs, the API error message will state it clearly.',
|
|
17
|
-
'For any other error, use your default error handling mechanism'
|
|
18
|
-
].join('\n');
|
|
19
|
-
server.tool('CallWixSiteAPI', getDescription('CallWixSiteAPI', defaultCallApiDesc), {
|
|
42
|
+
server.tool('CallWixSiteAPI', getDescription('CallWixSiteAPI', defaultToolDescriptions.CallWixSiteAPI), {
|
|
20
43
|
siteId: z
|
|
21
44
|
.string()
|
|
22
45
|
.describe('The id of the site selected using site selection tool'),
|
|
23
46
|
url: z
|
|
24
47
|
.string()
|
|
25
48
|
.url()
|
|
26
|
-
.describe(
|
|
49
|
+
.describe([
|
|
50
|
+
'The url of the api to call - ALWAYS get the API url from the Wix REST docs or from the conversation context, the URL MUST BE ABSOLUTE URL',
|
|
51
|
+
'NEVER guess the API url, ALWAYS get it from the conversation context, i.e from the user prompt or from the "WixREADME" tool or from the "SearchWixRESTDocumentation" tool or from the "ReadFullDocsArticle" tool',
|
|
52
|
+
`Allowed API urls are: ${ALLOWED_HOSTNAMES.join(', ')}`,
|
|
53
|
+
`Docs urls like https://dev.wix.com/docs/... are not API urls, if you want to read the docs, use the "ReadFullDocsArticle" tool`
|
|
54
|
+
].join('\n')),
|
|
27
55
|
method: z
|
|
28
56
|
.string()
|
|
29
57
|
.describe('The HTTP method to use for the API call (e.g. GET, POST, PUT, DELETE)'),
|
|
30
58
|
body: z
|
|
31
|
-
.
|
|
59
|
+
.object({})
|
|
60
|
+
.passthrough()
|
|
32
61
|
.optional()
|
|
33
|
-
.describe('A
|
|
34
|
-
},
|
|
35
|
-
|
|
62
|
+
.describe('The request body object. YOU MUST NEVER MAKE UP A BODY - this should be based on the conversation context, i.e from the user prompt or from the "WixREADME" tool or from the "SearchWixRESTDocumentation" tool or from the "ReadFullDocsArticle" tool or from the "ReadFullDocsMethodSchema" tool - i.e based on the API docs. YOU MUST NEVER ASSUME YOU KNOW WHAT THE SCHEMA IS WITHOUT CONCRETE EXAMPLES OR SCHEMA DEFINITIONS FROM THE CONVERSATION CONTEXT.')
|
|
63
|
+
}, getHints('CallWixSiteAPI', {
|
|
64
|
+
readOnlyHint: false,
|
|
65
|
+
destructiveHint: true,
|
|
66
|
+
openWorldHint: false
|
|
67
|
+
}), async ({ url, body, method, siteId }, { httpClient, setToolBiParams }) => {
|
|
68
|
+
const requestHeaders = {
|
|
69
|
+
...(await strategy.getSiteAuthHeaders(siteId)),
|
|
70
|
+
...(body ? { 'Content-Type': 'application/json' } : {})
|
|
71
|
+
};
|
|
36
72
|
const { isAllowed, error: urlError } = isApiUrlAllowed(url);
|
|
37
73
|
if (!isAllowed) {
|
|
38
74
|
return {
|
|
@@ -49,20 +85,29 @@ export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI
|
|
|
49
85
|
const response = await httpClient.request({
|
|
50
86
|
url,
|
|
51
87
|
method: method,
|
|
52
|
-
headers:
|
|
53
|
-
...(await strategy.getSiteAuthHeaders(siteId)),
|
|
54
|
-
...(body ? { 'Content-Type': 'application/json' } : {})
|
|
55
|
-
},
|
|
88
|
+
headers: requestHeaders,
|
|
56
89
|
data: method === 'GET' ? undefined : body
|
|
57
90
|
});
|
|
58
91
|
const requestId = response.headers?.['x-wix-request-id'];
|
|
59
92
|
setToolBiParams({ requestId, siteId });
|
|
60
93
|
const responseData = await handleWixAPIResponse(response);
|
|
94
|
+
const formatted = formatApiResponse(responseData);
|
|
95
|
+
if (formatted.isError) {
|
|
96
|
+
return {
|
|
97
|
+
content: [
|
|
98
|
+
{
|
|
99
|
+
type: 'text',
|
|
100
|
+
text: formatted.text
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
isError: true
|
|
104
|
+
};
|
|
105
|
+
}
|
|
61
106
|
return {
|
|
62
107
|
content: [
|
|
63
108
|
{
|
|
64
109
|
type: 'text',
|
|
65
|
-
text: `Wix Site API call successful: ${
|
|
110
|
+
text: `Wix Site API call successful: ${formatted.text}`
|
|
66
111
|
}
|
|
67
112
|
]
|
|
68
113
|
};
|
|
@@ -73,9 +118,9 @@ export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI
|
|
|
73
118
|
requestId = error.requestId;
|
|
74
119
|
}
|
|
75
120
|
setToolBiParams({ requestId, siteId });
|
|
121
|
+
const response = error.response;
|
|
76
122
|
const errorMessage = `Failed to call Wix Site API: ${error}. ${requestId ? `Request ID: ${requestId}` : ''}`;
|
|
77
123
|
logger.error(errorMessage);
|
|
78
|
-
const response = error.response;
|
|
79
124
|
if (!response) {
|
|
80
125
|
throw new Error(errorMessage);
|
|
81
126
|
}
|
|
@@ -83,17 +128,20 @@ export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI
|
|
|
83
128
|
}
|
|
84
129
|
});
|
|
85
130
|
}
|
|
86
|
-
if (
|
|
131
|
+
if (effectiveAllowedTools.includes('ListWixSites') &&
|
|
87
132
|
!disableTools.includes('ListWixSites')) {
|
|
88
|
-
|
|
89
|
-
server.tool('ListWixSites', getDescription('ListWixSites', defaultListSitesDesc), {
|
|
133
|
+
server.tool('ListWixSites', getDescription('ListWixSites', defaultToolDescriptions.ListWixSites), {
|
|
90
134
|
nameSearch: z
|
|
91
135
|
.string()
|
|
92
136
|
.optional()
|
|
93
137
|
.describe('optional filer by name, if not provided all sites will be returned'),
|
|
94
138
|
// Hack for Cursor ignoring tools with no params (when nameSearch is optional)
|
|
95
139
|
alwaysTrue: z.boolean().describe('Always pass true to this parameter')
|
|
96
|
-
},
|
|
140
|
+
}, getHints('ListWixSites', {
|
|
141
|
+
readOnlyHint: true,
|
|
142
|
+
destructiveHint: false,
|
|
143
|
+
openWorldHint: false
|
|
144
|
+
}), async ({ nameSearch }, { httpClient }) => {
|
|
97
145
|
const sitesRes = await httpClient.post('https://www.wixapis.com/site-list/v2/sites/query', {
|
|
98
146
|
query: {
|
|
99
147
|
cursorPaging: { limit: 21 },
|
|
@@ -123,23 +171,19 @@ export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI
|
|
|
123
171
|
content: [
|
|
124
172
|
{
|
|
125
173
|
type: 'text',
|
|
126
|
-
text:
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
'If more than 20 are found you should list all 20 and suggest to search by the name of the site they are looking for'
|
|
174
|
+
text: [
|
|
175
|
+
JSON.stringify(result),
|
|
176
|
+
'if there is more than one site returned, the user should pick one from a list, list the sites (only name) for the user and ask them to pick one, ' +
|
|
177
|
+
'If more than 20 are found you should list all 20 and suggest to search by the name of the site they are looking for'
|
|
178
|
+
].join('\n\n')
|
|
132
179
|
}
|
|
133
180
|
]
|
|
134
181
|
};
|
|
135
182
|
});
|
|
136
183
|
}
|
|
137
|
-
if (
|
|
184
|
+
if (effectiveAllowedTools.includes('ManageWixSite') &&
|
|
138
185
|
!disableTools.includes('ManageWixSite')) {
|
|
139
|
-
|
|
140
|
-
ALWAYS use "SearchWixRESTDocumentation" to search for the API you should invoke, NEVER GUESS THE SITE API URL
|
|
141
|
-
You should ALWAYS check the rest docs - "SearchWixRESTDocumentation" for the specific API you want to call, don't just call it without knowing what it does, CHECK THE DOCS`;
|
|
142
|
-
server.tool('ManageWixSite', getDescription('ManageWixSite', defaultManageSiteDesc), {
|
|
186
|
+
server.tool('ManageWixSite', getDescription('ManageWixSite', defaultToolDescriptions.ManageWixSite), {
|
|
143
187
|
url: z
|
|
144
188
|
.string()
|
|
145
189
|
.url()
|
|
@@ -148,10 +192,15 @@ export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI
|
|
|
148
192
|
.string()
|
|
149
193
|
.describe('The HTTP method to use for the API call (e.g. GET, POST, PUT, DELETE)'),
|
|
150
194
|
body: z
|
|
151
|
-
.
|
|
195
|
+
.object({})
|
|
196
|
+
.passthrough()
|
|
152
197
|
.optional()
|
|
153
|
-
.describe('A
|
|
154
|
-
},
|
|
198
|
+
.describe('The request body object. YOU MUST NEVER MAKE UP A BODY - this should be based on the conversation context, i.e from the user prompt or from the "WixREADME" tool or from the "SearchWixRESTDocumentation" tool or from the "ReadFullDocsArticle" tool or from the "ReadFullDocsMethodSchema" tool - i.e based on the API docs. YOU MUST NEVER ASSUME YOU KNOW WHAT THE SCHEMA IS WITHOUT CONCRETE EXAMPLES OR SCHEMA DEFINITIONS FROM THE CONVERSATION CONTEXT.')
|
|
199
|
+
}, getHints('ManageWixSite', {
|
|
200
|
+
readOnlyHint: false,
|
|
201
|
+
destructiveHint: true,
|
|
202
|
+
openWorldHint: false
|
|
203
|
+
}), async ({ url, body, method }, { httpClient }) => {
|
|
155
204
|
logger.log(`Calling Wix Account level API: ${url}, body: ${JSON.stringify(body)}`);
|
|
156
205
|
const { isAllowed, error: urlError } = isApiUrlAllowed(url);
|
|
157
206
|
if (!isAllowed) {
|
|
@@ -177,11 +226,23 @@ export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI
|
|
|
177
226
|
data: method === 'GET' ? undefined : body
|
|
178
227
|
});
|
|
179
228
|
const responseData = await handleWixAPIResponse(response);
|
|
229
|
+
const formatted = formatApiResponse(responseData);
|
|
230
|
+
if (formatted.isError) {
|
|
231
|
+
return {
|
|
232
|
+
content: [
|
|
233
|
+
{
|
|
234
|
+
type: 'text',
|
|
235
|
+
text: formatted.text
|
|
236
|
+
}
|
|
237
|
+
],
|
|
238
|
+
isError: true
|
|
239
|
+
};
|
|
240
|
+
}
|
|
180
241
|
return {
|
|
181
242
|
content: [
|
|
182
243
|
{
|
|
183
244
|
type: 'text',
|
|
184
|
-
text: `Wix Account API call successful: ${
|
|
245
|
+
text: `Wix Account API call successful: ${formatted.text}`
|
|
185
246
|
}
|
|
186
247
|
]
|
|
187
248
|
};
|
|
@@ -196,5 +257,12 @@ export function addApiCallTool(server, strategy, allowedTools = ['CallWixSiteAPI
|
|
|
196
257
|
}
|
|
197
258
|
});
|
|
198
259
|
}
|
|
260
|
+
if (effectiveAllowedTools.includes('UploadImageToWixSite') &&
|
|
261
|
+
!disableTools.includes('UploadImageToWixSite')) {
|
|
262
|
+
addUploadImageTool(server, strategy, {
|
|
263
|
+
description: getDescription('UploadImageToWixSite', ''),
|
|
264
|
+
hints: toolHints?.['UploadImageToWixSite']
|
|
265
|
+
});
|
|
266
|
+
}
|
|
199
267
|
}
|
|
200
268
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api-call/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api-call/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WixMcpServer } from '../wix-mcp-server.js';
|
|
2
|
+
import { McpAuthenticationStrategy } from '../auth/index.js';
|
|
3
|
+
import type { ToolHintsConfig } from './index.js';
|
|
4
|
+
export declare function addUploadImageTool(server: WixMcpServer, strategy: McpAuthenticationStrategy, options?: {
|
|
5
|
+
description?: string;
|
|
6
|
+
hints?: ToolHintsConfig;
|
|
7
|
+
}): void;
|
|
8
|
+
//# sourceMappingURL=upload-image-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-image-tool.d.ts","sourceRoot":"","sources":["../../../src/api-call/upload-image-tool.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyDlD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,yBAAyB,EACnC,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,QA4JF"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload image tool for Wix Media Manager.
|
|
3
|
+
*
|
|
4
|
+
* Uses OpenAI's file params pattern for accepting user-uploaded files.
|
|
5
|
+
* @see https://developers.openai.com/apps-sdk/build/mcp-server#files-out-file-params
|
|
6
|
+
* @see https://developers.openai.com/apps-sdk/reference
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { logger } from '../infra/logger.js';
|
|
10
|
+
import { defaultToolDescriptions } from '../config/default-config.js';
|
|
11
|
+
const TOOL_NAME = 'UploadImageToWixSite';
|
|
12
|
+
const POLL_TIMEOUT_MS = 10000;
|
|
13
|
+
const POLL_INTERVAL_MS = 1000;
|
|
14
|
+
/**
|
|
15
|
+
* Polls the Media Manager API until the file status becomes READY or timeout is reached.
|
|
16
|
+
*/
|
|
17
|
+
async function waitForFileReady(httpClient, fileId, authHeaders, timeoutMs = POLL_TIMEOUT_MS) {
|
|
18
|
+
const startTime = Date.now();
|
|
19
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
20
|
+
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
21
|
+
try {
|
|
22
|
+
const response = await httpClient.get(`https://www.wixapis.com/site-media/v1/files/get-file-by-id?fileId=${encodeURIComponent(fileId)}`, { headers: authHeaders });
|
|
23
|
+
const file = response.data?.file;
|
|
24
|
+
if (file && file.operationStatus !== 'PENDING') {
|
|
25
|
+
return file;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// If status check fails, return null to use original file data
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return null; // Timeout reached
|
|
34
|
+
}
|
|
35
|
+
export function addUploadImageTool(server, strategy, options) {
|
|
36
|
+
const description = options?.description ?? defaultToolDescriptions.UploadImageToWixSite;
|
|
37
|
+
const hints = {
|
|
38
|
+
readOnlyHint: options?.hints?.readOnlyHint ?? false,
|
|
39
|
+
destructiveHint: options?.hints?.destructiveHint ?? false,
|
|
40
|
+
openWorldHint: options?.hints?.openWorldHint ?? false
|
|
41
|
+
};
|
|
42
|
+
server.registerTool(TOOL_NAME, {
|
|
43
|
+
title: 'Upload Image to Wix Site',
|
|
44
|
+
description,
|
|
45
|
+
inputSchema: {
|
|
46
|
+
siteId: z.string().describe('The ID of the Wix site to upload to'),
|
|
47
|
+
image: z
|
|
48
|
+
.object({
|
|
49
|
+
download_url: z.string().url(),
|
|
50
|
+
file_id: z.string()
|
|
51
|
+
})
|
|
52
|
+
.describe('The image file provided by the user'),
|
|
53
|
+
displayName: z
|
|
54
|
+
.string()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Optional display name for the file in Media Manager. If not provided, uses the original filename.')
|
|
57
|
+
},
|
|
58
|
+
_meta: {
|
|
59
|
+
'openai/fileParams': ['image'],
|
|
60
|
+
'openai/toolInvocation/invoking': 'Uploading image to Wix Media Manager...',
|
|
61
|
+
'openai/toolInvocation/invoked': 'Image uploaded successfully'
|
|
62
|
+
},
|
|
63
|
+
annotations: hints
|
|
64
|
+
}, async ({ siteId, image, displayName }, { httpClient, setToolBiParams }) => {
|
|
65
|
+
logger.log(`Uploading image to Wix site: ${siteId}, file_id: ${image.file_id}`);
|
|
66
|
+
setToolBiParams({ siteId });
|
|
67
|
+
try {
|
|
68
|
+
// Import the file from the download URL to Wix Media Manager
|
|
69
|
+
const importResponse = await httpClient.post('https://www.wixapis.com/site-media/v1/files/import', {
|
|
70
|
+
url: image.download_url,
|
|
71
|
+
...(displayName ? { displayName } : {})
|
|
72
|
+
}, {
|
|
73
|
+
headers: {
|
|
74
|
+
...(await strategy.getSiteAuthHeaders(siteId)),
|
|
75
|
+
'Content-Type': 'application/json'
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
let file = importResponse.data?.file;
|
|
79
|
+
if (!file) {
|
|
80
|
+
return {
|
|
81
|
+
isError: true,
|
|
82
|
+
content: [
|
|
83
|
+
{
|
|
84
|
+
type: 'text',
|
|
85
|
+
text: 'Failed to upload image: No file returned from Wix API'
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// Poll for READY status if still PENDING
|
|
91
|
+
if (file.operationStatus === 'PENDING') {
|
|
92
|
+
const authHeaders = await strategy.getSiteAuthHeaders(siteId);
|
|
93
|
+
const updatedFile = await waitForFileReady(httpClient, file.id, authHeaders);
|
|
94
|
+
if (updatedFile) {
|
|
95
|
+
file = updatedFile;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const result = {
|
|
99
|
+
id: file.id,
|
|
100
|
+
displayName: file.displayName,
|
|
101
|
+
url: file.url,
|
|
102
|
+
operationStatus: file.operationStatus,
|
|
103
|
+
mediaType: file.mediaType,
|
|
104
|
+
sourceUrl: file.sourceUrl,
|
|
105
|
+
...(file.media?.image?.image
|
|
106
|
+
? {
|
|
107
|
+
width: file.media.image.image.width,
|
|
108
|
+
height: file.media.image.image.height
|
|
109
|
+
}
|
|
110
|
+
: {})
|
|
111
|
+
};
|
|
112
|
+
logger.log(`Image uploaded successfully: ${JSON.stringify(result)}`);
|
|
113
|
+
// Build response text with helpful information
|
|
114
|
+
let responseText = `Image uploaded successfully!\n\n`;
|
|
115
|
+
responseText += `**Media ID:** ${result.id}\n`;
|
|
116
|
+
responseText += `**URL:** ${result.url}\n`;
|
|
117
|
+
responseText += `**Status:** ${result.operationStatus}\n`;
|
|
118
|
+
if (result.width && result.height) {
|
|
119
|
+
responseText += `**Dimensions:** ${result.width}x${result.height}\n`;
|
|
120
|
+
}
|
|
121
|
+
if (result.operationStatus === 'PENDING') {
|
|
122
|
+
responseText += `\n**Note:** The file is still being processed (timeout reached). `;
|
|
123
|
+
responseText += `You can use the URL immediately, but some operations may require waiting for status to become READY.`;
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
content: [
|
|
127
|
+
{
|
|
128
|
+
type: 'text',
|
|
129
|
+
text: responseText
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
structuredContent: result
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
const errorMessage = `Failed to upload image to Wix: ${error}`;
|
|
137
|
+
logger.error(errorMessage);
|
|
138
|
+
return {
|
|
139
|
+
isError: true,
|
|
140
|
+
content: [
|
|
141
|
+
{
|
|
142
|
+
type: 'text',
|
|
143
|
+
text: errorMessage
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=upload-image-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-image-tool.js","sourceRoot":"","sources":["../../../src/api-call/upload-image-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/api-call/validation.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM;;;;;;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/api-call/validation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,UAM7B,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM;;;;;;EA2B1C"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
export const ALLOWED_HOSTNAMES = [
|
|
2
|
+
'wix.com',
|
|
3
|
+
'dev.wix.com',
|
|
4
|
+
'manage.wix.com',
|
|
5
|
+
'editor.wix.com',
|
|
6
|
+
'wixapis.com'
|
|
7
|
+
];
|
|
1
8
|
export function isApiUrlAllowed(url) {
|
|
2
9
|
let parsedUrl;
|
|
3
10
|
try {
|
|
@@ -9,13 +16,6 @@ export function isApiUrlAllowed(url) {
|
|
|
9
16
|
error: `Invalid URL format: ${url}`
|
|
10
17
|
};
|
|
11
18
|
}
|
|
12
|
-
const ALLOWED_HOSTNAMES = [
|
|
13
|
-
'wix.com',
|
|
14
|
-
'dev.wix.com',
|
|
15
|
-
'manage.wix.com',
|
|
16
|
-
'editor.wix.com',
|
|
17
|
-
'wixapis.com'
|
|
18
|
-
];
|
|
19
19
|
const hostname = parsedUrl.hostname.replace('www.', '');
|
|
20
20
|
const isAllowedHostname = ALLOWED_HOSTNAMES.some((domain) => hostname === domain);
|
|
21
21
|
if (!isAllowedHostname) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/api-call/validation.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,SAAc,CAAC;IAEnB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,uBAAuB,GAAG,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/api-call/validation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;CACd,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,SAAc,CAAC;IAEnB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,uBAAuB,GAAG,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAC9C,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,CAChC,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,2BAA2B,QAAQ,kDAAkD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC3H,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli-tools/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,eAAe,qCAAsC,CAAC;AACnE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,YAAY,GAAE,OAAO,EAAoB,EACzC,QAAQ,GAAE,OAAe,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli-tools/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,eAAe,qCAAsC,CAAC;AACnE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,YAAY,GAAE,OAAO,EAAoB,EACzC,QAAQ,GAAE,OAAe,QA4J1B"}
|
|
@@ -112,10 +112,12 @@ export function addCliTools(server, allowedTools = ['CLI_COMMAND'], isWixOne = f
|
|
|
112
112
|
logger.log(`RunWixCliCommand: stderr: ${stderr}`);
|
|
113
113
|
return {
|
|
114
114
|
content: [
|
|
115
|
-
{
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
{
|
|
116
|
+
type: 'text',
|
|
117
|
+
text: stderr
|
|
118
|
+
? [stdout, `Error: ${stderr}`].join('\n\n')
|
|
119
|
+
: stdout
|
|
120
|
+
}
|
|
119
121
|
]
|
|
120
122
|
};
|
|
121
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli-tools/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,aAAa,CAAU,CAAC;AAGnE,MAAM,UAAU,WAAW,CACzB,MAAoB,EACpB,eAA0B,CAAC,aAAa,CAAC,EACzC,WAAoB,KAAK;IAEzB,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB;;;;;;;;;iFAS2E,EAC3E;YACE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CAAC,yDAAyD,CAAC;YACtE,aAAa,EAAE,CAAC;iBACb,IAAI,CAAC;gBACJ,gBAAgB;gBAChB,kBAAkB;gBAClB,uBAAuB;gBACvB,iBAAiB;gBACjB,YAAY;gBACZ,WAAW;gBACX,OAAO;gBACP,gBAAgB;aACjB,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CACP,iGAAiG,CAClG;YACH,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,6HAA6H,CAC9H;YACH,YAAY,EAAE,CAAC;iBACZ,OAAO,EAAE;iBACT,QAAQ,CACP,0FAA0F,CAC3F;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC;iBACjC,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC;iBAChC,QAAQ,CACP,qNAAqN,CACtN;SACJ,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE;YAC3D,MAAM,CAAC,GAAG,CACR,8BAA8B,OAAO,cAAc,OAAO,oBAAoB,aAAa,oBAAoB,aAAa,EAAE,CAC/H,CAAC;YACF,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,WAAW,GAAG,EAAE,CAAC;YAErB,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,uEAAuE;6BAC9E;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,uEAAuE;6BAC9E;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,gDAAgD;gBAChD,WAAW,GAAG,KAAK,CAAC;gBACpB,WAAW,GAAG;oBACZ,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;oBAC5B,KAAK;oBACL,UAAU;oBACV,IAAI;oBACJ,aAAa;oBACb,IAAI;oBACJ,aAAa;oBACb,QAAQ;iBACT,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC9B,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,QAAQ,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBACtC,WAAW,GAAG,SAAS,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,CACR,8BAA8B,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;gBAEF,uBAAuB;gBACvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,KAAK,CAC9C,WAAW,EACX,WAAW,EACX;oBACE,GAAG,EAAE,OAAO;oBACZ,SAAS,EAAE,IAAI;oBACf,GAAG,EAAE;wBACH,GAAG,OAAO,CAAC,GAAG;qBACf;oBACD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,mBAAmB;oBAC3C,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,oBAAoB;iBACjD,CACF,CAAC;gBAEF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnB,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC;wBAC9D,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;gBAElD,OAAO;oBACL,OAAO,EAAE;wBACP,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli-tools/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ReadmeDocConfig } from '../docs/get-to-know.js';
|
|
2
|
+
import type { DocsTool } from '../docs/docs.js';
|
|
3
|
+
import type { ToolHintsConfig } from '../api-call/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Configuration structure for MCP modes
|
|
6
|
+
*/
|
|
7
|
+
export interface ModeDefaultConfig {
|
|
8
|
+
toolDescriptions: Record<string, string>;
|
|
9
|
+
disableTools: string[];
|
|
10
|
+
enableTools: string[];
|
|
11
|
+
readmeDocs: ReadmeDocConfig[];
|
|
12
|
+
toolHints?: Record<string, ToolHintsConfig>;
|
|
13
|
+
docsTools?: DocsTool[];
|
|
14
|
+
getToKnowWixEnabled?: boolean;
|
|
15
|
+
createWixBusinessGuideEnabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* System reminder text - provides flow guidance for LLMs
|
|
19
|
+
*/
|
|
20
|
+
export declare const SYSTEM_REMINDER: string;
|
|
21
|
+
/**
|
|
22
|
+
* Default tool descriptions - single source of truth for all tool descriptions
|
|
23
|
+
*/
|
|
24
|
+
export declare const defaultToolDescriptions: Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* Default readme docs - content for WixREADME tool response
|
|
27
|
+
*/
|
|
28
|
+
export declare const defaultReadmeDocs: ReadmeDocConfig[];
|
|
29
|
+
/**
|
|
30
|
+
* Merge base config with overrides
|
|
31
|
+
* @param base - Base configuration
|
|
32
|
+
* @param overrides - Partial overrides to apply
|
|
33
|
+
* @returns Merged configuration
|
|
34
|
+
*/
|
|
35
|
+
export declare function mergeConfig(base: ModeDefaultConfig, overrides: Partial<ModeDefaultConfig>): ModeDefaultConfig;
|
|
36
|
+
/**
|
|
37
|
+
* Default config - used by both /mcp and /v2 endpoints
|
|
38
|
+
* All tools enabled, all descriptions, good readmeDocs
|
|
39
|
+
*/
|
|
40
|
+
export declare const defaultConfig: ModeDefaultConfig;
|
|
41
|
+
//# sourceMappingURL=default-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-config.d.ts","sourceRoot":"","sources":["../../../src/config/default-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE5C,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,QAO3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkE1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAuD9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACpC,iBAAiB,CAiBnB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,iBAQ3B,CAAC"}
|