@ateam-ai/mcp 0.4.17 → 0.4.18
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/package.json +1 -1
- package/src/api.js +8 -3
- package/src/tools.js +3 -3
package/package.json
CHANGED
package/src/api.js
CHANGED
|
@@ -393,7 +393,7 @@ function headers(sessionId) {
|
|
|
393
393
|
/**
|
|
394
394
|
* Format an API error into a user-friendly message with actionable hints.
|
|
395
395
|
*/
|
|
396
|
-
function formatError(method, path, status, body) {
|
|
396
|
+
function formatError(method, path, status, body, baseUrl) {
|
|
397
397
|
const hints = {
|
|
398
398
|
400: "Bad request — see the error details above for what to fix.",
|
|
399
399
|
401: "Your API key may be invalid or expired. Get a valid key at https://mcp.ateam-ai.com/get-api-key then call ateam_auth(api_key: \"your_key\").",
|
|
@@ -434,7 +434,12 @@ function formatError(method, path, status, body) {
|
|
|
434
434
|
const hint = hints[status] || "";
|
|
435
435
|
const detail = typeof body === "string" && body.length > 0 && body.length < 2000 ? body : "";
|
|
436
436
|
|
|
437
|
-
|
|
437
|
+
// Always show the FULL URL actually hit — ateam-mcp is a PUBLIC MCP with a
|
|
438
|
+
// configurable base (prod default, dev/self-host overrides), so a bare
|
|
439
|
+
// "POST /deploy/..." 404 is ambiguous: is the route missing, or did the
|
|
440
|
+
// request go to the wrong base? The full URL disambiguates instantly.
|
|
441
|
+
const target = baseUrl ? `${baseUrl}${path}` : path;
|
|
442
|
+
let msg = `A-Team API error: ${method} ${target} returned ${status}`;
|
|
438
443
|
if (detail) msg += ` — ${detail}`;
|
|
439
444
|
if (hint) msg += `\nHint: ${hint}`;
|
|
440
445
|
|
|
@@ -486,7 +491,7 @@ async function request(method, path, body, sessionId, opts = {}) {
|
|
|
486
491
|
|
|
487
492
|
if (!res.ok) {
|
|
488
493
|
const text = await res.text().catch(() => "");
|
|
489
|
-
throw new Error(formatError(method, path, res.status, text));
|
|
494
|
+
throw new Error(formatError(method, path, res.status, text, baseUrl));
|
|
490
495
|
}
|
|
491
496
|
|
|
492
497
|
return res.json();
|
package/src/tools.js
CHANGED
|
@@ -2181,10 +2181,10 @@ export default {
|
|
|
2181
2181
|
// ui.listPlugins is generated from ui-dist/<plugin>/manifest.json pick it up
|
|
2182
2182
|
// automatically, and for connectors with a HARDCODED plugin list (e.g.
|
|
2183
2183
|
// personal-assistant-ui-mcp) copy this render block into their ui.getPlugin.
|
|
2184
|
-
const mode =
|
|
2184
|
+
const mode = kind === "iframe" ? "iframe" : kind === "rn" ? "react-native" : "adaptive";
|
|
2185
2185
|
const render = { mode };
|
|
2186
|
-
if (
|
|
2187
|
-
if (
|
|
2186
|
+
if (kind === "iframe" || kind === "adaptive") render.iframeUrl = `/ui/${pluginName}/index.html`;
|
|
2187
|
+
if (kind === "rn" || kind === "adaptive") render.reactNative = { component: pluginName };
|
|
2188
2188
|
const prettyName = pluginName.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
2189
2189
|
files.push({
|
|
2190
2190
|
path: `ui-dist/${pluginName}/manifest.json`,
|