@tyvm/knowhow 0.0.64 → 0.0.66

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 (53) hide show
  1. package/package.json +2 -1
  2. package/src/chat/modules/AgentModule.ts +11 -1
  3. package/src/cli.ts +5 -4
  4. package/src/clients/anthropic.ts +86 -65
  5. package/src/config.ts +7 -0
  6. package/src/services/AgentSynchronization.ts +27 -10
  7. package/src/types.ts +11 -0
  8. package/src/worker.ts +145 -8
  9. package/src/workers/tools/index.ts +10 -0
  10. package/src/workers/tools/listAllowedPorts.ts +30 -0
  11. package/ts_build/package.json +2 -1
  12. package/ts_build/src/chat/modules/AgentModule.js +7 -1
  13. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  14. package/ts_build/src/cli.js +5 -4
  15. package/ts_build/src/cli.js.map +1 -1
  16. package/ts_build/src/clients/anthropic.d.ts +9 -0
  17. package/ts_build/src/clients/anthropic.js +47 -31
  18. package/ts_build/src/clients/anthropic.js.map +1 -1
  19. package/ts_build/src/config.js +6 -0
  20. package/ts_build/src/config.js.map +1 -1
  21. package/ts_build/src/services/AgentSynchronization.d.ts +2 -0
  22. package/ts_build/src/services/AgentSynchronization.js +20 -10
  23. package/ts_build/src/services/AgentSynchronization.js.map +1 -1
  24. package/ts_build/src/types.d.ts +11 -0
  25. package/ts_build/src/types.js +1 -0
  26. package/ts_build/src/types.js.map +1 -1
  27. package/ts_build/src/worker/handlers/proxyHandler.d.ts +2 -0
  28. package/ts_build/src/worker/handlers/proxyHandler.js +41 -0
  29. package/ts_build/src/worker/handlers/proxyHandler.js.map +1 -0
  30. package/ts_build/src/worker/tools/index.d.ts +1 -0
  31. package/ts_build/src/worker/tools/index.js +18 -0
  32. package/ts_build/src/worker/tools/index.js.map +1 -0
  33. package/ts_build/src/worker/tools/portForwarding.d.ts +49 -0
  34. package/ts_build/src/worker/tools/portForwarding.js +173 -0
  35. package/ts_build/src/worker/tools/portForwarding.js.map +1 -0
  36. package/ts_build/src/worker/types/proxy.d.ts +18 -0
  37. package/ts_build/src/worker/types/proxy.js +3 -0
  38. package/ts_build/src/worker/types/proxy.js.map +1 -0
  39. package/ts_build/src/worker.js +119 -3
  40. package/ts_build/src/worker.js.map +1 -1
  41. package/ts_build/src/workers/tools/index.d.ts +9 -0
  42. package/ts_build/src/workers/tools/index.js +23 -0
  43. package/ts_build/src/workers/tools/index.js.map +1 -0
  44. package/ts_build/src/workers/tools/listAllowedPorts.d.ts +3 -0
  45. package/ts_build/src/workers/tools/listAllowedPorts.js +25 -0
  46. package/ts_build/src/workers/tools/listAllowedPorts.js.map +1 -0
  47. package/ts_build/src/workers/tools/listForwardedPorts.d.ts +10 -0
  48. package/ts_build/src/workers/tools/listForwardedPorts.js +22 -0
  49. package/ts_build/src/workers/tools/listForwardedPorts.js.map +1 -0
  50. package/ts_build/tests/worker/handlers/proxyHandler.test.d.ts +1 -0
  51. package/ts_build/tests/worker/handlers/proxyHandler.test.js +170 -0
  52. package/ts_build/tests/worker/handlers/proxyHandler.test.js.map +1 -0
  53. package/tsconfig.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listForwardedPorts.js","sourceRoot":"","sources":["../../../../src/workers/tools/listForwardedPorts.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAMlC,KAAK,UAAU,gBAAgB;IACpC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,GAAE,CAAC;IAEjC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QACnC,OAAO,EAAE,CAAC;KACX;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;AACjD,CAAC;AARD,4CAQC;AAEY,QAAA,4BAA4B,GAAG;IAC1C,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,iJAAiJ;IACnJ,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const proxyHandler_1 = require("../../../src/worker/handlers/proxyHandler");
27
+ const http = __importStar(require("http"));
28
+ jest.mock('../../../src/config', () => ({
29
+ getConfig: jest.fn(),
30
+ updateConfig: jest.fn(),
31
+ }));
32
+ const config_1 = require("../../../src/config");
33
+ const mockGetConfig = config_1.getConfig;
34
+ describe('handleProxyRequest', () => {
35
+ let testServer;
36
+ let testPort;
37
+ beforeAll((done) => {
38
+ testServer = http.createServer((req, res) => {
39
+ if (req.url === '/test') {
40
+ res.writeHead(200, { 'Content-Type': 'application/json' });
41
+ res.end(JSON.stringify({ message: 'Hello from test server' }));
42
+ }
43
+ else if (req.url === '/echo' && req.method === 'POST') {
44
+ let body = '';
45
+ req.on('data', chunk => {
46
+ body += chunk.toString();
47
+ });
48
+ req.on('end', () => {
49
+ res.writeHead(200, { 'Content-Type': 'application/json' });
50
+ res.end(JSON.stringify({ received: body }));
51
+ });
52
+ }
53
+ else if (req.url === '/html') {
54
+ res.writeHead(200, { 'Content-Type': 'text/html' });
55
+ res.end('<html><body><h1>Test Page</h1></body></html>');
56
+ }
57
+ else {
58
+ res.writeHead(404);
59
+ res.end('Not Found');
60
+ }
61
+ });
62
+ testServer.listen(0, () => {
63
+ testPort = testServer.address().port;
64
+ mockGetConfig.mockResolvedValue({
65
+ worker: {
66
+ allowedPorts: [testPort, 3000, 4000, 8080],
67
+ allowedTools: [],
68
+ },
69
+ });
70
+ done();
71
+ });
72
+ });
73
+ afterAll((done) => {
74
+ testServer.close(done);
75
+ });
76
+ it('should forward GET request to allowed port', async () => {
77
+ const request = {
78
+ type: 'proxy_http_request',
79
+ requestId: 'test-1',
80
+ port: testPort,
81
+ method: 'GET',
82
+ path: '/test',
83
+ headers: {},
84
+ };
85
+ let response;
86
+ const sendResponse = (res) => {
87
+ response = res;
88
+ };
89
+ await (0, proxyHandler_1.handleProxyRequest)(request, sendResponse);
90
+ expect(response).toBeDefined();
91
+ expect(response?.type).toBe('proxy_http_response');
92
+ expect(response?.requestId).toBe('test-1');
93
+ expect(response?.statusCode).toBe(200);
94
+ expect(JSON.parse(response?.body || '{}')).toEqual({ message: 'Hello from test server' });
95
+ });
96
+ it('should handle POST request with body', async () => {
97
+ const testBody = JSON.stringify({ test: 'data' });
98
+ const request = {
99
+ type: 'proxy_http_request',
100
+ requestId: 'test-2',
101
+ port: testPort,
102
+ method: 'POST',
103
+ path: '/echo',
104
+ headers: { 'Content-Type': 'application/json' },
105
+ body: testBody,
106
+ };
107
+ let response;
108
+ const sendResponse = (res) => {
109
+ response = res;
110
+ };
111
+ await (0, proxyHandler_1.handleProxyRequest)(request, sendResponse);
112
+ expect(response).toBeDefined();
113
+ expect(response?.statusCode).toBe(200);
114
+ expect(JSON.parse(response?.body || '{}')).toEqual({ received: testBody });
115
+ });
116
+ it('should handle HTML responses', async () => {
117
+ const request = {
118
+ type: 'proxy_http_request',
119
+ requestId: 'test-3',
120
+ port: testPort,
121
+ method: 'GET',
122
+ path: '/html',
123
+ headers: {},
124
+ };
125
+ let response;
126
+ const sendResponse = (res) => {
127
+ response = res;
128
+ };
129
+ await (0, proxyHandler_1.handleProxyRequest)(request, sendResponse);
130
+ expect(response).toBeDefined();
131
+ expect(response?.statusCode).toBe(200);
132
+ expect(response?.body).toContain('<h1>Test Page</h1>');
133
+ });
134
+ it('should return error on connection refused', async () => {
135
+ const request = {
136
+ type: 'proxy_http_request',
137
+ requestId: 'test-4',
138
+ port: 9999,
139
+ method: 'GET',
140
+ path: '/test',
141
+ headers: {},
142
+ };
143
+ let response;
144
+ const sendResponse = (res) => {
145
+ response = res;
146
+ };
147
+ await (0, proxyHandler_1.handleProxyRequest)(request, sendResponse);
148
+ expect(response).toBeDefined();
149
+ expect(response?.statusCode).toBe(500);
150
+ expect(response?.error).toBeDefined();
151
+ });
152
+ it('should handle 404 responses', async () => {
153
+ const request = {
154
+ type: 'proxy_http_request',
155
+ requestId: 'test-5',
156
+ port: testPort,
157
+ method: 'GET',
158
+ path: '/nonexistent',
159
+ headers: {},
160
+ };
161
+ let response;
162
+ const sendResponse = (res) => {
163
+ response = res;
164
+ };
165
+ await (0, proxyHandler_1.handleProxyRequest)(request, sendResponse);
166
+ expect(response).toBeDefined();
167
+ expect(response?.statusCode).toBe(404);
168
+ });
169
+ });
170
+ //# sourceMappingURL=proxyHandler.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxyHandler.test.js","sourceRoot":"","sources":["../../../../tests/worker/handlers/proxyHandler.test.ts"],"names":[],"mappings":"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"}
package/tsconfig.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "lib": ["es5", "es6", "es2022", "dom"],
3
+ "lib": ["es5", "es6", "es2021", "es2022", "dom"],
4
4
  "skipLibCheck": true,
5
5
  "noImplicitAny": false,
6
6
  "removeComments": true,