@ai-support-agent/cli 0.0.4-beta.5 → 0.0.4-beta.7

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 (53) hide show
  1. package/dist/agent-runner.d.ts +1 -0
  2. package/dist/agent-runner.d.ts.map +1 -1
  3. package/dist/agent-runner.js +5 -5
  4. package/dist/agent-runner.js.map +1 -1
  5. package/dist/api-client.d.ts +4 -2
  6. package/dist/api-client.d.ts.map +1 -1
  7. package/dist/api-client.js +17 -2
  8. package/dist/api-client.js.map +1 -1
  9. package/dist/aws-profile.d.ts +38 -0
  10. package/dist/aws-profile.d.ts.map +1 -0
  11. package/dist/aws-profile.js +162 -0
  12. package/dist/aws-profile.js.map +1 -0
  13. package/dist/commands/chat-executor.d.ts +2 -2
  14. package/dist/commands/chat-executor.d.ts.map +1 -1
  15. package/dist/commands/chat-executor.js +108 -8
  16. package/dist/commands/chat-executor.js.map +1 -1
  17. package/dist/commands/index.d.ts +5 -1
  18. package/dist/commands/index.d.ts.map +1 -1
  19. package/dist/commands/index.js +13 -1
  20. package/dist/commands/index.js.map +1 -1
  21. package/dist/commands/set-project-dir.d.ts +3 -0
  22. package/dist/commands/set-project-dir.d.ts.map +1 -0
  23. package/dist/commands/set-project-dir.js +42 -0
  24. package/dist/commands/set-project-dir.js.map +1 -0
  25. package/dist/config-manager.d.ts +8 -0
  26. package/dist/config-manager.d.ts.map +1 -1
  27. package/dist/config-manager.js +23 -0
  28. package/dist/config-manager.js.map +1 -1
  29. package/dist/constants.d.ts +3 -0
  30. package/dist/constants.d.ts.map +1 -1
  31. package/dist/constants.js +4 -1
  32. package/dist/constants.js.map +1 -1
  33. package/dist/index.js +53 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/locales/en.json +13 -1
  36. package/dist/locales/ja.json +13 -1
  37. package/dist/locales/locales/en.json +13 -1
  38. package/dist/locales/locales/ja.json +13 -1
  39. package/dist/project-agent.d.ts +10 -1
  40. package/dist/project-agent.d.ts.map +1 -1
  41. package/dist/project-agent.js +109 -16
  42. package/dist/project-agent.js.map +1 -1
  43. package/dist/project-config-sync.d.ts +18 -0
  44. package/dist/project-config-sync.d.ts.map +1 -0
  45. package/dist/project-config-sync.js +126 -0
  46. package/dist/project-config-sync.js.map +1 -0
  47. package/dist/project-dir.d.ts +38 -0
  48. package/dist/project-dir.d.ts.map +1 -0
  49. package/dist/project-dir.js +147 -0
  50. package/dist/project-dir.js.map +1 -0
  51. package/dist/types.d.ts +74 -1
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -39,10 +39,13 @@ const api_client_1 = require("./api-client");
39
39
  const appsync_subscriber_1 = require("./appsync-subscriber");
40
40
  const chat_mode_detector_1 = require("./chat-mode-detector");
41
41
  const commands_1 = require("./commands");
42
+ const constants_1 = require("./constants");
42
43
  const i18n_1 = require("./i18n");
43
44
  const logger_1 = require("./logger");
45
+ const aws_profile_1 = require("./aws-profile");
46
+ const project_config_sync_1 = require("./project-config-sync");
47
+ const project_dir_1 = require("./project-dir");
44
48
  const system_info_1 = require("./system-info");
45
- const constants_1 = require("./constants");
46
49
  const utils_1 = require("./utils");
47
50
  class ProjectAgent {
48
51
  agentId;
@@ -58,13 +61,21 @@ class ProjectAgent {
58
61
  availableChatModes = [];
59
62
  activeChatMode = undefined;
60
63
  localAgentChatMode;
61
- constructor(project, agentId, options, tenantCode, localAgentChatMode) {
64
+ projectDir;
65
+ currentConfigHash = undefined;
66
+ configSyncDebounceTimer = null;
67
+ projectConfig = undefined;
68
+ constructor(project, agentId, options, tenantCode, localAgentChatMode, defaultProjectDir) {
62
69
  this.agentId = agentId;
63
70
  this.options = options;
64
71
  this.client = new api_client_1.ApiClient(project.apiUrl, project.token);
65
72
  this.prefix = `[${project.projectCode}]`;
66
73
  this.tenantCode = tenantCode ?? project.projectCode;
67
74
  this.localAgentChatMode = localAgentChatMode;
75
+ // Resolve project directory if configured
76
+ if (project.projectDir || defaultProjectDir) {
77
+ this.projectDir = (0, project_dir_1.initProjectDir)(project, defaultProjectDir);
78
+ }
68
79
  }
69
80
  start() {
70
81
  this.registerAndStart().catch((error) => {
@@ -76,6 +87,8 @@ class ProjectAgent {
76
87
  clearInterval(this.heartbeatTimer);
77
88
  if (this.pollTimer)
78
89
  clearInterval(this.pollTimer);
90
+ if (this.configSyncDebounceTimer)
91
+ clearTimeout(this.configSyncDebounceTimer);
79
92
  if (this.subscriber)
80
93
  this.subscriber.disconnect();
81
94
  }
@@ -103,6 +116,8 @@ class ProjectAgent {
103
116
  logger_1.logger.error((0, i18n_1.t)('runner.registerFailed', { prefix: this.prefix, message: (0, utils_1.getErrorMessage)(error) }));
104
117
  return;
105
118
  }
119
+ // Perform initial config sync
120
+ await this.performConfigSync();
106
121
  if (result.transportMode === 'realtime' && result.appsyncUrl && result.appsyncApiKey) {
107
122
  logger_1.logger.info(`${this.prefix} Starting subscription mode (realtime)`);
108
123
  await this.startSubscriptionMode(result);
@@ -160,7 +175,15 @@ class ProjectAgent {
160
175
  const sendHeartbeat = async () => {
161
176
  try {
162
177
  await this.refreshChatMode(false);
163
- await this.client.heartbeat(this.agentId, (0, system_info_1.getSystemInfo)(), undefined, this.availableChatModes, this.activeChatMode, (0, system_info_1.getLocalIpAddress)());
178
+ const response = await this.client.heartbeat(this.agentId, (0, system_info_1.getSystemInfo)(), undefined, this.availableChatModes, this.activeChatMode, (0, system_info_1.getLocalIpAddress)());
179
+ // Check configHash from heartbeat response (polling fallback)
180
+ if (response && typeof response === 'object' && 'configHash' in response) {
181
+ const heartbeatResponse = response;
182
+ if (heartbeatResponse.configHash && heartbeatResponse.configHash !== this.currentConfigHash) {
183
+ logger_1.logger.info(`${this.prefix} Config hash changed in heartbeat response, syncing...`);
184
+ this.scheduleConfigSync();
185
+ }
186
+ }
164
187
  logger_1.logger.debug(`${this.prefix} Heartbeat sent (activeChatMode=${this.activeChatMode ?? 'none'})`);
165
188
  }
166
189
  catch (error) {
@@ -174,21 +197,87 @@ class ProjectAgent {
174
197
  }
175
198
  async handleNotification(notification) {
176
199
  logger_1.logger.debug(`${this.prefix} Notification received: action=${notification.action}, content=${JSON.stringify(notification.content ?? {}).substring(0, constants_1.LOG_RESULT_LIMIT)}`);
177
- if (notification.action !== 'agent-command') {
178
- logger_1.logger.debug(`${this.prefix} Ignoring notification with action: ${notification.action}`);
179
- return;
200
+ switch (notification.action) {
201
+ case 'agent-command': {
202
+ const commandId = notification.content?.commandId;
203
+ if (!commandId) {
204
+ logger_1.logger.warn(`${this.prefix} Notification missing commandId: ${JSON.stringify(notification.content ?? {})}`);
205
+ return;
206
+ }
207
+ logger_1.logger.info((0, i18n_1.t)('runner.commandReceived', {
208
+ prefix: this.prefix,
209
+ type: notification.content?.type ?? 'unknown',
210
+ commandId,
211
+ }));
212
+ await this.processCommand(commandId);
213
+ break;
214
+ }
215
+ case 'config-update': {
216
+ await this.handleConfigUpdate(notification);
217
+ break;
218
+ }
219
+ default:
220
+ logger_1.logger.debug(`${this.prefix} Ignoring notification with action: ${notification.action}`);
180
221
  }
181
- const commandId = notification.content?.commandId;
182
- if (!commandId) {
183
- logger_1.logger.warn(`${this.prefix} Notification missing commandId: ${JSON.stringify(notification.content ?? {})}`);
184
- return;
222
+ }
223
+ async handleConfigUpdate(notification) {
224
+ const newHash = notification.content?.configHash;
225
+ if (newHash && newHash !== this.currentConfigHash) {
226
+ logger_1.logger.info(`${this.prefix} Config update detected (hash: ${newHash})`);
227
+ this.scheduleConfigSync();
228
+ }
229
+ }
230
+ scheduleConfigSync() {
231
+ if (this.configSyncDebounceTimer) {
232
+ clearTimeout(this.configSyncDebounceTimer);
233
+ }
234
+ this.configSyncDebounceTimer = setTimeout(() => {
235
+ void this.performConfigSync();
236
+ }, constants_1.CONFIG_SYNC_DEBOUNCE_MS);
237
+ }
238
+ async performConfigSync() {
239
+ const config = await (0, project_config_sync_1.syncProjectConfig)(this.client, this.currentConfigHash, this.projectDir, this.prefix);
240
+ if (config) {
241
+ this.applyProjectConfig(config);
242
+ }
243
+ }
244
+ async performSetup() {
245
+ logger_1.logger.info(`${this.prefix} Starting setup...`);
246
+ // 1. Config sync
247
+ await this.performConfigSync();
248
+ // 2. Download documentation (future: repos clone)
249
+ if (this.projectConfig?.documentation?.sources) {
250
+ logger_1.logger.info(`${this.prefix} Documentation sources found: ${this.projectConfig.documentation.sources.length}`);
251
+ // Documentation download will be implemented in a future phase
252
+ }
253
+ logger_1.logger.info(`${this.prefix} Setup completed`);
254
+ }
255
+ applyProjectConfig(config) {
256
+ this.currentConfigHash = config.configHash;
257
+ this.projectConfig = config;
258
+ // Update serverConfig from project config
259
+ this.serverConfig = {
260
+ agentEnabled: config.agent.agentEnabled,
261
+ builtinAgentEnabled: config.agent.builtinAgentEnabled,
262
+ builtinFallbackEnabled: config.agent.builtinFallbackEnabled,
263
+ externalAgentEnabled: config.agent.externalAgentEnabled,
264
+ chatMode: 'agent',
265
+ claudeCodeConfig: {
266
+ allowedTools: config.agent.allowedTools,
267
+ addDirs: config.agent.claudeCodeConfig?.additionalDirs,
268
+ systemPrompt: config.agent.claudeCodeConfig?.appendSystemPrompt,
269
+ },
270
+ };
271
+ // Write AWS config file if project directory and AWS accounts are configured
272
+ if (this.projectDir && config.aws?.accounts?.length) {
273
+ try {
274
+ (0, aws_profile_1.writeAwsConfig)(this.projectDir, config.project.projectCode, config.aws.accounts);
275
+ }
276
+ catch (error) {
277
+ logger_1.logger.warn(`${this.prefix} Failed to write AWS config: ${(0, utils_1.getErrorMessage)(error)}`);
278
+ }
185
279
  }
186
- logger_1.logger.info((0, i18n_1.t)('runner.commandReceived', {
187
- prefix: this.prefix,
188
- type: notification.content?.type ?? 'unknown',
189
- commandId,
190
- }));
191
- await this.processCommand(commandId);
280
+ logger_1.logger.info(`${this.prefix} Config applied (hash: ${config.configHash})`);
192
281
  }
193
282
  async processCommand(commandId) {
194
283
  try {
@@ -200,6 +289,10 @@ class ProjectAgent {
200
289
  serverConfig: this.serverConfig ?? undefined,
201
290
  activeChatMode: this.activeChatMode,
202
291
  agentId: this.agentId,
292
+ projectDir: this.projectDir,
293
+ projectConfig: this.projectConfig,
294
+ onSetup: () => this.performSetup(),
295
+ onConfigSync: () => this.performConfigSync(),
203
296
  });
204
297
  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)}`);
205
298
  await this.client.submitResult(commandId, result, this.agentId);
@@ -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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"}
@@ -0,0 +1,18 @@
1
+ import type { ApiClient } from './api-client';
2
+ import type { CachedProjectConfig, ProjectConfigResponse } from './types';
3
+ /**
4
+ * Sync project config from server.
5
+ * Returns the config if it was updated (different hash), or null if unchanged.
6
+ */
7
+ export declare function syncProjectConfig(client: ApiClient, currentHash: string | undefined, projectDir: string | undefined, prefix: string): Promise<ProjectConfigResponse | null>;
8
+ /**
9
+ * Save project config to cache (excluding AWS credentials).
10
+ * Uses atomic write (temp + rename) with 0o600 permissions.
11
+ */
12
+ export declare function saveCachedConfig(projectDir: string, config: ProjectConfigResponse): void;
13
+ /**
14
+ * Load cached project config.
15
+ * Returns null if cache doesn't exist or is corrupted.
16
+ */
17
+ export declare function loadCachedConfig(projectDir: string): CachedProjectConfig | null;
18
+ //# sourceMappingURL=project-config-sync.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,126 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.syncProjectConfig = syncProjectConfig;
37
+ exports.saveCachedConfig = saveCachedConfig;
38
+ exports.loadCachedConfig = loadCachedConfig;
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const project_dir_1 = require("./project-dir");
42
+ const logger_1 = require("./logger");
43
+ const CACHE_FILE_NAME = 'project-config.json';
44
+ /**
45
+ * Sync project config from server.
46
+ * Returns the config if it was updated (different hash), or null if unchanged.
47
+ */
48
+ async function syncProjectConfig(client, currentHash, projectDir, prefix) {
49
+ try {
50
+ const config = await client.getProjectConfig();
51
+ if (config.configHash === currentHash) {
52
+ logger_1.logger.debug(`${prefix} Config unchanged (hash: ${config.configHash})`);
53
+ return null;
54
+ }
55
+ logger_1.logger.info(`${prefix} Config updated: ${currentHash ?? 'none'} -> ${config.configHash}`);
56
+ if (projectDir) {
57
+ saveCachedConfig(projectDir, config);
58
+ }
59
+ return config;
60
+ }
61
+ catch (error) {
62
+ logger_1.logger.warn(`${prefix} Failed to sync project config: ${error}`);
63
+ // Try loading from cache on failure
64
+ if (projectDir) {
65
+ const cached = loadCachedConfig(projectDir);
66
+ if (cached && cached.configHash !== currentHash) {
67
+ logger_1.logger.info(`${prefix} Using cached config (hash: ${cached.configHash})`);
68
+ const { configHash: _hash, ...rest } = cached.config;
69
+ return {
70
+ configHash: cached.configHash,
71
+ ...rest,
72
+ };
73
+ }
74
+ }
75
+ return null;
76
+ }
77
+ }
78
+ /**
79
+ * Save project config to cache (excluding AWS credentials).
80
+ * Uses atomic write (temp + rename) with 0o600 permissions.
81
+ */
82
+ function saveCachedConfig(projectDir, config) {
83
+ try {
84
+ const cacheDir = (0, project_dir_1.getCacheDir)(projectDir);
85
+ if (!fs.existsSync(cacheDir)) {
86
+ fs.mkdirSync(cacheDir, { recursive: true, mode: 0o700 });
87
+ }
88
+ const cacheData = {
89
+ cachedAt: new Date().toISOString(),
90
+ configHash: config.configHash,
91
+ config: {
92
+ configHash: config.configHash,
93
+ project: config.project,
94
+ agent: config.agent,
95
+ documentation: config.documentation,
96
+ // aws is intentionally excluded from cache
97
+ },
98
+ };
99
+ 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);
103
+ logger_1.logger.debug(`Config cached to ${cachePath}`);
104
+ }
105
+ catch (error) {
106
+ logger_1.logger.warn(`Failed to save config cache: ${error}`);
107
+ }
108
+ }
109
+ /**
110
+ * Load cached project config.
111
+ * Returns null if cache doesn't exist or is corrupted.
112
+ */
113
+ function loadCachedConfig(projectDir) {
114
+ try {
115
+ const cachePath = path.join((0, project_dir_1.getCacheDir)(projectDir), CACHE_FILE_NAME);
116
+ if (!fs.existsSync(cachePath)) {
117
+ return null;
118
+ }
119
+ const data = fs.readFileSync(cachePath, 'utf-8');
120
+ return JSON.parse(data);
121
+ }
122
+ catch {
123
+ return null;
124
+ }
125
+ }
126
+ //# sourceMappingURL=project-config-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config-sync.js","sourceRoot":"","sources":["../src/project-config-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { ProjectRegistration } from './types';
2
+ /**
3
+ * Expand ~ and {projectCode} in a path template
4
+ */
5
+ export declare function expandPath(template: string, projectCode: string): string;
6
+ /**
7
+ * Resolve the project directory path.
8
+ * Priority: project.projectDir > defaultProjectDir template > default template
9
+ */
10
+ export declare function resolveProjectDir(project: ProjectRegistration, defaultProjectDir?: string): string;
11
+ /**
12
+ * Create project directory structure with proper permissions.
13
+ * Creates: repos/, docs/, artifacts/, uploads/, .ai-support-agent/cache/, .ai-support-agent/aws/
14
+ */
15
+ export declare function ensureProjectDirs(projectDir: string): void;
16
+ /**
17
+ * Resolve and ensure project directory.
18
+ * Returns the resolved path.
19
+ */
20
+ export declare function initProjectDir(project: ProjectRegistration, defaultProjectDir?: string): string;
21
+ /**
22
+ * Get directories that should be auto-added to Claude Code's --add-dir.
23
+ * Only returns dirs that actually exist.
24
+ */
25
+ export declare function getAutoAddDirs(projectDir: string): string[];
26
+ /**
27
+ * Get cache directory path
28
+ */
29
+ export declare function getCacheDir(projectDir: string): string;
30
+ /**
31
+ * Get AWS directory path
32
+ */
33
+ export declare function getAwsDir(projectDir: string): string;
34
+ /**
35
+ * Get metadata directory path
36
+ */
37
+ export declare function getMetadataDir(projectDir: string): string;
38
+ //# sourceMappingURL=project-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-dir.d.ts","sourceRoot":"","sources":["../src/project-dir.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AASlD;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA+B1D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,mBAAmB,EAC5B,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAS3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,147 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.expandPath = expandPath;
37
+ exports.resolveProjectDir = resolveProjectDir;
38
+ exports.ensureProjectDirs = ensureProjectDirs;
39
+ exports.initProjectDir = initProjectDir;
40
+ exports.getAutoAddDirs = getAutoAddDirs;
41
+ exports.getCacheDir = getCacheDir;
42
+ exports.getAwsDir = getAwsDir;
43
+ exports.getMetadataDir = getMetadataDir;
44
+ const fs = __importStar(require("fs"));
45
+ const os = __importStar(require("os"));
46
+ const path = __importStar(require("path"));
47
+ const logger_1 = require("./logger");
48
+ const i18n_1 = require("./i18n");
49
+ const DEFAULT_PROJECT_DIR_TEMPLATE = '~/ai-support-agent/projects/{projectCode}';
50
+ const PROJECT_SUBDIRS = ['repos', 'docs', 'artifacts', 'uploads'];
51
+ const METADATA_DIR = '.ai-support-agent';
52
+ const CACHE_DIR = 'cache';
53
+ const AWS_DIR = 'aws';
54
+ /**
55
+ * Expand ~ and {projectCode} in a path template
56
+ */
57
+ function expandPath(template, projectCode) {
58
+ return template
59
+ .replace(/^~(?=$|\/)/, os.homedir())
60
+ .replace(/\{projectCode\}/g, projectCode);
61
+ }
62
+ /**
63
+ * Resolve the project directory path.
64
+ * Priority: project.projectDir > defaultProjectDir template > default template
65
+ */
66
+ function resolveProjectDir(project, defaultProjectDir) {
67
+ if (project.projectDir) {
68
+ return expandPath(project.projectDir, project.projectCode);
69
+ }
70
+ const template = defaultProjectDir ?? DEFAULT_PROJECT_DIR_TEMPLATE;
71
+ return expandPath(template, project.projectCode);
72
+ }
73
+ /**
74
+ * Create project directory structure with proper permissions.
75
+ * Creates: repos/, docs/, artifacts/, uploads/, .ai-support-agent/cache/, .ai-support-agent/aws/
76
+ */
77
+ function ensureProjectDirs(projectDir) {
78
+ // Create project root
79
+ if (!fs.existsSync(projectDir)) {
80
+ fs.mkdirSync(projectDir, { recursive: true, mode: 0o700 });
81
+ }
82
+ // Create subdirectories
83
+ for (const subdir of PROJECT_SUBDIRS) {
84
+ const dirPath = path.join(projectDir, subdir);
85
+ if (!fs.existsSync(dirPath)) {
86
+ fs.mkdirSync(dirPath, { recursive: true });
87
+ }
88
+ }
89
+ // Create metadata directory
90
+ const metadataDir = path.join(projectDir, METADATA_DIR);
91
+ if (!fs.existsSync(metadataDir)) {
92
+ fs.mkdirSync(metadataDir, { recursive: true, mode: 0o700 });
93
+ }
94
+ // Create cache directory
95
+ const cacheDir = path.join(metadataDir, CACHE_DIR);
96
+ if (!fs.existsSync(cacheDir)) {
97
+ fs.mkdirSync(cacheDir, { recursive: true, mode: 0o700 });
98
+ }
99
+ // Create aws directory
100
+ const awsDir = path.join(metadataDir, AWS_DIR);
101
+ if (!fs.existsSync(awsDir)) {
102
+ fs.mkdirSync(awsDir, { recursive: true, mode: 0o700 });
103
+ }
104
+ }
105
+ /**
106
+ * Resolve and ensure project directory.
107
+ * Returns the resolved path.
108
+ */
109
+ function initProjectDir(project, defaultProjectDir) {
110
+ const projectDir = resolveProjectDir(project, defaultProjectDir);
111
+ ensureProjectDirs(projectDir);
112
+ logger_1.logger.info((0, i18n_1.t)('projectDir.initialized', { projectDir, projectCode: project.projectCode }));
113
+ return projectDir;
114
+ }
115
+ /**
116
+ * Get directories that should be auto-added to Claude Code's --add-dir.
117
+ * Only returns dirs that actually exist.
118
+ */
119
+ function getAutoAddDirs(projectDir) {
120
+ const dirs = [];
121
+ for (const subdir of ['repos', 'docs']) {
122
+ const dirPath = path.join(projectDir, subdir);
123
+ if (fs.existsSync(dirPath)) {
124
+ dirs.push(dirPath);
125
+ }
126
+ }
127
+ return dirs;
128
+ }
129
+ /**
130
+ * Get cache directory path
131
+ */
132
+ function getCacheDir(projectDir) {
133
+ return path.join(projectDir, METADATA_DIR, CACHE_DIR);
134
+ }
135
+ /**
136
+ * Get AWS directory path
137
+ */
138
+ function getAwsDir(projectDir) {
139
+ return path.join(projectDir, METADATA_DIR, AWS_DIR);
140
+ }
141
+ /**
142
+ * Get metadata directory path
143
+ */
144
+ function getMetadataDir(projectDir) {
145
+ return path.join(projectDir, METADATA_DIR);
146
+ }
147
+ //# sourceMappingURL=project-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-dir.js","sourceRoot":"","sources":["../src/project-dir.ts"],"names":[],"mappings":"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"}