@ai-support-agent/cli 0.0.4 → 0.0.5-beta.2
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 +4 -1
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +17 -5
- package/dist/agent-runner.js.map +1 -1
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +6 -1
- package/dist/api-client.js.map +1 -1
- package/dist/appsync-subscriber.d.ts.map +1 -1
- package/dist/appsync-subscriber.js +3 -1
- package/dist/appsync-subscriber.js.map +1 -1
- package/dist/auto-updater.d.ts.map +1 -1
- package/dist/auto-updater.js +7 -2
- package/dist/auto-updater.js.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/locales/en.json +12 -0
- package/dist/locales/ja.json +12 -0
- package/dist/locales/locales/en.json +12 -0
- package/dist/locales/locales/ja.json +12 -0
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +20 -1
- package/dist/logger.js.map +1 -1
- package/dist/mcp/tools/credentials.d.ts +10 -1
- package/dist/mcp/tools/credentials.d.ts.map +1 -1
- package/dist/mcp/tools/credentials.js +10 -1
- package/dist/mcp/tools/credentials.js.map +1 -1
- package/dist/mcp/tools/db-query.d.ts +6 -2
- package/dist/mcp/tools/db-query.d.ts.map +1 -1
- package/dist/mcp/tools/db-query.js +41 -19
- package/dist/mcp/tools/db-query.js.map +1 -1
- package/dist/sentry.d.ts +14 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +98 -0
- package/dist/sentry.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/update-checker.d.ts +26 -5
- package/dist/update-checker.d.ts.map +1 -1
- package/dist/update-checker.js +148 -8
- package/dist/update-checker.js.map +1 -1
- package/package.json +2 -1
|
@@ -33,30 +33,50 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
36
|
+
exports.validateSql = validateSql;
|
|
37
37
|
exports.executeQuery = executeQuery;
|
|
38
38
|
exports.registerDbQueryTool = registerDbQueryTool;
|
|
39
39
|
const zod_1 = require("zod");
|
|
40
40
|
const mcp_response_1 = require("./mcp-response");
|
|
41
|
-
/** SQL
|
|
42
|
-
function
|
|
41
|
+
/** SQL文を検証する。writePermissions で INSERT/UPDATE/DELETE の許可を制御 */
|
|
42
|
+
function validateSql(sql, writePermissions) {
|
|
43
43
|
const trimmed = sql.trim();
|
|
44
44
|
if (!trimmed) {
|
|
45
45
|
return { valid: false, error: 'SQL query is empty' };
|
|
46
46
|
}
|
|
47
|
-
// 禁止キーワードをチェック(大文字小文字無視)
|
|
48
|
-
const forbidden = ['DROP', 'DELETE', 'UPDATE', 'INSERT', 'TRUNCATE', 'ALTER', 'CREATE', 'GRANT', 'REVOKE'];
|
|
49
47
|
const upper = trimmed.toUpperCase();
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
// DDLは常に禁止
|
|
49
|
+
const ddlKeywords = ['DROP', 'TRUNCATE', 'ALTER', 'CREATE', 'GRANT', 'REVOKE'];
|
|
50
|
+
for (const keyword of ddlKeywords) {
|
|
52
51
|
const regex = new RegExp(`(?<![A-Z_])${keyword}(?![A-Z_])`);
|
|
53
52
|
if (regex.test(upper)) {
|
|
54
53
|
return { valid: false, error: `Forbidden SQL operation: ${keyword}` };
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
// DML書き込み操作は writePermissions に基づいて許可/拒否
|
|
57
|
+
const dmlChecks = [
|
|
58
|
+
{ keyword: 'INSERT', permission: writePermissions?.insert === true },
|
|
59
|
+
{ keyword: 'UPDATE', permission: writePermissions?.update === true },
|
|
60
|
+
{ keyword: 'DELETE', permission: writePermissions?.delete === true },
|
|
61
|
+
];
|
|
62
|
+
for (const { keyword, permission } of dmlChecks) {
|
|
63
|
+
const regex = new RegExp(`(?<![A-Z_])${keyword}(?![A-Z_])`);
|
|
64
|
+
if (regex.test(upper) && !permission) {
|
|
65
|
+
return { valid: false, error: `Forbidden SQL operation: ${keyword}` };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// 許可される先頭キーワード
|
|
69
|
+
const allowedStarts = ['SELECT', 'WITH', 'EXPLAIN'];
|
|
70
|
+
if (writePermissions?.insert)
|
|
71
|
+
allowedStarts.push('INSERT');
|
|
72
|
+
if (writePermissions?.update)
|
|
73
|
+
allowedStarts.push('UPDATE');
|
|
74
|
+
if (writePermissions?.delete)
|
|
75
|
+
allowedStarts.push('DELETE');
|
|
76
|
+
const startsWithAllowed = allowedStarts.some((kw) => upper.startsWith(kw));
|
|
77
|
+
if (!startsWithAllowed) {
|
|
78
|
+
const allowed = allowedStarts.join(', ');
|
|
79
|
+
return { valid: false, error: `Only ${allowed} statements are allowed` };
|
|
60
80
|
}
|
|
61
81
|
return { valid: true };
|
|
62
82
|
}
|
|
@@ -82,6 +102,8 @@ async function executeQuery(credentials, sql) {
|
|
|
82
102
|
}
|
|
83
103
|
if (credentials.engine === 'postgresql') {
|
|
84
104
|
const { Client } = await Promise.resolve().then(() => __importStar(require('pg')));
|
|
105
|
+
const isLocalHost = credentials.host === 'localhost' || credentials.host === '127.0.0.1';
|
|
106
|
+
const useSsl = credentials.ssl !== undefined ? credentials.ssl : !isLocalHost;
|
|
85
107
|
const client = new Client({
|
|
86
108
|
host: credentials.host,
|
|
87
109
|
port: credentials.port,
|
|
@@ -89,7 +111,7 @@ async function executeQuery(credentials, sql) {
|
|
|
89
111
|
password: credentials.password,
|
|
90
112
|
database: credentials.database,
|
|
91
113
|
connectionTimeoutMillis: 10000,
|
|
92
|
-
ssl: false,
|
|
114
|
+
ssl: useSsl ? { rejectUnauthorized: true } : false,
|
|
93
115
|
});
|
|
94
116
|
try {
|
|
95
117
|
await client.connect();
|
|
@@ -104,18 +126,18 @@ async function executeQuery(credentials, sql) {
|
|
|
104
126
|
}
|
|
105
127
|
/** db_query ツールを MCP サーバーに登録する */
|
|
106
128
|
function registerDbQueryTool(server, apiClient) {
|
|
107
|
-
server.tool('db_query', 'Execute a
|
|
129
|
+
server.tool('db_query', 'Execute a SQL query on a project database. Supports SELECT, INSERT, UPDATE, and DELETE. Write operations (INSERT/UPDATE/DELETE) are allowed when the database connection has the corresponding write permissions configured. DDL operations are always forbidden. Submit the SQL directly — permission checks are handled server-side.', {
|
|
108
130
|
name: zod_1.z.string().describe('Database connection name (e.g. "MAIN", "READONLY")'),
|
|
109
|
-
sql: zod_1.z.string().describe('SQL query to execute (SELECT
|
|
131
|
+
sql: zod_1.z.string().describe('SQL query to execute (SELECT, INSERT, UPDATE, DELETE)'),
|
|
110
132
|
}, async ({ name, sql }) => {
|
|
111
|
-
// Validate SQL
|
|
112
|
-
const validation = validateSelectOnly(sql);
|
|
113
|
-
if (!validation.valid) {
|
|
114
|
-
return (0, mcp_response_1.mcpErrorResponse)(validation.error);
|
|
115
|
-
}
|
|
116
133
|
try {
|
|
117
|
-
// Get credentials from API
|
|
134
|
+
// Get credentials from API (includes writePermissions)
|
|
118
135
|
const credentials = await apiClient.getDbCredentials(name);
|
|
136
|
+
// Validate SQL with write permissions
|
|
137
|
+
const validation = validateSql(sql, credentials.writePermissions);
|
|
138
|
+
if (!validation.valid) {
|
|
139
|
+
return (0, mcp_response_1.mcpErrorResponse)(validation.error);
|
|
140
|
+
}
|
|
119
141
|
// Execute query
|
|
120
142
|
const rows = await executeQuery(credentials, sql);
|
|
121
143
|
// Format result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-query.js","sourceRoot":"","sources":["../../../src/mcp/tools/db-query.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,
|
|
1
|
+
{"version":3,"file":"db-query.js","sourceRoot":"","sources":["../../../src/mcp/tools/db-query.ts"],"names":[],"mappings":"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"}
|
package/dist/sentry.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentry を条件付きで初期化する。
|
|
3
|
+
* SENTRY_DSN が設定されていない場合は何もしない(オプトイン方式)。
|
|
4
|
+
*/
|
|
5
|
+
export declare function initSentry(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* 例外を Sentry に報告する。未初期化時は no-op。
|
|
8
|
+
*/
|
|
9
|
+
export declare function captureException(error: unknown, context?: Record<string, unknown>): void;
|
|
10
|
+
/**
|
|
11
|
+
* Sentry のイベントキューをフラッシュする。プロセス終了前に呼び出す。
|
|
12
|
+
*/
|
|
13
|
+
export declare function flushSentry(): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=sentry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGxF;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD"}
|
package/dist/sentry.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
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.initSentry = initSentry;
|
|
37
|
+
exports.captureException = captureException;
|
|
38
|
+
exports.flushSentry = flushSentry;
|
|
39
|
+
const constants_1 = require("./constants");
|
|
40
|
+
const logger_1 = require("./logger");
|
|
41
|
+
let sentry = null;
|
|
42
|
+
/**
|
|
43
|
+
* Sentry を条件付きで初期化する。
|
|
44
|
+
* SENTRY_DSN が設定されていない場合は何もしない(オプトイン方式)。
|
|
45
|
+
*/
|
|
46
|
+
async function initSentry() {
|
|
47
|
+
const dsn = process.env.SENTRY_DSN;
|
|
48
|
+
if (!dsn) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const Sentry = await Promise.resolve().then(() => __importStar(require('@sentry/node')));
|
|
52
|
+
Sentry.init({
|
|
53
|
+
dsn,
|
|
54
|
+
release: `ai-support-agent-cli@${constants_1.AGENT_VERSION}`,
|
|
55
|
+
environment: process.env.SENTRY_ENVIRONMENT || process.env.NODE_ENV || 'production',
|
|
56
|
+
tracesSampleRate: 0.05,
|
|
57
|
+
sendDefaultPii: false,
|
|
58
|
+
beforeSend(event) {
|
|
59
|
+
if (event.breadcrumbs) {
|
|
60
|
+
event.breadcrumbs = event.breadcrumbs.map((breadcrumb) => ({
|
|
61
|
+
...breadcrumb,
|
|
62
|
+
message: breadcrumb.message ? (0, logger_1.maskSecrets)(breadcrumb.message) : breadcrumb.message,
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
return event;
|
|
66
|
+
},
|
|
67
|
+
beforeBreadcrumb(breadcrumb) {
|
|
68
|
+
if (breadcrumb.category === 'http' && breadcrumb.data?.url) {
|
|
69
|
+
breadcrumb.data.url = maskUrlTokens(breadcrumb.data.url);
|
|
70
|
+
}
|
|
71
|
+
return breadcrumb;
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
sentry = Sentry;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 例外を Sentry に報告する。未初期化時は no-op。
|
|
78
|
+
*/
|
|
79
|
+
function captureException(error, context) {
|
|
80
|
+
if (!sentry)
|
|
81
|
+
return;
|
|
82
|
+
sentry.captureException(error, context ? { extra: context } : undefined);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Sentry のイベントキューをフラッシュする。プロセス終了前に呼び出す。
|
|
86
|
+
*/
|
|
87
|
+
async function flushSentry() {
|
|
88
|
+
if (!sentry)
|
|
89
|
+
return;
|
|
90
|
+
await sentry.flush(2000);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* URL内のトークンパラメータをマスクする。
|
|
94
|
+
*/
|
|
95
|
+
function maskUrlTokens(url) {
|
|
96
|
+
return url.replace(/([?&](?:token|key|secret|password|authorization|credential)=)[^&]*/gi, '$1[Filtered]');
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=sentry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentry.js","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,gCA8BC;AAKD,4CAGC;AAKD,kCAGC;AAzDD,2CAA2C;AAC3C,qCAAsC;AAItC,IAAI,MAAM,GAAwB,IAAI,CAAA;AAEtC;;;GAGG;AACI,KAAK,UAAU,UAAU;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,wDAAa,cAAc,GAAC,CAAA;IAC3C,MAAM,CAAC,IAAI,CAAC;QACV,GAAG;QACH,OAAO,EAAE,wBAAwB,yBAAa,EAAE;QAChD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;QACnF,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,UAAU,CAAC,KAAK;YACd,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBACzD,GAAG,UAAU;oBACb,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,oBAAW,EAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO;iBACnF,CAAC,CAAC,CAAA;YACL,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,gBAAgB,CAAC,UAAU;YACzB,IAAI,UAAU,CAAC,QAAQ,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;gBAC3D,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAa,CAAC,CAAA;YACpE,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAC,CAAA;IACF,MAAM,GAAG,MAAM,CAAA;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAc,EAAE,OAAiC;IAChF,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAC1E,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,OAAO,CAChB,sEAAsE,EACtE,cAAc,CACf,CAAA;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export interface HistoryMessage {
|
|
|
3
3
|
content: string;
|
|
4
4
|
}
|
|
5
5
|
export type ReleaseChannel = 'latest' | 'beta' | 'alpha';
|
|
6
|
+
export type InstallMethod = 'global' | 'npx' | 'local' | 'dev';
|
|
6
7
|
export interface VersionInfo {
|
|
7
8
|
latestVersion: string;
|
|
8
9
|
minimumVersion: string;
|
|
@@ -214,6 +215,7 @@ export interface DbCredentials {
|
|
|
214
215
|
database: string;
|
|
215
216
|
user: string;
|
|
216
217
|
password: string;
|
|
218
|
+
ssl?: boolean;
|
|
217
219
|
writePermissions?: {
|
|
218
220
|
insert: boolean;
|
|
219
221
|
update: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/update-checker.d.ts
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
import type { InstallMethod, ReleaseChannel } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Get the global npm prefix path (e.g. /usr/local).
|
|
4
|
+
* Result is cached after the first call.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getGlobalNpmPrefix(): string;
|
|
7
|
+
/**
|
|
8
|
+
* Reset the cached global npm prefix (for testing).
|
|
9
|
+
*/
|
|
10
|
+
export declare function resetGlobalPrefixCache(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Detect how the CLI was installed/started.
|
|
13
|
+
* Priority: dev → npx → global → local
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectInstallMethod(): InstallMethod;
|
|
16
|
+
/**
|
|
17
|
+
* バージョン文字列からリリースチャンネルを推定する。
|
|
18
|
+
* e.g. "0.0.4-beta.21" → "beta", "0.0.4-alpha.3" → "alpha", "0.0.4" → "latest"
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectChannelFromVersion(version: string): ReleaseChannel;
|
|
1
21
|
/**
|
|
2
22
|
* Compare two semver strings.
|
|
3
23
|
* Returns true if `latest` is newer than `current`.
|
|
@@ -9,16 +29,17 @@ export declare function isNewerVersion(current: string, latest: string): boolean
|
|
|
9
29
|
*/
|
|
10
30
|
export declare function isValidVersion(version: string): boolean;
|
|
11
31
|
/**
|
|
12
|
-
* Install a specific version of the CLI package
|
|
13
|
-
*
|
|
32
|
+
* Install a specific version of the CLI package.
|
|
33
|
+
* Only global and npx methods are supported for automatic update.
|
|
14
34
|
*/
|
|
15
|
-
export declare function performUpdate(version: string): Promise<{
|
|
35
|
+
export declare function performUpdate(version: string, method?: InstallMethod): Promise<{
|
|
16
36
|
success: boolean;
|
|
17
37
|
error?: string;
|
|
18
38
|
}>;
|
|
19
39
|
/**
|
|
20
40
|
* Re-exec the current process with the same arguments.
|
|
21
|
-
*
|
|
41
|
+
* Preserves process.execArgv (Node.js runtime flags) and environment variables.
|
|
42
|
+
* For npx installs, resolves the global binary path instead of the stale npx cache path.
|
|
22
43
|
*/
|
|
23
|
-
export declare function reExecProcess(): void;
|
|
44
|
+
export declare function reExecProcess(method?: InstallMethod): void;
|
|
24
45
|
//# sourceMappingURL=update-checker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAyBvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI5D;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAS3C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CA0BnD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAQxE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAyBvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AA2CD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAe/C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAwB1D"}
|
package/dist/update-checker.js
CHANGED
|
@@ -1,12 +1,115 @@
|
|
|
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
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getGlobalNpmPrefix = getGlobalNpmPrefix;
|
|
37
|
+
exports.resetGlobalPrefixCache = resetGlobalPrefixCache;
|
|
38
|
+
exports.detectInstallMethod = detectInstallMethod;
|
|
39
|
+
exports.detectChannelFromVersion = detectChannelFromVersion;
|
|
3
40
|
exports.isNewerVersion = isNewerVersion;
|
|
4
41
|
exports.isValidVersion = isValidVersion;
|
|
5
42
|
exports.performUpdate = performUpdate;
|
|
6
43
|
exports.reExecProcess = reExecProcess;
|
|
7
44
|
const child_process_1 = require("child_process");
|
|
45
|
+
const path = __importStar(require("path"));
|
|
8
46
|
const constants_1 = require("./constants");
|
|
9
47
|
const logger_1 = require("./logger");
|
|
48
|
+
let cachedGlobalPrefix = null;
|
|
49
|
+
/**
|
|
50
|
+
* Get the global npm prefix path (e.g. /usr/local).
|
|
51
|
+
* Result is cached after the first call.
|
|
52
|
+
*/
|
|
53
|
+
function getGlobalNpmPrefix() {
|
|
54
|
+
if (cachedGlobalPrefix !== null)
|
|
55
|
+
return cachedGlobalPrefix;
|
|
56
|
+
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
57
|
+
const result = (0, child_process_1.execFileSync)(npmCmd, ['prefix', '-g'], {
|
|
58
|
+
encoding: 'utf-8',
|
|
59
|
+
timeout: 10_000,
|
|
60
|
+
}).trim();
|
|
61
|
+
cachedGlobalPrefix = result;
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Reset the cached global npm prefix (for testing).
|
|
66
|
+
*/
|
|
67
|
+
function resetGlobalPrefixCache() {
|
|
68
|
+
cachedGlobalPrefix = null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Detect how the CLI was installed/started.
|
|
72
|
+
* Priority: dev → npx → global → local
|
|
73
|
+
*/
|
|
74
|
+
function detectInstallMethod() {
|
|
75
|
+
const scriptPath = process.argv[1] ?? '';
|
|
76
|
+
const execArgvStr = process.execArgv.join(' ');
|
|
77
|
+
// 1. Dev: ts-node or .ts file
|
|
78
|
+
if (execArgvStr.includes('ts-node') || scriptPath.endsWith('.ts')) {
|
|
79
|
+
return 'dev';
|
|
80
|
+
}
|
|
81
|
+
// 2. npx: path contains _npx
|
|
82
|
+
if (scriptPath.includes('/_npx/') || scriptPath.includes('\\_npx\\')) {
|
|
83
|
+
return 'npx';
|
|
84
|
+
}
|
|
85
|
+
// 3. Global: under npm global prefix
|
|
86
|
+
try {
|
|
87
|
+
const globalPrefix = getGlobalNpmPrefix();
|
|
88
|
+
if (globalPrefix && scriptPath.startsWith(globalPrefix)) {
|
|
89
|
+
return 'global';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// npm prefix -g failed → fall through to local
|
|
94
|
+
}
|
|
95
|
+
// 4. Local: fallback
|
|
96
|
+
return 'local';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* バージョン文字列からリリースチャンネルを推定する。
|
|
100
|
+
* e.g. "0.0.4-beta.21" → "beta", "0.0.4-alpha.3" → "alpha", "0.0.4" → "latest"
|
|
101
|
+
*/
|
|
102
|
+
function detectChannelFromVersion(version) {
|
|
103
|
+
const match = version.match(/^\d+\.\d+\.\d+-(\w+)/);
|
|
104
|
+
if (match) {
|
|
105
|
+
const tag = match[1];
|
|
106
|
+
if (tag === 'beta')
|
|
107
|
+
return 'beta';
|
|
108
|
+
if (tag === 'alpha')
|
|
109
|
+
return 'alpha';
|
|
110
|
+
}
|
|
111
|
+
return 'latest';
|
|
112
|
+
}
|
|
10
113
|
/**
|
|
11
114
|
* Compare two semver strings.
|
|
12
115
|
* Returns true if `latest` is newer than `current`.
|
|
@@ -46,12 +149,20 @@ function isValidVersion(version) {
|
|
|
46
149
|
return /^\d+\.\d+\.\d+/.test(version);
|
|
47
150
|
}
|
|
48
151
|
/**
|
|
49
|
-
*
|
|
50
|
-
* Returns true on success, false on failure.
|
|
152
|
+
* Resolve the global binary script path for @ai-support-agent/cli.
|
|
51
153
|
*/
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
|
|
154
|
+
function resolveGlobalBinaryScript() {
|
|
155
|
+
const globalPrefix = getGlobalNpmPrefix();
|
|
156
|
+
// Windows: {prefix}/node_modules/... macOS/Linux: {prefix}/lib/node_modules/...
|
|
157
|
+
const segments = process.platform === 'win32'
|
|
158
|
+
? [globalPrefix, 'node_modules', '@ai-support-agent', 'cli', 'dist', 'index.js']
|
|
159
|
+
: [globalPrefix, 'lib', 'node_modules', '@ai-support-agent', 'cli', 'dist', 'index.js'];
|
|
160
|
+
return path.join(...segments);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Run npm install command and return result.
|
|
164
|
+
*/
|
|
165
|
+
function execNpmCommand(npmCmd, args, version) {
|
|
55
166
|
return new Promise((resolve) => {
|
|
56
167
|
(0, child_process_1.execFile)(npmCmd, args, { timeout: constants_1.NPM_INSTALL_TIMEOUT }, (error, _stdout, stderr) => {
|
|
57
168
|
if (error) {
|
|
@@ -72,16 +183,45 @@ async function performUpdate(version) {
|
|
|
72
183
|
});
|
|
73
184
|
});
|
|
74
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Install a specific version of the CLI package.
|
|
188
|
+
* Only global and npx methods are supported for automatic update.
|
|
189
|
+
*/
|
|
190
|
+
async function performUpdate(version, method) {
|
|
191
|
+
const installMethod = method ?? detectInstallMethod();
|
|
192
|
+
if (installMethod === 'dev') {
|
|
193
|
+
return { success: false, error: 'Development mode: automatic update is not supported. Please update manually.' };
|
|
194
|
+
}
|
|
195
|
+
if (installMethod === 'local') {
|
|
196
|
+
return { success: false, error: 'Local installation: automatic update is not supported. Run npm update in your project.' };
|
|
197
|
+
}
|
|
198
|
+
// global & npx: npm install -g
|
|
199
|
+
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
200
|
+
const args = ['install', '-g', `@ai-support-agent/cli@${version}`];
|
|
201
|
+
return execNpmCommand(npmCmd, args, version);
|
|
202
|
+
}
|
|
75
203
|
/**
|
|
76
204
|
* Re-exec the current process with the same arguments.
|
|
77
|
-
*
|
|
205
|
+
* Preserves process.execArgv (Node.js runtime flags) and environment variables.
|
|
206
|
+
* For npx installs, resolves the global binary path instead of the stale npx cache path.
|
|
78
207
|
*/
|
|
79
|
-
function reExecProcess() {
|
|
80
|
-
const
|
|
208
|
+
function reExecProcess(method) {
|
|
209
|
+
const installMethod = method ?? detectInstallMethod();
|
|
210
|
+
let args;
|
|
211
|
+
if (installMethod === 'npx') {
|
|
212
|
+
// npx cache path points to old version → use global install path
|
|
213
|
+
const globalScript = resolveGlobalBinaryScript();
|
|
214
|
+
args = [...process.execArgv, globalScript, ...process.argv.slice(2)];
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// global / local / dev: re-exec with original argv, preserving execArgv
|
|
218
|
+
args = [...process.execArgv, ...process.argv.slice(1)];
|
|
219
|
+
}
|
|
81
220
|
logger_1.logger.info(`Re-executing: ${process.execPath} ${args.join(' ')}`);
|
|
82
221
|
const child = (0, child_process_1.spawn)(process.execPath, args, {
|
|
83
222
|
detached: true,
|
|
84
223
|
stdio: 'inherit',
|
|
224
|
+
env: { ...process.env },
|
|
85
225
|
});
|
|
86
226
|
child.unref();
|
|
87
227
|
process.exit(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-support-agent/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5-beta.2",
|
|
4
4
|
"description": "AI Support Agent CLI client",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
40
|
+
"@sentry/node": "^10.40.0",
|
|
40
41
|
"axios": "^1.13.0",
|
|
41
42
|
"commander": "^14.0.0",
|
|
42
43
|
"mysql2": "^3.18.2",
|