@qodalis/cli-server-node 1.0.0-beta.1 → 1.0.0-beta.10
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 +1 -1
- package/README.md +348 -74
- package/dist/package.json +77 -0
- package/dist/src/abstractions/cli-command-author.d.ts +2 -0
- package/dist/src/abstractions/cli-command-author.d.ts.map +1 -0
- package/dist/src/abstractions/cli-command-author.js +7 -0
- package/dist/src/abstractions/cli-command-author.js.map +1 -0
- package/dist/src/abstractions/cli-command-parameter-descriptor.d.ts +2 -0
- package/dist/src/abstractions/cli-command-parameter-descriptor.d.ts.map +1 -0
- package/dist/src/abstractions/cli-command-parameter-descriptor.js +6 -0
- package/dist/src/abstractions/cli-command-parameter-descriptor.js.map +1 -0
- package/dist/src/abstractions/cli-command-processor.d.ts +2 -0
- package/dist/src/abstractions/cli-command-processor.d.ts.map +1 -0
- package/dist/src/abstractions/cli-command-processor.js +6 -0
- package/dist/src/abstractions/cli-command-processor.js.map +1 -0
- package/dist/src/abstractions/cli-process-command.d.ts +2 -0
- package/dist/src/abstractions/cli-process-command.d.ts.map +1 -0
- package/dist/src/abstractions/cli-process-command.js.map +1 -0
- package/dist/src/abstractions/index.d.ts +2 -0
- package/dist/src/abstractions/index.d.ts.map +1 -0
- package/dist/src/abstractions/index.js +18 -0
- package/dist/src/abstractions/index.js.map +1 -0
- package/dist/src/auth/cli-server-auth-gate.d.ts +33 -0
- package/dist/src/auth/cli-server-auth-gate.d.ts.map +1 -0
- package/dist/src/auth/cli-server-auth-gate.js +121 -0
- package/dist/src/auth/cli-server-auth-gate.js.map +1 -0
- package/dist/src/auth/cli-server-auth.d.ts +149 -0
- package/dist/src/auth/cli-server-auth.d.ts.map +1 -0
- package/dist/src/auth/cli-server-auth.js +143 -0
- package/dist/src/auth/cli-server-auth.js.map +1 -0
- package/dist/src/auth/index.d.ts +4 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/index.js +19 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/ws-upgrade-auth.d.ts +30 -0
- package/dist/src/auth/ws-upgrade-auth.d.ts.map +1 -0
- package/dist/src/auth/ws-upgrade-auth.js +49 -0
- package/dist/src/auth/ws-upgrade-auth.js.map +1 -0
- package/dist/src/controllers/cli-controller.d.ts +11 -0
- package/dist/src/controllers/cli-controller.d.ts.map +1 -0
- package/dist/src/controllers/cli-controller.js +169 -0
- package/dist/src/controllers/cli-controller.js.map +1 -0
- package/dist/src/controllers/cli-version-controller.d.ts +18 -0
- package/dist/src/controllers/cli-version-controller.d.ts.map +1 -0
- package/dist/src/controllers/cli-version-controller.js +81 -0
- package/dist/src/controllers/cli-version-controller.js.map +1 -0
- package/dist/src/controllers/filesystem-controller.d.ts +9 -0
- package/dist/src/controllers/filesystem-controller.d.ts.map +1 -0
- package/dist/src/controllers/filesystem-controller.js +243 -0
- package/dist/src/controllers/filesystem-controller.js.map +1 -0
- package/dist/src/create-cli-server.d.ts +123 -0
- package/dist/src/create-cli-server.d.ts.map +1 -0
- package/dist/src/create-cli-server.js +201 -0
- package/dist/src/create-cli-server.js.map +1 -0
- package/dist/src/extensions/cli-builder.d.ts +54 -0
- package/dist/src/extensions/cli-builder.d.ts.map +1 -0
- package/dist/src/extensions/cli-builder.js +97 -0
- package/dist/src/extensions/cli-builder.js.map +1 -0
- package/dist/src/extensions/index.d.ts.map +1 -0
- package/dist/src/extensions/index.js.map +1 -0
- package/dist/src/filesystem/filesystem-options.d.ts +16 -0
- package/dist/src/filesystem/filesystem-options.d.ts.map +1 -0
- package/dist/src/filesystem/filesystem-options.js +6 -0
- package/dist/src/filesystem/filesystem-options.js.map +1 -0
- package/dist/src/filesystem/filesystem-path-validator.d.ts +15 -0
- package/dist/src/filesystem/filesystem-path-validator.d.ts.map +1 -0
- package/dist/src/filesystem/filesystem-path-validator.js +72 -0
- package/dist/src/filesystem/filesystem-path-validator.js.map +1 -0
- package/dist/src/filesystem/index.d.ts +3 -0
- package/dist/src/filesystem/index.d.ts.map +1 -0
- package/dist/src/filesystem/index.js +8 -0
- package/dist/src/filesystem/index.js.map +1 -0
- package/dist/src/index.d.ts +24 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +121 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp/index.d.ts +10 -0
- package/dist/src/mcp/index.d.ts.map +1 -0
- package/dist/src/mcp/index.js +34 -0
- package/dist/src/mcp/index.js.map +1 -0
- package/dist/src/mcp/mcp-controller.d.ts +54 -0
- package/dist/src/mcp/mcp-controller.d.ts.map +1 -0
- package/dist/src/mcp/mcp-controller.js +358 -0
- package/dist/src/mcp/mcp-controller.js.map +1 -0
- package/dist/src/mcp/mcp-render.d.ts +10 -0
- package/dist/src/mcp/mcp-render.d.ts.map +1 -0
- package/dist/src/mcp/mcp-render.js +66 -0
- package/dist/src/mcp/mcp-render.js.map +1 -0
- package/dist/src/mcp/mcp-schema.d.ts +8 -0
- package/dist/src/mcp/mcp-schema.d.ts.map +1 -0
- package/dist/src/mcp/mcp-schema.js +64 -0
- package/dist/src/mcp/mcp-schema.js.map +1 -0
- package/dist/src/mcp/mcp-types.d.ts +70 -0
- package/dist/src/mcp/mcp-types.d.ts.map +1 -0
- package/dist/src/mcp/mcp-types.js +21 -0
- package/dist/src/mcp/mcp-types.js.map +1 -0
- package/dist/src/mcp/providers/commands-provider.d.ts +30 -0
- package/dist/src/mcp/providers/commands-provider.d.ts.map +1 -0
- package/dist/src/mcp/providers/commands-provider.js +145 -0
- package/dist/src/mcp/providers/commands-provider.js.map +1 -0
- package/dist/src/mcp/providers/data-explorer-provider.d.ts +15 -0
- package/dist/src/mcp/providers/data-explorer-provider.d.ts.map +1 -0
- package/dist/src/mcp/providers/data-explorer-provider.js +83 -0
- package/dist/src/mcp/providers/data-explorer-provider.js.map +1 -0
- package/dist/src/mcp/providers/filesystem-provider.d.ts +15 -0
- package/dist/src/mcp/providers/filesystem-provider.d.ts.map +1 -0
- package/dist/src/mcp/providers/filesystem-provider.js +166 -0
- package/dist/src/mcp/providers/filesystem-provider.js.map +1 -0
- package/dist/src/mcp/providers/jobs-provider.d.ts +23 -0
- package/dist/src/mcp/providers/jobs-provider.d.ts.map +1 -0
- package/dist/src/mcp/providers/jobs-provider.js +121 -0
- package/dist/src/mcp/providers/jobs-provider.js.map +1 -0
- package/dist/src/mcp/providers/server-provider.d.ts +19 -0
- package/dist/src/mcp/providers/server-provider.d.ts.map +1 -0
- package/dist/src/mcp/providers/server-provider.js +73 -0
- package/dist/src/mcp/providers/server-provider.js.map +1 -0
- package/dist/{models → src/models}/cli-server-command-descriptor.d.ts +2 -0
- package/dist/src/models/cli-server-command-descriptor.d.ts.map +1 -0
- package/dist/src/models/cli-server-command-descriptor.js.map +1 -0
- package/dist/src/models/cli-server-output.d.ts +2 -0
- package/dist/src/models/cli-server-output.d.ts.map +1 -0
- package/dist/src/models/cli-server-output.js.map +1 -0
- package/dist/src/models/cli-server-response.d.ts +2 -0
- package/dist/src/models/cli-server-response.d.ts.map +1 -0
- package/dist/src/models/cli-server-response.js.map +1 -0
- package/dist/src/models/index.d.ts.map +1 -0
- package/dist/{models → src/models}/index.js.map +1 -1
- package/dist/{processors → src/processors}/cli-base64-command-processor.d.ts +1 -0
- package/dist/src/processors/cli-base64-command-processor.d.ts.map +1 -0
- package/dist/{processors → src/processors}/cli-base64-command-processor.js +8 -2
- package/dist/src/processors/cli-base64-command-processor.js.map +1 -0
- package/dist/{processors → src/processors}/cli-echo-command-processor.d.ts +2 -0
- package/dist/src/processors/cli-echo-command-processor.d.ts.map +1 -0
- package/dist/src/processors/cli-echo-command-processor.js +20 -0
- package/dist/src/processors/cli-echo-command-processor.js.map +1 -0
- package/dist/{processors → src/processors}/cli-hash-command-processor.d.ts +2 -0
- package/dist/src/processors/cli-hash-command-processor.d.ts.map +1 -0
- package/dist/{processors → src/processors}/cli-hash-command-processor.js +4 -1
- package/dist/src/processors/cli-hash-command-processor.js.map +1 -0
- package/dist/{processors → src/processors}/cli-http-command-processor.d.ts +1 -0
- package/dist/src/processors/cli-http-command-processor.d.ts.map +1 -0
- package/dist/src/processors/cli-http-command-processor.js +161 -0
- package/dist/src/processors/cli-http-command-processor.js.map +1 -0
- package/dist/{processors → src/processors}/cli-status-command-processor.d.ts +1 -0
- package/dist/src/processors/cli-status-command-processor.d.ts.map +1 -0
- package/dist/{processors → src/processors}/cli-status-command-processor.js +1 -0
- package/dist/src/processors/cli-status-command-processor.js.map +1 -0
- package/dist/{processors → src/processors}/cli-system-command-processor.d.ts +1 -0
- package/dist/src/processors/cli-system-command-processor.d.ts.map +1 -0
- package/dist/{processors → src/processors}/cli-system-command-processor.js +1 -0
- package/dist/src/processors/cli-system-command-processor.js.map +1 -0
- package/dist/{processors → src/processors}/index.d.ts +1 -2
- package/dist/src/processors/index.d.ts.map +1 -0
- package/dist/{processors → src/processors}/index.js +2 -3
- package/dist/src/processors/index.js.map +1 -0
- package/dist/{server.d.ts.map → src/server.d.ts.map} +1 -1
- package/dist/{server.js → src/server.js} +22 -7
- package/dist/src/server.js.map +1 -0
- package/dist/src/services/cli-command-executor-service.d.ts +33 -0
- package/dist/src/services/cli-command-executor-service.d.ts.map +1 -0
- package/dist/src/services/cli-command-executor-service.js +77 -0
- package/dist/src/services/cli-command-executor-service.js.map +1 -0
- package/dist/src/services/cli-command-registry.d.ts +25 -0
- package/dist/src/services/cli-command-registry.d.ts.map +1 -0
- package/dist/{services → src/services}/cli-command-registry.js +5 -0
- package/dist/src/services/cli-command-registry.js.map +1 -0
- package/dist/src/services/cli-event-socket-manager.d.ts +77 -0
- package/dist/src/services/cli-event-socket-manager.d.ts.map +1 -0
- package/dist/src/services/cli-event-socket-manager.js +246 -0
- package/dist/src/services/cli-event-socket-manager.js.map +1 -0
- package/dist/src/services/cli-log-socket-manager.d.ts +67 -0
- package/dist/src/services/cli-log-socket-manager.d.ts.map +1 -0
- package/dist/src/services/cli-log-socket-manager.js +225 -0
- package/dist/src/services/cli-log-socket-manager.js.map +1 -0
- package/dist/{services → src/services}/cli-response-builder.d.ts +9 -0
- package/dist/src/services/cli-response-builder.d.ts.map +1 -0
- package/dist/{services → src/services}/cli-response-builder.js +1 -0
- package/dist/src/services/cli-response-builder.js.map +1 -0
- package/dist/src/services/cli-shell-options.d.ts +107 -0
- package/dist/src/services/cli-shell-options.d.ts.map +1 -0
- package/dist/src/services/cli-shell-options.js +139 -0
- package/dist/src/services/cli-shell-options.js.map +1 -0
- package/dist/src/services/cli-shell-session-manager.d.ts +92 -0
- package/dist/src/services/cli-shell-session-manager.d.ts.map +1 -0
- package/dist/src/services/cli-shell-session-manager.js +588 -0
- package/dist/src/services/cli-shell-session-manager.js.map +1 -0
- package/dist/src/services/index.d.ts +8 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +20 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/process-tree.d.ts +38 -0
- package/dist/src/services/process-tree.d.ts.map +1 -0
- package/dist/src/services/process-tree.js +249 -0
- package/dist/src/services/process-tree.js.map +1 -0
- package/dist/src/services/session-bound-sockets.d.ts +45 -0
- package/dist/src/services/session-bound-sockets.d.ts.map +1 -0
- package/dist/src/services/session-bound-sockets.js +129 -0
- package/dist/src/services/session-bound-sockets.js.map +1 -0
- package/dist/src/utils/logger.d.ts +11 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +13 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/package.json +37 -8
- package/dist/abstractions/cli-command-author.d.ts +0 -11
- package/dist/abstractions/cli-command-author.d.ts.map +0 -1
- package/dist/abstractions/cli-command-author.js +0 -14
- package/dist/abstractions/cli-command-author.js.map +0 -1
- package/dist/abstractions/cli-command-parameter-descriptor.d.ts +0 -18
- package/dist/abstractions/cli-command-parameter-descriptor.d.ts.map +0 -1
- package/dist/abstractions/cli-command-parameter-descriptor.js +0 -21
- package/dist/abstractions/cli-command-parameter-descriptor.js.map +0 -1
- package/dist/abstractions/cli-command-processor.d.ts +0 -26
- package/dist/abstractions/cli-command-processor.d.ts.map +0 -1
- package/dist/abstractions/cli-command-processor.js +0 -14
- package/dist/abstractions/cli-command-processor.js.map +0 -1
- package/dist/abstractions/cli-process-command.d.ts +0 -9
- package/dist/abstractions/cli-process-command.d.ts.map +0 -1
- package/dist/abstractions/cli-process-command.js.map +0 -1
- package/dist/abstractions/index.d.ts +0 -5
- package/dist/abstractions/index.d.ts.map +0 -1
- package/dist/abstractions/index.js +0 -11
- package/dist/abstractions/index.js.map +0 -1
- package/dist/controllers/cli-controller.d.ts +0 -4
- package/dist/controllers/cli-controller.d.ts.map +0 -1
- package/dist/controllers/cli-controller.js +0 -42
- package/dist/controllers/cli-controller.js.map +0 -1
- package/dist/create-cli-server.d.ts +0 -25
- package/dist/create-cli-server.d.ts.map +0 -1
- package/dist/create-cli-server.js +0 -35
- package/dist/create-cli-server.js.map +0 -1
- package/dist/extensions/cli-builder.d.ts +0 -9
- package/dist/extensions/cli-builder.d.ts.map +0 -1
- package/dist/extensions/cli-builder.js +0 -18
- package/dist/extensions/cli-builder.js.map +0 -1
- package/dist/extensions/index.d.ts.map +0 -1
- package/dist/extensions/index.js.map +0 -1
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -40
- package/dist/index.js.map +0 -1
- package/dist/models/cli-server-command-descriptor.d.ts.map +0 -1
- package/dist/models/cli-server-command-descriptor.js.map +0 -1
- package/dist/models/cli-server-output.d.ts +0 -23
- package/dist/models/cli-server-output.d.ts.map +0 -1
- package/dist/models/cli-server-output.js.map +0 -1
- package/dist/models/cli-server-response.d.ts +0 -6
- package/dist/models/cli-server-response.d.ts.map +0 -1
- package/dist/models/cli-server-response.js.map +0 -1
- package/dist/models/index.d.ts.map +0 -1
- package/dist/processors/cli-base64-command-processor.d.ts.map +0 -1
- package/dist/processors/cli-base64-command-processor.js.map +0 -1
- package/dist/processors/cli-echo-command-processor.d.ts.map +0 -1
- package/dist/processors/cli-echo-command-processor.js +0 -14
- package/dist/processors/cli-echo-command-processor.js.map +0 -1
- package/dist/processors/cli-hash-command-processor.d.ts.map +0 -1
- package/dist/processors/cli-hash-command-processor.js.map +0 -1
- package/dist/processors/cli-http-command-processor.d.ts.map +0 -1
- package/dist/processors/cli-http-command-processor.js +0 -79
- package/dist/processors/cli-http-command-processor.js.map +0 -1
- package/dist/processors/cli-status-command-processor.d.ts.map +0 -1
- package/dist/processors/cli-status-command-processor.js.map +0 -1
- package/dist/processors/cli-system-command-processor.d.ts.map +0 -1
- package/dist/processors/cli-system-command-processor.js.map +0 -1
- package/dist/processors/cli-uuid-command-processor.d.ts +0 -10
- package/dist/processors/cli-uuid-command-processor.d.ts.map +0 -1
- package/dist/processors/cli-uuid-command-processor.js +0 -27
- package/dist/processors/cli-uuid-command-processor.js.map +0 -1
- package/dist/processors/index.d.ts.map +0 -1
- package/dist/processors/index.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/services/cli-command-executor-service.d.ts +0 -12
- package/dist/services/cli-command-executor-service.d.ts.map +0 -1
- package/dist/services/cli-command-executor-service.js +0 -45
- package/dist/services/cli-command-executor-service.js.map +0 -1
- package/dist/services/cli-command-registry.d.ts +0 -14
- package/dist/services/cli-command-registry.d.ts.map +0 -1
- package/dist/services/cli-command-registry.js.map +0 -1
- package/dist/services/cli-event-socket-manager.d.ts +0 -15
- package/dist/services/cli-event-socket-manager.d.ts.map +0 -1
- package/dist/services/cli-event-socket-manager.js +0 -60
- package/dist/services/cli-event-socket-manager.js.map +0 -1
- package/dist/services/cli-response-builder.d.ts.map +0 -1
- package/dist/services/cli-response-builder.js.map +0 -1
- package/dist/services/index.d.ts +0 -5
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -12
- package/dist/services/index.js.map +0 -1
- /package/dist/{abstractions → src/abstractions}/cli-process-command.js +0 -0
- /package/dist/{extensions → src/extensions}/index.d.ts +0 -0
- /package/dist/{extensions → src/extensions}/index.js +0 -0
- /package/dist/{models → src/models}/cli-server-command-descriptor.js +0 -0
- /package/dist/{models → src/models}/cli-server-output.js +0 -0
- /package/dist/{models → src/models}/cli-server-response.js +0 -0
- /package/dist/{models → src/models}/index.d.ts +0 -0
- /package/dist/{models → src/models}/index.js +0 -0
- /package/dist/{server.d.ts → src/server.d.ts} +0 -0
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.CliStatusCommandProcessor = void 0;
|
|
7
7
|
const abstractions_1 = require("../abstractions");
|
|
8
8
|
const os_1 = __importDefault(require("os"));
|
|
9
|
+
/** Command processor that reports server status including uptime, OS, and Node.js version. */
|
|
9
10
|
class CliStatusCommandProcessor extends abstractions_1.CliCommandProcessor {
|
|
10
11
|
command = 'status';
|
|
11
12
|
description = 'Shows server status information';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-status-command-processor.js","sourceRoot":"","sources":["../../../src/processors/cli-status-command-processor.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyE;AACzE,4CAAoB;AAEpB,8FAA8F;AAC9F,MAAa,yBAA0B,SAAQ,kCAAmB;IAC9D,OAAO,GAAG,QAAQ,CAAC;IACnB,WAAW,GAAG,iCAAiC,CAAC;IAEhD,KAAK,CAAC,WAAW,CAAC,QAA2B;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,4BAA4B,MAAM,UAAU,YAAE,CAAC,IAAI,EAAE,IAAI,YAAE,CAAC,OAAO,EAAE,WAAW,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7G,CAAC;CACJ;AARD,8DAQC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CliCommandProcessor } from '../abstractions/cli-command-processor';
|
|
2
2
|
import { CliProcessCommand } from '../abstractions/cli-process-command';
|
|
3
|
+
/** Command processor that displays detailed system information (hostname, OS, CPU, memory, uptime). */
|
|
3
4
|
export declare class CliSystemCommandProcessor extends CliCommandProcessor {
|
|
4
5
|
command: string;
|
|
5
6
|
description: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-system-command-processor.d.ts","sourceRoot":"","sources":["../../../src/processors/cli-system-command-processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAIxE,uGAAuG;AACvG,qBAAa,yBAA0B,SAAQ,mBAAmB;IAC9D,OAAO,SAAY;IACnB,WAAW,SAAqC;IAE1C,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBjE"}
|
|
@@ -7,6 +7,7 @@ exports.CliSystemCommandProcessor = void 0;
|
|
|
7
7
|
const os_1 = __importDefault(require("os"));
|
|
8
8
|
const cli_command_processor_1 = require("../abstractions/cli-command-processor");
|
|
9
9
|
const startTime = Date.now();
|
|
10
|
+
/** Command processor that displays detailed system information (hostname, OS, CPU, memory, uptime). */
|
|
10
11
|
class CliSystemCommandProcessor extends cli_command_processor_1.CliCommandProcessor {
|
|
11
12
|
command = 'system';
|
|
12
13
|
description = 'Shows server system information';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-system-command-processor.js","sourceRoot":"","sources":["../../../src/processors/cli-system-command-processor.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,iFAA4E;AAG5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE7B,uGAAuG;AACvG,MAAa,yBAA0B,SAAQ,2CAAmB;IAC9D,OAAO,GAAG,QAAQ,CAAC;IACnB,WAAW,GAAG,iCAAiC,CAAC;IAEhD,KAAK,CAAC,WAAW,CAAC,OAA0B;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,UAAU,GAAG,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAG,CAAC,YAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,CAAC,YAAE,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG;YACV,kBAAkB,YAAE,CAAC,QAAQ,EAAE,EAAE;YACjC,kBAAkB,YAAE,CAAC,IAAI,EAAE,IAAI,YAAE,CAAC,OAAO,EAAE,EAAE;YAC7C,kBAAkB,YAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,kBAAkB,YAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;YACpC,kBAAkB,OAAO,cAAc,QAAQ,WAAW;YAC1D,kBAAkB,OAAO,CAAC,OAAO,EAAE;YACnC,kBAAkB,KAAK,KAAK,OAAO,KAAK,OAAO,GAAG;SACrD,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACJ;AAxBD,8DAwBC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export { CliEchoCommandProcessor } from './cli-echo-command-processor';
|
|
1
|
+
export { CliEchoCommandProcessor, joinShellWords } from './cli-echo-command-processor';
|
|
2
2
|
export { CliStatusCommandProcessor } from './cli-status-command-processor';
|
|
3
3
|
export { CliSystemCommandProcessor } from './cli-system-command-processor';
|
|
4
4
|
export { CliHttpCommandProcessor } from './cli-http-command-processor';
|
|
5
5
|
export { CliHashCommandProcessor } from './cli-hash-command-processor';
|
|
6
6
|
export { CliBase64CommandProcessor } from './cli-base64-command-processor';
|
|
7
|
-
export { CliUuidCommandProcessor } from './cli-uuid-command-processor';
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CliBase64CommandProcessor = exports.CliHashCommandProcessor = exports.CliHttpCommandProcessor = exports.CliSystemCommandProcessor = exports.CliStatusCommandProcessor = exports.joinShellWords = exports.CliEchoCommandProcessor = void 0;
|
|
4
4
|
var cli_echo_command_processor_1 = require("./cli-echo-command-processor");
|
|
5
5
|
Object.defineProperty(exports, "CliEchoCommandProcessor", { enumerable: true, get: function () { return cli_echo_command_processor_1.CliEchoCommandProcessor; } });
|
|
6
|
+
Object.defineProperty(exports, "joinShellWords", { enumerable: true, get: function () { return cli_echo_command_processor_1.joinShellWords; } });
|
|
6
7
|
var cli_status_command_processor_1 = require("./cli-status-command-processor");
|
|
7
8
|
Object.defineProperty(exports, "CliStatusCommandProcessor", { enumerable: true, get: function () { return cli_status_command_processor_1.CliStatusCommandProcessor; } });
|
|
8
9
|
var cli_system_command_processor_1 = require("./cli-system-command-processor");
|
|
@@ -13,6 +14,4 @@ var cli_hash_command_processor_1 = require("./cli-hash-command-processor");
|
|
|
13
14
|
Object.defineProperty(exports, "CliHashCommandProcessor", { enumerable: true, get: function () { return cli_hash_command_processor_1.CliHashCommandProcessor; } });
|
|
14
15
|
var cli_base64_command_processor_1 = require("./cli-base64-command-processor");
|
|
15
16
|
Object.defineProperty(exports, "CliBase64CommandProcessor", { enumerable: true, get: function () { return cli_base64_command_processor_1.CliBase64CommandProcessor; } });
|
|
16
|
-
var cli_uuid_command_processor_1 = require("./cli-uuid-command-processor");
|
|
17
|
-
Object.defineProperty(exports, "CliUuidCommandProcessor", { enumerable: true, get: function () { return cli_uuid_command_processor_1.CliUuidCommandProcessor; } });
|
|
18
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":";;;AAAA,2EAAuF;AAA9E,qIAAA,uBAAuB,OAAA;AAAE,4HAAA,cAAc,OAAA;AAChD,+EAA2E;AAAlE,yIAAA,yBAAyB,OAAA;AAClC,+EAA2E;AAAlE,yIAAA,yBAAyB,OAAA;AAClC,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,+EAA2E;AAAlE,yIAAA,yBAAyB,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":""}
|
|
@@ -2,15 +2,26 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const create_cli_server_1 = require("./create-cli-server");
|
|
5
|
+
const logger_1 = require("./utils/logger");
|
|
6
|
+
const logger = (0, logger_1.createLogger)('Server');
|
|
5
7
|
const cli_echo_command_processor_1 = require("./processors/cli-echo-command-processor");
|
|
6
8
|
const cli_status_command_processor_1 = require("./processors/cli-status-command-processor");
|
|
7
9
|
const cli_system_command_processor_1 = require("./processors/cli-system-command-processor");
|
|
8
10
|
const cli_http_command_processor_1 = require("./processors/cli-http-command-processor");
|
|
9
11
|
const cli_hash_command_processor_1 = require("./processors/cli-hash-command-processor");
|
|
10
12
|
const cli_base64_command_processor_1 = require("./processors/cli-base64-command-processor");
|
|
11
|
-
const
|
|
13
|
+
const cli_server_plugin_weather_1 = require("@qodalis/cli-server-plugin-weather");
|
|
12
14
|
const port = process.env.PORT ?? 8047;
|
|
15
|
+
// CORS / WebSocket origins, e.g. QCLI_ALLOWED_ORIGINS=http://localhost:4200,http://localhost:4300
|
|
16
|
+
const allowedOrigins = process.env.QCLI_ALLOWED_ORIGINS?.split(',').map((o) => o.trim()).filter(Boolean);
|
|
17
|
+
// Remote shell (no users plugin here): set QCLI_SHELL_TOKEN to enable it in
|
|
18
|
+
// token mode. Clients send `Authorization: Bearer <token>` (browser clients:
|
|
19
|
+
// the server's configured `headers`, forwarded as `_header_Authorization`).
|
|
20
|
+
const shellToken = process.env.QCLI_SHELL_TOKEN?.trim() || undefined;
|
|
13
21
|
const { app, eventSocketManager } = (0, create_cli_server_1.createCliServer)({
|
|
22
|
+
allowedOrigins,
|
|
23
|
+
enableShell: !!shellToken,
|
|
24
|
+
shell: shellToken ? { token: shellToken } : undefined,
|
|
14
25
|
configure: (builder) => {
|
|
15
26
|
builder
|
|
16
27
|
.addProcessor(new cli_echo_command_processor_1.CliEchoCommandProcessor())
|
|
@@ -19,18 +30,22 @@ const { app, eventSocketManager } = (0, create_cli_server_1.createCliServer)({
|
|
|
19
30
|
.addProcessor(new cli_http_command_processor_1.CliHttpCommandProcessor())
|
|
20
31
|
.addProcessor(new cli_hash_command_processor_1.CliHashCommandProcessor())
|
|
21
32
|
.addProcessor(new cli_base64_command_processor_1.CliBase64CommandProcessor())
|
|
22
|
-
.
|
|
33
|
+
.addModule(new cli_server_plugin_weather_1.WeatherModule());
|
|
23
34
|
},
|
|
24
35
|
});
|
|
25
36
|
const server = app.listen(port, () => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
logger.info(`CLI server (Node.js) listening on http://localhost:${port}`);
|
|
38
|
+
logger.info(` Commands: http://localhost:${port}/api/v1/qcli/commands`);
|
|
39
|
+
logger.info(` Execute: http://localhost:${port}/api/v1/qcli/execute`);
|
|
40
|
+
logger.info(` Capabilities: http://localhost:${port}/api/v1/qcli/capabilities`);
|
|
41
|
+
logger.info(` Events: ws://localhost:${port}/ws/v1/qcli/events`);
|
|
42
|
+
if (shellToken) {
|
|
43
|
+
logger.info(` Shell: ws://localhost:${port}/ws/v1/qcli/shell (token mode)`);
|
|
44
|
+
}
|
|
30
45
|
});
|
|
31
46
|
eventSocketManager.attach(server);
|
|
32
47
|
process.on('SIGINT', async () => {
|
|
33
|
-
|
|
48
|
+
logger.info('Shutting down...');
|
|
34
49
|
await eventSocketManager.broadcastDisconnect();
|
|
35
50
|
server.close();
|
|
36
51
|
process.exit(0);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;;AAEA,2DAAsD;AACtD,2CAA8C;AAE9C,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC;AACtC,wFAAkF;AAClF,4FAAsF;AACtF,4FAAsF;AACtF,wFAAkF;AAClF,wFAAkF;AAClF,4FAAsF;AACtF,kFAAmE;AAEnE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,kGAAkG;AAClG,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEzG,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AAErE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,IAAA,mCAAe,EAAC;IAChD,cAAc;IACd,WAAW,EAAE,CAAC,CAAC,UAAU;IACzB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;IACrD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;QACnB,OAAO;aACF,YAAY,CAAC,IAAI,oDAAuB,EAAE,CAAC;aAC3C,YAAY,CAAC,IAAI,wDAAyB,EAAE,CAAC;aAC7C,YAAY,CAAC,IAAI,wDAAyB,EAAE,CAAC;aAC7C,YAAY,CAAC,IAAI,oDAAuB,EAAE,CAAC;aAC3C,YAAY,CAAC,IAAI,oDAAuB,EAAE,CAAC;aAC3C,YAAY,CAAC,IAAI,wDAAyB,EAAE,CAAC;aAC7C,SAAS,CAAC,IAAI,yCAAa,EAAE,CAAC,CAAC;IACxC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACjC,MAAM,CAAC,IAAI,CAAC,sDAAsD,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,uBAAuB,CAAC,CAAC;IAC7E,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,sBAAsB,CAAC,CAAC;IAC5E,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,2BAA2B,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,oBAAoB,CAAC,CAAC;IACxE,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,gCAAgC,CAAC,CAAC;IACxF,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAElC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC5B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChC,MAAM,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;IAC/C,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IAC7B,MAAM,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;IAC/C,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CliProcessCommand, ICliCommandProcessor, ICliProcessorFilter } from '../abstractions';
|
|
2
|
+
import { CliServerResponse } from '../models';
|
|
3
|
+
import { ICliCommandRegistry } from './cli-command-registry';
|
|
4
|
+
/** Service contract for executing parsed CLI commands. */
|
|
5
|
+
export interface ICliCommandExecutorService {
|
|
6
|
+
/**
|
|
7
|
+
* Executes a parsed command by routing it to the appropriate processor.
|
|
8
|
+
* @param command - Parsed command to execute.
|
|
9
|
+
* @param signal - Optional AbortSignal to cancel the operation.
|
|
10
|
+
* @returns Structured response with exit code and outputs.
|
|
11
|
+
*/
|
|
12
|
+
executeAsync(command: CliProcessCommand, signal?: AbortSignal): Promise<CliServerResponse>;
|
|
13
|
+
/**
|
|
14
|
+
* Adds a processor filter that can block command execution at runtime.
|
|
15
|
+
* @param filter - The filter to add.
|
|
16
|
+
*/
|
|
17
|
+
addFilter(filter: ICliProcessorFilter): void;
|
|
18
|
+
/**
|
|
19
|
+
* Returns true if any registered filter blocks the given processor.
|
|
20
|
+
* @param processor - The processor to check.
|
|
21
|
+
*/
|
|
22
|
+
isBlocked(processor: ICliCommandProcessor): boolean;
|
|
23
|
+
}
|
|
24
|
+
/** Default executor that resolves processors from the registry and delegates command handling. */
|
|
25
|
+
export declare class CliCommandExecutorService implements ICliCommandExecutorService {
|
|
26
|
+
private readonly _registry;
|
|
27
|
+
private readonly _filters;
|
|
28
|
+
constructor(_registry: ICliCommandRegistry);
|
|
29
|
+
addFilter(filter: ICliProcessorFilter): void;
|
|
30
|
+
isBlocked(processor: ICliCommandProcessor): boolean;
|
|
31
|
+
executeAsync(command: CliProcessCommand, signal?: AbortSignal): Promise<CliServerResponse>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=cli-command-executor-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-executor-service.d.ts","sourceRoot":"","sources":["../../../src/services/cli-command-executor-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,0DAA0D;AAC1D,MAAM,WAAW,0BAA0B;IACvC;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3F;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAE7C;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO,CAAC;CACvD;AAED,kGAAkG;AAClG,qBAAa,yBAA0B,YAAW,0BAA0B;IAG5D,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;gBAEzB,SAAS,EAAE,mBAAmB;IAE3D,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAI5C,SAAS,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO;IAI7C,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA8DnG"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliCommandExecutorService = void 0;
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
const logger = (0, logger_1.createLogger)('CommandExecutor');
|
|
6
|
+
/** Default executor that resolves processors from the registry and delegates command handling. */
|
|
7
|
+
class CliCommandExecutorService {
|
|
8
|
+
_registry;
|
|
9
|
+
_filters = [];
|
|
10
|
+
constructor(_registry) {
|
|
11
|
+
this._registry = _registry;
|
|
12
|
+
}
|
|
13
|
+
addFilter(filter) {
|
|
14
|
+
this._filters.push(filter);
|
|
15
|
+
}
|
|
16
|
+
isBlocked(processor) {
|
|
17
|
+
return this._filters.some(f => !f.isAllowed(processor));
|
|
18
|
+
}
|
|
19
|
+
async executeAsync(command, signal) {
|
|
20
|
+
logger.debug('Executing command: %s', command.command);
|
|
21
|
+
const processor = this._registry.findProcessor(command.command, command.chainCommands?.length ? command.chainCommands : undefined);
|
|
22
|
+
if (!processor) {
|
|
23
|
+
return {
|
|
24
|
+
exitCode: 1,
|
|
25
|
+
outputs: [
|
|
26
|
+
{
|
|
27
|
+
type: 'text',
|
|
28
|
+
value: `Unknown command: ${command.command}`,
|
|
29
|
+
style: 'error',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (this.isBlocked(processor)) {
|
|
35
|
+
logger.warn('Command blocked by filter (plugin disabled): %s', command.command);
|
|
36
|
+
return {
|
|
37
|
+
exitCode: 1,
|
|
38
|
+
outputs: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text',
|
|
41
|
+
value: `Command '${command.command}' is currently disabled.`,
|
|
42
|
+
style: 'error',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
if (processor.handleStructuredAsync) {
|
|
49
|
+
const response = await processor.handleStructuredAsync(command, signal);
|
|
50
|
+
logger.debug('Command completed: %s (exitCode=%d)', command.command, response.exitCode);
|
|
51
|
+
return response;
|
|
52
|
+
}
|
|
53
|
+
const result = await processor.handleAsync(command, signal);
|
|
54
|
+
const response = {
|
|
55
|
+
exitCode: 0,
|
|
56
|
+
outputs: [{ type: 'text', value: result }],
|
|
57
|
+
};
|
|
58
|
+
logger.debug('Command completed: %s (exitCode=%d)', command.command, response.exitCode);
|
|
59
|
+
return response;
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
logger.error('Command execution failed: %s - %s', command.command, err.message ?? err);
|
|
63
|
+
return {
|
|
64
|
+
exitCode: 1,
|
|
65
|
+
outputs: [
|
|
66
|
+
{
|
|
67
|
+
type: 'text',
|
|
68
|
+
value: `Error executing command: ${err.message ?? err}`,
|
|
69
|
+
style: 'error',
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.CliCommandExecutorService = CliCommandExecutorService;
|
|
77
|
+
//# sourceMappingURL=cli-command-executor-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-executor-service.js","sourceRoot":"","sources":["../../../src/services/cli-command-executor-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ICliCommandProcessor } from '../abstractions';
|
|
2
|
+
/** Registry that stores and looks up CLI command processors by command name. */
|
|
3
|
+
export interface ICliCommandRegistry {
|
|
4
|
+
/** All registered top-level processors. */
|
|
5
|
+
readonly processors: ReadonlyArray<ICliCommandProcessor>;
|
|
6
|
+
/** Registers a command processor. */
|
|
7
|
+
register(processor: ICliCommandProcessor): void;
|
|
8
|
+
/**
|
|
9
|
+
* Finds a processor by command name, optionally resolving a sub-command chain.
|
|
10
|
+
* @param command - Top-level command name.
|
|
11
|
+
* @param chainCommands - Optional sub-command chain to resolve.
|
|
12
|
+
* @returns Matching processor, or undefined if not found.
|
|
13
|
+
*/
|
|
14
|
+
findProcessor(command: string, chainCommands?: string[]): ICliCommandProcessor | undefined;
|
|
15
|
+
}
|
|
16
|
+
/** Default in-memory implementation of {@link ICliCommandRegistry}. */
|
|
17
|
+
export declare class CliCommandRegistry implements ICliCommandRegistry {
|
|
18
|
+
private _processors;
|
|
19
|
+
get processors(): ReadonlyArray<ICliCommandProcessor>;
|
|
20
|
+
register(processor: ICliCommandProcessor): void;
|
|
21
|
+
findProcessor(command: string, chainCommands?: string[]): ICliCommandProcessor | undefined;
|
|
22
|
+
/** Walks the sub-processor tree to resolve a chain of sub-commands. */
|
|
23
|
+
private resolveChain;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=cli-command-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-registry.d.ts","sourceRoot":"","sources":["../../../src/services/cli-command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAKvD,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACzD,qCAAqC;IACrC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,oBAAoB,GAAG,SAAS,CAAC;CAC9F;AAED,uEAAuE;AACvE,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,OAAO,CAAC,WAAW,CAAgD;IAEnE,IAAI,UAAU,IAAI,aAAa,CAAC,oBAAoB,CAAC,CAEpD;IAED,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/C,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,oBAAoB,GAAG,SAAS;IAS1F,uEAAuE;IACvE,OAAO,CAAC,YAAY;CAkBvB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CliCommandRegistry = void 0;
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
const logger = (0, logger_1.createLogger)('CommandRegistry');
|
|
6
|
+
/** Default in-memory implementation of {@link ICliCommandRegistry}. */
|
|
4
7
|
class CliCommandRegistry {
|
|
5
8
|
_processors = new Map();
|
|
6
9
|
get processors() {
|
|
@@ -8,6 +11,7 @@ class CliCommandRegistry {
|
|
|
8
11
|
}
|
|
9
12
|
register(processor) {
|
|
10
13
|
this._processors.set(processor.command.toLowerCase(), processor);
|
|
14
|
+
logger.debug('Registered processor: %s', processor.command);
|
|
11
15
|
}
|
|
12
16
|
findProcessor(command, chainCommands) {
|
|
13
17
|
const processor = this._processors.get(command.toLowerCase());
|
|
@@ -16,6 +20,7 @@ class CliCommandRegistry {
|
|
|
16
20
|
}
|
|
17
21
|
return this.resolveChain(processor, chainCommands);
|
|
18
22
|
}
|
|
23
|
+
/** Walks the sub-processor tree to resolve a chain of sub-commands. */
|
|
19
24
|
resolveChain(processor, chainCommands) {
|
|
20
25
|
let current = processor;
|
|
21
26
|
for (const sub of chainCommands) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-registry.js","sourceRoot":"","sources":["../../../src/services/cli-command-registry.ts"],"names":[],"mappings":";;;AACA,4CAA+C;AAE/C,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,iBAAiB,CAAC,CAAC;AAiB/C,uEAAuE;AACvE,MAAa,kBAAkB;IACnB,WAAW,GAAsC,IAAI,GAAG,EAAE,CAAC;IAEnE,IAAI,UAAU;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,CAAC,SAA+B;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,aAAa,CAAC,OAAe,EAAE,aAAwB;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,uEAAuE;IAC/D,YAAY,CAChB,SAA+B,EAC/B,aAAuB;QAEvB,IAAI,OAAO,GAAG,SAAS,CAAC;QAExB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CACvD,CAAC;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/D,CAAC;YACD,OAAO,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAxCD,gDAwCC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Server } from 'http';
|
|
2
|
+
import { CliShellSessionManager } from './cli-shell-session-manager';
|
|
3
|
+
import { CliShellAuthMode, CliShellOptions } from './cli-shell-options';
|
|
4
|
+
import { ICliServerAuth } from '../auth/cli-server-auth';
|
|
5
|
+
/** Information about a connected WebSocket event client. */
|
|
6
|
+
export interface CliWebSocketClientInfo {
|
|
7
|
+
id: string;
|
|
8
|
+
connectedAt: string;
|
|
9
|
+
remoteAddress: string;
|
|
10
|
+
type: 'events';
|
|
11
|
+
}
|
|
12
|
+
export interface CliEventSocketManagerOptions {
|
|
13
|
+
/** Accept interactive shell sessions on `/ws/v1/qcli/shell` (default false). */
|
|
14
|
+
enableShell?: boolean;
|
|
15
|
+
/** Shell security options (access mode, limits, timeouts, environment). */
|
|
16
|
+
shell?: CliShellOptions;
|
|
17
|
+
/**
|
|
18
|
+
* Trusted reverse-proxy hops (`true` = 1, `false`/0 = none) for `X-Forwarded-*`
|
|
19
|
+
* headers (shell per-address limits/logs, same-origin checks).
|
|
20
|
+
*/
|
|
21
|
+
trustProxy?: boolean | number;
|
|
22
|
+
/** When set, every upgrade with an `Origin` header must come from one of these. */
|
|
23
|
+
allowedOrigins?: string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Manages WebSocket connections for server-push events and interactive shell sessions.
|
|
27
|
+
* Handles upgrades on `/ws/v1/qcli/events` and (when `enableShell` is set)
|
|
28
|
+
* `/ws/v1/qcli/shell`. With an auth provider that protects the server, event
|
|
29
|
+
* upgrades need a single-use `?ticket=`; `session-kicked` is delivered only to
|
|
30
|
+
* the affected user. Sockets authenticated with a stored session are bound to
|
|
31
|
+
* it: once it ends they are closed with 4401 `session ended` (after
|
|
32
|
+
* `session-kicked` for revocations; see {@link SessionBoundSockets}). Shell
|
|
33
|
+
* access (modes, limits, session binding) is decided by {@link CliShellSessionManager}.
|
|
34
|
+
*/
|
|
35
|
+
export declare class CliEventSocketManager {
|
|
36
|
+
private _wss;
|
|
37
|
+
private readonly _clients;
|
|
38
|
+
private readonly _clientMeta;
|
|
39
|
+
private readonly _shellManager;
|
|
40
|
+
private _nextClientId;
|
|
41
|
+
private _auth?;
|
|
42
|
+
private _allowedOrigins?;
|
|
43
|
+
private readonly _trustProxy;
|
|
44
|
+
private readonly _sessionBound;
|
|
45
|
+
constructor(options?: CliEventSocketManagerOptions);
|
|
46
|
+
/** Installs the auth provider (users plugin) used to authenticate upgrades with tickets. */
|
|
47
|
+
setAuth(auth: ICliServerAuth | undefined): void;
|
|
48
|
+
setAllowedOrigins(origins: string[] | undefined): void;
|
|
49
|
+
setShellEnabled(enabled: boolean): void;
|
|
50
|
+
get shellEnabled(): boolean;
|
|
51
|
+
/** Shell access mode (`undefined` while the shell is disabled). */
|
|
52
|
+
get shellAuthMode(): CliShellAuthMode | undefined;
|
|
53
|
+
/** The shell session manager (open sessions, limits, binding). */
|
|
54
|
+
get shellManager(): CliShellSessionManager;
|
|
55
|
+
private static readonly EVENT_PATHS;
|
|
56
|
+
private static readonly SHELL_PATHS;
|
|
57
|
+
/**
|
|
58
|
+
* Attach to an HTTP server and listen for WebSocket upgrades on
|
|
59
|
+
* event and shell paths.
|
|
60
|
+
*/
|
|
61
|
+
attach(server: Server): void;
|
|
62
|
+
/**
|
|
63
|
+
* Broadcast an arbitrary message to all connected event clients.
|
|
64
|
+
*/
|
|
65
|
+
broadcastMessage(message: Record<string, unknown>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Broadcast a disconnect event to all connected clients and close sockets.
|
|
68
|
+
*/
|
|
69
|
+
broadcastDisconnect(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Return information about all currently connected event clients.
|
|
72
|
+
*/
|
|
73
|
+
getClients(): CliWebSocketClientInfo[];
|
|
74
|
+
/** Terminates all connections and closes the WebSocket server. */
|
|
75
|
+
dispose(): void;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=cli-event-socket-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-event-socket-manager.d.ts","sourceRoot":"","sources":["../../../src/services/cli-event-socket-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAA8C,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAMrG,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;CAClB;AAUD,MAAM,WAAW,4BAA4B;IACzC,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAKD;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;gBAElE,OAAO,GAAE,4BAAiC;IAUtD,4FAA4F;IAC5F,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI;IAM/C,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI;IAItD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIvC,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,mEAAmE;IACnE,IAAI,aAAa,IAAI,gBAAgB,GAAG,SAAS,CAEhD;IAED,kEAAkE;IAClE,IAAI,YAAY,IAAI,sBAAsB,CAEzC;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAGhC;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAGhC;IAEH;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA+E5B;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAyCxD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B1C;;OAEG;IACH,UAAU,IAAI,sBAAsB,EAAE;IAkBtC,kEAAkE;IAClE,OAAO,IAAI,IAAI;CAUlB"}
|