@tyvm/knowhow 0.0.108 → 0.0.109-dev.2b94ba2

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 (236) hide show
  1. package/README.md +45 -0
  2. package/package.json +9 -4
  3. package/scripts/build-for-node.sh +10 -24
  4. package/scripts/publish.sh +86 -0
  5. package/src/agents/base/base.ts +10 -0
  6. package/src/agents/tools/execCommand.ts +49 -6
  7. package/src/agents/tools/index.ts +0 -1
  8. package/src/agents/tools/list.ts +2 -4
  9. package/src/chat/CliChatService.ts +11 -2
  10. package/src/chat/modules/AgentModule.ts +61 -31
  11. package/src/chat/modules/SessionsModule.ts +47 -3
  12. package/src/chat/modules/SystemModule.ts +2 -2
  13. package/src/chat/renderer/CompactRenderer.ts +20 -0
  14. package/src/chat/renderer/ConsoleRenderer.ts +19 -0
  15. package/src/chat/renderer/FancyRenderer.ts +19 -0
  16. package/src/chat/renderer/types.ts +11 -0
  17. package/src/cli.ts +91 -659
  18. package/src/clients/anthropic.ts +18 -17
  19. package/src/clients/index.ts +31 -11
  20. package/src/clients/openai.ts +8 -5
  21. package/src/clients/types.ts +48 -10
  22. package/src/clients/withRetry.ts +89 -0
  23. package/src/cloudWorker.ts +175 -113
  24. package/src/commands/agent.ts +246 -0
  25. package/src/commands/misc.ts +174 -0
  26. package/src/commands/modules.ts +552 -0
  27. package/src/commands/services.ts +77 -0
  28. package/src/commands/workers.ts +168 -0
  29. package/src/config.ts +38 -1
  30. package/src/fileSync.ts +70 -29
  31. package/src/hashes.ts +35 -13
  32. package/src/index.ts +18 -0
  33. package/src/logger.ts +197 -0
  34. package/src/plugins/embedding.ts +11 -6
  35. package/src/plugins/plugins.ts +0 -21
  36. package/src/plugins/vim.ts +5 -16
  37. package/src/processors/JsonCompressor.ts +6 -6
  38. package/src/services/EventService.ts +61 -1
  39. package/src/services/KnowhowClient.ts +34 -4
  40. package/src/services/MediaProcessorService.ts +79 -10
  41. package/src/services/modules/index.ts +102 -53
  42. package/src/services/modules/types.ts +6 -0
  43. package/src/tunnel.ts +216 -0
  44. package/src/types.ts +0 -1
  45. package/src/worker.ts +105 -312
  46. package/src/workers/auth/WsMiddleware.ts +99 -0
  47. package/src/workers/auth/authMiddleware.ts +104 -0
  48. package/src/workers/auth/types.ts +14 -2
  49. package/src/workers/tools/index.ts +2 -0
  50. package/src/workers/tools/reloadConfig.ts +84 -0
  51. package/tests/services/WorkerReloadConfig.test.ts +141 -0
  52. package/tests/unit/clients/AIClient.test.ts +446 -0
  53. package/tests/unit/clients/withRetry.test.ts +319 -0
  54. package/tests/unit/commands/github-credentials.test.ts +210 -0
  55. package/tests/unit/modules/moduleLoading.test.ts +39 -37
  56. package/tests/unit/plugins/pluginLoading.test.ts +0 -85
  57. package/ts_build/package.json +9 -4
  58. package/ts_build/src/agents/base/base.js +11 -0
  59. package/ts_build/src/agents/base/base.js.map +1 -1
  60. package/ts_build/src/agents/tools/execCommand.d.ts +1 -1
  61. package/ts_build/src/agents/tools/execCommand.js +39 -5
  62. package/ts_build/src/agents/tools/execCommand.js.map +1 -1
  63. package/ts_build/src/agents/tools/index.d.ts +0 -1
  64. package/ts_build/src/agents/tools/index.js +0 -1
  65. package/ts_build/src/agents/tools/index.js.map +1 -1
  66. package/ts_build/src/agents/tools/list.js +2 -4
  67. package/ts_build/src/agents/tools/list.js.map +1 -1
  68. package/ts_build/src/chat/CliChatService.js +14 -2
  69. package/ts_build/src/chat/CliChatService.js.map +1 -1
  70. package/ts_build/src/chat/modules/AgentModule.d.ts +1 -1
  71. package/ts_build/src/chat/modules/AgentModule.js +43 -20
  72. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  73. package/ts_build/src/chat/modules/SessionsModule.js +37 -3
  74. package/ts_build/src/chat/modules/SessionsModule.js.map +1 -1
  75. package/ts_build/src/chat/modules/SystemModule.js +2 -2
  76. package/ts_build/src/chat/modules/SystemModule.js.map +1 -1
  77. package/ts_build/src/chat/renderer/CompactRenderer.d.ts +4 -0
  78. package/ts_build/src/chat/renderer/CompactRenderer.js +16 -0
  79. package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -1
  80. package/ts_build/src/chat/renderer/ConsoleRenderer.d.ts +4 -0
  81. package/ts_build/src/chat/renderer/ConsoleRenderer.js +16 -0
  82. package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
  83. package/ts_build/src/chat/renderer/FancyRenderer.d.ts +4 -0
  84. package/ts_build/src/chat/renderer/FancyRenderer.js +16 -0
  85. package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -1
  86. package/ts_build/src/chat/renderer/types.d.ts +2 -0
  87. package/ts_build/src/cli.js +47 -519
  88. package/ts_build/src/cli.js.map +1 -1
  89. package/ts_build/src/clients/anthropic.d.ts +5 -5
  90. package/ts_build/src/clients/anthropic.js +18 -17
  91. package/ts_build/src/clients/anthropic.js.map +1 -1
  92. package/ts_build/src/clients/index.js +9 -10
  93. package/ts_build/src/clients/index.js.map +1 -1
  94. package/ts_build/src/clients/openai.js +4 -4
  95. package/ts_build/src/clients/openai.js.map +1 -1
  96. package/ts_build/src/clients/types.d.ts +15 -8
  97. package/ts_build/src/clients/withRetry.d.ts +2 -0
  98. package/ts_build/src/clients/withRetry.js +60 -0
  99. package/ts_build/src/clients/withRetry.js.map +1 -0
  100. package/ts_build/src/cloudWorker.d.ts +14 -0
  101. package/ts_build/src/cloudWorker.js +105 -66
  102. package/ts_build/src/cloudWorker.js.map +1 -1
  103. package/ts_build/src/commands/agent.d.ts +6 -0
  104. package/ts_build/src/commands/agent.js +229 -0
  105. package/ts_build/src/commands/agent.js.map +1 -0
  106. package/ts_build/src/commands/misc.d.ts +10 -0
  107. package/ts_build/src/commands/misc.js +197 -0
  108. package/ts_build/src/commands/misc.js.map +1 -0
  109. package/ts_build/src/commands/modules.d.ts +3 -0
  110. package/ts_build/src/commands/modules.js +487 -0
  111. package/ts_build/src/commands/modules.js.map +1 -0
  112. package/ts_build/src/commands/services.d.ts +5 -0
  113. package/ts_build/src/commands/services.js +87 -0
  114. package/ts_build/src/commands/services.js.map +1 -0
  115. package/ts_build/src/commands/workers.d.ts +6 -0
  116. package/ts_build/src/commands/workers.js +168 -0
  117. package/ts_build/src/commands/workers.js.map +1 -0
  118. package/ts_build/src/config.d.ts +1 -0
  119. package/ts_build/src/config.js +33 -1
  120. package/ts_build/src/config.js.map +1 -1
  121. package/ts_build/src/fileSync.d.ts +6 -0
  122. package/ts_build/src/fileSync.js +50 -23
  123. package/ts_build/src/fileSync.js.map +1 -1
  124. package/ts_build/src/hashes.d.ts +2 -2
  125. package/ts_build/src/hashes.js +35 -9
  126. package/ts_build/src/hashes.js.map +1 -1
  127. package/ts_build/src/index.d.ts +1 -0
  128. package/ts_build/src/index.js +17 -1
  129. package/ts_build/src/index.js.map +1 -1
  130. package/ts_build/src/logger.d.ts +21 -0
  131. package/ts_build/src/logger.js +106 -0
  132. package/ts_build/src/logger.js.map +1 -0
  133. package/ts_build/src/plugins/embedding.js +4 -3
  134. package/ts_build/src/plugins/embedding.js.map +1 -1
  135. package/ts_build/src/plugins/plugins.d.ts +0 -2
  136. package/ts_build/src/plugins/plugins.js +0 -11
  137. package/ts_build/src/plugins/plugins.js.map +1 -1
  138. package/ts_build/src/plugins/vim.js +3 -9
  139. package/ts_build/src/plugins/vim.js.map +1 -1
  140. package/ts_build/src/processors/JsonCompressor.js +4 -4
  141. package/ts_build/src/processors/JsonCompressor.js.map +1 -1
  142. package/ts_build/src/services/EventService.d.ts +6 -1
  143. package/ts_build/src/services/EventService.js +29 -0
  144. package/ts_build/src/services/EventService.js.map +1 -1
  145. package/ts_build/src/services/KnowhowClient.d.ts +13 -1
  146. package/ts_build/src/services/KnowhowClient.js +19 -2
  147. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  148. package/ts_build/src/services/MediaProcessorService.d.ts +5 -4
  149. package/ts_build/src/services/MediaProcessorService.js +53 -8
  150. package/ts_build/src/services/MediaProcessorService.js.map +1 -1
  151. package/ts_build/src/services/modules/index.d.ts +33 -0
  152. package/ts_build/src/services/modules/index.js +73 -49
  153. package/ts_build/src/services/modules/index.js.map +1 -1
  154. package/ts_build/src/services/modules/types.d.ts +6 -0
  155. package/ts_build/src/tunnel.d.ts +27 -0
  156. package/ts_build/src/tunnel.js +112 -0
  157. package/ts_build/src/tunnel.js.map +1 -0
  158. package/ts_build/src/types.d.ts +0 -1
  159. package/ts_build/src/types.js.map +1 -1
  160. package/ts_build/src/worker.d.ts +1 -4
  161. package/ts_build/src/worker.js +59 -227
  162. package/ts_build/src/worker.js.map +1 -1
  163. package/ts_build/src/workers/auth/WsMiddleware.d.ts +8 -0
  164. package/ts_build/src/workers/auth/WsMiddleware.js +65 -0
  165. package/ts_build/src/workers/auth/WsMiddleware.js.map +1 -0
  166. package/ts_build/src/workers/auth/authMiddleware.d.ts +3 -0
  167. package/ts_build/src/workers/auth/authMiddleware.js +60 -0
  168. package/ts_build/src/workers/auth/authMiddleware.js.map +1 -0
  169. package/ts_build/src/workers/auth/types.d.ts +8 -1
  170. package/ts_build/src/workers/tools/index.d.ts +2 -0
  171. package/ts_build/src/workers/tools/index.js +4 -1
  172. package/ts_build/src/workers/tools/index.js.map +1 -1
  173. package/ts_build/src/workers/tools/reloadConfig.d.ts +14 -0
  174. package/ts_build/src/workers/tools/reloadConfig.js +48 -0
  175. package/ts_build/src/workers/tools/reloadConfig.js.map +1 -0
  176. package/ts_build/tests/services/WorkerReloadConfig.test.d.ts +1 -0
  177. package/ts_build/tests/services/WorkerReloadConfig.test.js +86 -0
  178. package/ts_build/tests/services/WorkerReloadConfig.test.js.map +1 -0
  179. package/ts_build/tests/unit/clients/AIClient.test.d.ts +1 -0
  180. package/ts_build/tests/unit/clients/AIClient.test.js +339 -0
  181. package/ts_build/tests/unit/clients/AIClient.test.js.map +1 -0
  182. package/ts_build/tests/unit/clients/withRetry.test.d.ts +1 -0
  183. package/ts_build/tests/unit/clients/withRetry.test.js +225 -0
  184. package/ts_build/tests/unit/clients/withRetry.test.js.map +1 -0
  185. package/ts_build/tests/unit/commands/github-credentials.test.d.ts +1 -0
  186. package/ts_build/tests/unit/commands/github-credentials.test.js +145 -0
  187. package/ts_build/tests/unit/commands/github-credentials.test.js.map +1 -0
  188. package/ts_build/tests/unit/modules/moduleLoading.test.js +20 -26
  189. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  190. package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -65
  191. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  192. package/src/agents/tools/executeScript/README.md +0 -94
  193. package/src/agents/tools/executeScript/definition.ts +0 -79
  194. package/src/agents/tools/executeScript/examples/dependency-injection-validation.ts +0 -272
  195. package/src/agents/tools/executeScript/examples/quick-test.ts +0 -74
  196. package/src/agents/tools/executeScript/examples/serialization-test.ts +0 -321
  197. package/src/agents/tools/executeScript/examples/test-runner.ts +0 -197
  198. package/src/agents/tools/executeScript/index.ts +0 -98
  199. package/src/services/script-execution/SandboxContext.ts +0 -282
  200. package/src/services/script-execution/ScriptExecutor.ts +0 -441
  201. package/src/services/script-execution/ScriptPolicy.ts +0 -194
  202. package/src/services/script-execution/ScriptTracer.ts +0 -249
  203. package/src/services/script-execution/types.ts +0 -134
  204. package/ts_build/src/agents/tools/executeScript/definition.d.ts +0 -2
  205. package/ts_build/src/agents/tools/executeScript/definition.js +0 -76
  206. package/ts_build/src/agents/tools/executeScript/definition.js.map +0 -1
  207. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.d.ts +0 -18
  208. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js +0 -192
  209. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js.map +0 -1
  210. package/ts_build/src/agents/tools/executeScript/examples/quick-test.d.ts +0 -3
  211. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js +0 -64
  212. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js.map +0 -1
  213. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.d.ts +0 -15
  214. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js +0 -266
  215. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js.map +0 -1
  216. package/ts_build/src/agents/tools/executeScript/examples/test-runner.d.ts +0 -4
  217. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js +0 -208
  218. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js.map +0 -1
  219. package/ts_build/src/agents/tools/executeScript/index.d.ts +0 -28
  220. package/ts_build/src/agents/tools/executeScript/index.js +0 -72
  221. package/ts_build/src/agents/tools/executeScript/index.js.map +0 -1
  222. package/ts_build/src/services/script-execution/SandboxContext.d.ts +0 -34
  223. package/ts_build/src/services/script-execution/SandboxContext.js +0 -189
  224. package/ts_build/src/services/script-execution/SandboxContext.js.map +0 -1
  225. package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +0 -19
  226. package/ts_build/src/services/script-execution/ScriptExecutor.js +0 -269
  227. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +0 -1
  228. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +0 -28
  229. package/ts_build/src/services/script-execution/ScriptPolicy.js +0 -115
  230. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +0 -1
  231. package/ts_build/src/services/script-execution/ScriptTracer.d.ts +0 -19
  232. package/ts_build/src/services/script-execution/ScriptTracer.js +0 -186
  233. package/ts_build/src/services/script-execution/ScriptTracer.js.map +0 -1
  234. package/ts_build/src/services/script-execution/types.d.ts +0 -108
  235. package/ts_build/src/services/script-execution/types.js +0 -3
  236. package/ts_build/src/services/script-execution/types.js.map +0 -1
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TUNNEL_MINIMAL_TOOLS = void 0;
4
+ exports.extractTunnelDomain = extractTunnelDomain;
5
+ exports.initTunnelHandler = initTunnelHandler;
6
+ exports.resolveTunnelConfig = resolveTunnelConfig;
7
+ exports.connectTunnelWebSocket = connectTunnelWebSocket;
8
+ const ws_1 = require("ws");
9
+ const knowhow_tunnel_1 = require("@tyvm/knowhow-tunnel");
10
+ const KnowhowClient_1 = require("./services/KnowhowClient");
11
+ const modules_1 = require("./services/modules");
12
+ const WsMiddleware_1 = require("./workers/auth/WsMiddleware");
13
+ const authMiddleware_1 = require("./workers/auth/authMiddleware");
14
+ function extractTunnelDomain(apiUrl) {
15
+ try {
16
+ const url = new URL(apiUrl);
17
+ const useHttps = url.protocol === "https:";
18
+ if (url.hostname === "localhost" || url.hostname === "127.0.0.1") {
19
+ return {
20
+ domain: `worker.${url.hostname}:${url.port || "80"}`,
21
+ useHttps,
22
+ };
23
+ }
24
+ return { domain: `worker.${url.hostname}`, useHttps };
25
+ }
26
+ catch (err) {
27
+ console.error("Failed to parse API_URL for tunnel domain:", err);
28
+ return { domain: "worker.localhost:4000", useHttps: false };
29
+ }
30
+ }
31
+ async function initTunnelHandler(tunnelConnection, tunnelConfig) {
32
+ const handler = (0, knowhow_tunnel_1.createTunnelHandler)(tunnelConnection, tunnelConfig);
33
+ console.log("🌐 Tunnel handler initialized");
34
+ console.log(tunnelConfig);
35
+ const tunnelModuleService = new modules_1.ModulesService();
36
+ const tunnelContext = await tunnelModuleService.overrideDefaultContext({
37
+ Tunnel: handler,
38
+ });
39
+ tunnelModuleService.loadModulesFromConfig(tunnelContext).catch((err) => {
40
+ console.error("Failed to load tunnel modules:", err);
41
+ });
42
+ return handler;
43
+ }
44
+ function resolveTunnelConfig(config, isInsideDocker) {
45
+ let tunnelLocalHost = config.worker?.tunnel?.localHost;
46
+ if (!tunnelLocalHost) {
47
+ if (isInsideDocker) {
48
+ tunnelLocalHost = "host.docker.internal";
49
+ console.log("🐳 Docker detected: tunnel will use host.docker.internal to reach host services");
50
+ }
51
+ else {
52
+ tunnelLocalHost = "127.0.0.1";
53
+ }
54
+ }
55
+ const portMapping = (config.worker?.tunnel?.portMapping || {});
56
+ if (Object.keys(portMapping).length > 0) {
57
+ console.log("🔀 Port mapping configured:");
58
+ for (const [containerPort, hostPort] of Object.entries(portMapping)) {
59
+ console.log(` Container port ${containerPort} → Host port ${hostPort}`);
60
+ }
61
+ }
62
+ return { tunnelLocalHost, portMapping };
63
+ }
64
+ function connectTunnelWebSocket(options) {
65
+ const { tunnelDomain, tunnelUseHttps, tunnelLocalHost, portMapping, config, headers, onOpen, onClose, onError, authService, } = options;
66
+ const tunnelConnection = new ws_1.WebSocket(`${KnowhowClient_1.KNOWHOW_API_URL}/ws/tunnel`, { headers });
67
+ tunnelConnection.on("open", async () => {
68
+ console.log("Tunnel WebSocket connected");
69
+ if (authService) {
70
+ const stack = new WsMiddleware_1.WsMiddlewareStack();
71
+ stack.use((0, authMiddleware_1.makeAuthMiddleware)(authService));
72
+ stack.wrapSocket(tunnelConnection);
73
+ }
74
+ const allowedPorts = config.worker?.tunnel?.allowedPorts || [];
75
+ const urlRewriter = (port, metadata) => {
76
+ const workerId = metadata?.workerId;
77
+ const secret = metadata?.secret;
78
+ const subdomain = secret
79
+ ? `${secret}-p${port}`
80
+ : `${workerId}-p${port}`;
81
+ return `${subdomain}.${tunnelDomain}`;
82
+ };
83
+ const tunnelConfig = {
84
+ allowedPorts,
85
+ maxConcurrentStreams: config.worker?.tunnel?.maxConcurrentStreams || 50,
86
+ tunnelUseHttps,
87
+ localHost: tunnelLocalHost,
88
+ urlRewriter,
89
+ enableUrlRewriting: config.worker?.tunnel?.enableUrlRewriting !== false,
90
+ portMapping,
91
+ logLevel: "debug",
92
+ };
93
+ const handler = await initTunnelHandler(tunnelConnection, tunnelConfig);
94
+ onOpen?.(handler);
95
+ });
96
+ tunnelConnection.on("close", (code, reason) => {
97
+ console.log(`Tunnel WebSocket closed. Code: ${code}, Reason: ${reason.toString()}`);
98
+ onClose?.(code, reason.toString());
99
+ });
100
+ tunnelConnection.on("error", (error) => {
101
+ console.error("Tunnel WebSocket error:", error);
102
+ onError?.(error);
103
+ });
104
+ return tunnelConnection;
105
+ }
106
+ exports.TUNNEL_MINIMAL_TOOLS = [
107
+ "listAllowedPorts",
108
+ "unlock",
109
+ "lock",
110
+ "reloadConfig",
111
+ ];
112
+ //# sourceMappingURL=tunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/tunnel.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,6 @@ export type Config = {
52
52
  modules?: string[];
53
53
  };
54
54
  modules: string[];
55
- pluginPackages?: Record<string, string>;
56
55
  agents: Assistant[];
57
56
  mcps: McpConfig[];
58
57
  modelProviders: ModelProvider[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAoNA,8CAGC;AAED,gDAGC;AAhDD,2DAAmF;AAoCjF,oGApCwB,+BAAmB,OAoCxB;AAnCrB,qDAKkC;AAwBhC,sGA3BA,8BAAqB,OA2BA;AAAE,iGA3BA,yBAAgB,OA2BA;AAAE,0GA3BA,kCAAyB,OA2BA;AAClE,0GA3BA,kCAAyB,OA2BA;AAAE,kGA3BA,0BAAiB,OA2BA;AAAE,kGA3BA,0BAAiB,OA2BA;AAC/D,gGA3BA,wBAAe,OA2BA;AAAE,0GA3BA,kCAAyB,OA2BA;AAAE,qGA3BA,6BAAoB,OA2BA;AAzBlE,qDAIkC;AAsBZ,sGAxBpB,yBAAgB,OAwByB;AACzC,kGAzBkB,0BAAiB,OAyBlB;AAAE,kGAzBkB,0BAAiB,OAyBlB;AAAE,gGAxBtC,wBAAe,OAwBsC;AAAE,0GAxBtC,kCAAyB,OAwBsC;AAChF,0GAzB4C,kCAAyB,OAyB5C;AAAE,2GAzB4C,mCAA0B,OAyB5C;AAvBvD,+CAE+B;AAuB7B,8FAxBW,mBAAa,OAwBX;AAAE,+FAxBW,oBAAc,OAwBX;AAAE,+FAxBW,oBAAc,OAwBX;AAAE,uGAxBW,4BAAsB,OAwBX;AAAE,mGAxBW,wBAAkB,OAwBX;AArB9E,QAAA,MAAM,GAAG;IACpB,SAAS,EAAE,2BAAe;IAC1B,GAAG,EAAE,eAAS;IACd,MAAM,EAAE,qBAAY;IACpB,MAAM,EAAE,qBAAY;CACrB,CAAC;AAEW,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,8BAAqB;IAC7B,MAAM,EAAE,8BAAqB;CAC9B,CAAC;AAcF,SAAgB,iBAAiB,CAAC,OAAsC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAsC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAChC,CAAC;AAEY,QAAA,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC/D,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAE,CAA0D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAmNA,8CAGC;AAED,gDAGC;AAhDD,2DAAmF;AAoCjF,oGApCwB,+BAAmB,OAoCxB;AAnCrB,qDAKkC;AAwBhC,sGA3BA,8BAAqB,OA2BA;AAAE,iGA3BA,yBAAgB,OA2BA;AAAE,0GA3BA,kCAAyB,OA2BA;AAClE,0GA3BA,kCAAyB,OA2BA;AAAE,kGA3BA,0BAAiB,OA2BA;AAAE,kGA3BA,0BAAiB,OA2BA;AAC/D,gGA3BA,wBAAe,OA2BA;AAAE,0GA3BA,kCAAyB,OA2BA;AAAE,qGA3BA,6BAAoB,OA2BA;AAzBlE,qDAIkC;AAsBZ,sGAxBpB,yBAAgB,OAwByB;AACzC,kGAzBkB,0BAAiB,OAyBlB;AAAE,kGAzBkB,0BAAiB,OAyBlB;AAAE,gGAxBtC,wBAAe,OAwBsC;AAAE,0GAxBtC,kCAAyB,OAwBsC;AAChF,0GAzB4C,kCAAyB,OAyB5C;AAAE,2GAzB4C,mCAA0B,OAyB5C;AAvBvD,+CAE+B;AAuB7B,8FAxBW,mBAAa,OAwBX;AAAE,+FAxBW,oBAAc,OAwBX;AAAE,+FAxBW,oBAAc,OAwBX;AAAE,uGAxBW,4BAAsB,OAwBX;AAAE,mGAxBW,wBAAkB,OAwBX;AArB9E,QAAA,MAAM,GAAG;IACpB,SAAS,EAAE,2BAAe;IAC1B,GAAG,EAAE,eAAS;IACd,MAAM,EAAE,qBAAY;IACpB,MAAM,EAAE,qBAAY;CACrB,CAAC;AAEW,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,8BAAqB;IAC7B,MAAM,EAAE,8BAAqB;CAC9B,CAAC;AAcF,SAAgB,iBAAiB,CAAC,OAAsC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAsC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAChC,CAAC;AAEY,QAAA,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC/D,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAE,CAA0D,CAAC"}
@@ -6,8 +6,5 @@ export declare function worker(options?: {
6
6
  noSandbox?: boolean;
7
7
  passkey?: boolean;
8
8
  passkeyReset?: boolean;
9
- }): Promise<void>;
10
- export declare function tunnel(options?: {
11
- share?: boolean;
12
- unshare?: boolean;
9
+ allowedTools?: string[];
13
10
  }): Promise<void>;
@@ -37,10 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.worker = worker;
40
- exports.tunnel = tunnel;
41
40
  const os_1 = __importDefault(require("os"));
42
41
  const ws_1 = require("ws");
43
- const knowhow_tunnel_1 = require("@tyvm/knowhow-tunnel");
44
42
  const list_1 = require("./agents/tools/list");
45
43
  const login_1 = require("./login");
46
44
  const services_1 = require("./services");
@@ -54,6 +52,7 @@ const utils_1 = require("./utils");
54
52
  const config_1 = require("./config");
55
53
  const KnowhowClient_1 = require("./services/KnowhowClient");
56
54
  const workerRegistry_1 = require("./workerRegistry");
55
+ const tunnel_1 = require("./tunnel");
57
56
  const API_URL = KnowhowClient_1.KNOWHOW_API_URL;
58
57
  async function runWorkerInSandbox(options, config) {
59
58
  const { Docker } = (0, services_1.services)();
@@ -191,7 +190,7 @@ async function worker(options) {
191
190
  if (!shouldUseSandbox) {
192
191
  console.log(`🖥️ Using host mode (${sandboxSource})`);
193
192
  }
194
- if (!config.worker || !config.worker.allowedTools) {
193
+ if (!options?.allowedTools && (!config.worker || !config.worker.allowedTools)) {
195
194
  console.log("Worker tools configured! Update knowhow.json to adjust which tools are allowed by the worker.");
196
195
  config.worker = {
197
196
  ...config.worker,
@@ -204,7 +203,8 @@ async function worker(options) {
204
203
  await (0, workerRegistry_1.registerWorkerPath)(process.cwd());
205
204
  return;
206
205
  }
207
- let toolsToUse = Tools.getToolsByNames(config.worker.allowedTools);
206
+ const resolvedToolNames = options?.allowedTools ?? config.worker.allowedTools;
207
+ let toolsToUse = Tools.getToolsByNames(resolvedToolNames);
208
208
  if (authService) {
209
209
  const _authService = authService;
210
210
  for (const tool of toolsToUse) {
@@ -228,30 +228,22 @@ async function worker(options) {
228
228
  toolsToUse = [unlockDefinition, lockDefinition, ...toolsToUse];
229
229
  console.log("🔑 Auth tools registered: unlock, lock");
230
230
  }
231
+ const { reloadConfig, reloadConfigDefinition } = (0, tools_1.makeReloadConfigTool)(Mcp, Tools, mcpServer, (newTools) => {
232
+ toolsToUse = newTools;
233
+ });
234
+ Tools.addFunctions({ reloadConfig });
235
+ toolsToUse = [...toolsToUse, reloadConfigDefinition];
236
+ console.log("🔄 reloadConfig tool registered");
231
237
  mcpServer.createServer(clientName, clientVersion).withTools(toolsToUse);
232
238
  let connected = false;
233
239
  let tunnelHandler = null;
234
240
  let tunnelWs = null;
235
241
  let lastJwt = null;
236
242
  let unauthorizedJwt = null;
237
- const tunnelEnabled = config.worker?.tunnel?.enabled ?? false;
238
- let tunnelLocalHost = config.worker?.tunnel?.localHost;
239
- if (!tunnelLocalHost) {
240
- if (isInsideDocker) {
241
- tunnelLocalHost = "host.docker.internal";
242
- console.log("🐳 Docker detected: tunnel will use host.docker.internal to reach host services");
243
- }
244
- else {
245
- tunnelLocalHost = "127.0.0.1";
246
- }
247
- }
248
- const portMapping = config.worker?.tunnel?.portMapping || {};
249
- if (Object.keys(portMapping).length > 0) {
250
- console.log("🔀 Port mapping configured:");
251
- for (const [containerPort, hostPort] of Object.entries(portMapping)) {
252
- console.log(` Container port ${containerPort} → Host port ${hostPort}`);
253
- }
254
- }
243
+ const tunnelEnabled = options?.allowedTools
244
+ ? true
245
+ : (config.worker?.tunnel?.enabled ?? false);
246
+ const { tunnelLocalHost, portMapping } = (0, tunnel_1.resolveTunnelConfig)(config, isInsideDocker);
255
247
  if (tunnelEnabled) {
256
248
  const tunnelPorts = config.worker?.tunnel?.allowedPorts || [];
257
249
  if (tunnelPorts.length === 0) {
@@ -264,23 +256,6 @@ async function worker(options) {
264
256
  else {
265
257
  console.log("🚫 Tunnel disabled (enable in knowhow.json: worker.tunnel.enabled = true)");
266
258
  }
267
- function extractTunnelDomain(apiUrl) {
268
- try {
269
- const url = new URL(apiUrl);
270
- const useHttps = url.protocol === "https:";
271
- if (url.hostname === "localhost" || url.hostname === "127.0.0.1") {
272
- return {
273
- domain: `worker.${url.hostname}:${url.port || "80"}`,
274
- useHttps,
275
- };
276
- }
277
- return { domain: `worker.${url.hostname}`, useHttps };
278
- }
279
- catch (err) {
280
- console.error("Failed to parse API_URL for tunnel domain:", err);
281
- return { domain: "worker.localhost:4000", useHttps: false };
282
- }
283
- }
284
259
  async function connectWebSocket() {
285
260
  const jwt = await (0, login_1.loadJwt)();
286
261
  console.log(`Connecting to ${API_URL}`);
@@ -308,7 +283,7 @@ async function worker(options) {
308
283
  else {
309
284
  console.log("🔒 Worker is private (only you can use it)");
310
285
  }
311
- const { domain: tunnelDomain, useHttps: tunnelUseHttps } = extractTunnelDomain(API_URL);
286
+ const { domain: tunnelDomain, useHttps: tunnelUseHttps } = (0, tunnel_1.extractTunnelDomain)(API_URL);
312
287
  const ws = new ws_1.WebSocket(`${API_URL}/ws/worker`, {
313
288
  headers,
314
289
  });
@@ -329,6 +304,21 @@ async function worker(options) {
329
304
  console.log(`✅ Worker ID recorded: ${parsed.workerId}`);
330
305
  }
331
306
  }
307
+ if (parsed?.type === "reloadConfig") {
308
+ console.log("🔄 Received reloadConfig — reloading MCPs, modules and tools...");
309
+ try {
310
+ const freshConfig = await (0, config_1.getConfig)();
311
+ await Mcp.closeAll();
312
+ await Mcp.connectToConfigured(Tools);
313
+ const allowedToolNames = freshConfig.worker?.allowedTools ?? Tools.getToolNames();
314
+ toolsToUse = Tools.getToolsByNames(allowedToolNames);
315
+ mcpServer.withTools(toolsToUse);
316
+ console.log(`✅ Config reloaded: ${toolsToUse.length} tools active`);
317
+ }
318
+ catch (err) {
319
+ console.error("❌ Failed to reload config:", err);
320
+ }
321
+ }
332
322
  }
333
323
  catch {
334
324
  }
@@ -336,55 +326,36 @@ async function worker(options) {
336
326
  ws.on("message", workerRegisteredHandler);
337
327
  let tunnelConnection = null;
338
328
  if (tunnelEnabled) {
339
- tunnelConnection = new ws_1.WebSocket(`${API_URL}/ws/tunnel`, {
329
+ tunnelConnection = (0, tunnel_1.connectTunnelWebSocket)({
330
+ tunnelDomain,
331
+ tunnelUseHttps,
332
+ tunnelLocalHost,
333
+ portMapping,
334
+ config,
340
335
  headers,
341
- });
342
- tunnelConnection.on("open", () => {
343
- console.log("Tunnel WebSocket connected");
344
- const allowedPorts = config.worker?.tunnel?.allowedPorts || [];
345
- const urlRewriter = (port, metadata) => {
346
- const workerId = metadata?.workerId;
347
- const secret = metadata?.secret;
348
- const subdomain = secret
349
- ? `${secret}-p${port}`
350
- : `${workerId}-p${port}`;
351
- const replacementUrl = `${subdomain}.${tunnelDomain}`;
352
- return replacementUrl;
353
- };
354
- const tunnelConfig = {
355
- allowedPorts,
356
- maxConcurrentStreams: config.worker?.tunnel?.maxConcurrentStreams || 50,
357
- tunnelUseHttps,
358
- localHost: tunnelLocalHost,
359
- urlRewriter,
360
- enableUrlRewriting: config.worker?.tunnel?.enableUrlRewriting !== false,
361
- portMapping,
362
- logLevel: "debug",
363
- };
364
- tunnelHandler = (0, knowhow_tunnel_1.createTunnelHandler)(tunnelConnection, tunnelConfig);
365
- console.log("🌐 Tunnel handler initialized");
366
- console.log(tunnelConfig);
367
- });
368
- tunnelConnection.on("close", (code, reason) => {
369
- console.log(`Tunnel WebSocket closed. Code: ${code}, Reason: ${reason.toString()}`);
370
- if (code === 1008) {
371
- unauthorizedJwt = lastJwt;
372
- console.error("❌ Tunnel received Unauthorized (1008). The JWT may be expired.");
373
- console.error(" Pausing reconnection until JWT changes...");
374
- }
375
- else {
376
- console.log("Tunnel connection will reconnect on next connection cycle...");
377
- }
378
- if (tunnelHandler) {
379
- tunnelHandler.cleanup();
380
- tunnelHandler = null;
381
- }
382
- tunnelWs = null;
383
- connected = false;
384
- });
385
- tunnelConnection.on("error", (error) => {
386
- console.error("Tunnel WebSocket error:", error);
387
- connected = false;
336
+ authService,
337
+ onOpen: (handler) => {
338
+ tunnelHandler = handler;
339
+ },
340
+ onClose: (code, _reason) => {
341
+ if (code === 1008) {
342
+ unauthorizedJwt = lastJwt;
343
+ console.error("❌ Tunnel received Unauthorized (1008). The JWT may be expired.");
344
+ console.error(" Pausing reconnection until JWT changes...");
345
+ }
346
+ else {
347
+ console.log("Tunnel connection will reconnect on next connection cycle...");
348
+ }
349
+ if (tunnelHandler) {
350
+ tunnelHandler.cleanup();
351
+ tunnelHandler = null;
352
+ }
353
+ tunnelWs = null;
354
+ connected = false;
355
+ },
356
+ onError: (_error) => {
357
+ connected = false;
358
+ },
388
359
  });
389
360
  tunnelWs = tunnelConnection;
390
361
  }
@@ -441,143 +412,4 @@ async function worker(options) {
441
412
  await (0, utils_1.wait)(5000);
442
413
  }
443
414
  }
444
- async function tunnel(options) {
445
- const config = await (0, config_1.getConfig)();
446
- const isInsideDocker = process.env.KNOWHOW_DOCKER === "true";
447
- let tunnelLocalHost = config.worker?.tunnel?.localHost;
448
- if (!tunnelLocalHost) {
449
- if (isInsideDocker) {
450
- tunnelLocalHost = "host.docker.internal";
451
- console.log("🐳 Docker detected: tunnel will use host.docker.internal to reach host services");
452
- }
453
- else {
454
- tunnelLocalHost = "127.0.0.1";
455
- }
456
- }
457
- const portMapping = config.worker?.tunnel?.portMapping || {};
458
- if (Object.keys(portMapping).length > 0) {
459
- console.log("🔀 Port mapping configured:");
460
- for (const [containerPort, hostPort] of Object.entries(portMapping)) {
461
- console.log(` Container port ${containerPort} → Host port ${hostPort}`);
462
- }
463
- }
464
- const tunnelPorts = config.worker?.tunnel?.allowedPorts || [];
465
- if (tunnelPorts.length === 0) {
466
- console.warn("⚠️ No allowedPorts configured. Add worker.tunnel.allowedPorts to knowhow.json");
467
- }
468
- else {
469
- console.log(`🌐 Tunnel mode for ports: ${tunnelPorts.join(", ")}`);
470
- }
471
- function extractTunnelDomain(apiUrl) {
472
- try {
473
- const url = new URL(apiUrl);
474
- const useHttps = url.protocol === "https:";
475
- if (url.hostname === "localhost" || url.hostname === "127.0.0.1") {
476
- return {
477
- domain: `worker.${url.hostname}:${url.port || "80"}`,
478
- useHttps,
479
- };
480
- }
481
- return { domain: `worker.${url.hostname}`, useHttps };
482
- }
483
- catch (err) {
484
- console.error("Failed to parse API_URL for tunnel domain:", err);
485
- return { domain: "worker.localhost:4000", useHttps: false };
486
- }
487
- }
488
- let connected = false;
489
- let tunnelHandler = null;
490
- let lastJwt = null;
491
- let unauthorizedJwt = null;
492
- async function connectTunnel() {
493
- const jwt = await (0, login_1.loadJwt)();
494
- lastJwt = jwt;
495
- console.log(`Connecting tunnel to ${API_URL}`);
496
- const dir = process.cwd();
497
- const homedir = os_1.default.homedir();
498
- const hostname = process.env.WORKER_HOSTNAME || os_1.default.hostname();
499
- const root = process.env.WORKER_ROOT ||
500
- (dir === homedir ? "~" : dir.replace(homedir, "~"));
501
- const headers = {
502
- Authorization: `Bearer ${jwt}`,
503
- "User-Agent": `knowhow-tunnel/1.0.0/${hostname}`,
504
- Root: root,
505
- };
506
- if (options?.share) {
507
- headers.Shared = "true";
508
- console.log("🔓 Tunnel shared with organization");
509
- }
510
- else if (options?.unshare) {
511
- headers.Shared = "false";
512
- console.log("🔒 Tunnel is now private (unshared)");
513
- }
514
- else {
515
- console.log("🔒 Tunnel is private (only you can use it)");
516
- }
517
- const { domain: tunnelDomain, useHttps: tunnelUseHttps } = extractTunnelDomain(API_URL);
518
- const tunnelConnection = new ws_1.WebSocket(`${API_URL}/ws/tunnel`, { headers });
519
- tunnelConnection.on("open", () => {
520
- console.log("🌐 Tunnel WebSocket connected");
521
- connected = true;
522
- const allowedPorts = config.worker?.tunnel?.allowedPorts || [];
523
- const urlRewriter = (port, metadata) => {
524
- const workerId = metadata?.workerId;
525
- const secret = metadata?.secret;
526
- const subdomain = secret ? `${secret}-p${port}` : `${workerId}-p${port}`;
527
- return `${subdomain}.${tunnelDomain}`;
528
- };
529
- const tunnelConfig = {
530
- allowedPorts,
531
- maxConcurrentStreams: config.worker?.tunnel?.maxConcurrentStreams || 50,
532
- tunnelUseHttps,
533
- localHost: tunnelLocalHost,
534
- urlRewriter,
535
- enableUrlRewriting: config.worker?.tunnel?.enableUrlRewriting !== false,
536
- portMapping,
537
- logLevel: "debug",
538
- };
539
- tunnelHandler = (0, knowhow_tunnel_1.createTunnelHandler)(tunnelConnection, tunnelConfig);
540
- console.log("🌐 Tunnel handler initialized");
541
- console.log(tunnelConfig);
542
- });
543
- tunnelConnection.on("close", (code, reason) => {
544
- console.log(`Tunnel WebSocket closed. Code: ${code}, Reason: ${reason.toString()}`);
545
- if (code === 1008) {
546
- unauthorizedJwt = lastJwt;
547
- console.error("❌ Tunnel received Unauthorized (1008). The JWT may be expired.");
548
- console.error(" Run 'knowhow login' to refresh your token, then restart.");
549
- console.error(" Pausing reconnection until JWT changes...");
550
- }
551
- else {
552
- console.log("Tunnel connection will reconnect on next cycle...");
553
- }
554
- if (tunnelHandler) {
555
- tunnelHandler.cleanup();
556
- tunnelHandler = null;
557
- }
558
- connected = false;
559
- });
560
- tunnelConnection.on("error", (error) => {
561
- console.error("Tunnel WebSocket error:", error);
562
- connected = false;
563
- });
564
- return tunnelConnection;
565
- }
566
- while (true) {
567
- if (!connected) {
568
- if (unauthorizedJwt !== null) {
569
- const currentJwt = await (0, login_1.loadJwt)().catch(() => null);
570
- if (currentJwt === unauthorizedJwt) {
571
- await (0, utils_1.wait)(5000);
572
- continue;
573
- }
574
- console.log("🔄 JWT has changed, attempting to reconnect tunnel...");
575
- unauthorizedJwt = null;
576
- }
577
- console.log("Attempting to connect tunnel...");
578
- await connectTunnel();
579
- }
580
- await (0, utils_1.wait)(5000);
581
- }
582
- }
583
415
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { WebSocket } from "ws";
2
+ export type WsMiddlewareFn = (ws: WebSocket, data: Buffer | string, next: (err?: Error) => void) => void | Promise<void>;
3
+ export declare class WsMiddlewareStack {
4
+ private fns;
5
+ use(fn: WsMiddlewareFn): this;
6
+ attach(ws: WebSocket, onMessage: (data: Buffer | string) => void): void;
7
+ wrapSocket(ws: WebSocket): void;
8
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WsMiddlewareStack = void 0;
7
+ const events_1 = __importDefault(require("events"));
8
+ class WsMiddlewareStack {
9
+ fns = [];
10
+ use(fn) {
11
+ this.fns.push(fn);
12
+ return this;
13
+ }
14
+ attach(ws, onMessage) {
15
+ ws.on("message", async (data) => {
16
+ let i = 0;
17
+ const next = async (err) => {
18
+ if (err) {
19
+ console.error("WS middleware rejected message:", err.message);
20
+ ws.close(1008, err.message);
21
+ return;
22
+ }
23
+ const fn = this.fns[i++];
24
+ if (fn) {
25
+ await fn(ws, data, next);
26
+ }
27
+ else {
28
+ onMessage(data);
29
+ }
30
+ };
31
+ await next();
32
+ });
33
+ }
34
+ wrapSocket(ws) {
35
+ const innerEmitter = new events_1.default();
36
+ ws.on("message", async (data) => {
37
+ let i = 0;
38
+ const next = async (err) => {
39
+ if (err) {
40
+ console.error("WS middleware rejected message:", err.message);
41
+ ws.close(1008, err.message);
42
+ return;
43
+ }
44
+ const fn = this.fns[i++];
45
+ if (fn) {
46
+ await fn(ws, data, next);
47
+ }
48
+ else {
49
+ innerEmitter.emit("message", data);
50
+ }
51
+ };
52
+ await next();
53
+ });
54
+ const originalOn = ws.on.bind(ws);
55
+ ws.on = (event, listener) => {
56
+ if (event === "message") {
57
+ innerEmitter.on("message", listener);
58
+ return ws;
59
+ }
60
+ return originalOn(event, listener);
61
+ };
62
+ }
63
+ }
64
+ exports.WsMiddlewareStack = WsMiddlewareStack;
65
+ //# sourceMappingURL=WsMiddleware.js.map