@ai-support-agent/cli 0.0.4-beta.6 → 0.0.4-beta.8
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 +3 -2
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +10 -2
- package/dist/api-client.js.map +1 -1
- package/dist/appsync-subscriber.d.ts.map +1 -1
- package/dist/appsync-subscriber.js +6 -1
- package/dist/appsync-subscriber.js.map +1 -1
- package/dist/auth-server.js +1 -1
- package/dist/auth-server.js.map +1 -1
- package/dist/aws-credential-builder.d.ts +15 -0
- package/dist/aws-credential-builder.d.ts.map +1 -0
- package/dist/aws-credential-builder.js +95 -0
- package/dist/aws-credential-builder.js.map +1 -0
- 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/api-chat-executor.d.ts.map +1 -1
- package/dist/commands/api-chat-executor.js +1 -1
- package/dist/commands/api-chat-executor.js.map +1 -1
- package/dist/commands/chat-executor.d.ts +3 -10
- package/dist/commands/chat-executor.d.ts.map +1 -1
- package/dist/commands/chat-executor.js +64 -142
- package/dist/commands/chat-executor.js.map +1 -1
- package/dist/commands/claude-code-runner.d.ts +24 -0
- package/dist/commands/claude-code-runner.d.ts.map +1 -0
- package/dist/commands/claude-code-runner.js +126 -0
- package/dist/commands/claude-code-runner.js.map +1 -0
- package/dist/commands/file-executor.js +1 -1
- package/dist/commands/file-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 +14 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/process-executor.js +1 -1
- package/dist/commands/process-executor.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/commands/shell-executor.js +1 -1
- package/dist/commands/shell-executor.js.map +1 -1
- 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 +12 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +15 -2
- 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 +107 -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/retry-strategy.d.ts +6 -0
- package/dist/retry-strategy.d.ts.map +1 -1
- package/dist/retry-strategy.js +10 -2
- package/dist/retry-strategy.js.map +1 -1
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +2 -1
- package/dist/security.js.map +1 -1
- package/dist/types.d.ts +67 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -25,7 +25,7 @@ async function executeApiChatCommand(payload, commandId, client, config, agentId
|
|
|
25
25
|
if (!apiKey) {
|
|
26
26
|
return {
|
|
27
27
|
success: false,
|
|
28
|
-
error:
|
|
28
|
+
error: constants_1.ERR_ANTHROPIC_API_KEY_NOT_SET,
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
logger_1.logger.info(`[api-chat] Starting API chat command [${commandId}]: message="${(0, utils_1.truncateString)(message, constants_1.LOG_MESSAGE_LIMIT)}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-chat-executor.js","sourceRoot":"","sources":["../../src/commands/api-chat-executor.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"api-chat-executor.js","sourceRoot":"","sources":["../../src/commands/api-chat-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
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
|
+
export { buildClaudeArgs, buildCleanEnv } from './claude-code-runner';
|
|
3
4
|
/**
|
|
4
5
|
* エージェントチャットモードに応じてチャットメッセージを処理する
|
|
5
6
|
* - claude_code: Claude Code CLI を使用(デフォルト)
|
|
@@ -7,13 +8,5 @@ import type { AgentChatMode, AgentServerConfig, ChatPayload, CommandResult } fro
|
|
|
7
8
|
*
|
|
8
9
|
* activeChatMode はサーバーの chatMode ではなく、エージェント内部の実行方式を指す
|
|
9
10
|
*/
|
|
10
|
-
export declare function executeChatCommand(payload: ChatPayload, commandId: string, client: ApiClient, serverConfig?: AgentServerConfig, activeChatMode?: AgentChatMode, agentId?: string): Promise<CommandResult>;
|
|
11
|
-
/** CLAUDECODE / CLAUDE_CODE_* 環境変数を除外した env を構築 */
|
|
12
|
-
export declare function buildCleanEnv(): Record<string, string>;
|
|
13
|
-
/** Claude CLI の引数配列を構築 */
|
|
14
|
-
export declare function buildClaudeArgs(message: string, options?: {
|
|
15
|
-
allowedTools?: string[];
|
|
16
|
-
addDirs?: string[];
|
|
17
|
-
locale?: string;
|
|
18
|
-
}): string[];
|
|
11
|
+
export declare function executeChatCommand(payload: ChatPayload, commandId: string, client: ApiClient, serverConfig?: AgentServerConfig, activeChatMode?: AgentChatMode, agentId?: string, projectDir?: string, projectConfig?: ProjectConfigResponse): Promise<CommandResult>;
|
|
19
12
|
//# sourceMappingURL=chat-executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-executor.d.ts","sourceRoot":"","sources":["../../src/commands/chat-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-executor.d.ts","sourceRoot":"","sources":["../../src/commands/chat-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAIzC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAQnH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAErE;;;;;;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"}
|
|
@@ -1,18 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
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
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.buildCleanEnv = exports.buildClaudeArgs = void 0;
|
|
6
37
|
exports.executeChatCommand = executeChatCommand;
|
|
7
|
-
|
|
8
|
-
exports.buildClaudeArgs = buildClaudeArgs;
|
|
9
|
-
const child_process_1 = require("child_process");
|
|
10
|
-
const os_1 = __importDefault(require("os"));
|
|
38
|
+
const aws_credential_builder_1 = require("../aws-credential-builder");
|
|
11
39
|
const constants_1 = require("../constants");
|
|
12
40
|
const logger_1 = require("../logger");
|
|
13
41
|
const utils_1 = require("../utils");
|
|
14
42
|
const api_chat_executor_1 = require("./api-chat-executor");
|
|
43
|
+
const claude_code_runner_1 = require("./claude-code-runner");
|
|
15
44
|
const shared_chat_utils_1 = require("./shared-chat-utils");
|
|
45
|
+
// Re-export for backward compatibility with existing consumers
|
|
46
|
+
var claude_code_runner_2 = require("./claude-code-runner");
|
|
47
|
+
Object.defineProperty(exports, "buildClaudeArgs", { enumerable: true, get: function () { return claude_code_runner_2.buildClaudeArgs; } });
|
|
48
|
+
Object.defineProperty(exports, "buildCleanEnv", { enumerable: true, get: function () { return claude_code_runner_2.buildCleanEnv; } });
|
|
16
49
|
/**
|
|
17
50
|
* エージェントチャットモードに応じてチャットメッセージを処理する
|
|
18
51
|
* - claude_code: Claude Code CLI を使用(デフォルト)
|
|
@@ -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,30 +80,32 @@ 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
|
-
// AWS
|
|
53
|
-
const awsAccountId = (0, utils_1.parseString)(payload.awsAccountId) ?? undefined;
|
|
95
|
+
// AWS認証情報を取得(プロファイル方式 or 環境変数直接注入)
|
|
54
96
|
let awsEnv;
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
...(creds.sessionToken ? { AWS_SESSION_TOKEN: creds.sessionToken } : {}),
|
|
64
|
-
};
|
|
65
|
-
logger_1.logger.info(`[chat] AWS credentials obtained for region=${creds.region}`);
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
logger_1.logger.warn(`[chat] Failed to get AWS credentials: ${(0, utils_1.getErrorMessage)(error)}`);
|
|
69
|
-
}
|
|
97
|
+
if (projectDir && projectConfig?.aws?.accounts?.length) {
|
|
98
|
+
// プロファイル方式: 全アカウントの認証情報を取得してプロファイルファイルに書き込み
|
|
99
|
+
awsEnv = await (0, aws_credential_builder_1.buildAwsProfileCredentials)(client, projectDir, projectConfig);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// フォールバック: 単一アカウントの環境変数直接注入(従来方式)
|
|
103
|
+
const awsAccountId = (0, utils_1.parseString)(payload.awsAccountId) ?? undefined;
|
|
104
|
+
awsEnv = await (0, aws_credential_builder_1.buildSingleAccountAwsEnv)(client, awsAccountId);
|
|
70
105
|
}
|
|
71
106
|
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' : ''}`);
|
|
72
107
|
logger_1.logger.debug(`[chat] serverConfig.claudeCodeConfig: ${JSON.stringify(serverConfig?.claudeCodeConfig ?? null)}`);
|
|
73
|
-
const result = await runClaudeCode(message, sendChunk, allowedTools, addDirs, locale, awsEnv);
|
|
108
|
+
const result = await (0, claude_code_runner_1.runClaudeCode)(message, sendChunk, allowedTools, addDirs, locale, awsEnv);
|
|
74
109
|
logger_1.logger.info(`[chat] Chat command completed [${commandId}]: output=${result.text.length} chars, ${getChunkIndex()} chunks sent, duration=${result.metadata.durationMs}ms`);
|
|
75
110
|
// 完了チャンクを送信(metadata を含める)
|
|
76
111
|
const doneContent = JSON.stringify({
|
|
@@ -87,117 +122,4 @@ async function executeClaudeCodeChat(payload, commandId, client, agentId, server
|
|
|
87
122
|
return { success: false, error: errorMessage };
|
|
88
123
|
}
|
|
89
124
|
}
|
|
90
|
-
/** CLAUDECODE / CLAUDE_CODE_* 環境変数を除外した env を構築 */
|
|
91
|
-
function buildCleanEnv() {
|
|
92
|
-
const cleanEnv = {};
|
|
93
|
-
for (const [key, value] of Object.entries(process.env)) {
|
|
94
|
-
if (key === 'CLAUDECODE' || key.startsWith('CLAUDE_CODE_'))
|
|
95
|
-
continue;
|
|
96
|
-
if (value !== undefined)
|
|
97
|
-
cleanEnv[key] = value;
|
|
98
|
-
}
|
|
99
|
-
return cleanEnv;
|
|
100
|
-
}
|
|
101
|
-
/** Claude CLI の引数配列を構築 */
|
|
102
|
-
function buildClaudeArgs(message, options) {
|
|
103
|
-
const args = ['-p'];
|
|
104
|
-
if (options?.allowedTools?.length) {
|
|
105
|
-
for (const tool of options.allowedTools) {
|
|
106
|
-
args.push('--allowedTools', tool);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
if (options?.addDirs?.length) {
|
|
110
|
-
for (const dir of options.addDirs) {
|
|
111
|
-
const resolved = dir.replace(/^~/, os_1.default.homedir());
|
|
112
|
-
args.push('--add-dir', resolved);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (options?.locale) {
|
|
116
|
-
const langPrompt = options.locale === 'ja'
|
|
117
|
-
? 'Always respond in Japanese. Use Japanese for all explanations and communications.'
|
|
118
|
-
: 'Always respond in English. Use English for all explanations and communications.';
|
|
119
|
-
args.push('--append-system-prompt', langPrompt);
|
|
120
|
-
}
|
|
121
|
-
args.push(message);
|
|
122
|
-
return args;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Claude Code CLI をサブプロセスとして実行し、出力をストリーミングで返す
|
|
126
|
-
*/
|
|
127
|
-
async function runClaudeCode(message, sendChunk, allowedTools, addDirs, locale, awsEnv) {
|
|
128
|
-
return new Promise((resolve, reject) => {
|
|
129
|
-
const startTime = Date.now();
|
|
130
|
-
// claude CLI が利用可能か確認し、print モードで実行
|
|
131
|
-
// Claude Code セッション内からの起動時にネスト検出やSSEポート干渉を回避するため、
|
|
132
|
-
// CLAUDECODE および CLAUDE_CODE_* 環境変数を除外
|
|
133
|
-
const cleanEnv = buildCleanEnv();
|
|
134
|
-
const env = awsEnv ? { ...cleanEnv, ...awsEnv } : cleanEnv;
|
|
135
|
-
const args = buildClaudeArgs(message, { allowedTools, addDirs, locale });
|
|
136
|
-
const child = (0, child_process_1.spawn)('claude', args, {
|
|
137
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
138
|
-
env,
|
|
139
|
-
});
|
|
140
|
-
logger_1.logger.debug(`[chat] claude CLI spawned (pid=${child.pid}, cmd=claude ${args.map(a => a.includes(' ') ? `"${a}"` : a).join(' ')})`);
|
|
141
|
-
let fullOutput = '';
|
|
142
|
-
let stderrOutput = '';
|
|
143
|
-
// タイムアウト: 120秒で応答がなければ強制終了
|
|
144
|
-
let sigkillTimer;
|
|
145
|
-
const timeout = setTimeout(() => {
|
|
146
|
-
logger_1.logger.warn(`[chat] claude CLI timed out after ${constants_1.CHAT_TIMEOUT / 1000}s (pid=${child.pid}), sending SIGTERM`);
|
|
147
|
-
child.kill('SIGTERM');
|
|
148
|
-
// SIGTERM後5秒で応答なければSIGKILL
|
|
149
|
-
sigkillTimer = setTimeout(() => {
|
|
150
|
-
if (!child.killed) {
|
|
151
|
-
logger_1.logger.warn(`[chat] claude CLI still running after SIGTERM, sending SIGKILL (pid=${child.pid})`);
|
|
152
|
-
child.kill('SIGKILL');
|
|
153
|
-
}
|
|
154
|
-
}, constants_1.CHAT_SIGKILL_DELAY);
|
|
155
|
-
}, constants_1.CHAT_TIMEOUT);
|
|
156
|
-
child.stdout.on('data', (data) => {
|
|
157
|
-
const text = data.toString();
|
|
158
|
-
fullOutput += text;
|
|
159
|
-
// delta チャンクとしてAPIに送信(fire-and-forget)
|
|
160
|
-
void sendChunk('delta', text);
|
|
161
|
-
});
|
|
162
|
-
child.stderr.on('data', (data) => {
|
|
163
|
-
const text = data.toString();
|
|
164
|
-
stderrOutput += text;
|
|
165
|
-
logger_1.logger.debug(`[chat] claude CLI stderr: ${text.substring(0, constants_1.LOG_DEBUG_LIMIT)}`);
|
|
166
|
-
});
|
|
167
|
-
child.on('error', (error) => {
|
|
168
|
-
clearTimeout(timeout);
|
|
169
|
-
if (sigkillTimer)
|
|
170
|
-
clearTimeout(sigkillTimer);
|
|
171
|
-
if (error.code === 'ENOENT') {
|
|
172
|
-
reject(new Error('claude CLI が見つかりません。Claude Code がインストールされていることを確認してください。'));
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
reject(error);
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
child.on('close', (code) => {
|
|
179
|
-
clearTimeout(timeout);
|
|
180
|
-
if (sigkillTimer)
|
|
181
|
-
clearTimeout(sigkillTimer);
|
|
182
|
-
const durationMs = Date.now() - startTime;
|
|
183
|
-
// メッセージ本文を除いた引数(監査用)
|
|
184
|
-
const metadataArgs = args.slice(0, -1);
|
|
185
|
-
logger_1.logger.debug(`[chat] claude CLI exited (pid=${child.pid}, code=${code}, stdout=${fullOutput.length}b, stderr=${stderrOutput.length}b, duration=${durationMs}ms)`);
|
|
186
|
-
if (code === 0) {
|
|
187
|
-
resolve({
|
|
188
|
-
text: fullOutput,
|
|
189
|
-
metadata: {
|
|
190
|
-
args: metadataArgs,
|
|
191
|
-
exitCode: code,
|
|
192
|
-
hasStderr: stderrOutput.length > 0,
|
|
193
|
-
durationMs,
|
|
194
|
-
},
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
reject(new Error(`claude CLI がコード ${code} で終了しました${stderrOutput ? `: ${stderrOutput}` : ''}`));
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
125
|
//# sourceMappingURL=chat-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-executor.js","sourceRoot":"","sources":["../../src/commands/chat-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-executor.js","sourceRoot":"","sources":["../../src/commands/chat-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ChatChunkType } from '../types';
|
|
2
|
+
/** Claude Code CLI の実行結果 */
|
|
3
|
+
export interface ClaudeCodeResult {
|
|
4
|
+
text: string;
|
|
5
|
+
metadata: {
|
|
6
|
+
args: string[];
|
|
7
|
+
exitCode: number | null;
|
|
8
|
+
hasStderr: boolean;
|
|
9
|
+
durationMs: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/** CLAUDECODE / CLAUDE_CODE_* 環境変数を除外した env を構築 */
|
|
13
|
+
export declare function buildCleanEnv(): Record<string, string>;
|
|
14
|
+
/** Claude CLI の引数配列を構築 */
|
|
15
|
+
export declare function buildClaudeArgs(message: string, options?: {
|
|
16
|
+
allowedTools?: string[];
|
|
17
|
+
addDirs?: string[];
|
|
18
|
+
locale?: string;
|
|
19
|
+
}): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Claude Code CLI をサブプロセスとして実行し、出力をストリーミングで返す
|
|
22
|
+
*/
|
|
23
|
+
export declare function runClaudeCode(message: string, sendChunk: (type: ChatChunkType, content: string) => Promise<void>, allowedTools?: string[], addDirs?: string[], locale?: string, awsEnv?: Record<string, string>): Promise<ClaudeCodeResult>;
|
|
24
|
+
//# sourceMappingURL=claude-code-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-runner.d.ts","sourceRoot":"","sources":["../../src/commands/claude-code-runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,4BAA4B;AAC5B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,EAAE,CAAA;QACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,SAAS,EAAE,OAAO,CAAA;QAClB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,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;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAClE,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAmF3B"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildCleanEnv = buildCleanEnv;
|
|
7
|
+
exports.buildClaudeArgs = buildClaudeArgs;
|
|
8
|
+
exports.runClaudeCode = runClaudeCode;
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const os_1 = __importDefault(require("os"));
|
|
11
|
+
const constants_1 = require("../constants");
|
|
12
|
+
const logger_1 = require("../logger");
|
|
13
|
+
/** CLAUDECODE / CLAUDE_CODE_* 環境変数を除外した env を構築 */
|
|
14
|
+
function buildCleanEnv() {
|
|
15
|
+
const cleanEnv = {};
|
|
16
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
17
|
+
if (key === 'CLAUDECODE' || key.startsWith('CLAUDE_CODE_'))
|
|
18
|
+
continue;
|
|
19
|
+
if (value !== undefined)
|
|
20
|
+
cleanEnv[key] = value;
|
|
21
|
+
}
|
|
22
|
+
return cleanEnv;
|
|
23
|
+
}
|
|
24
|
+
/** Claude CLI の引数配列を構築 */
|
|
25
|
+
function buildClaudeArgs(message, options) {
|
|
26
|
+
const args = ['-p'];
|
|
27
|
+
if (options?.allowedTools?.length) {
|
|
28
|
+
for (const tool of options.allowedTools) {
|
|
29
|
+
args.push('--allowedTools', tool);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (options?.addDirs?.length) {
|
|
33
|
+
for (const dir of options.addDirs) {
|
|
34
|
+
const resolved = dir.replace(/^~/, os_1.default.homedir());
|
|
35
|
+
args.push('--add-dir', resolved);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (options?.locale) {
|
|
39
|
+
const langPrompt = options.locale === 'ja'
|
|
40
|
+
? 'Always respond in Japanese. Use Japanese for all explanations and communications.'
|
|
41
|
+
: 'Always respond in English. Use English for all explanations and communications.';
|
|
42
|
+
args.push('--append-system-prompt', langPrompt);
|
|
43
|
+
}
|
|
44
|
+
args.push(message);
|
|
45
|
+
return args;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Claude Code CLI をサブプロセスとして実行し、出力をストリーミングで返す
|
|
49
|
+
*/
|
|
50
|
+
async function runClaudeCode(message, sendChunk, allowedTools, addDirs, locale, awsEnv) {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
const startTime = Date.now();
|
|
53
|
+
// claude CLI が利用可能か確認し、print モードで実行
|
|
54
|
+
// Claude Code セッション内からの起動時にネスト検出やSSEポート干渉を回避するため、
|
|
55
|
+
// CLAUDECODE および CLAUDE_CODE_* 環境変数を除外
|
|
56
|
+
const cleanEnv = buildCleanEnv();
|
|
57
|
+
const env = awsEnv ? { ...cleanEnv, ...awsEnv } : cleanEnv;
|
|
58
|
+
const args = buildClaudeArgs(message, { allowedTools, addDirs, locale });
|
|
59
|
+
const child = (0, child_process_1.spawn)('claude', args, {
|
|
60
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
61
|
+
env,
|
|
62
|
+
});
|
|
63
|
+
logger_1.logger.debug(`[chat] claude CLI spawned (pid=${child.pid}, cmd=claude ${args.map(a => a.includes(' ') ? `"${a}"` : a).join(' ')})`);
|
|
64
|
+
let fullOutput = '';
|
|
65
|
+
let stderrOutput = '';
|
|
66
|
+
// タイムアウト: 120秒で応答がなければ強制終了
|
|
67
|
+
let sigkillTimer;
|
|
68
|
+
const timeout = setTimeout(() => {
|
|
69
|
+
logger_1.logger.warn(`[chat] claude CLI timed out after ${constants_1.CHAT_TIMEOUT / 1000}s (pid=${child.pid}), sending SIGTERM`);
|
|
70
|
+
child.kill('SIGTERM');
|
|
71
|
+
// SIGTERM後5秒で応答なければSIGKILL
|
|
72
|
+
sigkillTimer = setTimeout(() => {
|
|
73
|
+
if (!child.killed) {
|
|
74
|
+
logger_1.logger.warn(`[chat] claude CLI still running after SIGTERM, sending SIGKILL (pid=${child.pid})`);
|
|
75
|
+
child.kill('SIGKILL');
|
|
76
|
+
}
|
|
77
|
+
}, constants_1.CHAT_SIGKILL_DELAY);
|
|
78
|
+
}, constants_1.CHAT_TIMEOUT);
|
|
79
|
+
child.stdout.on('data', (data) => {
|
|
80
|
+
const text = data.toString();
|
|
81
|
+
fullOutput += text;
|
|
82
|
+
// delta チャンクとしてAPIに送信(fire-and-forget)
|
|
83
|
+
void sendChunk('delta', text);
|
|
84
|
+
});
|
|
85
|
+
child.stderr.on('data', (data) => {
|
|
86
|
+
const text = data.toString();
|
|
87
|
+
stderrOutput += text;
|
|
88
|
+
logger_1.logger.debug(`[chat] claude CLI stderr: ${text.substring(0, constants_1.LOG_DEBUG_LIMIT)}`);
|
|
89
|
+
});
|
|
90
|
+
child.on('error', (error) => {
|
|
91
|
+
clearTimeout(timeout);
|
|
92
|
+
if (sigkillTimer)
|
|
93
|
+
clearTimeout(sigkillTimer);
|
|
94
|
+
if (error.code === 'ENOENT') {
|
|
95
|
+
reject(new Error(constants_1.ERR_CLAUDE_CLI_NOT_FOUND));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
reject(error);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
child.on('close', (code) => {
|
|
102
|
+
clearTimeout(timeout);
|
|
103
|
+
if (sigkillTimer)
|
|
104
|
+
clearTimeout(sigkillTimer);
|
|
105
|
+
const durationMs = Date.now() - startTime;
|
|
106
|
+
// メッセージ本文を除いた引数(監査用)
|
|
107
|
+
const metadataArgs = args.slice(0, -1);
|
|
108
|
+
logger_1.logger.debug(`[chat] claude CLI exited (pid=${child.pid}, code=${code}, stdout=${fullOutput.length}b, stderr=${stderrOutput.length}b, duration=${durationMs}ms)`);
|
|
109
|
+
if (code === 0) {
|
|
110
|
+
resolve({
|
|
111
|
+
text: fullOutput,
|
|
112
|
+
metadata: {
|
|
113
|
+
args: metadataArgs,
|
|
114
|
+
exitCode: code,
|
|
115
|
+
hasStderr: stderrOutput.length > 0,
|
|
116
|
+
durationMs,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
reject(new Error(`claude CLI がコード ${code} で終了しました${stderrOutput ? `: ${stderrOutput}` : ''}`));
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=claude-code-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-runner.js","sourceRoot":"","sources":["../../src/commands/claude-code-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,7 +62,7 @@ async function fileWrite(payload) {
|
|
|
62
62
|
const filePath = pathOrError;
|
|
63
63
|
const content = typeof payload.content === 'string' ? payload.content : null;
|
|
64
64
|
if (content === null) {
|
|
65
|
-
return { success: false, error:
|
|
65
|
+
return { success: false, error: constants_1.ERR_NO_CONTENT_SPECIFIED };
|
|
66
66
|
}
|
|
67
67
|
if (content.length > constants_1.MAX_FILE_WRITE_SIZE) {
|
|
68
68
|
return { success: false, error: `Content too large: ${content.length} bytes (limit: ${constants_1.MAX_FILE_WRITE_SIZE} bytes)` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-executor.js","sourceRoot":"","sources":["../../src/commands/file-executor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,4BAiBC;AAED,8BAqBC;AAED,4BAyBC;AA1ED,uCAAwB;AACxB,2CAA4B;AAE5B,
|
|
1
|
+
{"version":3,"file":"file-executor.js","sourceRoot":"","sources":["../../src/commands/file-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApiClient } from '../api-client';
|
|
2
|
-
import type { AgentChatMode, AgentCommandType, AgentServerConfig, CommandDispatch, CommandResult } from '../types';
|
|
2
|
+
import type { AgentChatMode, AgentCommandType, AgentServerConfig, CommandDispatch, CommandResult, ProjectConfigResponse } from '../types';
|
|
3
3
|
/** Options for command execution */
|
|
4
4
|
export interface ExecuteCommandOptions {
|
|
5
5
|
commandId?: string;
|
|
@@ -7,6 +7,10 @@ export interface ExecuteCommandOptions {
|
|
|
7
7
|
serverConfig?: AgentServerConfig;
|
|
8
8
|
activeChatMode?: AgentChatMode;
|
|
9
9
|
agentId?: string;
|
|
10
|
+
projectDir?: string;
|
|
11
|
+
projectConfig?: ProjectConfigResponse;
|
|
12
|
+
onSetup?: () => Promise<void>;
|
|
13
|
+
onConfigSync?: () => Promise<void>;
|
|
10
14
|
}
|
|
11
15
|
export declare function executeCommand(command: CommandDispatch, options?: ExecuteCommandOptions): Promise<CommandResult>;
|
|
12
16
|
export declare function executeCommand(type: AgentCommandType, payload: Record<string, unknown>, options?: ExecuteCommandOptions): Promise<CommandResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAQzI,oCAAoC;AACpC,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAA;IAChC,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AAEvH,wBAAsB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AA8EvJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/commands/index.js
CHANGED
|
@@ -55,9 +55,21 @@ async function executeCommand(typeOrCommand, payloadOrOptions, options) {
|
|
|
55
55
|
}
|
|
56
56
|
case 'chat':
|
|
57
57
|
if (!opts?.commandId || !opts?.client) {
|
|
58
|
-
return { success: false, error:
|
|
58
|
+
return { success: false, error: constants_1.ERR_CHAT_REQUIRES_CLIENT };
|
|
59
59
|
}
|
|
60
|
-
return await (0, chat_executor_1.executeChatCommand)(p, opts.commandId, opts.client, opts.serverConfig, opts.activeChatMode, opts.agentId);
|
|
60
|
+
return await (0, chat_executor_1.executeChatCommand)(p, opts.commandId, opts.client, opts.serverConfig, opts.activeChatMode, opts.agentId, opts.projectDir, opts.projectConfig);
|
|
61
|
+
case 'setup':
|
|
62
|
+
if (!opts?.onSetup) {
|
|
63
|
+
return { success: false, error: constants_1.ERR_SETUP_REQUIRES_CALLBACK };
|
|
64
|
+
}
|
|
65
|
+
await opts.onSetup();
|
|
66
|
+
return { success: true, data: 'setup completed' };
|
|
67
|
+
case 'config_sync':
|
|
68
|
+
if (!opts?.onConfigSync) {
|
|
69
|
+
return { success: false, error: constants_1.ERR_CONFIG_SYNC_REQUIRES_CALLBACK };
|
|
70
|
+
}
|
|
71
|
+
await opts.onConfigSync();
|
|
72
|
+
return { success: true, data: 'config sync completed' };
|
|
61
73
|
default:
|
|
62
74
|
logger_1.logger.warn(`Unknown command type: ${type}`);
|
|
63
75
|
return { success: false, error: `Unknown command type: ${type}` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ function processList() {
|
|
|
49
49
|
async function processKill(payload) {
|
|
50
50
|
const pid = (0, utils_1.parseNumber)(payload.pid);
|
|
51
51
|
if (!pid || pid < 1 || !Number.isInteger(pid)) {
|
|
52
|
-
return { success: false, error:
|
|
52
|
+
return { success: false, error: constants_1.ERR_INVALID_PID };
|
|
53
53
|
}
|
|
54
54
|
const signal = (0, utils_1.parseString)(payload.signal) ?? 'SIGTERM';
|
|
55
55
|
if (!security_1.ALLOWED_SIGNALS.has(signal)) {
|