@wingman-ai/gateway 0.5.2 → 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.
Files changed (311) hide show
  1. package/dist/agent/config/agentConfig.cjs +4 -0
  2. package/dist/agent/config/agentConfig.d.ts +12 -0
  3. package/dist/agent/config/agentConfig.js +4 -0
  4. package/dist/agent/config/toolRegistry.cjs +75 -1
  5. package/dist/agent/config/toolRegistry.d.ts +3 -0
  6. package/dist/agent/config/toolRegistry.js +75 -1
  7. package/dist/agent/middleware/large-tool-results.cjs +207 -0
  8. package/dist/agent/middleware/large-tool-results.d.ts +16 -0
  9. package/dist/agent/middleware/large-tool-results.js +173 -0
  10. package/dist/agent/tools/browser_control.cjs +9 -1231
  11. package/dist/agent/tools/browser_control.d.ts +126 -234
  12. package/dist/agent/tools/browser_control.js +7 -1226
  13. package/dist/agent/tools/browser_runtime.cjs +1189 -0
  14. package/dist/agent/tools/browser_runtime.d.ts +560 -0
  15. package/dist/agent/tools/browser_runtime.js +1122 -0
  16. package/dist/agent/tools/browser_session.cjs +153 -0
  17. package/dist/agent/tools/browser_session.d.ts +741 -0
  18. package/dist/agent/tools/browser_session.js +110 -0
  19. package/dist/agent/tools/browser_session_manager.cjs +202 -0
  20. package/dist/agent/tools/browser_session_manager.d.ts +64 -0
  21. package/dist/agent/tools/browser_session_manager.js +165 -0
  22. package/dist/cli/commands/init.cjs +5 -1
  23. package/dist/cli/commands/init.js +5 -1
  24. package/dist/cli/config/loader.cjs +0 -5
  25. package/dist/cli/config/loader.js +0 -5
  26. package/dist/cli/config/schema.cjs +3 -7
  27. package/dist/cli/config/schema.d.ts +6 -6
  28. package/dist/cli/config/schema.js +3 -7
  29. package/dist/cli/core/agentInvoker.cjs +86 -22
  30. package/dist/cli/core/agentInvoker.d.ts +10 -3
  31. package/dist/cli/core/agentInvoker.js +86 -25
  32. package/dist/cli/core/outputManager.cjs +7 -2
  33. package/dist/cli/core/outputManager.d.ts +2 -2
  34. package/dist/cli/core/outputManager.js +7 -2
  35. package/dist/cli/types.d.ts +2 -1
  36. package/dist/webui/assets/index-XrEnkZiq.css +11 -0
  37. package/dist/webui/assets/index-mDs6HbKM.js +215 -0
  38. package/dist/webui/index.html +2 -2
  39. package/package.json +10 -10
  40. package/templates/agents/README.md +2 -1
  41. package/templates/agents/coding/agent.md +6 -13
  42. package/templates/agents/coding-v2/agent.md +6 -1
  43. package/templates/agents/game-dev/agent.md +8 -2
  44. package/templates/agents/game-dev/game-designer.md +4 -0
  45. package/templates/agents/game-dev/scene-engineer.md +4 -0
  46. package/templates/agents/main/agent.md +5 -0
  47. package/templates/agents/researcher/agent.md +11 -0
  48. package/templates/agents/stock-trader/agent.md +4 -0
  49. package/dist/agent/tests/agentConfig.test.cjs +0 -224
  50. package/dist/agent/tests/agentConfig.test.d.ts +0 -1
  51. package/dist/agent/tests/agentConfig.test.js +0 -218
  52. package/dist/agent/tests/agentLoader.test.cjs +0 -335
  53. package/dist/agent/tests/agentLoader.test.d.ts +0 -1
  54. package/dist/agent/tests/agentLoader.test.js +0 -329
  55. package/dist/agent/tests/backgroundTerminal.test.cjs +0 -70
  56. package/dist/agent/tests/backgroundTerminal.test.d.ts +0 -1
  57. package/dist/agent/tests/backgroundTerminal.test.js +0 -64
  58. package/dist/agent/tests/browserControlHelpers.test.cjs +0 -35
  59. package/dist/agent/tests/browserControlHelpers.test.d.ts +0 -1
  60. package/dist/agent/tests/browserControlHelpers.test.js +0 -29
  61. package/dist/agent/tests/browserControlTool.test.cjs +0 -2117
  62. package/dist/agent/tests/browserControlTool.test.d.ts +0 -1
  63. package/dist/agent/tests/browserControlTool.test.js +0 -2111
  64. package/dist/agent/tests/commandExecuteTool.test.cjs +0 -29
  65. package/dist/agent/tests/commandExecuteTool.test.d.ts +0 -1
  66. package/dist/agent/tests/commandExecuteTool.test.js +0 -23
  67. package/dist/agent/tests/internet_search.test.cjs +0 -107
  68. package/dist/agent/tests/internet_search.test.d.ts +0 -1
  69. package/dist/agent/tests/internet_search.test.js +0 -101
  70. package/dist/agent/tests/mcpClientManager.test.cjs +0 -290
  71. package/dist/agent/tests/mcpClientManager.test.d.ts +0 -1
  72. package/dist/agent/tests/mcpClientManager.test.js +0 -284
  73. package/dist/agent/tests/mcpResourceTools.test.cjs +0 -101
  74. package/dist/agent/tests/mcpResourceTools.test.d.ts +0 -1
  75. package/dist/agent/tests/mcpResourceTools.test.js +0 -95
  76. package/dist/agent/tests/modelFactory.test.cjs +0 -190
  77. package/dist/agent/tests/modelFactory.test.d.ts +0 -1
  78. package/dist/agent/tests/modelFactory.test.js +0 -184
  79. package/dist/agent/tests/terminalSessionManager.test.cjs +0 -121
  80. package/dist/agent/tests/terminalSessionManager.test.d.ts +0 -1
  81. package/dist/agent/tests/terminalSessionManager.test.js +0 -115
  82. package/dist/agent/tests/test-agent-loader.cjs +0 -33
  83. package/dist/agent/tests/test-agent-loader.d.ts +0 -1
  84. package/dist/agent/tests/test-agent-loader.js +0 -27
  85. package/dist/agent/tests/test-subagent-loading.cjs +0 -99
  86. package/dist/agent/tests/test-subagent-loading.d.ts +0 -1
  87. package/dist/agent/tests/test-subagent-loading.js +0 -93
  88. package/dist/agent/tests/toolRegistry.test.cjs +0 -147
  89. package/dist/agent/tests/toolRegistry.test.d.ts +0 -1
  90. package/dist/agent/tests/toolRegistry.test.js +0 -141
  91. package/dist/agent/tests/uiRegistryTools.test.cjs +0 -114
  92. package/dist/agent/tests/uiRegistryTools.test.d.ts +0 -1
  93. package/dist/agent/tests/uiRegistryTools.test.js +0 -105
  94. package/dist/agent/tests/xaiImageModel.test.cjs +0 -194
  95. package/dist/agent/tests/xaiImageModel.test.d.ts +0 -1
  96. package/dist/agent/tests/xaiImageModel.test.js +0 -188
  97. package/dist/tests/additionalMessageMiddleware.test.cjs +0 -216
  98. package/dist/tests/additionalMessageMiddleware.test.d.ts +0 -1
  99. package/dist/tests/additionalMessageMiddleware.test.js +0 -188
  100. package/dist/tests/agent-config-voice.test.cjs +0 -25
  101. package/dist/tests/agent-config-voice.test.d.ts +0 -1
  102. package/dist/tests/agent-config-voice.test.js +0 -19
  103. package/dist/tests/agentInvokerAttachments.test.cjs +0 -190
  104. package/dist/tests/agentInvokerAttachments.test.d.ts +0 -1
  105. package/dist/tests/agentInvokerAttachments.test.js +0 -184
  106. package/dist/tests/agentInvokerSummarization.test.cjs +0 -613
  107. package/dist/tests/agentInvokerSummarization.test.d.ts +0 -1
  108. package/dist/tests/agentInvokerSummarization.test.js +0 -607
  109. package/dist/tests/agentInvokerTokenUsage.test.cjs +0 -124
  110. package/dist/tests/agentInvokerTokenUsage.test.d.ts +0 -1
  111. package/dist/tests/agentInvokerTokenUsage.test.js +0 -118
  112. package/dist/tests/agentInvokerWorkdir.test.cjs +0 -150
  113. package/dist/tests/agentInvokerWorkdir.test.d.ts +0 -1
  114. package/dist/tests/agentInvokerWorkdir.test.js +0 -122
  115. package/dist/tests/agents-api.test.cjs +0 -324
  116. package/dist/tests/agents-api.test.d.ts +0 -1
  117. package/dist/tests/agents-api.test.js +0 -318
  118. package/dist/tests/attachments-utils.test.cjs +0 -46
  119. package/dist/tests/attachments-utils.test.d.ts +0 -1
  120. package/dist/tests/attachments-utils.test.js +0 -40
  121. package/dist/tests/browser-command.test.cjs +0 -264
  122. package/dist/tests/browser-command.test.d.ts +0 -1
  123. package/dist/tests/browser-command.test.js +0 -258
  124. package/dist/tests/browser-relay-server.test.cjs +0 -20
  125. package/dist/tests/browser-relay-server.test.d.ts +0 -1
  126. package/dist/tests/browser-relay-server.test.js +0 -14
  127. package/dist/tests/bunSqliteAdapter.test.cjs +0 -265
  128. package/dist/tests/bunSqliteAdapter.test.d.ts +0 -1
  129. package/dist/tests/bunSqliteAdapter.test.js +0 -259
  130. package/dist/tests/candleRange.test.cjs +0 -48
  131. package/dist/tests/candleRange.test.d.ts +0 -1
  132. package/dist/tests/candleRange.test.js +0 -42
  133. package/dist/tests/cli-config-loader.test.cjs +0 -532
  134. package/dist/tests/cli-config-loader.test.d.ts +0 -1
  135. package/dist/tests/cli-config-loader.test.js +0 -526
  136. package/dist/tests/cli-config-warnings.test.cjs +0 -94
  137. package/dist/tests/cli-config-warnings.test.d.ts +0 -1
  138. package/dist/tests/cli-config-warnings.test.js +0 -88
  139. package/dist/tests/cli-init.test.cjs +0 -225
  140. package/dist/tests/cli-init.test.d.ts +0 -1
  141. package/dist/tests/cli-init.test.js +0 -219
  142. package/dist/tests/cli-workspace-root.test.cjs +0 -114
  143. package/dist/tests/cli-workspace-root.test.d.ts +0 -1
  144. package/dist/tests/cli-workspace-root.test.js +0 -108
  145. package/dist/tests/codex-credentials-precedence.test.cjs +0 -94
  146. package/dist/tests/codex-credentials-precedence.test.d.ts +0 -1
  147. package/dist/tests/codex-credentials-precedence.test.js +0 -88
  148. package/dist/tests/codex-provider.test.cjs +0 -383
  149. package/dist/tests/codex-provider.test.d.ts +0 -1
  150. package/dist/tests/codex-provider.test.js +0 -377
  151. package/dist/tests/config-json-schema.test.cjs +0 -37
  152. package/dist/tests/config-json-schema.test.d.ts +0 -1
  153. package/dist/tests/config-json-schema.test.js +0 -31
  154. package/dist/tests/discord-adapter.test.cjs +0 -89
  155. package/dist/tests/discord-adapter.test.d.ts +0 -1
  156. package/dist/tests/discord-adapter.test.js +0 -83
  157. package/dist/tests/falRuntime.test.cjs +0 -78
  158. package/dist/tests/falRuntime.test.d.ts +0 -1
  159. package/dist/tests/falRuntime.test.js +0 -72
  160. package/dist/tests/falSummary.test.cjs +0 -51
  161. package/dist/tests/falSummary.test.d.ts +0 -1
  162. package/dist/tests/falSummary.test.js +0 -45
  163. package/dist/tests/fs-api.test.cjs +0 -138
  164. package/dist/tests/fs-api.test.d.ts +0 -1
  165. package/dist/tests/fs-api.test.js +0 -132
  166. package/dist/tests/gateway-command-workspace.test.cjs +0 -150
  167. package/dist/tests/gateway-command-workspace.test.d.ts +0 -1
  168. package/dist/tests/gateway-command-workspace.test.js +0 -144
  169. package/dist/tests/gateway-http-security.test.cjs +0 -318
  170. package/dist/tests/gateway-http-security.test.d.ts +0 -1
  171. package/dist/tests/gateway-http-security.test.js +0 -312
  172. package/dist/tests/gateway-node-mode.test.cjs +0 -174
  173. package/dist/tests/gateway-node-mode.test.d.ts +0 -1
  174. package/dist/tests/gateway-node-mode.test.js +0 -168
  175. package/dist/tests/gateway-origin-policy.test.cjs +0 -82
  176. package/dist/tests/gateway-origin-policy.test.d.ts +0 -1
  177. package/dist/tests/gateway-origin-policy.test.js +0 -76
  178. package/dist/tests/gateway-request-execution-overrides.test.cjs +0 -42
  179. package/dist/tests/gateway-request-execution-overrides.test.d.ts +0 -1
  180. package/dist/tests/gateway-request-execution-overrides.test.js +0 -36
  181. package/dist/tests/gateway.test.cjs +0 -700
  182. package/dist/tests/gateway.test.d.ts +0 -1
  183. package/dist/tests/gateway.test.js +0 -694
  184. package/dist/tests/hooks-matcher.test.cjs +0 -309
  185. package/dist/tests/hooks-matcher.test.d.ts +0 -1
  186. package/dist/tests/hooks-matcher.test.js +0 -303
  187. package/dist/tests/hooks-merger.test.cjs +0 -528
  188. package/dist/tests/hooks-merger.test.d.ts +0 -1
  189. package/dist/tests/hooks-merger.test.js +0 -522
  190. package/dist/tests/imagePersistence.test.cjs +0 -169
  191. package/dist/tests/imagePersistence.test.d.ts +0 -1
  192. package/dist/tests/imagePersistence.test.js +0 -163
  193. package/dist/tests/integration/agent-invocation.integration.test.cjs +0 -264
  194. package/dist/tests/integration/agent-invocation.integration.test.d.ts +0 -1
  195. package/dist/tests/integration/agent-invocation.integration.test.js +0 -258
  196. package/dist/tests/integration/finnhub-candles.integration.test.cjs +0 -98
  197. package/dist/tests/integration/finnhub-candles.integration.test.d.ts +0 -1
  198. package/dist/tests/integration/finnhub-candles.integration.test.js +0 -92
  199. package/dist/tests/integration/summarization-e2e.integration.test.cjs +0 -127
  200. package/dist/tests/integration/summarization-e2e.integration.test.d.ts +0 -1
  201. package/dist/tests/integration/summarization-e2e.integration.test.js +0 -121
  202. package/dist/tests/logger.test.cjs +0 -353
  203. package/dist/tests/logger.test.d.ts +0 -1
  204. package/dist/tests/logger.test.js +0 -347
  205. package/dist/tests/mediaCompatibilityMiddleware.test.cjs +0 -106
  206. package/dist/tests/mediaCompatibilityMiddleware.test.d.ts +0 -1
  207. package/dist/tests/mediaCompatibilityMiddleware.test.js +0 -100
  208. package/dist/tests/node-tools.test.cjs +0 -77
  209. package/dist/tests/node-tools.test.d.ts +0 -1
  210. package/dist/tests/node-tools.test.js +0 -71
  211. package/dist/tests/nodes-api.test.cjs +0 -86
  212. package/dist/tests/nodes-api.test.d.ts +0 -1
  213. package/dist/tests/nodes-api.test.js +0 -80
  214. package/dist/tests/outputManagerContextSummarized.test.cjs +0 -43
  215. package/dist/tests/outputManagerContextSummarized.test.d.ts +0 -1
  216. package/dist/tests/outputManagerContextSummarized.test.js +0 -37
  217. package/dist/tests/provider-command-codex.test.cjs +0 -57
  218. package/dist/tests/provider-command-codex.test.d.ts +0 -1
  219. package/dist/tests/provider-command-codex.test.js +0 -51
  220. package/dist/tests/routines-api.test.cjs +0 -107
  221. package/dist/tests/routines-api.test.d.ts +0 -1
  222. package/dist/tests/routines-api.test.js +0 -101
  223. package/dist/tests/run-terminal-bench-official-script.test.cjs +0 -61
  224. package/dist/tests/run-terminal-bench-official-script.test.d.ts +0 -1
  225. package/dist/tests/run-terminal-bench-official-script.test.js +0 -55
  226. package/dist/tests/sessionManager-uionly.test.cjs +0 -50
  227. package/dist/tests/sessionManager-uionly.test.d.ts +0 -1
  228. package/dist/tests/sessionManager-uionly.test.js +0 -44
  229. package/dist/tests/sessionMessageAttachments.test.cjs +0 -197
  230. package/dist/tests/sessionMessageAttachments.test.d.ts +0 -1
  231. package/dist/tests/sessionMessageAttachments.test.js +0 -191
  232. package/dist/tests/sessionMessageRole.test.cjs +0 -44
  233. package/dist/tests/sessionMessageRole.test.d.ts +0 -1
  234. package/dist/tests/sessionMessageRole.test.js +0 -38
  235. package/dist/tests/sessionStateMessages.test.cjs +0 -236
  236. package/dist/tests/sessionStateMessages.test.d.ts +0 -1
  237. package/dist/tests/sessionStateMessages.test.js +0 -230
  238. package/dist/tests/sessions-api.test.cjs +0 -250
  239. package/dist/tests/sessions-api.test.d.ts +0 -1
  240. package/dist/tests/sessions-api.test.js +0 -244
  241. package/dist/tests/skill-activation.test.cjs +0 -86
  242. package/dist/tests/skill-activation.test.d.ts +0 -1
  243. package/dist/tests/skill-activation.test.js +0 -80
  244. package/dist/tests/skill-metadata.test.cjs +0 -119
  245. package/dist/tests/skill-metadata.test.d.ts +0 -1
  246. package/dist/tests/skill-metadata.test.js +0 -113
  247. package/dist/tests/skill-repository.test.cjs +0 -469
  248. package/dist/tests/skill-repository.test.d.ts +0 -1
  249. package/dist/tests/skill-repository.test.js +0 -463
  250. package/dist/tests/skill-security-scanner.test.cjs +0 -126
  251. package/dist/tests/skill-security-scanner.test.d.ts +0 -1
  252. package/dist/tests/skill-security-scanner.test.js +0 -120
  253. package/dist/tests/sms-api.test.cjs +0 -183
  254. package/dist/tests/sms-api.test.d.ts +0 -1
  255. package/dist/tests/sms-api.test.js +0 -177
  256. package/dist/tests/sms-commands.test.cjs +0 -90
  257. package/dist/tests/sms-commands.test.d.ts +0 -1
  258. package/dist/tests/sms-commands.test.js +0 -84
  259. package/dist/tests/sms-policy-store.test.cjs +0 -69
  260. package/dist/tests/sms-policy-store.test.d.ts +0 -1
  261. package/dist/tests/sms-policy-store.test.js +0 -63
  262. package/dist/tests/teams-adapter.test.cjs +0 -58
  263. package/dist/tests/teams-adapter.test.d.ts +0 -1
  264. package/dist/tests/teams-adapter.test.js +0 -52
  265. package/dist/tests/technicalIndicators.test.cjs +0 -82
  266. package/dist/tests/technicalIndicators.test.d.ts +0 -1
  267. package/dist/tests/technicalIndicators.test.js +0 -76
  268. package/dist/tests/terminal-bench-adapters-helpers.test.cjs +0 -64
  269. package/dist/tests/terminal-bench-adapters-helpers.test.d.ts +0 -1
  270. package/dist/tests/terminal-bench-adapters-helpers.test.js +0 -58
  271. package/dist/tests/terminal-bench-cleanup.test.cjs +0 -93
  272. package/dist/tests/terminal-bench-cleanup.test.d.ts +0 -1
  273. package/dist/tests/terminal-bench-cleanup.test.js +0 -87
  274. package/dist/tests/terminal-bench-config.test.cjs +0 -62
  275. package/dist/tests/terminal-bench-config.test.d.ts +0 -1
  276. package/dist/tests/terminal-bench-config.test.js +0 -56
  277. package/dist/tests/terminal-bench-official.test.cjs +0 -194
  278. package/dist/tests/terminal-bench-official.test.d.ts +0 -1
  279. package/dist/tests/terminal-bench-official.test.js +0 -188
  280. package/dist/tests/terminal-bench-runner.test.cjs +0 -82
  281. package/dist/tests/terminal-bench-runner.test.d.ts +0 -1
  282. package/dist/tests/terminal-bench-runner.test.js +0 -76
  283. package/dist/tests/terminal-bench-scoring.test.cjs +0 -128
  284. package/dist/tests/terminal-bench-scoring.test.d.ts +0 -1
  285. package/dist/tests/terminal-bench-scoring.test.js +0 -122
  286. package/dist/tests/terminalProbe.test.cjs +0 -45
  287. package/dist/tests/terminalProbe.test.d.ts +0 -1
  288. package/dist/tests/terminalProbe.test.js +0 -39
  289. package/dist/tests/terminalProbeAuth.test.cjs +0 -85
  290. package/dist/tests/terminalProbeAuth.test.d.ts +0 -1
  291. package/dist/tests/terminalProbeAuth.test.js +0 -79
  292. package/dist/tests/toolDisplayHelpers.test.cjs +0 -46
  293. package/dist/tests/toolDisplayHelpers.test.d.ts +0 -1
  294. package/dist/tests/toolDisplayHelpers.test.js +0 -40
  295. package/dist/tests/uv.test.cjs +0 -47
  296. package/dist/tests/uv.test.d.ts +0 -1
  297. package/dist/tests/uv.test.js +0 -41
  298. package/dist/tests/voice-config.test.cjs +0 -35
  299. package/dist/tests/voice-config.test.d.ts +0 -1
  300. package/dist/tests/voice-config.test.js +0 -29
  301. package/dist/tests/websocket-transport.test.cjs +0 -31
  302. package/dist/tests/websocket-transport.test.d.ts +0 -1
  303. package/dist/tests/websocket-transport.test.js +0 -25
  304. package/dist/tests/yahooCandles.test.cjs +0 -111
  305. package/dist/tests/yahooCandles.test.d.ts +0 -1
  306. package/dist/tests/yahooCandles.test.js +0 -105
  307. package/dist/tools/finance/optionsAnalytics.test.cjs +0 -128
  308. package/dist/tools/finance/optionsAnalytics.test.d.ts +0 -1
  309. package/dist/tools/finance/optionsAnalytics.test.js +0 -122
  310. package/dist/webui/assets/index-D07GBGp0.js +0 -215
  311. package/dist/webui/assets/index-DV8IYeOw.css +0 -11
@@ -12,8 +12,8 @@
12
12
  href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&family=Sora:wght@300;400;500;600;700&display=swap"
13
13
  rel="stylesheet"
14
14
  />
15
- <script type="module" crossorigin src="/assets/index-D07GBGp0.js"></script>
16
- <link rel="stylesheet" crossorigin href="/assets/index-DV8IYeOw.css">
15
+ <script type="module" crossorigin src="/assets/index-mDs6HbKM.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index-XrEnkZiq.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="root"></div>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@wingman-ai/gateway",
3
3
  "displayName": "Wingman Agent",
4
4
  "description": "Wingman-AI agentic coding assistant that works with Anthropic, OpenAI, Google, xAI and LMStudio.",
5
- "version": "0.5.2",
5
+ "version": "0.5.4",
6
6
  "main": "index.js",
7
7
  "bin": {
8
8
  "wingman": "./bin/wingman"
@@ -96,17 +96,17 @@
96
96
  },
97
97
  "dependencies": {
98
98
  "@clack/prompts": "^0.7.0",
99
- "@fal-ai/client": "^1.9.1",
100
- "@langchain/anthropic": "^1.3.21",
101
- "@langchain/core": "^1.1.29",
102
- "@langchain/google-genai": "^2.1.22",
103
- "@langchain/langgraph": "^1.2.0",
99
+ "@fal-ai/client": "^1.9.4",
100
+ "@langchain/anthropic": "^1.3.22",
101
+ "@langchain/core": "^1.1.31",
102
+ "@langchain/google-genai": "^2.1.24",
103
+ "@langchain/langgraph": "^1.2.1",
104
104
  "@langchain/langgraph-checkpoint-sqlite": "^1.0.1",
105
105
  "@langchain/langgraph-sdk": "^1.6.5",
106
106
  "@langchain/mcp-adapters": "^1.1.3",
107
- "@langchain/ollama": "^1.2.5",
108
- "@langchain/openai": "^1.2.11",
109
- "@langchain/xai": "^1.3.7",
107
+ "@langchain/ollama": "^1.2.6",
108
+ "@langchain/openai": "^1.2.12",
109
+ "@langchain/xai": "^1.3.8",
110
110
  "@modelcontextprotocol/sdk": "^1.26.0",
111
111
  "botbuilder": "^4.23.3",
112
112
  "chalk": "^5.6.2",
@@ -117,7 +117,7 @@
117
117
  "ink": "^5.2.1",
118
118
  "ink-spinner": "^5.0.0",
119
119
  "js-yaml": "^4.1.1",
120
- "langchain": "^1.2.28",
120
+ "langchain": "^1.2.30",
121
121
  "multicast-dns": "^7.2.5",
122
122
  "playwright-core": "^1.58.2",
123
123
  "react": "^18.3.1",
@@ -50,7 +50,7 @@ Each agent configuration file follows this schema:
50
50
  ### Optional Fields
51
51
 
52
52
  - **tools**: Array of tool names the agent can use
53
- - Available tools: `internet_search`, `web_crawler`, `browser_control`, `command_execute`, `background_terminal`, `think`, `code_search`, `git_status`, `ui_registry_list`, `ui_registry_get`, `ui_present`
53
+ - Available tools: `internet_search`, `web_crawler`, `browser_control`, `browser_session_start`, `browser_session_action`, `browser_session_close`, `browser_session_list`, `command_execute`, `background_terminal`, `think`, `code_search`, `git_status`, `ui_registry_list`, `ui_registry_get`, `ui_present`
54
54
  - **model**: Override the default model (format: `provider:model-name`)
55
55
  - Anthropic: `anthropic:claude-opus-4-5`, `anthropic:claude-sonnet-4-5-20250929`
56
56
  - OpenAI: `openai:gpt-4o`, `openai:gpt-4-turbo`
@@ -59,6 +59,7 @@ Each agent configuration file follows this schema:
59
59
  - If the selected model does not support effort controls, Wingman logs a warning and continues
60
60
  - `thinkingEffort` is accepted as a legacy alias
61
61
  - **browserProfile**: Optional named persistent browser profile for `browser_control` (configured in `wingman.config.json` under `browser`; initialize with `wingman browser profile init <id>`)
62
+ - **browserTransport**: Optional default transport for `browser_control` and `browser_session_*` (`auto`, `playwright`, or `relay`)
62
63
  - **promptRefinement**: Allow the agent to maintain a durable prompt overlay under `/memories/`
63
64
  - `enabled`: Set true to allow updates from explicit user feedback
64
65
  - `instructionsPath`: Optional override for the overlay file location (virtual path)
@@ -8,7 +8,12 @@ tools:
8
8
  - command_execute
9
9
  - git_status
10
10
  - background_terminal
11
- model: codex:gpt-5.3-codex
11
+ - browser_control
12
+ - browser_session_start
13
+ - browser_session_action
14
+ - browser_session_close
15
+ - browser_session_list
16
+ model: codex:gpt-5.4
12
17
  reasoningEffort: "high"
13
18
  mcpUseGlobal: true
14
19
  ---
@@ -298,15 +303,3 @@ When using the shell, you must adhere to the following guidelines:
298
303
 
299
304
  - When searching for text or files, prefer using `rg` or `rg --files` respectively because `rg` is much faster than alternatives like `grep`. (If the `rg` command is not found, then use alternatives.)
300
305
  - Do not use python scripts to attempt to output larger chunks of a file.
301
-
302
- ## `write_todos`
303
-
304
- A tool named `write_todos` is available to you. Use it to keep an up-to-date, step-by-step plan for the task.
305
-
306
- To create a plan, call `write_todos` with a `todos` array of short 1-sentence steps (no more than 5-7 words each). Each todo must include a `status`: `pending`, `in_progress`, or `completed`.
307
-
308
- When steps are completed, call `write_todos` again with the updated list: mark finished steps as `completed` and set the next active step to `in_progress`. Keep exactly one `in_progress` step until everything is done.
309
-
310
- If all steps are complete, call `write_todos` with all steps marked `completed`.
311
-
312
- Before your final response on non-trivial tasks, call `read_todos` (when available) and ensure all todo items are `completed`.
@@ -11,7 +11,12 @@ tools:
11
11
  - background_terminal
12
12
  - internet_search
13
13
  - web_crawler
14
- model: codex:gpt-5.3-codex
14
+ - browser_control
15
+ - browser_session_start
16
+ - browser_session_action
17
+ - browser_session_close
18
+ - browser_session_list
19
+ model: codex:gpt-5.4
15
20
  reasoningEffort: "high"
16
21
  mcpUseGlobal: true
17
22
  subAgents:
@@ -12,10 +12,14 @@ tools:
12
12
  - internet_search
13
13
  - web_crawler
14
14
  - browser_control
15
+ - browser_session_start
16
+ - browser_session_action
17
+ - browser_session_close
18
+ - browser_session_list
15
19
  - ui_registry_list
16
20
  - ui_registry_get
17
21
  - ui_present
18
- model: codex:gpt-5.3-codex
22
+ model: codex:gpt-5.4
19
23
  reasoningEffort: "high"
20
24
  mcpUseGlobal: true
21
25
  promptRefinement: true
@@ -40,6 +44,7 @@ subAgents:
40
44
  - think
41
45
  - code_search
42
46
  - command_execute
47
+ - browser_control
43
48
  promptFile: ./scene-engineer.md
44
49
  - name: game-designer
45
50
  description: >-
@@ -50,6 +55,7 @@ subAgents:
50
55
  - internet_search
51
56
  - web_crawler
52
57
  - code_search
58
+ - browser_control
53
59
  - ui_registry_list
54
60
  - ui_registry_get
55
61
  - ui_present
@@ -131,7 +137,7 @@ Delegate to `art-director` for multi-asset batches, style-consistent series, or
131
137
 
132
138
  ## Browser automation
133
139
 
134
- Use `browser_control` for interactive validation (game UI smoke tests, WebGL build QA, screenshot capture from JS-rendered previews). It runs headless Chromium via CDP not an MCP server.
140
+ Use `browser_control` for interactive validation (game UI smoke tests, WebGL build QA, screenshot capture from JS-rendered previews). With a configured `browserProfile` or workspace `browser.defaultProfile`, it runs in Playwright persistent-context mode for reproducible debugging; otherwise it uses CDP with automatic fallback. It is a native Wingman tool, not an MCP server.
135
141
 
136
142
  ## Execution standards
137
143
 
@@ -23,6 +23,10 @@ If `/memories/game-dev/design.md` is absent, create it after establishing initia
23
23
  - In-game overlays: damage flash, level-up burst, tutorial callouts, notification toasts
24
24
  - Interaction design: hover states, focus rings, animation style, controller/keyboard accessibility
25
25
 
26
+ **Browser QA**
27
+ - Use `browser_control` to validate menu flows, HUD readability, focus order, and interaction timing in the running game before locking UX recommendations.
28
+ - When a design call depends on real behavior, cite what was observed in-browser instead of relying only on static specs.
29
+
26
30
  **Three.js UI strategy** — specify the appropriate rendering approach per UI element:
27
31
  - **HTML overlay** (`position: fixed` DOM + CSS): best for complex menus, text-heavy HUD, accessibility needs
28
32
  - **Canvas 2D → `CanvasTexture`**: good for dynamic HUD elements drawn programmatically on a plane
@@ -38,6 +38,10 @@ If `/memories/game-dev/threejs.md` is absent, create it after establishing the f
38
38
  - Asset manager / loading queue with progress events; `LoadingManager` for loading screens
39
39
  - Dispose unused assets on scene transitions
40
40
 
41
+ **Browser QA**
42
+ - Use `browser_control` to validate live WebGL builds in-browser: wait for canvas/UI readiness, capture screenshots, and evaluate runtime state when a rendering bug only reproduces after load or interaction.
43
+ - Prefer browser-backed repro for issues tied to resize, async asset loading, post-processing, or device-pixel-ratio changes.
44
+
41
45
  **React Three Fiber (R3F)**
42
46
  - `useFrame`, `useThree`, `useLoader` — prefer hooks over imperative refs where natural
43
47
  - Keep imperative Three.js isolated to refs; avoid fighting R3F's reconciler
@@ -6,6 +6,10 @@ tools:
6
6
  - internet_search
7
7
  - web_crawler
8
8
  - browser_control
9
+ - browser_session_start
10
+ - browser_session_action
11
+ - browser_session_close
12
+ - browser_session_list
9
13
  - command_execute
10
14
  model: openai:gpt-5-mini
11
15
  mcpUseGlobal: true
@@ -18,6 +22,7 @@ Follow these principles:
18
22
  - Be proactive about gathering context before making changes.
19
23
  - Use the available tools when they add confidence or speed.
20
24
  - Use `browser_control` for interactive browser tasks (navigation, clicks, JS-rendered pages, screenshots); it is a native runtime capability using Chrome/Chromium runtime control (CDP with automatic persistent-context fallback), not an MCP server.
25
+ - Use `browser_session_start`, `browser_session_action`, and `browser_session_close` for iterative browser debugging or QA when state must survive across multiple tool calls or turns.
21
26
  - When using `browser_control`, stick to supported action types (`navigate`, `click`, `type`, `press`, `wait`, `wait_for`, `extract_text`, `evaluate`, `screenshot`) or documented aliases (`goto`, `selector`, `getContent`, `querySelector`, `snapshot`, etc.).
22
27
  - If this agent has `browserProfile` configured, prefer that persistent named profile for authenticated workflows.
23
28
  - For authenticated profile reuse (for example Robinhood): bootstrap login headed first, then you may request `headless: true` for automation runs; navigate directly to target pages instead of forcing `/login` URLs.
@@ -5,6 +5,10 @@ tools:
5
5
  - internet_search
6
6
  - web_crawler
7
7
  - browser_control
8
+ - browser_session_start
9
+ - browser_session_action
10
+ - browser_session_close
11
+ - browser_session_list
8
12
  promptRefinement: true
9
13
  ---
10
14
 
@@ -36,6 +40,13 @@ Use this when static crawling is insufficient and you need real browser behavior
36
40
  - Best for JS-rendered pages, interaction-required flows, and visual verification screenshots
37
41
  - Not an MCP dependency; use MCP for external data/SaaS integrations
38
42
 
43
+ ## `browser_session_*`
44
+
45
+ Use this when a browser workflow needs to persist across multiple tool calls.
46
+
47
+ - Start with `browser_session_start`, continue with `browser_session_action`, and clean up with `browser_session_close`
48
+ - Best for iterative QA, multi-step sign-in flows, and investigation where the same browser state must survive across turns
49
+
39
50
  ## Scope and guardrails
40
51
 
41
52
  - You are not a stock-trading specialist. If a request is primarily about trading workflows or portfolio decisions, suggest using the `stock-trader` agent.
@@ -5,6 +5,10 @@ tools:
5
5
  - think
6
6
  - web_crawler
7
7
  - browser_control
8
+ - browser_session_start
9
+ - browser_session_action
10
+ - browser_session_close
11
+ - browser_session_list
8
12
  model: xai:grok-4-1-fast-reasoning
9
13
  mcpUseGlobal: true
10
14
  promptRefinement: true
@@ -1,224 +0,0 @@
1
- "use strict";
2
- var __webpack_exports__ = {};
3
- const external_vitest_namespaceObject = require("vitest");
4
- const agentConfig_cjs_namespaceObject = require("../config/agentConfig.cjs");
5
- (0, external_vitest_namespaceObject.describe)("Agent Configuration Schema", ()=>{
6
- (0, external_vitest_namespaceObject.describe)("validateAgentConfig", ()=>{
7
- (0, external_vitest_namespaceObject.it)("should validate a valid minimal agent config", ()=>{
8
- const config = {
9
- name: "test-agent",
10
- description: "A test agent",
11
- systemPrompt: "You are a test agent"
12
- };
13
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
14
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(true);
15
- if (result.success) {
16
- (0, external_vitest_namespaceObject.expect)(result.data.name).toBe("test-agent");
17
- (0, external_vitest_namespaceObject.expect)(result.data.description).toBe("A test agent");
18
- (0, external_vitest_namespaceObject.expect)(result.data.systemPrompt).toBe("You are a test agent");
19
- }
20
- });
21
- (0, external_vitest_namespaceObject.it)("should validate a complete agent config with all fields", ()=>{
22
- const config = {
23
- name: "data-analyst",
24
- description: "Analyzes data",
25
- systemPrompt: "You are a data analyst",
26
- tools: [
27
- "command_execute",
28
- "think"
29
- ],
30
- model: "anthropic:claude-opus-4-5",
31
- reasoningEffort: "high",
32
- blockedCommands: [
33
- "rm",
34
- "mv"
35
- ],
36
- allowScriptExecution: true,
37
- commandTimeout: 300000,
38
- browserProfile: "trading",
39
- browserTransport: "relay"
40
- };
41
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
42
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(true);
43
- if (result.success) {
44
- (0, external_vitest_namespaceObject.expect)(result.data.tools).toEqual([
45
- "command_execute",
46
- "think"
47
- ]);
48
- (0, external_vitest_namespaceObject.expect)(result.data.model).toBe("anthropic:claude-opus-4-5");
49
- (0, external_vitest_namespaceObject.expect)(result.data.reasoningEffort).toBe("high");
50
- (0, external_vitest_namespaceObject.expect)(result.data.blockedCommands).toEqual([
51
- "rm",
52
- "mv"
53
- ]);
54
- (0, external_vitest_namespaceObject.expect)(result.data.allowScriptExecution).toBe(true);
55
- (0, external_vitest_namespaceObject.expect)(result.data.commandTimeout).toBe(300000);
56
- (0, external_vitest_namespaceObject.expect)(result.data.browserProfile).toBe("trading");
57
- (0, external_vitest_namespaceObject.expect)(result.data.browserTransport).toBe("relay");
58
- }
59
- });
60
- (0, external_vitest_namespaceObject.it)("should allow subagents to override models", ()=>{
61
- const config = {
62
- name: "parent-agent",
63
- description: "Parent agent",
64
- systemPrompt: "You are the parent agent",
65
- subAgents: [
66
- {
67
- name: "research-agent",
68
- description: "Researches topics",
69
- systemPrompt: "You are a researcher",
70
- model: "openai:gpt-4o",
71
- reasoningEffort: "low"
72
- }
73
- ]
74
- };
75
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
76
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(true);
77
- if (result.success) {
78
- (0, external_vitest_namespaceObject.expect)(result.data.subAgents?.[0].model).toBe("openai:gpt-4o");
79
- (0, external_vitest_namespaceObject.expect)(result.data.subAgents?.[0].reasoningEffort).toBe("low");
80
- }
81
- });
82
- (0, external_vitest_namespaceObject.it)("should fail when a sub-agent shares the same name as its parent", ()=>{
83
- const config = {
84
- name: "coding",
85
- description: "Parent coding agent",
86
- systemPrompt: "You are the parent coding agent",
87
- subAgents: [
88
- {
89
- name: "coding",
90
- description: "Nested coding worker",
91
- systemPrompt: "You are a worker"
92
- }
93
- ]
94
- };
95
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
96
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(false);
97
- if (!result.success) (0, external_vitest_namespaceObject.expect)(result.error).toContain("Sub-agent name must be different from parent agent name");
98
- });
99
- (0, external_vitest_namespaceObject.it)("should fail when sub-agent names are duplicated", ()=>{
100
- const config = {
101
- name: "parent-agent",
102
- description: "Parent agent",
103
- systemPrompt: "You are the parent agent",
104
- subAgents: [
105
- {
106
- name: "implementor",
107
- description: "First implementor",
108
- systemPrompt: "You implement changes"
109
- },
110
- {
111
- name: "IMPLEMENTOR",
112
- description: "Duplicate implementor",
113
- systemPrompt: "You implement more changes"
114
- }
115
- ]
116
- };
117
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
118
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(false);
119
- if (!result.success) (0, external_vitest_namespaceObject.expect)(result.error).toContain("Sub-agent names must be unique within the same parent agent");
120
- });
121
- (0, external_vitest_namespaceObject.it)("should fail validation for missing required fields", ()=>{
122
- const config = {
123
- name: "test-agent"
124
- };
125
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
126
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(false);
127
- if (!result.success) {
128
- (0, external_vitest_namespaceObject.expect)(result.error).toContain("description");
129
- (0, external_vitest_namespaceObject.expect)(result.error).toContain("systemPrompt");
130
- }
131
- });
132
- (0, external_vitest_namespaceObject.it)("should fail validation for invalid tool names", ()=>{
133
- const config = {
134
- name: "test-agent",
135
- description: "Test",
136
- systemPrompt: "Test",
137
- tools: [
138
- "invalid_tool"
139
- ]
140
- };
141
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
142
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(false);
143
- });
144
- (0, external_vitest_namespaceObject.it)("should fail validation for invalid reasoning effort", ()=>{
145
- const config = {
146
- name: "test-agent",
147
- description: "Test",
148
- systemPrompt: "Test",
149
- reasoningEffort: "extreme"
150
- };
151
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
152
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(false);
153
- if (!result.success) (0, external_vitest_namespaceObject.expect)(result.error).toContain("reasoningEffort");
154
- });
155
- (0, external_vitest_namespaceObject.it)("should apply default values for optional fields", ()=>{
156
- const config = {
157
- name: "test-agent",
158
- description: "Test",
159
- systemPrompt: "Test"
160
- };
161
- const parsed = agentConfig_cjs_namespaceObject.AgentConfigSchema.parse(config);
162
- (0, external_vitest_namespaceObject.expect)(parsed.allowScriptExecution).toBe(true);
163
- (0, external_vitest_namespaceObject.expect)(parsed.commandTimeout).toBe(300000);
164
- });
165
- (0, external_vitest_namespaceObject.it)("should accept prompt refinement configuration", ()=>{
166
- const config = {
167
- name: "refiner",
168
- description: "Refines its prompt",
169
- systemPrompt: "You are a refiner",
170
- promptRefinement: true
171
- };
172
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
173
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(true);
174
- if (result.success) (0, external_vitest_namespaceObject.expect)(result.data.promptRefinement?.enabled).toBe(true);
175
- const configWithPath = {
176
- name: "refiner-2",
177
- description: "Refines its prompt with path",
178
- systemPrompt: "You are a refiner",
179
- promptRefinement: {
180
- instructionsPath: "/memories/agents/refiner-2/instructions.md"
181
- }
182
- };
183
- const resultWithPath = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(configWithPath);
184
- (0, external_vitest_namespaceObject.expect)(resultWithPath.success).toBe(true);
185
- if (resultWithPath.success) {
186
- (0, external_vitest_namespaceObject.expect)(resultWithPath.data.promptRefinement?.instructionsPath).toBe("/memories/agents/refiner-2/instructions.md");
187
- (0, external_vitest_namespaceObject.expect)(resultWithPath.data.promptRefinement?.enabled).toBe(true);
188
- }
189
- });
190
- });
191
- (0, external_vitest_namespaceObject.describe)("Tool names enum", ()=>{
192
- (0, external_vitest_namespaceObject.it)("should accept all valid tool names", ()=>{
193
- const validTools = [
194
- "internet_search",
195
- "web_crawler",
196
- "browser_control",
197
- "command_execute",
198
- "background_terminal",
199
- "think",
200
- "code_search",
201
- "git_status",
202
- "ui_registry_list",
203
- "ui_registry_get",
204
- "ui_present"
205
- ];
206
- for (const tool of validTools){
207
- const config = {
208
- name: "test",
209
- description: "test",
210
- systemPrompt: "test",
211
- tools: [
212
- tool
213
- ]
214
- };
215
- const result = (0, agentConfig_cjs_namespaceObject.validateAgentConfig)(config);
216
- (0, external_vitest_namespaceObject.expect)(result.success).toBe(true);
217
- }
218
- });
219
- });
220
- });
221
- for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
222
- Object.defineProperty(exports, '__esModule', {
223
- value: true
224
- });
@@ -1 +0,0 @@
1
- export {};