@zhin.js/scaffold-wizard 0.1.6 → 0.1.7

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.
Files changed (42) hide show
  1. package/lib/adapter.d.ts.map +1 -1
  2. package/lib/adapter.js +2 -1
  3. package/lib/adapter.js.map +1 -1
  4. package/lib/ai.d.ts +6 -0
  5. package/lib/ai.d.ts.map +1 -1
  6. package/lib/ai.js +64 -34
  7. package/lib/ai.js.map +1 -1
  8. package/lib/apply.js +2 -2
  9. package/lib/apply.js.map +1 -1
  10. package/lib/index.d.ts +6 -1
  11. package/lib/index.d.ts.map +1 -1
  12. package/lib/index.js +3 -1
  13. package/lib/index.js.map +1 -1
  14. package/lib/optional-peers.d.ts.map +1 -1
  15. package/lib/optional-peers.js +6 -5
  16. package/lib/optional-peers.js.map +1 -1
  17. package/lib/project-config-plan.d.ts +53 -0
  18. package/lib/project-config-plan.d.ts.map +1 -0
  19. package/lib/project-config-plan.js +337 -0
  20. package/lib/project-config-plan.js.map +1 -0
  21. package/lib/project-deps.d.ts +26 -3
  22. package/lib/project-deps.d.ts.map +1 -1
  23. package/lib/project-deps.js +211 -26
  24. package/lib/project-deps.js.map +1 -1
  25. package/lib/upgrade-l4.d.ts.map +1 -1
  26. package/lib/upgrade-l4.js +2 -2
  27. package/lib/upgrade-l4.js.map +1 -1
  28. package/lib/zhin-stack-deps.d.ts +66 -0
  29. package/lib/zhin-stack-deps.d.ts.map +1 -0
  30. package/lib/zhin-stack-deps.js +202 -0
  31. package/lib/zhin-stack-deps.js.map +1 -0
  32. package/package.json +7 -5
  33. package/src/adapter.ts +2 -1
  34. package/src/ai.ts +76 -32
  35. package/src/apply.ts +2 -2
  36. package/src/index.ts +37 -0
  37. package/src/optional-peers.ts +6 -6
  38. package/src/project-config-plan.ts +400 -0
  39. package/src/project-deps.ts +228 -27
  40. package/src/stack-versions.generated.json +48 -0
  41. package/src/upgrade-l4.ts +2 -1
  42. package/src/zhin-stack-deps.ts +252 -0
@@ -1,26 +1,193 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import fs from 'fs-extra';
3
3
  import path from 'node:path';
4
- /** 新项目依赖默认接受 npm latest 漂移,避免脚手架维护固定版本表。 */
5
- export const MCP_SDK_VERSION = 'latest';
6
- const AI_STACK_VERSION = 'latest';
7
- const ZOD_VERSION = 'latest';
8
- const VERCEL_AI_VERSION = 'latest';
4
+ /**
5
+ * User project dependency policy: scaffolded dependencies intentionally float to latest.
6
+ */
7
+ export const AI_STACK_VERSIONS = {
8
+ '@zhin.js/agent': 'latest',
9
+ zod: 'latest',
10
+ ai: 'latest',
11
+ '@modelcontextprotocol/sdk': 'latest',
12
+ '@ai-sdk/openai': 'latest',
13
+ '@ai-sdk/anthropic': 'latest',
14
+ '@ai-sdk/google': 'latest',
15
+ '@ai-sdk/deepseek': 'latest',
16
+ '@ai-sdk/openai-compatible': 'latest',
17
+ };
18
+ /** @deprecated 使用 AI_STACK_VERSIONS['@modelcontextprotocol/sdk'] */
19
+ export const MCP_SDK_VERSION = AI_STACK_VERSIONS['@modelcontextprotocol/sdk'];
20
+ const WIZARD_ALIAS_TO_SDK = {
21
+ openai: 'openai',
22
+ anthropic: 'anthropic',
23
+ deepseek: 'deepseek',
24
+ google: 'google',
25
+ gemini: 'google',
26
+ ollama: 'ollama',
27
+ moonshot: 'openai-compatible',
28
+ zhipu: 'openai-compatible',
29
+ };
30
+ const SDK_TO_NPM_PACKAGE = {
31
+ openai: '@ai-sdk/openai',
32
+ anthropic: '@ai-sdk/anthropic',
33
+ google: '@ai-sdk/google',
34
+ deepseek: '@ai-sdk/deepseek',
35
+ ollama: '@ai-sdk/openai-compatible',
36
+ 'openai-compatible': '@ai-sdk/openai-compatible',
37
+ };
9
38
  const PROVIDER_SDK_PACKAGES = {
10
- openai: { pkg: '@ai-sdk/openai', version: 'latest' },
11
- anthropic: { pkg: '@ai-sdk/anthropic', version: 'latest' },
12
- google: { pkg: '@ai-sdk/google', version: 'latest' },
13
- gemini: { pkg: '@ai-sdk/google', version: 'latest' },
14
- deepseek: { pkg: '@ai-sdk/deepseek', version: 'latest' },
15
- ollama: { pkg: '@ai-sdk/openai-compatible', version: 'latest' },
16
- moonshot: { pkg: '@ai-sdk/openai-compatible', version: 'latest' },
17
- zhipu: { pkg: '@ai-sdk/openai-compatible', version: 'latest' },
39
+ openai: { pkg: '@ai-sdk/openai', version: AI_STACK_VERSIONS['@ai-sdk/openai'] },
40
+ anthropic: { pkg: '@ai-sdk/anthropic', version: AI_STACK_VERSIONS['@ai-sdk/anthropic'] },
41
+ google: { pkg: '@ai-sdk/google', version: AI_STACK_VERSIONS['@ai-sdk/google'] },
42
+ gemini: { pkg: '@ai-sdk/google', version: AI_STACK_VERSIONS['@ai-sdk/google'] },
43
+ deepseek: { pkg: '@ai-sdk/deepseek', version: AI_STACK_VERSIONS['@ai-sdk/deepseek'] },
44
+ ollama: { pkg: '@ai-sdk/openai-compatible', version: AI_STACK_VERSIONS['@ai-sdk/openai-compatible'] },
45
+ moonshot: { pkg: '@ai-sdk/openai-compatible', version: AI_STACK_VERSIONS['@ai-sdk/openai-compatible'] },
46
+ zhipu: { pkg: '@ai-sdk/openai-compatible', version: AI_STACK_VERSIONS['@ai-sdk/openai-compatible'] },
47
+ };
48
+ /** @ai-sdk/* 主版本 ≥ threshold 时需 ai@7 */
49
+ const AI7_REQUIRED_SDK_MAJOR = {
50
+ '@ai-sdk/openai-compatible': 3,
51
+ '@ai-sdk/openai': 4,
52
+ '@ai-sdk/anthropic': 4,
53
+ '@ai-sdk/google': 4,
54
+ '@ai-sdk/deepseek': 3,
18
55
  };
19
56
  function providerSdkPackage(provider) {
20
57
  if (!provider)
21
58
  return undefined;
22
59
  return PROVIDER_SDK_PACKAGES[provider];
23
60
  }
61
+ function inferSdkId(providerAlias, entry) {
62
+ const explicit = entry?.sdk?.trim();
63
+ if (explicit)
64
+ return explicit;
65
+ if (WIZARD_ALIAS_TO_SDK[providerAlias])
66
+ return WIZARD_ALIAS_TO_SDK[providerAlias];
67
+ if (SDK_TO_NPM_PACKAGE[providerAlias])
68
+ return providerAlias;
69
+ return undefined;
70
+ }
71
+ function packagesForSdkIds(sdkIds) {
72
+ const deps = {};
73
+ for (const sdkId of sdkIds) {
74
+ const npmName = SDK_TO_NPM_PACKAGE[sdkId];
75
+ if (!npmName)
76
+ continue;
77
+ deps[npmName] = AI_STACK_VERSIONS[npmName];
78
+ }
79
+ return deps;
80
+ }
81
+ function collectSdkPackagesFromSetup(ai) {
82
+ const sdkIds = new Set();
83
+ const agentProvider = ai.agentProvider ?? ai.defaultProvider;
84
+ if (agentProvider) {
85
+ const id = inferSdkId(agentProvider, ai.providers?.[agentProvider]);
86
+ if (id)
87
+ sdkIds.add(id);
88
+ }
89
+ for (const [alias, entry] of Object.entries(ai.providers ?? {})) {
90
+ const id = inferSdkId(alias, entry);
91
+ if (id)
92
+ sdkIds.add(id);
93
+ }
94
+ return packagesForSdkIds(sdkIds);
95
+ }
96
+ function collectSdkPackagesFromConfig(config) {
97
+ const ai = config.ai;
98
+ if (!ai || typeof ai !== 'object' || Array.isArray(ai))
99
+ return {};
100
+ const rec = ai;
101
+ const providers = rec.providers;
102
+ const sdkIds = new Set();
103
+ if (providers) {
104
+ for (const [alias, entry] of Object.entries(providers)) {
105
+ const id = inferSdkId(alias, entry);
106
+ if (id)
107
+ sdkIds.add(id);
108
+ }
109
+ }
110
+ const agents = rec.agents;
111
+ if (agents && providers) {
112
+ for (const agent of Object.values(agents)) {
113
+ if (!agent?.provider)
114
+ continue;
115
+ const id = inferSdkId(agent.provider, providers[agent.provider]);
116
+ if (id)
117
+ sdkIds.add(id);
118
+ }
119
+ }
120
+ if (sdkIds.size === 0) {
121
+ const alias = resolveDefaultProviderFromConfig(config);
122
+ if (alias) {
123
+ const id = inferSdkId(alias, providers?.[alias]);
124
+ if (id)
125
+ sdkIds.add(id);
126
+ }
127
+ }
128
+ return packagesForSdkIds(sdkIds);
129
+ }
130
+ function parseMajor(versionSpec) {
131
+ if (!versionSpec?.trim())
132
+ return undefined;
133
+ const match = versionSpec.trim().replace(/^[\^~>=<]+/, '').match(/^(\d+)/);
134
+ return match ? Number(match[1]) : undefined;
135
+ }
136
+ function getDeclaredPackageVersion(pkg, name) {
137
+ return pkg.dependencies?.[name] ?? pkg.devDependencies?.[name];
138
+ }
139
+ function readInstalledMajor(cwd, packageName) {
140
+ const pkgJson = path.join(cwd, 'package.json');
141
+ if (!fs.existsSync(pkgJson))
142
+ return undefined;
143
+ try {
144
+ const req = createRequire(pkgJson);
145
+ const installed = req(`${packageName}/package.json`);
146
+ return parseMajor(installed.version);
147
+ }
148
+ catch {
149
+ return undefined;
150
+ }
151
+ }
152
+ function resolvePackageMajor(cwd, pkg, packageName) {
153
+ return readInstalledMajor(cwd, packageName) ?? parseMajor(getDeclaredPackageVersion(pkg, packageName));
154
+ }
155
+ export function findOutdatedAiStackInPackageJson(pkg, required) {
156
+ const outdated = [];
157
+ for (const [name, minSpec] of Object.entries(required)) {
158
+ const declared = getDeclaredPackageVersion(pkg, name);
159
+ if (!declared)
160
+ continue;
161
+ const declaredMajor = parseMajor(declared);
162
+ const minMajor = parseMajor(minSpec);
163
+ if (declaredMajor != null && minMajor != null && declaredMajor < minMajor) {
164
+ outdated.push(name);
165
+ }
166
+ }
167
+ return outdated;
168
+ }
169
+ export function findInstalledAiStackIncompatibilities(cwd, pkg) {
170
+ const aiMajor = resolvePackageMajor(cwd, pkg, 'ai');
171
+ if (aiMajor == null || aiMajor >= 7)
172
+ return [];
173
+ const issues = [];
174
+ if (aiMajor < 7) {
175
+ issues.push({
176
+ package: 'ai',
177
+ reason: 'ai@6 与 @ai-sdk/openai-compatible@3(v4 model spec)不兼容,请升级 ai 至 ^7.0.0',
178
+ });
179
+ }
180
+ for (const [name, threshold] of Object.entries(AI7_REQUIRED_SDK_MAJOR)) {
181
+ const major = resolvePackageMajor(cwd, pkg, name);
182
+ if (major == null || major < threshold)
183
+ continue;
184
+ issues.push({
185
+ package: name,
186
+ reason: `${name}@${major} 需要 ai@7(当前 ai@${aiMajor})`,
187
+ });
188
+ }
189
+ return issues;
190
+ }
24
191
  /** 启用 AI 时将写入 package.json 的依赖名(用于向导提示与 CLI 输出) */
25
192
  export function listAIDependencyNames(provider, options) {
26
193
  const names = ['@zhin.js/agent', 'zod', 'ai'];
@@ -93,10 +260,14 @@ export function getRequiredAIDependenciesForConfig(config) {
93
260
  const ai = config.ai;
94
261
  const setup = {
95
262
  enabled: true,
96
- defaultProvider: resolveDefaultProviderFromConfig(config),
263
+ agentProvider: resolveDefaultProviderFromConfig(config),
264
+ providers: ai.providers,
97
265
  memoryMcp: aiConfigNeedsMcp(ai),
98
266
  };
99
- const deps = getAIDependencies(setup);
267
+ const deps = {
268
+ ...getAIDependencies(setup),
269
+ ...collectSdkPackagesFromConfig(config),
270
+ };
100
271
  if (!aiConfigNeedsMcp(ai)) {
101
272
  delete deps['@modelcontextprotocol/sdk'];
102
273
  }
@@ -125,6 +296,19 @@ export function findUnresolvedPackageInstalls(cwd, packageNames) {
125
296
  }
126
297
  return missing;
127
298
  }
299
+ export function packagesNeedingAiStackFix(diagnosis) {
300
+ const names = new Set([
301
+ ...diagnosis.missingFromPackageJson,
302
+ ...diagnosis.outdatedInPackageJson,
303
+ ]);
304
+ for (const issue of diagnosis.incompatibleInstalled) {
305
+ names.add(issue.package);
306
+ }
307
+ if (diagnosis.incompatibleInstalled.some((issue) => issue.package !== 'ai')) {
308
+ names.add('ai');
309
+ }
310
+ return [...names];
311
+ }
128
312
  export function diagnoseAIDependencies(cwd, config, pkg) {
129
313
  if (!isAiEnabledInConfig(config))
130
314
  return null;
@@ -132,6 +316,8 @@ export function diagnoseAIDependencies(cwd, config, pkg) {
132
316
  const packageJsonPath = path.join(cwd, 'package.json');
133
317
  const packageJson = pkg ?? (fs.existsSync(packageJsonPath) ? fs.readJsonSync(packageJsonPath) : {});
134
318
  const missingFromPackageJson = findMissingPackageDependencies(packageJson, required);
319
+ const outdatedInPackageJson = findOutdatedAiStackInPackageJson(packageJson, required);
320
+ const incompatibleInstalled = findInstalledAiStackIncompatibilities(cwd, packageJson);
135
321
  const declared = Object.keys(required).filter((name) => !missingFromPackageJson.includes(name));
136
322
  const notInstalled = findUnresolvedPackageInstalls(cwd, declared);
137
323
  return {
@@ -139,13 +325,15 @@ export function diagnoseAIDependencies(cwd, config, pkg) {
139
325
  provider: resolveDefaultProviderFromConfig(config),
140
326
  required,
141
327
  missingFromPackageJson,
328
+ outdatedInPackageJson,
329
+ incompatibleInstalled,
142
330
  notInstalled,
143
331
  };
144
332
  }
145
- export function formatAIDependencyFixCommand(missing, required) {
146
- if (missing.length === 0)
333
+ export function formatAIDependencyFixCommand(packages, required) {
334
+ if (packages.length === 0)
147
335
  return 'pnpm install';
148
- const specs = missing.map((name) => `${name}@${required[name] ?? 'latest'}`);
336
+ const specs = packages.map((name) => `${name}@${required[name] ?? 'latest'}`);
149
337
  return `pnpm add ${specs.join(' ')}`;
150
338
  }
151
339
  /**
@@ -155,15 +343,12 @@ export function getAIDependencies(ai) {
155
343
  if (!ai?.enabled)
156
344
  return {};
157
345
  const deps = {
158
- '@zhin.js/agent': AI_STACK_VERSION,
159
- zod: ZOD_VERSION,
160
- ai: VERCEL_AI_VERSION,
161
- '@modelcontextprotocol/sdk': MCP_SDK_VERSION,
346
+ '@zhin.js/agent': AI_STACK_VERSIONS['@zhin.js/agent'],
347
+ zod: AI_STACK_VERSIONS.zod,
348
+ ai: AI_STACK_VERSIONS.ai,
349
+ '@modelcontextprotocol/sdk': AI_STACK_VERSIONS['@modelcontextprotocol/sdk'],
350
+ ...collectSdkPackagesFromSetup(ai),
162
351
  };
163
- const sdk = providerSdkPackage(ai.defaultProvider);
164
- if (sdk) {
165
- deps[sdk.pkg] = sdk.version;
166
- }
167
352
  return deps;
168
353
  }
169
354
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"project-deps.js","sourceRoot":"","sources":["../src/project-deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-deps.js","sourceRoot":"","sources":["../src/project-deps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-l4.d.ts","sourceRoot":"","sources":["../src/upgrade-l4.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,sBAAsB,EAMvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAA6D,MAAM,qBAAqB,CAAC;AAEvH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IAC9C,aAAa,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACxD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAkBD,uCAAuC;AACvC,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,CAAC,EAAE,eAAe,GACpB,oBAAoB,CAqDtB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGlG"}
1
+ {"version":3,"file":"upgrade-l4.d.ts","sourceRoot":"","sources":["../src/upgrade-l4.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,sBAAsB,EAOvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAA6D,MAAM,qBAAqB,CAAC;AAEvH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IAC9C,aAAa,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACxD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAkBD,uCAAuC;AACvC,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,CAAC,EAAE,eAAe,GACpB,oBAAoB,CAqDtB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGlG"}
package/lib/upgrade-l4.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'node:path';
3
- import { diagnoseAIDependencies, formatAIDependencyFixCommand, getRequiredAIDependenciesForConfig, isAiEnabledInConfig, findMissingPackageDependencies, findUnresolvedPackageInstalls, } from './project-deps.js';
3
+ import { diagnoseAIDependencies, formatAIDependencyFixCommand, getRequiredAIDependenciesForConfig, isAiEnabledInConfig, findMissingPackageDependencies, findUnresolvedPackageInstalls, packagesNeedingAiStackFix, } from './project-deps.js';
4
4
  import { diagnoseOptionalPeers, formatOptionalPeerFixCommand, getOptionalPeerDependencies } from './optional-peers.js';
5
5
  const L4_CONFIG_SNIPPETS = [
6
6
  '# --- L4 可选多模态(取消注释并安装 optional peer)---',
@@ -27,7 +27,7 @@ export function diagnoseUpgradeToL4(cwd, config, pkg) {
27
27
  const ai = aiEnabled ? diagnoseAIDependencies(cwd, config, packageJson) : null;
28
28
  const optionalPeers = diagnoseOptionalPeers(cwd, config, packageJson);
29
29
  const missingAiDeps = ai
30
- ? [...new Set([...ai.missingFromPackageJson, ...ai.notInstalled])]
30
+ ? [...new Set([...packagesNeedingAiStackFix(ai), ...ai.notInstalled])]
31
31
  : [...Object.keys(getRequiredAIDependenciesForConfig({ ai: { enabled: true } }))];
32
32
  if (!aiEnabled) {
33
33
  const required = getRequiredAIDependenciesForConfig({ ai: { enabled: true } });
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-l4.js","sourceRoot":"","sources":["../src/upgrade-l4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade-l4.js","sourceRoot":"","sources":["../src/upgrade-l4.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { PackageJsonLike } from './project-deps.js';
2
+ /**
3
+ * User project dependency policy: scaffolded dependencies intentionally float to latest.
4
+ */
5
+ export declare const ZHIN_STACK_VERSIONS: {
6
+ readonly 'zhin.js': "latest";
7
+ readonly '@zhin.js/cli': "latest";
8
+ readonly '@zhin.js/agent': "latest";
9
+ readonly '@zhin.js/database': "latest";
10
+ readonly '@zhin.js/host-router': "latest";
11
+ readonly '@zhin.js/host-api': "latest";
12
+ readonly '@zhin.js/client': "latest";
13
+ readonly '@zhin.js/contract': "latest";
14
+ readonly '@zhin.js/satori': "latest";
15
+ readonly '@zhin.js/speech': "latest";
16
+ readonly '@zhin.js/html-renderer': "latest";
17
+ readonly '@zhin.js/mcp': "latest";
18
+ readonly '@zhin.js/adapter-sandbox': "latest";
19
+ readonly '@zhin.js/adapter-dingtalk': "latest";
20
+ readonly '@zhin.js/adapter-discord': "latest";
21
+ readonly '@zhin.js/adapter-email': "latest";
22
+ readonly '@zhin.js/adapter-github': "latest";
23
+ readonly '@zhin.js/adapter-icqq': "latest";
24
+ readonly '@zhin.js/adapter-kook': "latest";
25
+ readonly '@zhin.js/adapter-lark': "latest";
26
+ readonly '@zhin.js/adapter-line': "latest";
27
+ readonly '@zhin.js/adapter-milky': "latest";
28
+ readonly '@zhin.js/adapter-napcat': "latest";
29
+ readonly '@zhin.js/adapter-onebot11': "latest";
30
+ readonly '@zhin.js/adapter-onebot12': "latest";
31
+ readonly '@zhin.js/adapter-qq': "latest";
32
+ readonly '@zhin.js/adapter-satori': "latest";
33
+ readonly '@zhin.js/adapter-slack': "latest";
34
+ readonly '@zhin.js/adapter-telegram': "latest";
35
+ readonly '@zhin.js/adapter-wechat-mp': "latest";
36
+ readonly '@zhin.js/adapter-wecom': "latest";
37
+ readonly '@zhin.js/adapter-weixin-ilink': "latest";
38
+ };
39
+ export type ZhinStackPackage = keyof typeof ZHIN_STACK_VERSIONS;
40
+ /** create-zhin / minimal-bot 默认 Host 端口(避免与常见 8086 占用冲突) */
41
+ export declare const DEFAULT_CREATE_BOT_HTTP_PORT = 8068;
42
+ /** create-zhin 生成项目的 .npmrc(避免全局 strict-peer-dependencies 阻断 AI 栈安装) */
43
+ export declare const CREATE_BOT_NPMRC = "strict-peer-dependencies=false\n";
44
+ /** create-zhin 生成项目的 pnpm 配置 */
45
+ export declare function getCreateBotPnpmConfig(_aiEnabled?: boolean): Record<string, unknown>;
46
+ /** create-zhin-app 默认 bot 骨架依赖(不含适配器 / AI / 数据库驱动) */
47
+ export declare function getCreateBotBaseDependencies(): Record<string, string>;
48
+ /** 根据 zhin.config 推导应声明的 @zhin.js/* / zhin.js 依赖 */
49
+ export declare function getRequiredZhinDependenciesForConfig(config: Record<string, unknown>): Record<string, string>;
50
+ export interface ZhinStackIncompatibility {
51
+ package: string;
52
+ reason: string;
53
+ }
54
+ export declare function findOutdatedZhinStackInPackageJson(pkg: PackageJsonLike, required: Record<string, string>): string[];
55
+ export declare function findInstalledZhinStackIncompatibilities(cwd: string, pkg: PackageJsonLike, config: Record<string, unknown>): ZhinStackIncompatibility[];
56
+ export interface ZhinStackDiagnosis {
57
+ required: Record<string, string>;
58
+ missingFromPackageJson: string[];
59
+ outdatedInPackageJson: string[];
60
+ incompatibleInstalled: ZhinStackIncompatibility[];
61
+ notInstalled: string[];
62
+ }
63
+ export declare function packagesNeedingZhinStackFix(diagnosis: ZhinStackDiagnosis): string[];
64
+ export declare function diagnoseZhinStackDependencies(cwd: string, config: Record<string, unknown>, pkg?: PackageJsonLike): ZhinStackDiagnosis;
65
+ export declare function formatZhinStackFixCommand(packages: string[], required: Record<string, string>): string;
66
+ //# sourceMappingURL=zhin-stack-deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zhin-stack-deps.d.ts","sourceRoot":"","sources":["../src/zhin-stack-deps.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOzD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,mBAAmB,CAAC;AA6ChE,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,sDAAsD;AACtD,wBAAgB,4BAA4B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE;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"}
@@ -0,0 +1,202 @@
1
+ import { createRequire } from 'node:module';
2
+ import fs from 'fs-extra';
3
+ import path from 'node:path';
4
+ import { DATABASE_PACKAGES } from './types.js';
5
+ import { findMissingPackageDependencies, findUnresolvedPackageInstalls, isAiEnabledInConfig, } from './project-deps.js';
6
+ /**
7
+ * User project dependency policy: scaffolded dependencies intentionally float to latest.
8
+ */
9
+ export const ZHIN_STACK_VERSIONS = {
10
+ 'zhin.js': 'latest',
11
+ '@zhin.js/cli': 'latest',
12
+ '@zhin.js/agent': 'latest',
13
+ '@zhin.js/database': 'latest',
14
+ '@zhin.js/host-router': 'latest',
15
+ '@zhin.js/host-api': 'latest',
16
+ '@zhin.js/client': 'latest',
17
+ '@zhin.js/contract': 'latest',
18
+ '@zhin.js/satori': 'latest',
19
+ '@zhin.js/speech': 'latest',
20
+ '@zhin.js/html-renderer': 'latest',
21
+ '@zhin.js/mcp': 'latest',
22
+ '@zhin.js/adapter-sandbox': 'latest',
23
+ '@zhin.js/adapter-dingtalk': 'latest',
24
+ '@zhin.js/adapter-discord': 'latest',
25
+ '@zhin.js/adapter-email': 'latest',
26
+ '@zhin.js/adapter-github': 'latest',
27
+ '@zhin.js/adapter-icqq': 'latest',
28
+ '@zhin.js/adapter-kook': 'latest',
29
+ '@zhin.js/adapter-lark': 'latest',
30
+ '@zhin.js/adapter-line': 'latest',
31
+ '@zhin.js/adapter-milky': 'latest',
32
+ '@zhin.js/adapter-napcat': 'latest',
33
+ '@zhin.js/adapter-onebot11': 'latest',
34
+ '@zhin.js/adapter-onebot12': 'latest',
35
+ '@zhin.js/adapter-qq': 'latest',
36
+ '@zhin.js/adapter-satori': 'latest',
37
+ '@zhin.js/adapter-slack': 'latest',
38
+ '@zhin.js/adapter-telegram': 'latest',
39
+ '@zhin.js/adapter-wechat-mp': 'latest',
40
+ '@zhin.js/adapter-wecom': 'latest',
41
+ '@zhin.js/adapter-weixin-ilink': 'latest',
42
+ };
43
+ const HOST_CONSOLE_PLUGINS = new Set([
44
+ '@zhin.js/host-router',
45
+ '@zhin.js/host-api',
46
+ ]);
47
+ function parseMajor(versionSpec) {
48
+ if (!versionSpec?.trim())
49
+ return undefined;
50
+ if (versionSpec === 'workspace:*')
51
+ return undefined;
52
+ const match = versionSpec.trim().replace(/^[\^~>=<]+/, '').match(/^(\d+)/);
53
+ return match ? Number(match[1]) : undefined;
54
+ }
55
+ function getDeclaredPackageVersion(pkg, name) {
56
+ return pkg.dependencies?.[name] ?? pkg.devDependencies?.[name];
57
+ }
58
+ function readInstalledMajor(cwd, packageName) {
59
+ const pkgJson = path.join(cwd, 'package.json');
60
+ if (!fs.existsSync(pkgJson))
61
+ return undefined;
62
+ try {
63
+ const req = createRequire(pkgJson);
64
+ const installed = req(`${packageName}/package.json`);
65
+ return parseMajor(installed.version);
66
+ }
67
+ catch {
68
+ return undefined;
69
+ }
70
+ }
71
+ function resolvePackageMajor(cwd, pkg, packageName) {
72
+ return readInstalledMajor(cwd, packageName) ?? parseMajor(getDeclaredPackageVersion(pkg, packageName));
73
+ }
74
+ function resolveStackVersion(packageName) {
75
+ return ZHIN_STACK_VERSIONS[packageName] ?? 'latest';
76
+ }
77
+ function collectZhinPluginsFromConfig(config) {
78
+ const plugins = Array.isArray(config.plugins)
79
+ ? config.plugins.filter((p) => typeof p === 'string')
80
+ : [];
81
+ return [...new Set(plugins.filter((p) => p.startsWith('@zhin.js/')))];
82
+ }
83
+ /** create-zhin / minimal-bot 默认 Host 端口(避免与常见 8086 占用冲突) */
84
+ export const DEFAULT_CREATE_BOT_HTTP_PORT = 8068;
85
+ /** create-zhin 生成项目的 .npmrc(避免全局 strict-peer-dependencies 阻断 AI 栈安装) */
86
+ export const CREATE_BOT_NPMRC = 'strict-peer-dependencies=false\n';
87
+ /** create-zhin 生成项目的 pnpm 配置 */
88
+ export function getCreateBotPnpmConfig(_aiEnabled) {
89
+ return {
90
+ onlyBuiltDependencies: ['esbuild'],
91
+ };
92
+ }
93
+ /** create-zhin-app 默认 bot 骨架依赖(不含适配器 / AI / 数据库驱动) */
94
+ export function getCreateBotBaseDependencies() {
95
+ return {
96
+ 'zhin.js': ZHIN_STACK_VERSIONS['zhin.js'],
97
+ '@zhin.js/cli': ZHIN_STACK_VERSIONS['@zhin.js/cli'],
98
+ '@zhin.js/host-router': ZHIN_STACK_VERSIONS['@zhin.js/host-router'],
99
+ '@zhin.js/client': ZHIN_STACK_VERSIONS['@zhin.js/client'],
100
+ '@zhin.js/host-api': ZHIN_STACK_VERSIONS['@zhin.js/host-api'],
101
+ '@zhin.js/contract': ZHIN_STACK_VERSIONS['@zhin.js/contract'],
102
+ '@zhin.js/satori': ZHIN_STACK_VERSIONS['@zhin.js/satori'],
103
+ };
104
+ }
105
+ /** 根据 zhin.config 推导应声明的 @zhin.js/* / zhin.js 依赖 */
106
+ export function getRequiredZhinDependenciesForConfig(config) {
107
+ const deps = {
108
+ 'zhin.js': ZHIN_STACK_VERSIONS['zhin.js'],
109
+ };
110
+ for (const plugin of collectZhinPluginsFromConfig(config)) {
111
+ deps[plugin] = resolveStackVersion(plugin);
112
+ }
113
+ const database = config.database;
114
+ if (database && typeof database === 'object' && !Array.isArray(database)) {
115
+ deps['@zhin.js/database'] = ZHIN_STACK_VERSIONS['@zhin.js/database'];
116
+ const dialect = String(database.dialect ?? '');
117
+ const driver = DATABASE_PACKAGES[dialect];
118
+ if (driver) {
119
+ deps[driver] = 'latest';
120
+ }
121
+ }
122
+ const usesHost = collectZhinPluginsFromConfig(config).some((p) => HOST_CONSOLE_PLUGINS.has(p));
123
+ if (usesHost) {
124
+ for (const pkg of ['@zhin.js/host-router', '@zhin.js/host-api']) {
125
+ deps[pkg] = ZHIN_STACK_VERSIONS[pkg];
126
+ }
127
+ }
128
+ return deps;
129
+ }
130
+ export function findOutdatedZhinStackInPackageJson(pkg, required) {
131
+ const outdated = [];
132
+ for (const [name, minSpec] of Object.entries(required)) {
133
+ const declared = getDeclaredPackageVersion(pkg, name);
134
+ if (!declared || declared === 'workspace:*')
135
+ continue;
136
+ const declaredMajor = parseMajor(declared);
137
+ const minMajor = parseMajor(minSpec);
138
+ if (declaredMajor != null && minMajor != null && declaredMajor < minMajor) {
139
+ outdated.push(name);
140
+ }
141
+ }
142
+ return outdated;
143
+ }
144
+ export function findInstalledZhinStackIncompatibilities(cwd, pkg, config) {
145
+ const issues = [];
146
+ const zhinMajor = resolvePackageMajor(cwd, pkg, 'zhin.js');
147
+ const agentDeclared = getDeclaredPackageVersion(pkg, '@zhin.js/agent');
148
+ const aiEnabled = isAiEnabledInConfig(config);
149
+ if (zhinMajor != null && zhinMajor < 4 && (aiEnabled || agentDeclared)) {
150
+ issues.push({
151
+ package: 'zhin.js',
152
+ reason: 'zhin.js 4.x 才支持 @zhin.js/agent 与 AI 安装分层(ADR 0019),请升级 zhin.js',
153
+ });
154
+ }
155
+ if (aiEnabled && !agentDeclared) {
156
+ // missing 由 missingFromPackageJson 处理;此处只报版本组合问题
157
+ }
158
+ const agentMajor = resolvePackageMajor(cwd, pkg, '@zhin.js/agent');
159
+ if (agentMajor != null && agentMajor < 1 && aiEnabled) {
160
+ issues.push({
161
+ package: '@zhin.js/agent',
162
+ reason: '@zhin.js/agent 1.x 与 zhin.js 4.x / AI SDK 7 配套,请升级 @zhin.js/agent',
163
+ });
164
+ }
165
+ return issues;
166
+ }
167
+ export function packagesNeedingZhinStackFix(diagnosis) {
168
+ const names = new Set([
169
+ ...diagnosis.missingFromPackageJson,
170
+ ...diagnosis.outdatedInPackageJson,
171
+ ]);
172
+ for (const issue of diagnosis.incompatibleInstalled) {
173
+ names.add(issue.package);
174
+ }
175
+ return [...names];
176
+ }
177
+ export function diagnoseZhinStackDependencies(cwd, config, pkg) {
178
+ const required = getRequiredZhinDependenciesForConfig(config);
179
+ const packageJsonPath = path.join(cwd, 'package.json');
180
+ const packageJson = pkg ?? (fs.existsSync(packageJsonPath)
181
+ ? fs.readJsonSync(packageJsonPath)
182
+ : {});
183
+ const missingFromPackageJson = findMissingPackageDependencies(packageJson, required);
184
+ const outdatedInPackageJson = findOutdatedZhinStackInPackageJson(packageJson, required);
185
+ const incompatibleInstalled = findInstalledZhinStackIncompatibilities(cwd, packageJson, config);
186
+ const declared = Object.keys(required).filter((name) => !missingFromPackageJson.includes(name));
187
+ const notInstalled = findUnresolvedPackageInstalls(cwd, declared);
188
+ return {
189
+ required,
190
+ missingFromPackageJson,
191
+ outdatedInPackageJson,
192
+ incompatibleInstalled,
193
+ notInstalled,
194
+ };
195
+ }
196
+ export function formatZhinStackFixCommand(packages, required) {
197
+ if (packages.length === 0)
198
+ return 'pnpm install';
199
+ const specs = packages.map((name) => `${name}@${required[name] ?? 'latest'}`);
200
+ return `pnpm add ${specs.join(' ')}`;
201
+ }
202
+ //# sourceMappingURL=zhin-stack-deps.js.map