@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.
- package/dist/agent-runner.d.ts +1 -0
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +5 -5
- package/dist/agent-runner.js.map +1 -1
- package/dist/api-client.d.ts +4 -2
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +17 -2
- package/dist/api-client.js.map +1 -1
- package/dist/aws-profile.d.ts +38 -0
- package/dist/aws-profile.d.ts.map +1 -0
- package/dist/aws-profile.js +162 -0
- package/dist/aws-profile.js.map +1 -0
- package/dist/commands/chat-executor.d.ts +2 -2
- package/dist/commands/chat-executor.d.ts.map +1 -1
- package/dist/commands/chat-executor.js +108 -8
- package/dist/commands/chat-executor.js.map +1 -1
- package/dist/commands/index.d.ts +5 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +13 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/set-project-dir.d.ts +3 -0
- package/dist/commands/set-project-dir.d.ts.map +1 -0
- package/dist/commands/set-project-dir.js +42 -0
- package/dist/commands/set-project-dir.js.map +1 -0
- package/dist/config-manager.d.ts +8 -0
- package/dist/config-manager.d.ts.map +1 -1
- package/dist/config-manager.js +23 -0
- package/dist/config-manager.js.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/locales/en.json +13 -1
- package/dist/locales/ja.json +13 -1
- package/dist/locales/locales/en.json +13 -1
- package/dist/locales/locales/ja.json +13 -1
- package/dist/project-agent.d.ts +10 -1
- package/dist/project-agent.d.ts.map +1 -1
- package/dist/project-agent.js +109 -16
- package/dist/project-agent.js.map +1 -1
- package/dist/project-config-sync.d.ts +18 -0
- package/dist/project-config-sync.d.ts.map +1 -0
- package/dist/project-config-sync.js +126 -0
- package/dist/project-config-sync.js.map +1 -0
- package/dist/project-dir.d.ts +38 -0
- package/dist/project-dir.d.ts.map +1 -0
- package/dist/project-dir.js +147 -0
- package/dist/project-dir.js.map +1 -0
- package/dist/types.d.ts +74 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/agent-runner.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare function startProjectAgent(project: ProjectRegistration, agentId:
|
|
|
13
13
|
pollInterval: number;
|
|
14
14
|
heartbeatInterval: number;
|
|
15
15
|
agentChatMode?: AgentChatMode;
|
|
16
|
+
defaultProjectDir?: string;
|
|
16
17
|
}): {
|
|
17
18
|
stop: () => void;
|
|
18
19
|
client: import('./api-client').ApiClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAOzE,OAAO,KAAK,EAAE,aAAa,EAAoB,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGnG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAOzE,OAAO,KAAK,EAAE,aAAa,EAAoB,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGnG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GACA;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,cAAc,EAAE,SAAS,CAAA;CAAE,CAOhE;AAYD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,EAAE,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAUN;AA4CD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGtE"}
|
package/dist/agent-runner.js
CHANGED
|
@@ -46,7 +46,7 @@ const project_agent_1 = require("./project-agent");
|
|
|
46
46
|
const system_info_1 = require("./system-info");
|
|
47
47
|
const utils_1 = require("./utils");
|
|
48
48
|
function startProjectAgent(project, agentId, options) {
|
|
49
|
-
const agent = new project_agent_1.ProjectAgent(project, agentId, options, undefined, options.agentChatMode);
|
|
49
|
+
const agent = new project_agent_1.ProjectAgent(project, agentId, options, undefined, options.agentChatMode, options.defaultProjectDir);
|
|
50
50
|
agent.start();
|
|
51
51
|
return {
|
|
52
52
|
stop: () => agent.stop(),
|
|
@@ -81,10 +81,10 @@ function resolveAutoUpdateConfig(options, config) {
|
|
|
81
81
|
...(options.updateChannel && { channel: options.updateChannel }),
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
function runSingleProject(project, agentId, options, agentChatMode) {
|
|
84
|
+
function runSingleProject(project, agentId, options, agentChatMode, defaultProjectDir) {
|
|
85
85
|
const { pollInterval, heartbeatInterval } = resolveIntervals(options);
|
|
86
86
|
logger_1.logger.info((0, i18n_1.t)('runner.starting'));
|
|
87
|
-
const agent = startProjectAgent(project, agentId, { pollInterval, heartbeatInterval, agentChatMode });
|
|
87
|
+
const agent = startProjectAgent(project, agentId, { pollInterval, heartbeatInterval, agentChatMode, defaultProjectDir });
|
|
88
88
|
const autoUpdateConfig = resolveAutoUpdateConfig(options);
|
|
89
89
|
let updater;
|
|
90
90
|
if (autoUpdateConfig.enabled) {
|
|
@@ -126,7 +126,7 @@ async function startAgent(options) {
|
|
|
126
126
|
token: options.token,
|
|
127
127
|
apiUrl: options.apiUrl,
|
|
128
128
|
};
|
|
129
|
-
runSingleProject(project, agentId, options, config?.agentChatMode);
|
|
129
|
+
runSingleProject(project, agentId, options, config?.agentChatMode, config?.defaultProjectDir);
|
|
130
130
|
(0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
@@ -159,7 +159,7 @@ async function startAgent(options) {
|
|
|
159
159
|
const agentId = config.agentId ?? os.hostname();
|
|
160
160
|
const { pollInterval, heartbeatInterval } = resolveIntervals(options);
|
|
161
161
|
logger_1.logger.info((0, i18n_1.t)('runner.startingMulti', { count: projects.length }));
|
|
162
|
-
const agents = projects.map((project) => startProjectAgent(project, agentId, { pollInterval, heartbeatInterval, agentChatMode: config.agentChatMode }));
|
|
162
|
+
const agents = projects.map((project) => startProjectAgent(project, agentId, { pollInterval, heartbeatInterval, agentChatMode: config.agentChatMode, defaultProjectDir: config.defaultProjectDir }));
|
|
163
163
|
(0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
|
|
164
164
|
const autoUpdateConfig = resolveAutoUpdateConfig(options, config);
|
|
165
165
|
let updater;
|
package/dist/agent-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/api-client.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { AgentCommand, AgentServerConfig, ChatChunk, CommandResult, PendingCommand, ReleaseChannel, RegisterRequest, RegisterResponse, SystemInfo, VersionInfo } from './types';
|
|
1
|
+
import type { AgentCommand, AgentServerConfig, AwsCredentials, ChatChunk, CommandResult, HeartbeatResponse, PendingCommand, ProjectConfigResponse, ReleaseChannel, RegisterRequest, RegisterResponse, SystemInfo, VersionInfo } from './types';
|
|
2
2
|
export declare class ApiClient {
|
|
3
3
|
private readonly client;
|
|
4
4
|
private readonly retry;
|
|
5
5
|
constructor(apiUrl: string, token: string);
|
|
6
6
|
register(request: RegisterRequest): Promise<RegisterResponse>;
|
|
7
|
-
heartbeat(agentId: string, systemInfo: SystemInfo, updateError?: string, availableChatModes?: string[], activeChatMode?: string, ipAddress?: string): Promise<void>;
|
|
7
|
+
heartbeat(agentId: string, systemInfo: SystemInfo, updateError?: string, availableChatModes?: string[], activeChatMode?: string, ipAddress?: string): Promise<HeartbeatResponse | void>;
|
|
8
8
|
getVersionInfo(channel?: ReleaseChannel): Promise<VersionInfo>;
|
|
9
9
|
getPendingCommands(agentId: string): Promise<PendingCommand[]>;
|
|
10
10
|
private validateCommandId;
|
|
@@ -12,6 +12,8 @@ export declare class ApiClient {
|
|
|
12
12
|
submitResult(commandId: string, result: CommandResult, agentId: string): Promise<void>;
|
|
13
13
|
reportConnectionStatus(agentId: string, status: 'connected' | 'disconnected'): Promise<void>;
|
|
14
14
|
getConfig(): Promise<AgentServerConfig>;
|
|
15
|
+
getProjectConfig(): Promise<ProjectConfigResponse>;
|
|
16
|
+
getAwsCredentials(awsAccountId: string): Promise<AwsCredentials>;
|
|
15
17
|
submitChatChunk(commandId: string, chunk: ChatChunk, agentId: string): Promise<void>;
|
|
16
18
|
}
|
|
17
19
|
//# sourceMappingURL=api-client.d.ts.map
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAqBnC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkB7D,SAAS,CACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,cAAc,CAAC,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAqBnC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkB7D,SAAS,CACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,cAAc,CAAC,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiB9B,cAAc,CAAC,OAAO,GAAE,cAAyB,GAAG,OAAO,CAAC,WAAW,CAAC;IASxE,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAWpE,OAAO,CAAC,iBAAiB;IAMnB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAYrE,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAUV,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAAG,cAAc,GACnC,OAAO,CAAC,IAAI,CAAC;IAUV,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAUvC,gBAAgB,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAUlD,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAWhE,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;CASjB"}
|
package/dist/api-client.js
CHANGED
|
@@ -45,8 +45,8 @@ class ApiClient {
|
|
|
45
45
|
}
|
|
46
46
|
async heartbeat(agentId, systemInfo, updateError, availableChatModes, activeChatMode, ipAddress) {
|
|
47
47
|
logger_1.logger.debug('Sending heartbeat');
|
|
48
|
-
|
|
49
|
-
await this.client.post(constants_1.API_ENDPOINTS.HEARTBEAT, {
|
|
48
|
+
return this.retry.withRetry(async () => {
|
|
49
|
+
const { data } = await this.client.post(constants_1.API_ENDPOINTS.HEARTBEAT, {
|
|
50
50
|
agentId,
|
|
51
51
|
timestamp: Date.now(),
|
|
52
52
|
version: constants_1.AGENT_VERSION,
|
|
@@ -56,6 +56,7 @@ class ApiClient {
|
|
|
56
56
|
...(activeChatMode !== undefined && { activeChatMode }),
|
|
57
57
|
...(ipAddress && { ipAddress }),
|
|
58
58
|
});
|
|
59
|
+
return data;
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
async getVersionInfo(channel = 'latest') {
|
|
@@ -109,6 +110,20 @@ class ApiClient {
|
|
|
109
110
|
return data;
|
|
110
111
|
});
|
|
111
112
|
}
|
|
113
|
+
async getProjectConfig() {
|
|
114
|
+
logger_1.logger.debug('Fetching project config from server');
|
|
115
|
+
return this.retry.withRetry(async () => {
|
|
116
|
+
const { data } = await this.client.get(constants_1.API_ENDPOINTS.PROJECT_CONFIG);
|
|
117
|
+
return data;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async getAwsCredentials(awsAccountId) {
|
|
121
|
+
logger_1.logger.debug(`Fetching AWS credentials for account: ${awsAccountId}`);
|
|
122
|
+
return this.retry.withRetry(async () => {
|
|
123
|
+
const { data } = await this.client.get(constants_1.API_ENDPOINTS.AWS_CREDENTIALS, { params: { awsAccountId } });
|
|
124
|
+
return data;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
112
127
|
async submitChatChunk(commandId, chunk, agentId) {
|
|
113
128
|
this.validateCommandId(commandId);
|
|
114
129
|
logger_1.logger.debug(`Submitting chat chunk ${chunk.index} (${chunk.type}) for command: ${commandId}`);
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAiD;AAEjD,2CAAmH;AACnH,qCAAiC;AACjC,qDAAgD;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AwsCredentials, ProjectConfigResponse } from './types';
|
|
2
|
+
type AwsAccount = NonNullable<ProjectConfigResponse['aws']>['accounts'][number];
|
|
3
|
+
/**
|
|
4
|
+
* Generate profile name from project code and account.
|
|
5
|
+
* Uses profileName if available, otherwise falls back to name.
|
|
6
|
+
* Format: {projectCode}-{profileName|name}
|
|
7
|
+
*/
|
|
8
|
+
export declare function getProfileName(projectCode: string, account: string | {
|
|
9
|
+
name: string;
|
|
10
|
+
profileName?: string;
|
|
11
|
+
}): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generate AWS config file content in INI format.
|
|
14
|
+
* Contains profile definitions with region and SSO settings (if applicable).
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateAwsConfig(projectCode: string, accounts: AwsAccount[]): string;
|
|
17
|
+
/**
|
|
18
|
+
* Write AWS config file to project's aws directory.
|
|
19
|
+
* Uses atomic write (temp + rename) with 0o600 permissions.
|
|
20
|
+
*/
|
|
21
|
+
export declare function writeAwsConfig(projectDir: string, projectCode: string, accounts: AwsAccount[]): void;
|
|
22
|
+
/**
|
|
23
|
+
* Generate AWS credentials file content in INI format.
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateAwsCredentials(projectCode: string, credentialMap: Map<string, AwsCredentials>): string;
|
|
26
|
+
/**
|
|
27
|
+
* Write AWS credentials file to project's aws directory.
|
|
28
|
+
* Uses atomic write (temp + rename) with 0o600 permissions.
|
|
29
|
+
*/
|
|
30
|
+
export declare function writeAwsCredentials(projectDir: string, projectCode: string, credentialMap: Map<string, AwsCredentials>): void;
|
|
31
|
+
/**
|
|
32
|
+
* Build environment variables for Claude Code to use AWS profiles.
|
|
33
|
+
* Sets AWS_CONFIG_FILE and AWS_SHARED_CREDENTIALS_FILE to project-specific paths.
|
|
34
|
+
* Optionally sets AWS_PROFILE and AWS_DEFAULT_REGION for the default account.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildAwsProfileEnv(projectDir: string, projectCode: string, defaultAccountName?: string, defaultRegion?: string): Record<string, string>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=aws-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-profile.d.ts","sourceRoot":"","sources":["../src/aws-profile.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpE,KAAK,UAAU,GAAG,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAGpH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAuBrF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,UAAU,EAAE,GACrB,IAAI,CAiBN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,IAAI,CAiBN;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB"}
|
|
@@ -0,0 +1,162 @@
|
|
|
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.getProfileName = getProfileName;
|
|
37
|
+
exports.generateAwsConfig = generateAwsConfig;
|
|
38
|
+
exports.writeAwsConfig = writeAwsConfig;
|
|
39
|
+
exports.generateAwsCredentials = generateAwsCredentials;
|
|
40
|
+
exports.writeAwsCredentials = writeAwsCredentials;
|
|
41
|
+
exports.buildAwsProfileEnv = buildAwsProfileEnv;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const project_dir_1 = require("./project-dir");
|
|
45
|
+
const logger_1 = require("./logger");
|
|
46
|
+
/**
|
|
47
|
+
* Generate profile name from project code and account.
|
|
48
|
+
* Uses profileName if available, otherwise falls back to name.
|
|
49
|
+
* Format: {projectCode}-{profileName|name}
|
|
50
|
+
*/
|
|
51
|
+
function getProfileName(projectCode, account) {
|
|
52
|
+
const suffix = typeof account === 'string' ? account : (account.profileName || account.name);
|
|
53
|
+
return `${projectCode}-${suffix}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Generate AWS config file content in INI format.
|
|
57
|
+
* Contains profile definitions with region and SSO settings (if applicable).
|
|
58
|
+
*/
|
|
59
|
+
function generateAwsConfig(projectCode, accounts) {
|
|
60
|
+
const lines = [
|
|
61
|
+
`# Auto-generated by ai-support-agent for project: ${projectCode}`,
|
|
62
|
+
`# Do not edit manually - this file is overwritten on config sync`,
|
|
63
|
+
'',
|
|
64
|
+
];
|
|
65
|
+
for (const account of accounts) {
|
|
66
|
+
const profileName = getProfileName(projectCode, account);
|
|
67
|
+
lines.push(`[profile ${profileName}]`);
|
|
68
|
+
lines.push(`region = ${account.region}`);
|
|
69
|
+
if (account.auth.method === 'sso') {
|
|
70
|
+
lines.push(`sso_start_url = ${account.auth.startUrl}`);
|
|
71
|
+
lines.push(`sso_region = ${account.auth.ssoRegion}`);
|
|
72
|
+
lines.push(`sso_account_id = ${account.accountId}`);
|
|
73
|
+
lines.push(`sso_role_name = ${account.auth.permissionSetName}`);
|
|
74
|
+
}
|
|
75
|
+
lines.push('');
|
|
76
|
+
}
|
|
77
|
+
return lines.join('\n');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Write AWS config file to project's aws directory.
|
|
81
|
+
* Uses atomic write (temp + rename) with 0o600 permissions.
|
|
82
|
+
*/
|
|
83
|
+
function writeAwsConfig(projectDir, projectCode, accounts) {
|
|
84
|
+
try {
|
|
85
|
+
const awsDir = (0, project_dir_1.getAwsDir)(projectDir);
|
|
86
|
+
if (!fs.existsSync(awsDir)) {
|
|
87
|
+
fs.mkdirSync(awsDir, { recursive: true, mode: 0o700 });
|
|
88
|
+
}
|
|
89
|
+
const content = generateAwsConfig(projectCode, accounts);
|
|
90
|
+
const configPath = path.join(awsDir, 'config');
|
|
91
|
+
const tmpPath = configPath + '.tmp';
|
|
92
|
+
fs.writeFileSync(tmpPath, content, { mode: 0o600 });
|
|
93
|
+
fs.renameSync(tmpPath, configPath);
|
|
94
|
+
logger_1.logger.debug(`AWS config written to ${configPath} (${accounts.length} profiles)`);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger_1.logger.warn(`Failed to write AWS config: ${error}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Generate AWS credentials file content in INI format.
|
|
102
|
+
*/
|
|
103
|
+
function generateAwsCredentials(projectCode, credentialMap) {
|
|
104
|
+
const lines = [
|
|
105
|
+
`# Auto-generated by ai-support-agent for project: ${projectCode}`,
|
|
106
|
+
`# Do not edit manually - this file is overwritten on each chat command`,
|
|
107
|
+
'',
|
|
108
|
+
];
|
|
109
|
+
for (const [accountName, creds] of credentialMap) {
|
|
110
|
+
const profileName = getProfileName(projectCode, accountName);
|
|
111
|
+
lines.push(`[${profileName}]`);
|
|
112
|
+
lines.push(`aws_access_key_id = ${creds.accessKeyId}`);
|
|
113
|
+
lines.push(`aws_secret_access_key = ${creds.secretAccessKey}`);
|
|
114
|
+
if (creds.sessionToken) {
|
|
115
|
+
lines.push(`aws_session_token = ${creds.sessionToken}`);
|
|
116
|
+
}
|
|
117
|
+
lines.push(`region = ${creds.region}`);
|
|
118
|
+
lines.push('');
|
|
119
|
+
}
|
|
120
|
+
return lines.join('\n');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Write AWS credentials file to project's aws directory.
|
|
124
|
+
* Uses atomic write (temp + rename) with 0o600 permissions.
|
|
125
|
+
*/
|
|
126
|
+
function writeAwsCredentials(projectDir, projectCode, credentialMap) {
|
|
127
|
+
try {
|
|
128
|
+
const awsDir = (0, project_dir_1.getAwsDir)(projectDir);
|
|
129
|
+
if (!fs.existsSync(awsDir)) {
|
|
130
|
+
fs.mkdirSync(awsDir, { recursive: true, mode: 0o700 });
|
|
131
|
+
}
|
|
132
|
+
const content = generateAwsCredentials(projectCode, credentialMap);
|
|
133
|
+
const credentialsPath = path.join(awsDir, 'credentials');
|
|
134
|
+
const tmpPath = credentialsPath + '.tmp';
|
|
135
|
+
fs.writeFileSync(tmpPath, content, { mode: 0o600 });
|
|
136
|
+
fs.renameSync(tmpPath, credentialsPath);
|
|
137
|
+
logger_1.logger.debug(`AWS credentials written to ${credentialsPath} (${credentialMap.size} profiles)`);
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
logger_1.logger.warn(`Failed to write AWS credentials: ${error}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Build environment variables for Claude Code to use AWS profiles.
|
|
145
|
+
* Sets AWS_CONFIG_FILE and AWS_SHARED_CREDENTIALS_FILE to project-specific paths.
|
|
146
|
+
* Optionally sets AWS_PROFILE and AWS_DEFAULT_REGION for the default account.
|
|
147
|
+
*/
|
|
148
|
+
function buildAwsProfileEnv(projectDir, projectCode, defaultAccountName, defaultRegion) {
|
|
149
|
+
const awsDir = (0, project_dir_1.getAwsDir)(projectDir);
|
|
150
|
+
const env = {
|
|
151
|
+
AWS_CONFIG_FILE: path.join(awsDir, 'config'),
|
|
152
|
+
AWS_SHARED_CREDENTIALS_FILE: path.join(awsDir, 'credentials'),
|
|
153
|
+
};
|
|
154
|
+
if (defaultAccountName) {
|
|
155
|
+
env.AWS_PROFILE = getProfileName(projectCode, defaultAccountName);
|
|
156
|
+
}
|
|
157
|
+
if (defaultRegion) {
|
|
158
|
+
env.AWS_DEFAULT_REGION = defaultRegion;
|
|
159
|
+
}
|
|
160
|
+
return env;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=aws-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-profile.js","sourceRoot":"","sources":["../src/aws-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApiClient } from '../api-client';
|
|
2
|
-
import type { AgentChatMode, AgentServerConfig, ChatPayload, CommandResult } from '../types';
|
|
2
|
+
import type { AgentChatMode, AgentServerConfig, ChatPayload, CommandResult, ProjectConfigResponse } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* エージェントチャットモードに応じてチャットメッセージを処理する
|
|
5
5
|
* - claude_code: Claude Code CLI を使用(デフォルト)
|
|
@@ -7,7 +7,7 @@ import type { AgentChatMode, AgentServerConfig, ChatPayload, CommandResult } fro
|
|
|
7
7
|
*
|
|
8
8
|
* activeChatMode はサーバーの chatMode ではなく、エージェント内部の実行方式を指す
|
|
9
9
|
*/
|
|
10
|
-
export declare function executeChatCommand(payload: ChatPayload, commandId: string, client: ApiClient, serverConfig?: AgentServerConfig, activeChatMode?: AgentChatMode, agentId?: string): Promise<CommandResult>;
|
|
10
|
+
export declare function executeChatCommand(payload: ChatPayload, commandId: string, client: ApiClient, serverConfig?: AgentServerConfig, activeChatMode?: AgentChatMode, agentId?: string, projectDir?: string, projectConfig?: ProjectConfigResponse): Promise<CommandResult>;
|
|
11
11
|
/** CLAUDECODE / CLAUDE_CODE_* 環境変数を除外した env を構築 */
|
|
12
12
|
export declare function buildCleanEnv(): Record<string, string>;
|
|
13
13
|
/** Claude CLI の引数配列を構築 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-executor.d.ts","sourceRoot":"","sources":["../../src/commands/chat-executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAGzC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAiB,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"chat-executor.d.ts","sourceRoot":"","sources":["../../src/commands/chat-executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAGzC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAiB,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAiBlI;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,EACjB,YAAY,CAAC,EAAE,iBAAiB,EAChC,cAAc,CAAC,EAAE,aAAa,EAC9B,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC,aAAa,CAAC,CAcxB;AAmFD,mDAAmD;AACnD,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOtD;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GACA,MAAM,EAAE,CAqBV"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -20,7 +53,7 @@ const shared_chat_utils_1 = require("./shared-chat-utils");
|
|
|
20
53
|
*
|
|
21
54
|
* activeChatMode はサーバーの chatMode ではなく、エージェント内部の実行方式を指す
|
|
22
55
|
*/
|
|
23
|
-
async function executeChatCommand(payload, commandId, client, serverConfig, activeChatMode, agentId) {
|
|
56
|
+
async function executeChatCommand(payload, commandId, client, serverConfig, activeChatMode, agentId, projectDir, projectConfig) {
|
|
24
57
|
if (!agentId) {
|
|
25
58
|
return { success: false, error: constants_1.ERR_AGENT_ID_REQUIRED };
|
|
26
59
|
}
|
|
@@ -30,7 +63,7 @@ async function executeChatCommand(payload, commandId, client, serverConfig, acti
|
|
|
30
63
|
return (0, api_chat_executor_1.executeApiChatCommand)(payload, commandId, client, serverConfig, agentId);
|
|
31
64
|
case 'claude_code':
|
|
32
65
|
default:
|
|
33
|
-
return executeClaudeCodeChat(payload, commandId, client, agentId, serverConfig);
|
|
66
|
+
return executeClaudeCodeChat(payload, commandId, client, agentId, serverConfig, projectDir, projectConfig);
|
|
34
67
|
}
|
|
35
68
|
}
|
|
36
69
|
/**
|
|
@@ -38,7 +71,7 @@ async function executeChatCommand(payload, commandId, client, serverConfig, acti
|
|
|
38
71
|
* サブプロセスとして起動し、stdout をストリーミングで読み取り、
|
|
39
72
|
* チャンクとしてAPIに送信する
|
|
40
73
|
*/
|
|
41
|
-
async function executeClaudeCodeChat(payload, commandId, client, agentId, serverConfig) {
|
|
74
|
+
async function executeClaudeCodeChat(payload, commandId, client, agentId, serverConfig, projectDir, projectConfig) {
|
|
42
75
|
const message = (0, utils_1.parseString)(payload.message);
|
|
43
76
|
if (!message) {
|
|
44
77
|
return { success: false, error: constants_1.ERR_MESSAGE_REQUIRED };
|
|
@@ -47,11 +80,47 @@ async function executeClaudeCodeChat(payload, commandId, client, agentId, server
|
|
|
47
80
|
const { sendChunk, getChunkIndex } = (0, shared_chat_utils_1.createChunkSender)(commandId, client, agentId, 'chat', { debugLog: true });
|
|
48
81
|
try {
|
|
49
82
|
const allowedTools = serverConfig?.claudeCodeConfig?.allowedTools;
|
|
50
|
-
const
|
|
83
|
+
const serverAddDirs = serverConfig?.claudeCodeConfig?.addDirs ?? [];
|
|
84
|
+
// Merge project directory auto-add dirs with server-configured dirs
|
|
85
|
+
let addDirs;
|
|
86
|
+
if (projectDir) {
|
|
87
|
+
const { getAutoAddDirs } = await Promise.resolve().then(() => __importStar(require('../project-dir')));
|
|
88
|
+
const autoAddDirs = getAutoAddDirs(projectDir);
|
|
89
|
+
addDirs = [...autoAddDirs, ...serverAddDirs];
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
addDirs = serverAddDirs.length > 0 ? serverAddDirs : undefined;
|
|
93
|
+
}
|
|
51
94
|
const locale = (0, utils_1.parseString)(payload.locale) ?? undefined;
|
|
52
|
-
|
|
95
|
+
// AWS認証情報を取得(プロファイル方式 or 環境変数直接注入)
|
|
96
|
+
let awsEnv;
|
|
97
|
+
if (projectDir && projectConfig?.aws?.accounts?.length) {
|
|
98
|
+
// プロファイル方式: 全アカウントの認証情報を取得してプロファイルファイルに書き込み
|
|
99
|
+
awsEnv = await buildAwsProfileCredentials(client, projectDir, projectConfig);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// フォールバック: 単一アカウントの環境変数直接注入(従来方式)
|
|
103
|
+
const awsAccountId = (0, utils_1.parseString)(payload.awsAccountId) ?? undefined;
|
|
104
|
+
if (awsAccountId) {
|
|
105
|
+
try {
|
|
106
|
+
logger_1.logger.info(`[chat] Fetching AWS credentials for account: ${awsAccountId}`);
|
|
107
|
+
const creds = await client.getAwsCredentials(awsAccountId);
|
|
108
|
+
awsEnv = {
|
|
109
|
+
AWS_ACCESS_KEY_ID: creds.accessKeyId,
|
|
110
|
+
AWS_SECRET_ACCESS_KEY: creds.secretAccessKey,
|
|
111
|
+
AWS_DEFAULT_REGION: creds.region,
|
|
112
|
+
...(creds.sessionToken ? { AWS_SESSION_TOKEN: creds.sessionToken } : {}),
|
|
113
|
+
};
|
|
114
|
+
logger_1.logger.info(`[chat] AWS credentials obtained for region=${creds.region}`);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
logger_1.logger.warn(`[chat] Failed to get AWS credentials: ${(0, utils_1.getErrorMessage)(error)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
logger_1.logger.debug(`[chat] Spawning claude CLI for command [${commandId}]${allowedTools?.length ? ` with allowedTools: ${allowedTools.join(', ')}` : ' (no allowedTools)'}${addDirs?.length ? ` with addDirs: ${addDirs.join(', ')}` : ''}${locale ? ` locale=${locale}` : ''}${awsEnv ? ' with AWS credentials' : ''}`);
|
|
53
122
|
logger_1.logger.debug(`[chat] serverConfig.claudeCodeConfig: ${JSON.stringify(serverConfig?.claudeCodeConfig ?? null)}`);
|
|
54
|
-
const result = await runClaudeCode(message, sendChunk, allowedTools, addDirs, locale);
|
|
123
|
+
const result = await runClaudeCode(message, sendChunk, allowedTools, addDirs, locale, awsEnv);
|
|
55
124
|
logger_1.logger.info(`[chat] Chat command completed [${commandId}]: output=${result.text.length} chars, ${getChunkIndex()} chunks sent, duration=${result.metadata.durationMs}ms`);
|
|
56
125
|
// 完了チャンクを送信(metadata を含める)
|
|
57
126
|
const doneContent = JSON.stringify({
|
|
@@ -105,17 +174,18 @@ function buildClaudeArgs(message, options) {
|
|
|
105
174
|
/**
|
|
106
175
|
* Claude Code CLI をサブプロセスとして実行し、出力をストリーミングで返す
|
|
107
176
|
*/
|
|
108
|
-
async function runClaudeCode(message, sendChunk, allowedTools, addDirs, locale) {
|
|
177
|
+
async function runClaudeCode(message, sendChunk, allowedTools, addDirs, locale, awsEnv) {
|
|
109
178
|
return new Promise((resolve, reject) => {
|
|
110
179
|
const startTime = Date.now();
|
|
111
180
|
// claude CLI が利用可能か確認し、print モードで実行
|
|
112
181
|
// Claude Code セッション内からの起動時にネスト検出やSSEポート干渉を回避するため、
|
|
113
182
|
// CLAUDECODE および CLAUDE_CODE_* 環境変数を除外
|
|
114
183
|
const cleanEnv = buildCleanEnv();
|
|
184
|
+
const env = awsEnv ? { ...cleanEnv, ...awsEnv } : cleanEnv;
|
|
115
185
|
const args = buildClaudeArgs(message, { allowedTools, addDirs, locale });
|
|
116
186
|
const child = (0, child_process_1.spawn)('claude', args, {
|
|
117
187
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
118
|
-
env
|
|
188
|
+
env,
|
|
119
189
|
});
|
|
120
190
|
logger_1.logger.debug(`[chat] claude CLI spawned (pid=${child.pid}, cmd=claude ${args.map(a => a.includes(' ') ? `"${a}"` : a).join(' ')})`);
|
|
121
191
|
let fullOutput = '';
|
|
@@ -180,4 +250,34 @@ async function runClaudeCode(message, sendChunk, allowedTools, addDirs, locale)
|
|
|
180
250
|
});
|
|
181
251
|
});
|
|
182
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* プロファイル方式でAWS認証情報を構築する。
|
|
255
|
+
* 全アカウントの認証情報をサーバーから取得し、プロファイルファイルに書き込んで
|
|
256
|
+
* 環境変数(AWS_CONFIG_FILE, AWS_SHARED_CREDENTIALS_FILE 等)を返す。
|
|
257
|
+
*/
|
|
258
|
+
async function buildAwsProfileCredentials(client, projectDir, projectConfig) {
|
|
259
|
+
const accounts = projectConfig.aws?.accounts;
|
|
260
|
+
if (!accounts?.length)
|
|
261
|
+
return undefined;
|
|
262
|
+
const projectCode = projectConfig.project.projectCode;
|
|
263
|
+
const { writeAwsCredentials, buildAwsProfileEnv } = await Promise.resolve().then(() => __importStar(require('../aws-profile')));
|
|
264
|
+
const credentialMap = new Map();
|
|
265
|
+
for (const account of accounts) {
|
|
266
|
+
try {
|
|
267
|
+
logger_1.logger.info(`[chat] Fetching AWS credentials for profile: ${account.name} (${account.accountId})`);
|
|
268
|
+
const creds = await client.getAwsCredentials(account.accountId);
|
|
269
|
+
credentialMap.set(account.name, creds);
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
logger_1.logger.warn(`[chat] Failed to get AWS credentials for ${account.name}: ${(0, utils_1.getErrorMessage)(error)}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (credentialMap.size === 0)
|
|
276
|
+
return undefined;
|
|
277
|
+
// credentials ファイルに書き込み
|
|
278
|
+
writeAwsCredentials(projectDir, projectCode, credentialMap);
|
|
279
|
+
// デフォルトアカウントを特定
|
|
280
|
+
const defaultAccount = accounts.find((a) => a.isDefault) ?? accounts[0];
|
|
281
|
+
return buildAwsProfileEnv(projectDir, projectCode, defaultAccount.name, defaultAccount.region);
|
|
282
|
+
}
|
|
183
283
|
//# sourceMappingURL=chat-executor.js.map
|