@ateam-ai/mcp 0.4.57 → 0.4.59
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/api.js +10 -1
- package/src/tools.js +15 -2
package/package.json
CHANGED
package/src/api.js
CHANGED
|
@@ -460,7 +460,16 @@ function formatError(method, path, status, body, baseUrl) {
|
|
|
460
460
|
].join("\n");
|
|
461
461
|
}
|
|
462
462
|
|
|
463
|
-
|
|
463
|
+
// A GENERIC HINT MUST NOT CONTRADICT A SPECIFIC ONE. When the body already
|
|
464
|
+
// carries its own `code` + `hint`, the endpoint has diagnosed the failure
|
|
465
|
+
// precisely — appending the status-level guess produces two hints pointing
|
|
466
|
+
// opposite ways, and the reader follows the wrong one. Observed 2026-08-21
|
|
467
|
+
// (job_aehopl8z): a patch whose search string did not match came back with
|
|
468
|
+
// the endpoint's correct "re-read the file and copy the exact bytes"
|
|
469
|
+
// followed by "Check the solution_id … use ateam_list_solutions", and the
|
|
470
|
+
// agent went hunting for a missing solution three times.
|
|
471
|
+
const hasSpecificHint = /"code"\s*:/.test(bodyStr) && /"hint"\s*:/.test(bodyStr);
|
|
472
|
+
const hint = hasSpecificHint ? "" : (hints[status] || "");
|
|
464
473
|
// A JSON error body used to be dropped entirely — only a string body became
|
|
465
474
|
// `detail`. So an endpoint that answers 4xx WITH the diagnosis (ui.surfaceProbe
|
|
466
475
|
// returns 422 + the failures that explain why the surface is broken) reached
|
package/src/tools.js
CHANGED
|
@@ -512,6 +512,19 @@ export const tools = [
|
|
|
512
512
|
{
|
|
513
513
|
name: "ateam_design_advisor",
|
|
514
514
|
core: true,
|
|
515
|
+
// MEASURED, not estimated. 6 successful calls against dev on 2026-08-21,
|
|
516
|
+
// distinct goals, spaced to avoid provider rate-limiting:
|
|
517
|
+
// 19048 21123 23359 23739 24462 24699 ms (median 23.7s, max 24.7s)
|
|
518
|
+
// It is ONE LLM call over the capability catalog, so the cost is provider
|
|
519
|
+
// latency and there is no meaningful warm path to under-report.
|
|
520
|
+
//
|
|
521
|
+
// WHY IT MATTERS: Core derives its timeout from this (p95 x 4, floored at
|
|
522
|
+
// 30s). Undeclared, the advisor sat under a 30s default while taking ~25s —
|
|
523
|
+
// one bad provider spike from failing, and it failed exactly that way on
|
|
524
|
+
// 2026-08-21 ("HTTP connector timeout after 30000ms"). It is also the FIRST
|
|
525
|
+
// call a building agent makes and it carries the storage decision, so when
|
|
526
|
+
// it times out the run proceeds with no capability guidance at all.
|
|
527
|
+
monitoring: { safe: true, cost: "normal", latency_ms_p95: 25000, output: "bounded" },
|
|
515
528
|
description:
|
|
516
529
|
"CONSULT THIS DURING DESIGN — before and while you design a skill/solution. Describe what you're building; it returns POINTERS to the platform capabilities that fit (per-actor storage, widgets, triggers, sub-agents, mobile data, run-scripts, multi-skill, GitHub, …), each with the /spec topic to read next (via ateam_get_spec) and the tool to wire it. Also returns 'missing' hints (capabilities your goal implies but the design hasn't wired) and lifecycle hints (e.g. connect GitHub when the project will iterate). ADVISORY ONLY — you decide and own the design. Stateless: pass the current design_state each call; consult it as often as you like as the design evolves.",
|
|
517
530
|
inputSchema: {
|
|
@@ -5060,7 +5073,7 @@ const handlers = {
|
|
|
5060
5073
|
if (!tool) throw new Error("tool required — the tool that misled you");
|
|
5061
5074
|
if (!error) throw new Error("error required — quote it VERBATIM, do not paraphrase");
|
|
5062
5075
|
return await post(
|
|
5063
|
-
`/solutions/${solution_id}/lessons`,
|
|
5076
|
+
`/deploy/solutions/${solution_id}/lessons`,
|
|
5064
5077
|
{ tool, error, workaround, worked, kind },
|
|
5065
5078
|
sid,
|
|
5066
5079
|
);
|
|
@@ -5069,7 +5082,7 @@ const handlers = {
|
|
|
5069
5082
|
ateam_get_lessons: async ({ solution_id, limit }, sid) => {
|
|
5070
5083
|
if (!solution_id) throw new Error("solution_id required");
|
|
5071
5084
|
const qs = Number.isFinite(limit) ? `?limit=${limit}` : "";
|
|
5072
|
-
return await get(`/solutions/${solution_id}/lessons${qs}`, sid);
|
|
5085
|
+
return await get(`/deploy/solutions/${solution_id}/lessons${qs}`, sid);
|
|
5073
5086
|
},
|
|
5074
5087
|
|
|
5075
5088
|
ateam_show_solution_minimal: async ({ solution_id }, sid) => {
|