@wingman-ai/gateway 0.5.3 → 0.5.4
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/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/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 +1189 -0
- package/dist/agent/tools/browser_runtime.d.ts +560 -0
- package/dist/agent/tools/browser_runtime.js +1122 -0
- package/dist/agent/tools/browser_session.cjs +153 -0
- package/dist/agent/tools/browser_session.d.ts +741 -0
- package/dist/agent/tools/browser_session.js +110 -0
- package/dist/agent/tools/browser_session_manager.cjs +202 -0
- package/dist/agent/tools/browser_session_manager.d.ts +64 -0
- package/dist/agent/tools/browser_session_manager.js +165 -0
- package/dist/cli/commands/init.cjs +5 -1
- package/dist/cli/commands/init.js +5 -1
- 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 +86 -22
- package/dist/cli/core/agentInvoker.d.ts +10 -3
- package/dist/cli/core/agentInvoker.js +86 -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/types.d.ts +2 -1
- package/dist/webui/assets/index-XrEnkZiq.css +11 -0
- package/dist/webui/assets/index-mDs6HbKM.js +215 -0
- package/dist/webui/index.html +2 -2
- package/package.json +10 -10
- package/templates/agents/README.md +2 -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 +8 -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 +5 -0
- package/templates/agents/researcher/agent.md +11 -0
- 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
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
4
|
-
import { AgentLoader } from "../config/agentLoader.js";
|
|
5
|
-
const TEST_CONFIG_DIR = ".wingman-test";
|
|
6
|
-
describe("AgentConfigLoader", ()=>{
|
|
7
|
-
beforeEach(()=>{
|
|
8
|
-
if (existsSync(TEST_CONFIG_DIR)) rmSync(TEST_CONFIG_DIR, {
|
|
9
|
-
recursive: true,
|
|
10
|
-
force: true
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
afterEach(()=>{
|
|
14
|
-
if (existsSync(TEST_CONFIG_DIR)) rmSync(TEST_CONFIG_DIR, {
|
|
15
|
-
recursive: true,
|
|
16
|
-
force: true
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
describe("loadAllAgentConfigs", ()=>{
|
|
20
|
-
it("should return empty array when no config exists", ()=>{
|
|
21
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
22
|
-
const agents = loader.loadAllAgentConfigs();
|
|
23
|
-
expect(agents).toEqual([]);
|
|
24
|
-
});
|
|
25
|
-
it("should load agent from a single agent directory", ()=>{
|
|
26
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "test-agent");
|
|
27
|
-
mkdirSync(agentDir, {
|
|
28
|
-
recursive: true
|
|
29
|
-
});
|
|
30
|
-
const config = {
|
|
31
|
-
name: "test-agent",
|
|
32
|
-
description: "A test agent",
|
|
33
|
-
systemPrompt: "You are a test agent",
|
|
34
|
-
tools: [
|
|
35
|
-
"think"
|
|
36
|
-
]
|
|
37
|
-
};
|
|
38
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
39
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
40
|
-
const agents = loader.loadAllAgentConfigs();
|
|
41
|
-
expect(agents).toHaveLength(1);
|
|
42
|
-
expect(agents[0].name).toBe("test-agent");
|
|
43
|
-
expect(agents[0].description).toBe("A test agent");
|
|
44
|
-
expect(agents[0].systemPrompt).toBe("You are a test agent");
|
|
45
|
-
expect(agents[0].tools).toHaveLength(1);
|
|
46
|
-
});
|
|
47
|
-
it("should load agents from a directory of agent.json files", ()=>{
|
|
48
|
-
const agent1Dir = join(TEST_CONFIG_DIR, "agents", "agent-1");
|
|
49
|
-
const agent2Dir = join(TEST_CONFIG_DIR, "agents", "agent-2");
|
|
50
|
-
mkdirSync(agent1Dir, {
|
|
51
|
-
recursive: true
|
|
52
|
-
});
|
|
53
|
-
mkdirSync(agent2Dir, {
|
|
54
|
-
recursive: true
|
|
55
|
-
});
|
|
56
|
-
const agent1 = {
|
|
57
|
-
name: "agent-1",
|
|
58
|
-
description: "First agent",
|
|
59
|
-
systemPrompt: "You are agent 1"
|
|
60
|
-
};
|
|
61
|
-
const agent2 = {
|
|
62
|
-
name: "agent-2",
|
|
63
|
-
description: "Second agent",
|
|
64
|
-
systemPrompt: "You are agent 2",
|
|
65
|
-
tools: [
|
|
66
|
-
"web_crawler"
|
|
67
|
-
]
|
|
68
|
-
};
|
|
69
|
-
writeFileSync(join(agent1Dir, "agent.json"), JSON.stringify(agent1));
|
|
70
|
-
writeFileSync(join(agent2Dir, "agent.json"), JSON.stringify(agent2));
|
|
71
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
72
|
-
const agents = loader.loadAllAgentConfigs();
|
|
73
|
-
expect(agents).toHaveLength(2);
|
|
74
|
-
expect(agents.map((agent)=>agent.name)).toContain("agent-1");
|
|
75
|
-
expect(agents.map((agent)=>agent.name)).toContain("agent-2");
|
|
76
|
-
const agentWithTools = agents.find((agent)=>"agent-2" === agent.name);
|
|
77
|
-
expect(agentWithTools?.tools).toHaveLength(1);
|
|
78
|
-
});
|
|
79
|
-
it("should prioritize agent.json over agent.md", ()=>{
|
|
80
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "mixed-agent");
|
|
81
|
-
mkdirSync(agentDir, {
|
|
82
|
-
recursive: true
|
|
83
|
-
});
|
|
84
|
-
const jsonConfig = {
|
|
85
|
-
name: "from-json",
|
|
86
|
-
description: "From JSON",
|
|
87
|
-
systemPrompt: "JSON agent"
|
|
88
|
-
};
|
|
89
|
-
const markdownConfig = `---
|
|
90
|
-
name: from-markdown
|
|
91
|
-
description: From Markdown
|
|
92
|
-
---
|
|
93
|
-
Markdown agent`;
|
|
94
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(jsonConfig));
|
|
95
|
-
writeFileSync(join(agentDir, "agent.md"), markdownConfig);
|
|
96
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
97
|
-
const agents = loader.loadAllAgentConfigs();
|
|
98
|
-
expect(agents).toHaveLength(1);
|
|
99
|
-
expect(agents[0].name).toBe("from-json");
|
|
100
|
-
});
|
|
101
|
-
it("should handle malformed JSON gracefully", ()=>{
|
|
102
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "bad-agent");
|
|
103
|
-
mkdirSync(agentDir, {
|
|
104
|
-
recursive: true
|
|
105
|
-
});
|
|
106
|
-
writeFileSync(join(agentDir, "agent.json"), "{ invalid json");
|
|
107
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
108
|
-
const agents = loader.loadAllAgentConfigs();
|
|
109
|
-
expect(agents).toEqual([]);
|
|
110
|
-
});
|
|
111
|
-
it("should skip invalid agent configs in directory", ()=>{
|
|
112
|
-
const validDir = join(TEST_CONFIG_DIR, "agents", "valid-agent");
|
|
113
|
-
const invalidDir = join(TEST_CONFIG_DIR, "agents", "invalid-agent");
|
|
114
|
-
mkdirSync(validDir, {
|
|
115
|
-
recursive: true
|
|
116
|
-
});
|
|
117
|
-
mkdirSync(invalidDir, {
|
|
118
|
-
recursive: true
|
|
119
|
-
});
|
|
120
|
-
const validAgent = {
|
|
121
|
-
name: "valid-agent",
|
|
122
|
-
description: "Valid agent",
|
|
123
|
-
systemPrompt: "Valid"
|
|
124
|
-
};
|
|
125
|
-
const invalidAgent = {
|
|
126
|
-
name: "invalid-agent"
|
|
127
|
-
};
|
|
128
|
-
writeFileSync(join(validDir, "agent.json"), JSON.stringify(validAgent));
|
|
129
|
-
writeFileSync(join(invalidDir, "agent.json"), JSON.stringify(invalidAgent));
|
|
130
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
131
|
-
const agents = loader.loadAllAgentConfigs();
|
|
132
|
-
expect(agents).toHaveLength(1);
|
|
133
|
-
expect(agents[0].name).toBe("valid-agent");
|
|
134
|
-
});
|
|
135
|
-
it("should create agent with model override", ()=>{
|
|
136
|
-
const config = {
|
|
137
|
-
name: "custom-model-agent",
|
|
138
|
-
description: "Agent with custom model",
|
|
139
|
-
systemPrompt: "You are a custom agent",
|
|
140
|
-
model: "anthropic:claude-opus-4-5"
|
|
141
|
-
};
|
|
142
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "custom-model-agent");
|
|
143
|
-
mkdirSync(agentDir, {
|
|
144
|
-
recursive: true
|
|
145
|
-
});
|
|
146
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
147
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
148
|
-
const agents = loader.loadAllAgentConfigs();
|
|
149
|
-
expect(agents).toHaveLength(1);
|
|
150
|
-
expect(agents[0].model).toBeDefined();
|
|
151
|
-
});
|
|
152
|
-
it("should create agent with command_execute tool and custom options", ()=>{
|
|
153
|
-
const config = {
|
|
154
|
-
name: "executor-agent",
|
|
155
|
-
description: "Executes commands",
|
|
156
|
-
systemPrompt: "You execute commands",
|
|
157
|
-
tools: [
|
|
158
|
-
"command_execute"
|
|
159
|
-
],
|
|
160
|
-
blockedCommands: [
|
|
161
|
-
"rm",
|
|
162
|
-
"mv"
|
|
163
|
-
],
|
|
164
|
-
allowScriptExecution: false,
|
|
165
|
-
commandTimeout: 60000
|
|
166
|
-
};
|
|
167
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "executor-agent");
|
|
168
|
-
mkdirSync(agentDir, {
|
|
169
|
-
recursive: true
|
|
170
|
-
});
|
|
171
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
172
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
173
|
-
const agents = loader.loadAllAgentConfigs();
|
|
174
|
-
expect(agents).toHaveLength(1);
|
|
175
|
-
expect(agents[0].tools).toHaveLength(1);
|
|
176
|
-
expect(agents[0].tools?.[0]).toBe("command_execute");
|
|
177
|
-
});
|
|
178
|
-
it("should ignore non-JSON files in directory", ()=>{
|
|
179
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "valid-agent");
|
|
180
|
-
mkdirSync(agentDir, {
|
|
181
|
-
recursive: true
|
|
182
|
-
});
|
|
183
|
-
const validAgent = {
|
|
184
|
-
name: "valid-agent",
|
|
185
|
-
description: "Valid",
|
|
186
|
-
systemPrompt: "Valid"
|
|
187
|
-
};
|
|
188
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(validAgent));
|
|
189
|
-
writeFileSync(join(agentDir, "readme.md"), "# README");
|
|
190
|
-
writeFileSync(join(agentDir, "notes.txt"), "Some notes");
|
|
191
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
192
|
-
const agents = loader.loadAllAgentConfigs();
|
|
193
|
-
expect(agents).toHaveLength(1);
|
|
194
|
-
expect(agents[0].name).toBe("valid-agent");
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
describe("loadAgent", ()=>{
|
|
198
|
-
it("should always inject node tools for top-level agents", async ()=>{
|
|
199
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "node-enabled-agent");
|
|
200
|
-
mkdirSync(agentDir, {
|
|
201
|
-
recursive: true
|
|
202
|
-
});
|
|
203
|
-
const config = {
|
|
204
|
-
name: "node-enabled-agent",
|
|
205
|
-
description: "Agent with default node tools",
|
|
206
|
-
systemPrompt: "You are node capable"
|
|
207
|
-
};
|
|
208
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
209
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
210
|
-
const agent = await loader.loadAgent("node-enabled-agent");
|
|
211
|
-
const toolNames = (agent?.tools || []).map((tool)=>tool.name);
|
|
212
|
-
expect(toolNames).toContain("node_notify");
|
|
213
|
-
expect(toolNames).toContain("node_run");
|
|
214
|
-
});
|
|
215
|
-
it("should always inject and deduplicate node tools for subagents", async ()=>{
|
|
216
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "node-subagent-parent");
|
|
217
|
-
mkdirSync(agentDir, {
|
|
218
|
-
recursive: true
|
|
219
|
-
});
|
|
220
|
-
const config = {
|
|
221
|
-
name: "node-subagent-parent",
|
|
222
|
-
description: "Parent agent",
|
|
223
|
-
systemPrompt: "You are the parent",
|
|
224
|
-
subAgents: [
|
|
225
|
-
{
|
|
226
|
-
name: "node-subagent",
|
|
227
|
-
description: "Subagent",
|
|
228
|
-
systemPrompt: "You are a subagent",
|
|
229
|
-
tools: [
|
|
230
|
-
"node_run"
|
|
231
|
-
]
|
|
232
|
-
}
|
|
233
|
-
]
|
|
234
|
-
};
|
|
235
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
236
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
237
|
-
const agent = await loader.loadAgent("node-subagent-parent");
|
|
238
|
-
const sub = agent?.subagents?.[0];
|
|
239
|
-
const toolNames = (sub?.tools || []).map((tool)=>tool.name);
|
|
240
|
-
expect(toolNames).toContain("node_notify");
|
|
241
|
-
expect(toolNames.filter((name)=>"node_run" === name)).toHaveLength(1);
|
|
242
|
-
});
|
|
243
|
-
it("should hydrate subagent tools for runtime use", async ()=>{
|
|
244
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "parent-agent");
|
|
245
|
-
mkdirSync(agentDir, {
|
|
246
|
-
recursive: true
|
|
247
|
-
});
|
|
248
|
-
const config = {
|
|
249
|
-
name: "parent-agent",
|
|
250
|
-
description: "Parent agent",
|
|
251
|
-
systemPrompt: "You are the parent",
|
|
252
|
-
subAgents: [
|
|
253
|
-
{
|
|
254
|
-
name: "researcher",
|
|
255
|
-
description: "Research subagent",
|
|
256
|
-
systemPrompt: "You research things",
|
|
257
|
-
tools: [
|
|
258
|
-
"think"
|
|
259
|
-
]
|
|
260
|
-
}
|
|
261
|
-
]
|
|
262
|
-
};
|
|
263
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
264
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
265
|
-
const agent = await loader.loadAgent("parent-agent");
|
|
266
|
-
expect(agent).toBeDefined();
|
|
267
|
-
expect(agent?.subagents).toBeDefined();
|
|
268
|
-
expect(agent?.subagents?.length).toBe(1);
|
|
269
|
-
const sub = agent?.subagents?.[0];
|
|
270
|
-
expect(Array.isArray(sub.tools)).toBe(true);
|
|
271
|
-
expect(sub.tools?.[0]).toHaveProperty("name", "think");
|
|
272
|
-
});
|
|
273
|
-
it("should append prompt refinement instructions when enabled", async ()=>{
|
|
274
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "refiner-agent");
|
|
275
|
-
mkdirSync(agentDir, {
|
|
276
|
-
recursive: true
|
|
277
|
-
});
|
|
278
|
-
const config = {
|
|
279
|
-
name: "refiner-agent",
|
|
280
|
-
description: "Agent that refines its prompt",
|
|
281
|
-
systemPrompt: "You are a refiner agent",
|
|
282
|
-
promptRefinement: true
|
|
283
|
-
};
|
|
284
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
285
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
286
|
-
const agent = await loader.loadAgent("refiner-agent");
|
|
287
|
-
expect(agent).toBeDefined();
|
|
288
|
-
expect(agent?.systemPrompt).toContain("[[wingman:prompt-refinement]]");
|
|
289
|
-
expect(agent?.systemPrompt).toContain("/memories/agents/refiner-agent/instructions.md");
|
|
290
|
-
expect(agent?.systemPrompt).toContain("overlay as secondary preference memory");
|
|
291
|
-
});
|
|
292
|
-
it("should apply reasoningEffort when model supports it", async ()=>{
|
|
293
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "reasoning-agent");
|
|
294
|
-
mkdirSync(agentDir, {
|
|
295
|
-
recursive: true
|
|
296
|
-
});
|
|
297
|
-
const config = {
|
|
298
|
-
name: "reasoning-agent",
|
|
299
|
-
description: "Agent with reasoning effort",
|
|
300
|
-
systemPrompt: "You are a reasoner",
|
|
301
|
-
model: "openai:gpt-5.2-codex",
|
|
302
|
-
reasoningEffort: "high"
|
|
303
|
-
};
|
|
304
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
305
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
306
|
-
const agent = await loader.loadAgent("reasoning-agent");
|
|
307
|
-
const model = agent?.model;
|
|
308
|
-
expect(model.reasoning?.effort).toBe("high");
|
|
309
|
-
});
|
|
310
|
-
it("should normalize thinkingEffort alias to reasoningEffort", async ()=>{
|
|
311
|
-
const agentDir = join(TEST_CONFIG_DIR, "agents", "legacy-thinking-agent");
|
|
312
|
-
mkdirSync(agentDir, {
|
|
313
|
-
recursive: true
|
|
314
|
-
});
|
|
315
|
-
const config = {
|
|
316
|
-
name: "legacy-thinking-agent",
|
|
317
|
-
description: "Agent with legacy thinking effort field",
|
|
318
|
-
systemPrompt: "You are a reasoner",
|
|
319
|
-
model: "openai:gpt-5.2-codex",
|
|
320
|
-
thinkingEffort: "medium"
|
|
321
|
-
};
|
|
322
|
-
writeFileSync(join(agentDir, "agent.json"), JSON.stringify(config));
|
|
323
|
-
const loader = new AgentLoader(TEST_CONFIG_DIR);
|
|
324
|
-
const agent = await loader.loadAgent("legacy-thinking-agent");
|
|
325
|
-
const model = agent?.model;
|
|
326
|
-
expect(model.reasoning?.effort).toBe("medium");
|
|
327
|
-
});
|
|
328
|
-
});
|
|
329
|
-
});
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_exports__ = {};
|
|
3
|
-
const external_vitest_namespaceObject = require("vitest");
|
|
4
|
-
const background_terminal_cjs_namespaceObject = require("../tools/background_terminal.cjs");
|
|
5
|
-
const terminal_session_manager_cjs_namespaceObject = require("../tools/terminal_session_manager.cjs");
|
|
6
|
-
(0, external_vitest_namespaceObject.describe)("background terminal tools", ()=>{
|
|
7
|
-
(0, external_vitest_namespaceObject.it)("describes long-running tasks in the tool description", ()=>{
|
|
8
|
-
const manager = new terminal_session_manager_cjs_namespaceObject.TerminalSessionManager();
|
|
9
|
-
try {
|
|
10
|
-
const tool = (0, background_terminal_cjs_namespaceObject.createBackgroundTerminalTool)({
|
|
11
|
-
workspace: process.cwd(),
|
|
12
|
-
ownerId: "description-owner",
|
|
13
|
-
sessionManager: manager
|
|
14
|
-
});
|
|
15
|
-
const description = String(tool.description);
|
|
16
|
-
(0, external_vitest_namespaceObject.expect)(description).toContain("may not exit on their own");
|
|
17
|
-
(0, external_vitest_namespaceObject.expect)(description).toContain("web servers");
|
|
18
|
-
(0, external_vitest_namespaceObject.expect)(description).toContain("test watchers");
|
|
19
|
-
} finally{
|
|
20
|
-
manager.dispose();
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
(0, external_vitest_namespaceObject.it)("rejects blocked commands", async ()=>{
|
|
24
|
-
const manager = new terminal_session_manager_cjs_namespaceObject.TerminalSessionManager();
|
|
25
|
-
try {
|
|
26
|
-
const tool = (0, background_terminal_cjs_namespaceObject.createBackgroundTerminalTool)({
|
|
27
|
-
workspace: process.cwd(),
|
|
28
|
-
ownerId: "test-owner",
|
|
29
|
-
sessionManager: manager,
|
|
30
|
-
blockedCommands: [
|
|
31
|
-
"rm"
|
|
32
|
-
]
|
|
33
|
-
});
|
|
34
|
-
const result = await tool.invoke({
|
|
35
|
-
command: "rm -rf ./tmp"
|
|
36
|
-
});
|
|
37
|
-
(0, external_vitest_namespaceObject.expect)(result.error).toContain("rejected");
|
|
38
|
-
} finally{
|
|
39
|
-
manager.dispose();
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
(0, external_vitest_namespaceObject.it)("supports start and write/poll flow", async ()=>{
|
|
43
|
-
const manager = new terminal_session_manager_cjs_namespaceObject.TerminalSessionManager();
|
|
44
|
-
try {
|
|
45
|
-
const tool = (0, background_terminal_cjs_namespaceObject.createBackgroundTerminalTool)({
|
|
46
|
-
workspace: process.cwd(),
|
|
47
|
-
ownerId: "owner-flow",
|
|
48
|
-
sessionManager: manager
|
|
49
|
-
});
|
|
50
|
-
const started = await tool.invoke({
|
|
51
|
-
command: "cat",
|
|
52
|
-
wait_ms: 10
|
|
53
|
-
});
|
|
54
|
-
(0, external_vitest_namespaceObject.expect)(typeof started.session_id).toBe("string");
|
|
55
|
-
const sessionId = String(started.session_id);
|
|
56
|
-
const writeResult = await tool.invoke({
|
|
57
|
-
session_id: sessionId,
|
|
58
|
-
chars: "hello\n",
|
|
59
|
-
wait_ms: 1000
|
|
60
|
-
});
|
|
61
|
-
(0, external_vitest_namespaceObject.expect)(String(writeResult.output || "")).toContain("hello");
|
|
62
|
-
} finally{
|
|
63
|
-
manager.dispose();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
68
|
-
Object.defineProperty(exports, '__esModule', {
|
|
69
|
-
value: true
|
|
70
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { createBackgroundTerminalTool } from "../tools/background_terminal.js";
|
|
3
|
-
import { TerminalSessionManager } from "../tools/terminal_session_manager.js";
|
|
4
|
-
describe("background terminal tools", ()=>{
|
|
5
|
-
it("describes long-running tasks in the tool description", ()=>{
|
|
6
|
-
const manager = new TerminalSessionManager();
|
|
7
|
-
try {
|
|
8
|
-
const tool = createBackgroundTerminalTool({
|
|
9
|
-
workspace: process.cwd(),
|
|
10
|
-
ownerId: "description-owner",
|
|
11
|
-
sessionManager: manager
|
|
12
|
-
});
|
|
13
|
-
const description = String(tool.description);
|
|
14
|
-
expect(description).toContain("may not exit on their own");
|
|
15
|
-
expect(description).toContain("web servers");
|
|
16
|
-
expect(description).toContain("test watchers");
|
|
17
|
-
} finally{
|
|
18
|
-
manager.dispose();
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
it("rejects blocked commands", async ()=>{
|
|
22
|
-
const manager = new TerminalSessionManager();
|
|
23
|
-
try {
|
|
24
|
-
const tool = createBackgroundTerminalTool({
|
|
25
|
-
workspace: process.cwd(),
|
|
26
|
-
ownerId: "test-owner",
|
|
27
|
-
sessionManager: manager,
|
|
28
|
-
blockedCommands: [
|
|
29
|
-
"rm"
|
|
30
|
-
]
|
|
31
|
-
});
|
|
32
|
-
const result = await tool.invoke({
|
|
33
|
-
command: "rm -rf ./tmp"
|
|
34
|
-
});
|
|
35
|
-
expect(result.error).toContain("rejected");
|
|
36
|
-
} finally{
|
|
37
|
-
manager.dispose();
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
it("supports start and write/poll flow", async ()=>{
|
|
41
|
-
const manager = new TerminalSessionManager();
|
|
42
|
-
try {
|
|
43
|
-
const tool = createBackgroundTerminalTool({
|
|
44
|
-
workspace: process.cwd(),
|
|
45
|
-
ownerId: "owner-flow",
|
|
46
|
-
sessionManager: manager
|
|
47
|
-
});
|
|
48
|
-
const started = await tool.invoke({
|
|
49
|
-
command: "cat",
|
|
50
|
-
wait_ms: 10
|
|
51
|
-
});
|
|
52
|
-
expect(typeof started.session_id).toBe("string");
|
|
53
|
-
const sessionId = String(started.session_id);
|
|
54
|
-
const writeResult = await tool.invoke({
|
|
55
|
-
session_id: sessionId,
|
|
56
|
-
chars: "hello\n",
|
|
57
|
-
wait_ms: 1000
|
|
58
|
-
});
|
|
59
|
-
expect(String(writeResult.output || "")).toContain("hello");
|
|
60
|
-
} finally{
|
|
61
|
-
manager.dispose();
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
});
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_exports__ = {};
|
|
3
|
-
const external_node_fs_namespaceObject = require("node:fs");
|
|
4
|
-
const external_node_os_namespaceObject = require("node:os");
|
|
5
|
-
const external_node_path_namespaceObject = require("node:path");
|
|
6
|
-
const external_vitest_namespaceObject = require("vitest");
|
|
7
|
-
const browser_control_cjs_namespaceObject = require("../tools/browser_control.cjs");
|
|
8
|
-
(0, external_vitest_namespaceObject.describe)("browser_control helpers", ()=>{
|
|
9
|
-
const tempDirs = [];
|
|
10
|
-
(0, external_vitest_namespaceObject.afterEach)(()=>{
|
|
11
|
-
for (const dir of tempDirs)(0, external_node_fs_namespaceObject.rmSync)(dir, {
|
|
12
|
-
recursive: true,
|
|
13
|
-
force: true
|
|
14
|
-
});
|
|
15
|
-
tempDirs.length = 0;
|
|
16
|
-
});
|
|
17
|
-
(0, external_vitest_namespaceObject.it)("removes stale DevToolsActivePort before launch", ()=>{
|
|
18
|
-
const userDataDir = (0, external_node_fs_namespaceObject.mkdtempSync)((0, external_node_path_namespaceObject.join)((0, external_node_os_namespaceObject.tmpdir)(), "wingman-browser-profile-"));
|
|
19
|
-
tempDirs.push(userDataDir);
|
|
20
|
-
const activePortPath = (0, external_node_path_namespaceObject.join)(userDataDir, "DevToolsActivePort");
|
|
21
|
-
(0, external_node_fs_namespaceObject.writeFileSync)(activePortPath, "52145\n/devtools/browser/stale");
|
|
22
|
-
(0, external_vitest_namespaceObject.expect)((0, external_node_fs_namespaceObject.existsSync)(activePortPath)).toBe(true);
|
|
23
|
-
(0, browser_control_cjs_namespaceObject.clearStaleDevtoolsArtifacts)(userDataDir);
|
|
24
|
-
(0, external_vitest_namespaceObject.expect)((0, external_node_fs_namespaceObject.existsSync)(activePortPath)).toBe(false);
|
|
25
|
-
});
|
|
26
|
-
(0, external_vitest_namespaceObject.it)("does not throw when DevToolsActivePort is absent", ()=>{
|
|
27
|
-
const userDataDir = (0, external_node_fs_namespaceObject.mkdtempSync)((0, external_node_path_namespaceObject.join)((0, external_node_os_namespaceObject.tmpdir)(), "wingman-browser-profile-"));
|
|
28
|
-
tempDirs.push(userDataDir);
|
|
29
|
-
(0, external_vitest_namespaceObject.expect)(()=>(0, browser_control_cjs_namespaceObject.clearStaleDevtoolsArtifacts)(userDataDir)).not.toThrow();
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
33
|
-
Object.defineProperty(exports, '__esModule', {
|
|
34
|
-
value: true
|
|
35
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { tmpdir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { afterEach, describe, expect, it } from "vitest";
|
|
5
|
-
import { clearStaleDevtoolsArtifacts } from "../tools/browser_control.js";
|
|
6
|
-
describe("browser_control helpers", ()=>{
|
|
7
|
-
const tempDirs = [];
|
|
8
|
-
afterEach(()=>{
|
|
9
|
-
for (const dir of tempDirs)rmSync(dir, {
|
|
10
|
-
recursive: true,
|
|
11
|
-
force: true
|
|
12
|
-
});
|
|
13
|
-
tempDirs.length = 0;
|
|
14
|
-
});
|
|
15
|
-
it("removes stale DevToolsActivePort before launch", ()=>{
|
|
16
|
-
const userDataDir = mkdtempSync(join(tmpdir(), "wingman-browser-profile-"));
|
|
17
|
-
tempDirs.push(userDataDir);
|
|
18
|
-
const activePortPath = join(userDataDir, "DevToolsActivePort");
|
|
19
|
-
writeFileSync(activePortPath, "52145\n/devtools/browser/stale");
|
|
20
|
-
expect(existsSync(activePortPath)).toBe(true);
|
|
21
|
-
clearStaleDevtoolsArtifacts(userDataDir);
|
|
22
|
-
expect(existsSync(activePortPath)).toBe(false);
|
|
23
|
-
});
|
|
24
|
-
it("does not throw when DevToolsActivePort is absent", ()=>{
|
|
25
|
-
const userDataDir = mkdtempSync(join(tmpdir(), "wingman-browser-profile-"));
|
|
26
|
-
tempDirs.push(userDataDir);
|
|
27
|
-
expect(()=>clearStaleDevtoolsArtifacts(userDataDir)).not.toThrow();
|
|
28
|
-
});
|
|
29
|
-
});
|