@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
@@ -1,15 +1,63 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getErrorMessage = void 0;
3
7
  exports.mcpTextResponse = mcpTextResponse;
4
8
  exports.mcpErrorResponse = mcpErrorResponse;
5
- exports.extractErrorMessage = extractErrorMessage;
9
+ exports.mcpImageResponse = mcpImageResponse;
10
+ exports.getDetailedErrorMessage = getDetailedErrorMessage;
11
+ exports.withMcpErrorHandling = withMcpErrorHandling;
12
+ const axios_1 = __importDefault(require("axios"));
13
+ const utils_1 = require("../../utils");
14
+ Object.defineProperty(exports, "getErrorMessage", { enumerable: true, get: function () { return utils_1.getErrorMessage; } });
6
15
  function mcpTextResponse(text) {
7
16
  return { content: [{ type: 'text', text }] };
8
17
  }
9
18
  function mcpErrorResponse(message) {
10
19
  return { content: [{ type: 'text', text: `Error: ${message}` }], isError: true };
11
20
  }
12
- function extractErrorMessage(error) {
13
- return error instanceof Error ? error.message : String(error);
21
+ function mcpImageResponse(base64Data, mimeType) {
22
+ return { content: [{ type: 'image', data: base64Data, mimeType }] };
23
+ }
24
+ /**
25
+ * エラーから詳細なメッセージを抽出する。
26
+ * AxiosError の場合はレスポンスボディの message/error フィールドとHTTPステータスコードを含める。
27
+ */
28
+ function getDetailedErrorMessage(error) {
29
+ if (axios_1.default.isAxiosError(error) && error.response) {
30
+ const status = error.response.status;
31
+ const data = error.response.data;
32
+ if (data) {
33
+ const serverMessage = data.message ?? data.error;
34
+ if (serverMessage) {
35
+ return `[${status}] ${serverMessage}`;
36
+ }
37
+ }
38
+ return `HTTP ${status}: ${error.message}`;
39
+ }
40
+ return (0, utils_1.getErrorMessage)(error);
41
+ }
42
+ /**
43
+ * MCP ツールハンドラのエラーハンドリングラッパー。
44
+ * ツール実装関数を受け取り、例外発生時に `mcpErrorResponse` へ変換して返す。
45
+ * AxiosError の場合はHTTPステータスとサーバーメッセージも含めた詳細なエラーを返す。
46
+ *
47
+ * @example
48
+ * server.tool('my_tool', schema, async (args) =>
49
+ * withMcpErrorHandling(async () => {
50
+ * const data = await fetchSomething(args)
51
+ * return mcpTextResponse(data)
52
+ * }),
53
+ * )
54
+ */
55
+ async function withMcpErrorHandling(fn) {
56
+ try {
57
+ return await fn();
58
+ }
59
+ catch (error) {
60
+ return mcpErrorResponse(getDetailedErrorMessage(error));
61
+ }
14
62
  }
15
63
  //# sourceMappingURL=mcp-response.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-response.js","sourceRoot":"","sources":["../../../src/mcp/tools/mcp-response.ts"],"names":[],"mappings":";;AAAA,0CAEC;AAED,4CAEC;AAED,kDAEC;AAVD,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AACvD,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAA;AACpG,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAc;IAChD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC"}
1
+ {"version":3,"file":"mcp-response.js","sourceRoot":"","sources":["../../../src/mcp/tools/mcp-response.ts"],"names":[],"mappings":";;;;;;AAWA,0CAEC;AAED,4CAEC;AAED,4CAEC;AAMD,0DAgBC;AAeD,oDAQC;AAlED,kDAAyB;AAEzB,uCAA6C;AAEpC,gGAFA,uBAAe,OAEA;AAOxB,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AACvD,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAA;AACpG,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,QAAgB;IACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,KAAc;IACpD,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAA2C,CAAA;QAEvE,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAA;YAChD,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,IAAI,MAAM,KAAK,aAAa,EAAE,CAAA;YACvC,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAAA;IAC3C,CAAC;IAED,OAAO,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,oBAAoB,CACxC,EAAgC;IAEhC,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,gBAAgB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;IACzD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-info.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/project-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG5C,0CAA0C;AAC1C,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,GAClB,IAAI,CA8CN"}
1
+ {"version":3,"file":"project-info.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/project-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG5C,0CAA0C;AAC1C,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,GAClB,IAAI,CA0CN"}
@@ -4,40 +4,35 @@ exports.registerProjectInfoTool = registerProjectInfoTool;
4
4
  const mcp_response_1 = require("./mcp-response");
5
5
  /** get_project_info ツールを MCP サーバーに登録する */
6
6
  function registerProjectInfoTool(server, apiClient, projectCode) {
7
- server.tool('get_project_info', 'Get project configuration information including databases, AWS accounts, and documentation sources.', {}, async () => {
8
- try {
9
- const config = await apiClient.getProjectConfig();
10
- const info = {
11
- project: config.project,
12
- };
13
- if (config.databases?.length) {
14
- info.databases = config.databases.map((db) => ({
15
- name: db.name,
16
- engine: db.engine,
17
- host: db.host,
18
- port: db.port,
19
- database: db.database,
20
- writePermissions: db.writePermissions,
21
- }));
22
- }
23
- if (config.aws?.accounts?.length) {
24
- info.awsAccounts = config.aws.accounts.map((acc) => ({
25
- id: acc.id,
26
- name: acc.name,
27
- region: acc.region,
28
- accountId: acc.accountId,
29
- isDefault: acc.isDefault,
30
- }));
31
- }
32
- if (config.documentation?.sources?.length) {
33
- info.documentation = config.documentation;
34
- }
35
- info.projectCode = projectCode;
36
- return (0, mcp_response_1.mcpTextResponse)(JSON.stringify(info, null, 2));
7
+ server.tool('get_project_info', 'Get project configuration information including databases, AWS accounts, and documentation sources.', {}, async () => (0, mcp_response_1.withMcpErrorHandling)(async () => {
8
+ const config = await apiClient.getProjectConfig();
9
+ const info = {
10
+ project: config.project,
11
+ };
12
+ if (config.databases?.length) {
13
+ info.databases = config.databases.map((db) => ({
14
+ name: db.name,
15
+ engine: db.engine,
16
+ host: db.host,
17
+ port: db.port,
18
+ database: db.database,
19
+ writePermissions: db.writePermissions,
20
+ }));
37
21
  }
38
- catch (error) {
39
- return (0, mcp_response_1.mcpErrorResponse)((0, mcp_response_1.extractErrorMessage)(error));
22
+ if (config.aws?.accounts?.length) {
23
+ info.awsAccounts = config.aws.accounts.map((acc) => ({
24
+ id: acc.id,
25
+ name: acc.name,
26
+ region: acc.region,
27
+ accountId: acc.accountId,
28
+ isDefault: acc.isDefault,
29
+ }));
40
30
  }
41
- });
31
+ if (config.documentation?.sources?.length) {
32
+ info.documentation = config.documentation;
33
+ }
34
+ info.projectCode = projectCode;
35
+ return (0, mcp_response_1.mcpTextResponse)(JSON.stringify(info, null, 2));
36
+ }));
42
37
  }
43
38
  //# sourceMappingURL=project-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-info.js","sourceRoot":"","sources":["../../../src/mcp/tools/project-info.ts"],"names":[],"mappings":";;AAMA,0DAkDC;AArDD,iDAAuF;AAEvF,0CAA0C;AAC1C,SAAgB,uBAAuB,CACrC,MAAiB,EACjB,SAAoB,EACpB,WAAmB;IAEnB,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,qGAAqG,EACrG,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;YAEjD,MAAM,IAAI,GAA4B;gBACpC,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAA;YAED,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC7C,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;iBACtC,CAAC,CAAC,CAAA;YACL,CAAC;YAED,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACnD,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC,CAAC,CAAA;YACL,CAAC;YAED,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;YAC3C,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;YAE9B,OAAO,IAAA,8BAAe,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAA,+BAAgB,EAAC,IAAA,kCAAmB,EAAC,KAAK,CAAC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"project-info.js","sourceRoot":"","sources":["../../../src/mcp/tools/project-info.ts"],"names":[],"mappings":";;AAMA,0DA8CC;AAjDD,iDAAsE;AAEtE,0CAA0C;AAC1C,SAAgB,uBAAuB,CACrC,MAAiB,EACjB,SAAoB,EACpB,WAAmB;IAEnB,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,qGAAqG,EACrG,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,IAAA,mCAAoB,EAAC,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;QAEjD,MAAM,IAAI,GAA4B;YACpC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAA;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;aACtC,CAAC,CAAC,CAAA;QACL,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACnD,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC,CAAC,CAAA;QACL,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;QAC3C,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAE9B,OAAO,IAAA,8BAAe,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { ApiClient } from '../../api-client';
3
+ export declare function registerReadConversationFileTool(server: McpServer, apiClient: ApiClient): void;
4
+ //# sourceMappingURL=read-conversation-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-conversation-file.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/read-conversation-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAI5C,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,GACnB,IAAI,CA8DN"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.registerReadConversationFileTool = registerReadConversationFileTool;
40
+ const axios_1 = __importDefault(require("axios"));
41
+ const zod_1 = require("zod");
42
+ const content_type_1 = require("../../utils/content-type");
43
+ const mcp_response_1 = require("./mcp-response");
44
+ function registerReadConversationFileTool(server, apiClient) {
45
+ server.tool('read_conversation_file', 'Read a file that was shared in the conversation. Use this to access previously uploaded files.', {
46
+ fileId: zod_1.z.string().describe('File ID from the conversation_files list'),
47
+ s3Key: zod_1.z.string().describe('S3 key from the conversation_files list'),
48
+ filename: zod_1.z.string().describe('Original filename for display'),
49
+ }, async ({ fileId, s3Key, filename }) => (0, mcp_response_1.withMcpErrorHandling)(async () => {
50
+ // Get presigned download URL from API
51
+ const { downloadUrl } = await apiClient.getDownloadUrl({
52
+ fileId,
53
+ s3Key,
54
+ });
55
+ // Determine content type from filename extension
56
+ const ext = filename.split('.').pop()?.toLowerCase() ?? '';
57
+ const contentType = (0, content_type_1.guessContentType)(ext); // ext without dot
58
+ if ((0, content_type_1.isImageMime)(contentType)) {
59
+ // For images, download as buffer and return base64
60
+ const response = await axios_1.default.get(downloadUrl, {
61
+ responseType: 'arraybuffer',
62
+ timeout: 30000,
63
+ });
64
+ const base64 = Buffer.from(response.data).toString('base64');
65
+ return (0, mcp_response_1.mcpImageResponse)(base64, contentType);
66
+ }
67
+ if ((0, content_type_1.isTextMime)(contentType) || (0, content_type_1.isTextExtension)(ext)) {
68
+ // For text files, download as UTF-8 string
69
+ const response = await axios_1.default.get(downloadUrl, {
70
+ responseType: 'text',
71
+ timeout: 30000,
72
+ });
73
+ return (0, mcp_response_1.mcpTextResponse)(`File: ${filename}\n\n${response.data}`);
74
+ }
75
+ // For binary files (xlsx, pdf, docx, etc.), download to a temp file
76
+ // and return the local path so Claude Code can process it with Bash tools
77
+ const response = await axios_1.default.get(downloadUrl, {
78
+ responseType: 'arraybuffer',
79
+ timeout: 60000,
80
+ });
81
+ const fs = await Promise.resolve().then(() => __importStar(require('fs')));
82
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
83
+ const os = await Promise.resolve().then(() => __importStar(require('os')));
84
+ const tmpDir = path.join(os.tmpdir(), 'ai-support-agent-files');
85
+ fs.mkdirSync(tmpDir, { recursive: true });
86
+ const tmpFilePath = path.join(tmpDir, filename);
87
+ fs.writeFileSync(tmpFilePath, Buffer.from(response.data));
88
+ return (0, mcp_response_1.mcpTextResponse)(`File "${filename}" (${contentType}) has been downloaded to: ${tmpFilePath}\n` +
89
+ `You can read or process this file using Bash or Read tools.`);
90
+ }));
91
+ }
92
+ //# sourceMappingURL=read-conversation-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-conversation-file.js","sourceRoot":"","sources":["../../../src/mcp/tools/read-conversation-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AgentChatMode, ProjectRegistration } from './types';
2
+ export declare class ProcessManager {
3
+ private readonly processes;
4
+ private readonly restartTimers;
5
+ private stopping;
6
+ forkProject(project: ProjectRegistration, agentId: string, options: {
7
+ pollInterval: number;
8
+ heartbeatInterval: number;
9
+ agentChatMode?: AgentChatMode;
10
+ defaultProjectDir?: string;
11
+ }): void;
12
+ private spawnChild;
13
+ private resetRestartCount;
14
+ private handleChildMessage;
15
+ private handleChildExit;
16
+ sendUpdateToAll(): void;
17
+ stopAll(timeoutMs?: number): Promise<void>;
18
+ getRunningCount(): number;
19
+ }
20
+ //# sourceMappingURL=process-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AASjE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmD;IACjF,OAAO,CAAC,QAAQ,CAAQ;IAExB,WAAW,CACT,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAA;QACpB,iBAAiB,EAAE,MAAM,CAAA;QACzB,aAAa,CAAC,EAAE,aAAa,CAAA;QAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B,GACA,IAAI;IAWP,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;IAyBvB,eAAe,IAAI,IAAI;IASjB,OAAO,CAAC,SAAS,GAAE,MAAsC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC/E,eAAe,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProcessManager = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const path_1 = require("path");
6
+ const constants_1 = require("./constants");
7
+ const ipc_types_1 = require("./ipc-types");
8
+ const logger_1 = require("./logger");
9
+ class ProcessManager {
10
+ processes = new Map();
11
+ restartTimers = new Map();
12
+ stopping = false;
13
+ forkProject(project, agentId, options) {
14
+ const startMessage = {
15
+ type: 'start',
16
+ project,
17
+ agentId,
18
+ options,
19
+ };
20
+ this.spawnChild(project.projectCode, startMessage);
21
+ }
22
+ spawnChild(projectCode, startMessage) {
23
+ const workerPath = (0, path_1.join)(__dirname, 'project-worker.js');
24
+ const child = (0, child_process_1.fork)(workerPath, [], {
25
+ stdio: ['pipe', 'inherit', 'inherit', 'ipc'],
26
+ });
27
+ const managed = {
28
+ child,
29
+ project: startMessage.project,
30
+ restartCount: this.processes.get(projectCode)?.restartCount ?? 0,
31
+ startMessage,
32
+ };
33
+ this.processes.set(projectCode, managed);
34
+ child.on('message', (msg) => {
35
+ if (!(0, ipc_types_1.isChildToParentMessage)(msg))
36
+ return;
37
+ this.handleChildMessage(msg);
38
+ });
39
+ child.on('exit', (code, signal) => {
40
+ if (this.stopping)
41
+ return;
42
+ logger_1.logger.warn(`Child process for ${projectCode} exited (code=${code}, signal=${signal})`);
43
+ this.handleChildExit(projectCode);
44
+ });
45
+ child.send(startMessage);
46
+ logger_1.logger.info(`Forked child process for ${projectCode} (pid=${child.pid})`);
47
+ }
48
+ resetRestartCount(projectCode) {
49
+ const managed = this.processes.get(projectCode);
50
+ if (managed)
51
+ managed.restartCount = 0;
52
+ }
53
+ handleChildMessage(msg) {
54
+ switch (msg.type) {
55
+ case 'started':
56
+ logger_1.logger.info(`Project ${msg.projectCode} started in child process`);
57
+ this.resetRestartCount(msg.projectCode);
58
+ break;
59
+ case 'error':
60
+ logger_1.logger.error(`Project ${msg.projectCode} error: ${msg.message}`);
61
+ break;
62
+ case 'stopped':
63
+ logger_1.logger.info(`Project ${msg.projectCode} stopped`);
64
+ break;
65
+ }
66
+ }
67
+ handleChildExit(projectCode) {
68
+ const managed = this.processes.get(projectCode);
69
+ if (!managed)
70
+ return;
71
+ if (managed.restartCount >= constants_1.CHILD_PROCESS_MAX_RESTARTS) {
72
+ logger_1.logger.error(`Project ${projectCode} exceeded max restarts (${constants_1.CHILD_PROCESS_MAX_RESTARTS}). Not restarting.`);
73
+ this.processes.delete(projectCode);
74
+ return;
75
+ }
76
+ managed.restartCount++;
77
+ logger_1.logger.info(`Restarting ${projectCode} in ${constants_1.CHILD_PROCESS_RESTART_DELAY_MS}ms (attempt ${managed.restartCount}/${constants_1.CHILD_PROCESS_MAX_RESTARTS})`);
78
+ const timer = setTimeout(() => {
79
+ this.restartTimers.delete(projectCode);
80
+ if (this.stopping)
81
+ return;
82
+ this.spawnChild(projectCode, managed.startMessage);
83
+ }, constants_1.CHILD_PROCESS_RESTART_DELAY_MS);
84
+ this.restartTimers.set(projectCode, timer);
85
+ }
86
+ sendUpdateToAll() {
87
+ for (const [projectCode, managed] of this.processes) {
88
+ if (managed.child.connected) {
89
+ managed.child.send({ type: 'update' });
90
+ logger_1.logger.debug(`Sent update to ${projectCode}`);
91
+ }
92
+ }
93
+ }
94
+ async stopAll(timeoutMs = constants_1.CHILD_PROCESS_STOP_TIMEOUT_MS) {
95
+ this.stopping = true;
96
+ for (const timer of this.restartTimers.values())
97
+ clearTimeout(timer);
98
+ this.restartTimers.clear();
99
+ const shutdownPromises = [];
100
+ for (const [projectCode, managed] of this.processes) {
101
+ if (managed.child.connected) {
102
+ managed.child.send({ type: 'shutdown' });
103
+ logger_1.logger.debug(`Sent shutdown to ${projectCode}`);
104
+ }
105
+ shutdownPromises.push(new Promise((resolve) => {
106
+ const timer = setTimeout(() => {
107
+ logger_1.logger.warn(`Force killing ${projectCode} (timeout)`);
108
+ managed.child.kill('SIGKILL');
109
+ resolve();
110
+ }, timeoutMs);
111
+ managed.child.once('exit', () => {
112
+ clearTimeout(timer);
113
+ resolve();
114
+ });
115
+ }));
116
+ }
117
+ await Promise.all(shutdownPromises);
118
+ this.processes.clear();
119
+ }
120
+ getRunningCount() {
121
+ return this.processes.size;
122
+ }
123
+ }
124
+ exports.ProcessManager = ProcessManager;
125
+ //# sourceMappingURL=process-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"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"}
@@ -7,41 +7,23 @@ export interface ProjectAgentOptions {
7
7
  export declare class ProjectAgent {
8
8
  private readonly agentId;
9
9
  private readonly options;
10
- private heartbeatTimer;
11
- private pollTimer;
12
- private subscriber;
13
- private processing;
14
10
  private readonly client;
15
11
  private readonly prefix;
16
12
  private readonly tenantCode;
17
- private serverConfig;
18
- private availableChatModes;
19
- private activeChatMode;
20
- private readonly localAgentChatMode;
21
13
  private readonly projectDir;
22
- private currentConfigHash;
23
- private configSyncDebounceTimer;
24
- private projectConfig;
25
- private mcpConfigPath;
26
14
  private readonly apiUrl;
27
15
  private readonly token;
28
16
  private readonly projectCode;
17
+ private readonly configSyncState;
18
+ private readonly configSyncDeps;
19
+ private readonly transportState;
20
+ private readonly transportDeps;
29
21
  constructor(project: ProjectRegistration, agentId: string, options: ProjectAgentOptions, tenantCode?: string, localAgentChatMode?: AgentChatMode, defaultProjectDir?: string);
30
22
  start(): void;
31
23
  stop(): void;
32
24
  getClient(): ApiClient;
33
- private registerAndStart;
34
- private startSubscriptionMode;
35
- private startPollingMode;
36
- private startHeartbeat;
37
- private handleNotification;
38
- private handleConfigUpdate;
39
- private scheduleConfigSync;
40
25
  performConfigSync(): Promise<void>;
41
26
  performSetup(): Promise<void>;
42
- private applyProjectConfig;
43
- private processCommand;
44
- private refreshChatMode;
45
- private checkPendingCommands;
27
+ private registerAndStart;
46
28
  }
47
29
  //# sourceMappingURL=project-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-agent.d.ts","sourceRoot":"","sources":["../src/project-agent.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAYxC,OAAO,KAAK,EAAE,aAAa,EAA4C,mBAAmB,EAAoB,MAAM,SAAS,CAAA;AAG7H,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,YAAY;IAuBrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAvB1B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,uBAAuB,CAA6C;IAC5E,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;gBAGlC,OAAO,EAAE,mBAAmB,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,EAC7C,UAAU,CAAC,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,aAAa,EAClC,iBAAiB,CAAC,EAAE,MAAM;IAa5B,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAOZ,SAAS,IAAI,SAAS;YAIR,gBAAgB;YA8ChB,qBAAqB;IAuBnC,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,cAAc;YAoCR,kBAAkB;YA2BlB,kBAAkB;IAQhC,OAAO,CAAC,kBAAkB;IASpB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC,OAAO,CAAC,kBAAkB;YAqDZ,cAAc;YAwCd,eAAe;YA8Bf,oBAAoB;CAkBnC"}
1
+ {"version":3,"file":"project-agent.d.ts","sourceRoot":"","sources":["../src/project-agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AASxC,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAoB,MAAM,SAAS,CAAA;AAGnF,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,YAAY;IAiCrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAO/B;IAED,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAO9B;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAG3C,OAAO,EAAE,mBAAmB,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,EAC7C,UAAU,CAAC,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,aAAa,EAClC,iBAAiB,CAAC,EAAE,MAAM;IAiC5B,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAIZ,SAAS,IAAI,SAAS;IAIhB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAIrB,gBAAgB;CAmE/B"}