@wingman-ai/gateway 0.5.3 → 0.6.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/agent/backend/filtered-backend.cjs +130 -0
- package/dist/agent/backend/filtered-backend.d.ts +10 -0
- package/dist/agent/backend/filtered-backend.js +87 -0
- package/dist/agent/config/agentConfig.cjs +4 -0
- package/dist/agent/config/agentConfig.d.ts +12 -0
- package/dist/agent/config/agentConfig.js +4 -0
- package/dist/agent/config/toolRegistry.cjs +75 -1
- package/dist/agent/config/toolRegistry.d.ts +3 -0
- package/dist/agent/config/toolRegistry.js +75 -1
- package/dist/agent/middleware/additional-messages.cjs +4 -1
- package/dist/agent/middleware/additional-messages.js +4 -1
- package/dist/agent/middleware/large-tool-results.cjs +207 -0
- package/dist/agent/middleware/large-tool-results.d.ts +16 -0
- package/dist/agent/middleware/large-tool-results.js +173 -0
- package/dist/agent/tools/browser_control.cjs +9 -1231
- package/dist/agent/tools/browser_control.d.ts +126 -234
- package/dist/agent/tools/browser_control.js +7 -1226
- package/dist/agent/tools/browser_runtime.cjs +1358 -0
- package/dist/agent/tools/browser_runtime.d.ts +617 -0
- package/dist/agent/tools/browser_runtime.js +1288 -0
- package/dist/agent/tools/browser_session.cjs +189 -0
- package/dist/agent/tools/browser_session.d.ts +686 -0
- package/dist/agent/tools/browser_session.js +146 -0
- package/dist/agent/tools/browser_session_manager.cjs +213 -0
- package/dist/agent/tools/browser_session_manager.d.ts +70 -0
- package/dist/agent/tools/browser_session_manager.js +176 -0
- package/dist/cli/commands/init.cjs +80 -98
- package/dist/cli/commands/init.js +80 -98
- package/dist/cli/config/loader.cjs +0 -5
- package/dist/cli/config/loader.js +0 -5
- package/dist/cli/config/schema.cjs +3 -7
- package/dist/cli/config/schema.d.ts +6 -6
- package/dist/cli/config/schema.js +3 -7
- package/dist/cli/core/agentInvoker.cjs +88 -22
- package/dist/cli/core/agentInvoker.d.ts +10 -3
- package/dist/cli/core/agentInvoker.js +88 -25
- package/dist/cli/core/outputManager.cjs +7 -2
- package/dist/cli/core/outputManager.d.ts +2 -2
- package/dist/cli/core/outputManager.js +7 -2
- package/dist/cli/core/sessionManager.cjs +208 -41
- package/dist/cli/core/sessionManager.d.ts +20 -0
- package/dist/cli/core/sessionManager.js +208 -41
- package/dist/cli/index.cjs +16 -1
- package/dist/cli/index.js +16 -1
- package/dist/cli/services/updateCheck.cjs +212 -0
- package/dist/cli/services/updateCheck.d.ts +26 -0
- package/dist/cli/services/updateCheck.js +166 -0
- package/dist/cli/types.d.ts +2 -1
- package/dist/gateway/server.cjs +7 -0
- package/dist/gateway/server.js +7 -0
- package/dist/webui/assets/index-D3x3G75t.css +11 -0
- package/dist/webui/assets/index-UpMmcU1f.js +215 -0
- package/dist/webui/index.html +2 -2
- package/package.json +12 -12
- package/templates/agents/README.md +3 -1
- package/templates/agents/coding/agent.md +6 -13
- package/templates/agents/coding-v2/agent.md +6 -1
- package/templates/agents/game-dev/agent.md +9 -2
- package/templates/agents/game-dev/game-designer.md +4 -0
- package/templates/agents/game-dev/scene-engineer.md +4 -0
- package/templates/agents/main/agent.md +7 -2
- package/templates/agents/researcher/agent.md +14 -3
- package/templates/agents/stock-trader/agent.md +4 -0
- package/dist/agent/tests/agentConfig.test.cjs +0 -224
- package/dist/agent/tests/agentConfig.test.d.ts +0 -1
- package/dist/agent/tests/agentConfig.test.js +0 -218
- package/dist/agent/tests/agentLoader.test.cjs +0 -335
- package/dist/agent/tests/agentLoader.test.d.ts +0 -1
- package/dist/agent/tests/agentLoader.test.js +0 -329
- package/dist/agent/tests/backgroundTerminal.test.cjs +0 -70
- package/dist/agent/tests/backgroundTerminal.test.d.ts +0 -1
- package/dist/agent/tests/backgroundTerminal.test.js +0 -64
- package/dist/agent/tests/browserControlHelpers.test.cjs +0 -35
- package/dist/agent/tests/browserControlHelpers.test.d.ts +0 -1
- package/dist/agent/tests/browserControlHelpers.test.js +0 -29
- package/dist/agent/tests/browserControlTool.test.cjs +0 -2117
- package/dist/agent/tests/browserControlTool.test.d.ts +0 -1
- package/dist/agent/tests/browserControlTool.test.js +0 -2111
- package/dist/agent/tests/commandExecuteTool.test.cjs +0 -29
- package/dist/agent/tests/commandExecuteTool.test.d.ts +0 -1
- package/dist/agent/tests/commandExecuteTool.test.js +0 -23
- package/dist/agent/tests/internet_search.test.cjs +0 -107
- package/dist/agent/tests/internet_search.test.d.ts +0 -1
- package/dist/agent/tests/internet_search.test.js +0 -101
- package/dist/agent/tests/mcpClientManager.test.cjs +0 -290
- package/dist/agent/tests/mcpClientManager.test.d.ts +0 -1
- package/dist/agent/tests/mcpClientManager.test.js +0 -284
- package/dist/agent/tests/mcpResourceTools.test.cjs +0 -101
- package/dist/agent/tests/mcpResourceTools.test.d.ts +0 -1
- package/dist/agent/tests/mcpResourceTools.test.js +0 -95
- package/dist/agent/tests/modelFactory.test.cjs +0 -190
- package/dist/agent/tests/modelFactory.test.d.ts +0 -1
- package/dist/agent/tests/modelFactory.test.js +0 -184
- package/dist/agent/tests/terminalSessionManager.test.cjs +0 -121
- package/dist/agent/tests/terminalSessionManager.test.d.ts +0 -1
- package/dist/agent/tests/terminalSessionManager.test.js +0 -115
- package/dist/agent/tests/test-agent-loader.cjs +0 -33
- package/dist/agent/tests/test-agent-loader.d.ts +0 -1
- package/dist/agent/tests/test-agent-loader.js +0 -27
- package/dist/agent/tests/test-subagent-loading.cjs +0 -99
- package/dist/agent/tests/test-subagent-loading.d.ts +0 -1
- package/dist/agent/tests/test-subagent-loading.js +0 -93
- package/dist/agent/tests/toolRegistry.test.cjs +0 -147
- package/dist/agent/tests/toolRegistry.test.d.ts +0 -1
- package/dist/agent/tests/toolRegistry.test.js +0 -141
- package/dist/agent/tests/uiRegistryTools.test.cjs +0 -114
- package/dist/agent/tests/uiRegistryTools.test.d.ts +0 -1
- package/dist/agent/tests/uiRegistryTools.test.js +0 -105
- package/dist/agent/tests/xaiImageModel.test.cjs +0 -194
- package/dist/agent/tests/xaiImageModel.test.d.ts +0 -1
- package/dist/agent/tests/xaiImageModel.test.js +0 -188
- package/dist/tests/additionalMessageMiddleware.test.cjs +0 -216
- package/dist/tests/additionalMessageMiddleware.test.d.ts +0 -1
- package/dist/tests/additionalMessageMiddleware.test.js +0 -188
- package/dist/tests/agent-config-voice.test.cjs +0 -25
- package/dist/tests/agent-config-voice.test.d.ts +0 -1
- package/dist/tests/agent-config-voice.test.js +0 -19
- package/dist/tests/agentInvokerAttachments.test.cjs +0 -190
- package/dist/tests/agentInvokerAttachments.test.d.ts +0 -1
- package/dist/tests/agentInvokerAttachments.test.js +0 -184
- package/dist/tests/agentInvokerSummarization.test.cjs +0 -613
- package/dist/tests/agentInvokerSummarization.test.d.ts +0 -1
- package/dist/tests/agentInvokerSummarization.test.js +0 -607
- package/dist/tests/agentInvokerTokenUsage.test.cjs +0 -124
- package/dist/tests/agentInvokerTokenUsage.test.d.ts +0 -1
- package/dist/tests/agentInvokerTokenUsage.test.js +0 -118
- package/dist/tests/agentInvokerWorkdir.test.cjs +0 -150
- package/dist/tests/agentInvokerWorkdir.test.d.ts +0 -1
- package/dist/tests/agentInvokerWorkdir.test.js +0 -122
- package/dist/tests/agents-api.test.cjs +0 -324
- package/dist/tests/agents-api.test.d.ts +0 -1
- package/dist/tests/agents-api.test.js +0 -318
- package/dist/tests/attachments-utils.test.cjs +0 -46
- package/dist/tests/attachments-utils.test.d.ts +0 -1
- package/dist/tests/attachments-utils.test.js +0 -40
- package/dist/tests/browser-command.test.cjs +0 -264
- package/dist/tests/browser-command.test.d.ts +0 -1
- package/dist/tests/browser-command.test.js +0 -258
- package/dist/tests/browser-relay-server.test.cjs +0 -20
- package/dist/tests/browser-relay-server.test.d.ts +0 -1
- package/dist/tests/browser-relay-server.test.js +0 -14
- package/dist/tests/bunSqliteAdapter.test.cjs +0 -265
- package/dist/tests/bunSqliteAdapter.test.d.ts +0 -1
- package/dist/tests/bunSqliteAdapter.test.js +0 -259
- package/dist/tests/candleRange.test.cjs +0 -48
- package/dist/tests/candleRange.test.d.ts +0 -1
- package/dist/tests/candleRange.test.js +0 -42
- package/dist/tests/cli-config-loader.test.cjs +0 -532
- package/dist/tests/cli-config-loader.test.d.ts +0 -1
- package/dist/tests/cli-config-loader.test.js +0 -526
- package/dist/tests/cli-config-warnings.test.cjs +0 -94
- package/dist/tests/cli-config-warnings.test.d.ts +0 -1
- package/dist/tests/cli-config-warnings.test.js +0 -88
- package/dist/tests/cli-init.test.cjs +0 -225
- package/dist/tests/cli-init.test.d.ts +0 -1
- package/dist/tests/cli-init.test.js +0 -219
- package/dist/tests/cli-workspace-root.test.cjs +0 -114
- package/dist/tests/cli-workspace-root.test.d.ts +0 -1
- package/dist/tests/cli-workspace-root.test.js +0 -108
- package/dist/tests/codex-credentials-precedence.test.cjs +0 -94
- package/dist/tests/codex-credentials-precedence.test.d.ts +0 -1
- package/dist/tests/codex-credentials-precedence.test.js +0 -88
- package/dist/tests/codex-provider.test.cjs +0 -383
- package/dist/tests/codex-provider.test.d.ts +0 -1
- package/dist/tests/codex-provider.test.js +0 -377
- package/dist/tests/config-json-schema.test.cjs +0 -37
- package/dist/tests/config-json-schema.test.d.ts +0 -1
- package/dist/tests/config-json-schema.test.js +0 -31
- package/dist/tests/discord-adapter.test.cjs +0 -89
- package/dist/tests/discord-adapter.test.d.ts +0 -1
- package/dist/tests/discord-adapter.test.js +0 -83
- package/dist/tests/falRuntime.test.cjs +0 -78
- package/dist/tests/falRuntime.test.d.ts +0 -1
- package/dist/tests/falRuntime.test.js +0 -72
- package/dist/tests/falSummary.test.cjs +0 -51
- package/dist/tests/falSummary.test.d.ts +0 -1
- package/dist/tests/falSummary.test.js +0 -45
- package/dist/tests/fs-api.test.cjs +0 -138
- package/dist/tests/fs-api.test.d.ts +0 -1
- package/dist/tests/fs-api.test.js +0 -132
- package/dist/tests/gateway-command-workspace.test.cjs +0 -150
- package/dist/tests/gateway-command-workspace.test.d.ts +0 -1
- package/dist/tests/gateway-command-workspace.test.js +0 -144
- package/dist/tests/gateway-http-security.test.cjs +0 -318
- package/dist/tests/gateway-http-security.test.d.ts +0 -1
- package/dist/tests/gateway-http-security.test.js +0 -312
- package/dist/tests/gateway-node-mode.test.cjs +0 -174
- package/dist/tests/gateway-node-mode.test.d.ts +0 -1
- package/dist/tests/gateway-node-mode.test.js +0 -168
- package/dist/tests/gateway-origin-policy.test.cjs +0 -82
- package/dist/tests/gateway-origin-policy.test.d.ts +0 -1
- package/dist/tests/gateway-origin-policy.test.js +0 -76
- package/dist/tests/gateway-request-execution-overrides.test.cjs +0 -42
- package/dist/tests/gateway-request-execution-overrides.test.d.ts +0 -1
- package/dist/tests/gateway-request-execution-overrides.test.js +0 -36
- package/dist/tests/gateway.test.cjs +0 -700
- package/dist/tests/gateway.test.d.ts +0 -1
- package/dist/tests/gateway.test.js +0 -694
- package/dist/tests/hooks-matcher.test.cjs +0 -309
- package/dist/tests/hooks-matcher.test.d.ts +0 -1
- package/dist/tests/hooks-matcher.test.js +0 -303
- package/dist/tests/hooks-merger.test.cjs +0 -528
- package/dist/tests/hooks-merger.test.d.ts +0 -1
- package/dist/tests/hooks-merger.test.js +0 -522
- package/dist/tests/imagePersistence.test.cjs +0 -169
- package/dist/tests/imagePersistence.test.d.ts +0 -1
- package/dist/tests/imagePersistence.test.js +0 -163
- package/dist/tests/integration/agent-invocation.integration.test.cjs +0 -264
- package/dist/tests/integration/agent-invocation.integration.test.d.ts +0 -1
- package/dist/tests/integration/agent-invocation.integration.test.js +0 -258
- package/dist/tests/integration/finnhub-candles.integration.test.cjs +0 -98
- package/dist/tests/integration/finnhub-candles.integration.test.d.ts +0 -1
- package/dist/tests/integration/finnhub-candles.integration.test.js +0 -92
- package/dist/tests/integration/summarization-e2e.integration.test.cjs +0 -127
- package/dist/tests/integration/summarization-e2e.integration.test.d.ts +0 -1
- package/dist/tests/integration/summarization-e2e.integration.test.js +0 -121
- package/dist/tests/logger.test.cjs +0 -353
- package/dist/tests/logger.test.d.ts +0 -1
- package/dist/tests/logger.test.js +0 -347
- package/dist/tests/mediaCompatibilityMiddleware.test.cjs +0 -106
- package/dist/tests/mediaCompatibilityMiddleware.test.d.ts +0 -1
- package/dist/tests/mediaCompatibilityMiddleware.test.js +0 -100
- package/dist/tests/node-tools.test.cjs +0 -77
- package/dist/tests/node-tools.test.d.ts +0 -1
- package/dist/tests/node-tools.test.js +0 -71
- package/dist/tests/nodes-api.test.cjs +0 -86
- package/dist/tests/nodes-api.test.d.ts +0 -1
- package/dist/tests/nodes-api.test.js +0 -80
- package/dist/tests/outputManagerContextSummarized.test.cjs +0 -43
- package/dist/tests/outputManagerContextSummarized.test.d.ts +0 -1
- package/dist/tests/outputManagerContextSummarized.test.js +0 -37
- package/dist/tests/provider-command-codex.test.cjs +0 -57
- package/dist/tests/provider-command-codex.test.d.ts +0 -1
- package/dist/tests/provider-command-codex.test.js +0 -51
- package/dist/tests/routines-api.test.cjs +0 -107
- package/dist/tests/routines-api.test.d.ts +0 -1
- package/dist/tests/routines-api.test.js +0 -101
- package/dist/tests/run-terminal-bench-official-script.test.cjs +0 -61
- package/dist/tests/run-terminal-bench-official-script.test.d.ts +0 -1
- package/dist/tests/run-terminal-bench-official-script.test.js +0 -55
- package/dist/tests/sessionManager-uionly.test.cjs +0 -50
- package/dist/tests/sessionManager-uionly.test.d.ts +0 -1
- package/dist/tests/sessionManager-uionly.test.js +0 -44
- package/dist/tests/sessionMessageAttachments.test.cjs +0 -197
- package/dist/tests/sessionMessageAttachments.test.d.ts +0 -1
- package/dist/tests/sessionMessageAttachments.test.js +0 -191
- package/dist/tests/sessionMessageRole.test.cjs +0 -44
- package/dist/tests/sessionMessageRole.test.d.ts +0 -1
- package/dist/tests/sessionMessageRole.test.js +0 -38
- package/dist/tests/sessionStateMessages.test.cjs +0 -236
- package/dist/tests/sessionStateMessages.test.d.ts +0 -1
- package/dist/tests/sessionStateMessages.test.js +0 -230
- package/dist/tests/sessions-api.test.cjs +0 -250
- package/dist/tests/sessions-api.test.d.ts +0 -1
- package/dist/tests/sessions-api.test.js +0 -244
- package/dist/tests/skill-activation.test.cjs +0 -86
- package/dist/tests/skill-activation.test.d.ts +0 -1
- package/dist/tests/skill-activation.test.js +0 -80
- package/dist/tests/skill-metadata.test.cjs +0 -119
- package/dist/tests/skill-metadata.test.d.ts +0 -1
- package/dist/tests/skill-metadata.test.js +0 -113
- package/dist/tests/skill-repository.test.cjs +0 -469
- package/dist/tests/skill-repository.test.d.ts +0 -1
- package/dist/tests/skill-repository.test.js +0 -463
- package/dist/tests/skill-security-scanner.test.cjs +0 -126
- package/dist/tests/skill-security-scanner.test.d.ts +0 -1
- package/dist/tests/skill-security-scanner.test.js +0 -120
- package/dist/tests/sms-api.test.cjs +0 -183
- package/dist/tests/sms-api.test.d.ts +0 -1
- package/dist/tests/sms-api.test.js +0 -177
- package/dist/tests/sms-commands.test.cjs +0 -90
- package/dist/tests/sms-commands.test.d.ts +0 -1
- package/dist/tests/sms-commands.test.js +0 -84
- package/dist/tests/sms-policy-store.test.cjs +0 -69
- package/dist/tests/sms-policy-store.test.d.ts +0 -1
- package/dist/tests/sms-policy-store.test.js +0 -63
- package/dist/tests/teams-adapter.test.cjs +0 -58
- package/dist/tests/teams-adapter.test.d.ts +0 -1
- package/dist/tests/teams-adapter.test.js +0 -52
- package/dist/tests/technicalIndicators.test.cjs +0 -82
- package/dist/tests/technicalIndicators.test.d.ts +0 -1
- package/dist/tests/technicalIndicators.test.js +0 -76
- package/dist/tests/terminal-bench-adapters-helpers.test.cjs +0 -64
- package/dist/tests/terminal-bench-adapters-helpers.test.d.ts +0 -1
- package/dist/tests/terminal-bench-adapters-helpers.test.js +0 -58
- package/dist/tests/terminal-bench-cleanup.test.cjs +0 -93
- package/dist/tests/terminal-bench-cleanup.test.d.ts +0 -1
- package/dist/tests/terminal-bench-cleanup.test.js +0 -87
- package/dist/tests/terminal-bench-config.test.cjs +0 -62
- package/dist/tests/terminal-bench-config.test.d.ts +0 -1
- package/dist/tests/terminal-bench-config.test.js +0 -56
- package/dist/tests/terminal-bench-official.test.cjs +0 -194
- package/dist/tests/terminal-bench-official.test.d.ts +0 -1
- package/dist/tests/terminal-bench-official.test.js +0 -188
- package/dist/tests/terminal-bench-runner.test.cjs +0 -82
- package/dist/tests/terminal-bench-runner.test.d.ts +0 -1
- package/dist/tests/terminal-bench-runner.test.js +0 -76
- package/dist/tests/terminal-bench-scoring.test.cjs +0 -128
- package/dist/tests/terminal-bench-scoring.test.d.ts +0 -1
- package/dist/tests/terminal-bench-scoring.test.js +0 -122
- package/dist/tests/terminalProbe.test.cjs +0 -45
- package/dist/tests/terminalProbe.test.d.ts +0 -1
- package/dist/tests/terminalProbe.test.js +0 -39
- package/dist/tests/terminalProbeAuth.test.cjs +0 -85
- package/dist/tests/terminalProbeAuth.test.d.ts +0 -1
- package/dist/tests/terminalProbeAuth.test.js +0 -79
- package/dist/tests/toolDisplayHelpers.test.cjs +0 -46
- package/dist/tests/toolDisplayHelpers.test.d.ts +0 -1
- package/dist/tests/toolDisplayHelpers.test.js +0 -40
- package/dist/tests/uv.test.cjs +0 -47
- package/dist/tests/uv.test.d.ts +0 -1
- package/dist/tests/uv.test.js +0 -41
- package/dist/tests/voice-config.test.cjs +0 -35
- package/dist/tests/voice-config.test.d.ts +0 -1
- package/dist/tests/voice-config.test.js +0 -29
- package/dist/tests/websocket-transport.test.cjs +0 -31
- package/dist/tests/websocket-transport.test.d.ts +0 -1
- package/dist/tests/websocket-transport.test.js +0 -25
- package/dist/tests/yahooCandles.test.cjs +0 -111
- package/dist/tests/yahooCandles.test.d.ts +0 -1
- package/dist/tests/yahooCandles.test.js +0 -105
- package/dist/tools/finance/optionsAnalytics.test.cjs +0 -128
- package/dist/tools/finance/optionsAnalytics.test.d.ts +0 -1
- package/dist/tools/finance/optionsAnalytics.test.js +0 -122
- package/dist/webui/assets/index-BMf95nv5.js +0 -215
- package/dist/webui/assets/index-DhJQ8Mbn.css +0 -11
- package/dist/webui/assets/wingman_logo-Cogyt3qm.webp +0 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
createLargeToolResultsMiddleware: ()=>createLargeToolResultsMiddleware
|
|
28
|
+
});
|
|
29
|
+
const messages_namespaceObject = require("@langchain/core/messages");
|
|
30
|
+
const langgraph_namespaceObject = require("@langchain/langgraph");
|
|
31
|
+
const external_langchain_namespaceObject = require("langchain");
|
|
32
|
+
const DEFAULT_TOOL_TOKEN_LIMIT_BEFORE_EVICT = 20000;
|
|
33
|
+
const NUM_CHARS_PER_TOKEN = 4;
|
|
34
|
+
const MAX_PREVIEW_LINE_CHARS = 1000;
|
|
35
|
+
const PREVIEW_HEAD_LINES = 5;
|
|
36
|
+
const PREVIEW_TAIL_LINES = 5;
|
|
37
|
+
const LARGE_TOOL_RESULTS_DIR = "/large_tool_results";
|
|
38
|
+
const DEFAULT_EXCLUDED_TOOLS = new Set([
|
|
39
|
+
"ls",
|
|
40
|
+
"glob",
|
|
41
|
+
"grep",
|
|
42
|
+
"read_file",
|
|
43
|
+
"edit_file",
|
|
44
|
+
"write_file",
|
|
45
|
+
"execute"
|
|
46
|
+
]);
|
|
47
|
+
const sanitizeToolCallId = (toolCallId)=>toolCallId.replace(/\./g, "_").replace(/\//g, "_").replace(/\\/g, "_");
|
|
48
|
+
const formatContentWithLineNumbers = (lines, startLine = 1)=>lines.map((line, index)=>`${String(startLine + index).padStart(4, " ")} | ${line}`).join("\n");
|
|
49
|
+
const createContentPreview = (content, headLines = PREVIEW_HEAD_LINES, tailLines = PREVIEW_TAIL_LINES)=>{
|
|
50
|
+
const lines = content.split("\n");
|
|
51
|
+
if (lines.length <= headLines + tailLines) return formatContentWithLineNumbers(lines.map((line)=>line.slice(0, MAX_PREVIEW_LINE_CHARS)));
|
|
52
|
+
const head = lines.slice(0, headLines).map((line)=>line.slice(0, MAX_PREVIEW_LINE_CHARS));
|
|
53
|
+
const tail = lines.slice(-tailLines).map((line)=>line.slice(0, MAX_PREVIEW_LINE_CHARS));
|
|
54
|
+
return [
|
|
55
|
+
formatContentWithLineNumbers(head, 1),
|
|
56
|
+
`... [${lines.length - headLines - tailLines} lines truncated] ...`,
|
|
57
|
+
formatContentWithLineNumbers(tail, lines.length - tailLines + 1)
|
|
58
|
+
].join("\n");
|
|
59
|
+
};
|
|
60
|
+
const serializeToolContent = (content)=>{
|
|
61
|
+
if ("string" == typeof content) return {
|
|
62
|
+
serialized: content,
|
|
63
|
+
extension: ".txt"
|
|
64
|
+
};
|
|
65
|
+
if (null == content || "number" == typeof content || "boolean" == typeof content || "bigint" == typeof content) return {
|
|
66
|
+
serialized: String(content),
|
|
67
|
+
extension: ".txt"
|
|
68
|
+
};
|
|
69
|
+
try {
|
|
70
|
+
return {
|
|
71
|
+
serialized: JSON.stringify(content, null, 2),
|
|
72
|
+
extension: ".json"
|
|
73
|
+
};
|
|
74
|
+
} catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const buildEvictedMessage = (params)=>{
|
|
79
|
+
if (!params.filePath) return [
|
|
80
|
+
`Tool result too large. Wingman replaced the full output for tool call ${params.toolCallId} with a preview to keep the model context safe.`,
|
|
81
|
+
params.writeError ? `The full output could not be persisted to the agent filesystem: ${params.writeError}` : null,
|
|
82
|
+
"Preview:",
|
|
83
|
+
params.contentPreview
|
|
84
|
+
].filter(Boolean).join("\n\n");
|
|
85
|
+
return [
|
|
86
|
+
`Tool result too large. The full output for tool call ${params.toolCallId} was saved to ${params.filePath}.`,
|
|
87
|
+
"Use read_file with pagination to inspect it safely, for example offset=0 and limit=100.",
|
|
88
|
+
"Preview:",
|
|
89
|
+
params.contentPreview
|
|
90
|
+
].join("\n\n");
|
|
91
|
+
};
|
|
92
|
+
const createToolMessageReplacement = (message, content)=>new messages_namespaceObject.ToolMessage({
|
|
93
|
+
content,
|
|
94
|
+
tool_call_id: message.tool_call_id,
|
|
95
|
+
name: message.name,
|
|
96
|
+
id: message.id,
|
|
97
|
+
artifact: message.artifact,
|
|
98
|
+
status: message.status,
|
|
99
|
+
metadata: message.metadata,
|
|
100
|
+
additional_kwargs: message.additional_kwargs,
|
|
101
|
+
response_metadata: message.response_metadata
|
|
102
|
+
});
|
|
103
|
+
const processToolMessage = async (message, request, backend, maxCharsBeforeEvict, excludedTools)=>{
|
|
104
|
+
const toolName = request.toolCall?.name || message.name;
|
|
105
|
+
if (toolName && excludedTools.has(toolName)) return {
|
|
106
|
+
message,
|
|
107
|
+
filesUpdate: null,
|
|
108
|
+
changed: false
|
|
109
|
+
};
|
|
110
|
+
const serialized = serializeToolContent(message.content);
|
|
111
|
+
if (!serialized || serialized.serialized.length <= maxCharsBeforeEvict) return {
|
|
112
|
+
message,
|
|
113
|
+
filesUpdate: null,
|
|
114
|
+
changed: false
|
|
115
|
+
};
|
|
116
|
+
const toolCallId = request.toolCall?.id || message.tool_call_id || `${toolName || "tool"}_${Date.now()}`;
|
|
117
|
+
const safeToolCallId = sanitizeToolCallId(toolCallId);
|
|
118
|
+
const targetPath = `${LARGE_TOOL_RESULTS_DIR}/${safeToolCallId}${serialized.extension}`;
|
|
119
|
+
const preview = createContentPreview(serialized.serialized);
|
|
120
|
+
try {
|
|
121
|
+
const writeResult = await backend.write(targetPath, serialized.serialized);
|
|
122
|
+
const replacement = createToolMessageReplacement(message, buildEvictedMessage({
|
|
123
|
+
toolCallId,
|
|
124
|
+
filePath: writeResult.error ? void 0 : writeResult.path || targetPath,
|
|
125
|
+
contentPreview: preview,
|
|
126
|
+
writeError: writeResult.error
|
|
127
|
+
}));
|
|
128
|
+
return {
|
|
129
|
+
message: replacement,
|
|
130
|
+
filesUpdate: writeResult.error ? null : writeResult.filesUpdate ?? null,
|
|
131
|
+
changed: true
|
|
132
|
+
};
|
|
133
|
+
} catch (error) {
|
|
134
|
+
return {
|
|
135
|
+
message: createToolMessageReplacement(message, buildEvictedMessage({
|
|
136
|
+
toolCallId,
|
|
137
|
+
contentPreview: preview,
|
|
138
|
+
writeError: error instanceof Error ? error.message : String(error)
|
|
139
|
+
})),
|
|
140
|
+
filesUpdate: null,
|
|
141
|
+
changed: true
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const createLargeToolResultsMiddleware = (options)=>{
|
|
146
|
+
const maxCharsBeforeEvict = (options.toolTokenLimitBeforeEvict ?? DEFAULT_TOOL_TOKEN_LIMIT_BEFORE_EVICT) * NUM_CHARS_PER_TOKEN;
|
|
147
|
+
const excludedTools = new Set(options.excludedTools ?? DEFAULT_EXCLUDED_TOOLS);
|
|
148
|
+
return {
|
|
149
|
+
name: "large-tool-results-middleware",
|
|
150
|
+
[external_langchain_namespaceObject.MIDDLEWARE_BRAND]: true,
|
|
151
|
+
wrapToolCall: async (request, handler)=>{
|
|
152
|
+
const result = await handler(request);
|
|
153
|
+
if (maxCharsBeforeEvict <= 0) return result;
|
|
154
|
+
const backend = options.backend();
|
|
155
|
+
if (messages_namespaceObject.ToolMessage.isInstance(result)) {
|
|
156
|
+
const processed = await processToolMessage(result, request, backend, maxCharsBeforeEvict, excludedTools);
|
|
157
|
+
if (processed.filesUpdate) return new langgraph_namespaceObject.Command({
|
|
158
|
+
update: {
|
|
159
|
+
files: processed.filesUpdate,
|
|
160
|
+
messages: [
|
|
161
|
+
processed.message
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return processed.message;
|
|
166
|
+
}
|
|
167
|
+
if (!(0, langgraph_namespaceObject.isCommand)(result)) return result;
|
|
168
|
+
const update = result.update;
|
|
169
|
+
if (!update?.messages || !Array.isArray(update.messages)) return result;
|
|
170
|
+
let changed = false;
|
|
171
|
+
const processedMessages = [];
|
|
172
|
+
let mergedFiles = update.files ? {
|
|
173
|
+
...update.files
|
|
174
|
+
} : void 0;
|
|
175
|
+
for (const message of update.messages){
|
|
176
|
+
if (!messages_namespaceObject.ToolMessage.isInstance(message)) {
|
|
177
|
+
processedMessages.push(message);
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const processed = await processToolMessage(message, request, backend, maxCharsBeforeEvict, excludedTools);
|
|
181
|
+
processedMessages.push(processed.message);
|
|
182
|
+
if (processed.changed) changed = true;
|
|
183
|
+
if (processed.filesUpdate) mergedFiles = {
|
|
184
|
+
...mergedFiles ?? {},
|
|
185
|
+
...processed.filesUpdate
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (!changed) return result;
|
|
189
|
+
return new langgraph_namespaceObject.Command({
|
|
190
|
+
update: {
|
|
191
|
+
...update,
|
|
192
|
+
messages: processedMessages,
|
|
193
|
+
...mergedFiles ? {
|
|
194
|
+
files: mergedFiles
|
|
195
|
+
} : {}
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
exports.createLargeToolResultsMiddleware = __webpack_exports__.createLargeToolResultsMiddleware;
|
|
202
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
203
|
+
"createLargeToolResultsMiddleware"
|
|
204
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
205
|
+
Object.defineProperty(exports, '__esModule', {
|
|
206
|
+
value: true
|
|
207
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type AgentMiddleware } from "langchain";
|
|
2
|
+
type ToolResultWriteResult = {
|
|
3
|
+
error?: string;
|
|
4
|
+
path?: string;
|
|
5
|
+
filesUpdate?: Record<string, unknown> | null;
|
|
6
|
+
};
|
|
7
|
+
type ToolResultBackend = {
|
|
8
|
+
write: (filePath: string, content: string) => Promise<ToolResultWriteResult> | ToolResultWriteResult;
|
|
9
|
+
};
|
|
10
|
+
type LargeToolResultsMiddlewareOptions = {
|
|
11
|
+
backend: () => ToolResultBackend;
|
|
12
|
+
toolTokenLimitBeforeEvict?: number;
|
|
13
|
+
excludedTools?: Iterable<string>;
|
|
14
|
+
};
|
|
15
|
+
export declare const createLargeToolResultsMiddleware: (options: LargeToolResultsMiddlewareOptions) => AgentMiddleware;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { ToolMessage } from "@langchain/core/messages";
|
|
2
|
+
import { Command, isCommand } from "@langchain/langgraph";
|
|
3
|
+
import { MIDDLEWARE_BRAND } from "langchain";
|
|
4
|
+
const DEFAULT_TOOL_TOKEN_LIMIT_BEFORE_EVICT = 20000;
|
|
5
|
+
const NUM_CHARS_PER_TOKEN = 4;
|
|
6
|
+
const MAX_PREVIEW_LINE_CHARS = 1000;
|
|
7
|
+
const PREVIEW_HEAD_LINES = 5;
|
|
8
|
+
const PREVIEW_TAIL_LINES = 5;
|
|
9
|
+
const LARGE_TOOL_RESULTS_DIR = "/large_tool_results";
|
|
10
|
+
const DEFAULT_EXCLUDED_TOOLS = new Set([
|
|
11
|
+
"ls",
|
|
12
|
+
"glob",
|
|
13
|
+
"grep",
|
|
14
|
+
"read_file",
|
|
15
|
+
"edit_file",
|
|
16
|
+
"write_file",
|
|
17
|
+
"execute"
|
|
18
|
+
]);
|
|
19
|
+
const sanitizeToolCallId = (toolCallId)=>toolCallId.replace(/\./g, "_").replace(/\//g, "_").replace(/\\/g, "_");
|
|
20
|
+
const formatContentWithLineNumbers = (lines, startLine = 1)=>lines.map((line, index)=>`${String(startLine + index).padStart(4, " ")} | ${line}`).join("\n");
|
|
21
|
+
const createContentPreview = (content, headLines = PREVIEW_HEAD_LINES, tailLines = PREVIEW_TAIL_LINES)=>{
|
|
22
|
+
const lines = content.split("\n");
|
|
23
|
+
if (lines.length <= headLines + tailLines) return formatContentWithLineNumbers(lines.map((line)=>line.slice(0, MAX_PREVIEW_LINE_CHARS)));
|
|
24
|
+
const head = lines.slice(0, headLines).map((line)=>line.slice(0, MAX_PREVIEW_LINE_CHARS));
|
|
25
|
+
const tail = lines.slice(-tailLines).map((line)=>line.slice(0, MAX_PREVIEW_LINE_CHARS));
|
|
26
|
+
return [
|
|
27
|
+
formatContentWithLineNumbers(head, 1),
|
|
28
|
+
`... [${lines.length - headLines - tailLines} lines truncated] ...`,
|
|
29
|
+
formatContentWithLineNumbers(tail, lines.length - tailLines + 1)
|
|
30
|
+
].join("\n");
|
|
31
|
+
};
|
|
32
|
+
const serializeToolContent = (content)=>{
|
|
33
|
+
if ("string" == typeof content) return {
|
|
34
|
+
serialized: content,
|
|
35
|
+
extension: ".txt"
|
|
36
|
+
};
|
|
37
|
+
if (null == content || "number" == typeof content || "boolean" == typeof content || "bigint" == typeof content) return {
|
|
38
|
+
serialized: String(content),
|
|
39
|
+
extension: ".txt"
|
|
40
|
+
};
|
|
41
|
+
try {
|
|
42
|
+
return {
|
|
43
|
+
serialized: JSON.stringify(content, null, 2),
|
|
44
|
+
extension: ".json"
|
|
45
|
+
};
|
|
46
|
+
} catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const buildEvictedMessage = (params)=>{
|
|
51
|
+
if (!params.filePath) return [
|
|
52
|
+
`Tool result too large. Wingman replaced the full output for tool call ${params.toolCallId} with a preview to keep the model context safe.`,
|
|
53
|
+
params.writeError ? `The full output could not be persisted to the agent filesystem: ${params.writeError}` : null,
|
|
54
|
+
"Preview:",
|
|
55
|
+
params.contentPreview
|
|
56
|
+
].filter(Boolean).join("\n\n");
|
|
57
|
+
return [
|
|
58
|
+
`Tool result too large. The full output for tool call ${params.toolCallId} was saved to ${params.filePath}.`,
|
|
59
|
+
"Use read_file with pagination to inspect it safely, for example offset=0 and limit=100.",
|
|
60
|
+
"Preview:",
|
|
61
|
+
params.contentPreview
|
|
62
|
+
].join("\n\n");
|
|
63
|
+
};
|
|
64
|
+
const createToolMessageReplacement = (message, content)=>new ToolMessage({
|
|
65
|
+
content,
|
|
66
|
+
tool_call_id: message.tool_call_id,
|
|
67
|
+
name: message.name,
|
|
68
|
+
id: message.id,
|
|
69
|
+
artifact: message.artifact,
|
|
70
|
+
status: message.status,
|
|
71
|
+
metadata: message.metadata,
|
|
72
|
+
additional_kwargs: message.additional_kwargs,
|
|
73
|
+
response_metadata: message.response_metadata
|
|
74
|
+
});
|
|
75
|
+
const processToolMessage = async (message, request, backend, maxCharsBeforeEvict, excludedTools)=>{
|
|
76
|
+
const toolName = request.toolCall?.name || message.name;
|
|
77
|
+
if (toolName && excludedTools.has(toolName)) return {
|
|
78
|
+
message,
|
|
79
|
+
filesUpdate: null,
|
|
80
|
+
changed: false
|
|
81
|
+
};
|
|
82
|
+
const serialized = serializeToolContent(message.content);
|
|
83
|
+
if (!serialized || serialized.serialized.length <= maxCharsBeforeEvict) return {
|
|
84
|
+
message,
|
|
85
|
+
filesUpdate: null,
|
|
86
|
+
changed: false
|
|
87
|
+
};
|
|
88
|
+
const toolCallId = request.toolCall?.id || message.tool_call_id || `${toolName || "tool"}_${Date.now()}`;
|
|
89
|
+
const safeToolCallId = sanitizeToolCallId(toolCallId);
|
|
90
|
+
const targetPath = `${LARGE_TOOL_RESULTS_DIR}/${safeToolCallId}${serialized.extension}`;
|
|
91
|
+
const preview = createContentPreview(serialized.serialized);
|
|
92
|
+
try {
|
|
93
|
+
const writeResult = await backend.write(targetPath, serialized.serialized);
|
|
94
|
+
const replacement = createToolMessageReplacement(message, buildEvictedMessage({
|
|
95
|
+
toolCallId,
|
|
96
|
+
filePath: writeResult.error ? void 0 : writeResult.path || targetPath,
|
|
97
|
+
contentPreview: preview,
|
|
98
|
+
writeError: writeResult.error
|
|
99
|
+
}));
|
|
100
|
+
return {
|
|
101
|
+
message: replacement,
|
|
102
|
+
filesUpdate: writeResult.error ? null : writeResult.filesUpdate ?? null,
|
|
103
|
+
changed: true
|
|
104
|
+
};
|
|
105
|
+
} catch (error) {
|
|
106
|
+
return {
|
|
107
|
+
message: createToolMessageReplacement(message, buildEvictedMessage({
|
|
108
|
+
toolCallId,
|
|
109
|
+
contentPreview: preview,
|
|
110
|
+
writeError: error instanceof Error ? error.message : String(error)
|
|
111
|
+
})),
|
|
112
|
+
filesUpdate: null,
|
|
113
|
+
changed: true
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const createLargeToolResultsMiddleware = (options)=>{
|
|
118
|
+
const maxCharsBeforeEvict = (options.toolTokenLimitBeforeEvict ?? DEFAULT_TOOL_TOKEN_LIMIT_BEFORE_EVICT) * NUM_CHARS_PER_TOKEN;
|
|
119
|
+
const excludedTools = new Set(options.excludedTools ?? DEFAULT_EXCLUDED_TOOLS);
|
|
120
|
+
return {
|
|
121
|
+
name: "large-tool-results-middleware",
|
|
122
|
+
[MIDDLEWARE_BRAND]: true,
|
|
123
|
+
wrapToolCall: async (request, handler)=>{
|
|
124
|
+
const result = await handler(request);
|
|
125
|
+
if (maxCharsBeforeEvict <= 0) return result;
|
|
126
|
+
const backend = options.backend();
|
|
127
|
+
if (ToolMessage.isInstance(result)) {
|
|
128
|
+
const processed = await processToolMessage(result, request, backend, maxCharsBeforeEvict, excludedTools);
|
|
129
|
+
if (processed.filesUpdate) return new Command({
|
|
130
|
+
update: {
|
|
131
|
+
files: processed.filesUpdate,
|
|
132
|
+
messages: [
|
|
133
|
+
processed.message
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
return processed.message;
|
|
138
|
+
}
|
|
139
|
+
if (!isCommand(result)) return result;
|
|
140
|
+
const update = result.update;
|
|
141
|
+
if (!update?.messages || !Array.isArray(update.messages)) return result;
|
|
142
|
+
let changed = false;
|
|
143
|
+
const processedMessages = [];
|
|
144
|
+
let mergedFiles = update.files ? {
|
|
145
|
+
...update.files
|
|
146
|
+
} : void 0;
|
|
147
|
+
for (const message of update.messages){
|
|
148
|
+
if (!ToolMessage.isInstance(message)) {
|
|
149
|
+
processedMessages.push(message);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const processed = await processToolMessage(message, request, backend, maxCharsBeforeEvict, excludedTools);
|
|
153
|
+
processedMessages.push(processed.message);
|
|
154
|
+
if (processed.changed) changed = true;
|
|
155
|
+
if (processed.filesUpdate) mergedFiles = {
|
|
156
|
+
...mergedFiles ?? {},
|
|
157
|
+
...processed.filesUpdate
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (!changed) return result;
|
|
161
|
+
return new Command({
|
|
162
|
+
update: {
|
|
163
|
+
...update,
|
|
164
|
+
messages: processedMessages,
|
|
165
|
+
...mergedFiles ? {
|
|
166
|
+
files: mergedFiles
|
|
167
|
+
} : {}
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
export { createLargeToolResultsMiddleware };
|