@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.
- package/LICENSE.md +88 -0
- package/README.md +267 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +189 -0
- package/dist/cli.js.map +1 -0
- package/dist/config-templates.d.ts +10 -0
- package/dist/config-templates.js +39 -0
- package/dist/config-templates.js.map +1 -0
- package/dist/config.d.ts +67 -0
- package/dist/config.js +285 -0
- package/dist/config.js.map +1 -0
- package/dist/confirm-resource-cli.d.ts +4 -0
- package/dist/confirm-resource-cli.js +28 -0
- package/dist/confirm-resource-cli.js.map +1 -0
- package/dist/daemon.d.ts +11 -0
- package/dist/daemon.js +249 -0
- package/dist/daemon.js.map +1 -0
- package/dist/gateway-client.d.ts +38 -0
- package/dist/gateway-client.js +401 -0
- package/dist/gateway-client.js.map +1 -0
- package/dist/logger.d.ts +26 -0
- package/dist/logger.js +350 -0
- package/dist/logger.js.map +1 -0
- package/dist/settings-store.d.ts +29 -0
- package/dist/settings-store.js +224 -0
- package/dist/settings-store.js.map +1 -0
- package/dist/startup-config-cli.d.ts +5 -0
- package/dist/startup-config-cli.js +185 -0
- package/dist/startup-config-cli.js.map +1 -0
- package/dist/tools/browser/index.d.ts +14 -0
- package/dist/tools/browser/index.js +72 -0
- package/dist/tools/browser/index.js.map +1 -0
- package/dist/tools/filesystem/constants.d.ts +1 -0
- package/dist/tools/filesystem/constants.js +5 -0
- package/dist/tools/filesystem/constants.js.map +1 -0
- package/dist/tools/filesystem/copy-file.d.ts +14 -0
- package/dist/tools/filesystem/copy-file.js +65 -0
- package/dist/tools/filesystem/copy-file.js.map +1 -0
- package/dist/tools/filesystem/create-directory.d.ts +11 -0
- package/dist/tools/filesystem/create-directory.js +60 -0
- package/dist/tools/filesystem/create-directory.js.map +1 -0
- package/dist/tools/filesystem/delete.d.ts +11 -0
- package/dist/tools/filesystem/delete.js +64 -0
- package/dist/tools/filesystem/delete.js.map +1 -0
- package/dist/tools/filesystem/edit-file.d.ts +17 -0
- package/dist/tools/filesystem/edit-file.js +71 -0
- package/dist/tools/filesystem/edit-file.js.map +1 -0
- package/dist/tools/filesystem/fs-utils.d.ts +15 -0
- package/dist/tools/filesystem/fs-utils.js +178 -0
- package/dist/tools/filesystem/fs-utils.js.map +1 -0
- package/dist/tools/filesystem/get-file-tree.d.ts +14 -0
- package/dist/tools/filesystem/get-file-tree.js +38 -0
- package/dist/tools/filesystem/get-file-tree.js.map +1 -0
- package/dist/tools/filesystem/index.d.ts +3 -0
- package/dist/tools/filesystem/index.js +28 -0
- package/dist/tools/filesystem/index.js.map +1 -0
- package/dist/tools/filesystem/list-files.d.ts +17 -0
- package/dist/tools/filesystem/list-files.js +76 -0
- package/dist/tools/filesystem/list-files.js.map +1 -0
- package/dist/tools/filesystem/move.d.ts +14 -0
- package/dist/tools/filesystem/move.js +65 -0
- package/dist/tools/filesystem/move.js.map +1 -0
- package/dist/tools/filesystem/read-file.d.ts +17 -0
- package/dist/tools/filesystem/read-file.js +86 -0
- package/dist/tools/filesystem/read-file.js.map +1 -0
- package/dist/tools/filesystem/search-files.d.ts +23 -0
- package/dist/tools/filesystem/search-files.js +128 -0
- package/dist/tools/filesystem/search-files.js.map +1 -0
- package/dist/tools/filesystem/write-file.d.ts +14 -0
- package/dist/tools/filesystem/write-file.js +68 -0
- package/dist/tools/filesystem/write-file.js.map +1 -0
- package/dist/tools/monitor-utils.d.ts +2 -0
- package/dist/tools/monitor-utils.js +11 -0
- package/dist/tools/monitor-utils.js.map +1 -0
- package/dist/tools/mouse-keyboard/index.d.ts +2 -0
- package/dist/tools/mouse-keyboard/index.js +70 -0
- package/dist/tools/mouse-keyboard/index.js.map +1 -0
- package/dist/tools/mouse-keyboard/mouse-keyboard.d.ts +130 -0
- package/dist/tools/mouse-keyboard/mouse-keyboard.js +249 -0
- package/dist/tools/mouse-keyboard/mouse-keyboard.js.map +1 -0
- package/dist/tools/screenshot/index.d.ts +2 -0
- package/dist/tools/screenshot/index.js +26 -0
- package/dist/tools/screenshot/index.js.map +1 -0
- package/dist/tools/screenshot/screenshot.d.ts +22 -0
- package/dist/tools/screenshot/screenshot.js +91 -0
- package/dist/tools/screenshot/screenshot.js.map +1 -0
- package/dist/tools/shell/build-shell-resource.d.ts +1 -0
- package/dist/tools/shell/build-shell-resource.js +70 -0
- package/dist/tools/shell/build-shell-resource.js.map +1 -0
- package/dist/tools/shell/index.d.ts +2 -0
- package/dist/tools/shell/index.js +11 -0
- package/dist/tools/shell/index.js.map +1 -0
- package/dist/tools/shell/shell-execute.d.ts +17 -0
- package/dist/tools/shell/shell-execute.js +88 -0
- package/dist/tools/shell/shell-execute.js.map +1 -0
- package/dist/tools/test-utils.d.ts +3 -0
- package/dist/tools/test-utils.js +16 -0
- package/dist/tools/test-utils.js.map +1 -0
- package/dist/tools/types.d.ts +43 -0
- package/dist/tools/types.js +3 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/utils.d.ts +3 -0
- package/dist/tools/utils.js +19 -0
- package/dist/tools/utils.js.map +1 -0
- package/package.json +55 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
38
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
39
|
+
const config_1 = require("./config");
|
|
40
|
+
const confirm_resource_cli_1 = require("./confirm-resource-cli");
|
|
41
|
+
const daemon_1 = require("./daemon");
|
|
42
|
+
const gateway_client_1 = require("./gateway-client");
|
|
43
|
+
const logger_1 = require("./logger");
|
|
44
|
+
const settings_store_1 = require("./settings-store");
|
|
45
|
+
const startup_config_cli_1 = require("./startup-config-cli");
|
|
46
|
+
async function cliConfirmConnect(url) {
|
|
47
|
+
return await (0, prompts_1.confirm)({ message: `Allow connection to ${(0, confirm_resource_cli_1.sanitizeForTerminal)(url)}?` });
|
|
48
|
+
}
|
|
49
|
+
function makeConfirmConnect(nonInteractive, autoConfirm) {
|
|
50
|
+
if (autoConfirm)
|
|
51
|
+
return () => true;
|
|
52
|
+
if (nonInteractive)
|
|
53
|
+
return () => false;
|
|
54
|
+
return cliConfirmConnect;
|
|
55
|
+
}
|
|
56
|
+
function makeConfirmResourceAccess(nonInteractive, autoConfirm) {
|
|
57
|
+
if (autoConfirm)
|
|
58
|
+
return () => 'allowOnce';
|
|
59
|
+
if (nonInteractive)
|
|
60
|
+
return () => 'denyOnce';
|
|
61
|
+
return confirm_resource_cli_1.cliConfirmResourceAccess;
|
|
62
|
+
}
|
|
63
|
+
async function tryServe() {
|
|
64
|
+
const parsed = (0, config_1.parseConfig)();
|
|
65
|
+
if (parsed.command !== 'serve')
|
|
66
|
+
return false;
|
|
67
|
+
(0, logger_1.configure)({ level: parsed.config.logLevel });
|
|
68
|
+
(0, logger_1.printBanner)();
|
|
69
|
+
const config = parsed.nonInteractive
|
|
70
|
+
? (0, startup_config_cli_1.applyTemplate)(parsed.config, 'default')
|
|
71
|
+
: await (0, startup_config_cli_1.runStartupConfigCli)(parsed.config);
|
|
72
|
+
(0, daemon_1.startDaemon)(config, {
|
|
73
|
+
confirmConnect: makeConfirmConnect(parsed.nonInteractive, parsed.autoConfirm),
|
|
74
|
+
confirmResourceAccess: makeConfirmResourceAccess(parsed.nonInteractive, parsed.autoConfirm),
|
|
75
|
+
});
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
function shouldShowHelp() {
|
|
79
|
+
const args = process.argv.slice(2);
|
|
80
|
+
return args.includes('--help') || args.includes('-h');
|
|
81
|
+
}
|
|
82
|
+
function printUsage() {
|
|
83
|
+
console.log(`
|
|
84
|
+
n8n-fs-proxy — Local AI gateway for n8n Instance AI
|
|
85
|
+
|
|
86
|
+
Usage:
|
|
87
|
+
npx @n8n/fs-proxy serve [directory] [options]
|
|
88
|
+
npx @n8n/fs-proxy <url> <token> [directory] [options]
|
|
89
|
+
npx @n8n/fs-proxy --url <url> --api-key <token> [options]
|
|
90
|
+
|
|
91
|
+
Commands:
|
|
92
|
+
serve Start a local daemon that n8n auto-detects
|
|
93
|
+
|
|
94
|
+
Positional arguments:
|
|
95
|
+
url n8n instance URL (e.g. https://my-n8n.com)
|
|
96
|
+
token Gateway token (from "Connect local files" UI)
|
|
97
|
+
directory Local directory to share (default: current directory)
|
|
98
|
+
|
|
99
|
+
Global options:
|
|
100
|
+
--log-level <level> Log level: silent, error, warn, info, debug (default: info)
|
|
101
|
+
--allow-origin <url> Allow connections from this URL without confirmation (repeatable)
|
|
102
|
+
-p, --port <port> Daemon port (default: 7655, serve mode only)
|
|
103
|
+
--non-interactive Skip all prompts (deny per default); use defaults + env/cli overrides
|
|
104
|
+
--auto-confirm Auto-confirm all prompts (no readline)
|
|
105
|
+
-h, --help Show this help message
|
|
106
|
+
|
|
107
|
+
Filesystem:
|
|
108
|
+
--filesystem-dir <path> Root directory for filesystem tools (default: .)
|
|
109
|
+
|
|
110
|
+
Permissions (deny | ask | allow):
|
|
111
|
+
--permission-filesystem-read (default: allow)
|
|
112
|
+
--permission-filesystem-write (default: ask)
|
|
113
|
+
--permission-shell (default: deny)
|
|
114
|
+
--permission-computer (default: deny)
|
|
115
|
+
--permission-browser (default: ask)
|
|
116
|
+
|
|
117
|
+
Computer use:
|
|
118
|
+
--computer-shell-timeout <ms> Shell command timeout (default: 30000)
|
|
119
|
+
|
|
120
|
+
Browser:
|
|
121
|
+
--no-browser Disable browser tools
|
|
122
|
+
--browser-default <name> Default browser (default: chrome)
|
|
123
|
+
|
|
124
|
+
Environment variables:
|
|
125
|
+
All options can be set via N8N_GATEWAY_* environment variables.
|
|
126
|
+
Example: N8N_GATEWAY_BROWSER_DEFAULT=chrome
|
|
127
|
+
See README.md for the full list.
|
|
128
|
+
`);
|
|
129
|
+
}
|
|
130
|
+
async function main() {
|
|
131
|
+
const parsed = (0, config_1.parseConfig)();
|
|
132
|
+
(0, logger_1.configure)({ level: parsed.config.logLevel });
|
|
133
|
+
(0, logger_1.printBanner)();
|
|
134
|
+
if (!parsed.url || !parsed.apiKey) {
|
|
135
|
+
logger_1.logger.error('Missing required arguments: url and token');
|
|
136
|
+
printUsage();
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
const config = parsed.nonInteractive
|
|
140
|
+
? (0, startup_config_cli_1.applyTemplate)(parsed.config, 'default')
|
|
141
|
+
: await (0, startup_config_cli_1.runStartupConfigCli)(parsed.config);
|
|
142
|
+
const dir = config.filesystem.dir;
|
|
143
|
+
try {
|
|
144
|
+
const stat = await fs.stat(dir);
|
|
145
|
+
if (!stat.isDirectory()) {
|
|
146
|
+
logger_1.logger.error('Path is not a directory', { dir });
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
logger_1.logger.error('Directory does not exist', { dir });
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
(0, logger_1.printModuleStatus)(config);
|
|
155
|
+
const settingsStore = await settings_store_1.SettingsStore.create(config);
|
|
156
|
+
const client = new gateway_client_1.GatewayClient({
|
|
157
|
+
url: parsed.url,
|
|
158
|
+
apiKey: parsed.apiKey,
|
|
159
|
+
config,
|
|
160
|
+
settingsStore,
|
|
161
|
+
confirmResourceAccess: makeConfirmResourceAccess(parsed.nonInteractive, parsed.autoConfirm),
|
|
162
|
+
});
|
|
163
|
+
const shutdown = () => {
|
|
164
|
+
logger_1.logger.info('Shutting down');
|
|
165
|
+
void Promise.all([client.disconnect(), settingsStore.flush()]).finally(() => {
|
|
166
|
+
process.exit(0);
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
process.on('SIGINT', shutdown);
|
|
170
|
+
process.on('SIGTERM', shutdown);
|
|
171
|
+
await client.start();
|
|
172
|
+
(0, logger_1.printConnected)(parsed.url);
|
|
173
|
+
(0, logger_1.printToolList)(client.tools);
|
|
174
|
+
}
|
|
175
|
+
void (async () => {
|
|
176
|
+
if (shouldShowHelp()) {
|
|
177
|
+
printUsage();
|
|
178
|
+
process.exit(0);
|
|
179
|
+
}
|
|
180
|
+
if (await tryServe())
|
|
181
|
+
return;
|
|
182
|
+
await main();
|
|
183
|
+
})().catch((error) => {
|
|
184
|
+
logger_1.logger.error('Fatal error', {
|
|
185
|
+
error: error instanceof Error ? error.message : String(error),
|
|
186
|
+
});
|
|
187
|
+
process.exit(1);
|
|
188
|
+
});
|
|
189
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PermissionMode, ToolGroup } from './config';
|
|
2
|
+
export type TemplateName = 'default' | 'yolo' | 'custom';
|
|
3
|
+
export interface ConfigTemplate {
|
|
4
|
+
name: TemplateName;
|
|
5
|
+
label: string;
|
|
6
|
+
description: string;
|
|
7
|
+
permissions: Record<ToolGroup, PermissionMode>;
|
|
8
|
+
}
|
|
9
|
+
export declare const CONFIG_TEMPLATES: readonly ConfigTemplate[];
|
|
10
|
+
export declare function getTemplate(name: TemplateName): ConfigTemplate;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONFIG_TEMPLATES = void 0;
|
|
4
|
+
exports.getTemplate = getTemplate;
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
const RECOMMENDED_PERMISSIONS = Object.fromEntries(Object.entries(config_1.TOOL_GROUP_DEFINITIONS).map(([group, opt]) => [group, opt.default]));
|
|
7
|
+
exports.CONFIG_TEMPLATES = [
|
|
8
|
+
{
|
|
9
|
+
name: 'default',
|
|
10
|
+
label: 'Recommended (default)',
|
|
11
|
+
description: 'Safe defaults — filesystem readable, filesystem writes and browser automation require confirmation',
|
|
12
|
+
permissions: RECOMMENDED_PERMISSIONS,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'yolo',
|
|
16
|
+
label: 'Yolo',
|
|
17
|
+
description: 'Allow everything — all capabilities enabled without prompts',
|
|
18
|
+
permissions: {
|
|
19
|
+
filesystemRead: 'allow',
|
|
20
|
+
filesystemWrite: 'allow',
|
|
21
|
+
shell: 'allow',
|
|
22
|
+
computer: 'allow',
|
|
23
|
+
browser: 'allow',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'custom',
|
|
28
|
+
label: 'Custom',
|
|
29
|
+
description: 'Configure each capability individually',
|
|
30
|
+
permissions: RECOMMENDED_PERMISSIONS,
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
function getTemplate(name) {
|
|
34
|
+
const tpl = exports.CONFIG_TEMPLATES.find((t) => t.name === name);
|
|
35
|
+
if (!tpl)
|
|
36
|
+
throw new Error(`Unknown template: ${name}`);
|
|
37
|
+
return tpl;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=config-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../src/config-templates.ts"],"names":[],"mappings":";;;AAkEA,kCAIC;AArED,qCAAkD;AAwBlD,MAAM,uBAAuB,GAAG,MAAM,CAAC,WAAW,CACjD,MAAM,CAAC,OAAO,CAAC,+BAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAC7C,CAAC;AAM1B,QAAA,gBAAgB,GAA8B;IAC1D;QACC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACV,oGAAoG;QACrG,WAAW,EAAE,uBAAuB;KACpC;IACD;QACC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE;YACZ,cAAc,EAAE,OAAO;YACvB,eAAe,EAAE,OAAO;YACxB,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,OAAO;SAChB;KACD;IACD;QACC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,wCAAwC;QAErD,WAAW,EAAE,uBAAuB;KACpC;CACQ,CAAC;AAMX,SAAgB,WAAW,CAAC,IAAkB;IAC7C,MAAM,GAAG,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const TOOL_GROUP_DEFINITIONS: {
|
|
3
|
+
readonly filesystemRead: {
|
|
4
|
+
readonly envVar: "PERMISSION_FILESYSTEM_READ";
|
|
5
|
+
readonly cliFlag: "permission-filesystem-read";
|
|
6
|
+
readonly default: "allow";
|
|
7
|
+
readonly description: "Filesystem read access mode: deny | ask | allow";
|
|
8
|
+
};
|
|
9
|
+
readonly filesystemWrite: {
|
|
10
|
+
readonly envVar: "PERMISSION_FILESYSTEM_WRITE";
|
|
11
|
+
readonly cliFlag: "permission-filesystem-write";
|
|
12
|
+
readonly default: "ask";
|
|
13
|
+
readonly description: "Filesystem write access mode: deny | ask | allow";
|
|
14
|
+
};
|
|
15
|
+
readonly shell: {
|
|
16
|
+
readonly envVar: "PERMISSION_SHELL";
|
|
17
|
+
readonly cliFlag: "permission-shell";
|
|
18
|
+
readonly default: "deny";
|
|
19
|
+
readonly description: "Shell execution mode: deny | ask | allow";
|
|
20
|
+
};
|
|
21
|
+
readonly computer: {
|
|
22
|
+
readonly envVar: "PERMISSION_COMPUTER";
|
|
23
|
+
readonly cliFlag: "permission-computer";
|
|
24
|
+
readonly default: "deny";
|
|
25
|
+
readonly description: "Computer control (screenshot, mouse/keyboard) mode: deny | ask | allow";
|
|
26
|
+
};
|
|
27
|
+
readonly browser: {
|
|
28
|
+
readonly envVar: "PERMISSION_BROWSER";
|
|
29
|
+
readonly cliFlag: "permission-browser";
|
|
30
|
+
readonly default: "ask";
|
|
31
|
+
readonly description: "Browser automation mode: deny | ask | allow";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type ToolGroup = keyof typeof TOOL_GROUP_DEFINITIONS;
|
|
35
|
+
export declare const PERMISSION_MODES: readonly ["deny", "ask", "allow"];
|
|
36
|
+
export declare const permissionModeSchema: z.ZodEnum<["deny", "ask", "allow"]>;
|
|
37
|
+
export type PermissionMode = z.infer<typeof permissionModeSchema>;
|
|
38
|
+
export interface GatewayConfig {
|
|
39
|
+
logLevel: 'silent' | 'error' | 'warn' | 'info' | 'debug';
|
|
40
|
+
port: number;
|
|
41
|
+
allowedOrigins: string[];
|
|
42
|
+
filesystem: {
|
|
43
|
+
dir: string;
|
|
44
|
+
};
|
|
45
|
+
computer: {
|
|
46
|
+
shell: {
|
|
47
|
+
timeout: number;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
browser: {
|
|
51
|
+
defaultBrowser: string;
|
|
52
|
+
};
|
|
53
|
+
permissions: Partial<Record<ToolGroup, PermissionMode>>;
|
|
54
|
+
}
|
|
55
|
+
export declare const logLevelSchema: z.ZodDefault<z.ZodEnum<["silent", "error", "warn", "info", "debug"]>>;
|
|
56
|
+
export type LogLevel = z.infer<typeof logLevelSchema>;
|
|
57
|
+
export declare const portSchema: z.ZodDefault<z.ZodNumber>;
|
|
58
|
+
export declare function getSettingsFilePath(): string;
|
|
59
|
+
export interface ParsedArgs {
|
|
60
|
+
command?: 'serve';
|
|
61
|
+
url?: string;
|
|
62
|
+
apiKey?: string;
|
|
63
|
+
config: GatewayConfig;
|
|
64
|
+
autoConfirm: boolean;
|
|
65
|
+
nonInteractive: boolean;
|
|
66
|
+
}
|
|
67
|
+
export declare function parseConfig(argv?: string[]): ParsedArgs;
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.portSchema = exports.logLevelSchema = exports.permissionModeSchema = exports.PERMISSION_MODES = exports.TOOL_GROUP_DEFINITIONS = void 0;
|
|
40
|
+
exports.getSettingsFilePath = getSettingsFilePath;
|
|
41
|
+
exports.parseConfig = parseConfig;
|
|
42
|
+
const os = __importStar(require("node:os"));
|
|
43
|
+
const path = __importStar(require("node:path"));
|
|
44
|
+
const yargs_parser_1 = __importDefault(require("yargs-parser"));
|
|
45
|
+
const zod_1 = require("zod");
|
|
46
|
+
exports.TOOL_GROUP_DEFINITIONS = {
|
|
47
|
+
filesystemRead: {
|
|
48
|
+
envVar: 'PERMISSION_FILESYSTEM_READ',
|
|
49
|
+
cliFlag: 'permission-filesystem-read',
|
|
50
|
+
default: 'allow',
|
|
51
|
+
description: 'Filesystem read access mode: deny | ask | allow',
|
|
52
|
+
},
|
|
53
|
+
filesystemWrite: {
|
|
54
|
+
envVar: 'PERMISSION_FILESYSTEM_WRITE',
|
|
55
|
+
cliFlag: 'permission-filesystem-write',
|
|
56
|
+
default: 'ask',
|
|
57
|
+
description: 'Filesystem write access mode: deny | ask | allow',
|
|
58
|
+
},
|
|
59
|
+
shell: {
|
|
60
|
+
envVar: 'PERMISSION_SHELL',
|
|
61
|
+
cliFlag: 'permission-shell',
|
|
62
|
+
default: 'deny',
|
|
63
|
+
description: 'Shell execution mode: deny | ask | allow',
|
|
64
|
+
},
|
|
65
|
+
computer: {
|
|
66
|
+
envVar: 'PERMISSION_COMPUTER',
|
|
67
|
+
cliFlag: 'permission-computer',
|
|
68
|
+
default: 'deny',
|
|
69
|
+
description: 'Computer control (screenshot, mouse/keyboard) mode: deny | ask | allow',
|
|
70
|
+
},
|
|
71
|
+
browser: {
|
|
72
|
+
envVar: 'PERMISSION_BROWSER',
|
|
73
|
+
cliFlag: 'permission-browser',
|
|
74
|
+
default: 'ask',
|
|
75
|
+
description: 'Browser automation mode: deny | ask | allow',
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
exports.PERMISSION_MODES = ['deny', 'ask', 'allow'];
|
|
79
|
+
exports.permissionModeSchema = zod_1.z.enum(exports.PERMISSION_MODES);
|
|
80
|
+
const ENV_PREFIX = 'N8N_GATEWAY_';
|
|
81
|
+
function envString(name) {
|
|
82
|
+
return process.env[`${ENV_PREFIX}${name}`];
|
|
83
|
+
}
|
|
84
|
+
function envBoolean(name) {
|
|
85
|
+
const raw = envString(name);
|
|
86
|
+
if (raw === undefined)
|
|
87
|
+
return undefined;
|
|
88
|
+
return raw === 'true' || raw === '1';
|
|
89
|
+
}
|
|
90
|
+
function envNumber(name) {
|
|
91
|
+
const raw = envString(name);
|
|
92
|
+
if (raw === undefined)
|
|
93
|
+
return undefined;
|
|
94
|
+
const n = Number(raw);
|
|
95
|
+
return Number.isNaN(n) ? undefined : n;
|
|
96
|
+
}
|
|
97
|
+
exports.logLevelSchema = zod_1.z.enum(['silent', 'error', 'warn', 'info', 'debug']).default('info');
|
|
98
|
+
exports.portSchema = zod_1.z.number().int().positive().default(7655);
|
|
99
|
+
const structuralConfigSchema = zod_1.z.object({
|
|
100
|
+
logLevel: exports.logLevelSchema,
|
|
101
|
+
port: exports.portSchema,
|
|
102
|
+
allowedOrigins: zod_1.z.array(zod_1.z.string()).default([]),
|
|
103
|
+
filesystem: zod_1.z.object({ dir: zod_1.z.string().default('.') }).default({}),
|
|
104
|
+
computer: zod_1.z
|
|
105
|
+
.object({
|
|
106
|
+
shell: zod_1.z.object({ timeout: zod_1.z.number().int().positive().default(30_000) }).default({}),
|
|
107
|
+
})
|
|
108
|
+
.default({}),
|
|
109
|
+
browser: zod_1.z
|
|
110
|
+
.object({
|
|
111
|
+
defaultBrowser: zod_1.z.string().default('chrome'),
|
|
112
|
+
})
|
|
113
|
+
.default({}),
|
|
114
|
+
});
|
|
115
|
+
function readPermissionOverridesFromEnv() {
|
|
116
|
+
const overrides = {};
|
|
117
|
+
for (const [group, option] of Object.entries(exports.TOOL_GROUP_DEFINITIONS)) {
|
|
118
|
+
const raw = envString(option.envVar);
|
|
119
|
+
if (raw !== undefined) {
|
|
120
|
+
const result = exports.permissionModeSchema.safeParse(raw);
|
|
121
|
+
if (result.success)
|
|
122
|
+
overrides[group] = result.data;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return overrides;
|
|
126
|
+
}
|
|
127
|
+
function readPermissionOverridesFromCli(args) {
|
|
128
|
+
const overrides = {};
|
|
129
|
+
for (const [group, option] of Object.entries(exports.TOOL_GROUP_DEFINITIONS)) {
|
|
130
|
+
const cliKey = option.cliFlag.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
131
|
+
const raw = args[cliKey];
|
|
132
|
+
if (raw !== undefined) {
|
|
133
|
+
const result = exports.permissionModeSchema.safeParse(raw);
|
|
134
|
+
if (result.success)
|
|
135
|
+
overrides[group] = result.data;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return overrides;
|
|
139
|
+
}
|
|
140
|
+
function buildEnvConfig() {
|
|
141
|
+
const config = {};
|
|
142
|
+
const logLevel = envString('LOG_LEVEL') ?? process.env.LOG_LEVEL;
|
|
143
|
+
if (logLevel)
|
|
144
|
+
config.logLevel = logLevel;
|
|
145
|
+
const allowedOrigins = envString('ALLOWED_ORIGINS');
|
|
146
|
+
if (allowedOrigins) {
|
|
147
|
+
config.allowedOrigins = allowedOrigins
|
|
148
|
+
.split(',')
|
|
149
|
+
.map((s) => s.trim())
|
|
150
|
+
.filter(Boolean);
|
|
151
|
+
}
|
|
152
|
+
const fsDir = envString('FILESYSTEM_DIR');
|
|
153
|
+
if (fsDir)
|
|
154
|
+
config.filesystem = { dir: fsDir };
|
|
155
|
+
const shellTimeout = envNumber('COMPUTER_SHELL_TIMEOUT');
|
|
156
|
+
if (shellTimeout !== undefined)
|
|
157
|
+
config.computer = { shell: { timeout: shellTimeout } };
|
|
158
|
+
const defaultBrowser = envString('BROWSER_DEFAULT');
|
|
159
|
+
if (defaultBrowser)
|
|
160
|
+
config.browser = { defaultBrowser };
|
|
161
|
+
return config;
|
|
162
|
+
}
|
|
163
|
+
function buildCliConfig(args) {
|
|
164
|
+
const config = {};
|
|
165
|
+
if (args['log-level'])
|
|
166
|
+
config.logLevel = args['log-level'];
|
|
167
|
+
if (args.port !== undefined)
|
|
168
|
+
config.port = args.port;
|
|
169
|
+
if (args['allow-origin']) {
|
|
170
|
+
const raw = args['allow-origin'];
|
|
171
|
+
config.allowedOrigins = Array.isArray(raw) ? raw.map(String) : [String(raw)];
|
|
172
|
+
}
|
|
173
|
+
const dir = args['filesystem-dir'];
|
|
174
|
+
if (dir)
|
|
175
|
+
config.filesystem = { dir };
|
|
176
|
+
const timeout = args['computer-shell-timeout'];
|
|
177
|
+
if (timeout !== undefined)
|
|
178
|
+
config.computer = { shell: { timeout } };
|
|
179
|
+
if (args['browser-default'])
|
|
180
|
+
config.browser = { defaultBrowser: args['browser-default'] };
|
|
181
|
+
return config;
|
|
182
|
+
}
|
|
183
|
+
function deepMerge(base, override) {
|
|
184
|
+
const result = { ...base };
|
|
185
|
+
for (const key of Object.keys(override)) {
|
|
186
|
+
const baseVal = base[key];
|
|
187
|
+
const overrideVal = override[key];
|
|
188
|
+
if (typeof baseVal === 'object' &&
|
|
189
|
+
baseVal !== null &&
|
|
190
|
+
typeof overrideVal === 'object' &&
|
|
191
|
+
overrideVal !== null &&
|
|
192
|
+
!Array.isArray(baseVal) &&
|
|
193
|
+
!Array.isArray(overrideVal)) {
|
|
194
|
+
result[key] = deepMerge(baseVal, overrideVal);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
result[key] = overrideVal;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
function getSettingsFilePath() {
|
|
203
|
+
return path.join(os.homedir(), '.n8n-gateway', 'settings.json');
|
|
204
|
+
}
|
|
205
|
+
function parseConfig(argv = process.argv.slice(2)) {
|
|
206
|
+
const isServe = argv[0] === 'serve';
|
|
207
|
+
const rawArgs = isServe ? argv.slice(1) : argv;
|
|
208
|
+
const permissionFlags = Object.values(exports.TOOL_GROUP_DEFINITIONS).map((o) => o.cliFlag);
|
|
209
|
+
const args = (0, yargs_parser_1.default)(rawArgs, {
|
|
210
|
+
string: ['log-level', 'filesystem-dir', 'browser-default', 'allow-origin', ...permissionFlags],
|
|
211
|
+
boolean: ['auto-confirm', 'non-interactive', 'help'],
|
|
212
|
+
number: ['port', 'computer-shell-timeout'],
|
|
213
|
+
alias: { h: 'help', p: 'port' },
|
|
214
|
+
});
|
|
215
|
+
const envConfig = buildEnvConfig();
|
|
216
|
+
const cliConfig = buildCliConfig(args);
|
|
217
|
+
const merged = deepMerge(envConfig, cliConfig);
|
|
218
|
+
let url;
|
|
219
|
+
let apiKey;
|
|
220
|
+
if (isServe) {
|
|
221
|
+
const positional = args._;
|
|
222
|
+
if (positional.length > 0 && typeof positional[0] === 'string') {
|
|
223
|
+
const dir = String(positional[0]);
|
|
224
|
+
if (!merged.filesystem || typeof merged.filesystem !== 'object') {
|
|
225
|
+
merged.filesystem = { dir };
|
|
226
|
+
}
|
|
227
|
+
else if (!merged.filesystem.dir) {
|
|
228
|
+
merged.filesystem.dir = dir;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
const positional = args._;
|
|
234
|
+
if (positional.length >= 2) {
|
|
235
|
+
url = String(positional[0]);
|
|
236
|
+
apiKey = String(positional[1]);
|
|
237
|
+
if (positional.length >= 3) {
|
|
238
|
+
const dir = String(positional[2]);
|
|
239
|
+
if (!merged.filesystem || typeof merged.filesystem !== 'object') {
|
|
240
|
+
merged.filesystem = { dir };
|
|
241
|
+
}
|
|
242
|
+
else if (!merged.filesystem.dir) {
|
|
243
|
+
merged.filesystem.dir = dir;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
else if (!args.help) {
|
|
248
|
+
url = args.url;
|
|
249
|
+
apiKey = args['api-key'];
|
|
250
|
+
if (args.dir) {
|
|
251
|
+
if (!merged.filesystem || typeof merged.filesystem !== 'object') {
|
|
252
|
+
merged.filesystem = { dir: args.dir };
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (merged.filesystem && typeof merged.filesystem === 'object') {
|
|
258
|
+
const fs = merged.filesystem;
|
|
259
|
+
if (typeof fs.dir === 'string') {
|
|
260
|
+
fs.dir = path.resolve(fs.dir);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
const structural = structuralConfigSchema.parse(merged);
|
|
264
|
+
structural.filesystem.dir = path.resolve(structural.filesystem.dir);
|
|
265
|
+
if (url)
|
|
266
|
+
url = url.replace(/\/$/, '');
|
|
267
|
+
const envPermissions = readPermissionOverridesFromEnv();
|
|
268
|
+
const cliPermissions = readPermissionOverridesFromCli(args);
|
|
269
|
+
const permissions = {
|
|
270
|
+
...envPermissions,
|
|
271
|
+
...cliPermissions,
|
|
272
|
+
};
|
|
273
|
+
const autoConfirm = args['auto-confirm'] ?? envBoolean('AUTO_CONFIRM') ?? false;
|
|
274
|
+
const nonInteractive = args['non-interactive'] ?? envBoolean('NON_INTERACTIVE') ?? false;
|
|
275
|
+
const config = { ...structural, permissions };
|
|
276
|
+
return {
|
|
277
|
+
command: isServe ? 'serve' : undefined,
|
|
278
|
+
url,
|
|
279
|
+
apiKey,
|
|
280
|
+
config,
|
|
281
|
+
autoConfirm,
|
|
282
|
+
nonInteractive,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AffectedResource, ResourceDecision } from './tools/types';
|
|
2
|
+
export declare function sanitizeForTerminal(value: string): string;
|
|
3
|
+
export declare const RESOURCE_DECISIONS: Record<ResourceDecision, string>;
|
|
4
|
+
export declare function cliConfirmResourceAccess(resource: AffectedResource): Promise<ResourceDecision>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RESOURCE_DECISIONS = void 0;
|
|
4
|
+
exports.sanitizeForTerminal = sanitizeForTerminal;
|
|
5
|
+
exports.cliConfirmResourceAccess = cliConfirmResourceAccess;
|
|
6
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
7
|
+
const CONTROL_CHARS_RE = new RegExp('[\\u0000-\\u001f\\u007f]', 'g');
|
|
8
|
+
function sanitizeForTerminal(value) {
|
|
9
|
+
return value.replace(CONTROL_CHARS_RE, '');
|
|
10
|
+
}
|
|
11
|
+
exports.RESOURCE_DECISIONS = {
|
|
12
|
+
allowOnce: 'Allow once',
|
|
13
|
+
allowForSession: 'Allow for session',
|
|
14
|
+
alwaysAllow: 'Always allow',
|
|
15
|
+
denyOnce: 'Deny once',
|
|
16
|
+
alwaysDeny: 'Always deny',
|
|
17
|
+
};
|
|
18
|
+
async function cliConfirmResourceAccess(resource) {
|
|
19
|
+
const answer = await (0, prompts_1.select)({
|
|
20
|
+
message: `Grant permission — ${resource.toolGroup}: ${sanitizeForTerminal(resource.resource)}`,
|
|
21
|
+
choices: Object.entries(exports.RESOURCE_DECISIONS).map(([value, name]) => ({
|
|
22
|
+
name,
|
|
23
|
+
value,
|
|
24
|
+
})),
|
|
25
|
+
});
|
|
26
|
+
return answer;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=confirm-resource-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-resource-cli.js","sourceRoot":"","sources":["../src/confirm-resource-cli.ts"],"names":[],"mappings":";;;AAYA,kDAEC;AAUD,4DAcC;AAtCD,+CAA2C;AAU3C,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;AAErE,SAAgB,mBAAmB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAEY,QAAA,kBAAkB,GAAqC;IACnE,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,mBAAmB;IACpC,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,aAAa;CAChB,CAAC;AAEJ,KAAK,UAAU,wBAAwB,CAC7C,QAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAM,EAAC;QAC3B,OAAO,EAAE,sBAAsB,QAAQ,CAAC,SAAS,KAAK,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC9F,OAAO,EAAG,MAAM,CAAC,OAAO,CAAC,0BAAkB,CAAuC,CAAC,GAAG,CACrF,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACnB,IAAI;YACJ,KAAK;SACL,CAAC,CACF;KACD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC"}
|