@ai-support-agent/cli 0.0.5-beta.5 → 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 (179) 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 +1 -1
  37. package/dist/commands/file-executor.d.ts.map +1 -1
  38. package/dist/commands/file-executor.js +59 -70
  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 +1 -1
  49. package/dist/commands/index.d.ts.map +1 -1
  50. package/dist/commands/index.js +18 -7
  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 -25
  117. package/dist/project-agent.d.ts.map +1 -1
  118. package/dist/project-agent.js +67 -313
  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/terminal-websocket.d.ts +2 -2
  132. package/dist/terminal/terminal-websocket.d.ts.map +1 -1
  133. package/dist/terminal/terminal-websocket.js +12 -29
  134. package/dist/terminal/terminal-websocket.js.map +1 -1
  135. package/dist/types/chat.d.ts +28 -0
  136. package/dist/types/chat.d.ts.map +1 -0
  137. package/dist/types/chat.js +3 -0
  138. package/dist/types/chat.js.map +1 -0
  139. package/dist/types/command.d.ts +100 -0
  140. package/dist/types/command.d.ts.map +1 -0
  141. package/dist/types/command.js +11 -0
  142. package/dist/types/command.js.map +1 -0
  143. package/dist/types/config.d.ts +44 -0
  144. package/dist/types/config.d.ts.map +1 -0
  145. package/dist/types/config.js +3 -0
  146. package/dist/types/config.js.map +1 -0
  147. package/dist/types/index.d.ts +6 -0
  148. package/dist/types/index.d.ts.map +1 -0
  149. package/dist/types/index.js +22 -0
  150. package/dist/types/index.js.map +1 -0
  151. package/dist/types/project.d.ts +112 -0
  152. package/dist/types/project.d.ts.map +1 -0
  153. package/dist/types/project.js +3 -0
  154. package/dist/types/project.js.map +1 -0
  155. package/dist/types/server.d.ts +58 -0
  156. package/dist/types/server.d.ts.map +1 -0
  157. package/dist/types/server.js +3 -0
  158. package/dist/types/server.js.map +1 -0
  159. package/dist/types.d.ts +1 -295
  160. package/dist/types.d.ts.map +1 -1
  161. package/dist/types.js +15 -0
  162. package/dist/types.js.map +1 -1
  163. package/dist/utils/claude-config-validator.d.ts +16 -0
  164. package/dist/utils/claude-config-validator.d.ts.map +1 -0
  165. package/dist/utils/claude-config-validator.js +94 -0
  166. package/dist/utils/claude-config-validator.js.map +1 -0
  167. package/dist/utils/content-type.d.ts +10 -0
  168. package/dist/utils/content-type.d.ts.map +1 -0
  169. package/dist/utils/content-type.js +120 -0
  170. package/dist/utils/content-type.js.map +1 -0
  171. package/dist/utils.d.ts +1 -0
  172. package/dist/utils.d.ts.map +1 -1
  173. package/dist/utils.js +40 -0
  174. package/dist/utils.js.map +1 -1
  175. package/dist/ws-reconnect.d.ts +12 -0
  176. package/dist/ws-reconnect.d.ts.map +1 -0
  177. package/dist/ws-reconnect.js +32 -0
  178. package/dist/ws-reconnect.js.map +1 -0
  179. package/package.json +2 -2
@@ -34,58 +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
- const terminal_1 = require("./terminal");
53
47
  const utils_1 = require("./utils");
54
48
  class ProjectAgent {
55
49
  agentId;
56
50
  options;
57
- heartbeatTimer = null;
58
- pollTimer = null;
59
- subscriber = null;
60
- terminalWs = null;
61
- processing = false;
62
51
  client;
63
52
  prefix;
64
53
  tenantCode;
65
- serverConfig = null;
66
- availableChatModes = [];
67
- activeChatMode = undefined;
68
- localAgentChatMode;
69
54
  projectDir;
70
- currentConfigHash = undefined;
71
- configSyncDebounceTimer = null;
72
- projectConfig = undefined;
73
- mcpConfigPath = undefined;
74
55
  apiUrl;
75
56
  token;
76
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;
77
76
  constructor(project, agentId, options, tenantCode, localAgentChatMode, defaultProjectDir) {
78
77
  this.agentId = agentId;
79
78
  this.options = options;
80
79
  this.client = new api_client_1.ApiClient(project.apiUrl, project.token);
81
80
  this.prefix = `[${project.projectCode}]`;
82
81
  this.tenantCode = tenantCode ?? project.projectCode;
83
- this.localAgentChatMode = localAgentChatMode;
84
82
  this.apiUrl = project.apiUrl;
85
83
  this.token = project.token;
86
84
  this.projectCode = project.projectCode;
87
- // Always resolve project directory (uses default template if neither is set)
88
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
+ };
89
106
  }
90
107
  start() {
91
108
  this.registerAndStart().catch((error) => {
@@ -93,22 +110,19 @@ class ProjectAgent {
93
110
  });
94
111
  }
95
112
  stop() {
96
- if (this.heartbeatTimer)
97
- clearInterval(this.heartbeatTimer);
98
- if (this.pollTimer)
99
- clearInterval(this.pollTimer);
100
- if (this.configSyncDebounceTimer)
101
- clearTimeout(this.configSyncDebounceTimer);
102
- if (this.subscriber)
103
- this.subscriber.disconnect();
104
- if (this.terminalWs)
105
- this.terminalWs.disconnect();
113
+ (0, agent_transport_1.stopTransport)(this.transportState);
106
114
  }
107
115
  getClient() {
108
116
  return this.client;
109
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
+ }
110
124
  async registerAndStart() {
111
- await this.refreshChatMode(true);
125
+ await (0, agent_config_sync_1.refreshChatMode)(this.configSyncDeps, this.configSyncState, true);
112
126
  let result;
113
127
  try {
114
128
  result = await this.client.register({
@@ -118,8 +132,8 @@ class ProjectAgent {
118
132
  arch: os.arch(),
119
133
  ipAddress: (0, system_info_1.getLocalIpAddress)(),
120
134
  capabilities: ['shell', 'file_read', 'file_write', 'process_manage', 'chat', 'terminal'],
121
- availableChatModes: this.availableChatModes,
122
- activeChatMode: this.activeChatMode,
135
+ availableChatModes: this.configSyncState.availableChatModes,
136
+ activeChatMode: this.configSyncState.activeChatMode,
123
137
  });
124
138
  logger_1.logger.success((0, i18n_1.t)('runner.registered', { prefix: this.prefix, agentId: result.agentId }));
125
139
  logger_1.logger.debug(`${this.prefix} Register response: transportMode=${result.transportMode ?? 'none'}, appsyncUrl=${result.appsyncUrl ? 'present' : 'absent'}`);
@@ -131,300 +145,40 @@ class ProjectAgent {
131
145
  // Perform initial config sync with retries
132
146
  for (let attempt = 1; attempt <= constants_1.INITIAL_CONFIG_SYNC_MAX_RETRIES; attempt++) {
133
147
  await this.performConfigSync();
134
- if (this.currentConfigHash)
148
+ if (this.configSyncState.currentConfigHash)
135
149
  break;
136
150
  if (attempt < constants_1.INITIAL_CONFIG_SYNC_MAX_RETRIES) {
137
151
  logger_1.logger.warn(`${this.prefix} Initial config sync attempt ${attempt} failed, retrying...`);
138
152
  await new Promise(resolve => setTimeout(resolve, constants_1.INITIAL_CONFIG_SYNC_RETRY_DELAY_MS * attempt));
139
153
  }
140
154
  }
141
- if (!this.currentConfigHash) {
155
+ if (!this.configSyncState.currentConfigHash) {
142
156
  logger_1.logger.warn(`${this.prefix} Initial config sync failed after all retries`);
143
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
+ };
144
165
  if (result.transportMode === 'realtime' && result.appsyncUrl && result.appsyncApiKey) {
145
166
  logger_1.logger.info(`${this.prefix} Starting subscription mode (realtime)`);
146
- await this.startSubscriptionMode(result);
167
+ await (0, agent_transport_1.startSubscriptionMode)(this.transportDeps, this.transportState, commandContext, appsync_subscriber_1.AppSyncSubscriber, result.appsyncUrl, result.appsyncApiKey);
147
168
  }
148
169
  else {
149
170
  logger_1.logger.info(`${this.prefix} Starting polling mode (interval: ${this.options.pollInterval}ms)`);
150
- this.startPollingMode();
151
- }
152
- this.startHeartbeat();
153
- // Start terminal WebSocket connection
154
- this.startTerminalWebSocket();
155
- }
156
- startTerminalWebSocket() {
157
- this.terminalWs = new terminal_1.TerminalWebSocket(this.apiUrl, this.token, this.agentId, this.projectDir);
158
- this.terminalWs.connect().catch((error) => {
159
- logger_1.logger.warn(`${this.prefix} Terminal WebSocket connection failed: ${(0, utils_1.getErrorMessage)(error)}`);
160
- });
161
- }
162
- async startSubscriptionMode(registerResult) {
163
- this.subscriber = new appsync_subscriber_1.AppSyncSubscriber(registerResult.appsyncUrl, registerResult.appsyncApiKey);
164
- try {
165
- await this.subscriber.connect();
166
- logger_1.logger.success(`${this.prefix} Connected via AppSync WebSocket`);
167
- }
168
- catch (error) {
169
- logger_1.logger.warn(`${this.prefix} WebSocket connection failed, falling back to polling: ${(0, utils_1.getErrorMessage)(error)}`);
170
- this.startPollingMode();
171
- return;
172
- }
173
- this.subscriber.subscribe(this.tenantCode, (notification) => { void this.handleNotification(notification); });
174
- this.subscriber.onReconnect(() => {
175
- logger_1.logger.info(`${this.prefix} Reconnected, checking for pending commands...`);
176
- void this.checkPendingCommands();
177
- });
178
- }
179
- startPollingMode() {
180
- const pollCommands = async () => {
181
- if (this.processing)
182
- return;
183
- this.processing = true;
184
- try {
185
- const pending = await this.client.getPendingCommands(this.agentId);
186
- if (pending.length > 0) {
187
- logger_1.logger.debug(`${this.prefix} Polling found ${pending.length} pending command(s)`);
188
- }
189
- for (const cmd of pending) {
190
- logger_1.logger.info((0, i18n_1.t)('runner.commandReceived', { prefix: this.prefix, type: cmd.type, commandId: cmd.commandId }));
191
- await this.processCommand(cmd.commandId);
192
- }
193
- }
194
- catch (error) {
195
- logger_1.logger.debug(`${this.prefix} Polling error: ${(0, utils_1.getErrorMessage)(error)}`);
196
- }
197
- finally {
198
- this.processing = false;
199
- }
200
- };
201
- this.pollTimer = setInterval(() => {
202
- void pollCommands();
203
- }, this.options.pollInterval);
204
- }
205
- startHeartbeat() {
206
- const sendHeartbeat = async () => {
207
- try {
208
- await this.refreshChatMode(false);
209
- const response = await this.client.heartbeat(this.agentId, (0, system_info_1.getSystemInfo)(), undefined, this.availableChatModes, this.activeChatMode, (0, system_info_1.getLocalIpAddress)());
210
- // Check configHash from heartbeat response (polling fallback)
211
- if (response && typeof response === 'object' && 'configHash' in response) {
212
- const heartbeatResponse = response;
213
- if (heartbeatResponse.configHash && heartbeatResponse.configHash !== this.currentConfigHash) {
214
- logger_1.logger.info(`${this.prefix} Config hash changed in heartbeat response, syncing...`);
215
- this.scheduleConfigSync();
216
- }
217
- }
218
- logger_1.logger.debug(`${this.prefix} Heartbeat sent (activeChatMode=${this.activeChatMode ?? 'none'})`);
219
- }
220
- catch (error) {
221
- logger_1.logger.warn((0, i18n_1.t)('runner.heartbeatFailed', { prefix: this.prefix, message: (0, utils_1.getErrorMessage)(error) }));
222
- }
223
- };
224
- this.heartbeatTimer = setInterval(() => {
225
- void sendHeartbeat();
226
- }, this.options.heartbeatInterval);
227
- void sendHeartbeat();
228
- }
229
- async handleNotification(notification) {
230
- logger_1.logger.debug(`${this.prefix} Notification received: action=${notification.action}, content=${JSON.stringify(notification.content ?? {}).substring(0, constants_1.LOG_RESULT_LIMIT)}`);
231
- switch (notification.action) {
232
- case 'agent-command': {
233
- const commandId = notification.content?.commandId;
234
- if (!commandId) {
235
- logger_1.logger.warn(`${this.prefix} Notification missing commandId: ${JSON.stringify(notification.content ?? {})}`);
236
- return;
237
- }
238
- logger_1.logger.info((0, i18n_1.t)('runner.commandReceived', {
239
- prefix: this.prefix,
240
- type: notification.content?.type ?? 'unknown',
241
- commandId,
242
- }));
243
- await this.processCommand(commandId);
244
- break;
245
- }
246
- case 'config-update': {
247
- await this.handleConfigUpdate(notification);
248
- break;
249
- }
250
- default:
251
- logger_1.logger.debug(`${this.prefix} Ignoring notification with action: ${notification.action}`);
252
- }
253
- }
254
- async handleConfigUpdate(notification) {
255
- const newHash = notification.content?.configHash;
256
- if (newHash && newHash !== this.currentConfigHash) {
257
- logger_1.logger.info(`${this.prefix} Config update detected (hash: ${newHash})`);
258
- this.scheduleConfigSync();
259
- }
260
- }
261
- scheduleConfigSync() {
262
- if (this.configSyncDebounceTimer) {
263
- clearTimeout(this.configSyncDebounceTimer);
264
- }
265
- this.configSyncDebounceTimer = setTimeout(() => {
266
- void this.performConfigSync();
267
- }, constants_1.CONFIG_SYNC_DEBOUNCE_MS);
268
- }
269
- async performConfigSync() {
270
- const config = await (0, project_config_sync_1.syncProjectConfig)(this.client, this.currentConfigHash, this.projectDir, this.prefix);
271
- if (config) {
272
- this.applyProjectConfig(config);
273
- }
274
- }
275
- async performSetup() {
276
- logger_1.logger.info(`${this.prefix} Starting setup...`);
277
- // 1. Config sync
278
- await this.performConfigSync();
279
- // 2. Download documentation (future: repos clone)
280
- if (this.projectConfig?.documentation?.sources) {
281
- logger_1.logger.info(`${this.prefix} Documentation sources found: ${this.projectConfig.documentation.sources.length}`);
282
- // Documentation download will be implemented in a future phase
283
- }
284
- logger_1.logger.info(`${this.prefix} Setup completed`);
285
- }
286
- applyProjectConfig(config) {
287
- this.currentConfigHash = config.configHash;
288
- this.projectConfig = config;
289
- // Update serverConfig from project config
290
- this.serverConfig = {
291
- agentEnabled: config.agent.agentEnabled,
292
- builtinAgentEnabled: config.agent.builtinAgentEnabled,
293
- builtinFallbackEnabled: config.agent.builtinFallbackEnabled,
294
- externalAgentEnabled: config.agent.externalAgentEnabled,
295
- chatMode: 'agent',
296
- claudeCodeConfig: {
297
- allowedTools: config.agent.allowedTools,
298
- addDirs: config.agent.claudeCodeConfig?.additionalDirs,
299
- systemPrompt: config.agent.claudeCodeConfig?.appendSystemPrompt,
300
- },
301
- };
302
- // Write AWS config file if project directory and AWS accounts are configured
303
- if (this.projectDir && config.aws?.accounts?.length) {
304
- try {
305
- (0, aws_profile_1.writeAwsConfig)(this.projectDir, config.project.projectCode, config.aws.accounts);
306
- }
307
- catch (error) {
308
- logger_1.logger.warn(`${this.prefix} Failed to write AWS config: ${(0, utils_1.getErrorMessage)(error)}`);
309
- }
310
- }
311
- // Log database configuration
312
- if (config.databases?.length) {
313
- logger_1.logger.info(`${this.prefix} Databases configured: ${config.databases.map(db => `${db.name}(${db.engine})`).join(', ')}`);
314
- }
315
- // Write MCP config file if project directory is available
316
- // MCP tools include file_upload, project_info etc. that are useful regardless of database config
317
- if (this.projectDir) {
318
- try {
319
- const mcpServerPath = resolveMcpServerPath();
320
- this.mcpConfigPath = (0, config_writer_1.writeMcpConfig)(this.projectDir, this.apiUrl, this.token, this.projectCode, mcpServerPath);
321
- logger_1.logger.info(`${this.prefix} MCP config written: ${this.mcpConfigPath}`);
322
- }
323
- catch (error) {
324
- logger_1.logger.warn(`${this.prefix} Failed to write MCP config: ${(0, utils_1.getErrorMessage)(error)}`);
325
- }
326
- }
327
- logger_1.logger.info(`${this.prefix} Config applied (hash: ${config.configHash})`);
328
- }
329
- async processCommand(commandId) {
330
- try {
331
- const detail = await this.client.getCommand(commandId, this.agentId);
332
- logger_1.logger.debug(`${this.prefix} Command detail [${commandId}]: type=${detail.type}, payload=${JSON.stringify(detail.payload).substring(0, constants_1.LOG_PAYLOAD_LIMIT)}`);
333
- const result = await (0, commands_1.executeCommand)(detail.type, detail.payload, {
334
- commandId,
335
- client: this.client,
336
- serverConfig: this.serverConfig ?? undefined,
337
- activeChatMode: this.activeChatMode,
338
- agentId: this.agentId,
339
- projectDir: this.projectDir,
340
- projectConfig: this.projectConfig,
341
- mcpConfigPath: this.mcpConfigPath,
342
- onSetup: () => this.performSetup(),
343
- onConfigSync: () => this.performConfigSync(),
344
- });
345
- 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)}`);
346
- await this.client.submitResult(commandId, result, this.agentId);
347
- logger_1.logger.info((0, i18n_1.t)('runner.commandDone', {
348
- prefix: this.prefix,
349
- commandId,
350
- result: result.success ? 'success' : 'failed',
351
- }));
171
+ (0, agent_transport_1.startPollingMode)(this.transportDeps, this.transportState, commandContext);
352
172
  }
353
- catch (error) {
354
- const message = (0, utils_1.getErrorMessage)(error);
355
- logger_1.logger.error((0, i18n_1.t)('runner.commandError', { prefix: this.prefix, commandId, message }));
356
- try {
357
- await this.client.submitResult(commandId, {
358
- success: false,
359
- error: message,
360
- }, this.agentId);
361
- }
362
- catch {
363
- logger_1.logger.error((0, i18n_1.t)('runner.resultSendFailed', { prefix: this.prefix }));
364
- }
365
- }
366
- }
367
- async refreshChatMode(verbose) {
368
- this.availableChatModes = await (0, chat_mode_detector_1.detectAvailableChatModes)();
369
- if (verbose) {
370
- logger_1.logger.info(`${this.prefix} Available chat modes: ${JSON.stringify(this.availableChatModes)}`);
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);
371
177
  }
372
- try {
373
- this.serverConfig = await this.client.getConfig();
374
- if (verbose) {
375
- logger_1.logger.info(`${this.prefix} Server config loaded: chatMode=${this.serverConfig.chatMode}`);
376
- if (this.serverConfig.claudeCodeConfig) {
377
- logger_1.logger.debug(`${this.prefix} claudeCodeConfig: allowedTools=[${this.serverConfig.claudeCodeConfig.allowedTools?.join(', ') ?? ''}], addDirs=[${this.serverConfig.claudeCodeConfig.addDirs?.join(', ') ?? ''}]`);
378
- }
379
- }
380
- }
381
- catch (error) {
382
- if (verbose) {
383
- logger_1.logger.warn(`${this.prefix} Failed to load server config, using defaults: ${(0, utils_1.getErrorMessage)(error)}`);
384
- }
385
- }
386
- this.activeChatMode = (0, chat_mode_detector_1.resolveActiveChatMode)(this.availableChatModes, this.localAgentChatMode, this.serverConfig?.defaultAgentChatMode);
387
- if (verbose) {
388
- logger_1.logger.info(`${this.prefix} Active chat mode: ${this.activeChatMode ?? 'none'}`);
389
- }
390
- }
391
- async checkPendingCommands() {
392
- try {
393
- const pending = await this.client.getPendingCommands(this.agentId);
394
- for (const cmd of pending) {
395
- await this.handleNotification({
396
- id: cmd.commandId,
397
- table: '',
398
- pk: '',
399
- sk: '',
400
- tenantCode: '',
401
- action: 'agent-command',
402
- content: { commandId: cmd.commandId, type: cmd.type },
403
- });
404
- }
405
- }
406
- catch (error) {
407
- 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)`);
408
180
  }
409
181
  }
410
182
  }
411
183
  exports.ProjectAgent = ProjectAgent;
412
- /**
413
- * MCP サーバースクリプトのパスを解決する
414
- *
415
- * ts-node/tsx で実行時は __dirname が src/ を指すため server.js が存在しない。
416
- * その場合は dist/mcp/server.js にフォールバックする。
417
- */
418
- function resolveMcpServerPath() {
419
- const candidate = (0, path_1.join)(__dirname, 'mcp', 'server.js');
420
- if ((0, fs_1.existsSync)(candidate))
421
- return candidate;
422
- // ts-node 実行時: src/ → dist/ に置換
423
- const distCandidate = (0, path_1.resolve)(__dirname, '..', 'dist', 'mcp', 'server.js');
424
- if ((0, fs_1.existsSync)(distCandidate))
425
- return distCandidate;
426
- // どちらも見つからない場合は元のパスを返す(エラーは呼び出し元でハンドリング)
427
- logger_1.logger.warn(`[mcp] MCP server script not found at ${candidate} or ${distCandidate}`);
428
- return candidate;
429
- }
430
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AAExB,6CAAwC;AACxC,6DAAwD;AACxD,2DAAiI;AACjI,uDAA2K;AAC3K,2CAAiG;AACjG,iCAA0B;AAC1B,qCAAiC;AACjC,+CAA8C;AAC9C,+CAAiD;AAEjD,mCAAyC;AAOzC,MAAa,YAAY;IAiCJ;IACA;IAjCF,MAAM,CAAW;IACjB,MAAM,CAAQ;IACd,UAAU,CAAQ;IAClB,UAAU,CAAoB;IAC9B,MAAM,CAAQ;IACd,KAAK,CAAQ;IACb,WAAW,CAAQ;IAEnB,eAAe,GAAoB;QAClD,iBAAiB,EAAE,SAAS;QAC5B,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,IAAI;QAClB,kBAAkB,EAAE,EAAE;QACtB,cAAc,EAAE,SAAS;QACzB,aAAa,EAAE,SAAS;KACzB,CAAA;IAEgB,cAAc,CAAgB;IAE9B,cAAc,GAAmB;QAChD,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,KAAK;QACjB,uBAAuB,EAAE,IAAI;KAC9B,CAAA;IAEgB,aAAa,CAAe;IAE7C,YACE,OAA4B,EACX,OAAe,EACf,OAA4B,EAC7C,UAAmB,EACnB,kBAAkC,EAClC,iBAA0B;QAJT,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAqB;QAK7C,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAS,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,GAAG,CAAA;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAA;QACnD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACtC,IAAI,CAAC,UAAU,GAAG,IAAA,4BAAc,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;QAE5D,IAAI,CAAC,cAAc,GAAG;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB;SACnB,CAAA;QAED,IAAI,CAAC,aAAa,GAAG;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;SAClD,CAAA;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,eAAM,CAAC,KAAK,CAAC,IAAA,QAAC,EAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI;QACF,IAAA,+BAAa,EAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACpC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAA,qCAAiB,EAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAA,gCAAY,EAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IAC/D,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,IAAA,mCAAe,EAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;QAEtE,IAAI,MAAwB,CAAA;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAClC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACvB,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACjB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;gBACf,SAAS,EAAE,IAAA,+BAAiB,GAAE;gBAC9B,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC;gBACxF,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB;gBAC3D,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc;aACpD,CAAC,CAAA;YACF,eAAM,CAAC,OAAO,CAAC,IAAA,QAAC,EAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YACxF,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,qCAAqC,MAAM,CAAC,aAAa,IAAI,MAAM,gBAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3J,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,IAAA,QAAC,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;YAClG,OAAM;QACR,CAAC;QAED,2CAA2C;QAC3C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,2CAA+B,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5E,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;YAC9B,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB;gBAAE,MAAK;YACjD,IAAI,OAAO,GAAG,2CAA+B,EAAE,CAAC;gBAC9C,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,gCAAgC,OAAO,sBAAsB,CAAC,CAAA;gBACxF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,8CAAkC,GAAG,OAAO,CAAC,CAAC,CAAA;YACjG,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;YAC5C,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,+CAA+C,CAAC,CAAA;QAC5E,CAAC;QAED,MAAM,cAAc,GAAG;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;YAClC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE;SAC7C,CAAA;QAED,IAAI,MAAM,CAAC,aAAa,KAAK,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACrF,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,wCAAwC,CAAC,CAAA;YACnE,MAAM,IAAA,uCAAqB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,cAAc,EACd,sCAAiB,EACjB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,aAAa,CACrB,CAAA;QACH,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,qCAAqC,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,CAAC,CAAA;YAC9F,IAAA,kCAAgB,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;QAC3E,CAAC;QAED,IAAA,gCAAc,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAElG,8EAA8E;QAC9E,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,IAAA,wCAAsB,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QACjE,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,+CAA+C,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;CACF;AA/JD,oCA+JC"}
@@ -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":"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"}
@@ -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