@n8n/fs-proxy 0.1.0-rc1

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 (106) hide show
  1. package/LICENSE.md +88 -0
  2. package/README.md +267 -0
  3. package/dist/build.tsbuildinfo +1 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.js +189 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/config-templates.d.ts +10 -0
  8. package/dist/config-templates.js +39 -0
  9. package/dist/config-templates.js.map +1 -0
  10. package/dist/config.d.ts +67 -0
  11. package/dist/config.js +285 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/confirm-resource-cli.d.ts +4 -0
  14. package/dist/confirm-resource-cli.js +28 -0
  15. package/dist/confirm-resource-cli.js.map +1 -0
  16. package/dist/daemon.d.ts +11 -0
  17. package/dist/daemon.js +249 -0
  18. package/dist/daemon.js.map +1 -0
  19. package/dist/gateway-client.d.ts +38 -0
  20. package/dist/gateway-client.js +401 -0
  21. package/dist/gateway-client.js.map +1 -0
  22. package/dist/logger.d.ts +26 -0
  23. package/dist/logger.js +350 -0
  24. package/dist/logger.js.map +1 -0
  25. package/dist/settings-store.d.ts +29 -0
  26. package/dist/settings-store.js +224 -0
  27. package/dist/settings-store.js.map +1 -0
  28. package/dist/startup-config-cli.d.ts +5 -0
  29. package/dist/startup-config-cli.js +185 -0
  30. package/dist/startup-config-cli.js.map +1 -0
  31. package/dist/tools/browser/index.d.ts +14 -0
  32. package/dist/tools/browser/index.js +72 -0
  33. package/dist/tools/browser/index.js.map +1 -0
  34. package/dist/tools/filesystem/constants.d.ts +1 -0
  35. package/dist/tools/filesystem/constants.js +5 -0
  36. package/dist/tools/filesystem/constants.js.map +1 -0
  37. package/dist/tools/filesystem/copy-file.d.ts +14 -0
  38. package/dist/tools/filesystem/copy-file.js +65 -0
  39. package/dist/tools/filesystem/copy-file.js.map +1 -0
  40. package/dist/tools/filesystem/create-directory.d.ts +11 -0
  41. package/dist/tools/filesystem/create-directory.js +60 -0
  42. package/dist/tools/filesystem/create-directory.js.map +1 -0
  43. package/dist/tools/filesystem/delete.d.ts +11 -0
  44. package/dist/tools/filesystem/delete.js +64 -0
  45. package/dist/tools/filesystem/delete.js.map +1 -0
  46. package/dist/tools/filesystem/edit-file.d.ts +17 -0
  47. package/dist/tools/filesystem/edit-file.js +71 -0
  48. package/dist/tools/filesystem/edit-file.js.map +1 -0
  49. package/dist/tools/filesystem/fs-utils.d.ts +15 -0
  50. package/dist/tools/filesystem/fs-utils.js +178 -0
  51. package/dist/tools/filesystem/fs-utils.js.map +1 -0
  52. package/dist/tools/filesystem/get-file-tree.d.ts +14 -0
  53. package/dist/tools/filesystem/get-file-tree.js +38 -0
  54. package/dist/tools/filesystem/get-file-tree.js.map +1 -0
  55. package/dist/tools/filesystem/index.d.ts +3 -0
  56. package/dist/tools/filesystem/index.js +28 -0
  57. package/dist/tools/filesystem/index.js.map +1 -0
  58. package/dist/tools/filesystem/list-files.d.ts +17 -0
  59. package/dist/tools/filesystem/list-files.js +76 -0
  60. package/dist/tools/filesystem/list-files.js.map +1 -0
  61. package/dist/tools/filesystem/move.d.ts +14 -0
  62. package/dist/tools/filesystem/move.js +65 -0
  63. package/dist/tools/filesystem/move.js.map +1 -0
  64. package/dist/tools/filesystem/read-file.d.ts +17 -0
  65. package/dist/tools/filesystem/read-file.js +86 -0
  66. package/dist/tools/filesystem/read-file.js.map +1 -0
  67. package/dist/tools/filesystem/search-files.d.ts +23 -0
  68. package/dist/tools/filesystem/search-files.js +128 -0
  69. package/dist/tools/filesystem/search-files.js.map +1 -0
  70. package/dist/tools/filesystem/write-file.d.ts +14 -0
  71. package/dist/tools/filesystem/write-file.js +68 -0
  72. package/dist/tools/filesystem/write-file.js.map +1 -0
  73. package/dist/tools/monitor-utils.d.ts +2 -0
  74. package/dist/tools/monitor-utils.js +11 -0
  75. package/dist/tools/monitor-utils.js.map +1 -0
  76. package/dist/tools/mouse-keyboard/index.d.ts +2 -0
  77. package/dist/tools/mouse-keyboard/index.js +70 -0
  78. package/dist/tools/mouse-keyboard/index.js.map +1 -0
  79. package/dist/tools/mouse-keyboard/mouse-keyboard.d.ts +130 -0
  80. package/dist/tools/mouse-keyboard/mouse-keyboard.js +249 -0
  81. package/dist/tools/mouse-keyboard/mouse-keyboard.js.map +1 -0
  82. package/dist/tools/screenshot/index.d.ts +2 -0
  83. package/dist/tools/screenshot/index.js +26 -0
  84. package/dist/tools/screenshot/index.js.map +1 -0
  85. package/dist/tools/screenshot/screenshot.d.ts +22 -0
  86. package/dist/tools/screenshot/screenshot.js +91 -0
  87. package/dist/tools/screenshot/screenshot.js.map +1 -0
  88. package/dist/tools/shell/build-shell-resource.d.ts +1 -0
  89. package/dist/tools/shell/build-shell-resource.js +70 -0
  90. package/dist/tools/shell/build-shell-resource.js.map +1 -0
  91. package/dist/tools/shell/index.d.ts +2 -0
  92. package/dist/tools/shell/index.js +11 -0
  93. package/dist/tools/shell/index.js.map +1 -0
  94. package/dist/tools/shell/shell-execute.d.ts +17 -0
  95. package/dist/tools/shell/shell-execute.js +88 -0
  96. package/dist/tools/shell/shell-execute.js.map +1 -0
  97. package/dist/tools/test-utils.d.ts +3 -0
  98. package/dist/tools/test-utils.js +16 -0
  99. package/dist/tools/test-utils.js.map +1 -0
  100. package/dist/tools/types.d.ts +43 -0
  101. package/dist/tools/types.js +3 -0
  102. package/dist/tools/types.js.map +1 -0
  103. package/dist/tools/utils.d.ts +3 -0
  104. package/dist/tools/utils.js +19 -0
  105. package/dist/tools/utils.js.map +1 -0
  106. package/package.json +55 -0
@@ -0,0 +1,11 @@
1
+ import * as http from 'node:http';
2
+ import type { GatewayConfig } from './config';
3
+ import type { ConfirmResourceAccess } from './tools/types';
4
+ export type { ConfirmResourceAccess, ResourceDecision } from './tools/types';
5
+ export interface DaemonOptions {
6
+ confirmConnect: (url: string) => Promise<boolean> | boolean;
7
+ confirmResourceAccess: ConfirmResourceAccess;
8
+ onStatusChange?: (status: 'connected' | 'disconnected', url?: string) => void;
9
+ managedMode?: boolean;
10
+ }
11
+ export declare function startDaemon(config: GatewayConfig, options: DaemonOptions): http.Server;
package/dist/daemon.js ADDED
@@ -0,0 +1,249 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.startDaemon = startDaemon;
37
+ const http = __importStar(require("node:http"));
38
+ const gateway_client_1 = require("./gateway-client");
39
+ const logger_1 = require("./logger");
40
+ const settings_store_1 = require("./settings-store");
41
+ let daemonOptions;
42
+ let settingsStore = null;
43
+ let settingsStorePromise;
44
+ const state = {
45
+ config: undefined,
46
+ client: null,
47
+ connectedAt: null,
48
+ connectedUrl: null,
49
+ };
50
+ const CORS_HEADERS = {
51
+ ['Access-Control-Allow-Origin']: '*',
52
+ ['Access-Control-Allow-Methods']: 'GET, POST, OPTIONS',
53
+ ['Access-Control-Allow-Headers']: 'Content-Type',
54
+ };
55
+ function jsonResponse(res, status, body) {
56
+ res.writeHead(status, {
57
+ ['Content-Type']: 'application/json',
58
+ ...CORS_HEADERS,
59
+ });
60
+ res.end(JSON.stringify(body));
61
+ }
62
+ function getDir() {
63
+ return state.config.filesystem.dir;
64
+ }
65
+ async function readBody(req) {
66
+ return await new Promise((resolve, reject) => {
67
+ const chunks = [];
68
+ req.on('data', (chunk) => chunks.push(chunk));
69
+ req.on('end', () => resolve(Buffer.concat(chunks).toString()));
70
+ req.on('error', reject);
71
+ });
72
+ }
73
+ function handleHealth(res) {
74
+ jsonResponse(res, 200, {
75
+ status: 'ok',
76
+ dir: getDir(),
77
+ connected: state.client !== null,
78
+ });
79
+ }
80
+ async function handleConnect(req, res) {
81
+ const raw = await readBody(req);
82
+ let url;
83
+ let token;
84
+ try {
85
+ const body = JSON.parse(raw);
86
+ url = body.url ?? '';
87
+ token = body.token ?? '';
88
+ }
89
+ catch {
90
+ jsonResponse(res, 400, { error: 'Invalid JSON body' });
91
+ return;
92
+ }
93
+ if (!url || !token) {
94
+ jsonResponse(res, 400, { error: 'Missing required fields: url, token' });
95
+ return;
96
+ }
97
+ if (state.client) {
98
+ jsonResponse(res, 409, {
99
+ error: `Already connected to ${state.connectedUrl}. Disconnect first.`,
100
+ });
101
+ return;
102
+ }
103
+ const isAllowed = state.config.allowedOrigins.some((origin) => url.startsWith(origin));
104
+ if (!isAllowed) {
105
+ const approved = await daemonOptions.confirmConnect(url);
106
+ if (!approved) {
107
+ jsonResponse(res, 403, { error: 'Connection rejected by user.' });
108
+ return;
109
+ }
110
+ }
111
+ try {
112
+ const store = settingsStore ?? (await settingsStorePromise);
113
+ settingsStore ??= store;
114
+ const client = new gateway_client_1.GatewayClient({
115
+ url: url.replace(/\/$/, ''),
116
+ apiKey: token,
117
+ config: state.config,
118
+ settingsStore: store,
119
+ confirmResourceAccess: daemonOptions.confirmResourceAccess,
120
+ onPersistentFailure: () => {
121
+ state.client = null;
122
+ state.connectedAt = null;
123
+ state.connectedUrl = null;
124
+ (0, logger_1.printDisconnected)();
125
+ },
126
+ });
127
+ await client.start();
128
+ state.client = client;
129
+ state.connectedAt = new Date().toISOString();
130
+ state.connectedUrl = url;
131
+ const dir = getDir();
132
+ logger_1.logger.debug('Connected to n8n', { url, dir });
133
+ (0, logger_1.printConnected)(url);
134
+ (0, logger_1.printToolList)(client.tools);
135
+ daemonOptions.onStatusChange?.('connected', url);
136
+ jsonResponse(res, 200, { status: 'connected', dir });
137
+ }
138
+ catch (error) {
139
+ const message = error instanceof Error ? error.message : String(error);
140
+ logger_1.logger.error('Connection failed', { error: message });
141
+ jsonResponse(res, 500, { error: message });
142
+ }
143
+ }
144
+ async function handleDisconnect(res) {
145
+ if (state.client) {
146
+ await state.client.disconnect();
147
+ state.client = null;
148
+ state.connectedAt = null;
149
+ state.connectedUrl = null;
150
+ logger_1.logger.debug('Disconnected');
151
+ (0, logger_1.printDisconnected)();
152
+ daemonOptions.onStatusChange?.('disconnected');
153
+ }
154
+ jsonResponse(res, 200, { status: 'disconnected' });
155
+ }
156
+ function handleStatus(res) {
157
+ jsonResponse(res, 200, {
158
+ connected: state.client !== null,
159
+ dir: getDir(),
160
+ connectedAt: state.connectedAt,
161
+ url: state.connectedUrl,
162
+ });
163
+ }
164
+ function handleEvents(res) {
165
+ res.writeHead(200, {
166
+ ['Content-Type']: 'text/event-stream',
167
+ ['Cache-Control']: 'no-cache',
168
+ ['Connection']: 'keep-alive',
169
+ ...CORS_HEADERS,
170
+ });
171
+ res.write('event: ready\ndata: {}\n\n');
172
+ }
173
+ function handleCors(res) {
174
+ res.writeHead(204, {
175
+ ...CORS_HEADERS,
176
+ ['Access-Control-Max-Age']: '86400',
177
+ });
178
+ res.end();
179
+ }
180
+ function startDaemon(config, options) {
181
+ daemonOptions = options;
182
+ state.config = config;
183
+ const port = config.port;
184
+ settingsStorePromise = settings_store_1.SettingsStore.create(config);
185
+ void settingsStorePromise
186
+ .then((store) => {
187
+ settingsStore = store;
188
+ })
189
+ .catch((error) => {
190
+ logger_1.logger.error('Failed to initialize settings store', {
191
+ error: error instanceof Error ? error.message : String(error),
192
+ });
193
+ process.exit(1);
194
+ });
195
+ const server = http.createServer((req, res) => {
196
+ const { method, url: reqUrl } = req;
197
+ if (method === 'OPTIONS') {
198
+ handleCors(res);
199
+ return;
200
+ }
201
+ if (method === 'GET' && reqUrl === '/health') {
202
+ handleHealth(res);
203
+ }
204
+ else if (method === 'POST' && reqUrl === '/connect') {
205
+ void handleConnect(req, res);
206
+ }
207
+ else if (method === 'POST' && reqUrl === '/disconnect') {
208
+ void handleDisconnect(res);
209
+ }
210
+ else if (method === 'GET' && reqUrl === '/status') {
211
+ handleStatus(res);
212
+ }
213
+ else if (method === 'GET' && reqUrl === '/events') {
214
+ handleEvents(res);
215
+ }
216
+ else {
217
+ jsonResponse(res, 404, { error: 'Not found' });
218
+ }
219
+ });
220
+ server.on('error', (error) => {
221
+ if (error.code === 'EADDRINUSE') {
222
+ logger_1.logger.error('Port already in use', { port });
223
+ process.exit(1);
224
+ }
225
+ throw error;
226
+ });
227
+ server.listen(port, '127.0.0.1', () => {
228
+ (0, logger_1.printModuleStatus)(config);
229
+ (0, logger_1.printListening)(port);
230
+ (0, logger_1.printWaiting)();
231
+ });
232
+ if (!options.managedMode) {
233
+ const shutdown = () => {
234
+ (0, logger_1.printShuttingDown)();
235
+ const done = () => server.close(() => process.exit(0));
236
+ const flush = settingsStore ? settingsStore.flush() : Promise.resolve();
237
+ if (state.client) {
238
+ void Promise.all([state.client.disconnect(), flush]).finally(done);
239
+ }
240
+ else {
241
+ void flush.finally(done);
242
+ }
243
+ };
244
+ process.on('SIGINT', shutdown);
245
+ process.on('SIGTERM', shutdown);
246
+ }
247
+ return server;
248
+ }
249
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { GatewayConfig } from './config';
2
+ import type { SettingsStore } from './settings-store';
3
+ import type { ConfirmResourceAccess, ToolDefinition } from './tools/types';
4
+ export interface GatewayClientOptions {
5
+ url: string;
6
+ apiKey: string;
7
+ config: GatewayConfig;
8
+ settingsStore: SettingsStore;
9
+ confirmResourceAccess: ConfirmResourceAccess;
10
+ onPersistentFailure?: () => void;
11
+ }
12
+ export declare class GatewayClient {
13
+ private readonly options;
14
+ private eventSource;
15
+ private reconnectDelay;
16
+ private shouldReconnect;
17
+ private authRetryCount;
18
+ private sessionKey;
19
+ private allDefinitions;
20
+ private activeToolCategories;
21
+ private definitionMap;
22
+ private browserModule;
23
+ get tools(): ToolDefinition[];
24
+ constructor(options: GatewayClientOptions);
25
+ private get apiKey();
26
+ private get dir();
27
+ start(): Promise<void>;
28
+ stop(): Promise<void>;
29
+ disconnect(): Promise<void>;
30
+ private getAllDefinitions;
31
+ private uploadCapabilities;
32
+ private connectSSE;
33
+ private reInitialize;
34
+ private handleMessage;
35
+ private dispatchToolCall;
36
+ private checkPermissions;
37
+ private postResponse;
38
+ }