@ai-support-agent/cli 0.0.4-beta.14 → 0.0.4-beta.15
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/commands/chat-executor.d.ts.map +1 -1
- package/dist/commands/chat-executor.js +28 -62
- package/dist/commands/chat-executor.js.map +1 -1
- package/dist/docker/docker-runner.d.ts +17 -0
- package/dist/docker/docker-runner.d.ts.map +1 -0
- package/dist/docker/docker-runner.js +192 -0
- package/dist/docker/docker-runner.js.map +1 -0
- package/dist/docker/dockerfile-path.d.ts +10 -0
- package/dist/docker/dockerfile-path.d.ts.map +1 -0
- package/dist/docker/dockerfile-path.js +25 -0
- package/dist/docker/dockerfile-path.js.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/locales/en.json +9 -1
- package/dist/locales/ja.json +9 -1
- package/dist/locales/locales/en.json +9 -1
- package/dist/locales/locales/ja.json +9 -1
- package/docker/Dockerfile +39 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EAAiB,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AASlI,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,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
|
|
@@ -1,37 +1,4 @@
|
|
|
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
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.buildCleanEnv = exports.buildClaudeArgs = void 0;
|
|
37
4
|
exports.executeChatCommand = executeChatCommand;
|
|
@@ -39,6 +6,7 @@ const aws_credential_builder_1 = require("../aws-credential-builder");
|
|
|
39
6
|
const constants_1 = require("../constants");
|
|
40
7
|
const logger_1 = require("../logger");
|
|
41
8
|
const utils_1 = require("../utils");
|
|
9
|
+
const project_dir_1 = require("../project-dir");
|
|
42
10
|
const api_chat_executor_1 = require("./api-chat-executor");
|
|
43
11
|
const claude_code_runner_1 = require("./claude-code-runner");
|
|
44
12
|
const shared_chat_utils_1 = require("./shared-chat-utils");
|
|
@@ -84,8 +52,7 @@ async function executeClaudeCodeChat(payload, commandId, client, agentId, server
|
|
|
84
52
|
// Merge project directory auto-add dirs with server-configured dirs
|
|
85
53
|
let addDirs;
|
|
86
54
|
if (projectDir) {
|
|
87
|
-
const
|
|
88
|
-
const autoAddDirs = getAutoAddDirs(projectDir);
|
|
55
|
+
const autoAddDirs = (0, project_dir_1.getAutoAddDirs)(projectDir);
|
|
89
56
|
addDirs = [...autoAddDirs, ...serverAddDirs];
|
|
90
57
|
}
|
|
91
58
|
else {
|
|
@@ -99,43 +66,27 @@ async function executeClaudeCodeChat(payload, commandId, client, agentId, server
|
|
|
99
66
|
// プロファイル方式: 全アカウントの認証情報を取得してプロファイルファイルに書き込み
|
|
100
67
|
const awsResult = await (0, aws_credential_builder_1.buildAwsProfileCredentials)(client, projectDir, projectConfig);
|
|
101
68
|
awsEnv = awsResult.env;
|
|
102
|
-
|
|
103
|
-
const notice = `⚠️ ${awsResult.errors.join('\n')}\n\n`;
|
|
104
|
-
await sendChunk('delta', notice);
|
|
105
|
-
}
|
|
106
|
-
// SSO再認証が必要なアカウントの情報を system チャンクで送信
|
|
107
|
-
for (const ssoInfo of awsResult.ssoAuthRequired) {
|
|
108
|
-
await sendChunk('system', JSON.stringify({
|
|
109
|
-
type: 'sso_auth_required',
|
|
110
|
-
accountId: ssoInfo.accountId,
|
|
111
|
-
accountName: ssoInfo.accountName,
|
|
112
|
-
projectCode,
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
69
|
+
await sendAwsCredentialNotices(awsResult, projectCode, sendChunk);
|
|
115
70
|
}
|
|
116
71
|
else {
|
|
117
72
|
// フォールバック: 単一アカウントの環境変数直接注入(従来方式)
|
|
118
73
|
const awsAccountId = (0, utils_1.parseString)(payload.awsAccountId) ?? undefined;
|
|
119
74
|
const awsResult = await (0, aws_credential_builder_1.buildSingleAccountAwsEnv)(client, awsAccountId);
|
|
120
75
|
awsEnv = awsResult.env;
|
|
121
|
-
|
|
122
|
-
const notice = `⚠️ ${awsResult.errors.join('\n')}\n\n`;
|
|
123
|
-
await sendChunk('delta', notice);
|
|
124
|
-
}
|
|
125
|
-
// SSO再認証が必要なアカウントの情報を system チャンクで送信
|
|
126
|
-
for (const ssoInfo of awsResult.ssoAuthRequired) {
|
|
127
|
-
await sendChunk('system', JSON.stringify({
|
|
128
|
-
type: 'sso_auth_required',
|
|
129
|
-
accountId: ssoInfo.accountId,
|
|
130
|
-
accountName: ssoInfo.accountName,
|
|
131
|
-
projectCode,
|
|
132
|
-
}));
|
|
133
|
-
}
|
|
76
|
+
await sendAwsCredentialNotices(awsResult, projectCode, sendChunk);
|
|
134
77
|
}
|
|
135
78
|
// 会話履歴をメッセージに埋め込む(Claude Code CLI用)
|
|
136
79
|
const history = (0, shared_chat_utils_1.parseHistory)(payload.history);
|
|
137
80
|
const messageWithHistory = (0, shared_chat_utils_1.formatHistoryForClaudeCode)(history, message);
|
|
138
|
-
|
|
81
|
+
const logDetails = [
|
|
82
|
+
allowedTools?.length ? `allowedTools: ${allowedTools.join(', ')}` : '(no allowedTools)',
|
|
83
|
+
addDirs?.length ? `addDirs: ${addDirs.join(', ')}` : null,
|
|
84
|
+
locale ? `locale=${locale}` : null,
|
|
85
|
+
awsEnv ? 'AWS credentials' : null,
|
|
86
|
+
mcpConfigPath ? 'MCP config' : null,
|
|
87
|
+
history.length > 0 ? `${history.length} history messages` : null,
|
|
88
|
+
].filter(Boolean).join(', ');
|
|
89
|
+
logger_1.logger.debug(`[chat] Spawning claude CLI for command [${commandId}]: ${logDetails}`);
|
|
139
90
|
logger_1.logger.debug(`[chat] serverConfig.claudeCodeConfig: ${JSON.stringify(serverConfig?.claudeCodeConfig ?? null)}`);
|
|
140
91
|
const result = await (0, claude_code_runner_1.runClaudeCode)(messageWithHistory, sendChunk, allowedTools, addDirs, locale, awsEnv, mcpConfigPath);
|
|
141
92
|
logger_1.logger.info(`[chat] Chat command completed [${commandId}]: output=${result.text.length} chars, ${getChunkIndex()} chunks sent, duration=${result.metadata.durationMs}ms`);
|
|
@@ -154,4 +105,19 @@ async function executeClaudeCodeChat(payload, commandId, client, agentId, server
|
|
|
154
105
|
return { success: false, error: errorMessage };
|
|
155
106
|
}
|
|
156
107
|
}
|
|
108
|
+
async function sendAwsCredentialNotices(awsResult, projectCode, sendChunk) {
|
|
109
|
+
if (awsResult.errors.length > 0) {
|
|
110
|
+
const notice = `⚠️ ${awsResult.errors.join('\n')}\n\n`;
|
|
111
|
+
await sendChunk('delta', notice);
|
|
112
|
+
}
|
|
113
|
+
// SSO再認証が必要なアカウントの情報を system チャンクで送信
|
|
114
|
+
for (const ssoInfo of awsResult.ssoAuthRequired) {
|
|
115
|
+
await sendChunk('system', JSON.stringify({
|
|
116
|
+
type: 'sso_auth_required',
|
|
117
|
+
accountId: ssoInfo.accountId,
|
|
118
|
+
accountName: ssoInfo.accountName,
|
|
119
|
+
projectCode,
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
157
123
|
//# 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,17 @@
|
|
|
1
|
+
export interface DockerRunOptions {
|
|
2
|
+
token?: string;
|
|
3
|
+
apiUrl?: string;
|
|
4
|
+
pollInterval?: number;
|
|
5
|
+
heartbeatInterval?: number;
|
|
6
|
+
verbose?: boolean;
|
|
7
|
+
autoUpdate?: boolean;
|
|
8
|
+
updateChannel?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function checkDockerAvailable(): boolean;
|
|
11
|
+
export declare function imageExists(version: string): boolean;
|
|
12
|
+
export declare function buildImage(version: string): void;
|
|
13
|
+
export declare function buildVolumeMounts(): string[];
|
|
14
|
+
export declare function buildEnvArgs(): string[];
|
|
15
|
+
export declare function buildContainerArgs(opts: DockerRunOptions): string[];
|
|
16
|
+
export declare function runInDocker(opts: DockerRunOptions): void;
|
|
17
|
+
//# sourceMappingURL=docker-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-runner.d.ts","sourceRoot":"","sources":["../../src/docker/docker-runner.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,gBAAgB;IAC/B,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,MAAM,CAAA;CACvB;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAO9C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAShD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAmC5C;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAavC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAAE,CA0BnE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CA+CxD"}
|
|
@@ -0,0 +1,192 @@
|
|
|
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.checkDockerAvailable = checkDockerAvailable;
|
|
37
|
+
exports.imageExists = imageExists;
|
|
38
|
+
exports.buildImage = buildImage;
|
|
39
|
+
exports.buildVolumeMounts = buildVolumeMounts;
|
|
40
|
+
exports.buildEnvArgs = buildEnvArgs;
|
|
41
|
+
exports.buildContainerArgs = buildContainerArgs;
|
|
42
|
+
exports.runInDocker = runInDocker;
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const dockerfile_path_1 = require("./dockerfile-path");
|
|
48
|
+
const constants_1 = require("../constants");
|
|
49
|
+
const config_manager_1 = require("../config-manager");
|
|
50
|
+
const i18n_1 = require("../i18n");
|
|
51
|
+
const logger_1 = require("../logger");
|
|
52
|
+
const IMAGE_NAME = 'ai-support-agent';
|
|
53
|
+
const PASSTHROUGH_ENV_VARS = [
|
|
54
|
+
'AI_SUPPORT_AGENT_TOKEN',
|
|
55
|
+
'AI_SUPPORT_AGENT_API_URL',
|
|
56
|
+
'AI_SUPPORT_AGENT_CONFIG_DIR',
|
|
57
|
+
'ANTHROPIC_API_KEY',
|
|
58
|
+
];
|
|
59
|
+
function checkDockerAvailable() {
|
|
60
|
+
try {
|
|
61
|
+
(0, child_process_1.execSync)('docker info', { stdio: 'ignore' });
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function imageExists(version) {
|
|
69
|
+
try {
|
|
70
|
+
(0, child_process_1.execSync)(`docker image inspect ${IMAGE_NAME}:${version}`, { stdio: 'ignore' });
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function buildImage(version) {
|
|
78
|
+
const dockerfilePath = (0, dockerfile_path_1.getDockerfilePath)();
|
|
79
|
+
const contextDir = (0, dockerfile_path_1.getDockerContextDir)();
|
|
80
|
+
logger_1.logger.info((0, i18n_1.t)('docker.building'));
|
|
81
|
+
(0, child_process_1.execSync)(`docker build -t ${IMAGE_NAME}:${version} --build-arg AGENT_VERSION=${version} -f ${dockerfilePath} ${contextDir}`, { stdio: 'inherit' });
|
|
82
|
+
logger_1.logger.success((0, i18n_1.t)('docker.buildComplete'));
|
|
83
|
+
}
|
|
84
|
+
function buildVolumeMounts() {
|
|
85
|
+
const home = os.homedir();
|
|
86
|
+
const mounts = [];
|
|
87
|
+
// Claude Code OAuth tokens
|
|
88
|
+
const claudeDir = path.join(home, '.claude');
|
|
89
|
+
if (fs.existsSync(claudeDir)) {
|
|
90
|
+
mounts.push('-v', `${claudeDir}:${claudeDir}:rw`);
|
|
91
|
+
}
|
|
92
|
+
// Agent config
|
|
93
|
+
const agentConfigDir = path.join(home, '.ai-support-agent');
|
|
94
|
+
if (fs.existsSync(agentConfigDir)) {
|
|
95
|
+
mounts.push('-v', `${agentConfigDir}:${agentConfigDir}:rw`);
|
|
96
|
+
}
|
|
97
|
+
// AWS credentials
|
|
98
|
+
const awsDir = path.join(home, '.aws');
|
|
99
|
+
if (fs.existsSync(awsDir)) {
|
|
100
|
+
mounts.push('-v', `${awsDir}:${awsDir}:ro`);
|
|
101
|
+
}
|
|
102
|
+
// Custom project directories from config
|
|
103
|
+
const config = (0, config_manager_1.loadConfig)();
|
|
104
|
+
if (config?.projects) {
|
|
105
|
+
const mounted = new Set();
|
|
106
|
+
for (const project of config.projects) {
|
|
107
|
+
if (project.projectDir && !mounted.has(project.projectDir) && fs.existsSync(project.projectDir)) {
|
|
108
|
+
mounts.push('-v', `${project.projectDir}:${project.projectDir}:rw`);
|
|
109
|
+
mounted.add(project.projectDir);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return mounts;
|
|
114
|
+
}
|
|
115
|
+
function buildEnvArgs() {
|
|
116
|
+
const args = [];
|
|
117
|
+
// HOME must be passed so volume mounts resolve to the same paths
|
|
118
|
+
args.push('-e', `HOME=${os.homedir()}`);
|
|
119
|
+
for (const key of PASSTHROUGH_ENV_VARS) {
|
|
120
|
+
if (process.env[key]) {
|
|
121
|
+
args.push('-e', `${key}=${process.env[key]}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return args;
|
|
125
|
+
}
|
|
126
|
+
function buildContainerArgs(opts) {
|
|
127
|
+
const args = ['start'];
|
|
128
|
+
if (opts.token) {
|
|
129
|
+
args.push('--token', opts.token);
|
|
130
|
+
}
|
|
131
|
+
if (opts.apiUrl) {
|
|
132
|
+
args.push('--api-url', opts.apiUrl);
|
|
133
|
+
}
|
|
134
|
+
if (opts.pollInterval !== undefined) {
|
|
135
|
+
args.push('--poll-interval', String(opts.pollInterval));
|
|
136
|
+
}
|
|
137
|
+
if (opts.heartbeatInterval !== undefined) {
|
|
138
|
+
args.push('--heartbeat-interval', String(opts.heartbeatInterval));
|
|
139
|
+
}
|
|
140
|
+
if (opts.verbose) {
|
|
141
|
+
args.push('--verbose');
|
|
142
|
+
}
|
|
143
|
+
if (opts.autoUpdate === false) {
|
|
144
|
+
args.push('--no-auto-update');
|
|
145
|
+
}
|
|
146
|
+
if (opts.updateChannel) {
|
|
147
|
+
args.push('--update-channel', opts.updateChannel);
|
|
148
|
+
}
|
|
149
|
+
return args;
|
|
150
|
+
}
|
|
151
|
+
function runInDocker(opts) {
|
|
152
|
+
if (!checkDockerAvailable()) {
|
|
153
|
+
logger_1.logger.error((0, i18n_1.t)('docker.notAvailable'));
|
|
154
|
+
process.exit(1);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const version = constants_1.AGENT_VERSION;
|
|
158
|
+
if (!imageExists(version)) {
|
|
159
|
+
buildImage(version);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
logger_1.logger.info((0, i18n_1.t)('docker.imageFound', { version }));
|
|
163
|
+
}
|
|
164
|
+
logger_1.logger.info((0, i18n_1.t)('docker.starting'));
|
|
165
|
+
const volumeMounts = buildVolumeMounts();
|
|
166
|
+
const envArgs = buildEnvArgs();
|
|
167
|
+
const containerArgs = buildContainerArgs(opts);
|
|
168
|
+
const dockerArgs = [
|
|
169
|
+
'run', '--rm', '-it',
|
|
170
|
+
...volumeMounts,
|
|
171
|
+
...envArgs,
|
|
172
|
+
`${IMAGE_NAME}:${version}`,
|
|
173
|
+
...containerArgs,
|
|
174
|
+
];
|
|
175
|
+
const child = (0, child_process_1.spawn)('docker', dockerArgs, {
|
|
176
|
+
stdio: 'inherit',
|
|
177
|
+
});
|
|
178
|
+
// Forward signals to container
|
|
179
|
+
const forwardSignal = (signal) => {
|
|
180
|
+
child.kill(signal);
|
|
181
|
+
};
|
|
182
|
+
process.on('SIGINT', () => forwardSignal('SIGINT'));
|
|
183
|
+
process.on('SIGTERM', () => forwardSignal('SIGTERM'));
|
|
184
|
+
child.on('error', (err) => {
|
|
185
|
+
logger_1.logger.error((0, i18n_1.t)('docker.runFailed', { message: err.message }));
|
|
186
|
+
process.exit(1);
|
|
187
|
+
});
|
|
188
|
+
child.on('close', (code) => {
|
|
189
|
+
process.exit(code ?? 0);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=docker-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-runner.js","sourceRoot":"","sources":["../../src/docker/docker-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the path to the Dockerfile included in the npm package.
|
|
3
|
+
* __dirname at runtime is dist/docker/, so we go up two levels to reach the package root.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getDockerfilePath(): string;
|
|
6
|
+
/**
|
|
7
|
+
* Get the Docker build context directory (package root).
|
|
8
|
+
*/
|
|
9
|
+
export declare function getDockerContextDir(): string;
|
|
10
|
+
//# sourceMappingURL=dockerfile-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dockerfile-path.d.ts","sourceRoot":"","sources":["../../src/docker/dockerfile-path.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDockerfilePath = getDockerfilePath;
|
|
4
|
+
exports.getDockerContextDir = getDockerContextDir;
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
/**
|
|
8
|
+
* Get the path to the Dockerfile included in the npm package.
|
|
9
|
+
* __dirname at runtime is dist/docker/, so we go up two levels to reach the package root.
|
|
10
|
+
*/
|
|
11
|
+
function getDockerfilePath() {
|
|
12
|
+
const packageRoot = getDockerContextDir();
|
|
13
|
+
const dockerfilePath = (0, path_1.join)(packageRoot, 'docker', 'Dockerfile');
|
|
14
|
+
if (!(0, fs_1.existsSync)(dockerfilePath)) {
|
|
15
|
+
throw new Error(`Dockerfile not found: ${dockerfilePath}`);
|
|
16
|
+
}
|
|
17
|
+
return dockerfilePath;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get the Docker build context directory (package root).
|
|
21
|
+
*/
|
|
22
|
+
function getDockerContextDir() {
|
|
23
|
+
return (0, path_1.join)(__dirname, '..', '..');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=dockerfile-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dockerfile-path.js","sourceRoot":"","sources":["../../src/docker/dockerfile-path.ts"],"names":[],"mappings":";;AAOA,8CAOC;AAKD,kDAEC;AArBD,+BAA2B;AAC3B,2BAA+B;AAE/B;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAA;IACzC,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;IAChE,IAAI,CAAC,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,cAAc,CAAA;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -63,7 +63,21 @@ program
|
|
|
63
63
|
.option('--verbose', (0, i18n_1.t)('cmd.start.verbose'))
|
|
64
64
|
.option('--no-auto-update', (0, i18n_1.t)('cmd.start.noAutoUpdate'))
|
|
65
65
|
.option('--update-channel <channel>', (0, i18n_1.t)('cmd.start.updateChannel'))
|
|
66
|
+
.option('--docker', (0, i18n_1.t)('cmd.start.docker'))
|
|
66
67
|
.action(async (opts) => {
|
|
68
|
+
if (opts.docker) {
|
|
69
|
+
const { runInDocker } = await Promise.resolve().then(() => __importStar(require('./docker/docker-runner')));
|
|
70
|
+
runInDocker({
|
|
71
|
+
token: opts.token,
|
|
72
|
+
apiUrl: opts.apiUrl,
|
|
73
|
+
pollInterval: (0, validators_1.parseIntervalOrExit)(opts.pollInterval, 'poll-interval'),
|
|
74
|
+
heartbeatInterval: (0, validators_1.parseIntervalOrExit)(opts.heartbeatInterval, 'heartbeat-interval'),
|
|
75
|
+
verbose: opts.verbose,
|
|
76
|
+
autoUpdate: opts.autoUpdate,
|
|
77
|
+
updateChannel: opts.updateChannel,
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
67
81
|
const updateChannel = (0, validators_1.validateUpdateChannel)(opts.updateChannel);
|
|
68
82
|
await (0, agent_runner_1.startAgent)({
|
|
69
83
|
token: opts.token,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAmC;AAEnC,iDAA2C;AAC3C,uDAA0D;AAC1D,yDAA4D;AAC5D,gEAAyE;AACzE,+CAAiE;AACjE,iDAA6E;AAC7E,2CAA2C;AAE3C,uCAAwB;AAExB,qDAIyB;AACzB,iCAAoC;AACpC,qCAAiC;AAEjC,IAAA,eAAQ,GAAE,CAAA;AAEV,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,IAAA,QAAC,EAAC,iBAAiB,CAAC,CAAC;KACjC,OAAO,CAAC,yBAAa,CAAC;KACtB,MAAM,CAAC,eAAe,EAAE,IAAA,QAAC,EAAC,UAAU,CAAC,CAAC,CAAA;AAEzC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,IAAA,QAAC,EAAC,WAAW,CAAC,CAAC;KAC3B,MAAM,CAAC,iBAAiB,EAAE,IAAA,QAAC,EAAC,iBAAiB,CAAC,CAAC;KAC/C,MAAM,CAAC,iBAAiB,EAAE,IAAA,QAAC,EAAC,kBAAkB,CAAC,CAAC;KAChD,MAAM,CAAC,sBAAsB,EAAE,IAAA,QAAC,EAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnE,MAAM,CAAC,2BAA2B,EAAE,IAAA,QAAC,EAAC,6BAA6B,CAAC,EAAE,OAAO,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,IAAA,QAAC,EAAC,mBAAmB,CAAC,CAAC;KAC3C,MAAM,CAAC,kBAAkB,EAAE,IAAA,QAAC,EAAC,wBAAwB,CAAC,CAAC;KACvD,MAAM,CAAC,4BAA4B,EAAE,IAAA,QAAC,EAAC,yBAAyB,CAAC,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/locales/en.json
CHANGED
|
@@ -104,5 +104,13 @@
|
|
|
104
104
|
"projectDir.noProject": "Project \"{{projectCode}}\" is not registered.",
|
|
105
105
|
"projectDir.initialized": "Project directory initialized: {{projectDir}} ({{projectCode}})",
|
|
106
106
|
"projectDir.usageHint": "Usage: set-project-dir --project <code> --path <path> OR --default <template>",
|
|
107
|
-
"projectDir.cleaned": "Cleaned up metadata directory: {{metadataDir}}"
|
|
107
|
+
"projectDir.cleaned": "Cleaned up metadata directory: {{metadataDir}}",
|
|
108
|
+
|
|
109
|
+
"cmd.start.docker": "Run inside a Docker container",
|
|
110
|
+
"docker.notAvailable": "Docker is not available. Make sure Docker Desktop is running.",
|
|
111
|
+
"docker.building": "Building Docker image...",
|
|
112
|
+
"docker.buildComplete": "Docker image build complete",
|
|
113
|
+
"docker.imageFound": "Using existing Docker image ({{version}})",
|
|
114
|
+
"docker.starting": "Starting Docker container...",
|
|
115
|
+
"docker.runFailed": "Failed to run Docker container: {{message}}"
|
|
108
116
|
}
|
package/dist/locales/ja.json
CHANGED
|
@@ -104,5 +104,13 @@
|
|
|
104
104
|
"projectDir.noProject": "プロジェクト \"{{projectCode}}\" は登録されていません。",
|
|
105
105
|
"projectDir.initialized": "プロジェクトディレクトリを初期化しました: {{projectDir}} ({{projectCode}})",
|
|
106
106
|
"projectDir.usageHint": "使い方: set-project-dir --project <code> --path <path> または --default <template>",
|
|
107
|
-
"projectDir.cleaned": "メタデータディレクトリを削除しました: {{metadataDir}}"
|
|
107
|
+
"projectDir.cleaned": "メタデータディレクトリを削除しました: {{metadataDir}}",
|
|
108
|
+
|
|
109
|
+
"cmd.start.docker": "Dockerコンテナ内で実行",
|
|
110
|
+
"docker.notAvailable": "Dockerが利用できません。Docker Desktopが起動していることを確認してください。",
|
|
111
|
+
"docker.building": "Dockerイメージをビルド中...",
|
|
112
|
+
"docker.buildComplete": "Dockerイメージのビルドが完了しました",
|
|
113
|
+
"docker.imageFound": "既存のDockerイメージを使用します ({{version}})",
|
|
114
|
+
"docker.starting": "Dockerコンテナを起動中...",
|
|
115
|
+
"docker.runFailed": "Dockerコンテナの実行に失敗しました: {{message}}"
|
|
108
116
|
}
|
|
@@ -104,5 +104,13 @@
|
|
|
104
104
|
"projectDir.noProject": "Project \"{{projectCode}}\" is not registered.",
|
|
105
105
|
"projectDir.initialized": "Project directory initialized: {{projectDir}} ({{projectCode}})",
|
|
106
106
|
"projectDir.usageHint": "Usage: set-project-dir --project <code> --path <path> OR --default <template>",
|
|
107
|
-
"projectDir.cleaned": "Cleaned up metadata directory: {{metadataDir}}"
|
|
107
|
+
"projectDir.cleaned": "Cleaned up metadata directory: {{metadataDir}}",
|
|
108
|
+
|
|
109
|
+
"cmd.start.docker": "Run inside a Docker container",
|
|
110
|
+
"docker.notAvailable": "Docker is not available. Make sure Docker Desktop is running.",
|
|
111
|
+
"docker.building": "Building Docker image...",
|
|
112
|
+
"docker.buildComplete": "Docker image build complete",
|
|
113
|
+
"docker.imageFound": "Using existing Docker image ({{version}})",
|
|
114
|
+
"docker.starting": "Starting Docker container...",
|
|
115
|
+
"docker.runFailed": "Failed to run Docker container: {{message}}"
|
|
108
116
|
}
|
|
@@ -104,5 +104,13 @@
|
|
|
104
104
|
"projectDir.noProject": "プロジェクト \"{{projectCode}}\" は登録されていません。",
|
|
105
105
|
"projectDir.initialized": "プロジェクトディレクトリを初期化しました: {{projectDir}} ({{projectCode}})",
|
|
106
106
|
"projectDir.usageHint": "使い方: set-project-dir --project <code> --path <path> または --default <template>",
|
|
107
|
-
"projectDir.cleaned": "メタデータディレクトリを削除しました: {{metadataDir}}"
|
|
107
|
+
"projectDir.cleaned": "メタデータディレクトリを削除しました: {{metadataDir}}",
|
|
108
|
+
|
|
109
|
+
"cmd.start.docker": "Dockerコンテナ内で実行",
|
|
110
|
+
"docker.notAvailable": "Dockerが利用できません。Docker Desktopが起動していることを確認してください。",
|
|
111
|
+
"docker.building": "Dockerイメージをビルド中...",
|
|
112
|
+
"docker.buildComplete": "Dockerイメージのビルドが完了しました",
|
|
113
|
+
"docker.imageFound": "既存のDockerイメージを使用します ({{version}})",
|
|
114
|
+
"docker.starting": "Dockerコンテナを起動中...",
|
|
115
|
+
"docker.runFailed": "Dockerコンテナの実行に失敗しました: {{message}}"
|
|
108
116
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
FROM node:24-slim
|
|
2
|
+
|
|
3
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
4
|
+
curl unzip git openssh-client \
|
|
5
|
+
default-mysql-client postgresql-client \
|
|
6
|
+
gnupg apt-transport-https \
|
|
7
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
8
|
+
|
|
9
|
+
# AWS CLI v2
|
|
10
|
+
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o /tmp/awscliv2.zip \
|
|
11
|
+
&& unzip /tmp/awscliv2.zip -d /tmp \
|
|
12
|
+
&& /tmp/aws/install \
|
|
13
|
+
&& rm -rf /tmp/aws /tmp/awscliv2.zip
|
|
14
|
+
|
|
15
|
+
# AWS Session Manager Plugin
|
|
16
|
+
RUN ARCH=$(dpkg --print-architecture) \
|
|
17
|
+
&& curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_${ARCH}/session-manager-plugin.deb" \
|
|
18
|
+
-o /tmp/session-manager-plugin.deb \
|
|
19
|
+
&& dpkg -i /tmp/session-manager-plugin.deb \
|
|
20
|
+
&& rm /tmp/session-manager-plugin.deb
|
|
21
|
+
|
|
22
|
+
# MSSQL tools (amd64 only)
|
|
23
|
+
RUN ARCH=$(dpkg --print-architecture) && \
|
|
24
|
+
if [ "$ARCH" = "amd64" ]; then \
|
|
25
|
+
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /usr/share/keyrings/microsoft.gpg \
|
|
26
|
+
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/debian/12/prod bookworm main" \
|
|
27
|
+
> /etc/apt/sources.list.d/mssql-release.list \
|
|
28
|
+
&& apt-get update \
|
|
29
|
+
&& ACCEPT_EULA=Y apt-get install -y --no-install-recommends mssql-tools18 unixodbc-dev \
|
|
30
|
+
&& rm -rf /var/lib/apt/lists/*; \
|
|
31
|
+
fi
|
|
32
|
+
ENV PATH="$PATH:/opt/mssql-tools18/bin"
|
|
33
|
+
|
|
34
|
+
# Claude Code CLI + AI Support Agent CLI
|
|
35
|
+
ARG AGENT_VERSION=latest
|
|
36
|
+
RUN npm install -g @anthropic-ai/claude-code @ai-support-agent/cli@${AGENT_VERSION}
|
|
37
|
+
|
|
38
|
+
WORKDIR /workspace
|
|
39
|
+
ENTRYPOINT ["ai-support-agent"]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-support-agent/cli",
|
|
3
|
-
"version": "0.0.4-beta.
|
|
3
|
+
"version": "0.0.4-beta.15",
|
|
4
4
|
"description": "AI Support Agent CLI client",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
25
|
"dist",
|
|
26
|
+
"docker",
|
|
26
27
|
"LICENSE",
|
|
27
28
|
"README.md",
|
|
28
29
|
"CHANGELOG.md"
|