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.
Files changed (196) hide show
  1. package/IMPLEMENTATION.md +432 -0
  2. package/README.md +119 -0
  3. package/dist/agent/harness.d.ts +25 -0
  4. package/dist/agent/harness.js +215 -0
  5. package/dist/agent/harness.js.map +1 -0
  6. package/dist/agent/openaiResponsesClient.d.ts +35 -0
  7. package/dist/agent/openaiResponsesClient.js +250 -0
  8. package/dist/agent/openaiResponsesClient.js.map +1 -0
  9. package/dist/agent/systemPrompt.d.ts +9 -0
  10. package/dist/agent/systemPrompt.js +100 -0
  11. package/dist/agent/systemPrompt.js.map +1 -0
  12. package/dist/agent/types.d.ts +53 -0
  13. package/dist/agent/types.js +2 -0
  14. package/dist/agent/types.js.map +1 -0
  15. package/dist/cli/commands/chat.d.ts +6 -0
  16. package/dist/cli/commands/chat.js +8 -0
  17. package/dist/cli/commands/chat.js.map +1 -0
  18. package/dist/cli/commands/doctor.d.ts +4 -0
  19. package/dist/cli/commands/doctor.js +336 -0
  20. package/dist/cli/commands/doctor.js.map +1 -0
  21. package/dist/cli/commands/gateway.d.ts +20 -0
  22. package/dist/cli/commands/gateway.js +135 -0
  23. package/dist/cli/commands/gateway.js.map +1 -0
  24. package/dist/cli/commands/help.d.ts +4 -0
  25. package/dist/cli/commands/help.js +159 -0
  26. package/dist/cli/commands/help.js.map +1 -0
  27. package/dist/cli/commands/plugins.d.ts +18 -0
  28. package/dist/cli/commands/plugins.js +250 -0
  29. package/dist/cli/commands/plugins.js.map +1 -0
  30. package/dist/cli/commands/service.d.ts +16 -0
  31. package/dist/cli/commands/service.js +136 -0
  32. package/dist/cli/commands/service.js.map +1 -0
  33. package/dist/cli/commands/setup.d.ts +4 -0
  34. package/dist/cli/commands/setup.js +8 -0
  35. package/dist/cli/commands/setup.js.map +1 -0
  36. package/dist/cli/commands/status.d.ts +4 -0
  37. package/dist/cli/commands/status.js +73 -0
  38. package/dist/cli/commands/status.js.map +1 -0
  39. package/dist/cli/commands/update.d.ts +22 -0
  40. package/dist/cli/commands/update.js +226 -0
  41. package/dist/cli/commands/update.js.map +1 -0
  42. package/dist/cli/daemon.d.ts +33 -0
  43. package/dist/cli/daemon.js +208 -0
  44. package/dist/cli/daemon.js.map +1 -0
  45. package/dist/cli/interactiveMenu.d.ts +5 -0
  46. package/dist/cli/interactiveMenu.js +225 -0
  47. package/dist/cli/interactiveMenu.js.map +1 -0
  48. package/dist/cli/musondaCli.d.ts +30 -0
  49. package/dist/cli/musondaCli.js +269 -0
  50. package/dist/cli/musondaCli.js.map +1 -0
  51. package/dist/cli/ui.d.ts +49 -0
  52. package/dist/cli/ui.js +90 -0
  53. package/dist/cli/ui.js.map +1 -0
  54. package/dist/cli.d.ts +9 -0
  55. package/dist/cli.js +315 -0
  56. package/dist/cli.js.map +1 -0
  57. package/dist/config/loader.d.ts +12 -0
  58. package/dist/config/loader.js +217 -0
  59. package/dist/config/loader.js.map +1 -0
  60. package/dist/config/paths.d.ts +11 -0
  61. package/dist/config/paths.js +18 -0
  62. package/dist/config/paths.js.map +1 -0
  63. package/dist/config/types.d.ts +246 -0
  64. package/dist/config/types.js +155 -0
  65. package/dist/config/types.js.map +1 -0
  66. package/dist/gateway/channels/cli.d.ts +37 -0
  67. package/dist/gateway/channels/cli.js +298 -0
  68. package/dist/gateway/channels/cli.js.map +1 -0
  69. package/dist/gateway/channels/discord.d.ts +18 -0
  70. package/dist/gateway/channels/discord.js +419 -0
  71. package/dist/gateway/channels/discord.js.map +1 -0
  72. package/dist/gateway/channels/slack.d.ts +26 -0
  73. package/dist/gateway/channels/slack.js +470 -0
  74. package/dist/gateway/channels/slack.js.map +1 -0
  75. package/dist/gateway/channels/webhook.d.ts +18 -0
  76. package/dist/gateway/channels/webhook.js +49 -0
  77. package/dist/gateway/channels/webhook.js.map +1 -0
  78. package/dist/gateway/http.d.ts +33 -0
  79. package/dist/gateway/http.js +605 -0
  80. package/dist/gateway/http.js.map +1 -0
  81. package/dist/gateway/server.d.ts +38 -0
  82. package/dist/gateway/server.js +233 -0
  83. package/dist/gateway/server.js.map +1 -0
  84. package/dist/gateway/types.d.ts +28 -0
  85. package/dist/gateway/types.js +2 -0
  86. package/dist/gateway/types.js.map +1 -0
  87. package/dist/index.d.ts +17 -0
  88. package/dist/index.js +32 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/memory/memoryManager.d.ts +22 -0
  91. package/dist/memory/memoryManager.js +200 -0
  92. package/dist/memory/memoryManager.js.map +1 -0
  93. package/dist/memory/storage.d.ts +24 -0
  94. package/dist/memory/storage.js +187 -0
  95. package/dist/memory/storage.js.map +1 -0
  96. package/dist/memory/types.d.ts +43 -0
  97. package/dist/memory/types.js +2 -0
  98. package/dist/memory/types.js.map +1 -0
  99. package/dist/plugins/manifest.d.ts +23 -0
  100. package/dist/plugins/manifest.js +185 -0
  101. package/dist/plugins/manifest.js.map +1 -0
  102. package/dist/plugins/mcp/mcpBridge.d.ts +31 -0
  103. package/dist/plugins/mcp/mcpBridge.js +115 -0
  104. package/dist/plugins/mcp/mcpBridge.js.map +1 -0
  105. package/dist/plugins/mcp/mcpClient.d.ts +43 -0
  106. package/dist/plugins/mcp/mcpClient.js +309 -0
  107. package/dist/plugins/mcp/mcpClient.js.map +1 -0
  108. package/dist/plugins/mcp/mcpConfig.d.ts +34 -0
  109. package/dist/plugins/mcp/mcpConfig.js +326 -0
  110. package/dist/plugins/mcp/mcpConfig.js.map +1 -0
  111. package/dist/plugins/mcp/types.d.ts +48 -0
  112. package/dist/plugins/mcp/types.js +2 -0
  113. package/dist/plugins/mcp/types.js.map +1 -0
  114. package/dist/plugins/pluginManager.d.ts +164 -0
  115. package/dist/plugins/pluginManager.js +1016 -0
  116. package/dist/plugins/pluginManager.js.map +1 -0
  117. package/dist/plugins/skills/frontmatterParser.d.ts +28 -0
  118. package/dist/plugins/skills/frontmatterParser.js +189 -0
  119. package/dist/plugins/skills/frontmatterParser.js.map +1 -0
  120. package/dist/plugins/skills/skillDiscovery.d.ts +15 -0
  121. package/dist/plugins/skills/skillDiscovery.js +148 -0
  122. package/dist/plugins/skills/skillDiscovery.js.map +1 -0
  123. package/dist/plugins/skills/skillTools.d.ts +8 -0
  124. package/dist/plugins/skills/skillTools.js +195 -0
  125. package/dist/plugins/skills/skillTools.js.map +1 -0
  126. package/dist/plugins/skills/types.d.ts +25 -0
  127. package/dist/plugins/skills/types.js +2 -0
  128. package/dist/plugins/skills/types.js.map +1 -0
  129. package/dist/plugins/types.d.ts +30 -0
  130. package/dist/plugins/types.js +2 -0
  131. package/dist/plugins/types.js.map +1 -0
  132. package/dist/scheduler/scheduler.d.ts +25 -0
  133. package/dist/scheduler/scheduler.js +239 -0
  134. package/dist/scheduler/scheduler.js.map +1 -0
  135. package/dist/scheduler/types.d.ts +39 -0
  136. package/dist/scheduler/types.js +2 -0
  137. package/dist/scheduler/types.js.map +1 -0
  138. package/dist/security/childProcessEnv.d.ts +5 -0
  139. package/dist/security/childProcessEnv.js +42 -0
  140. package/dist/security/childProcessEnv.js.map +1 -0
  141. package/dist/security/fileSandbox.d.ts +153 -0
  142. package/dist/security/fileSandbox.js +779 -0
  143. package/dist/security/fileSandbox.js.map +1 -0
  144. package/dist/service/index.d.ts +30 -0
  145. package/dist/service/index.js +41 -0
  146. package/dist/service/index.js.map +1 -0
  147. package/dist/service/systemd.d.ts +36 -0
  148. package/dist/service/systemd.js +409 -0
  149. package/dist/service/systemd.js.map +1 -0
  150. package/dist/service/types.d.ts +118 -0
  151. package/dist/service/types.js +6 -0
  152. package/dist/service/types.js.map +1 -0
  153. package/dist/tools/builtin/calcTools.d.ts +2 -0
  154. package/dist/tools/builtin/calcTools.js +51 -0
  155. package/dist/tools/builtin/calcTools.js.map +1 -0
  156. package/dist/tools/builtin/fileTools.d.ts +11 -0
  157. package/dist/tools/builtin/fileTools.js +352 -0
  158. package/dist/tools/builtin/fileTools.js.map +1 -0
  159. package/dist/tools/builtin/memoryTools.d.ts +4 -0
  160. package/dist/tools/builtin/memoryTools.js +123 -0
  161. package/dist/tools/builtin/memoryTools.js.map +1 -0
  162. package/dist/tools/builtin/noteTools.d.ts +4 -0
  163. package/dist/tools/builtin/noteTools.js +91 -0
  164. package/dist/tools/builtin/noteTools.js.map +1 -0
  165. package/dist/tools/builtin/pluginTools.d.ts +29 -0
  166. package/dist/tools/builtin/pluginTools.js +406 -0
  167. package/dist/tools/builtin/pluginTools.js.map +1 -0
  168. package/dist/tools/builtin/scheduleTools.d.ts +4 -0
  169. package/dist/tools/builtin/scheduleTools.js +156 -0
  170. package/dist/tools/builtin/scheduleTools.js.map +1 -0
  171. package/dist/tools/builtin/timeTools.d.ts +2 -0
  172. package/dist/tools/builtin/timeTools.js +41 -0
  173. package/dist/tools/builtin/timeTools.js.map +1 -0
  174. package/dist/tools/builtin/webTools.d.ts +12 -0
  175. package/dist/tools/builtin/webTools.js +325 -0
  176. package/dist/tools/builtin/webTools.js.map +1 -0
  177. package/dist/tools/registry.d.ts +15 -0
  178. package/dist/tools/registry.js +111 -0
  179. package/dist/tools/registry.js.map +1 -0
  180. package/dist/tools/types.d.ts +41 -0
  181. package/dist/tools/types.js +2 -0
  182. package/dist/tools/types.js.map +1 -0
  183. package/dist/utils/logger.d.ts +29 -0
  184. package/dist/utils/logger.js +124 -0
  185. package/dist/utils/logger.js.map +1 -0
  186. package/dist/wizard/onboarding.d.ts +3 -0
  187. package/dist/wizard/onboarding.js +408 -0
  188. package/dist/wizard/onboarding.js.map +1 -0
  189. package/package.json +69 -0
  190. package/plugins/example-calc/mcp.json +11 -0
  191. package/plugins/example-calc/plugin.json +12 -0
  192. package/plugins/example-calc/server.mjs +92 -0
  193. package/plugins/example-calc/skills/math-assistant/SKILL.md +15 -0
  194. package/plugins/plugin-builder/plugin.json +12 -0
  195. package/plugins/plugin-builder/skills/create-plugin/SKILL.md +149 -0
  196. 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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAS9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAW,GAAG,SAAS,EACvB,IAAI,GAAuB,MAAM;IAEjC,MAAM,IAAI,GAAG,GAAG,WAAW,UAAU,CAAC;IACtC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,yBAAyB,IAAI,EAAE;YACvC,IAAI,EAAE,sBAAsB,IAAI,KAAK;YACrC,KAAK,EAAE,wBAAwB,IAAI,EAAE;YACrC,IAAI,EAAE,uBAAuB,IAAI,EAAE;YACnC,OAAO,EAAE,0BAA0B,IAAI,EAAE;YACzC,MAAM,EAAE,yBAAyB,IAAI,EAAE;YACvC,OAAO,EAAE,0BAA0B,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,OAAO;QACL,MAAM,EAAE,2BAA2B,IAAI,EAAE;QACzC,IAAI,EAAE,wBAAwB,IAAI,KAAK;QACvC,KAAK,EAAE,0BAA0B,IAAI,EAAE;QACvC,IAAI,EAAE,yBAAyB,IAAI,EAAE;QACrC,OAAO,EAAE,4BAA4B,IAAI,EAAE;QAC3C,MAAM,EAAE,2BAA2B,IAAI,EAAE;QACzC,OAAO,EAAE,4BAA4B,IAAI,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAI,GAAuB,MAAM,EACjC,WAAW,GAAG,SAAS,EACvB,UAAmB;IAEnB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,uBAAuB,WAAW,UAAU,CAAC;IACtD,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,WAAW,UAAU,CAAC,CAAC;IAC/D,CAAC;IAED,6DAA6D;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,UAAU,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAO,GAA0B,EAAE;IAC/E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IACrD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,uCAAuC,CAAC;IACnF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAE5C,mFAAmF;IACnF,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB;IACpB,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,iEAAiE;YACjE,QAAQ,GAAG,eAAe,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAExC,qBAAqB;IACrB,IAAI,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACrG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,KAAK,GAAG,GAAG,UAAU,gBAAgB,CAAC;QACxC,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,KAAK,GAAG,GAAG,UAAU,eAAe,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,GAAG,UAAU,gBAAgB,CAAC;QACxC,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAElD,4BAA4B;IAC5B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,kCAAkC;IAClC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,sCAAsC;IACtC,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAEnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtC,wBAAwB;IACxB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAEnD,4BAA4B;IAC5B,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI;QAC9C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;QAClB,CAAC,CAAC,8DAA8D,CAAC;IACrE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,WAAW,GAAG,CAAC,CAAC;IAEnD,+BAA+B;IAC/B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QACrC,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;YACxC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YAC5C,CAAC,CAAC,GAAG,UAAU,OAAO,CAAC;QAC3B,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,iEAAiE;IACjE,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChG,IAAI,SAAS,EAAE,CAAC;YACd,cAAc,CAAC,IAAI,CAAC,QAAQ,SAAS,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,cAAc,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAEnF,MAAM,QAAQ,GAAG;QACf,QAAQ;QACR,eAAe,WAAW,EAAE;QAC5B,kDAAkD;QAClD,4CAA4C;QAC5C,6BAA6B;QAC7B,EAAE;QACF,WAAW;QACX,aAAa;QACb,oBAAoB,UAAU,EAAE;QAChC,aAAa,SAAS,EAAE;QACxB,gBAAgB;QAChB,cAAc,UAAU,EAAE;QAC1B,wBAAwB;QACxB,uBAAuB;QACvB,oBAAoB,WAAW,EAAE;QACjC,GAAG,QAAQ;QACX,GAAG,iBAAiB;QACpB,GAAG,cAAc;QACjB,EAAE;QACF,WAAW;QACX,YAAY,QAAQ,EAAE;QACtB,EAAE;KACH,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAA0B,EAAE;IAIzE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IACrD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;IAClD,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAExF,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,kCAAkC,WAAW,EAAE,CAAC,CAAC;IAE7D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAO,GAA0B,EAAE,EACnC,cAAc,GAAG,KAAK;IAEtB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IACrD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAElE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAA2B,CAAC;QAEhC,2FAA2F;QAC3F,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAG,WAAW,KAAK,MAAM,CAAC;YACtC,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAC9F,MAAM,YAAY,GAAG,MAAM;gBACzB,CAAC,CAAC,iCAAiC,WAAW,UAAU;gBACxD,CAAC,CAAC,0BAA0B,WAAW,UAAU,CAAC;YAEpD,IAAI,CAAC;gBACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,GAAG,4DAA4D,GAAG,CAAC,OAAO,EAAE,CAAC;YACtF,CAAC;YAED,IAAI,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,QAAQ,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC1C,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,GAAG,qDAAqD,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAClE,OAAO,GAAG,+DAA+D,OAAO,CAAC,QAAQ,oCAAoC,CAAC;QAChI,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW;YACX,WAAW;YACX,WAAW;YACX,OAAO;YACP,OAAO;YACP,OAAO;YACP,QAAQ;YACR,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACxD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC;YAChF,WAAW;YACX,WAAW;YACX,OAAO,EAAE,EAAE;YACX,QAAQ;YACR,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAAW,GAAG,SAAS,EACvB,IAAI,GAAuB,MAAM,EACjC,UAAmB;IAEnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAE7C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,WAAW;YACX,WAAW,EAAE,IAAI;YACjB,WAAW;YACX,QAAQ;YACR,UAAU,EAAE,eAAe;SAC5B,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;QAC/B,MAAM,cAAc,GAAG,MAAM;YAC3B,CAAC,CAAC,8BAA8B,WAAW,UAAU;YACrD,CAAC,CAAC,uBAAuB,WAAW,UAAU,CAAC;QACjD,MAAM,eAAe,GAAG,MAAM;YAC5B,CAAC,CAAC,+BAA+B,WAAW,UAAU;YACtD,CAAC,CAAC,wBAAwB,WAAW,UAAU,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChF,MAAM,GAAG,SAAS,KAAK,QAAQ,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAClF,OAAO,GAAG,UAAU,KAAK,SAAS,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM;gBACtB,CAAC,CAAC,2BAA2B,WAAW,0BAA0B;gBAClE,CAAC,CAAC,oBAAoB,WAAW,0BAA0B,CAAC;YAC9D,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,WAAW;QACX,WAAW,EAAE,IAAI;QACjB,WAAW;QACX,MAAM;QACN,OAAO;QACP,MAAM;QACN,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB;QAC9D,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAW,GAAG,SAAS,EACvB,IAAI,GAAuB,MAAM,EACjC,UAAmB;IAEnB,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW;YACX,WAAW,EAAE,IAAI;YACjB,WAAW;YACX,OAAO,EAAE,6BAA6B,WAAW,0BAA0B;SAC5E,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM;gBACpB,CAAC,CAAC,yBAAyB,WAAW,UAAU;gBAChD,CAAC,CAAC,kBAAkB,WAAW,UAAU,CAAC;YAC5C,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACrC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM;gBACvB,CAAC,CAAC,4BAA4B,WAAW,UAAU;gBACnD,CAAC,CAAC,qBAAqB,WAAW,UAAU,CAAC;YAC/C,QAAQ,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACxC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,yBAAyB,CAAC;YACjG,IAAI,CAAC;gBACH,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW;YACX,WAAW,EAAE,IAAI;YACjB,WAAW;YACX,UAAU;YACV,UAAU;YACV,OAAO,EAAE,6CAA6C,WAAW,YAAY;SAC9E,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW;YACX,WAAW,EAAE,IAAI;YACjB,WAAW;YACX,OAAO,EAAE,kCAAkC,WAAW,MAAM,GAAG,CAAC,OAAO,EAAE;YACzE,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB,CAAC;IACJ,CAAC;AACH,CAAC"}