@ai-support-agent/cli 0.0.5-beta.5 → 0.0.6

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 (207) hide show
  1. package/dist/agent-config-sync.d.ts +49 -0
  2. package/dist/agent-config-sync.d.ts.map +1 -0
  3. package/dist/agent-config-sync.js +168 -0
  4. package/dist/agent-config-sync.js.map +1 -0
  5. package/dist/agent-runner.d.ts +11 -3
  6. package/dist/agent-runner.d.ts.map +1 -1
  7. package/dist/agent-runner.js +48 -24
  8. package/dist/agent-runner.js.map +1 -1
  9. package/dist/agent-transport.d.ts +59 -0
  10. package/dist/agent-transport.d.ts.map +1 -0
  11. package/dist/agent-transport.js +225 -0
  12. package/dist/agent-transport.js.map +1 -0
  13. package/dist/api-client.d.ts +2 -1
  14. package/dist/api-client.d.ts.map +1 -1
  15. package/dist/api-client.js +4 -0
  16. package/dist/api-client.js.map +1 -1
  17. package/dist/appsync-subscriber.d.ts +15 -9
  18. package/dist/appsync-subscriber.d.ts.map +1 -1
  19. package/dist/appsync-subscriber.js +50 -111
  20. package/dist/appsync-subscriber.js.map +1 -1
  21. package/dist/aws-profile.d.ts.map +1 -1
  22. package/dist/aws-profile.js +3 -6
  23. package/dist/aws-profile.js.map +1 -1
  24. package/dist/base-websocket.d.ts +40 -0
  25. package/dist/base-websocket.d.ts.map +1 -0
  26. package/dist/base-websocket.js +95 -0
  27. package/dist/base-websocket.js.map +1 -0
  28. package/dist/child-process-manager.d.ts +20 -0
  29. package/dist/child-process-manager.d.ts.map +1 -0
  30. package/dist/child-process-manager.js +125 -0
  31. package/dist/child-process-manager.js.map +1 -0
  32. package/dist/commands/api-chat-executor.d.ts +10 -1
  33. package/dist/commands/api-chat-executor.d.ts.map +1 -1
  34. package/dist/commands/api-chat-executor.js +83 -58
  35. package/dist/commands/api-chat-executor.js.map +1 -1
  36. package/dist/commands/chat-executor.d.ts +13 -2
  37. package/dist/commands/chat-executor.d.ts.map +1 -1
  38. package/dist/commands/chat-executor.js +66 -16
  39. package/dist/commands/chat-executor.js.map +1 -1
  40. package/dist/commands/claude-code-args.d.ts +12 -0
  41. package/dist/commands/claude-code-args.d.ts.map +1 -0
  42. package/dist/commands/claude-code-args.js +78 -0
  43. package/dist/commands/claude-code-args.js.map +1 -0
  44. package/dist/commands/claude-code-runner.d.ts +17 -36
  45. package/dist/commands/claude-code-runner.d.ts.map +1 -1
  46. package/dist/commands/claude-code-runner.js +49 -221
  47. package/dist/commands/claude-code-runner.js.map +1 -1
  48. package/dist/commands/claude-code-stream.d.ts +63 -0
  49. package/dist/commands/claude-code-stream.d.ts.map +1 -0
  50. package/dist/commands/claude-code-stream.js +179 -0
  51. package/dist/commands/claude-code-stream.js.map +1 -0
  52. package/dist/commands/file-executor.d.ts +1 -1
  53. package/dist/commands/file-executor.d.ts.map +1 -1
  54. package/dist/commands/file-executor.js +59 -70
  55. package/dist/commands/file-executor.js.map +1 -1
  56. package/dist/commands/file-path-guard.d.ts +9 -0
  57. package/dist/commands/file-path-guard.d.ts.map +1 -0
  58. package/dist/commands/file-path-guard.js +15 -0
  59. package/dist/commands/file-path-guard.js.map +1 -0
  60. package/dist/commands/file-transfer.d.ts +5 -0
  61. package/dist/commands/file-transfer.d.ts.map +1 -1
  62. package/dist/commands/file-transfer.js +16 -39
  63. package/dist/commands/file-transfer.js.map +1 -1
  64. package/dist/commands/index.d.ts +1 -1
  65. package/dist/commands/index.d.ts.map +1 -1
  66. package/dist/commands/index.js +18 -7
  67. package/dist/commands/index.js.map +1 -1
  68. package/dist/commands/process-executor.d.ts +1 -1
  69. package/dist/commands/process-executor.d.ts.map +1 -1
  70. package/dist/commands/process-executor.js +24 -6
  71. package/dist/commands/process-executor.js.map +1 -1
  72. package/dist/commands/process-manager.d.ts +22 -0
  73. package/dist/commands/process-manager.d.ts.map +1 -0
  74. package/dist/commands/process-manager.js +36 -0
  75. package/dist/commands/process-manager.js.map +1 -0
  76. package/dist/commands/shared-chat-utils.d.ts +10 -1
  77. package/dist/commands/shared-chat-utils.d.ts.map +1 -1
  78. package/dist/commands/shared-chat-utils.js +18 -0
  79. package/dist/commands/shared-chat-utils.js.map +1 -1
  80. package/dist/commands/shell-executor.d.ts +1 -1
  81. package/dist/commands/shell-executor.d.ts.map +1 -1
  82. package/dist/commands/shell-executor.js +9 -12
  83. package/dist/commands/shell-executor.js.map +1 -1
  84. package/dist/config-manager.d.ts.map +1 -1
  85. package/dist/config-manager.js +2 -3
  86. package/dist/config-manager.js.map +1 -1
  87. package/dist/constants.d.ts +21 -0
  88. package/dist/constants.d.ts.map +1 -1
  89. package/dist/constants.js +26 -1
  90. package/dist/constants.js.map +1 -1
  91. package/dist/docker/docker-runner.d.ts.map +1 -1
  92. package/dist/docker/docker-runner.js +5 -3
  93. package/dist/docker/docker-runner.js.map +1 -1
  94. package/dist/ipc-types.d.ts +36 -0
  95. package/dist/ipc-types.d.ts.map +1 -0
  96. package/dist/ipc-types.js +34 -0
  97. package/dist/ipc-types.js.map +1 -0
  98. package/dist/mcp/config-writer.d.ts +5 -1
  99. package/dist/mcp/config-writer.d.ts.map +1 -1
  100. package/dist/mcp/config-writer.js +14 -1
  101. package/dist/mcp/config-writer.js.map +1 -1
  102. package/dist/mcp/server.d.ts.map +1 -1
  103. package/dist/mcp/server.js +2 -0
  104. package/dist/mcp/server.js.map +1 -1
  105. package/dist/mcp/tools/credentials.d.ts.map +1 -1
  106. package/dist/mcp/tools/credentials.js +36 -9
  107. package/dist/mcp/tools/credentials.js.map +1 -1
  108. package/dist/mcp/tools/db-query.d.ts.map +1 -1
  109. package/dist/mcp/tools/db-query.js +13 -18
  110. package/dist/mcp/tools/db-query.js.map +1 -1
  111. package/dist/mcp/tools/db-schemas.d.ts.map +1 -1
  112. package/dist/mcp/tools/db-schemas.js +8 -13
  113. package/dist/mcp/tools/db-schemas.js.map +1 -1
  114. package/dist/mcp/tools/file-upload.d.ts.map +1 -1
  115. package/dist/mcp/tools/file-upload.js +12 -17
  116. package/dist/mcp/tools/file-upload.js.map +1 -1
  117. package/dist/mcp/tools/mcp-response.d.ts +29 -1
  118. package/dist/mcp/tools/mcp-response.d.ts.map +1 -1
  119. package/dist/mcp/tools/mcp-response.js +51 -3
  120. package/dist/mcp/tools/mcp-response.js.map +1 -1
  121. package/dist/mcp/tools/project-info.d.ts.map +1 -1
  122. package/dist/mcp/tools/project-info.js +28 -33
  123. package/dist/mcp/tools/project-info.js.map +1 -1
  124. package/dist/mcp/tools/read-conversation-file.d.ts +4 -0
  125. package/dist/mcp/tools/read-conversation-file.d.ts.map +1 -0
  126. package/dist/mcp/tools/read-conversation-file.js +92 -0
  127. package/dist/mcp/tools/read-conversation-file.js.map +1 -0
  128. package/dist/process-manager.d.ts +2 -0
  129. package/dist/process-manager.d.ts.map +1 -0
  130. package/dist/process-manager.js +7 -0
  131. package/dist/process-manager.js.map +1 -0
  132. package/dist/project-agent.d.ts +5 -25
  133. package/dist/project-agent.d.ts.map +1 -1
  134. package/dist/project-agent.js +67 -313
  135. package/dist/project-agent.js.map +1 -1
  136. package/dist/project-config-sync.d.ts.map +1 -1
  137. package/dist/project-config-sync.js +9 -3
  138. package/dist/project-config-sync.js.map +1 -1
  139. package/dist/project-worker.d.ts +2 -0
  140. package/dist/project-worker.d.ts.map +1 -0
  141. package/dist/project-worker.js +85 -0
  142. package/dist/project-worker.js.map +1 -0
  143. package/dist/repo-sync.d.ts +23 -0
  144. package/dist/repo-sync.d.ts.map +1 -0
  145. package/dist/repo-sync.js +191 -0
  146. package/dist/repo-sync.js.map +1 -0
  147. package/dist/terminal/terminal-websocket.d.ts +8 -9
  148. package/dist/terminal/terminal-websocket.d.ts.map +1 -1
  149. package/dist/terminal/terminal-websocket.js +30 -87
  150. package/dist/terminal/terminal-websocket.js.map +1 -1
  151. package/dist/types/chat.d.ts +28 -0
  152. package/dist/types/chat.d.ts.map +1 -0
  153. package/dist/types/chat.js +3 -0
  154. package/dist/types/chat.js.map +1 -0
  155. package/dist/types/command.d.ts +100 -0
  156. package/dist/types/command.d.ts.map +1 -0
  157. package/dist/types/command.js +11 -0
  158. package/dist/types/command.js.map +1 -0
  159. package/dist/types/config.d.ts +44 -0
  160. package/dist/types/config.d.ts.map +1 -0
  161. package/dist/types/config.js +3 -0
  162. package/dist/types/config.js.map +1 -0
  163. package/dist/types/index.d.ts +6 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/index.js +22 -0
  166. package/dist/types/index.js.map +1 -0
  167. package/dist/types/project.d.ts +112 -0
  168. package/dist/types/project.d.ts.map +1 -0
  169. package/dist/types/project.js +3 -0
  170. package/dist/types/project.js.map +1 -0
  171. package/dist/types/server.d.ts +58 -0
  172. package/dist/types/server.d.ts.map +1 -0
  173. package/dist/types/server.js +3 -0
  174. package/dist/types/server.js.map +1 -0
  175. package/dist/types.d.ts +1 -295
  176. package/dist/types.d.ts.map +1 -1
  177. package/dist/types.js +15 -0
  178. package/dist/types.js.map +1 -1
  179. package/dist/utils/activity-timeout.d.ts +19 -0
  180. package/dist/utils/activity-timeout.d.ts.map +1 -0
  181. package/dist/utils/activity-timeout.js +28 -0
  182. package/dist/utils/activity-timeout.js.map +1 -0
  183. package/dist/utils/claude-config-validator.d.ts +16 -0
  184. package/dist/utils/claude-config-validator.d.ts.map +1 -0
  185. package/dist/utils/claude-config-validator.js +94 -0
  186. package/dist/utils/claude-config-validator.js.map +1 -0
  187. package/dist/utils/content-type.d.ts +10 -0
  188. package/dist/utils/content-type.d.ts.map +1 -0
  189. package/dist/utils/content-type.js +120 -0
  190. package/dist/utils/content-type.js.map +1 -0
  191. package/dist/utils/json-parse.d.ts +5 -0
  192. package/dist/utils/json-parse.d.ts.map +1 -0
  193. package/dist/utils/json-parse.js +15 -0
  194. package/dist/utils/json-parse.js.map +1 -0
  195. package/dist/utils/stream-parser.d.ts +14 -0
  196. package/dist/utils/stream-parser.d.ts.map +1 -0
  197. package/dist/utils/stream-parser.js +31 -0
  198. package/dist/utils/stream-parser.js.map +1 -0
  199. package/dist/utils.d.ts +1 -0
  200. package/dist/utils.d.ts.map +1 -1
  201. package/dist/utils.js +40 -0
  202. package/dist/utils.js.map +1 -1
  203. package/dist/ws-reconnect.d.ts +12 -0
  204. package/dist/ws-reconnect.d.ts.map +1 -0
  205. package/dist/ws-reconnect.js +32 -0
  206. package/dist/ws-reconnect.js.map +1 -0
  207. package/package.json +2 -2
@@ -0,0 +1,49 @@
1
+ import type { ApiClient } from './api-client';
2
+ import type { AgentChatMode, AgentServerConfig, ProjectConfigResponse } from './types';
3
+ export interface ConfigSyncState {
4
+ currentConfigHash: string | undefined;
5
+ projectConfig: ProjectConfigResponse | undefined;
6
+ serverConfig: AgentServerConfig | null;
7
+ availableChatModes: AgentChatMode[];
8
+ activeChatMode: AgentChatMode | undefined;
9
+ mcpConfigPath: string | undefined;
10
+ }
11
+ export interface ConfigSyncDeps {
12
+ client: ApiClient;
13
+ prefix: string;
14
+ projectDir: string | undefined;
15
+ apiUrl: string;
16
+ token: string;
17
+ projectCode: string;
18
+ localAgentChatMode: AgentChatMode | undefined;
19
+ }
20
+ /**
21
+ * Perform config sync from server and update state.
22
+ * Returns true if config was updated.
23
+ */
24
+ export declare function performConfigSync(deps: ConfigSyncDeps, state: ConfigSyncState): Promise<boolean>;
25
+ /**
26
+ * Perform full setup: config sync + repository sync + documentation check.
27
+ */
28
+ export declare function performSetup(deps: ConfigSyncDeps, state: ConfigSyncState): Promise<void>;
29
+ /**
30
+ * Apply project config to state (update serverConfig, write AWS/MCP config files).
31
+ */
32
+ export declare function applyProjectConfig(deps: ConfigSyncDeps, state: ConfigSyncState, config: ProjectConfigResponse): void;
33
+ /**
34
+ * Schedule a debounced config sync.
35
+ * Returns the new timer handle (caller should store it and clear on stop).
36
+ */
37
+ export declare function scheduleConfigSync(deps: ConfigSyncDeps, state: ConfigSyncState, existingTimer: ReturnType<typeof setTimeout> | null): ReturnType<typeof setTimeout>;
38
+ /**
39
+ * Refresh available chat modes and server config.
40
+ */
41
+ export declare function refreshChatMode(deps: ConfigSyncDeps, state: ConfigSyncState, verbose: boolean): Promise<void>;
42
+ /**
43
+ * MCP server script path resolution.
44
+ *
45
+ * When running with ts-node/tsx, __dirname points to src/ where server.js does not exist.
46
+ * In that case, fall back to dist/mcp/server.js.
47
+ */
48
+ export declare function resolveMcpServerPath(): string;
49
+ //# sourceMappingURL=agent-config-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config-sync.d.ts","sourceRoot":"","sources":["../src/agent-config-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ7C,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGtF,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,aAAa,EAAE,qBAAqB,GAAG,SAAS,CAAA;IAChD,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACtC,kBAAkB,EAAE,aAAa,EAAE,CAAA;IACnC,cAAc,EAAE,aAAa,GAAG,SAAS,CAAA;IACzC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,aAAa,GAAG,SAAS,CAAA;CAC9C;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,qBAAqB,GAC5B,IAAI,CA4DN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,GAClD,UAAU,CAAC,OAAO,UAAU,CAAC,CAO/B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAU7C"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.performConfigSync = performConfigSync;
4
+ exports.performSetup = performSetup;
5
+ exports.applyProjectConfig = applyProjectConfig;
6
+ exports.scheduleConfigSync = scheduleConfigSync;
7
+ exports.refreshChatMode = refreshChatMode;
8
+ exports.resolveMcpServerPath = resolveMcpServerPath;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const chat_mode_detector_1 = require("./chat-mode-detector");
12
+ const constants_1 = require("./constants");
13
+ const logger_1 = require("./logger");
14
+ const aws_profile_1 = require("./aws-profile");
15
+ const config_writer_1 = require("./mcp/config-writer");
16
+ const project_config_sync_1 = require("./project-config-sync");
17
+ const repo_sync_1 = require("./repo-sync");
18
+ const utils_1 = require("./utils");
19
+ /**
20
+ * Perform config sync from server and update state.
21
+ * Returns true if config was updated.
22
+ */
23
+ async function performConfigSync(deps, state) {
24
+ const config = await (0, project_config_sync_1.syncProjectConfig)(deps.client, state.currentConfigHash, deps.projectDir, deps.prefix);
25
+ if (config) {
26
+ applyProjectConfig(deps, state, config);
27
+ return true;
28
+ }
29
+ return false;
30
+ }
31
+ /**
32
+ * Perform full setup: config sync + repository sync + documentation check.
33
+ */
34
+ async function performSetup(deps, state) {
35
+ logger_1.logger.info(`${deps.prefix} Starting setup...`);
36
+ // 1. Config sync
37
+ await performConfigSync(deps, state);
38
+ // 2. Clone/update repositories
39
+ if (deps.projectDir && state.projectConfig?.repositories?.length) {
40
+ try {
41
+ const reposDir = (0, path_1.join)(deps.projectDir, 'repos');
42
+ const results = await (0, repo_sync_1.syncRepositories)(deps.client, state.projectConfig.repositories, reposDir, deps.prefix);
43
+ const cloned = results.filter(r => r.status === 'cloned').length;
44
+ const updated = results.filter(r => r.status === 'updated').length;
45
+ const skipped = results.filter(r => r.status === 'skipped').length;
46
+ logger_1.logger.info(`${deps.prefix} Repository sync: ${cloned} cloned, ${updated} updated, ${skipped} skipped`);
47
+ }
48
+ catch (error) {
49
+ logger_1.logger.warn(`${deps.prefix} Repository sync failed: ${(0, utils_1.getErrorMessage)(error)}`);
50
+ }
51
+ }
52
+ // 3. Download documentation
53
+ if (state.projectConfig?.documentation?.sources) {
54
+ logger_1.logger.info(`${deps.prefix} Documentation sources found: ${state.projectConfig.documentation.sources.length}`);
55
+ // Documentation download will be implemented in a future phase
56
+ }
57
+ logger_1.logger.info(`${deps.prefix} Setup completed`);
58
+ }
59
+ /**
60
+ * Apply project config to state (update serverConfig, write AWS/MCP config files).
61
+ */
62
+ function applyProjectConfig(deps, state, config) {
63
+ state.currentConfigHash = config.configHash;
64
+ state.projectConfig = config;
65
+ // Update serverConfig from project config
66
+ state.serverConfig = {
67
+ agentEnabled: config.agent.agentEnabled,
68
+ builtinAgentEnabled: config.agent.builtinAgentEnabled,
69
+ builtinFallbackEnabled: config.agent.builtinFallbackEnabled,
70
+ externalAgentEnabled: config.agent.externalAgentEnabled,
71
+ chatMode: 'agent',
72
+ claudeCodeConfig: {
73
+ allowedTools: config.agent.allowedTools,
74
+ addDirs: config.agent.claudeCodeConfig?.additionalDirs,
75
+ systemPrompt: config.agent.claudeCodeConfig?.appendSystemPrompt,
76
+ },
77
+ };
78
+ // Write AWS config file if project directory and AWS accounts are configured
79
+ if (deps.projectDir && config.aws?.accounts?.length) {
80
+ try {
81
+ (0, aws_profile_1.writeAwsConfig)(deps.projectDir, config.project.projectCode, config.aws.accounts);
82
+ }
83
+ catch (error) {
84
+ logger_1.logger.warn(`${deps.prefix} Failed to write AWS config: ${(0, utils_1.getErrorMessage)(error)}`);
85
+ }
86
+ }
87
+ // Log database configuration
88
+ if (config.databases?.length) {
89
+ logger_1.logger.info(`${deps.prefix} Databases configured: ${config.databases.map(db => `${db.name}(${db.engine})`).join(', ')}`);
90
+ }
91
+ // Log repository configuration
92
+ if (config.repositories?.length) {
93
+ logger_1.logger.info(`${deps.prefix} Repositories configured: ${config.repositories.map(r => `${r.repositoryName}(${r.provider})`).join(', ')}`);
94
+ }
95
+ // Write MCP config file if project directory is available
96
+ if (deps.projectDir) {
97
+ try {
98
+ const mcpServerPath = resolveMcpServerPath();
99
+ const backlogConfigs = config.backlog?.items?.map((item) => ({
100
+ domain: item.domain,
101
+ apiKey: item.apiKey,
102
+ }));
103
+ state.mcpConfigPath = (0, config_writer_1.writeMcpConfig)(deps.projectDir, deps.apiUrl, deps.token, deps.projectCode, mcpServerPath, backlogConfigs);
104
+ logger_1.logger.info(`${deps.prefix} MCP config written: ${state.mcpConfigPath}`);
105
+ }
106
+ catch (error) {
107
+ logger_1.logger.warn(`${deps.prefix} Failed to write MCP config: ${(0, utils_1.getErrorMessage)(error)}`);
108
+ }
109
+ }
110
+ logger_1.logger.info(`${deps.prefix} Config applied (hash: ${config.configHash})`);
111
+ }
112
+ /**
113
+ * Schedule a debounced config sync.
114
+ * Returns the new timer handle (caller should store it and clear on stop).
115
+ */
116
+ function scheduleConfigSync(deps, state, existingTimer) {
117
+ if (existingTimer) {
118
+ clearTimeout(existingTimer);
119
+ }
120
+ return setTimeout(() => {
121
+ void performConfigSync(deps, state);
122
+ }, constants_1.CONFIG_SYNC_DEBOUNCE_MS);
123
+ }
124
+ /**
125
+ * Refresh available chat modes and server config.
126
+ */
127
+ async function refreshChatMode(deps, state, verbose) {
128
+ state.availableChatModes = await (0, chat_mode_detector_1.detectAvailableChatModes)();
129
+ if (verbose) {
130
+ logger_1.logger.info(`${deps.prefix} Available chat modes: ${JSON.stringify(state.availableChatModes)}`);
131
+ }
132
+ try {
133
+ state.serverConfig = await deps.client.getConfig();
134
+ if (verbose) {
135
+ logger_1.logger.info(`${deps.prefix} Server config loaded: chatMode=${state.serverConfig.chatMode}`);
136
+ if (state.serverConfig.claudeCodeConfig) {
137
+ logger_1.logger.debug(`${deps.prefix} claudeCodeConfig: allowedTools=[${state.serverConfig.claudeCodeConfig.allowedTools?.join(', ') ?? ''}], addDirs=[${state.serverConfig.claudeCodeConfig.addDirs?.join(', ') ?? ''}]`);
138
+ }
139
+ }
140
+ }
141
+ catch (error) {
142
+ if (verbose) {
143
+ logger_1.logger.warn(`${deps.prefix} Failed to load server config, using defaults: ${(0, utils_1.getErrorMessage)(error)}`);
144
+ }
145
+ }
146
+ state.activeChatMode = (0, chat_mode_detector_1.resolveActiveChatMode)(state.availableChatModes, deps.localAgentChatMode, state.serverConfig?.defaultAgentChatMode);
147
+ if (verbose) {
148
+ logger_1.logger.info(`${deps.prefix} Active chat mode: ${state.activeChatMode ?? 'none'}`);
149
+ }
150
+ }
151
+ /**
152
+ * MCP server script path resolution.
153
+ *
154
+ * When running with ts-node/tsx, __dirname points to src/ where server.js does not exist.
155
+ * In that case, fall back to dist/mcp/server.js.
156
+ */
157
+ function resolveMcpServerPath() {
158
+ const candidate = (0, path_1.join)(__dirname, 'mcp', 'server.js');
159
+ if ((0, fs_1.existsSync)(candidate))
160
+ return candidate;
161
+ // ts-node: src/ -> dist/
162
+ const distCandidate = (0, path_1.resolve)(__dirname, '..', 'dist', 'mcp', 'server.js');
163
+ if ((0, fs_1.existsSync)(distCandidate))
164
+ return distCandidate;
165
+ logger_1.logger.warn(`[mcp] MCP server script not found at ${candidate} or ${distCandidate}`);
166
+ return candidate;
167
+ }
168
+ //# sourceMappingURL=agent-config-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config-sync.js","sourceRoot":"","sources":["../src/agent-config-sync.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type AutoUpdaterHandle } from './auto-updater';
2
+ import { ChildProcessManager } from './child-process-manager';
2
3
  import type { AgentChatMode, AutoUpdateConfig, ProjectRegistration, ReleaseChannel } from './types';
3
4
  export interface RunnerOptions {
4
5
  token?: string;
@@ -18,9 +19,16 @@ export declare function startProjectAgent(project: ProjectRegistration, agentId:
18
19
  stop: () => void;
19
20
  client: import('./api-client').ApiClient;
20
21
  };
21
- export declare function setupShutdownHandlers(agents: {
22
- stop: () => void;
23
- }[], updater?: AutoUpdaterHandle): void;
22
+ export type ShutdownTarget = {
23
+ kind: 'agents';
24
+ agents: {
25
+ stop: () => void;
26
+ }[];
27
+ } | {
28
+ kind: 'processManager';
29
+ processManager: ChildProcessManager;
30
+ };
31
+ export declare function setupShutdownHandlers(target: ShutdownTarget, updater?: AutoUpdaterHandle): void;
24
32
  export declare function resolveAutoUpdateConfig(options: RunnerOptions, config?: {
25
33
  autoUpdate?: AutoUpdateConfig;
26
34
  } | null): AutoUpdateConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAQzE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAInG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GACA;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,cAAc,EAAE,SAAS,CAAA;CAAE,CAOhE;AAYD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,EAAE,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAcN;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,GAAG,gBAAgB,CAWnI;AAgCD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GtE"}
1
+ {"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAKzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAKnG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GACA;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,cAAc,EAAE,SAAS,CAAA;CAAE,CAOhE;AAYD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,EAAE,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,cAAc,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAEnE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAkBN;AAiCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,GAAG,gBAAgB,CAWnI;AAqBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GtE"}
@@ -43,11 +43,13 @@ const constants_1 = require("./constants");
43
43
  const config_manager_1 = require("./config-manager");
44
44
  const i18n_1 = require("./i18n");
45
45
  const logger_1 = require("./logger");
46
+ const child_process_manager_1 = require("./child-process-manager");
46
47
  const project_agent_1 = require("./project-agent");
47
48
  const sentry_1 = require("./sentry");
48
49
  const system_info_1 = require("./system-info");
49
50
  const update_checker_1 = require("./update-checker");
50
51
  const utils_1 = require("./utils");
52
+ const api_client_1 = require("./api-client");
51
53
  function startProjectAgent(project, agentId, options) {
52
54
  const agent = new project_agent_1.ProjectAgent(project, agentId, options, undefined, options.agentChatMode, options.defaultProjectDir);
53
55
  agent.start();
@@ -62,7 +64,7 @@ function resolveIntervals(options) {
62
64
  heartbeatInterval: options.heartbeatInterval ?? constants_1.DEFAULT_HEARTBEAT_INTERVAL,
63
65
  };
64
66
  }
65
- function setupShutdownHandlers(agents, updater) {
67
+ function setupShutdownHandlers(target, updater) {
66
68
  let shuttingDown = false;
67
69
  const shutdown = async () => {
68
70
  if (shuttingDown)
@@ -70,7 +72,12 @@ function setupShutdownHandlers(agents, updater) {
70
72
  shuttingDown = true;
71
73
  logger_1.logger.info((0, i18n_1.t)('runner.shuttingDown'));
72
74
  updater?.stop();
73
- agents.forEach((a) => a.stop());
75
+ if (target.kind === 'processManager') {
76
+ await target.processManager.stopAll();
77
+ }
78
+ else {
79
+ target.agents.forEach((a) => a.stop());
80
+ }
74
81
  await (0, sentry_1.flushSentry)();
75
82
  logger_1.logger.success((0, i18n_1.t)('runner.stopped'));
76
83
  process.exit(0);
@@ -78,6 +85,21 @@ function setupShutdownHandlers(agents, updater) {
78
85
  process.on('SIGINT', () => void shutdown());
79
86
  process.on('SIGTERM', () => void shutdown());
80
87
  }
88
+ function logMultiProjectStartup(projects, pollInterval, heartbeatInterval) {
89
+ logger_1.logger.info((0, i18n_1.t)('runner.startedMulti', { count: projects.length, pollInterval, heartbeatInterval }));
90
+ for (const p of projects) {
91
+ logger_1.logger.info(` - ${p.projectCode} (${p.apiUrl})`);
92
+ }
93
+ logger_1.logger.info((0, i18n_1.t)('runner.stopHint'));
94
+ }
95
+ function initAutoUpdater(options, config, client, agentId, stopAllAgents) {
96
+ const autoUpdateConfig = resolveAutoUpdateConfig(options, config);
97
+ if (!autoUpdateConfig.enabled)
98
+ return undefined;
99
+ return (0, auto_updater_1.startAutoUpdater)([client], autoUpdateConfig, stopAllAgents, (error) => {
100
+ void client.heartbeat(agentId, (0, system_info_1.getSystemInfo)(), error).catch(() => { });
101
+ });
102
+ }
81
103
  function resolveAutoUpdateConfig(options, config) {
82
104
  const detectedChannel = (0, update_checker_1.detectChannelFromVersion)(constants_1.AGENT_VERSION);
83
105
  return {
@@ -94,16 +116,10 @@ function runSingleProject(project, agentId, options, agentChatMode, defaultProje
94
116
  const { pollInterval, heartbeatInterval } = resolveIntervals(options);
95
117
  logger_1.logger.info((0, i18n_1.t)('runner.starting'));
96
118
  const agent = startProjectAgent(project, agentId, { pollInterval, heartbeatInterval, agentChatMode, defaultProjectDir });
97
- const autoUpdateConfig = resolveAutoUpdateConfig(options);
98
- let updater;
99
- if (autoUpdateConfig.enabled) {
100
- updater = (0, auto_updater_1.startAutoUpdater)([agent.client], autoUpdateConfig, () => agent.stop(), (error) => {
101
- void agent.client.heartbeat(agentId, (0, system_info_1.getSystemInfo)(), error).catch(() => { });
102
- });
103
- }
119
+ const updater = initAutoUpdater(options, undefined, agent.client, agentId, () => agent.stop());
104
120
  logger_1.logger.info((0, i18n_1.t)('runner.startedSingle', { pollInterval, heartbeatInterval }));
105
121
  logger_1.logger.info((0, i18n_1.t)('runner.stopHint'));
106
- setupShutdownHandlers([agent], updater);
122
+ setupShutdownHandlers({ kind: 'agents', agents: [agent] }, updater);
107
123
  }
108
124
  async function startAgent(options) {
109
125
  await (0, sentry_1.initSentry)();
@@ -171,21 +187,29 @@ async function startAgent(options) {
171
187
  const agentId = config.agentId ?? os.hostname();
172
188
  const { pollInterval, heartbeatInterval } = resolveIntervals(options);
173
189
  logger_1.logger.info((0, i18n_1.t)('runner.startingMulti', { count: projects.length }));
174
- const agents = projects.map((project) => startProjectAgent(project, agentId, { pollInterval, heartbeatInterval, agentChatMode: config.agentChatMode, defaultProjectDir: config.defaultProjectDir }));
175
- (0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
176
- const autoUpdateConfig = resolveAutoUpdateConfig(options, config);
177
- let updater;
178
- if (autoUpdateConfig.enabled) {
179
- const clients = agents.map((a) => a.client);
180
- updater = (0, auto_updater_1.startAutoUpdater)(clients, autoUpdateConfig, () => agents.forEach((a) => a.stop()), (error) => {
181
- void agents[0]?.client.heartbeat(agentId, (0, system_info_1.getSystemInfo)(), error).catch(() => { });
182
- });
190
+ if (projects.length === 1) {
191
+ // Single project: run in-process (no fork overhead)
192
+ const agent = startProjectAgent(projects[0], agentId, { pollInterval, heartbeatInterval, agentChatMode: config.agentChatMode, defaultProjectDir: config.defaultProjectDir });
193
+ (0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
194
+ const updater = initAutoUpdater(options, config, agent.client, agentId, () => agent.stop());
195
+ logMultiProjectStartup(projects, pollInterval, heartbeatInterval);
196
+ setupShutdownHandlers({ kind: 'agents', agents: [agent] }, updater);
197
+ return;
183
198
  }
184
- logger_1.logger.info((0, i18n_1.t)('runner.startedMulti', { count: projects.length, pollInterval, heartbeatInterval }));
185
- for (const p of projects) {
186
- logger_1.logger.info(` - ${p.projectCode} (${p.apiUrl})`);
199
+ // Multiple projects: fork child processes for isolation
200
+ const processManager = new child_process_manager_1.ChildProcessManager();
201
+ for (const project of projects) {
202
+ processManager.forkProject(project, agentId, {
203
+ pollInterval,
204
+ heartbeatInterval,
205
+ agentChatMode: config.agentChatMode,
206
+ defaultProjectDir: config.defaultProjectDir,
207
+ });
187
208
  }
188
- logger_1.logger.info((0, i18n_1.t)('runner.stopHint'));
189
- setupShutdownHandlers(agents, updater);
209
+ (0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
210
+ const client = new api_client_1.ApiClient(projects[0].apiUrl, projects[0].token);
211
+ const updater = initAutoUpdater(options, config, client, agentId, () => processManager.sendUpdateToAll());
212
+ logMultiProjectStartup(projects, pollInterval, heartbeatInterval);
213
+ setupShutdownHandlers({ kind: 'processManager', processManager }, updater);
190
214
  }
191
215
  //# sourceMappingURL=agent-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { ApiClient } from './api-client';
2
+ import { type AppSyncSubscriber, type AppSyncNotification } from './appsync-subscriber';
3
+ import { TerminalWebSocket } from './terminal';
4
+ import type { ConfigSyncState, ConfigSyncDeps } from './agent-config-sync';
5
+ export interface TransportState {
6
+ heartbeatTimer: ReturnType<typeof setInterval> | null;
7
+ pollTimer: ReturnType<typeof setInterval> | null;
8
+ subscriber: AppSyncSubscriber | null;
9
+ terminalWs: TerminalWebSocket | null;
10
+ processing: boolean;
11
+ configSyncDebounceTimer: ReturnType<typeof setTimeout> | null;
12
+ }
13
+ export interface TransportDeps {
14
+ client: ApiClient;
15
+ agentId: string;
16
+ prefix: string;
17
+ apiUrl: string;
18
+ token: string;
19
+ projectDir: string | undefined;
20
+ tenantCode: string;
21
+ pollInterval: number;
22
+ heartbeatInterval: number;
23
+ }
24
+ export interface CommandContext {
25
+ configSyncState: ConfigSyncState;
26
+ configSyncDeps: ConfigSyncDeps;
27
+ transportState: TransportState;
28
+ onSetup: () => Promise<void>;
29
+ onConfigSync: () => Promise<void>;
30
+ }
31
+ /**
32
+ * Start polling mode for pending commands.
33
+ */
34
+ export declare function startPollingMode(deps: TransportDeps, state: TransportState, ctx: CommandContext): void;
35
+ /**
36
+ * Start subscription mode via AppSync WebSocket.
37
+ */
38
+ export declare function startSubscriptionMode(deps: TransportDeps, state: TransportState, ctx: CommandContext, AppSyncSubscriberClass: new (url: string, apiKey: string) => AppSyncSubscriber, appsyncUrl: string, appsyncApiKey: string): Promise<void>;
39
+ /**
40
+ * Start heartbeat interval.
41
+ */
42
+ export declare function startHeartbeat(deps: TransportDeps, state: TransportState, configSyncState: ConfigSyncState, configSyncDeps: ConfigSyncDeps): void;
43
+ /**
44
+ * Start terminal WebSocket connection.
45
+ */
46
+ export declare function startTerminalWebSocket(deps: TransportDeps, state: TransportState): void;
47
+ /**
48
+ * Handle an incoming AppSync notification.
49
+ */
50
+ export declare function handleNotification(deps: TransportDeps, state: TransportState, ctx: CommandContext, notification: AppSyncNotification): Promise<void>;
51
+ /**
52
+ * Check for pending commands (used after reconnection).
53
+ */
54
+ export declare function checkPendingCommands(deps: TransportDeps, state: TransportState, ctx: CommandContext): Promise<void>;
55
+ /**
56
+ * Stop all transport resources.
57
+ */
58
+ export declare function stopTransport(state: TransportState): void;
59
+ //# sourceMappingURL=agent-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-transport.d.ts","sourceRoot":"","sources":["../src/agent-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAKvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAG1E,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAA;IACrD,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAA;IAChD,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,OAAO,CAAA;IACnB,uBAAuB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAA;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,eAAe,CAAA;IAChC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,GAClB,IAAI,CAsCN;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,sBAAsB,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,iBAAiB,EAC9E,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAkCN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,GACpB,IAAI,CAWN;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAiDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAMzD"}