@ateam-ai/mcp 0.3.2 → 0.3.4

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/tools.js +57 -19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ateam-ai/mcp",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
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",
package/src/tools.js CHANGED
@@ -872,14 +872,14 @@ export const tools = [
872
872
  },
873
873
 
874
874
  // ═══════════════════════════════════════════════════════════════════
875
- // RELEASE MANAGEMENT — promote, rollback, version listing
875
+ // RELEASE MANAGEMENT — checkpoint, rollback, version listing
876
876
  // ═══════════════════════════════════════════════════════════════════
877
877
 
878
878
  {
879
879
  name: "ateam_github_promote",
880
880
  core: true,
881
881
  description:
882
- "Promote a dev version to main (production). By default promotes the latest dev tag. Optionally specify a specific dev tag to promote. Creates a prod-YYYY-MM-DD-NNN tag on main.",
882
+ "Create a checkpoint (safe point) on the current main branch. Tags the current state with safe-YYYY-MM-DD-NNN so you can rollback to it later. Use this before risky changes or when the solution is in a known-good state.",
883
883
  inputSchema: {
884
884
  type: "object",
885
885
  properties: {
@@ -887,9 +887,9 @@ export const tools = [
887
887
  type: "string",
888
888
  description: "The solution ID",
889
889
  },
890
- tag: {
890
+ label: {
891
891
  type: "string",
892
- description: "Optional: specific dev tag to promote (e.g., 'dev-2026-03-11-005'). If omitted, promotes the latest dev tag.",
892
+ description: "Optional: human-readable label for this checkpoint (e.g., 'before refactor', 'v2 stable')",
893
893
  },
894
894
  },
895
895
  required: ["solution_id"],
@@ -899,7 +899,7 @@ export const tools = [
899
899
  name: "ateam_github_rollback",
900
900
  core: true,
901
901
  description:
902
- "Rollback main (production) to a previous production tag. Resets main branch to the specified prod tag commit. ⚠️ DESTRUCTIVE — use with caution. Use ateam_github_list_versions to find available production tags first.",
902
+ "Rollback main branch to a previous checkpoint (safe-* tag). Resets main to the specified checkpoint commit. ⚠️ DESTRUCTIVE — use with caution. Use ateam_github_list_versions to find available checkpoints first.",
903
903
  inputSchema: {
904
904
  type: "object",
905
905
  properties: {
@@ -909,7 +909,7 @@ export const tools = [
909
909
  },
910
910
  tag: {
911
911
  type: "string",
912
- description: "Required: production tag to rollback to (e.g., 'prod-2026-03-10-001')",
912
+ description: "Required: checkpoint tag to rollback to (e.g., 'safe-2026-03-11-001')",
913
913
  },
914
914
  },
915
915
  required: ["solution_id", "tag"],
@@ -919,7 +919,7 @@ export const tools = [
919
919
  name: "ateam_github_list_versions",
920
920
  core: true,
921
921
  description:
922
- "List all available dev version tags for a solution. Shows tag name, date, counter, and commit SHA. Use before promoting to see what's available.",
922
+ "List all available checkpoints (safe-* tags) for a solution. Shows tag name, date, counter, and commit SHA. Use before rollback to see available safe points.",
923
923
  inputSchema: {
924
924
  type: "object",
925
925
  properties: {
@@ -1079,15 +1079,23 @@ const handlers = {
1079
1079
  { name: "Enterprise Compliance Platform", description: "Approval flows, audit logs, policy enforcement" },
1080
1080
  ],
1081
1081
  developer_loop: {
1082
- _note: "This is the recommended build loop. 5 steps from definition to running skill with GitHub version control.",
1082
+ _note: "This is the recommended build loop. 6 steps from definition to running skill with GitHub version control.",
1083
1083
  steps: [
1084
1084
  { step: 1, action: "Learn", description: "Get the spec and study examples", tools: ["ateam_get_spec", "ateam_get_examples"] },
1085
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"] },
1086
- { 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"] },
1087
- { 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 (intents, tools, policy), use ateam_patch.", tools: ["ateam_github_patch", "ateam_build_and_run", "ateam_patch"] },
1086
+ { step: 3, action: "Version", description: "Every deploy auto-pushes to main 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 main), then redeploy with ateam_build_and_run(github:true). For skill definition changes, use ateam_patch (also pushes to main).", tools: ["ateam_github_patch", "ateam_build_and_run", "ateam_patch"] },
1088
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: "Checkpoint", description: "When solution is in a good state, create a checkpoint (safe point). You can rollback to any checkpoint if something breaks.", tools: ["ateam_github_promote", "ateam_github_list_versions"] },
1089
1090
  ],
1090
1091
  },
1092
+ branching: {
1093
+ _important: "Single-branch model: ALL changes go directly to 'main'. Use checkpoints (safe-* tags) as safe rollback points.",
1094
+ main: "The only branch. All deploys, patches, and github_patches commit here automatically. This IS the live running system.",
1095
+ checkpoints: "ateam_github_promote(solution_id) — creates a safe-YYYY-MM-DD-NNN tag on current main HEAD. Use before risky changes.",
1096
+ rollback: "ateam_github_rollback(solution_id, tag) — reverts main to a previous checkpoint tag.",
1097
+ workflow: "Build → iterate on main → test → checkpoint when stable → continue iterating.",
1098
+ },
1091
1099
  first_questions: [
1092
1100
  { id: "goal", question: "What do you want your Team to accomplish?", type: "text" },
1093
1101
  { id: "domain", question: "Which domain fits best?", type: "enum", options: ["ecommerce", "logistics", "enterprise_ops", "other"] },
@@ -1095,24 +1103,29 @@ const handlers = {
1095
1103
  { id: "security", question: "What environment constraints?", type: "enum", options: ["sandbox", "controlled", "regulated"] },
1096
1104
  ],
1097
1105
  github_tools: {
1098
- _note: "Version control for solutions. Every deploy auto-pushes to GitHub. The repo is the source of truth for connector code.",
1099
- tools: ["ateam_github_push", "ateam_github_pull", "ateam_github_status", "ateam_github_read", "ateam_github_patch", "ateam_github_log"],
1106
+ _note: "Version control for solutions. Single-branch model everything on 'main'. Use checkpoints as safe rollback points.",
1107
+ 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", "ateam_github_list_versions"],
1100
1108
  repo_structure: {
1101
1109
  "solution.json": "Full solution definition",
1102
1110
  "skills/{skill-id}/skill.json": "Individual skill definitions",
1103
1111
  "connectors/{connector-id}/server.js": "Connector MCP server code",
1104
1112
  "connectors/{connector-id}/package.json": "Connector dependencies",
1105
1113
  },
1114
+ branch: "main — the only branch. All changes land here directly.",
1115
+ checkpoints: "safe-YYYY-MM-DD-NNN tags mark safe rollback points. Create with ateam_github_promote().",
1106
1116
  iteration_workflow: {
1107
- code_changes: "ateam_github_patch (edit connector files) → ateam_build_and_run(github:true) (redeploy from repo)",
1108
- definition_changes: "ateam_patch (edit skill/solution definitions directly in Builder)",
1117
+ code_changes: "ateam_github_patch (commits to main) → ateam_build_and_run(github:true) (pulls from main, redeploys)",
1118
+ definition_changes: "ateam_patch (updates + redeploys + auto-pushes to main)",
1109
1119
  first_deploy: "Must include mcp_store — this creates the GitHub repo",
1120
+ checkpoint: "ateam_github_promote(solution_id) — tag current state as a safe rollback point",
1110
1121
  },
1111
1122
  when_to_use_what: {
1112
- ateam_github_patch: "Edit connector source code (server.js, utils, package.json, UI assets)",
1113
- ateam_patch: "Edit skill definitions (intents, tools, policy) or solution definitions (grants, handoffs, routing)",
1114
- "ateam_build_and_run(github:true)": "Redeploy solution pulling latest connector code from GitHub",
1123
+ ateam_github_patch: "Edit connector source code on main (server.js, utils, package.json, UI assets)",
1124
+ ateam_patch: "Edit skill definitions (intents, tools, policy) auto-pushes to main",
1125
+ "ateam_build_and_run(github:true)": "Redeploy solution pulling latest connector code from main",
1115
1126
  "ateam_build_and_run(mcp_store)": "First deploy or when you want to pass connector code inline",
1127
+ ateam_github_promote: "Create a checkpoint (safe-* tag) — use before risky changes",
1128
+ ateam_github_rollback: "Revert main to a previous checkpoint",
1116
1129
  },
1117
1130
  },
1118
1131
  advanced_tools: {
@@ -1157,12 +1170,15 @@ const handlers = {
1157
1170
  "Use ateam_github_patch + ateam_build_and_run(github:true) for connector code changes after first deploy",
1158
1171
  "Study the connector example (ateam_get_examples type='connector') before writing connector code",
1159
1172
  "Ask discovery questions if goal unclear",
1173
+ "ALL changes go directly to main — suggest ateam_github_promote() to create a checkpoint before risky changes",
1174
+ "After every build/patch, tell the user: 'Deployed to Core ✅ | Pushed to main | Create checkpoint: ateam_github_promote(solution_id)'",
1160
1175
  ],
1161
1176
  never: [
1162
1177
  "Call validate + deploy + health separately when ateam_build_and_run does it in one step",
1163
1178
  "Call update + redeploy separately when ateam_patch does it in one step",
1164
1179
  "Dump raw spec unless requested",
1165
1180
  "Write connector code that starts a web server — connectors MUST use stdio transport",
1181
+ "Mention dev branch — there is no dev branch, everything is on main",
1166
1182
  ],
1167
1183
  },
1168
1184
  }),
@@ -1386,6 +1402,7 @@ const handlers = {
1386
1402
  return {
1387
1403
  ok: true,
1388
1404
  solution_id: solution.id,
1405
+ branch: 'main',
1389
1406
  phases,
1390
1407
  deploy: {
1391
1408
  skills_deployed: deploy.import?.skills || [],
@@ -1397,6 +1414,8 @@ const handlers = {
1397
1414
  ...(test_result && { test_result }),
1398
1415
  ...(github_result && !github_result.error && !github_result.skipped && { github: github_result }),
1399
1416
  ...(validation.warnings?.length > 0 && { validation_warnings: validation.warnings }),
1417
+ _status: '✅ Deployed to Core + pushed to main.',
1418
+ _next: 'Create a checkpoint before making more changes: ateam_github_promote(solution_id)',
1400
1419
  };
1401
1420
  },
1402
1421
 
@@ -1463,13 +1482,32 @@ const handlers = {
1463
1482
  }
1464
1483
  }
1465
1484
 
1485
+ // Phase 4: Auto-push to main branch (non-blocking)
1486
+ let github_result;
1487
+ try {
1488
+ github_result = await post(
1489
+ `/deploy/solutions/${solution_id}/github/push`,
1490
+ { message: `Patch: ${target}${skill_id ? ` ${skill_id}` : ''} — ${Object.keys(updates || {}).join(', ')}` },
1491
+ sid,
1492
+ { timeoutMs: 60_000 },
1493
+ );
1494
+ phases.push({ phase: 'github', status: github_result.skipped ? 'skipped' : 'done' });
1495
+ } catch (err) {
1496
+ github_result = { error: err.message };
1497
+ phases.push({ phase: 'github', status: 'error', error: err.message });
1498
+ }
1499
+
1466
1500
  return {
1467
1501
  ok: true,
1468
1502
  solution_id,
1503
+ branch: 'main',
1469
1504
  phases,
1470
1505
  patch: patchResult,
1471
1506
  redeploy: redeployResult,
1472
1507
  ...(test_result && { test_result }),
1508
+ ...(github_result && !github_result.error && !github_result.skipped && { github: github_result }),
1509
+ _status: '✅ Patched + redeployed + pushed to main.',
1510
+ _next: 'Create a checkpoint before making more changes: ateam_github_promote(solution_id)',
1473
1511
  };
1474
1512
  },
1475
1513
 
@@ -1615,8 +1653,8 @@ const handlers = {
1615
1653
  return get(`/deploy/solutions/${solution_id}/github/log${qs}`, sid);
1616
1654
  },
1617
1655
 
1618
- ateam_github_promote: async ({ solution_id, tag }, sid) =>
1619
- post(`/deploy/solutions/${solution_id}/promote`, tag ? { tag } : {}, sid),
1656
+ ateam_github_promote: async ({ solution_id, label }, sid) =>
1657
+ post(`/deploy/solutions/${solution_id}/promote`, label ? { label } : {}, sid),
1620
1658
 
1621
1659
  ateam_github_rollback: async ({ solution_id, tag }, sid) =>
1622
1660
  post(`/deploy/solutions/${solution_id}/rollback`, { tag }, sid),