@ateam-ai/mcp 0.4.86 → 0.4.88
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 +2 -2
- package/src/tools.js +36 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ateam-ai/mcp",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.88",
|
|
4
4
|
"mcpName": "io.github.ariekogan/ateam-mcp",
|
|
5
5
|
"description": "A-Team MCP Server — build, validate, and deploy multi-agent solutions from any AI environment",
|
|
6
6
|
"type": "module",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"start:http": "node src/index.js --http",
|
|
14
14
|
"dev": "node --watch src/index.js",
|
|
15
15
|
"dev:http": "node --watch src/index.js --http",
|
|
16
|
-
"test": "node test/session-isolation.test.mjs && node test/widget-protocol.test.mjs && node test/actor-binding.test.mjs && node test/spec-topics.test.mjs"
|
|
16
|
+
"test": "node test/session-isolation.test.mjs && node test/widget-protocol.test.mjs && node test/actor-binding.test.mjs && node test/spec-topics.test.mjs && node test/example-types.test.mjs && node --test test/deploy-status-truth.test.mjs"
|
|
17
17
|
},
|
|
18
18
|
"keywords": [
|
|
19
19
|
"mcp",
|
package/src/tools.js
CHANGED
|
@@ -633,9 +633,9 @@ export const tools = [
|
|
|
633
633
|
properties: {
|
|
634
634
|
type: {
|
|
635
635
|
type: "string",
|
|
636
|
-
enum: ["skill", "connector", "connector-ui", "solution", "script-cache-skill", "ui-plugin-native", "index"],
|
|
636
|
+
enum: ["skill", "connector", "connector-ui", "solution", "script-cache-skill", "ui-plugin-native", "ui-plugin-iframe", "device-tools", "index"],
|
|
637
637
|
description:
|
|
638
|
-
"Example type: 'skill' = Order Support Agent, 'connector' = stdio MCP connector, 'connector-ui' = UI-capable connector, 'solution' = full 3-skill e-commerce solution, 'script-cache-skill' = fat-tool skill with script_cache opt-in (reference implementation of script-level JIT shortcuts — study this before building any browser-automation skill), 'ui-plugin-native' = complete working React Native (mobile) UI plugin (rn-src/index.tsx + esbuild build:rn → rn-bundle, @adas/plugin-sdk, es2015), 'index' = list all available examples",
|
|
638
|
+
"Example type: 'skill' = Order Support Agent, 'connector' = stdio MCP connector, 'connector-ui' = UI-capable connector, 'solution' = full 3-skill e-commerce solution, 'script-cache-skill' = fat-tool skill with script_cache opt-in (reference implementation of script-level JIT shortcuts — study this before building any browser-automation skill), 'ui-plugin-native' = complete working React Native (mobile) UI plugin (rn-src/index.tsx + esbuild build:rn → rn-bundle, @adas/plugin-sdk, es2015), 'ui-plugin-iframe' = complete working web (iframe) UI plugin with the postMessage protocol, 'device-tools' = a solution's OWN tools that execute ON THE PHONE (runtime:\"device\") — BOTH halves and why they must agree: the plugin-bundle implementation, the connector manifest that declares it (Core cannot introspect a phone, so the manifest is the entire contract), and the skill wiring without which the skill gets none of them. Read this before designing anything that needs a LIVE device reading rather than the last synced one, 'index' = list all available examples",
|
|
639
639
|
},
|
|
640
640
|
},
|
|
641
641
|
required: ["type"],
|
|
@@ -2522,6 +2522,8 @@ const EXAMPLE_PATHS = {
|
|
|
2522
2522
|
solution: "/spec/examples/solution",
|
|
2523
2523
|
"script-cache-skill": "/spec/examples/script-cache-skill",
|
|
2524
2524
|
"ui-plugin-native": "/spec/examples/ui-plugin-native",
|
|
2525
|
+
"ui-plugin-iframe": "/spec/examples/ui-plugin-iframe",
|
|
2526
|
+
"device-tools": "/spec/examples/device-tools",
|
|
2525
2527
|
};
|
|
2526
2528
|
|
|
2527
2529
|
// Tools that are tenant-aware — require EXPLICIT ateam_auth (env vars alone not enough).
|
|
@@ -3559,7 +3561,18 @@ const handlers = {
|
|
|
3559
3561
|
|
|
3560
3562
|
ateam_get_workflows: async (_args, sid) => get("/spec/workflows", sid),
|
|
3561
3563
|
|
|
3562
|
-
ateam_get_examples: async ({ type }, sid) =>
|
|
3564
|
+
ateam_get_examples: async ({ type }, sid) => {
|
|
3565
|
+
// An unknown type used to reach get(undefined) and fetch the API root, so a
|
|
3566
|
+
// typo answered with something that looked like a valid response. Say what
|
|
3567
|
+
// exists instead — the caller cannot see this map.
|
|
3568
|
+
const path = EXAMPLE_PATHS[type];
|
|
3569
|
+
if (!path) {
|
|
3570
|
+
throw new Error(
|
|
3571
|
+
`Unknown example type "${type}". Available: ${Object.keys(EXAMPLE_PATHS).join(", ")}.`
|
|
3572
|
+
);
|
|
3573
|
+
}
|
|
3574
|
+
return get(path, sid);
|
|
3575
|
+
},
|
|
3563
3576
|
|
|
3564
3577
|
// Design-time capability advisor. Proxies to the Builder's /spec/advisor
|
|
3565
3578
|
// (LLM over the curated capability catalog). Public endpoint (auth-exempt),
|
|
@@ -3957,12 +3970,28 @@ const handlers = {
|
|
|
3957
3970
|
health,
|
|
3958
3971
|
...(widget_health && { widget_health }),
|
|
3959
3972
|
...(test_result && { test_result }),
|
|
3960
|
-
|
|
3973
|
+
// The GitHub outcome is reported WHATEVER it was. Filtering out the error
|
|
3974
|
+
// case left a failed push visible only inside `phases` — which nothing
|
|
3975
|
+
// reads — while _status went on claiming the push succeeded.
|
|
3976
|
+
...(github_result && { github: github_result }),
|
|
3961
3977
|
...(agent_doc_result && !agent_doc_result.error && { agent_doc: agent_doc_result }),
|
|
3962
3978
|
...(validation.warnings?.length > 0 && { validation_warnings: validation.warnings }),
|
|
3963
|
-
_status
|
|
3964
|
-
|
|
3965
|
-
|
|
3979
|
+
// _status must describe WHAT HAPPENED. It previously asserted
|
|
3980
|
+
// "pushed to main" unconditionally — when the push failed, when it was
|
|
3981
|
+
// skipped (GitHub disabled, or push_to_github not opted in), and when no
|
|
3982
|
+
// push was attempted at all. Worse, its only variable was widget_health,
|
|
3983
|
+
// an unrelated flag: whether the code reached GitHub could not change the
|
|
3984
|
+
// sentence claiming the code reached GitHub.
|
|
3985
|
+
_status: [
|
|
3986
|
+
'✅ Deployed to Core',
|
|
3987
|
+
github_result?.error ? `⚠️ GitHub push FAILED: ${github_result.error}`
|
|
3988
|
+
: github_result?.skipped ? `⚠️ GitHub push skipped${github_result.reason ? ` (${github_result.reason})` : ''} — Core and GitHub now differ`
|
|
3989
|
+
: github_result ? '+ pushed to main'
|
|
3990
|
+
: '⚠️ no GitHub push attempted — Core and GitHub may differ',
|
|
3991
|
+
...(widget_health && !widget_health.ok
|
|
3992
|
+
? [`⚠️ ${widget_health.issues?.length || 0} widget(s) not rendering — see widget_health.`]
|
|
3993
|
+
: []),
|
|
3994
|
+
].join(' '),
|
|
3966
3995
|
_next: 'Create a checkpoint before making more changes: ateam_github_promote(solution_id)',
|
|
3967
3996
|
};
|
|
3968
3997
|
},
|