@zhin.js/scaffold-wizard 0.1.8 → 0.2.0
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/README.md +4 -0
- package/lib/adapter-configurers.d.ts +10 -0
- package/lib/adapter-configurers.d.ts.map +1 -1
- package/lib/adapter-configurers.js +436 -71
- package/lib/adapter-configurers.js.map +1 -1
- package/lib/adapter.d.ts +55 -9
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +206 -110
- package/lib/adapter.js.map +1 -1
- package/lib/apply.d.ts +22 -1
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +156 -23
- package/lib/apply.js.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/project-config-plan.d.ts +2 -0
- package/lib/project-config-plan.d.ts.map +1 -1
- package/lib/project-config-plan.js +54 -15
- package/lib/project-config-plan.js.map +1 -1
- package/lib/weixin-ilink-login.d.ts +33 -0
- package/lib/weixin-ilink-login.d.ts.map +1 -0
- package/lib/weixin-ilink-login.js +90 -0
- package/lib/weixin-ilink-login.js.map +1 -0
- package/lib/zhin-stack-deps.d.ts +9 -1
- package/lib/zhin-stack-deps.d.ts.map +1 -1
- package/lib/zhin-stack-deps.js +26 -10
- package/lib/zhin-stack-deps.js.map +1 -1
- package/package.json +3 -1
- package/src/adapter-configurers.ts +464 -70
- package/src/adapter.ts +224 -112
- package/src/apply.ts +170 -21
- package/src/index.ts +10 -4
- package/src/project-config-plan.ts +55 -15
- package/src/weixin-ilink-login.ts +151 -0
- package/src/zhin-stack-deps.ts +26 -10
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 微信 iLink(ClawBot)扫码登录流程 — 向导内联实现。
|
|
3
|
+
* 协议与 plugins/adapters/weixin-ilink/src/login.ts 一致(SSOT),
|
|
4
|
+
* 此处复制最小 HTTP 面,避免向导在适配器包安装前产生依赖。
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_BASE_URL = 'https://ilinkai.weixin.qq.com';
|
|
7
|
+
const DEFAULT_BOT_TYPE = '3';
|
|
8
|
+
const POLL_INTERVAL_MS = 500;
|
|
9
|
+
const QR_LONG_POLL_TIMEOUT_MS = 35_000;
|
|
10
|
+
export class IlinkQrLoginError extends Error {
|
|
11
|
+
reason;
|
|
12
|
+
constructor(message, reason) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.reason = reason;
|
|
15
|
+
this.name = 'IlinkQrLoginError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** 与 adapter login.ts 的 buildBaseInfo 对齐的最小结构。 */
|
|
19
|
+
function buildBaseInfo() {
|
|
20
|
+
return { channel_version: '0.0.0', bot_agent: 'Zhin.js' };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 微信 iLink 扫码登录:获取二维码 → 展示 → 长轮询直至 confirmed。
|
|
24
|
+
* 成功返回 bot_token 等凭证;过期/超时/网络失败抛 IlinkQrLoginError。
|
|
25
|
+
*/
|
|
26
|
+
export async function loginWithIlinkQr(options) {
|
|
27
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
28
|
+
const sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
29
|
+
const apiBaseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
|
|
30
|
+
const timeoutMs = options.timeoutMs ?? 480_000;
|
|
31
|
+
let qr;
|
|
32
|
+
try {
|
|
33
|
+
const res = await fetchImpl(`${apiBaseUrl}/ilink/bot/get_bot_qrcode?bot_type=${encodeURIComponent(DEFAULT_BOT_TYPE)}`, {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
headers: { 'content-type': 'application/json' },
|
|
36
|
+
body: JSON.stringify({ local_token_list: [], base_info: buildBaseInfo() }),
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok)
|
|
39
|
+
throw new Error(`HTTP ${res.status}`);
|
|
40
|
+
qr = await res.json();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
throw new IlinkQrLoginError(`获取登录二维码失败:${error instanceof Error ? error.message : String(error)}`, 'network');
|
|
44
|
+
}
|
|
45
|
+
const qrcodeUrl = qr.qrcode_img_content || qr.qrcode;
|
|
46
|
+
await options.onQrCode(qrcodeUrl);
|
|
47
|
+
const deadline = Date.now() + timeoutMs;
|
|
48
|
+
let currentBaseUrl = apiBaseUrl;
|
|
49
|
+
let lastStatus;
|
|
50
|
+
while (Date.now() < deadline) {
|
|
51
|
+
let status;
|
|
52
|
+
try {
|
|
53
|
+
const res = await fetchImpl(`${currentBaseUrl}/ilink/bot/get_qrcode_status?qrcode=${encodeURIComponent(qr.qrcode)}`, { signal: AbortSignal.timeout(QR_LONG_POLL_TIMEOUT_MS) });
|
|
54
|
+
if (!res.ok)
|
|
55
|
+
throw new Error(`HTTP ${res.status}`);
|
|
56
|
+
status = await res.json();
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// 长轮询超时/瞬断视为继续等待
|
|
60
|
+
await sleep(POLL_INTERVAL_MS);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (status.status !== lastStatus) {
|
|
64
|
+
lastStatus = status.status;
|
|
65
|
+
options.onStatus?.(status.status);
|
|
66
|
+
}
|
|
67
|
+
if (status.status === 'scaned_but_redirect' && status.redirect_host) {
|
|
68
|
+
currentBaseUrl = status.redirect_host.startsWith('http')
|
|
69
|
+
? status.redirect_host
|
|
70
|
+
: `https://${status.redirect_host}`;
|
|
71
|
+
}
|
|
72
|
+
if (status.status === 'confirmed' || status.status === 'binded_redirect') {
|
|
73
|
+
if (!status.bot_token) {
|
|
74
|
+
throw new IlinkQrLoginError('扫码成功但未返回 bot_token,请重试或改用手动输入', 'protocol');
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
botToken: status.bot_token,
|
|
78
|
+
...(status.ilink_user_id ? { ilinkUserId: status.ilink_user_id } : {}),
|
|
79
|
+
...(status.ilink_endpoint_id ? { ilinkBotId: status.ilink_endpoint_id } : {}),
|
|
80
|
+
baseUrl: status.baseurl ?? currentBaseUrl,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (status.status === 'expired') {
|
|
84
|
+
throw new IlinkQrLoginError('二维码已过期', 'expired');
|
|
85
|
+
}
|
|
86
|
+
await sleep(POLL_INTERVAL_MS);
|
|
87
|
+
}
|
|
88
|
+
throw new IlinkQrLoginError('微信扫码登录超时', 'timeout');
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=weixin-ilink-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weixin-ilink-login.js","sourceRoot":"","sources":["../src/weixin-ilink-login.ts"],"names":[],"mappings":"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"}
|
package/lib/zhin-stack-deps.d.ts
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import { type PackageJsonLike } from './project-deps.js';
|
|
2
2
|
/**
|
|
3
3
|
* User project dependency policy: scaffolded dependencies intentionally float to latest.
|
|
4
|
+
* WARNING: this is not reproducible; pin versions for production. See scaffold-wizard README.
|
|
4
5
|
*/
|
|
5
6
|
export declare const ZHIN_STACK_VERSIONS: {
|
|
6
7
|
readonly 'zhin.js': "latest";
|
|
7
8
|
readonly '@zhin.js/cli': "latest";
|
|
8
9
|
readonly '@zhin.js/agent': "latest";
|
|
9
10
|
readonly '@zhin.js/database': "latest";
|
|
11
|
+
readonly '@zhin.js/plugin-runtime': "latest";
|
|
12
|
+
readonly '@zhin.js/runtime': "latest";
|
|
13
|
+
readonly '@zhin.js/adapter': "latest";
|
|
14
|
+
readonly '@zhin.js/command': "latest";
|
|
15
|
+
readonly '@zhin.js/component': "latest";
|
|
16
|
+
readonly '@zhin.js/core': "latest";
|
|
17
|
+
readonly '@zhin.js/tool': "latest";
|
|
10
18
|
readonly '@zhin.js/host-router': "latest";
|
|
11
19
|
readonly '@zhin.js/host-api': "latest";
|
|
12
20
|
readonly '@zhin.js/client': "latest";
|
|
@@ -43,7 +51,7 @@ export declare const DEFAULT_CREATE_BOT_HTTP_PORT = 8068;
|
|
|
43
51
|
export declare const CREATE_BOT_NPMRC = "strict-peer-dependencies=false\n";
|
|
44
52
|
/** create-zhin 生成项目的 pnpm 配置 */
|
|
45
53
|
export declare function getCreateBotPnpmConfig(_aiEnabled?: boolean): Record<string, unknown>;
|
|
46
|
-
/** create-zhin-app
|
|
54
|
+
/** create-zhin-app Plugin Runtime 骨架 production 依赖(不含适配器 / AI / 数据库驱动) */
|
|
47
55
|
export declare function getCreateBotBaseDependencies(): Record<string, string>;
|
|
48
56
|
/** 根据 zhin.config 推导应声明的 @zhin.js/* / zhin.js 依赖 */
|
|
49
57
|
export declare function getRequiredZhinDependenciesForConfig(config: Record<string, unknown>): Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zhin-stack-deps.d.ts","sourceRoot":"","sources":["../src/zhin-stack-deps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsF,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE7I
|
|
1
|
+
{"version":3,"file":"zhin-stack-deps.d.ts","sourceRoot":"","sources":["../src/zhin-stack-deps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsF,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE7I;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAoDhE,4DAA4D;AAC5D,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,qCAAqC,CAAC;AAEnE,gCAAgC;AAChC,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIpF;AAED,0EAA0E;AAC1E,wBAAgB,4BAA4B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWrE;AAED,oDAAoD;AACpD,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2B5G;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,EAAE,CAYV;AAED,wBAAgB,uCAAuC,CACrD,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,wBAAwB,EAAE,CA0B5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IAClD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,EAAE,CASnF;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,CAAC,EAAE,eAAe,GACpB,kBAAkB,CAkBpB;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAItG"}
|
package/lib/zhin-stack-deps.js
CHANGED
|
@@ -5,12 +5,20 @@ import { DATABASE_PACKAGES } from './types.js';
|
|
|
5
5
|
import { findMissingPackageDependencies, findUnresolvedPackageInstalls, isAiEnabledInConfig } from './project-deps.js';
|
|
6
6
|
/**
|
|
7
7
|
* User project dependency policy: scaffolded dependencies intentionally float to latest.
|
|
8
|
+
* WARNING: this is not reproducible; pin versions for production. See scaffold-wizard README.
|
|
8
9
|
*/
|
|
9
10
|
export const ZHIN_STACK_VERSIONS = {
|
|
10
11
|
'zhin.js': 'latest',
|
|
11
12
|
'@zhin.js/cli': 'latest',
|
|
12
13
|
'@zhin.js/agent': 'latest',
|
|
13
14
|
'@zhin.js/database': 'latest',
|
|
15
|
+
'@zhin.js/plugin-runtime': 'latest',
|
|
16
|
+
'@zhin.js/runtime': 'latest',
|
|
17
|
+
'@zhin.js/adapter': 'latest',
|
|
18
|
+
'@zhin.js/command': 'latest',
|
|
19
|
+
'@zhin.js/component': 'latest',
|
|
20
|
+
'@zhin.js/core': 'latest',
|
|
21
|
+
'@zhin.js/tool': 'latest',
|
|
14
22
|
'@zhin.js/host-router': 'latest',
|
|
15
23
|
'@zhin.js/host-api': 'latest',
|
|
16
24
|
'@zhin.js/client': 'latest',
|
|
@@ -75,10 +83,17 @@ function resolveStackVersion(packageName) {
|
|
|
75
83
|
return ZHIN_STACK_VERSIONS[packageName] ?? 'latest';
|
|
76
84
|
}
|
|
77
85
|
function collectZhinPluginsFromConfig(config) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
// legacy 数组形式:条目即包名
|
|
87
|
+
if (Array.isArray(config.plugins)) {
|
|
88
|
+
const plugins = config.plugins.filter((p) => typeof p === 'string');
|
|
89
|
+
return [...new Set(plugins.filter((p) => p.startsWith('@zhin.js/')))];
|
|
90
|
+
}
|
|
91
|
+
// 新 runtime:plugins 为 instanceKey 映射,包名在 package.json zhin.plugins 清单中,
|
|
92
|
+
// 无法从配置推导;仅收集直接以包名出现的键(防御性)
|
|
93
|
+
if (config.plugins && typeof config.plugins === 'object') {
|
|
94
|
+
return Object.keys(config.plugins).filter((key) => key.startsWith('@zhin.js/'));
|
|
95
|
+
}
|
|
96
|
+
return [];
|
|
82
97
|
}
|
|
83
98
|
/** create-zhin / minimal-bot 默认 Host 端口(避免与常见 8086 占用冲突) */
|
|
84
99
|
export const DEFAULT_CREATE_BOT_HTTP_PORT = 8068;
|
|
@@ -90,15 +105,16 @@ export function getCreateBotPnpmConfig(_aiEnabled) {
|
|
|
90
105
|
onlyBuiltDependencies: ['esbuild'],
|
|
91
106
|
};
|
|
92
107
|
}
|
|
93
|
-
/** create-zhin-app
|
|
108
|
+
/** create-zhin-app Plugin Runtime 骨架 production 依赖(不含适配器 / AI / 数据库驱动) */
|
|
94
109
|
export function getCreateBotBaseDependencies() {
|
|
95
110
|
return {
|
|
96
111
|
'zhin.js': ZHIN_STACK_VERSIONS['zhin.js'],
|
|
97
|
-
'@zhin.js/
|
|
98
|
-
'@zhin.js/
|
|
99
|
-
'@zhin.js/
|
|
100
|
-
'@zhin.js/
|
|
101
|
-
'@zhin.js/
|
|
112
|
+
'@zhin.js/plugin-runtime': ZHIN_STACK_VERSIONS['@zhin.js/plugin-runtime'],
|
|
113
|
+
'@zhin.js/runtime': ZHIN_STACK_VERSIONS['@zhin.js/runtime'],
|
|
114
|
+
'@zhin.js/adapter': ZHIN_STACK_VERSIONS['@zhin.js/adapter'],
|
|
115
|
+
'@zhin.js/command': ZHIN_STACK_VERSIONS['@zhin.js/command'],
|
|
116
|
+
'@zhin.js/component': ZHIN_STACK_VERSIONS['@zhin.js/component'],
|
|
117
|
+
'@zhin.js/core': ZHIN_STACK_VERSIONS['@zhin.js/core'],
|
|
102
118
|
'@zhin.js/satori': ZHIN_STACK_VERSIONS['@zhin.js/satori'],
|
|
103
119
|
};
|
|
104
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zhin-stack-deps.js","sourceRoot":"","sources":["../src/zhin-stack-deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,mBAAmB,EAAwB,MAAM,mBAAmB,CAAC;AAE7I
|
|
1
|
+
{"version":3,"file":"zhin-stack-deps.js","sourceRoot":"","sources":["../src/zhin-stack-deps.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/scaffold-wizard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Shared interactive scaffold wizard for create-zhin-app and @zhin.js/cli",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"chalk": "^5.6.2",
|
|
21
21
|
"fs-extra": "^11.3.6",
|
|
22
22
|
"inquirer": "^14.0.2",
|
|
23
|
+
"qrcode": "^1.5.4",
|
|
23
24
|
"smol-toml": "^1.7.0",
|
|
24
25
|
"yaml": "^2.9.0"
|
|
25
26
|
},
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
"@types/fs-extra": "^11.0.4",
|
|
28
29
|
"@types/inquirer": "^9.0.10",
|
|
29
30
|
"@types/node": "^26.1.0",
|
|
31
|
+
"@types/qrcode": "^1.5.5",
|
|
30
32
|
"typescript": "^6.0.3"
|
|
31
33
|
},
|
|
32
34
|
"engines": {
|