@ateam-ai/mcp 0.4.75 → 0.4.76

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 +23 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ateam-ai/mcp",
3
- "version": "0.4.75",
3
+ "version": "0.4.76",
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
@@ -2241,6 +2241,24 @@ export const tools = [
2241
2241
  required: ["solution_id"],
2242
2242
  },
2243
2243
  },
2244
+ {
2245
+ name: "ateam_github_reconcile",
2246
+ core: true,
2247
+ description:
2248
+ "JOIN a diverged dev and main. Use when ateam_github_promote returns PROMOTE_NEEDS_HUMAN or PROMOTE_PRECONDITION_FAILED — i.e. the automatic main→dev back-merge could not resolve itself.\n\n" +
2249
+ "TRY sync_from_main FIRST; this tool calls it internally (a plain merge keeps both sides with no judgement call) and only escalates when git genuinely conflicts.\n\n" +
2250
+ "On conflict it writes a TWO-PARENT merge commit so the histories actually join. That matters: copying one branch's tree onto the other makes the contents match while leaving NO merge base, so the very next promote conflicts again — equal content is not a reconciled history.\n\n" +
2251
+ "Conflicting files are resolved per file, NEWEST WINS, and every decision is reported. Recency is a heuristic, not intent: read the decisions. On a real tenant main held the newer solution.json while dev held the newer widget, so a blanket choice would have reverted one of them.\n\n" +
2252
+ "WHO NEEDS THIS: any tenant whose deploys predate the dev-routing fix carries main-only commits the platform itself wrote, and hits this on its first promote afterwards. Pass dry_run:true to see the decisions before writing anything.",
2253
+ inputSchema: {
2254
+ type: "object",
2255
+ properties: {
2256
+ solution_id: { type: "string", description: "The solution ID" },
2257
+ dry_run: { type: "boolean", description: "Report the per-file decisions without writing the merge commit." },
2258
+ },
2259
+ required: ["solution_id"],
2260
+ },
2261
+ },
2244
2262
  {
2245
2263
  name: "ateam_github_sync_from_main",
2246
2264
  core: true,
@@ -5412,6 +5430,11 @@ const handlers = {
5412
5430
  ateam_github_promote: async ({ solution_id, label, dry_run, skip_tag }, sid) =>
5413
5431
  post(`/deploy/solutions/${solution_id}/promote`, { label, dry_run, skip_tag }, sid),
5414
5432
 
5433
+ ateam_github_reconcile: async ({ solution_id, dry_run }, sid) => {
5434
+ if (!solution_id) throw new Error("solution_id required");
5435
+ return await post(`/deploy/solutions/${solution_id}/reconcile`, { dry_run: dry_run === true }, sid);
5436
+ },
5437
+
5415
5438
  ateam_github_sync_from_main: async ({ solution_id, dry_run }, sid) =>
5416
5439
  post(`/deploy/solutions/${solution_id}/sync-from-main`, { dry_run }, sid),
5417
5440