@ateam-ai/mcp 0.4.85 → 0.4.87
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 +27 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ateam-ai/mcp",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.87",
|
|
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 test/deploy-status-truth.test.mjs"
|
|
17
17
|
},
|
|
18
18
|
"keywords": [
|
|
19
19
|
"mcp",
|
package/src/tools.js
CHANGED
|
@@ -594,9 +594,9 @@ export const tools = [
|
|
|
594
594
|
properties: {
|
|
595
595
|
topic: {
|
|
596
596
|
type: "string",
|
|
597
|
-
enum: ["capabilities", "overview", "skill", "solution", "enums", "connector-multi-user", "python_helpers", "widgets", "ui-plugins", "actor-storage", "voice", "voice-native", "triggers", "sub-agent", "consumer-roles", "mobile-connector", "device-capabilities", "monitoring"],
|
|
597
|
+
enum: ["capabilities", "realizations", "overview", "skill", "solution", "enums", "connector-multi-user", "python_helpers", "widgets", "ui-plugins", "actor-storage", "voice", "voice-native", "triggers", "sub-agent", "consumer-roles", "mobile-connector", "device-capabilities", "monitoring"],
|
|
598
598
|
description:
|
|
599
|
-
"What to fetch: 'capabilities' = START HERE IF YOU ARE NEW — the capability index, organised by what a solution DOES rather than by our build artifacts: can I see what the user sees? talk with them out loud? know where they are and that they are moving? act while they sleep? remember each user? show them something? Each question gets a one-word answer (yes / yes-with-gaps / not yet / unknown) and the topics to read next. Every other topic below is named after an ARTIFACT, so if you do not already know our vocabulary this is the only door you can find by thinking about your own problem. 'overview' = API overview + endpoints, 'skill' = full skill spec, 'solution' = full solution spec, 'enums' = all enum values, 'connector-multi-user' = multi-user connector guide, 'python_helpers' = adas.* helper namespace for run_python_script orchestration (read this when designing personas that read state → call tools → checkpoint → status; without it, scripts hand-roll JSON parsing and tool delegation = 5-10x larger and brittler), 'widgets' = widget (UI plugin) spec: catalog model, how_to_use block shape (solution.json snippet + opener_call + persona_phrasing + binding_notes), and rules for declaring ui_plugins. Pair with ateam_get_widget_catalog for the live per-tenant inventory. 'ui-plugins' = the DEEP React Native (mobile) plugin build guide: author in rn-src/, compile with a build:rn esbuild script (format=cjs, target=es2015, external react/react-native/@adas/plugin-sdk) to rn-bundle/index.bundle.js, plain-object export — read this before authoring any MOBILE widget. 'device-capabilities' = THE DEVICE CAPABILITY MATRIX, GENERATED from the mobile SDK's own artefacts and stamped with their hashes: every native.* API (mechanical one-shot verbs), every deviceState.* domain (semantic state a reasoning loop reads, with freshness + confidence) and every server-called device.* tool, each with status (done / partial / shape-only / missing) and what is left. READ THIS before concluding the phone cannot do something — camera, video, scanning, vision, sensors, location, on-device storage. Absence from any other spec topic is NOT evidence. 'monitoring' = THE MONITORING CONTRACT: which tools are safe to call in a poll loop (with cost / poll interval / whether output stays bounded as the run grows), which are not and what to use instead, plus the running ateam-mcp version. Read this BEFORE writing any loop that watches a build — the safe poll is ateam_chain_status, never ateam_get_chain.",
|
|
599
|
+
"What to fetch: 'realizations' = HOW to build a capability: for each one the valid physical routes with use_when / do_not_use_when / execution / freshness, so device-dependent design picks a route deliberately instead of by accident. 'capabilities' = START HERE IF YOU ARE NEW — the capability index, organised by what a solution DOES rather than by our build artifacts: can I see what the user sees? talk with them out loud? know where they are and that they are moving? act while they sleep? remember each user? show them something? Each question gets a one-word answer (yes / yes-with-gaps / not yet / unknown) and the topics to read next. Every other topic below is named after an ARTIFACT, so if you do not already know our vocabulary this is the only door you can find by thinking about your own problem. 'overview' = API overview + endpoints, 'skill' = full skill spec, 'solution' = full solution spec, 'enums' = all enum values, 'connector-multi-user' = multi-user connector guide, 'python_helpers' = adas.* helper namespace for run_python_script orchestration (read this when designing personas that read state → call tools → checkpoint → status; without it, scripts hand-roll JSON parsing and tool delegation = 5-10x larger and brittler), 'widgets' = widget (UI plugin) spec: catalog model, how_to_use block shape (solution.json snippet + opener_call + persona_phrasing + binding_notes), and rules for declaring ui_plugins. Pair with ateam_get_widget_catalog for the live per-tenant inventory. 'ui-plugins' = the DEEP React Native (mobile) plugin build guide: author in rn-src/, compile with a build:rn esbuild script (format=cjs, target=es2015, external react/react-native/@adas/plugin-sdk) to rn-bundle/index.bundle.js, plain-object export — read this before authoring any MOBILE widget. 'device-capabilities' = THE DEVICE CAPABILITY MATRIX, GENERATED from the mobile SDK's own artefacts and stamped with their hashes: every native.* API (mechanical one-shot verbs), every deviceState.* domain (semantic state a reasoning loop reads, with freshness + confidence) and every server-called device.* tool, each with status (done / partial / shape-only / missing) and what is left. READ THIS before concluding the phone cannot do something — camera, video, scanning, vision, sensors, location, on-device storage. Absence from any other spec topic is NOT evidence. 'monitoring' = THE MONITORING CONTRACT: which tools are safe to call in a poll loop (with cost / poll interval / whether output stays bounded as the run grows), which are not and what to use instead, plus the running ateam-mcp version. Read this BEFORE writing any loop that watches a build — the safe poll is ateam_chain_status, never ateam_get_chain.",
|
|
600
600
|
},
|
|
601
601
|
section: {
|
|
602
602
|
type: "string",
|
|
@@ -2507,6 +2507,11 @@ const SPEC_PATHS = {
|
|
|
2507
2507
|
// — device answers are computed from the generated matrix — so it points
|
|
2508
2508
|
// without being able to go stale.
|
|
2509
2509
|
capabilities: "/spec/capabilities",
|
|
2510
|
+
// HOW to build it, once /spec/capabilities has said WHETHER. The routes are
|
|
2511
|
+
// easy to confuse and each confusion changes the product: continuous vision
|
|
2512
|
+
// vs a photo loop, live GPS vs last-synced, an in-process voice device call
|
|
2513
|
+
// vs a server round trip.
|
|
2514
|
+
realizations: "/spec/realizations",
|
|
2510
2515
|
};
|
|
2511
2516
|
|
|
2512
2517
|
const EXAMPLE_PATHS = {
|
|
@@ -3952,12 +3957,28 @@ const handlers = {
|
|
|
3952
3957
|
health,
|
|
3953
3958
|
...(widget_health && { widget_health }),
|
|
3954
3959
|
...(test_result && { test_result }),
|
|
3955
|
-
|
|
3960
|
+
// The GitHub outcome is reported WHATEVER it was. Filtering out the error
|
|
3961
|
+
// case left a failed push visible only inside `phases` — which nothing
|
|
3962
|
+
// reads — while _status went on claiming the push succeeded.
|
|
3963
|
+
...(github_result && { github: github_result }),
|
|
3956
3964
|
...(agent_doc_result && !agent_doc_result.error && { agent_doc: agent_doc_result }),
|
|
3957
3965
|
...(validation.warnings?.length > 0 && { validation_warnings: validation.warnings }),
|
|
3958
|
-
_status
|
|
3959
|
-
|
|
3960
|
-
|
|
3966
|
+
// _status must describe WHAT HAPPENED. It previously asserted
|
|
3967
|
+
// "pushed to main" unconditionally — when the push failed, when it was
|
|
3968
|
+
// skipped (GitHub disabled, or push_to_github not opted in), and when no
|
|
3969
|
+
// push was attempted at all. Worse, its only variable was widget_health,
|
|
3970
|
+
// an unrelated flag: whether the code reached GitHub could not change the
|
|
3971
|
+
// sentence claiming the code reached GitHub.
|
|
3972
|
+
_status: [
|
|
3973
|
+
'✅ Deployed to Core',
|
|
3974
|
+
github_result?.error ? `⚠️ GitHub push FAILED: ${github_result.error}`
|
|
3975
|
+
: github_result?.skipped ? `⚠️ GitHub push skipped${github_result.reason ? ` (${github_result.reason})` : ''} — Core and GitHub now differ`
|
|
3976
|
+
: github_result ? '+ pushed to main'
|
|
3977
|
+
: '⚠️ no GitHub push attempted — Core and GitHub may differ',
|
|
3978
|
+
...(widget_health && !widget_health.ok
|
|
3979
|
+
? [`⚠️ ${widget_health.issues?.length || 0} widget(s) not rendering — see widget_health.`]
|
|
3980
|
+
: []),
|
|
3981
|
+
].join(' '),
|
|
3961
3982
|
_next: 'Create a checkpoint before making more changes: ateam_github_promote(solution_id)',
|
|
3962
3983
|
};
|
|
3963
3984
|
},
|