@sema-agent/core 1.279.0 → 1.280.0
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/agents/subagent.d.ts +12 -0
- package/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +221 -19
- package/dist/agents/subagent.js.map +1 -1
- package/dist/bin/sema-tb.d.ts +10 -0
- package/dist/bin/sema-tb.d.ts.map +1 -1
- package/dist/bin/sema-tb.js +81 -10
- package/dist/bin/sema-tb.js.map +1 -1
- package/dist/core/background-shell.d.ts +2 -0
- package/dist/core/background-shell.d.ts.map +1 -1
- package/dist/core/background-shell.js.map +1 -1
- package/dist/core/context-guard.d.ts +2 -0
- package/dist/core/context-guard.d.ts.map +1 -1
- package/dist/core/context-guard.js +10 -0
- package/dist/core/context-guard.js.map +1 -1
- package/dist/core/mcp.d.ts +4 -0
- package/dist/core/mcp.d.ts.map +1 -1
- package/dist/core/mcp.js +189 -32
- package/dist/core/mcp.js.map +1 -1
- package/dist/core/runner/call-cap.d.ts +4 -0
- package/dist/core/runner/call-cap.d.ts.map +1 -1
- package/dist/core/runner/call-cap.js +15 -1
- package/dist/core/runner/call-cap.js.map +1 -1
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +5 -3
- package/dist/core/runner/prepare-task.js.map +1 -1
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +28 -20
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/session-reconcile.d.ts +1 -1
- package/dist/core/session-reconcile.d.ts.map +1 -1
- package/dist/core/session-reconcile.js +7 -2
- package/dist/core/session-reconcile.js.map +1 -1
- package/dist/core/task-notification.d.ts +2 -0
- package/dist/core/task-notification.d.ts.map +1 -1
- package/dist/core/task-notification.js.map +1 -1
- package/dist/core/task-registry.d.ts +1 -0
- package/dist/core/task-registry.d.ts.map +1 -1
- package/dist/core/task-registry.js +184 -55
- package/dist/core/task-registry.js.map +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/engine/execution-env/node-execution-env.d.ts.map +1 -1
- package/dist/engine/execution-env/node-execution-env.js +17 -0
- package/dist/engine/execution-env/node-execution-env.js.map +1 -1
- package/dist/engine/harness/types.d.ts.map +1 -1
- package/dist/engine/harness/types.js.map +1 -1
- package/dist/engine/loop/agent-loop.js +15 -5
- package/dist/engine/loop/agent-loop.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/orchestration/workflow.d.ts +19 -3
- package/dist/orchestration/workflow.d.ts.map +1 -1
- package/dist/orchestration/workflow.js +61 -11
- package/dist/orchestration/workflow.js.map +1 -1
- package/dist/tools/fs/index.d.ts +1 -0
- package/dist/tools/fs/index.d.ts.map +1 -1
- package/dist/tools/fs/index.js +137 -35
- package/dist/tools/fs/index.js.map +1 -1
- package/dist/tools/fs/pdf.d.ts +5 -0
- package/dist/tools/fs/pdf.d.ts.map +1 -1
- package/dist/tools/fs/pdf.js +58 -11
- package/dist/tools/fs/pdf.js.map +1 -1
- package/dist/tools/fs/safety.d.ts +1 -0
- package/dist/tools/fs/safety.d.ts.map +1 -1
- package/dist/tools/fs/safety.js +1 -0
- package/dist/tools/fs/safety.js.map +1 -1
- package/dist/tools/fs/search.d.ts +13 -0
- package/dist/tools/fs/search.d.ts.map +1 -1
- package/dist/tools/fs/search.js +58 -16
- package/dist/tools/fs/search.js.map +1 -1
- package/dist/tools/web.d.ts.map +1 -1
- package/dist/tools/web.js +141 -28
- package/dist/tools/web.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,8 @@ export interface BackgroundPoll {
|
|
|
18
18
|
truncated?: boolean;
|
|
19
19
|
bytesFromStart?: number;
|
|
20
20
|
bytesDroppedBeforeCursor?: number;
|
|
21
|
+
timedOut?: boolean;
|
|
22
|
+
timeoutSec?: number;
|
|
21
23
|
}
|
|
22
24
|
export interface BackgroundShellCapability {
|
|
23
25
|
readonly backgroundCapabilities: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-shell.d.ts","sourceRoot":"","sources":["../../src/core/background-shell.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAM5F,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAGnF,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAM/E,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,SAAS,GACT,IAAI,CAAC;AAGT,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,IAAI,EAAE,wBAAwB;IAEvC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAFf,IAAI,EAAE,wBAAwB,EACvC,OAAO,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,OAAO,YAAA;CAK3B;AAQD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC;AAG5G,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,qBAAqB,CAAC;IAE9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,wBAAwB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"background-shell.d.ts","sourceRoot":"","sources":["../../src/core/background-shell.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAM5F,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAGnF,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAM/E,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,SAAS,GACT,IAAI,CAAC;AAGT,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,IAAI,EAAE,wBAAwB;IAEvC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAFf,IAAI,EAAE,wBAAwB,EACvC,OAAO,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,OAAO,YAAA;CAK3B;AAQD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC;AAG5G,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,qBAAqB,CAAC;IAE9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAIlC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,yBAAyB;IAExC,QAAQ,CAAC,sBAAsB,EAAE;QAE/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;QAE5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAE/B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QAErC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QAGjC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAQlC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC;KAC9C,CAAC;IAMF,eAAe,CACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,iBAAiB,CAAA;KAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAQzE,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAGlG,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAYxF,uBAAuB,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1F;AAQD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,GAAG,IAAI,YAAY,GAAG,yBAAyB,CAWrG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-shell.js","sourceRoot":"","sources":["../../src/core/background-shell.ts"],"names":[],"mappings":"AAuCA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAElC;IAEA;IAHX,YACW,IAA8B,EACvC,OAAe,EACN,KAAe;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,SAAI,GAAJ,IAAI,CAA0B;QAE9B,UAAK,GAAL,KAAK,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"background-shell.js","sourceRoot":"","sources":["../../src/core/background-shell.ts"],"names":[],"mappings":"AAuCA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAElC;IAEA;IAHX,YACW,IAA8B,EACvC,OAAe,EACN,KAAe;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,SAAI,GAAJ,IAAI,CAA0B;QAE9B,UAAK,GAAL,KAAK,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AA0GD,MAAM,UAAU,kBAAkB,CAAC,GAAiB;IAClD,MAAM,CAAC,GAAG,GAAyC,CAAC;IACpD,OAAO,CACL,OAAO,CAAC,CAAC,eAAe,KAAK,UAAU;QACvC,OAAO,CAAC,CAAC,cAAc,KAAK,UAAU;QACtC,OAAO,CAAC,CAAC,cAAc,KAAK,UAAU;QACtC,OAAO,CAAC,CAAC,uBAAuB,KAAK,UAAU;QAC/C,OAAO,CAAC,CAAC,sBAAsB,KAAK,QAAQ;QAC5C,CAAC,CAAC,sBAAsB,KAAK,IAAI;QACjC,CAAC,CAAC,sBAAsB,CAAC,SAAS,KAAK,IAAI,CAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { AgentMessage } from "../internal/harness.js";
|
|
2
2
|
import type { Model } from "../internal/llm.js";
|
|
3
3
|
export declare function trimToBudget(messages: AgentMessage[], budgetTokens: number, anchoredTotalTokens?: number, charsPerToken?: number): AgentMessage[];
|
|
4
|
+
export declare const CONTEXT_TRIM_NOTICE: string;
|
|
5
|
+
export declare function insertTrimNotice(trimmed: AgentMessage[]): AgentMessage[];
|
|
4
6
|
export declare function dropOrphanToolResults(messages: AgentMessage[]): {
|
|
5
7
|
messages: AgentMessage[];
|
|
6
8
|
dropped: Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-guard.d.ts","sourceRoot":"","sources":["../../src/core/context-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA8BhD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,YAAY,EAAE,EACxB,YAAY,EAAE,MAAM,EACpB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,aAAa,CAAC,EAAE,MAAM,GACrB,YAAY,EAAE,CA4FhB;AAYD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG;IAC/D,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F,CAkCA;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAGhD"}
|
|
1
|
+
{"version":3,"file":"context-guard.d.ts","sourceRoot":"","sources":["../../src/core/context-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA8BhD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,YAAY,EAAE,EACxB,YAAY,EAAE,MAAM,EACpB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,aAAa,CAAC,EAAE,MAAM,GACrB,YAAY,EAAE,CA4FhB;AASD,eAAO,MAAM,mBAAmB,QAG8C,CAAC;AAQ/E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAKxE;AAYD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG;IAC/D,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F,CAkCA;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAGhD"}
|
|
@@ -65,6 +65,16 @@ export function trimToBudget(messages, budgetTokens, anchoredTotalTokens, charsP
|
|
|
65
65
|
const keptTail = new Set(nonSummary.slice(start));
|
|
66
66
|
return messages.filter((m) => isSummary(m) || keptTail.has(m));
|
|
67
67
|
}
|
|
68
|
+
export const CONTEXT_TRIM_NOTICE = "[Note: earlier messages were omitted from this request to fit the context window — the full " +
|
|
69
|
+
"history is preserved in the session. If an earlier instruction, constraint, or detail seems to " +
|
|
70
|
+
"be missing, it may be in the omitted portion; say so instead of guessing.]";
|
|
71
|
+
export function insertTrimNotice(trimmed) {
|
|
72
|
+
const notice = { role: "user", content: CONTEXT_TRIM_NOTICE, timestamp: 0 };
|
|
73
|
+
let at = 0;
|
|
74
|
+
while (at < trimmed.length && isSummary(trimmed[at]))
|
|
75
|
+
at++;
|
|
76
|
+
return [...trimmed.slice(0, at), notice, ...trimmed.slice(at)];
|
|
77
|
+
}
|
|
68
78
|
export function dropOrphanToolResults(messages) {
|
|
69
79
|
const seenCallIds = new Set();
|
|
70
80
|
let orphanAt = -1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-guard.js","sourceRoot":"","sources":["../../src/core/context-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-guard.js","sourceRoot":"","sources":["../../src/core/context-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,SAAS,SAAS,CAAC,CAAe;IAGhC,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC;AAChD,CAAC;AAoBD,MAAM,UAAU,YAAY,CAC1B,QAAwB,EACxB,YAAoB,EACpB,mBAA4B,EAC5B,aAAsB;IAEtB,MAAM,GAAG,GAAG,aAAa,IAAI,uBAAuB,CAAC;IACrD,MAAM,QAAQ,GAAG,mBAAmB,KAAK,SAAS,CAAC;IACnD,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,eAAe,IAAI,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC;IAChE,IAAI,KAAK,IAAI,YAAY,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAG9F,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,aAAa,IAAI,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAKD,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,SAAS;QACrC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,YAAY,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,GAAG,YAAY,CAAC;IAC/C,IAAI,KAAa,CAAC;IAClB,IAAI,QAAQ,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;QAMlD,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QAIN,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,iBAAiB,CAAC,CAAC;QACjE,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,GAAG,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;gBAClD,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAGD,OAAO,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpE,KAAK,EAAE,CAAC;IACV,CAAC;IACD,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAa/B,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,OAAO,KAAK,GAAG,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACpD,KAAK,EAAE,CAAC;QACV,CAAC;QACD,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACpC,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAIlD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AASD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,8FAA8F;IAC9F,iGAAiG;IACjG,4EAA4E,CAAC;AAQ/E,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACtD,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAkB,CAAC;IAC5F,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAAE,EAAE,EAAE,CAAC;IAC3D,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAYD,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAI5D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAA4F,CAAC;QACjH,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;oBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3E,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IACD,MAAM,OAAO,GAAqF,EAAE,CAAC;IACrG,MAAM,GAAG,GAAmB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CACnC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAuB,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;IACtG,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAA4F,CAAC;QACjH,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;oBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACtH,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAGD,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/core/mcp.d.ts
CHANGED
|
@@ -38,6 +38,10 @@ export interface McpServerStatus {
|
|
|
38
38
|
export declare const MCP_PREFIX = "mcp__";
|
|
39
39
|
export declare function resolveMcpDeclaredResultSize(meta: Record<string, unknown> | undefined): number | undefined;
|
|
40
40
|
export declare function gateMcpOutput(content: Array<TextContent | ImageContent>, limitTokens?: number): Array<TextContent | ImageContent>;
|
|
41
|
+
export declare function truncateMcpErrorText(s: string): string;
|
|
42
|
+
export declare const MCP_TOOL_TIMEOUT_DEFAULT_MS = 100000000;
|
|
43
|
+
export declare function mcpToolTimeoutMs(): number;
|
|
44
|
+
export declare function mcpToolTotalTimeoutMs(perCallMs: number): number;
|
|
41
45
|
export declare function normalizeMcpName(name: string): string;
|
|
42
46
|
export declare const MCP_IMAGE_MAX_BASE64: number;
|
|
43
47
|
export declare const IMAGE_TARGET_RAW_SIZE: number;
|
package/dist/core/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/core/mcp.js
CHANGED
|
@@ -63,6 +63,77 @@ export function gateMcpOutput(content, limitTokens = mcpMaxOutputTokens()) {
|
|
|
63
63
|
gated.push({ type: "text", text: mcpTruncationNote(limitTokens) });
|
|
64
64
|
return gated;
|
|
65
65
|
}
|
|
66
|
+
const MCP_ERROR_HEAD_CHARS = 8_000;
|
|
67
|
+
const MCP_ERROR_TAIL_CHARS = 2_000;
|
|
68
|
+
export function truncateMcpErrorText(s) {
|
|
69
|
+
const max = MCP_ERROR_HEAD_CHARS + MCP_ERROR_TAIL_CHARS;
|
|
70
|
+
if (s.length <= max)
|
|
71
|
+
return s;
|
|
72
|
+
const removed = s.length - max;
|
|
73
|
+
return `${s.slice(0, MCP_ERROR_HEAD_CHARS)}\n\n... [${removed} characters truncated] ...\n\n${s.slice(s.length - MCP_ERROR_TAIL_CHARS)}`;
|
|
74
|
+
}
|
|
75
|
+
export const MCP_TOOL_TIMEOUT_DEFAULT_MS = 100_000_000;
|
|
76
|
+
function parseEnvMs(name) {
|
|
77
|
+
const raw = process.env[name];
|
|
78
|
+
if (!raw)
|
|
79
|
+
return undefined;
|
|
80
|
+
const n = parseInt(raw, 10);
|
|
81
|
+
return Number.isFinite(n) && n > 0 ? n : undefined;
|
|
82
|
+
}
|
|
83
|
+
export function mcpToolTimeoutMs() {
|
|
84
|
+
return parseEnvMs("MCP_TOOL_TIMEOUT") ?? MCP_TOOL_TIMEOUT_DEFAULT_MS;
|
|
85
|
+
}
|
|
86
|
+
export function mcpToolTotalTimeoutMs(perCallMs) {
|
|
87
|
+
return parseEnvMs("MCP_TOOL_TIMEOUT_TOTAL") ?? perCallMs;
|
|
88
|
+
}
|
|
89
|
+
function mcpStartupTimeoutMs() {
|
|
90
|
+
return parseEnvMs("MCP_TIMEOUT");
|
|
91
|
+
}
|
|
92
|
+
function isTransportLost(err) {
|
|
93
|
+
if (err instanceof McpError && err.code === ErrorCode.ConnectionClosed)
|
|
94
|
+
return true;
|
|
95
|
+
return err instanceof Error && /not connected|connection closed/i.test(err.message);
|
|
96
|
+
}
|
|
97
|
+
function writeEffectWarning(writeEffect) {
|
|
98
|
+
return writeEffect
|
|
99
|
+
? " This tool is write-capable: treat its side effects as POSSIBLY APPLIED and verify the actual state before retrying."
|
|
100
|
+
: "";
|
|
101
|
+
}
|
|
102
|
+
function rethrowHonestMcpError(err, ctx) {
|
|
103
|
+
if (ctx.signal?.aborted)
|
|
104
|
+
throw err;
|
|
105
|
+
const serverLabel = inlineUntrusted(ctx.server);
|
|
106
|
+
if (err instanceof McpError && err.code === ErrorCode.RequestTimeout) {
|
|
107
|
+
const data = err.data;
|
|
108
|
+
const totalMs = typeof data?.maxTotalTimeout === "number" ? data.maxTotalTimeout : undefined;
|
|
109
|
+
const e = new Error(totalMs !== undefined
|
|
110
|
+
? `${ctx.what} on MCP server "${serverLabel}" exceeded its total time ceiling of ${totalMs}ms (the call stayed alive — e.g. via progress notifications — but ran past the total wall-clock budget). The client stopped waiting, but the server may still be executing the request — the outcome is unknown.${writeEffectWarning(ctx.writeEffect)} (Set the MCP_TOOL_TIMEOUT_TOTAL environment variable (ms) to change this ceiling; MCP_TOOL_TIMEOUT only tunes the idle timeout, currently ${ctx.timeoutMs}ms.)`
|
|
111
|
+
: `${ctx.what} on MCP server "${serverLabel}" timed out after ${ctx.timeoutMs}ms. The client stopped waiting, but the server may still be executing the request — the outcome is unknown.${writeEffectWarning(ctx.writeEffect)} (Set the MCP_TOOL_TIMEOUT environment variable (ms) to change this limit.)`, { cause: err });
|
|
112
|
+
e.errorKind = "timeout";
|
|
113
|
+
e.details =
|
|
114
|
+
totalMs !== undefined
|
|
115
|
+
? { timedOut: true, timeoutMs: totalMs, totalTimeout: true, server: ctx.server }
|
|
116
|
+
: { timedOut: true, timeoutMs: ctx.timeoutMs, server: ctx.server };
|
|
117
|
+
throw e;
|
|
118
|
+
}
|
|
119
|
+
if (isTransportLost(err)) {
|
|
120
|
+
const e = new Error(`The connection to MCP server "${serverLabel}" was lost while ${ctx.what} was in flight. The request may or may not have executed on the server — the outcome is unknown.${writeEffectWarning(ctx.writeEffect)}`, { cause: err });
|
|
121
|
+
e.errorKind = "transport_lost";
|
|
122
|
+
e.details = { transportLost: true, server: ctx.server };
|
|
123
|
+
throw e;
|
|
124
|
+
}
|
|
125
|
+
if (ctx.attributeServer) {
|
|
126
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
127
|
+
throw new Error(`${ctx.what} on MCP server "${serverLabel}" failed. The server's error text follows as external/untrusted data:\n${delimitUntrusted(`${ctx.server} error`, truncateMcpErrorText(msg))}`, { cause: err });
|
|
128
|
+
}
|
|
129
|
+
throw err;
|
|
130
|
+
}
|
|
131
|
+
function throwDeadServer(server, what) {
|
|
132
|
+
const e = new Error(`MCP server "${inlineUntrusted(server)}" is disconnected (its transport closed earlier in this task). ${what} was not attempted. This server's tools and resources will keep failing until the server is available again — do not retry them; use an alternative if one exists.`);
|
|
133
|
+
e.errorKind = "server_disconnected";
|
|
134
|
+
e.details = { server };
|
|
135
|
+
throw e;
|
|
136
|
+
}
|
|
66
137
|
export function normalizeMcpName(name) {
|
|
67
138
|
return name.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
68
139
|
}
|
|
@@ -350,11 +421,14 @@ export async function materializeMcpTools(specs, principal, onElicit, imageResiz
|
|
|
350
421
|
toolAxes.push(...s.axes);
|
|
351
422
|
if (s.instructions) {
|
|
352
423
|
serverInstructions.push({ server: spec.name, text: s.instructions });
|
|
353
|
-
s.client.onclose = () => {
|
|
354
|
-
if (!disposing)
|
|
355
|
-
instructionsDelta.pendingRemovals.push(spec.name);
|
|
356
|
-
};
|
|
357
424
|
}
|
|
425
|
+
const hasInstructions = s.instructions !== undefined;
|
|
426
|
+
s.announce.fn = () => {
|
|
427
|
+
if (!disposing && hasInstructions)
|
|
428
|
+
instructionsDelta.pendingRemovals.push(spec.name);
|
|
429
|
+
};
|
|
430
|
+
if (s.health.dead && hasInstructions)
|
|
431
|
+
instructionsDelta.pendingRemovals.push(spec.name);
|
|
358
432
|
if (s.resourceServer)
|
|
359
433
|
resourceServers.push(s.resourceServer);
|
|
360
434
|
statuses.push(s.status);
|
|
@@ -435,39 +509,58 @@ function resourceLine(r) {
|
|
|
435
509
|
function serverNames(servers) {
|
|
436
510
|
return servers.map((r) => r.server).join(", ") || "(none)";
|
|
437
511
|
}
|
|
438
|
-
async function readDirViaExtension(rs, uri, signal) {
|
|
512
|
+
async function readDirViaExtension(rs, uri, signal, timeoutMs) {
|
|
439
513
|
const resources = [];
|
|
440
514
|
let cursor;
|
|
441
515
|
let pages = 0;
|
|
442
516
|
do {
|
|
443
517
|
let page;
|
|
444
518
|
try {
|
|
445
|
-
page = await rs.client.request({ method: "resources/directory/read", params: { uri, ...(cursor !== undefined ? { cursor } : {}) } }, ListResourcesResultSchema, { signal });
|
|
519
|
+
page = await rs.client.request({ method: "resources/directory/read", params: { uri, ...(cursor !== undefined ? { cursor } : {}) } }, ListResourcesResultSchema, { signal, timeout: timeoutMs });
|
|
446
520
|
}
|
|
447
521
|
catch (err) {
|
|
448
522
|
if (err instanceof McpError && err.code === ErrorCode.InvalidParams) {
|
|
449
523
|
if (pages > 0)
|
|
450
|
-
|
|
524
|
+
return { kind: "ok", resources, cursorInvalid: true };
|
|
451
525
|
return { kind: "not_directory" };
|
|
452
526
|
}
|
|
453
527
|
if (err instanceof McpError && err.code === ErrorCode.MethodNotFound)
|
|
454
528
|
return { kind: "unsupported" };
|
|
529
|
+
if (pages > 0 && !signal?.aborted) {
|
|
530
|
+
return { kind: "ok", resources, incomplete: err instanceof Error ? err.message : String(err) };
|
|
531
|
+
}
|
|
455
532
|
throw err;
|
|
456
533
|
}
|
|
457
534
|
resources.push(...page.resources);
|
|
458
535
|
cursor = page.nextCursor;
|
|
459
536
|
pages++;
|
|
460
537
|
} while (cursor !== undefined && pages < MAX_DIR_READ_PAGES);
|
|
538
|
+
if (cursor !== undefined)
|
|
539
|
+
return { kind: "ok", resources, truncated: true };
|
|
461
540
|
return { kind: "ok", resources };
|
|
462
541
|
}
|
|
463
|
-
function renderDirChildren(server, uri, children) {
|
|
464
|
-
|
|
465
|
-
|
|
542
|
+
function renderDirChildren(server, uri, children, flags) {
|
|
543
|
+
const notes = [];
|
|
544
|
+
if (flags?.truncated) {
|
|
545
|
+
notes.push(`[listing truncated: the ${MAX_DIR_READ_PAGES}-page pagination limit was reached — more entries may exist beyond this listing]`);
|
|
546
|
+
}
|
|
547
|
+
if (flags?.incomplete !== undefined) {
|
|
548
|
+
notes.push(`[listing incomplete: the server failed mid-pagination (${inlineUntrusted(flags.incomplete)}) — only the pages retrieved before the failure are shown]`);
|
|
549
|
+
}
|
|
550
|
+
if (flags?.cursorInvalid) {
|
|
551
|
+
notes.push(`[listing incomplete: the server rejected the pagination cursor (invalid or expired) — only the pages retrieved before the rejection are shown; more entries may exist beyond this listing]`);
|
|
466
552
|
}
|
|
467
|
-
const
|
|
553
|
+
const detailFlags = {
|
|
554
|
+
...(flags?.truncated ? { truncated: true } : {}),
|
|
555
|
+
...(flags?.incomplete !== undefined ? { incomplete: true, error: flags.incomplete } : {}),
|
|
556
|
+
...(flags?.cursorInvalid ? { incomplete: true, cursorInvalid: true } : {}),
|
|
557
|
+
};
|
|
558
|
+
const listing = children.length === 0
|
|
559
|
+
? `(Empty directory: ${inlineUntrusted(uri)})`
|
|
560
|
+
: delimitUntrusted(`${server} dir ${uri}`, children.map((r) => resourceLine(r)).join("\n"));
|
|
468
561
|
return {
|
|
469
|
-
content: [{ type: "text", text:
|
|
470
|
-
details: { resources: children.map((r) => ({ server, ...r })) },
|
|
562
|
+
content: [{ type: "text", text: notes.length ? `${listing}\n${notes.join("\n")}` : listing }],
|
|
563
|
+
details: { resources: children.map((r) => ({ server, ...r })), ...detailFlags },
|
|
471
564
|
terminate: false,
|
|
472
565
|
};
|
|
473
566
|
}
|
|
@@ -498,14 +591,33 @@ function buildResourceTools(resourceServers) {
|
|
|
498
591
|
}
|
|
499
592
|
const sections = [];
|
|
500
593
|
const all = [];
|
|
594
|
+
const errors = [];
|
|
501
595
|
for (const rs of targets) {
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
596
|
+
if (rs.health.dead) {
|
|
597
|
+
errors.push({ server: rs.server, error: "server disconnected (transport closed earlier in this task)" });
|
|
598
|
+
sections.push(`[${rs.server}] Error: server disconnected — its resources are unavailable.`);
|
|
599
|
+
continue;
|
|
600
|
+
}
|
|
601
|
+
try {
|
|
602
|
+
const res = await rs.client.listResources(undefined, { signal, timeout: mcpToolTimeoutMs() });
|
|
603
|
+
all.push(...res.resources.map((r) => ({ server: rs.server, ...r })));
|
|
604
|
+
const lines = res.resources.map((r) => resourceLine(r));
|
|
605
|
+
sections.push(`[${rs.server}]\n${lines.length ? lines.join("\n") : "(no resources)"}`);
|
|
606
|
+
}
|
|
607
|
+
catch (err) {
|
|
608
|
+
if (signal?.aborted)
|
|
609
|
+
throw err;
|
|
610
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
611
|
+
errors.push({ server: rs.server, error: msg });
|
|
612
|
+
sections.push(`[${rs.server}] Error: could not list resources: ${inlineUntrusted(msg)}`);
|
|
613
|
+
}
|
|
506
614
|
}
|
|
507
615
|
const body = sections.join("\n\n");
|
|
508
|
-
return {
|
|
616
|
+
return {
|
|
617
|
+
content: [{ type: "text", text: sections.length ? delimitUntrusted("mcp resources", body) : "(no MCP resources)" }],
|
|
618
|
+
details: { resources: all, ...(errors.length ? { errors } : {}) },
|
|
619
|
+
terminate: false,
|
|
620
|
+
};
|
|
509
621
|
},
|
|
510
622
|
});
|
|
511
623
|
axes.push({ name: LIST_MCP_RESOURCES, effect: "read" });
|
|
@@ -532,7 +644,13 @@ function buildResourceTools(resourceServers) {
|
|
|
532
644
|
const rs = readable.find((r) => r.server === server);
|
|
533
645
|
if (!rs)
|
|
534
646
|
return { content: [{ type: "text", text: `Error: no MCP server ${inlineUntrusted(server)} with readable resources. Available: ${serverNames(readable)}.` }], details: undefined, terminate: false };
|
|
535
|
-
const
|
|
647
|
+
const what = `The read of resource ${inlineUntrusted(uri)}`;
|
|
648
|
+
if (rs.health.dead)
|
|
649
|
+
throwDeadServer(server, what);
|
|
650
|
+
const timeoutMs = mcpToolTimeoutMs();
|
|
651
|
+
const res = await rs.client
|
|
652
|
+
.readResource({ uri }, { signal, timeout: timeoutMs })
|
|
653
|
+
.catch((err) => rethrowHonestMcpError(err, { server, what, timeoutMs, writeEffect: false, signal, attributeServer: true }));
|
|
536
654
|
const text = (await Promise.all((res.contents ?? []).map(async (c) => {
|
|
537
655
|
if ("text" in c && typeof c.text === "string")
|
|
538
656
|
return c.text;
|
|
@@ -570,9 +688,13 @@ function buildResourceTools(resourceServers) {
|
|
|
570
688
|
const rs = listable.find((r) => r.server === server);
|
|
571
689
|
if (!rs)
|
|
572
690
|
return { content: [{ type: "text", text: `Error: no MCP server ${inlineUntrusted(server)} with listable resources. Available: ${serverNames(listable)}.` }], details: undefined, terminate: false };
|
|
691
|
+
const what = `The directory listing of ${inlineUntrusted(uri)}`;
|
|
692
|
+
if (rs.health.dead)
|
|
693
|
+
throwDeadServer(server, what);
|
|
694
|
+
const timeoutMs = mcpToolTimeoutMs();
|
|
573
695
|
const ext = rs.client.getServerCapabilities()?.extensions?.[MCP_SKILLS_EXTENSION];
|
|
574
696
|
if (ext?.directoryRead === true) {
|
|
575
|
-
const r = await readDirViaExtension(rs, uri, signal);
|
|
697
|
+
const r = await readDirViaExtension(rs, uri, signal, timeoutMs).catch((err) => rethrowHonestMcpError(err, { server, what, timeoutMs, writeEffect: false, signal, attributeServer: true }));
|
|
576
698
|
if (r.kind === "not_directory") {
|
|
577
699
|
return {
|
|
578
700
|
content: [{ type: "text", text: `Not a directory resource: ${inlineUntrusted(uri)}. If it is a file resource, use ${READ_MCP_RESOURCE} instead.` }],
|
|
@@ -581,9 +703,11 @@ function buildResourceTools(resourceServers) {
|
|
|
581
703
|
};
|
|
582
704
|
}
|
|
583
705
|
if (r.kind === "ok")
|
|
584
|
-
return renderDirChildren(server, uri, r.resources);
|
|
706
|
+
return renderDirChildren(server, uri, r.resources, { truncated: r.truncated, incomplete: r.incomplete, cursorInvalid: r.cursorInvalid });
|
|
585
707
|
}
|
|
586
|
-
const res = await rs.client
|
|
708
|
+
const res = await rs.client
|
|
709
|
+
.listResources(undefined, { signal, timeout: timeoutMs })
|
|
710
|
+
.catch((err) => rethrowHonestMcpError(err, { server, what, timeoutMs, writeEffect: false, signal, attributeServer: true }));
|
|
587
711
|
const children = res.resources.filter((r) => typeof r.uri === "string" && r.uri !== uri && r.uri.startsWith(uri));
|
|
588
712
|
return renderDirChildren(server, uri, children);
|
|
589
713
|
},
|
|
@@ -609,9 +733,17 @@ async function connectServer(spec, principal, onElicit, imageResizer) {
|
|
|
609
733
|
});
|
|
610
734
|
}
|
|
611
735
|
const transport = buildTransport(spec, principal);
|
|
736
|
+
const health = { dead: false };
|
|
737
|
+
const announce = {};
|
|
738
|
+
const startupMs = mcpStartupTimeoutMs();
|
|
739
|
+
const startupOpts = startupMs !== undefined ? { timeout: startupMs } : undefined;
|
|
612
740
|
try {
|
|
613
|
-
await client.connect(transport);
|
|
614
|
-
|
|
741
|
+
await client.connect(transport, startupOpts);
|
|
742
|
+
client.onclose = () => {
|
|
743
|
+
health.dead = true;
|
|
744
|
+
announce.fn?.();
|
|
745
|
+
};
|
|
746
|
+
const listed = await client.listTools(undefined, startupOpts);
|
|
615
747
|
const serverTools = [];
|
|
616
748
|
const serverAxes = [];
|
|
617
749
|
for (const t of listed.tools) {
|
|
@@ -624,6 +756,7 @@ async function connectServer(spec, principal, onElicit, imageResizer) {
|
|
|
624
756
|
const axis = applyCallerAxisOverride(namespacedName, hintAxis, spec.toolAxes?.[remoteName]);
|
|
625
757
|
if (axis)
|
|
626
758
|
serverAxes.push(axis);
|
|
759
|
+
const writeEffect = (axis?.effect ?? "write") === "write";
|
|
627
760
|
const mcpMaxResultSizeChars = resolveMcpDeclaredResultSize(t._meta);
|
|
628
761
|
serverTools.push({
|
|
629
762
|
name: namespacedName,
|
|
@@ -632,16 +765,38 @@ async function connectServer(spec, principal, onElicit, imageResizer) {
|
|
|
632
765
|
parameters: (t.inputSchema ?? { type: "object" }),
|
|
633
766
|
...(mcpMaxResultSizeChars !== undefined ? { mcpMaxResultSizeChars } : {}),
|
|
634
767
|
execute: async (_toolCallId, params, signal) => {
|
|
635
|
-
const
|
|
636
|
-
|
|
768
|
+
const what = `The call to tool ${inlineUntrusted(remoteName)}`;
|
|
769
|
+
if (health.dead)
|
|
770
|
+
throwDeadServer(spec.name, what);
|
|
771
|
+
const timeoutMs = mcpToolTimeoutMs();
|
|
772
|
+
const res = await client
|
|
773
|
+
.callTool({ name: remoteName, arguments: (params ?? {}) }, undefined, {
|
|
774
|
+
signal,
|
|
775
|
+
timeout: timeoutMs,
|
|
776
|
+
resetTimeoutOnProgress: true,
|
|
777
|
+
onprogress: () => { },
|
|
778
|
+
maxTotalTimeout: mcpToolTotalTimeoutMs(timeoutMs),
|
|
779
|
+
})
|
|
780
|
+
.catch((err) => rethrowHonestMcpError(err, { server: spec.name, what, timeoutMs, writeEffect, signal }));
|
|
781
|
+
const mapped = await mapContent(res.content, spec.name, imageResizer);
|
|
637
782
|
if (res.isError === true) {
|
|
638
|
-
const
|
|
639
|
-
|
|
640
|
-
.
|
|
641
|
-
|
|
642
|
-
|
|
783
|
+
const parts = [];
|
|
784
|
+
for (const block of mapped) {
|
|
785
|
+
if (block.type === "text")
|
|
786
|
+
parts.push(block.text);
|
|
787
|
+
else
|
|
788
|
+
parts.push(`[${block.type} block omitted from error result]`);
|
|
789
|
+
}
|
|
790
|
+
const errSc = res.structuredContent;
|
|
791
|
+
if (errSc !== undefined)
|
|
792
|
+
parts.push(`[structuredContent] ${truncateMcpErrorText(JSON.stringify(errSc))}`);
|
|
793
|
+
const body = truncateMcpErrorText(parts.join("\n").trim());
|
|
794
|
+
const msg = body
|
|
795
|
+
? `MCP tool ${inlineUntrusted(remoteName)} reported an error. The server's error content follows as external/untrusted data:\n${delimitUntrusted(`${spec.name} tool error`, body)}`
|
|
796
|
+
: `MCP tool ${inlineUntrusted(remoteName)} reported an error`;
|
|
643
797
|
throw new Error(msg);
|
|
644
798
|
}
|
|
799
|
+
const content = gateMcpOutput(mapped);
|
|
645
800
|
const sc = res.structuredContent;
|
|
646
801
|
if (sc !== undefined) {
|
|
647
802
|
content.push({
|
|
@@ -672,10 +827,12 @@ async function connectServer(spec, principal, onElicit, imageResizer) {
|
|
|
672
827
|
toolNames: serverTools.map((t) => t.name),
|
|
673
828
|
},
|
|
674
829
|
client,
|
|
830
|
+
health,
|
|
831
|
+
announce,
|
|
675
832
|
tools: serverTools,
|
|
676
833
|
axes: serverAxes,
|
|
677
834
|
...(instructions ? { instructions } : {}),
|
|
678
|
-
...(resourceInfo && (resourceInfo.listAllowed || resourceInfo.readAllowed) ? { resourceServer: { server: spec.name, client, ...resourceInfo } } : {}),
|
|
835
|
+
...(resourceInfo && (resourceInfo.listAllowed || resourceInfo.readAllowed) ? { resourceServer: { server: spec.name, client, health, ...resourceInfo } } : {}),
|
|
679
836
|
};
|
|
680
837
|
}
|
|
681
838
|
catch (err) {
|