@ai-support-agent/cli 0.0.5-beta.4 → 0.0.5

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 (191) 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 +2 -2
  18. package/dist/appsync-subscriber.d.ts.map +1 -1
  19. package/dist/appsync-subscriber.js +15 -34
  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/commands/api-chat-executor.d.ts +10 -1
  25. package/dist/commands/api-chat-executor.d.ts.map +1 -1
  26. package/dist/commands/api-chat-executor.js +64 -29
  27. package/dist/commands/api-chat-executor.js.map +1 -1
  28. package/dist/commands/chat-executor.d.ts +13 -2
  29. package/dist/commands/chat-executor.d.ts.map +1 -1
  30. package/dist/commands/chat-executor.js +65 -14
  31. package/dist/commands/chat-executor.js.map +1 -1
  32. package/dist/commands/claude-code-runner.d.ts +53 -3
  33. package/dist/commands/claude-code-runner.d.ts.map +1 -1
  34. package/dist/commands/claude-code-runner.js +107 -15
  35. package/dist/commands/claude-code-runner.js.map +1 -1
  36. package/dist/commands/file-executor.d.ts +4 -1
  37. package/dist/commands/file-executor.d.ts.map +1 -1
  38. package/dist/commands/file-executor.js +81 -46
  39. package/dist/commands/file-executor.js.map +1 -1
  40. package/dist/commands/file-path-guard.d.ts +9 -0
  41. package/dist/commands/file-path-guard.d.ts.map +1 -0
  42. package/dist/commands/file-path-guard.js +15 -0
  43. package/dist/commands/file-path-guard.js.map +1 -0
  44. package/dist/commands/file-transfer.d.ts +5 -0
  45. package/dist/commands/file-transfer.d.ts.map +1 -1
  46. package/dist/commands/file-transfer.js +16 -39
  47. package/dist/commands/file-transfer.js.map +1 -1
  48. package/dist/commands/index.d.ts +2 -2
  49. package/dist/commands/index.d.ts.map +1 -1
  50. package/dist/commands/index.js +38 -8
  51. package/dist/commands/index.js.map +1 -1
  52. package/dist/commands/process-executor.d.ts +1 -1
  53. package/dist/commands/process-executor.d.ts.map +1 -1
  54. package/dist/commands/process-executor.js +24 -6
  55. package/dist/commands/process-executor.js.map +1 -1
  56. package/dist/commands/process-manager.d.ts +22 -0
  57. package/dist/commands/process-manager.d.ts.map +1 -0
  58. package/dist/commands/process-manager.js +36 -0
  59. package/dist/commands/process-manager.js.map +1 -0
  60. package/dist/commands/shared-chat-utils.d.ts +6 -1
  61. package/dist/commands/shared-chat-utils.d.ts.map +1 -1
  62. package/dist/commands/shared-chat-utils.js +11 -0
  63. package/dist/commands/shared-chat-utils.js.map +1 -1
  64. package/dist/commands/shell-executor.d.ts +1 -1
  65. package/dist/commands/shell-executor.d.ts.map +1 -1
  66. package/dist/commands/shell-executor.js +9 -12
  67. package/dist/commands/shell-executor.js.map +1 -1
  68. package/dist/config-manager.d.ts.map +1 -1
  69. package/dist/config-manager.js +2 -3
  70. package/dist/config-manager.js.map +1 -1
  71. package/dist/constants.d.ts +19 -0
  72. package/dist/constants.d.ts.map +1 -1
  73. package/dist/constants.js +23 -1
  74. package/dist/constants.js.map +1 -1
  75. package/dist/docker/docker-runner.d.ts.map +1 -1
  76. package/dist/docker/docker-runner.js +5 -3
  77. package/dist/docker/docker-runner.js.map +1 -1
  78. package/dist/ipc-types.d.ts +36 -0
  79. package/dist/ipc-types.d.ts.map +1 -0
  80. package/dist/ipc-types.js +34 -0
  81. package/dist/ipc-types.js.map +1 -0
  82. package/dist/mcp/config-writer.d.ts +5 -1
  83. package/dist/mcp/config-writer.d.ts.map +1 -1
  84. package/dist/mcp/config-writer.js +14 -1
  85. package/dist/mcp/config-writer.js.map +1 -1
  86. package/dist/mcp/server.d.ts.map +1 -1
  87. package/dist/mcp/server.js +2 -0
  88. package/dist/mcp/server.js.map +1 -1
  89. package/dist/mcp/tools/credentials.d.ts.map +1 -1
  90. package/dist/mcp/tools/credentials.js +36 -9
  91. package/dist/mcp/tools/credentials.js.map +1 -1
  92. package/dist/mcp/tools/db-query.d.ts.map +1 -1
  93. package/dist/mcp/tools/db-query.js +13 -18
  94. package/dist/mcp/tools/db-query.js.map +1 -1
  95. package/dist/mcp/tools/db-schemas.d.ts.map +1 -1
  96. package/dist/mcp/tools/db-schemas.js +8 -13
  97. package/dist/mcp/tools/db-schemas.js.map +1 -1
  98. package/dist/mcp/tools/file-upload.d.ts.map +1 -1
  99. package/dist/mcp/tools/file-upload.js +12 -17
  100. package/dist/mcp/tools/file-upload.js.map +1 -1
  101. package/dist/mcp/tools/mcp-response.d.ts +29 -1
  102. package/dist/mcp/tools/mcp-response.d.ts.map +1 -1
  103. package/dist/mcp/tools/mcp-response.js +51 -3
  104. package/dist/mcp/tools/mcp-response.js.map +1 -1
  105. package/dist/mcp/tools/project-info.d.ts.map +1 -1
  106. package/dist/mcp/tools/project-info.js +28 -33
  107. package/dist/mcp/tools/project-info.js.map +1 -1
  108. package/dist/mcp/tools/read-conversation-file.d.ts +4 -0
  109. package/dist/mcp/tools/read-conversation-file.d.ts.map +1 -0
  110. package/dist/mcp/tools/read-conversation-file.js +92 -0
  111. package/dist/mcp/tools/read-conversation-file.js.map +1 -0
  112. package/dist/process-manager.d.ts +20 -0
  113. package/dist/process-manager.d.ts.map +1 -0
  114. package/dist/process-manager.js +125 -0
  115. package/dist/process-manager.js.map +1 -0
  116. package/dist/project-agent.d.ts +5 -23
  117. package/dist/project-agent.d.ts.map +1 -1
  118. package/dist/project-agent.js +68 -302
  119. package/dist/project-agent.js.map +1 -1
  120. package/dist/project-config-sync.d.ts.map +1 -1
  121. package/dist/project-config-sync.js +9 -3
  122. package/dist/project-config-sync.js.map +1 -1
  123. package/dist/project-worker.d.ts +2 -0
  124. package/dist/project-worker.d.ts.map +1 -0
  125. package/dist/project-worker.js +85 -0
  126. package/dist/project-worker.js.map +1 -0
  127. package/dist/repo-sync.d.ts +23 -0
  128. package/dist/repo-sync.d.ts.map +1 -0
  129. package/dist/repo-sync.js +191 -0
  130. package/dist/repo-sync.js.map +1 -0
  131. package/dist/terminal/constants.d.ts +7 -0
  132. package/dist/terminal/constants.d.ts.map +1 -0
  133. package/dist/terminal/constants.js +10 -0
  134. package/dist/terminal/constants.js.map +1 -0
  135. package/dist/terminal/index.d.ts +5 -0
  136. package/dist/terminal/index.d.ts.map +1 -0
  137. package/dist/terminal/index.js +9 -0
  138. package/dist/terminal/index.js.map +1 -0
  139. package/dist/terminal/terminal-session.d.ts +55 -0
  140. package/dist/terminal/terminal-session.d.ts.map +1 -0
  141. package/dist/terminal/terminal-session.js +171 -0
  142. package/dist/terminal/terminal-session.js.map +1 -0
  143. package/dist/terminal/terminal-websocket.d.ts +48 -0
  144. package/dist/terminal/terminal-websocket.d.ts.map +1 -0
  145. package/dist/terminal/terminal-websocket.js +200 -0
  146. package/dist/terminal/terminal-websocket.js.map +1 -0
  147. package/dist/types/chat.d.ts +28 -0
  148. package/dist/types/chat.d.ts.map +1 -0
  149. package/dist/types/chat.js +3 -0
  150. package/dist/types/chat.js.map +1 -0
  151. package/dist/types/command.d.ts +100 -0
  152. package/dist/types/command.d.ts.map +1 -0
  153. package/dist/types/command.js +11 -0
  154. package/dist/types/command.js.map +1 -0
  155. package/dist/types/config.d.ts +44 -0
  156. package/dist/types/config.d.ts.map +1 -0
  157. package/dist/types/config.js +3 -0
  158. package/dist/types/config.js.map +1 -0
  159. package/dist/types/index.d.ts +6 -0
  160. package/dist/types/index.d.ts.map +1 -0
  161. package/dist/types/index.js +22 -0
  162. package/dist/types/index.js.map +1 -0
  163. package/dist/types/project.d.ts +112 -0
  164. package/dist/types/project.d.ts.map +1 -0
  165. package/dist/types/project.js +3 -0
  166. package/dist/types/project.js.map +1 -0
  167. package/dist/types/server.d.ts +58 -0
  168. package/dist/types/server.d.ts.map +1 -0
  169. package/dist/types/server.js +3 -0
  170. package/dist/types/server.js.map +1 -0
  171. package/dist/types.d.ts +1 -275
  172. package/dist/types.d.ts.map +1 -1
  173. package/dist/types.js +15 -0
  174. package/dist/types.js.map +1 -1
  175. package/dist/utils/claude-config-validator.d.ts +16 -0
  176. package/dist/utils/claude-config-validator.d.ts.map +1 -0
  177. package/dist/utils/claude-config-validator.js +94 -0
  178. package/dist/utils/claude-config-validator.js.map +1 -0
  179. package/dist/utils/content-type.d.ts +10 -0
  180. package/dist/utils/content-type.d.ts.map +1 -0
  181. package/dist/utils/content-type.js +120 -0
  182. package/dist/utils/content-type.js.map +1 -0
  183. package/dist/utils.d.ts +1 -0
  184. package/dist/utils.d.ts.map +1 -1
  185. package/dist/utils.js +40 -0
  186. package/dist/utils.js.map +1 -1
  187. package/dist/ws-reconnect.d.ts +12 -0
  188. package/dist/ws-reconnect.d.ts.map +1 -0
  189. package/dist/ws-reconnect.js +32 -0
  190. package/dist/ws-reconnect.js.map +1 -0
  191. package/package.json +2 -2
@@ -34,56 +34,75 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ProjectAgent = void 0;
37
- const fs_1 = require("fs");
38
37
  const os = __importStar(require("os"));
39
- const path_1 = require("path");
40
38
  const api_client_1 = require("./api-client");
41
39
  const appsync_subscriber_1 = require("./appsync-subscriber");
42
- const chat_mode_detector_1 = require("./chat-mode-detector");
43
- const commands_1 = require("./commands");
40
+ const agent_config_sync_1 = require("./agent-config-sync");
41
+ const agent_transport_1 = require("./agent-transport");
44
42
  const constants_1 = require("./constants");
45
43
  const i18n_1 = require("./i18n");
46
44
  const logger_1 = require("./logger");
47
- const aws_profile_1 = require("./aws-profile");
48
- const config_writer_1 = require("./mcp/config-writer");
49
- const project_config_sync_1 = require("./project-config-sync");
50
45
  const project_dir_1 = require("./project-dir");
51
46
  const system_info_1 = require("./system-info");
52
47
  const utils_1 = require("./utils");
53
48
  class ProjectAgent {
54
49
  agentId;
55
50
  options;
56
- heartbeatTimer = null;
57
- pollTimer = null;
58
- subscriber = null;
59
- processing = false;
60
51
  client;
61
52
  prefix;
62
53
  tenantCode;
63
- serverConfig = null;
64
- availableChatModes = [];
65
- activeChatMode = undefined;
66
- localAgentChatMode;
67
54
  projectDir;
68
- currentConfigHash = undefined;
69
- configSyncDebounceTimer = null;
70
- projectConfig = undefined;
71
- mcpConfigPath = undefined;
72
55
  apiUrl;
73
56
  token;
74
57
  projectCode;
58
+ configSyncState = {
59
+ currentConfigHash: undefined,
60
+ projectConfig: undefined,
61
+ serverConfig: null,
62
+ availableChatModes: [],
63
+ activeChatMode: undefined,
64
+ mcpConfigPath: undefined,
65
+ };
66
+ configSyncDeps;
67
+ transportState = {
68
+ heartbeatTimer: null,
69
+ pollTimer: null,
70
+ subscriber: null,
71
+ terminalWs: null,
72
+ processing: false,
73
+ configSyncDebounceTimer: null,
74
+ };
75
+ transportDeps;
75
76
  constructor(project, agentId, options, tenantCode, localAgentChatMode, defaultProjectDir) {
76
77
  this.agentId = agentId;
77
78
  this.options = options;
78
79
  this.client = new api_client_1.ApiClient(project.apiUrl, project.token);
79
80
  this.prefix = `[${project.projectCode}]`;
80
81
  this.tenantCode = tenantCode ?? project.projectCode;
81
- this.localAgentChatMode = localAgentChatMode;
82
82
  this.apiUrl = project.apiUrl;
83
83
  this.token = project.token;
84
84
  this.projectCode = project.projectCode;
85
- // Always resolve project directory (uses default template if neither is set)
86
85
  this.projectDir = (0, project_dir_1.initProjectDir)(project, defaultProjectDir);
86
+ this.configSyncDeps = {
87
+ client: this.client,
88
+ prefix: this.prefix,
89
+ projectDir: this.projectDir,
90
+ apiUrl: this.apiUrl,
91
+ token: this.token,
92
+ projectCode: this.projectCode,
93
+ localAgentChatMode,
94
+ };
95
+ this.transportDeps = {
96
+ client: this.client,
97
+ agentId: this.agentId,
98
+ prefix: this.prefix,
99
+ apiUrl: this.apiUrl,
100
+ token: this.token,
101
+ projectDir: this.projectDir,
102
+ tenantCode: this.tenantCode,
103
+ pollInterval: this.options.pollInterval,
104
+ heartbeatInterval: this.options.heartbeatInterval,
105
+ };
87
106
  }
88
107
  start() {
89
108
  this.registerAndStart().catch((error) => {
@@ -91,20 +110,19 @@ class ProjectAgent {
91
110
  });
92
111
  }
93
112
  stop() {
94
- if (this.heartbeatTimer)
95
- clearInterval(this.heartbeatTimer);
96
- if (this.pollTimer)
97
- clearInterval(this.pollTimer);
98
- if (this.configSyncDebounceTimer)
99
- clearTimeout(this.configSyncDebounceTimer);
100
- if (this.subscriber)
101
- this.subscriber.disconnect();
113
+ (0, agent_transport_1.stopTransport)(this.transportState);
102
114
  }
103
115
  getClient() {
104
116
  return this.client;
105
117
  }
118
+ async performConfigSync() {
119
+ await (0, agent_config_sync_1.performConfigSync)(this.configSyncDeps, this.configSyncState);
120
+ }
121
+ async performSetup() {
122
+ await (0, agent_config_sync_1.performSetup)(this.configSyncDeps, this.configSyncState);
123
+ }
106
124
  async registerAndStart() {
107
- await this.refreshChatMode(true);
125
+ await (0, agent_config_sync_1.refreshChatMode)(this.configSyncDeps, this.configSyncState, true);
108
126
  let result;
109
127
  try {
110
128
  result = await this.client.register({
@@ -113,9 +131,9 @@ class ProjectAgent {
113
131
  os: os.platform(),
114
132
  arch: os.arch(),
115
133
  ipAddress: (0, system_info_1.getLocalIpAddress)(),
116
- capabilities: ['shell', 'file_read', 'file_write', 'process_manage', 'chat'],
117
- availableChatModes: this.availableChatModes,
118
- activeChatMode: this.activeChatMode,
134
+ capabilities: ['shell', 'file_read', 'file_write', 'process_manage', 'chat', 'terminal'],
135
+ availableChatModes: this.configSyncState.availableChatModes,
136
+ activeChatMode: this.configSyncState.activeChatMode,
119
137
  });
120
138
  logger_1.logger.success((0, i18n_1.t)('runner.registered', { prefix: this.prefix, agentId: result.agentId }));
121
139
  logger_1.logger.debug(`${this.prefix} Register response: transportMode=${result.transportMode ?? 'none'}, appsyncUrl=${result.appsyncUrl ? 'present' : 'absent'}`);
@@ -127,292 +145,40 @@ class ProjectAgent {
127
145
  // Perform initial config sync with retries
128
146
  for (let attempt = 1; attempt <= constants_1.INITIAL_CONFIG_SYNC_MAX_RETRIES; attempt++) {
129
147
  await this.performConfigSync();
130
- if (this.currentConfigHash)
148
+ if (this.configSyncState.currentConfigHash)
131
149
  break;
132
150
  if (attempt < constants_1.INITIAL_CONFIG_SYNC_MAX_RETRIES) {
133
151
  logger_1.logger.warn(`${this.prefix} Initial config sync attempt ${attempt} failed, retrying...`);
134
152
  await new Promise(resolve => setTimeout(resolve, constants_1.INITIAL_CONFIG_SYNC_RETRY_DELAY_MS * attempt));
135
153
  }
136
154
  }
137
- if (!this.currentConfigHash) {
155
+ if (!this.configSyncState.currentConfigHash) {
138
156
  logger_1.logger.warn(`${this.prefix} Initial config sync failed after all retries`);
139
157
  }
158
+ const commandContext = {
159
+ configSyncState: this.configSyncState,
160
+ configSyncDeps: this.configSyncDeps,
161
+ transportState: this.transportState,
162
+ onSetup: () => this.performSetup(),
163
+ onConfigSync: () => this.performConfigSync(),
164
+ };
140
165
  if (result.transportMode === 'realtime' && result.appsyncUrl && result.appsyncApiKey) {
141
166
  logger_1.logger.info(`${this.prefix} Starting subscription mode (realtime)`);
142
- await this.startSubscriptionMode(result);
167
+ await (0, agent_transport_1.startSubscriptionMode)(this.transportDeps, this.transportState, commandContext, appsync_subscriber_1.AppSyncSubscriber, result.appsyncUrl, result.appsyncApiKey);
143
168
  }
144
169
  else {
145
170
  logger_1.logger.info(`${this.prefix} Starting polling mode (interval: ${this.options.pollInterval}ms)`);
146
- this.startPollingMode();
147
- }
148
- this.startHeartbeat();
149
- }
150
- async startSubscriptionMode(registerResult) {
151
- this.subscriber = new appsync_subscriber_1.AppSyncSubscriber(registerResult.appsyncUrl, registerResult.appsyncApiKey);
152
- try {
153
- await this.subscriber.connect();
154
- logger_1.logger.success(`${this.prefix} Connected via AppSync WebSocket`);
155
- }
156
- catch (error) {
157
- logger_1.logger.warn(`${this.prefix} WebSocket connection failed, falling back to polling: ${(0, utils_1.getErrorMessage)(error)}`);
158
- this.startPollingMode();
159
- return;
160
- }
161
- this.subscriber.subscribe(this.tenantCode, (notification) => { void this.handleNotification(notification); });
162
- this.subscriber.onReconnect(() => {
163
- logger_1.logger.info(`${this.prefix} Reconnected, checking for pending commands...`);
164
- void this.checkPendingCommands();
165
- });
166
- }
167
- startPollingMode() {
168
- const pollCommands = async () => {
169
- if (this.processing)
170
- return;
171
- this.processing = true;
172
- try {
173
- const pending = await this.client.getPendingCommands(this.agentId);
174
- if (pending.length > 0) {
175
- logger_1.logger.debug(`${this.prefix} Polling found ${pending.length} pending command(s)`);
176
- }
177
- for (const cmd of pending) {
178
- logger_1.logger.info((0, i18n_1.t)('runner.commandReceived', { prefix: this.prefix, type: cmd.type, commandId: cmd.commandId }));
179
- await this.processCommand(cmd.commandId);
180
- }
181
- }
182
- catch (error) {
183
- logger_1.logger.debug(`${this.prefix} Polling error: ${(0, utils_1.getErrorMessage)(error)}`);
184
- }
185
- finally {
186
- this.processing = false;
187
- }
188
- };
189
- this.pollTimer = setInterval(() => {
190
- void pollCommands();
191
- }, this.options.pollInterval);
192
- }
193
- startHeartbeat() {
194
- const sendHeartbeat = async () => {
195
- try {
196
- await this.refreshChatMode(false);
197
- const response = await this.client.heartbeat(this.agentId, (0, system_info_1.getSystemInfo)(), undefined, this.availableChatModes, this.activeChatMode, (0, system_info_1.getLocalIpAddress)());
198
- // Check configHash from heartbeat response (polling fallback)
199
- if (response && typeof response === 'object' && 'configHash' in response) {
200
- const heartbeatResponse = response;
201
- if (heartbeatResponse.configHash && heartbeatResponse.configHash !== this.currentConfigHash) {
202
- logger_1.logger.info(`${this.prefix} Config hash changed in heartbeat response, syncing...`);
203
- this.scheduleConfigSync();
204
- }
205
- }
206
- logger_1.logger.debug(`${this.prefix} Heartbeat sent (activeChatMode=${this.activeChatMode ?? 'none'})`);
207
- }
208
- catch (error) {
209
- logger_1.logger.warn((0, i18n_1.t)('runner.heartbeatFailed', { prefix: this.prefix, message: (0, utils_1.getErrorMessage)(error) }));
210
- }
211
- };
212
- this.heartbeatTimer = setInterval(() => {
213
- void sendHeartbeat();
214
- }, this.options.heartbeatInterval);
215
- void sendHeartbeat();
216
- }
217
- async handleNotification(notification) {
218
- logger_1.logger.debug(`${this.prefix} Notification received: action=${notification.action}, content=${JSON.stringify(notification.content ?? {}).substring(0, constants_1.LOG_RESULT_LIMIT)}`);
219
- switch (notification.action) {
220
- case 'agent-command': {
221
- const commandId = notification.content?.commandId;
222
- if (!commandId) {
223
- logger_1.logger.warn(`${this.prefix} Notification missing commandId: ${JSON.stringify(notification.content ?? {})}`);
224
- return;
225
- }
226
- logger_1.logger.info((0, i18n_1.t)('runner.commandReceived', {
227
- prefix: this.prefix,
228
- type: notification.content?.type ?? 'unknown',
229
- commandId,
230
- }));
231
- await this.processCommand(commandId);
232
- break;
233
- }
234
- case 'config-update': {
235
- await this.handleConfigUpdate(notification);
236
- break;
237
- }
238
- default:
239
- logger_1.logger.debug(`${this.prefix} Ignoring notification with action: ${notification.action}`);
240
- }
241
- }
242
- async handleConfigUpdate(notification) {
243
- const newHash = notification.content?.configHash;
244
- if (newHash && newHash !== this.currentConfigHash) {
245
- logger_1.logger.info(`${this.prefix} Config update detected (hash: ${newHash})`);
246
- this.scheduleConfigSync();
247
- }
248
- }
249
- scheduleConfigSync() {
250
- if (this.configSyncDebounceTimer) {
251
- clearTimeout(this.configSyncDebounceTimer);
252
- }
253
- this.configSyncDebounceTimer = setTimeout(() => {
254
- void this.performConfigSync();
255
- }, constants_1.CONFIG_SYNC_DEBOUNCE_MS);
256
- }
257
- async performConfigSync() {
258
- const config = await (0, project_config_sync_1.syncProjectConfig)(this.client, this.currentConfigHash, this.projectDir, this.prefix);
259
- if (config) {
260
- this.applyProjectConfig(config);
261
- }
262
- }
263
- async performSetup() {
264
- logger_1.logger.info(`${this.prefix} Starting setup...`);
265
- // 1. Config sync
266
- await this.performConfigSync();
267
- // 2. Download documentation (future: repos clone)
268
- if (this.projectConfig?.documentation?.sources) {
269
- logger_1.logger.info(`${this.prefix} Documentation sources found: ${this.projectConfig.documentation.sources.length}`);
270
- // Documentation download will be implemented in a future phase
271
- }
272
- logger_1.logger.info(`${this.prefix} Setup completed`);
273
- }
274
- applyProjectConfig(config) {
275
- this.currentConfigHash = config.configHash;
276
- this.projectConfig = config;
277
- // Update serverConfig from project config
278
- this.serverConfig = {
279
- agentEnabled: config.agent.agentEnabled,
280
- builtinAgentEnabled: config.agent.builtinAgentEnabled,
281
- builtinFallbackEnabled: config.agent.builtinFallbackEnabled,
282
- externalAgentEnabled: config.agent.externalAgentEnabled,
283
- chatMode: 'agent',
284
- claudeCodeConfig: {
285
- allowedTools: config.agent.allowedTools,
286
- addDirs: config.agent.claudeCodeConfig?.additionalDirs,
287
- systemPrompt: config.agent.claudeCodeConfig?.appendSystemPrompt,
288
- },
289
- };
290
- // Write AWS config file if project directory and AWS accounts are configured
291
- if (this.projectDir && config.aws?.accounts?.length) {
292
- try {
293
- (0, aws_profile_1.writeAwsConfig)(this.projectDir, config.project.projectCode, config.aws.accounts);
294
- }
295
- catch (error) {
296
- logger_1.logger.warn(`${this.prefix} Failed to write AWS config: ${(0, utils_1.getErrorMessage)(error)}`);
297
- }
171
+ (0, agent_transport_1.startPollingMode)(this.transportDeps, this.transportState, commandContext);
298
172
  }
299
- // Log database configuration
300
- if (config.databases?.length) {
301
- logger_1.logger.info(`${this.prefix} Databases configured: ${config.databases.map(db => `${db.name}(${db.engine})`).join(', ')}`);
173
+ (0, agent_transport_1.startHeartbeat)(this.transportDeps, this.transportState, this.configSyncState, this.configSyncDeps);
174
+ // Start terminal WebSocket connection (only if server has WS gateway enabled)
175
+ if (result.wsEnabled) {
176
+ (0, agent_transport_1.startTerminalWebSocket)(this.transportDeps, this.transportState);
302
177
  }
303
- // Write MCP config file if project directory is available
304
- // MCP tools include file_upload, project_info etc. that are useful regardless of database config
305
- if (this.projectDir) {
306
- try {
307
- const mcpServerPath = resolveMcpServerPath();
308
- this.mcpConfigPath = (0, config_writer_1.writeMcpConfig)(this.projectDir, this.apiUrl, this.token, this.projectCode, mcpServerPath);
309
- logger_1.logger.info(`${this.prefix} MCP config written: ${this.mcpConfigPath}`);
310
- }
311
- catch (error) {
312
- logger_1.logger.warn(`${this.prefix} Failed to write MCP config: ${(0, utils_1.getErrorMessage)(error)}`);
313
- }
314
- }
315
- logger_1.logger.info(`${this.prefix} Config applied (hash: ${config.configHash})`);
316
- }
317
- async processCommand(commandId) {
318
- try {
319
- const detail = await this.client.getCommand(commandId, this.agentId);
320
- logger_1.logger.debug(`${this.prefix} Command detail [${commandId}]: type=${detail.type}, payload=${JSON.stringify(detail.payload).substring(0, constants_1.LOG_PAYLOAD_LIMIT)}`);
321
- const result = await (0, commands_1.executeCommand)(detail.type, detail.payload, {
322
- commandId,
323
- client: this.client,
324
- serverConfig: this.serverConfig ?? undefined,
325
- activeChatMode: this.activeChatMode,
326
- agentId: this.agentId,
327
- projectDir: this.projectDir,
328
- projectConfig: this.projectConfig,
329
- mcpConfigPath: this.mcpConfigPath,
330
- onSetup: () => this.performSetup(),
331
- onConfigSync: () => this.performConfigSync(),
332
- });
333
- logger_1.logger.debug(`${this.prefix} Command result [${commandId}]: success=${result.success}, data=${JSON.stringify(result.success ? result.data : result.error).substring(0, constants_1.LOG_RESULT_LIMIT)}`);
334
- await this.client.submitResult(commandId, result, this.agentId);
335
- logger_1.logger.info((0, i18n_1.t)('runner.commandDone', {
336
- prefix: this.prefix,
337
- commandId,
338
- result: result.success ? 'success' : 'failed',
339
- }));
340
- }
341
- catch (error) {
342
- const message = (0, utils_1.getErrorMessage)(error);
343
- logger_1.logger.error((0, i18n_1.t)('runner.commandError', { prefix: this.prefix, commandId, message }));
344
- try {
345
- await this.client.submitResult(commandId, {
346
- success: false,
347
- error: message,
348
- }, this.agentId);
349
- }
350
- catch {
351
- logger_1.logger.error((0, i18n_1.t)('runner.resultSendFailed', { prefix: this.prefix }));
352
- }
353
- }
354
- }
355
- async refreshChatMode(verbose) {
356
- this.availableChatModes = await (0, chat_mode_detector_1.detectAvailableChatModes)();
357
- if (verbose) {
358
- logger_1.logger.info(`${this.prefix} Available chat modes: ${JSON.stringify(this.availableChatModes)}`);
359
- }
360
- try {
361
- this.serverConfig = await this.client.getConfig();
362
- if (verbose) {
363
- logger_1.logger.info(`${this.prefix} Server config loaded: chatMode=${this.serverConfig.chatMode}`);
364
- if (this.serverConfig.claudeCodeConfig) {
365
- logger_1.logger.debug(`${this.prefix} claudeCodeConfig: allowedTools=[${this.serverConfig.claudeCodeConfig.allowedTools?.join(', ') ?? ''}], addDirs=[${this.serverConfig.claudeCodeConfig.addDirs?.join(', ') ?? ''}]`);
366
- }
367
- }
368
- }
369
- catch (error) {
370
- if (verbose) {
371
- logger_1.logger.warn(`${this.prefix} Failed to load server config, using defaults: ${(0, utils_1.getErrorMessage)(error)}`);
372
- }
373
- }
374
- this.activeChatMode = (0, chat_mode_detector_1.resolveActiveChatMode)(this.availableChatModes, this.localAgentChatMode, this.serverConfig?.defaultAgentChatMode);
375
- if (verbose) {
376
- logger_1.logger.info(`${this.prefix} Active chat mode: ${this.activeChatMode ?? 'none'}`);
377
- }
378
- }
379
- async checkPendingCommands() {
380
- try {
381
- const pending = await this.client.getPendingCommands(this.agentId);
382
- for (const cmd of pending) {
383
- await this.handleNotification({
384
- id: cmd.commandId,
385
- table: '',
386
- pk: '',
387
- sk: '',
388
- tenantCode: '',
389
- action: 'agent-command',
390
- content: { commandId: cmd.commandId, type: cmd.type },
391
- });
392
- }
393
- }
394
- catch (error) {
395
- logger_1.logger.warn(`${this.prefix} Failed to check pending commands: ${(0, utils_1.getErrorMessage)(error)}`);
178
+ else {
179
+ logger_1.logger.debug(`${this.prefix} Terminal WebSocket skipped (wsEnabled=false)`);
396
180
  }
397
181
  }
398
182
  }
399
183
  exports.ProjectAgent = ProjectAgent;
400
- /**
401
- * MCP サーバースクリプトのパスを解決する
402
- *
403
- * ts-node/tsx で実行時は __dirname が src/ を指すため server.js が存在しない。
404
- * その場合は dist/mcp/server.js にフォールバックする。
405
- */
406
- function resolveMcpServerPath() {
407
- const candidate = (0, path_1.join)(__dirname, 'mcp', 'server.js');
408
- if ((0, fs_1.existsSync)(candidate))
409
- return candidate;
410
- // ts-node 実行時: src/ → dist/ に置換
411
- const distCandidate = (0, path_1.resolve)(__dirname, '..', 'dist', 'mcp', 'server.js');
412
- if ((0, fs_1.existsSync)(distCandidate))
413
- return distCandidate;
414
- // どちらも見つからない場合は元のパスを返す(エラーは呼び出し元でハンドリング)
415
- logger_1.logger.warn(`[mcp] MCP server script not found at ${candidate} or ${distCandidate}`);
416
- return candidate;
417
- }
418
184
  //# sourceMappingURL=project-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-agent.js","sourceRoot":"","sources":["../src/project-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-agent.js","sourceRoot":"","sources":["../src/project-agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-config-sync.d.ts","sourceRoot":"","sources":["../src/project-config-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIzE;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAkCvC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,GAC5B,IAAI,CA4BN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,IAAI,CAW5B"}
1
+ {"version":3,"file":"project-config-sync.d.ts","sourceRoot":"","sources":["../src/project-config-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAKzE;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAkCvC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,qBAAqB,GAC5B,IAAI,CAmCN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,IAAI,CAW5B"}
@@ -40,6 +40,7 @@ const fs = __importStar(require("fs"));
40
40
  const path = __importStar(require("path"));
41
41
  const project_dir_1 = require("./project-dir");
42
42
  const logger_1 = require("./logger");
43
+ const utils_1 = require("./utils");
43
44
  const CACHE_FILE_NAME = 'project-config.json';
44
45
  /**
45
46
  * Sync project config from server.
@@ -92,14 +93,19 @@ function saveCachedConfig(projectDir, config) {
92
93
  configHash: config.configHash,
93
94
  project: config.project,
94
95
  agent: config.agent,
96
+ repositories: config.repositories,
95
97
  documentation: config.documentation,
96
98
  // aws is intentionally excluded from cache
99
+ // backlog: APIキーを除外してキャッシュ
100
+ backlog: config.backlog
101
+ ? {
102
+ items: config.backlog.items.map(({ apiKey: _apiKey, ...rest }) => rest),
103
+ }
104
+ : undefined,
97
105
  },
98
106
  };
99
107
  const cachePath = path.join(cacheDir, CACHE_FILE_NAME);
100
- const tmpPath = cachePath + '.tmp';
101
- fs.writeFileSync(tmpPath, JSON.stringify(cacheData, null, 2), { mode: 0o600 });
102
- fs.renameSync(tmpPath, cachePath);
108
+ (0, utils_1.atomicWriteFile)(cachePath, JSON.stringify(cacheData, null, 2));
103
109
  logger_1.logger.debug(`Config cached to ${cachePath}`);
104
110
  }
105
111
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"project-config-sync.js","sourceRoot":"","sources":["../src/project-config-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config-sync.js","sourceRoot":"","sources":["../src/project-config-sync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,8CAuCC;AAMD,4CAsCC;AAMD,4CAaC;AArHD,uCAAwB;AACxB,2CAA4B;AAG5B,+CAA2C;AAC3C,qCAAiC;AAEjC,mCAAyC;AAEzC,MAAM,eAAe,GAAG,qBAAqB,CAAA;AAE7C;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CACrC,MAAiB,EACjB,WAA+B,EAC/B,UAA8B,EAC9B,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAA;QAE9C,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;YACtC,eAAM,CAAC,KAAK,CAAC,GAAG,MAAM,4BAA4B,MAAM,CAAC,UAAU,GAAG,CAAC,CAAA;YACvE,OAAO,IAAI,CAAA;QACb,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,GAAG,MAAM,oBAAoB,WAAW,IAAI,MAAM,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;QAEzF,IAAI,UAAU,EAAE,CAAC;YACf,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mCAAmC,KAAK,EAAE,CAAC,CAAA;QAEhE,oCAAoC;QACpC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;YAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;gBAChD,eAAM,CAAC,IAAI,CAAC,GAAG,MAAM,+BAA+B,MAAM,CAAC,UAAU,GAAG,CAAC,CAAA;gBACzE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAA;gBACpD,OAAO;oBACL,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,GAAG,IAAI;iBACiB,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,UAAkB,EAClB,MAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,UAAU,CAAC,CAAA;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,SAAS,GAAwB;YACrC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAClC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE;gBACN,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,2CAA2C;gBAC3C,2BAA2B;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACrB,CAAC,CAAC;wBACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAC7B,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CACvC;qBACF;oBACH,CAAC,CAAC,SAAS;aACd;SACF,CAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;QACtD,IAAA,uBAAe,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAE9D,eAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAA;IACtD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAC9B,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,yBAAW,EAAC,UAAU,CAAC,EAAE,eAAe,CAAC,CAAA;QACrE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function startWorker(): void;
2
+ //# sourceMappingURL=project-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-worker.d.ts","sourceRoot":"","sources":["../src/project-worker.ts"],"names":[],"mappings":"AA+FA,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startWorker = startWorker;
4
+ const ipc_types_1 = require("./ipc-types");
5
+ const logger_1 = require("./logger");
6
+ const project_agent_1 = require("./project-agent");
7
+ const sentry_1 = require("./sentry");
8
+ let agent = null;
9
+ let currentProjectCode = 'unknown';
10
+ function sendToParent(msg) {
11
+ if (process.send) {
12
+ process.send(msg);
13
+ }
14
+ }
15
+ async function handleStart(msg) {
16
+ await (0, sentry_1.initSentry)();
17
+ const { project, agentId, options } = msg;
18
+ agent = new project_agent_1.ProjectAgent(project, agentId, options, undefined, options.agentChatMode, options.defaultProjectDir);
19
+ agent.start();
20
+ sendToParent({ type: 'started', projectCode: project.projectCode });
21
+ logger_1.logger.info(`Worker started for ${project.projectCode} (pid=${process.pid})`);
22
+ }
23
+ async function handleGracefulExit(projectCode, reason) {
24
+ const action = reason === 'shutdown' ? 'shutting down' : 'stopping for update';
25
+ logger_1.logger.info(`Worker ${projectCode} ${action}`);
26
+ agent?.stop();
27
+ sendToParent({ type: 'stopped', projectCode });
28
+ await (0, sentry_1.flushSentry)();
29
+ process.exit(0);
30
+ }
31
+ // ─── Message handler ─────────────────────────────────────────────
32
+ function setupMessageHandler() {
33
+ process.on('message', (msg) => {
34
+ if (!(0, ipc_types_1.isParentToChildMessage)(msg))
35
+ return;
36
+ switch (msg.type) {
37
+ case 'start':
38
+ currentProjectCode = msg.project.projectCode;
39
+ handleStart(msg).catch((err) => {
40
+ const error = err instanceof Error ? err : new Error(String(err));
41
+ (0, sentry_1.captureException)(error);
42
+ sendToParent({ type: 'error', projectCode: currentProjectCode, message: error.message });
43
+ });
44
+ break;
45
+ case 'shutdown':
46
+ void handleGracefulExit(currentProjectCode, 'shutdown');
47
+ break;
48
+ case 'update':
49
+ void handleGracefulExit(currentProjectCode, 'update');
50
+ break;
51
+ }
52
+ });
53
+ }
54
+ // ─── Disconnect handler (parent crash) ───────────────────────────
55
+ function setupDisconnectHandler() {
56
+ process.on('disconnect', () => {
57
+ logger_1.logger.warn(`Parent disconnected, worker ${currentProjectCode} exiting`);
58
+ agent?.stop();
59
+ process.exit(1);
60
+ });
61
+ }
62
+ // ─── Global error handlers ──────────────────────────────────────
63
+ function setupErrorHandlers() {
64
+ process.on('uncaughtException', (error) => {
65
+ (0, sentry_1.captureException)(error, { handler: 'worker:uncaughtException' });
66
+ logger_1.logger.error(`Worker uncaught exception: ${error.message}`);
67
+ void (0, sentry_1.flushSentry)().finally(() => process.exit(1));
68
+ });
69
+ process.on('unhandledRejection', (reason) => {
70
+ (0, sentry_1.captureException)(reason, { handler: 'worker:unhandledRejection' });
71
+ logger_1.logger.error(`Worker unhandled rejection: ${reason}`);
72
+ });
73
+ }
74
+ // ─── Entry point ─────────────────────────────────────────────────
75
+ function startWorker() {
76
+ setupMessageHandler();
77
+ setupDisconnectHandler();
78
+ setupErrorHandlers();
79
+ }
80
+ // Auto-start when loaded as a child process (not during testing)
81
+ /* istanbul ignore next */
82
+ if (require.main === module) {
83
+ startWorker();
84
+ }
85
+ //# sourceMappingURL=project-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-worker.js","sourceRoot":"","sources":["../src/project-worker.ts"],"names":[],"mappings":"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"}