@ateam-ai/mcp 0.4.33 → 0.4.35

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 +27 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ateam-ai/mcp",
3
- "version": "0.4.33",
3
+ "version": "0.4.35",
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
@@ -779,6 +779,10 @@ export const tools = [
779
779
  type: "string",
780
780
  description: "Optional: read a specific skill by ID (original or internal)",
781
781
  },
782
+ section: {
783
+ type: "string",
784
+ description: "Optional (with skill_id): return ONLY this section of the skill instead of the whole definition — avoids the ~50KB output truncation on big skills. Dotted paths work (e.g. 'role', 'tools', 'intents.supported', 'policy', 'engine'). Omit for the full skill; use ateam_show_skill_minimal for the slim authoring view.",
785
+ },
782
786
  },
783
787
  required: ["solution_id", "view"],
784
788
  },
@@ -3408,10 +3412,15 @@ const handlers = {
3408
3412
  skill_id,
3409
3413
  phases,
3410
3414
  _diff,
3411
- after_state: patched,
3415
+ // OPEN-8: the full after-state (a big skill/solution def) blows the ~50KB
3416
+ // output cap and truncates the rest of the result. Return a compact
3417
+ // summary by default; pass include_definition:true for the whole thing.
3418
+ ...(include_definition
3419
+ ? { after_state: patched }
3420
+ : { after_state_summary: _summarizeDef(patched) }),
3412
3421
  would_write,
3413
3422
  would_write_bytes: JSON.stringify(patched, null, 2).length,
3414
- hint: "No changes applied. Remove dry_run:true to commit + redeploy.",
3423
+ hint: "No changes applied. Remove dry_run:true to commit + redeploy. (Pass include_definition:true for the full after_state.)",
3415
3424
  };
3416
3425
  }
3417
3426
 
@@ -3663,9 +3672,23 @@ const handlers = {
3663
3672
  return { ...raw, solutions: enriched };
3664
3673
  },
3665
3674
 
3666
- ateam_get_solution: async ({ solution_id, view, skill_id }, sid) => {
3675
+ ateam_get_solution: async ({ solution_id, view, skill_id, section }, sid) => {
3667
3676
  const base = `/deploy/solutions/${solution_id}`;
3668
- if (skill_id) return get(`${base}/skills/${skill_id}`, sid);
3677
+ if (skill_id) {
3678
+ const r = await get(`${base}/skills/${skill_id}`, sid);
3679
+ // OPEN-8: a single skill def can be 50KB+ and truncate at the output cap.
3680
+ // `section` slices it to one field (dotted paths ok, e.g. intents.supported)
3681
+ // so agents can page a big skill instead of grepping a truncated file.
3682
+ if (section) {
3683
+ const skill = r?.skill || r?.definition || r || {};
3684
+ const val = String(section).split(".").reduce((o, k) => (o == null ? undefined : o[k]), skill);
3685
+ return {
3686
+ ok: true, solution_id, skill_id, section, [section]: val,
3687
+ _note: `Sliced to '${section}'. Omit 'section' for the full skill; ateam_show_skill_minimal gives the slim authoring view.`,
3688
+ };
3689
+ }
3690
+ return r;
3691
+ }
3669
3692
  const paths = {
3670
3693
  definition: `${base}/definition`,
3671
3694
  skills: `${base}/skills`,