fetchsandbox-mcp 0.3.10 → 0.3.11

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/dist/client.js CHANGED
@@ -29,7 +29,7 @@ export function getBaseUrl() {
29
29
  function buildHeaders(extra) {
30
30
  const ide = detectIde();
31
31
  const headers = {
32
- "user-agent": `fetchsandbox-mcp/0.3.10 (node ${process.version}; ide=${ide})`,
32
+ "user-agent": `fetchsandbox-mcp/0.3.11 (node ${process.version}; ide=${ide})`,
33
33
  accept: "application/json",
34
34
  ...(extra ?? {}),
35
35
  };
package/dist/index.js CHANGED
@@ -29,7 +29,7 @@ import { guideTool, runGuide } from "./tools/guide.js";
29
29
  import { coachTool, runCoach } from "./tools/coach.js";
30
30
  import { verifyBehaviorTool, runVerifyBehavior } from "./tools/verify_behavior.js";
31
31
  import { quickrunTool, runQuickrun } from "./tools/quickrun.js";
32
- const VERSION = "0.3.10";
32
+ const VERSION = "0.3.11";
33
33
  const server = new Server({ name: "fetchsandbox", version: VERSION }, { capabilities: { tools: {} } });
34
34
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
35
35
  tools: [
@@ -30,7 +30,8 @@ export interface NormalizedVerifyResult {
30
30
  name?: string;
31
31
  buggy_status?: number;
32
32
  fixed_status?: number;
33
- diff_observed: boolean;
33
+ matched_expectation: boolean;
34
+ divergent: boolean;
34
35
  verdict?: string;
35
36
  }>;
36
37
  duration_ms?: number;
@@ -52,19 +52,32 @@ export async function runVerifyBehavior(input) {
52
52
  if (input.flow_run_id)
53
53
  body.flow_run_id = input.flow_run_id;
54
54
  const raw = await postJson("/api/mcp/verify_behavior", body);
55
- const probes = (raw.probes ?? []).map((p) => ({
56
- name: p.name,
57
- buggy_status: p.buggy_response?.status,
58
- fixed_status: p.fixed_response?.status,
59
- diff_observed: p.expected_diff_observed ?? false,
60
- verdict: p.verdict,
61
- }));
55
+ const probes = (raw.probes ?? []).map((p) => {
56
+ const buggy_status = p.buggy_response?.status;
57
+ const fixed_status = p.fixed_response?.status;
58
+ return {
59
+ name: p.name,
60
+ buggy_status,
61
+ fixed_status,
62
+ matched_expectation: p.expected_diff_observed ?? false,
63
+ divergent: typeof buggy_status === "number" &&
64
+ typeof fixed_status === "number" &&
65
+ buggy_status !== fixed_status,
66
+ verdict: p.verdict,
67
+ };
68
+ });
62
69
  return {
63
70
  pattern_id: raw.pattern_id,
64
71
  mode: raw.mode,
65
72
  // Full response bodies live on the receipt; the tool returns the verdict-
66
73
  // level diff so the agent's transcript stays small.
67
- confirmed: probes.length > 0 && probes.every((p) => p.diff_observed),
74
+ // Confirmed = every probe met its expectation AND the pattern actually
75
+ // manifested a behavioral difference somewhere. A run of only sanity
76
+ // probes (buggy == fixed everywhere) matches expectations but proves
77
+ // nothing, so it must NOT count as a confirmation.
78
+ confirmed: probes.length > 0 &&
79
+ probes.every((p) => p.matched_expectation) &&
80
+ probes.some((p) => p.divergent),
68
81
  disclaimer: raw.disclaimer,
69
82
  probes,
70
83
  duration_ms: raw.duration_ms,
@@ -1 +1 @@
1
- {"version":3,"file":"verify_behavior.js","sourceRoot":"","sources":["../../src/tools/verify_behavior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA4DnD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,kEAAkE;QAClE,wEAAwE;QACxE,wEAAwE;QACxE,4EAA4E;QAC5E,sEAAsE;IACxE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,iEAAiE;oBACjE,gEAAgE;aACnE;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,oEAAoE;oBACpE,qEAAqE;oBACrE,2CAA2C;aAC9C;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,oEAAoE;oBACpE,mCAAmC;aACtC;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,gEAAgE;oBAChE,qEAAqE;aACxE;SACF;QACD,QAAQ,EAAE,CAAC,gBAAgB,CAAC;QAC5B,oBAAoB,EAAE,KAAK;KAC5B;CACO,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA0B;IAE1B,IAAI,CAAC,KAAK,CAAC,cAAc;QAAE,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAC9E,MAAM,IAAI,GAA4B,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;IAC/E,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3E,IAAI,KAAK,CAAC,UAAU;QAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACzD,IAAI,KAAK,CAAC,WAAW;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAE5D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAwB,0BAA0B,EAAE,IAAI,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,YAAY,EAAE,CAAC,CAAC,cAAc,EAAE,MAAM;QACtC,YAAY,EAAE,CAAC,CAAC,cAAc,EAAE,MAAM;QACtC,aAAa,EAAE,CAAC,CAAC,sBAAsB,IAAI,KAAK;QAChD,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,0EAA0E;QAC1E,oDAAoD;QACpD,SAAS,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACpE,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM;QACN,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"verify_behavior.js","sourceRoot":"","sources":["../../src/tools/verify_behavior.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fetchsandbox-mcp",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "mcpName": "io.github.fetchsandbox/mcp",
5
5
  "description": "Turn any OpenAPI spec into a working sandbox your AI agent can use. MCP server for Claude Code, Cursor, and any other MCP-compatible LLM IDE.",
6
6
  "license": "MIT",