@ateam-ai/mcp 0.3.1 → 0.3.3
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/tools.js +101 -11
package/package.json
CHANGED
package/src/tools.js
CHANGED
|
@@ -367,6 +367,46 @@ export const tools = [
|
|
|
367
367
|
},
|
|
368
368
|
},
|
|
369
369
|
|
|
370
|
+
{
|
|
371
|
+
name: "ateam_upload_connector",
|
|
372
|
+
core: true,
|
|
373
|
+
description:
|
|
374
|
+
"Upload connector code to Core and restart — WITHOUT redeploying skills. " +
|
|
375
|
+
"Use this to update connector source code (server.js, UI assets, plugins) quickly. " +
|
|
376
|
+
"Set github=true to pull files from the solution's GitHub repo, or pass files directly. " +
|
|
377
|
+
"Much faster than ateam_build_and_run for connector-only changes.",
|
|
378
|
+
inputSchema: {
|
|
379
|
+
type: "object",
|
|
380
|
+
properties: {
|
|
381
|
+
solution_id: {
|
|
382
|
+
type: "string",
|
|
383
|
+
description: "The solution ID",
|
|
384
|
+
},
|
|
385
|
+
connector_id: {
|
|
386
|
+
type: "string",
|
|
387
|
+
description: "The connector ID to upload (e.g. 'personal-assistant-ui-mcp')",
|
|
388
|
+
},
|
|
389
|
+
github: {
|
|
390
|
+
type: "boolean",
|
|
391
|
+
description: "If true, pull connector files from GitHub repo. Default: false.",
|
|
392
|
+
},
|
|
393
|
+
files: {
|
|
394
|
+
type: "array",
|
|
395
|
+
items: {
|
|
396
|
+
type: "object",
|
|
397
|
+
properties: {
|
|
398
|
+
path: { type: "string", description: "Relative file path (e.g. 'server.js', 'ui-dist/panel/1.0.0/index.html')" },
|
|
399
|
+
content: { type: "string", description: "File content" },
|
|
400
|
+
},
|
|
401
|
+
required: ["path", "content"],
|
|
402
|
+
},
|
|
403
|
+
description: "Files to upload. Alternative to github=true.",
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
required: ["solution_id", "connector_id"],
|
|
407
|
+
},
|
|
408
|
+
},
|
|
409
|
+
|
|
370
410
|
// ═══════════════════════════════════════════════════════════════════
|
|
371
411
|
// ADVANCED TOOLS — hidden from tools/list, still callable by name
|
|
372
412
|
// Use these for manual lifecycle control, debugging, and diagnostics
|
|
@@ -987,6 +1027,7 @@ const TENANT_TOOLS = new Set([
|
|
|
987
1027
|
"ateam_redeploy",
|
|
988
1028
|
"ateam_delete_solution",
|
|
989
1029
|
"ateam_delete_connector",
|
|
1030
|
+
"ateam_upload_connector",
|
|
990
1031
|
"ateam_solution_chat",
|
|
991
1032
|
// Read operations (tenant-specific data)
|
|
992
1033
|
"ateam_list_solutions",
|
|
@@ -1038,15 +1079,24 @@ const handlers = {
|
|
|
1038
1079
|
{ name: "Enterprise Compliance Platform", description: "Approval flows, audit logs, policy enforcement" },
|
|
1039
1080
|
],
|
|
1040
1081
|
developer_loop: {
|
|
1041
|
-
_note: "This is the recommended build loop.
|
|
1082
|
+
_note: "This is the recommended build loop. 6 steps from definition to running skill with GitHub version control.",
|
|
1042
1083
|
steps: [
|
|
1043
1084
|
{ step: 1, action: "Learn", description: "Get the spec and study examples", tools: ["ateam_get_spec", "ateam_get_examples"] },
|
|
1044
1085
|
{ step: 2, action: "Build & Run", description: "Define your solution + skills + connector code, then validate, deploy, and health-check in one call. Include mcp_store with connector source code on the first deploy.", tools: ["ateam_build_and_run"] },
|
|
1045
|
-
{ step: 3, action: "Version", description: "Every deploy auto-pushes to GitHub. The repo (tenant--solution-id) is the source of truth for connector code.", tools: ["ateam_github_status", "ateam_github_log"] },
|
|
1046
|
-
{ step: 4, action: "Iterate", description: "Edit connector code via ateam_github_patch, then redeploy with ateam_build_and_run(github:true). For skill definition changes (
|
|
1086
|
+
{ step: 3, action: "Version", description: "Every deploy auto-pushes to the 'dev' branch on GitHub. The repo (tenant--solution-id) is the source of truth for connector code.", tools: ["ateam_github_status", "ateam_github_log"] },
|
|
1087
|
+
{ step: 4, action: "Iterate", description: "Edit connector code via ateam_github_patch (commits to dev), then redeploy with ateam_build_and_run(github:true). For skill definition changes, use ateam_patch (also pushes to dev).", tools: ["ateam_github_patch", "ateam_build_and_run", "ateam_patch"] },
|
|
1047
1088
|
{ step: 5, action: "Test & Debug", description: "Test the decision pipeline or full execution, then diagnose with logs and metrics. For voice-enabled solutions, use ateam_test_voice to simulate phone conversations.", tools: ["ateam_test_pipeline", "ateam_test_skill", "ateam_test_voice", "ateam_get_execution_logs", "ateam_get_metrics"] },
|
|
1089
|
+
{ step: 6, action: "Promote", description: "When stable, promote the dev branch to main (production). This creates a production tag and merges dev → main.", tools: ["ateam_github_promote"] },
|
|
1048
1090
|
],
|
|
1049
1091
|
},
|
|
1092
|
+
branching: {
|
|
1093
|
+
_important: "ALL changes go to the 'dev' branch. The 'main' branch is production — only updated via explicit promote.",
|
|
1094
|
+
dev: "Staging branch. Every build_and_run, patch, and github_patch commits here automatically.",
|
|
1095
|
+
main: "Production branch. Updated ONLY via ateam_github_promote(). First deploy also pushes to main as baseline.",
|
|
1096
|
+
workflow: "Build → iterate on dev → test → promote to main when stable.",
|
|
1097
|
+
promote: "ateam_github_promote(solution_id) — merges latest dev tag to main, creates prod tag.",
|
|
1098
|
+
rollback: "ateam_github_rollback(solution_id) — reverts main to previous production tag.",
|
|
1099
|
+
},
|
|
1050
1100
|
first_questions: [
|
|
1051
1101
|
{ id: "goal", question: "What do you want your Team to accomplish?", type: "text" },
|
|
1052
1102
|
{ id: "domain", question: "Which domain fits best?", type: "enum", options: ["ecommerce", "logistics", "enterprise_ops", "other"] },
|
|
@@ -1054,24 +1104,31 @@ const handlers = {
|
|
|
1054
1104
|
{ id: "security", question: "What environment constraints?", type: "enum", options: ["sandbox", "controlled", "regulated"] },
|
|
1055
1105
|
],
|
|
1056
1106
|
github_tools: {
|
|
1057
|
-
_note: "Version control for solutions.
|
|
1058
|
-
tools: ["ateam_github_push", "ateam_github_pull", "ateam_github_status", "ateam_github_read", "ateam_github_patch", "ateam_github_log"],
|
|
1107
|
+
_note: "Version control for solutions. ALL operations target the 'dev' branch. Promote to 'main' (production) explicitly.",
|
|
1108
|
+
tools: ["ateam_github_push", "ateam_github_pull", "ateam_github_status", "ateam_github_read", "ateam_github_patch", "ateam_github_log", "ateam_github_promote", "ateam_github_rollback"],
|
|
1059
1109
|
repo_structure: {
|
|
1060
1110
|
"solution.json": "Full solution definition",
|
|
1061
1111
|
"skills/{skill-id}/skill.json": "Individual skill definitions",
|
|
1062
1112
|
"connectors/{connector-id}/server.js": "Connector MCP server code",
|
|
1063
1113
|
"connectors/{connector-id}/package.json": "Connector dependencies",
|
|
1064
1114
|
},
|
|
1115
|
+
branches: {
|
|
1116
|
+
dev: "All changes land here (auto-push on build/patch). This is the working branch.",
|
|
1117
|
+
main: "Production snapshot. Only updated via ateam_github_promote(). Safe rollback target.",
|
|
1118
|
+
},
|
|
1065
1119
|
iteration_workflow: {
|
|
1066
|
-
code_changes: "ateam_github_patch (
|
|
1067
|
-
definition_changes: "ateam_patch (
|
|
1068
|
-
first_deploy: "Must include mcp_store — this creates the GitHub repo",
|
|
1120
|
+
code_changes: "ateam_github_patch (commits to dev) → ateam_build_and_run(github:true) (pulls from dev, redeploys)",
|
|
1121
|
+
definition_changes: "ateam_patch (updates + redeploys + auto-pushes to dev)",
|
|
1122
|
+
first_deploy: "Must include mcp_store — this creates the GitHub repo with both dev and main branches",
|
|
1123
|
+
promote: "ateam_github_promote(solution_id) — when solution is stable, merge dev → main",
|
|
1069
1124
|
},
|
|
1070
1125
|
when_to_use_what: {
|
|
1071
|
-
ateam_github_patch: "Edit connector source code (server.js, utils, package.json, UI assets)",
|
|
1072
|
-
ateam_patch: "Edit skill definitions (intents, tools, policy)
|
|
1073
|
-
"ateam_build_and_run(github:true)": "Redeploy solution pulling latest connector code from
|
|
1126
|
+
ateam_github_patch: "Edit connector source code on dev branch (server.js, utils, package.json, UI assets)",
|
|
1127
|
+
ateam_patch: "Edit skill definitions (intents, tools, policy) — auto-pushes to dev",
|
|
1128
|
+
"ateam_build_and_run(github:true)": "Redeploy solution pulling latest connector code from dev branch",
|
|
1074
1129
|
"ateam_build_and_run(mcp_store)": "First deploy or when you want to pass connector code inline",
|
|
1130
|
+
ateam_github_promote: "Promote dev → main when stable (creates production tag)",
|
|
1131
|
+
ateam_github_rollback: "Revert main to previous production tag",
|
|
1075
1132
|
},
|
|
1076
1133
|
},
|
|
1077
1134
|
advanced_tools: {
|
|
@@ -1116,12 +1173,15 @@ const handlers = {
|
|
|
1116
1173
|
"Use ateam_github_patch + ateam_build_and_run(github:true) for connector code changes after first deploy",
|
|
1117
1174
|
"Study the connector example (ateam_get_examples type='connector') before writing connector code",
|
|
1118
1175
|
"Ask discovery questions if goal unclear",
|
|
1176
|
+
"ALL changes go to the dev branch — remind user to ateam_github_promote() when ready for production",
|
|
1177
|
+
"After every build/patch, tell the user: 'Deployed to Core ✅ | Pushed to dev branch | Promote to main: ateam_github_promote()'",
|
|
1119
1178
|
],
|
|
1120
1179
|
never: [
|
|
1121
1180
|
"Call validate + deploy + health separately when ateam_build_and_run does it in one step",
|
|
1122
1181
|
"Call update + redeploy separately when ateam_patch does it in one step",
|
|
1123
1182
|
"Dump raw spec unless requested",
|
|
1124
1183
|
"Write connector code that starts a web server — connectors MUST use stdio transport",
|
|
1184
|
+
"Assume changes are on main — they are always on dev until explicitly promoted",
|
|
1125
1185
|
],
|
|
1126
1186
|
},
|
|
1127
1187
|
}),
|
|
@@ -1345,6 +1405,7 @@ const handlers = {
|
|
|
1345
1405
|
return {
|
|
1346
1406
|
ok: true,
|
|
1347
1407
|
solution_id: solution.id,
|
|
1408
|
+
branch: 'dev',
|
|
1348
1409
|
phases,
|
|
1349
1410
|
deploy: {
|
|
1350
1411
|
skills_deployed: deploy.import?.skills || [],
|
|
@@ -1356,6 +1417,8 @@ const handlers = {
|
|
|
1356
1417
|
...(test_result && { test_result }),
|
|
1357
1418
|
...(github_result && !github_result.error && !github_result.skipped && { github: github_result }),
|
|
1358
1419
|
...(validation.warnings?.length > 0 && { validation_warnings: validation.warnings }),
|
|
1420
|
+
_status: '✅ Deployed to Core + pushed to dev branch.',
|
|
1421
|
+
_next: 'To promote to production (main branch): ateam_github_promote(solution_id)',
|
|
1359
1422
|
};
|
|
1360
1423
|
},
|
|
1361
1424
|
|
|
@@ -1422,13 +1485,32 @@ const handlers = {
|
|
|
1422
1485
|
}
|
|
1423
1486
|
}
|
|
1424
1487
|
|
|
1488
|
+
// Phase 4: Auto-push to dev branch (non-blocking)
|
|
1489
|
+
let github_result;
|
|
1490
|
+
try {
|
|
1491
|
+
github_result = await post(
|
|
1492
|
+
`/deploy/solutions/${solution_id}/github/push`,
|
|
1493
|
+
{ message: `Patch: ${target}${skill_id ? ` ${skill_id}` : ''} — ${Object.keys(updates || {}).join(', ')}` },
|
|
1494
|
+
sid,
|
|
1495
|
+
{ timeoutMs: 60_000 },
|
|
1496
|
+
);
|
|
1497
|
+
phases.push({ phase: 'github', status: github_result.skipped ? 'skipped' : 'done' });
|
|
1498
|
+
} catch (err) {
|
|
1499
|
+
github_result = { error: err.message };
|
|
1500
|
+
phases.push({ phase: 'github', status: 'error', error: err.message });
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1425
1503
|
return {
|
|
1426
1504
|
ok: true,
|
|
1427
1505
|
solution_id,
|
|
1506
|
+
branch: 'dev',
|
|
1428
1507
|
phases,
|
|
1429
1508
|
patch: patchResult,
|
|
1430
1509
|
redeploy: redeployResult,
|
|
1431
1510
|
...(test_result && { test_result }),
|
|
1511
|
+
...(github_result && !github_result.error && !github_result.skipped && { github: github_result }),
|
|
1512
|
+
_status: '✅ Patched + redeployed + pushed to dev branch.',
|
|
1513
|
+
_next: 'To promote to production (main branch): ateam_github_promote(solution_id)',
|
|
1432
1514
|
};
|
|
1433
1515
|
},
|
|
1434
1516
|
|
|
@@ -1589,6 +1671,14 @@ const handlers = {
|
|
|
1589
1671
|
ateam_delete_connector: async ({ solution_id, connector_id }, sid) =>
|
|
1590
1672
|
del(`/deploy/solutions/${solution_id}/connectors/${connector_id}`, sid),
|
|
1591
1673
|
|
|
1674
|
+
ateam_upload_connector: async ({ solution_id, connector_id, github, files }, sid) =>
|
|
1675
|
+
post(
|
|
1676
|
+
`/deploy/solutions/${solution_id}/connectors/${connector_id}/upload`,
|
|
1677
|
+
{ github, files },
|
|
1678
|
+
sid,
|
|
1679
|
+
{ timeoutMs: 300_000, retries: 1 },
|
|
1680
|
+
),
|
|
1681
|
+
|
|
1592
1682
|
ateam_redeploy: async ({ solution_id, skill_id }, sid) => {
|
|
1593
1683
|
const endpoint = skill_id
|
|
1594
1684
|
? `/deploy/solutions/${solution_id}/skills/${skill_id}/redeploy`
|