@optima-chat/commerce-cli 1.12.14 → 1.12.16
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/api/rest/base.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAA0C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/api/rest/base.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAA0C,MAAM,OAAO,CAAC;AAoCrF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CA4GxE"}
|
package/dist/api/rest/base.js
CHANGED
|
@@ -1,36 +1,34 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import { ensureValidToken,
|
|
3
|
-
// ============== 容器环境 401
|
|
2
|
+
import { ensureValidToken, getTokenFromFile } from '../../utils/config.js';
|
|
3
|
+
// ============== 容器环境 401 标记 ==============
|
|
4
4
|
const TOKEN_REFRESH_MARKER = '__TOKEN_REFRESH_NEEDED__';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
function isContainerEnv() {
|
|
11
|
-
return !!process.env.WORKSPACE_DIR;
|
|
5
|
+
/** token 指纹(安全日志用):最后 8 位 + 长度 */
|
|
6
|
+
function tokenFingerprint(token) {
|
|
7
|
+
if (!token)
|
|
8
|
+
return 'null';
|
|
9
|
+
return `...${token.slice(-8)} (len=${token.length})`;
|
|
12
10
|
}
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
* 轮询 token.json 直到 token 发生变化或超时
|
|
16
|
-
*/
|
|
17
|
-
async function waitForTokenRefresh(oldToken) {
|
|
18
|
-
process.stderr.write(TOKEN_REFRESH_MARKER + '\n');
|
|
11
|
+
/** 轮询 token.json 等待新 token */
|
|
12
|
+
async function waitForNewToken(oldToken, maxWaitMs = 15000, intervalMs = 1000) {
|
|
19
13
|
const startTime = Date.now();
|
|
20
|
-
while (Date.now() - startTime <
|
|
21
|
-
await new Promise(resolve => setTimeout(resolve,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (newToken && newToken !== oldToken) {
|
|
27
|
-
return newToken;
|
|
28
|
-
}
|
|
14
|
+
while (Date.now() - startTime < maxWaitMs) {
|
|
15
|
+
await new Promise(resolve => setTimeout(resolve, intervalMs));
|
|
16
|
+
const freshToken = getTokenFromFile();
|
|
17
|
+
if (freshToken && freshToken !== oldToken) {
|
|
18
|
+
process.stderr.write(`[401-retry] New token found: ${tokenFingerprint(freshToken)} (waited ${Date.now() - startTime}ms)\n`);
|
|
19
|
+
return freshToken;
|
|
29
20
|
}
|
|
30
|
-
catch { /* 继续等待 */ }
|
|
31
21
|
}
|
|
22
|
+
process.stderr.write(`[401-retry] Timeout after ${maxWaitMs}ms, token unchanged: ${tokenFingerprint(getTokenFromFile())}\n`);
|
|
32
23
|
return null;
|
|
33
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* 检测是否运行在 AI 容器环境中
|
|
27
|
+
* ws-bridge.js 在容器启动时设置 WORKSPACE_DIR=/home/aiuser
|
|
28
|
+
*/
|
|
29
|
+
function isContainerEnv() {
|
|
30
|
+
return !!process.env.WORKSPACE_DIR;
|
|
31
|
+
}
|
|
34
32
|
/**
|
|
35
33
|
* 创建带认证的 API 客户端
|
|
36
34
|
* 自动在请求前检查 token 有效性
|
|
@@ -45,8 +43,8 @@ export function createAuthenticatedClient(baseURL) {
|
|
|
45
43
|
});
|
|
46
44
|
// 请求拦截器:自动添加 token
|
|
47
45
|
client.interceptors.request.use(async (config) => {
|
|
48
|
-
//
|
|
49
|
-
if (config.
|
|
46
|
+
// 401 重试时 token 已由拦截器设置,跳过
|
|
47
|
+
if (config._skipAuth) {
|
|
50
48
|
return config;
|
|
51
49
|
}
|
|
52
50
|
// 跳过不需要认证的请求
|
|
@@ -54,7 +52,7 @@ export function createAuthenticatedClient(baseURL) {
|
|
|
54
52
|
'/api/v1/oauth/device/authorize',
|
|
55
53
|
'/api/v1/oauth/device/token',
|
|
56
54
|
'/api/v1/oauth/token',
|
|
57
|
-
'/api/v1/public/',
|
|
55
|
+
'/api/v1/public/',
|
|
58
56
|
];
|
|
59
57
|
const url = config.url || '';
|
|
60
58
|
if (skipAuth.some(path => url.includes(path))) {
|
|
@@ -68,41 +66,50 @@ export function createAuthenticatedClient(baseURL) {
|
|
|
68
66
|
config.headers.Authorization = `Bearer ${token}`;
|
|
69
67
|
}
|
|
70
68
|
else {
|
|
71
|
-
// 没有 token,需要登录
|
|
72
69
|
const { AuthenticationError } = await import('../../utils/error.js');
|
|
73
70
|
throw new AuthenticationError('未登录,请先执行 optima auth login');
|
|
74
71
|
}
|
|
75
72
|
}
|
|
76
73
|
catch (error) {
|
|
77
|
-
// 容器环境:token 过期时通知外部刷新,轮询等待新 token
|
|
78
|
-
if (isContainerEnv()) {
|
|
79
|
-
const oldToken = getAccessToken();
|
|
80
|
-
const newToken = await waitForTokenRefresh(oldToken);
|
|
81
|
-
if (newToken) {
|
|
82
|
-
config.headers.Authorization = `Bearer ${newToken}`;
|
|
83
|
-
return config;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// 非容器环境或刷新失败:直接拒绝请求
|
|
87
|
-
// 错误会被传递到命令的 catch 块,由 handleError() 统一处理
|
|
88
74
|
return Promise.reject(error);
|
|
89
75
|
}
|
|
90
76
|
return config;
|
|
91
77
|
}, (error) => {
|
|
92
78
|
return Promise.reject(error);
|
|
93
79
|
});
|
|
94
|
-
//
|
|
80
|
+
// 响应拦截器:401 时在容器内等待新 token 并自动重试
|
|
95
81
|
client.interceptors.response.use((response) => response, async (error) => {
|
|
96
82
|
const originalRequest = error.config;
|
|
97
83
|
if (error.response?.status === 401 && originalRequest && !originalRequest._retried) {
|
|
98
84
|
originalRequest._retried = true;
|
|
99
85
|
if (isContainerEnv()) {
|
|
100
|
-
const oldToken =
|
|
101
|
-
const
|
|
86
|
+
const oldToken = originalRequest.headers?.Authorization?.toString().replace('Bearer ', '') || '';
|
|
87
|
+
const fileToken = getTokenFromFile();
|
|
88
|
+
process.stderr.write(`[401-diag] Got 401. ` +
|
|
89
|
+
`sent=${tokenFingerprint(oldToken)} ` +
|
|
90
|
+
`file=${tokenFingerprint(fileToken)} ` +
|
|
91
|
+
`same=${oldToken === fileToken} ` +
|
|
92
|
+
`OPTIMA_TOKEN=${process.env.OPTIMA_TOKEN ? tokenFingerprint(process.env.OPTIMA_TOKEN) : 'unset'}\n`);
|
|
93
|
+
// 1. 先检查 token.json 是否已有不同的 token
|
|
94
|
+
if (fileToken && fileToken !== oldToken) {
|
|
95
|
+
process.stderr.write(`[401-diag] Using different token from file, retrying\n`);
|
|
96
|
+
originalRequest._skipAuth = true;
|
|
97
|
+
originalRequest.headers.Authorization = `Bearer ${fileToken}`;
|
|
98
|
+
return client.request(originalRequest);
|
|
99
|
+
}
|
|
100
|
+
// 2. token.json 没有新 token,触发前端刷新并等待
|
|
101
|
+
process.stderr.write(TOKEN_REFRESH_MARKER + '\n');
|
|
102
|
+
const newToken = await waitForNewToken(oldToken);
|
|
102
103
|
if (newToken) {
|
|
104
|
+
process.stderr.write(`[401-diag] Retry with refreshed token: ${tokenFingerprint(newToken)}\n`);
|
|
105
|
+
originalRequest._skipAuth = true;
|
|
103
106
|
originalRequest.headers.Authorization = `Bearer ${newToken}`;
|
|
104
107
|
return client.request(originalRequest);
|
|
105
108
|
}
|
|
109
|
+
// 3. 超时,告知用户
|
|
110
|
+
const { AuthenticationError } = await import('../../utils/error.js');
|
|
111
|
+
throw new AuthenticationError('认证已过期,自动刷新超时。请刷新页面后重试。\n' +
|
|
112
|
+
'Token expired and auto-refresh timed out. Please refresh the page.');
|
|
106
113
|
}
|
|
107
114
|
}
|
|
108
115
|
return Promise.reject(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/api/rest/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAgE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/api/rest/base.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -12,11 +12,10 @@ interface EnvironmentConfig {
|
|
|
12
12
|
}
|
|
13
13
|
export declare const ENV_CONFIG: Record<Environment, EnvironmentConfig>;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* 而 token.json 会被 session-gateway 写入新 token。
|
|
15
|
+
* 直接从 token.json 读取 access_token,绕过 OPTIMA_TOKEN 环境变量
|
|
16
|
+
* 用于 401 重试时获取由 ws-bridge 本地写入的最新 token
|
|
18
17
|
*/
|
|
19
|
-
export declare function
|
|
18
|
+
export declare function getTokenFromFile(): string | null;
|
|
20
19
|
/**
|
|
21
20
|
* 获取当前环境
|
|
22
21
|
* 优先级:OPTIMA_ENV 环境变量 > token.json 的 env 字段 > 默认 production
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;AAKjE,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAcD,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAmB7D,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;AAKjE,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAcD,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAmB7D,CAAC;AAoFF;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAGhD;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAenD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAGvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,WAAW,EAChB,IAAI,CAAC,EAAE,QAAQ,GACd,IAAI,CAWN;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAS9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CASxC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAGzC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+B/D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAM7C;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,QAAQ,GAAG,IAAI,CAGzC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAMnC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC"}
|
package/dist/utils/config.js
CHANGED
|
@@ -57,15 +57,6 @@ function environmentToTokenEnv(env) {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
// ============== Token 文件操作 ==============
|
|
60
|
-
/**
|
|
61
|
-
* 从 token.json 读取 access_token(跳过 OPTIMA_TOKEN 环境变量)
|
|
62
|
-
* 用于容器环境下的 token 热更新轮询:环境变量在进程启动时设置,不会被热更新改变,
|
|
63
|
-
* 而 token.json 会被 session-gateway 写入新 token。
|
|
64
|
-
*/
|
|
65
|
-
export function getAccessTokenFromFile() {
|
|
66
|
-
const token = getOptimaToken();
|
|
67
|
-
return token?.access_token ?? null;
|
|
68
|
-
}
|
|
69
60
|
/**
|
|
70
61
|
* 从 ~/.optima/token.json 读取 token 数据
|
|
71
62
|
*/
|
|
@@ -103,6 +94,15 @@ function deleteOptimaToken() {
|
|
|
103
94
|
// 忽略删除失败
|
|
104
95
|
}
|
|
105
96
|
}
|
|
97
|
+
// ============== Token 文件直读(绕过 OPTIMA_TOKEN 环境变量) ==============
|
|
98
|
+
/**
|
|
99
|
+
* 直接从 token.json 读取 access_token,绕过 OPTIMA_TOKEN 环境变量
|
|
100
|
+
* 用于 401 重试时获取由 ws-bridge 本地写入的最新 token
|
|
101
|
+
*/
|
|
102
|
+
export function getTokenFromFile() {
|
|
103
|
+
const token = getOptimaToken();
|
|
104
|
+
return token?.access_token ?? null;
|
|
105
|
+
}
|
|
106
106
|
// ============== 公开 API ==============
|
|
107
107
|
/**
|
|
108
108
|
* 获取当前环境
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAkC7B,uCAAuC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAA2C;IAChE,UAAU,EAAE;QACV,OAAO,EAAE,yBAAyB;QAClC,MAAM,EAAE,wBAAwB;QAChC,WAAW,EAAE,aAAa;QAC1B,QAAQ,EAAE,+BAA+B;KAC1C;IACD,KAAK,EAAE;QACL,OAAO,EAAE,+BAA+B;QACxC,MAAM,EAAE,8BAA8B;QACtC,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,6BAA6B;KACxC;IACD,WAAW,EAAE;QACX,OAAO,EAAE,0BAA0B;QACnC,MAAM,EAAE,yBAAyB;QACjC,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,qBAAqB;KAChC;CACF,CAAC;AAEF,2CAA2C;AAE3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAElD,qCAAqC;AAErC;;GAEG;AACH,SAAS,qBAAqB,CAAC,QAAkB;IAC/C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,aAAa,CAAC;QACvB;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,GAAgB;IAC7C,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC;QACd;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,2CAA2C;AAE3C
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|