musonda 1.0.0
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/IMPLEMENTATION.md +432 -0
- package/README.md +119 -0
- package/dist/agent/harness.d.ts +25 -0
- package/dist/agent/harness.js +215 -0
- package/dist/agent/harness.js.map +1 -0
- package/dist/agent/openaiResponsesClient.d.ts +35 -0
- package/dist/agent/openaiResponsesClient.js +250 -0
- package/dist/agent/openaiResponsesClient.js.map +1 -0
- package/dist/agent/systemPrompt.d.ts +9 -0
- package/dist/agent/systemPrompt.js +100 -0
- package/dist/agent/systemPrompt.js.map +1 -0
- package/dist/agent/types.d.ts +53 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +6 -0
- package/dist/cli/commands/chat.js +8 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +4 -0
- package/dist/cli/commands/doctor.js +336 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/gateway.d.ts +20 -0
- package/dist/cli/commands/gateway.js +135 -0
- package/dist/cli/commands/gateway.js.map +1 -0
- package/dist/cli/commands/help.d.ts +4 -0
- package/dist/cli/commands/help.js +159 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/plugins.d.ts +18 -0
- package/dist/cli/commands/plugins.js +250 -0
- package/dist/cli/commands/plugins.js.map +1 -0
- package/dist/cli/commands/service.d.ts +16 -0
- package/dist/cli/commands/service.js +136 -0
- package/dist/cli/commands/service.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +4 -0
- package/dist/cli/commands/setup.js +8 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/status.d.ts +4 -0
- package/dist/cli/commands/status.js +73 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/update.d.ts +22 -0
- package/dist/cli/commands/update.js +226 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/daemon.d.ts +33 -0
- package/dist/cli/daemon.js +208 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/interactiveMenu.d.ts +5 -0
- package/dist/cli/interactiveMenu.js +225 -0
- package/dist/cli/interactiveMenu.js.map +1 -0
- package/dist/cli/musondaCli.d.ts +30 -0
- package/dist/cli/musondaCli.js +269 -0
- package/dist/cli/musondaCli.js.map +1 -0
- package/dist/cli/ui.d.ts +49 -0
- package/dist/cli/ui.js +90 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +315 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/loader.d.ts +12 -0
- package/dist/config/loader.js +217 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +11 -0
- package/dist/config/paths.js +18 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/types.d.ts +246 -0
- package/dist/config/types.js +155 -0
- package/dist/config/types.js.map +1 -0
- package/dist/gateway/channels/cli.d.ts +37 -0
- package/dist/gateway/channels/cli.js +298 -0
- package/dist/gateway/channels/cli.js.map +1 -0
- package/dist/gateway/channels/discord.d.ts +18 -0
- package/dist/gateway/channels/discord.js +419 -0
- package/dist/gateway/channels/discord.js.map +1 -0
- package/dist/gateway/channels/slack.d.ts +26 -0
- package/dist/gateway/channels/slack.js +470 -0
- package/dist/gateway/channels/slack.js.map +1 -0
- package/dist/gateway/channels/webhook.d.ts +18 -0
- package/dist/gateway/channels/webhook.js +49 -0
- package/dist/gateway/channels/webhook.js.map +1 -0
- package/dist/gateway/http.d.ts +33 -0
- package/dist/gateway/http.js +605 -0
- package/dist/gateway/http.js.map +1 -0
- package/dist/gateway/server.d.ts +38 -0
- package/dist/gateway/server.js +233 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/types.d.ts +28 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/memoryManager.d.ts +22 -0
- package/dist/memory/memoryManager.js +200 -0
- package/dist/memory/memoryManager.js.map +1 -0
- package/dist/memory/storage.d.ts +24 -0
- package/dist/memory/storage.js +187 -0
- package/dist/memory/storage.js.map +1 -0
- package/dist/memory/types.d.ts +43 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/plugins/manifest.d.ts +23 -0
- package/dist/plugins/manifest.js +185 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/mcp/mcpBridge.d.ts +31 -0
- package/dist/plugins/mcp/mcpBridge.js +115 -0
- package/dist/plugins/mcp/mcpBridge.js.map +1 -0
- package/dist/plugins/mcp/mcpClient.d.ts +43 -0
- package/dist/plugins/mcp/mcpClient.js +309 -0
- package/dist/plugins/mcp/mcpClient.js.map +1 -0
- package/dist/plugins/mcp/mcpConfig.d.ts +34 -0
- package/dist/plugins/mcp/mcpConfig.js +326 -0
- package/dist/plugins/mcp/mcpConfig.js.map +1 -0
- package/dist/plugins/mcp/types.d.ts +48 -0
- package/dist/plugins/mcp/types.js +2 -0
- package/dist/plugins/mcp/types.js.map +1 -0
- package/dist/plugins/pluginManager.d.ts +164 -0
- package/dist/plugins/pluginManager.js +1016 -0
- package/dist/plugins/pluginManager.js.map +1 -0
- package/dist/plugins/skills/frontmatterParser.d.ts +28 -0
- package/dist/plugins/skills/frontmatterParser.js +189 -0
- package/dist/plugins/skills/frontmatterParser.js.map +1 -0
- package/dist/plugins/skills/skillDiscovery.d.ts +15 -0
- package/dist/plugins/skills/skillDiscovery.js +148 -0
- package/dist/plugins/skills/skillDiscovery.js.map +1 -0
- package/dist/plugins/skills/skillTools.d.ts +8 -0
- package/dist/plugins/skills/skillTools.js +195 -0
- package/dist/plugins/skills/skillTools.js.map +1 -0
- package/dist/plugins/skills/types.d.ts +25 -0
- package/dist/plugins/skills/types.js +2 -0
- package/dist/plugins/skills/types.js.map +1 -0
- package/dist/plugins/types.d.ts +30 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/scheduler/scheduler.d.ts +25 -0
- package/dist/scheduler/scheduler.js +239 -0
- package/dist/scheduler/scheduler.js.map +1 -0
- package/dist/scheduler/types.d.ts +39 -0
- package/dist/scheduler/types.js +2 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/security/childProcessEnv.d.ts +5 -0
- package/dist/security/childProcessEnv.js +42 -0
- package/dist/security/childProcessEnv.js.map +1 -0
- package/dist/security/fileSandbox.d.ts +153 -0
- package/dist/security/fileSandbox.js +779 -0
- package/dist/security/fileSandbox.js.map +1 -0
- package/dist/service/index.d.ts +30 -0
- package/dist/service/index.js +41 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/systemd.d.ts +36 -0
- package/dist/service/systemd.js +409 -0
- package/dist/service/systemd.js.map +1 -0
- package/dist/service/types.d.ts +118 -0
- package/dist/service/types.js +6 -0
- package/dist/service/types.js.map +1 -0
- package/dist/tools/builtin/calcTools.d.ts +2 -0
- package/dist/tools/builtin/calcTools.js +51 -0
- package/dist/tools/builtin/calcTools.js.map +1 -0
- package/dist/tools/builtin/fileTools.d.ts +11 -0
- package/dist/tools/builtin/fileTools.js +352 -0
- package/dist/tools/builtin/fileTools.js.map +1 -0
- package/dist/tools/builtin/memoryTools.d.ts +4 -0
- package/dist/tools/builtin/memoryTools.js +123 -0
- package/dist/tools/builtin/memoryTools.js.map +1 -0
- package/dist/tools/builtin/noteTools.d.ts +4 -0
- package/dist/tools/builtin/noteTools.js +91 -0
- package/dist/tools/builtin/noteTools.js.map +1 -0
- package/dist/tools/builtin/pluginTools.d.ts +29 -0
- package/dist/tools/builtin/pluginTools.js +406 -0
- package/dist/tools/builtin/pluginTools.js.map +1 -0
- package/dist/tools/builtin/scheduleTools.d.ts +4 -0
- package/dist/tools/builtin/scheduleTools.js +156 -0
- package/dist/tools/builtin/scheduleTools.js.map +1 -0
- package/dist/tools/builtin/timeTools.d.ts +2 -0
- package/dist/tools/builtin/timeTools.js +41 -0
- package/dist/tools/builtin/timeTools.js.map +1 -0
- package/dist/tools/builtin/webTools.d.ts +12 -0
- package/dist/tools/builtin/webTools.js +325 -0
- package/dist/tools/builtin/webTools.js.map +1 -0
- package/dist/tools/registry.d.ts +15 -0
- package/dist/tools/registry.js +111 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/utils/logger.d.ts +29 -0
- package/dist/utils/logger.js +124 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wizard/onboarding.d.ts +3 -0
- package/dist/wizard/onboarding.js +408 -0
- package/dist/wizard/onboarding.js.map +1 -0
- package/package.json +69 -0
- package/plugins/example-calc/mcp.json +11 -0
- package/plugins/example-calc/plugin.json +12 -0
- package/plugins/example-calc/server.mjs +92 -0
- package/plugins/example-calc/skills/math-assistant/SKILL.md +15 -0
- package/plugins/plugin-builder/plugin.json +12 -0
- package/plugins/plugin-builder/skills/create-plugin/SKILL.md +149 -0
- package/plugins/plugin-builder/skills/manage-plugins/SKILL.md +157 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSandbox.js","sourceRoot":"","sources":["../../src/security/fileSandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Musonda Service Management Subsystem
|
|
3
|
+
* Unified interface for background service management across operating systems.
|
|
4
|
+
* Starts with Linux systemd .service support; architected for Windows service integration.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './systemd.js';
|
|
8
|
+
import { SystemdServiceOptions, ServiceInstallResult, ServiceStatusResult, ServiceUninstallResult, SystemdServiceType } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Checks whether native Windows service installation is supported in current build.
|
|
11
|
+
* Ready for future extension (e.g. Windows Service / NSSM / Task Scheduler runner).
|
|
12
|
+
*/
|
|
13
|
+
export declare function isWindowsServiceSupported(): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Returns descriptive status regarding Windows background service availability.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getWindowsServiceNotice(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Unified gateway service installer.
|
|
20
|
+
* Currently generates and installs systemd .service for Linux, or exports .service file for cross-platform deployment.
|
|
21
|
+
*/
|
|
22
|
+
export declare function installGatewayService(options?: SystemdServiceOptions, enableAndStart?: boolean): Promise<ServiceInstallResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Unified gateway service status checker.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getGatewayServiceStatus(serviceName?: string, type?: SystemdServiceType, customPath?: string): ServiceStatusResult;
|
|
27
|
+
/**
|
|
28
|
+
* Unified gateway service uninstaller.
|
|
29
|
+
*/
|
|
30
|
+
export declare function uninstallGatewayService(serviceName?: string, type?: SystemdServiceType, customPath?: string): Promise<ServiceUninstallResult>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Musonda Service Management Subsystem
|
|
3
|
+
* Unified interface for background service management across operating systems.
|
|
4
|
+
* Starts with Linux systemd .service support; architected for Windows service integration.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './systemd.js';
|
|
8
|
+
import { installSystemdService, checkSystemdServiceStatus, uninstallSystemdService, } from './systemd.js';
|
|
9
|
+
/**
|
|
10
|
+
* Checks whether native Windows service installation is supported in current build.
|
|
11
|
+
* Ready for future extension (e.g. Windows Service / NSSM / Task Scheduler runner).
|
|
12
|
+
*/
|
|
13
|
+
export function isWindowsServiceSupported() {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns descriptive status regarding Windows background service availability.
|
|
18
|
+
*/
|
|
19
|
+
export function getWindowsServiceNotice() {
|
|
20
|
+
return 'Native Windows background service runner (e.g. Windows Service / Task Scheduler) is in active development. Use "musonda start gateway --daemon" or generate a Linux systemd .service file for Linux/VPS deployment.';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unified gateway service installer.
|
|
24
|
+
* Currently generates and installs systemd .service for Linux, or exports .service file for cross-platform deployment.
|
|
25
|
+
*/
|
|
26
|
+
export async function installGatewayService(options = {}, enableAndStart = false) {
|
|
27
|
+
return installSystemdService(options, enableAndStart);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Unified gateway service status checker.
|
|
31
|
+
*/
|
|
32
|
+
export function getGatewayServiceStatus(serviceName = 'musonda', type = 'user', customPath) {
|
|
33
|
+
return checkSystemdServiceStatus(serviceName, type, customPath);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Unified gateway service uninstaller.
|
|
37
|
+
*/
|
|
38
|
+
export async function uninstallGatewayService(serviceName = 'musonda', type = 'user', customPath) {
|
|
39
|
+
return uninstallSystemdService(serviceName, type, customPath);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAS7B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,GAExB,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,qNAAqN,CAAC;AAC/N,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAO,GAA0B,EAAE,EACnC,cAAc,GAAG,KAAK;IAEtB,OAAO,qBAAqB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAW,GAAG,SAAS,EACvB,IAAI,GAAuB,MAAM,EACjC,UAAmB;IAEnB,OAAO,yBAAyB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAW,GAAG,SAAS,EACvB,IAAI,GAAuB,MAAM,EACjC,UAAmB;IAEnB,OAAO,uBAAuB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linux systemd .service Generator & Lifecycle Manager for Musonda Gateway
|
|
3
|
+
* Creates, installs, and manages systemd service units to keep Musonda Gateway running persistently.
|
|
4
|
+
*/
|
|
5
|
+
import { SystemdServiceOptions, SystemdServiceType, ServiceInstallResult, ServiceStatusResult, ServiceUninstallResult, ServiceCommandReference } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Returns canonical systemctl/journalctl commands for the given service name and scope.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getCommandReference(serviceName?: string, type?: SystemdServiceType): ServiceCommandReference;
|
|
10
|
+
/**
|
|
11
|
+
* Resolves the destination filepath for the .service unit.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getDefaultSystemdPath(type?: SystemdServiceType, serviceName?: string, customPath?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generates the raw INI content of the systemd unit file.
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateSystemdServiceContent(options?: SystemdServiceOptions): string;
|
|
18
|
+
/**
|
|
19
|
+
* Writes the systemd .service file to disk.
|
|
20
|
+
*/
|
|
21
|
+
export declare function writeSystemdServiceFile(options?: SystemdServiceOptions): {
|
|
22
|
+
servicePath: string;
|
|
23
|
+
content: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Installs the systemd unit, reloads systemd daemon, and optionally enables/starts the service.
|
|
27
|
+
*/
|
|
28
|
+
export declare function installSystemdService(options?: SystemdServiceOptions, enableAndStart?: boolean): Promise<ServiceInstallResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Checks if the systemd service file is present and its systemctl status if on Linux.
|
|
31
|
+
*/
|
|
32
|
+
export declare function checkSystemdServiceStatus(serviceName?: string, type?: SystemdServiceType, customPath?: string): ServiceStatusResult;
|
|
33
|
+
/**
|
|
34
|
+
* Uninstalls, disables, stops, and removes the systemd service.
|
|
35
|
+
*/
|
|
36
|
+
export declare function uninstallSystemdService(serviceName?: string, type?: SystemdServiceType, customPath?: string): Promise<ServiceUninstallResult>;
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Linux systemd .service Generator & Lifecycle Manager for Musonda Gateway
|
|
3
|
+
* Creates, installs, and manages systemd service units to keep Musonda Gateway running persistently.
|
|
4
|
+
*/
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import os from 'node:os';
|
|
8
|
+
import { execSync } from 'node:child_process';
|
|
9
|
+
import { logger } from '../utils/logger.js';
|
|
10
|
+
/**
|
|
11
|
+
* Returns canonical systemctl/journalctl commands for the given service name and scope.
|
|
12
|
+
*/
|
|
13
|
+
export function getCommandReference(serviceName = 'musonda', type = 'user') {
|
|
14
|
+
const unit = `${serviceName}.service`;
|
|
15
|
+
if (type === 'system') {
|
|
16
|
+
return {
|
|
17
|
+
status: `sudo systemctl status ${unit}`,
|
|
18
|
+
logs: `sudo journalctl -u ${unit} -f`,
|
|
19
|
+
start: `sudo systemctl start ${unit}`,
|
|
20
|
+
stop: `sudo systemctl stop ${unit}`,
|
|
21
|
+
restart: `sudo systemctl restart ${unit}`,
|
|
22
|
+
enable: `sudo systemctl enable ${unit}`,
|
|
23
|
+
disable: `sudo systemctl disable ${unit}`,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// User scope (and file fallback reference)
|
|
27
|
+
return {
|
|
28
|
+
status: `systemctl --user status ${unit}`,
|
|
29
|
+
logs: `journalctl --user -u ${unit} -f`,
|
|
30
|
+
start: `systemctl --user start ${unit}`,
|
|
31
|
+
stop: `systemctl --user stop ${unit}`,
|
|
32
|
+
restart: `systemctl --user restart ${unit}`,
|
|
33
|
+
enable: `systemctl --user enable ${unit}`,
|
|
34
|
+
disable: `systemctl --user disable ${unit}`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolves the destination filepath for the .service unit.
|
|
39
|
+
*/
|
|
40
|
+
export function getDefaultSystemdPath(type = 'user', serviceName = 'musonda', customPath) {
|
|
41
|
+
if (customPath) {
|
|
42
|
+
return path.resolve(customPath);
|
|
43
|
+
}
|
|
44
|
+
if (type === 'system') {
|
|
45
|
+
return `/etc/systemd/system/${serviceName}.service`;
|
|
46
|
+
}
|
|
47
|
+
if (type === 'file') {
|
|
48
|
+
return path.resolve(process.cwd(), `${serviceName}.service`);
|
|
49
|
+
}
|
|
50
|
+
// 'user' scope: ~/.config/systemd/user/<serviceName>.service
|
|
51
|
+
return path.join(os.homedir(), '.config', 'systemd', 'user', `${serviceName}.service`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generates the raw INI content of the systemd unit file.
|
|
55
|
+
*/
|
|
56
|
+
export function generateSystemdServiceContent(options = {}) {
|
|
57
|
+
const serviceName = options.serviceName || 'musonda';
|
|
58
|
+
const description = options.description || 'Musonda Personal AI Assistant Gateway';
|
|
59
|
+
const serviceType = options.serviceType || 'user';
|
|
60
|
+
const restartSec = options.restartSec ?? 10;
|
|
61
|
+
// Resolve working directory (normalize to forward slashes for Linux compatibility)
|
|
62
|
+
let workingDir;
|
|
63
|
+
if (options.workingDirectory) {
|
|
64
|
+
if (options.workingDirectory.startsWith('/')) {
|
|
65
|
+
workingDir = options.workingDirectory.replace(/\\/g, '/');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
workingDir = path.resolve(options.workingDirectory).replace(/\\/g, '/');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
workingDir = process.cwd().replace(/\\/g, '/');
|
|
73
|
+
}
|
|
74
|
+
// Resolve Node path
|
|
75
|
+
let nodePath = options.nodePath;
|
|
76
|
+
if (!nodePath) {
|
|
77
|
+
if (process.platform === 'linux') {
|
|
78
|
+
nodePath = process.execPath;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Sensible default when generating for Linux from non-Linux host
|
|
82
|
+
nodePath = '/usr/bin/node';
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
nodePath = nodePath.replace(/\\/g, '/');
|
|
86
|
+
// Resolve Entrypoint
|
|
87
|
+
let entry = options.entrypoint;
|
|
88
|
+
if (!entry) {
|
|
89
|
+
const rawBaseDir = options.workingDirectory ? path.resolve(options.workingDirectory) : process.cwd();
|
|
90
|
+
const distEntry = path.join(rawBaseDir, 'dist', 'index.js');
|
|
91
|
+
const srcEntry = path.join(rawBaseDir, 'src', 'index.ts');
|
|
92
|
+
if (fs.existsSync(distEntry)) {
|
|
93
|
+
entry = `${workingDir}/dist/index.js`;
|
|
94
|
+
}
|
|
95
|
+
else if (fs.existsSync(srcEntry)) {
|
|
96
|
+
entry = `${workingDir}/src/index.ts`;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
entry = `${workingDir}/dist/index.js`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else if (entry.startsWith('/')) {
|
|
103
|
+
entry = entry.replace(/\\/g, '/');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
entry = path.resolve(entry).replace(/\\/g, '/');
|
|
107
|
+
}
|
|
108
|
+
const normalizedEntry = entry.replace(/\\/g, '/');
|
|
109
|
+
// Build ExecStart arguments
|
|
110
|
+
const execParts = [];
|
|
111
|
+
// Quote binary if contains spaces
|
|
112
|
+
if (nodePath.includes(' ')) {
|
|
113
|
+
execParts.push(`"${nodePath}"`);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
execParts.push(nodePath);
|
|
117
|
+
}
|
|
118
|
+
// Quote entrypoint if contains spaces
|
|
119
|
+
if (normalizedEntry.includes(' ')) {
|
|
120
|
+
execParts.push(`"${normalizedEntry}"`);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
execParts.push(normalizedEntry);
|
|
124
|
+
}
|
|
125
|
+
execParts.push('start', 'gateway', '--foreground');
|
|
126
|
+
if (options.host) {
|
|
127
|
+
execParts.push('--host', options.host);
|
|
128
|
+
}
|
|
129
|
+
if (options.port) {
|
|
130
|
+
execParts.push('--port', String(options.port));
|
|
131
|
+
}
|
|
132
|
+
if (options.extraArgs && options.extraArgs.length > 0) {
|
|
133
|
+
execParts.push(...options.extraArgs);
|
|
134
|
+
}
|
|
135
|
+
const execStart = execParts.join(' ');
|
|
136
|
+
// Environment variables
|
|
137
|
+
const envLines = [];
|
|
138
|
+
envLines.push('Environment="NODE_ENV=production"');
|
|
139
|
+
envLines.push('Environment="MUSONDA_DAEMON=true"');
|
|
140
|
+
// PATH environment variable
|
|
141
|
+
const defaultPath = process.platform === 'linux' && process.env.PATH
|
|
142
|
+
? process.env.PATH
|
|
143
|
+
: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';
|
|
144
|
+
envLines.push(`Environment="PATH=${defaultPath}"`);
|
|
145
|
+
// Custom environment variables
|
|
146
|
+
if (options.env) {
|
|
147
|
+
for (const [key, val] of Object.entries(options.env)) {
|
|
148
|
+
envLines.push(`Environment="${key}=${val}"`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Environment file
|
|
152
|
+
const envFileDirectives = [];
|
|
153
|
+
if (options.includeEnvFile !== false) {
|
|
154
|
+
const envFilePath = typeof options.includeEnvFile === 'string'
|
|
155
|
+
? options.includeEnvFile.replace(/\\/g, '/')
|
|
156
|
+
: `${workingDir}/.env`;
|
|
157
|
+
envFileDirectives.push(`EnvironmentFile=-${envFilePath}`);
|
|
158
|
+
}
|
|
159
|
+
// User and Group directives (only applicable for system service)
|
|
160
|
+
const userDirectives = [];
|
|
161
|
+
if (serviceType === 'system') {
|
|
162
|
+
const runAsUser = options.user || (process.platform === 'linux' ? process.env.USER : undefined);
|
|
163
|
+
if (runAsUser) {
|
|
164
|
+
userDirectives.push(`User=${runAsUser}`);
|
|
165
|
+
}
|
|
166
|
+
if (options.group) {
|
|
167
|
+
userDirectives.push(`Group=${options.group}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Install target
|
|
171
|
+
const wantedBy = serviceType === 'system' ? 'multi-user.target' : 'default.target';
|
|
172
|
+
const sections = [
|
|
173
|
+
`[Unit]`,
|
|
174
|
+
`Description=${description}`,
|
|
175
|
+
`Documentation=https://github.com/musonda/musonda`,
|
|
176
|
+
`After=network.target network-online.target`,
|
|
177
|
+
`Wants=network-online.target`,
|
|
178
|
+
``,
|
|
179
|
+
`[Service]`,
|
|
180
|
+
`Type=simple`,
|
|
181
|
+
`WorkingDirectory=${workingDir}`,
|
|
182
|
+
`ExecStart=${execStart}`,
|
|
183
|
+
`Restart=always`,
|
|
184
|
+
`RestartSec=${restartSec}`,
|
|
185
|
+
`StandardOutput=journal`,
|
|
186
|
+
`StandardError=journal`,
|
|
187
|
+
`SyslogIdentifier=${serviceName}`,
|
|
188
|
+
...envLines,
|
|
189
|
+
...envFileDirectives,
|
|
190
|
+
...userDirectives,
|
|
191
|
+
``,
|
|
192
|
+
`[Install]`,
|
|
193
|
+
`WantedBy=${wantedBy}`,
|
|
194
|
+
``,
|
|
195
|
+
];
|
|
196
|
+
return sections.join('\n');
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Writes the systemd .service file to disk.
|
|
200
|
+
*/
|
|
201
|
+
export function writeSystemdServiceFile(options = {}) {
|
|
202
|
+
const serviceName = options.serviceName || 'musonda';
|
|
203
|
+
const serviceType = options.serviceType || 'user';
|
|
204
|
+
const servicePath = getDefaultSystemdPath(serviceType, serviceName, options.outputPath);
|
|
205
|
+
const content = generateSystemdServiceContent(options);
|
|
206
|
+
const dir = path.dirname(servicePath);
|
|
207
|
+
if (!fs.existsSync(dir)) {
|
|
208
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o755 });
|
|
209
|
+
}
|
|
210
|
+
fs.writeFileSync(servicePath, content, { encoding: 'utf-8', mode: 0o644 });
|
|
211
|
+
logger.info(`Wrote systemd service unit to: ${servicePath}`);
|
|
212
|
+
return { servicePath, content };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Installs the systemd unit, reloads systemd daemon, and optionally enables/starts the service.
|
|
216
|
+
*/
|
|
217
|
+
export async function installSystemdService(options = {}, enableAndStart = false) {
|
|
218
|
+
const serviceName = options.serviceName || 'musonda';
|
|
219
|
+
const serviceType = options.serviceType || 'user';
|
|
220
|
+
const commands = getCommandReference(serviceName, serviceType);
|
|
221
|
+
try {
|
|
222
|
+
const { servicePath, content } = writeSystemdServiceFile(options);
|
|
223
|
+
let enabled = false;
|
|
224
|
+
let started = false;
|
|
225
|
+
let warning;
|
|
226
|
+
// Only run systemctl commands if running on Linux and not in purely local file export mode
|
|
227
|
+
if (process.platform === 'linux' && serviceType !== 'file') {
|
|
228
|
+
const isUser = serviceType === 'user';
|
|
229
|
+
const daemonReloadCmd = isUser ? 'systemctl --user daemon-reload' : 'systemctl daemon-reload';
|
|
230
|
+
const enableNowCmd = isUser
|
|
231
|
+
? `systemctl --user enable --now ${serviceName}.service`
|
|
232
|
+
: `systemctl enable --now ${serviceName}.service`;
|
|
233
|
+
try {
|
|
234
|
+
execSync(daemonReloadCmd, { stdio: 'pipe' });
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
warning = `Wrote service file, but failed to reload systemd daemon: ${err.message}`;
|
|
238
|
+
}
|
|
239
|
+
if (enableAndStart && !warning) {
|
|
240
|
+
try {
|
|
241
|
+
execSync(enableNowCmd, { stdio: 'pipe' });
|
|
242
|
+
enabled = true;
|
|
243
|
+
started = true;
|
|
244
|
+
}
|
|
245
|
+
catch (err) {
|
|
246
|
+
warning = `Service file written, but failed to enable/start: ${err.message}`;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else if (process.platform !== 'linux' && serviceType !== 'file') {
|
|
251
|
+
warning = `Generated service file for Linux systemd, but current OS is ${process.platform}. systemctl commands were skipped.`;
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
success: true,
|
|
255
|
+
servicePath,
|
|
256
|
+
serviceName,
|
|
257
|
+
serviceType,
|
|
258
|
+
content,
|
|
259
|
+
enabled,
|
|
260
|
+
started,
|
|
261
|
+
commands,
|
|
262
|
+
warning,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
logger.error('Failed to install systemd service:', err);
|
|
267
|
+
return {
|
|
268
|
+
success: false,
|
|
269
|
+
servicePath: getDefaultSystemdPath(serviceType, serviceName, options.outputPath),
|
|
270
|
+
serviceName,
|
|
271
|
+
serviceType,
|
|
272
|
+
content: '',
|
|
273
|
+
commands,
|
|
274
|
+
error: err.message,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Checks if the systemd service file is present and its systemctl status if on Linux.
|
|
280
|
+
*/
|
|
281
|
+
export function checkSystemdServiceStatus(serviceName = 'musonda', type = 'user', customPath) {
|
|
282
|
+
const commands = getCommandReference(serviceName, type);
|
|
283
|
+
const servicePath = getDefaultSystemdPath(type, serviceName, customPath);
|
|
284
|
+
const installed = fs.existsSync(servicePath);
|
|
285
|
+
if (!installed) {
|
|
286
|
+
return {
|
|
287
|
+
installed: false,
|
|
288
|
+
serviceName,
|
|
289
|
+
serviceType: type,
|
|
290
|
+
servicePath,
|
|
291
|
+
commands,
|
|
292
|
+
statusText: 'Not installed',
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
let active = false;
|
|
296
|
+
let enabled = false;
|
|
297
|
+
let detail = '';
|
|
298
|
+
if (process.platform === 'linux') {
|
|
299
|
+
const isUser = type === 'user';
|
|
300
|
+
const activeCheckCmd = isUser
|
|
301
|
+
? `systemctl --user is-active ${serviceName}.service`
|
|
302
|
+
: `systemctl is-active ${serviceName}.service`;
|
|
303
|
+
const enabledCheckCmd = isUser
|
|
304
|
+
? `systemctl --user is-enabled ${serviceName}.service`
|
|
305
|
+
: `systemctl is-enabled ${serviceName}.service`;
|
|
306
|
+
try {
|
|
307
|
+
const activeOut = execSync(activeCheckCmd, { stdio: 'pipe' }).toString().trim();
|
|
308
|
+
active = activeOut === 'active';
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
active = false;
|
|
312
|
+
}
|
|
313
|
+
try {
|
|
314
|
+
const enabledOut = execSync(enabledCheckCmd, { stdio: 'pipe' }).toString().trim();
|
|
315
|
+
enabled = enabledOut === 'enabled';
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
enabled = false;
|
|
319
|
+
}
|
|
320
|
+
try {
|
|
321
|
+
const statusCmd = isUser
|
|
322
|
+
? `systemctl --user status ${serviceName}.service --no-pager -n 5`
|
|
323
|
+
: `systemctl status ${serviceName}.service --no-pager -n 5`;
|
|
324
|
+
detail = execSync(statusCmd, { stdio: 'pipe' }).toString().trim();
|
|
325
|
+
}
|
|
326
|
+
catch (err) {
|
|
327
|
+
if (err.stdout) {
|
|
328
|
+
detail = err.stdout.toString().trim();
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return {
|
|
333
|
+
installed: true,
|
|
334
|
+
serviceName,
|
|
335
|
+
serviceType: type,
|
|
336
|
+
servicePath,
|
|
337
|
+
active,
|
|
338
|
+
enabled,
|
|
339
|
+
detail,
|
|
340
|
+
statusText: active ? 'Active (Running)' : 'Inactive (Stopped)',
|
|
341
|
+
commands,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Uninstalls, disables, stops, and removes the systemd service.
|
|
346
|
+
*/
|
|
347
|
+
export async function uninstallSystemdService(serviceName = 'musonda', type = 'user', customPath) {
|
|
348
|
+
const servicePath = getDefaultSystemdPath(type, serviceName, customPath);
|
|
349
|
+
if (!fs.existsSync(servicePath)) {
|
|
350
|
+
return {
|
|
351
|
+
success: true,
|
|
352
|
+
serviceName,
|
|
353
|
+
serviceType: type,
|
|
354
|
+
servicePath,
|
|
355
|
+
message: `No service file found at "${servicePath}". Nothing to uninstall.`,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
let wasRunning = false;
|
|
359
|
+
let wasEnabled = false;
|
|
360
|
+
if (process.platform === 'linux' && type !== 'file') {
|
|
361
|
+
const isUser = type === 'user';
|
|
362
|
+
try {
|
|
363
|
+
const stopCmd = isUser
|
|
364
|
+
? `systemctl --user stop ${serviceName}.service`
|
|
365
|
+
: `systemctl stop ${serviceName}.service`;
|
|
366
|
+
execSync(stopCmd, { stdio: 'pipe' });
|
|
367
|
+
wasRunning = true;
|
|
368
|
+
}
|
|
369
|
+
catch { }
|
|
370
|
+
try {
|
|
371
|
+
const disableCmd = isUser
|
|
372
|
+
? `systemctl --user disable ${serviceName}.service`
|
|
373
|
+
: `systemctl disable ${serviceName}.service`;
|
|
374
|
+
execSync(disableCmd, { stdio: 'pipe' });
|
|
375
|
+
wasEnabled = true;
|
|
376
|
+
}
|
|
377
|
+
catch { }
|
|
378
|
+
}
|
|
379
|
+
try {
|
|
380
|
+
fs.unlinkSync(servicePath);
|
|
381
|
+
if (process.platform === 'linux' && type !== 'file') {
|
|
382
|
+
const reloadCmd = type === 'user' ? 'systemctl --user daemon-reload' : 'systemctl daemon-reload';
|
|
383
|
+
try {
|
|
384
|
+
execSync(reloadCmd, { stdio: 'pipe' });
|
|
385
|
+
}
|
|
386
|
+
catch { }
|
|
387
|
+
}
|
|
388
|
+
return {
|
|
389
|
+
success: true,
|
|
390
|
+
serviceName,
|
|
391
|
+
serviceType: type,
|
|
392
|
+
servicePath,
|
|
393
|
+
wasRunning,
|
|
394
|
+
wasEnabled,
|
|
395
|
+
message: `Successfully uninstalled systemd service "${serviceName}.service".`,
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
catch (err) {
|
|
399
|
+
return {
|
|
400
|
+
success: false,
|
|
401
|
+
serviceName,
|
|
402
|
+
serviceType: type,
|
|
403
|
+
servicePath,
|
|
404
|
+
message: `Failed to remove service file "${servicePath}": ${err.message}`,
|
|
405
|
+
error: err.message,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=systemd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemd.js","sourceRoot":"","sources":["../../src/service/systemd.ts"],"names":[],"mappings":"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"}
|