@heybox/hb-sdk 0.8.0-alpha → 0.8.0-alpha.10
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/CHANGELOG.md +92 -396
- package/README.md +101 -24
- package/THIRD_PARTY_NOTICES.md +1755 -0
- package/dist/cli-chunks/{build-DJWFSM1B.cjs → build-aDJbiFqF.cjs} +8 -5
- package/dist/cli-chunks/{context-DV2UK1Nz.cjs → context-Dp36pZ9a.cjs} +39 -81
- package/dist/cli-chunks/{create-2HfoB48V.cjs → create-P3g0ricz.cjs} +2 -2
- package/dist/cli-chunks/{dev-Dgt2zS9k.cjs → dev-CisJkXuQ.cjs} +396 -576
- package/dist/cli-chunks/doctor-B-LF5-uj.cjs +65 -0
- package/dist/cli-chunks/{index-D62ANeBv.cjs → index-BDaeBI_B.cjs} +50 -30
- package/dist/cli-chunks/{index-BjoSXl8C.cjs → index-CZGkk7fQ.cjs} +2 -2
- package/dist/cli-chunks/{index.esm-CigcxJ2B.cjs → index.esm-NNLG29Tt.cjs} +8 -7
- package/dist/cli-chunks/{login-Cumknwdx.cjs → login-DTY5GolC.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-CcE-HMmd.cjs → project-vite-DlCjHlu_.cjs} +1 -1
- package/dist/cli-chunks/{remote-DDdP3xcE.cjs → remote-BBMr7j8W.cjs} +57 -25
- package/dist/cli-chunks/{runtime-gate-DFjw66kF.cjs → runtime-gate-BppCl1r3.cjs} +11 -3
- package/dist/cli-chunks/{runtime-permission-env-CjsCe5bp.cjs → runtime-permission-env-CqsTHeas.cjs} +351 -0
- package/dist/cli-chunks/{session-BDi_AZSv.cjs → session-CnGeZCRZ.cjs} +1 -1
- package/dist/cli-chunks/skill-B0yAnPOJ.cjs +83 -0
- package/dist/cli-chunks/version-DN5jrixS.cjs +8 -0
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-BhZGUyYw.js +97 -0
- package/dist/devtools/browser-dev-host/assets/heybox-logo-CogNENsk.svg +6 -0
- package/dist/devtools/browser-dev-host/assets/index-DJFB5ySU.css +1 -0
- package/dist/devtools/browser-dev-host/assets/index-Dh9H1JOm.js +567 -0
- package/dist/devtools/browser-dev-host/assets/workbench-state-wHgWRb7I.js +5 -0
- package/dist/devtools/browser-dev-host/index.html +6 -435
- package/dist/index.cjs.js +939 -29
- package/dist/index.esm.js +939 -30
- package/dist/protocol.cjs.js +381 -37
- package/dist/protocol.esm.js +355 -38
- package/dist/templates/{vue3-vite-ts → vanilla-vite-js}/.gitignore.ejs +0 -1
- package/dist/templates/vanilla-vite-js/README.md.ejs +14 -0
- package/dist/templates/vanilla-vite-js/index.html.ejs +20 -0
- package/dist/templates/vanilla-vite-js/package.json.ejs +22 -0
- package/dist/templates/vanilla-vite-js/src/assets/heybox-logo.svg +8 -0
- package/dist/templates/vanilla-vite-js/src/main.js +39 -0
- package/dist/templates/vanilla-vite-js/src/styles.css +155 -0
- package/dist/templates/{vue3-vite-ts/vite.config.ts → vanilla-vite-js/vite.config.js} +1 -2
- package/dist/vite.cjs.js +228 -9
- package/dist/vite.esm.js +228 -9
- package/package.json +36 -13
- package/skill/SKILL.md +22 -20
- package/skill/references/api-protocol.md +100 -6
- package/skill/references/api-root.md +166 -23
- package/skill/references/cli.md +41 -24
- package/skill/references/examples.md +30 -1
- package/skill/references/llms-index.md +1 -1
- package/skill/references/recipes.md +139 -36
- package/skill/references/safety-boundaries.md +14 -5
- package/skill/skill.json +10 -5
- package/types/core/client.d.ts +17 -1
- package/types/core/sdk.d.ts +3 -0
- package/types/core/singleton.d.ts +3 -0
- package/types/index.d.ts +4 -2
- package/types/miniapp-manifest/index.d.ts +1 -0
- package/types/miniapp-manifest/node.d.ts +3 -0
- package/types/miniapp-manifest/permissions.d.ts +37 -0
- package/types/miniapp-manifest/schema.d.ts +5 -0
- package/types/modules/files/index.d.ts +5 -0
- package/types/modules/files/registry.d.ts +35 -0
- package/types/modules/files/types.d.ts +159 -0
- package/types/modules/network/index.d.ts +50 -3
- package/types/modules/share/index.d.ts +1 -1
- package/types/modules/share/show-share-menu.d.ts +1 -1
- package/types/modules/share/types.d.ts +2 -4
- package/types/protocol/capabilities.d.ts +2 -2
- package/types/protocol/constants.d.ts +1 -1
- package/types/protocol/guards.d.ts +1 -1
- package/types/protocol/types.d.ts +1 -1
- package/types/protocol.d.ts +4 -3
- package/types/skill-metadata.d.ts +0 -4
- package/dist/cli-chunks/doctor-C95gIao_.cjs +0 -204
- package/dist/devtools/browser-dev-host/main.js +0 -12263
- package/dist/templates/vue3-vite-ts/README.md.ejs +0 -47
- package/dist/templates/vue3-vite-ts/index.html.ejs +0 -12
- package/dist/templates/vue3-vite-ts/package.json.ejs +0 -33
- package/dist/templates/vue3-vite-ts/src/App.vue +0 -78
- package/dist/templates/vue3-vite-ts/src/__tests__/App.spec.ts +0 -148
- package/dist/templates/vue3-vite-ts/src/auth-handoff.ts +0 -46
- package/dist/templates/vue3-vite-ts/src/main.ts +0 -5
- package/dist/templates/vue3-vite-ts/src/styles.css +0 -60
- package/dist/templates/vue3-vite-ts/src/vite-env.d.ts +0 -1
- package/dist/templates/vue3-vite-ts/tsconfig.app.json +0 -17
- package/dist/templates/vue3-vite-ts/tsconfig.json +0 -11
- package/dist/templates/vue3-vite-ts/tsconfig.node.json +0 -11
- package/dist/templates/vue3-vite-ts/vitest.config.ts +0 -10
- package/skill/scripts/check-references.mjs +0 -14
- package/skill/scripts/markdown-sections.mjs +0 -36
- package/skill/scripts/package-skill.mjs +0 -60
- package/skill/scripts/package-skill.sh +0 -6
- package/skill/scripts/skill-metadata.mjs +0 -77
- package/skill/scripts/sync-agent-skills-payload.mjs +0 -359
- package/skill/scripts/sync-references.mjs +0 -794
- package/skill/scripts/validate-skill.mjs +0 -263
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('node:fs/promises');
|
|
4
|
+
var os = require('node:os');
|
|
5
|
+
var path = require('node:path');
|
|
6
|
+
var index = require('./index-BDaeBI_B.cjs');
|
|
7
|
+
require('node:module');
|
|
8
|
+
require('node:fs');
|
|
9
|
+
require('path');
|
|
10
|
+
require('os');
|
|
11
|
+
require('readline');
|
|
12
|
+
require('tty');
|
|
13
|
+
require('assert');
|
|
14
|
+
require('events');
|
|
15
|
+
require('stream');
|
|
16
|
+
require('buffer');
|
|
17
|
+
require('util');
|
|
18
|
+
|
|
19
|
+
const CANDIDATES = [path.resolve(__dirname, '..', 'package.json'), path.resolve(__dirname, '..', '..', 'package.json'), path.resolve(__dirname, '..', '..', '..', 'package.json')];
|
|
20
|
+
const AGENTS = ['codex', 'claude', 'cursor'];
|
|
21
|
+
async function runDoctorCommand(runtime = {}) {
|
|
22
|
+
const logger = runtime.logger ?? index.createCliLogger();
|
|
23
|
+
const result = await logger.task('正在检查本地 Agent Skill', () => getDoctorResult(runtime), { successText: 'Agent Skill 检查完成' });
|
|
24
|
+
if (runtime.json)
|
|
25
|
+
logger.raw(JSON.stringify(result));
|
|
26
|
+
else {
|
|
27
|
+
logger.section('Doctor');
|
|
28
|
+
logger.info(`SDK version: ${result.currentSdkVersion}`);
|
|
29
|
+
for (const a of result.agents)
|
|
30
|
+
logger.info(`${a.agent}: ${a.status}${a.skillVersion ? ` (${a.skillVersion})` : ''}`);
|
|
31
|
+
logger.info(`Status: ${result.status}`);
|
|
32
|
+
if (result.status !== 'OK')
|
|
33
|
+
logger.warn('请运行 hb-sdk skill install 安装或更新对应 Skill。');
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
async function getDoctorResult(runtime = {}) {
|
|
38
|
+
const version = await readVersion(runtime.packageJsonFiles);
|
|
39
|
+
const results = await Promise.all((runtime.agentNames ?? AGENTS).map(a => inspect(a, version, runtime)));
|
|
40
|
+
const status = results.every(a => a.status === 'OK') ? 'OK' : results.find(a => a.status !== 'OK').status;
|
|
41
|
+
return { currentSdkVersion: version, status, agents: results, localSkillJsonPath: results[0]?.path ?? '', localSkillVersion: results[0]?.skillVersion };
|
|
42
|
+
}
|
|
43
|
+
async function inspect(agent, version, runtime) {
|
|
44
|
+
const home = runtime.agentRoots?.[agent] ?? runtime.env?.[`${agent.toUpperCase()}_HOME`] ?? process.env[`${agent.toUpperCase()}_HOME`] ?? path.join(os.homedir(), `.${agent}`);
|
|
45
|
+
const file = path.join(home, 'skills', index.HB_SDK_SKILL_NAME, 'skill.json');
|
|
46
|
+
try {
|
|
47
|
+
const m = JSON.parse(await fs.readFile(file, 'utf8'));
|
|
48
|
+
const ok = m.name === index.HB_SDK_SKILL_NAME && m.sdk?.package === index.HB_SDK_PACKAGE_NAME && m.sdk?.version === version && m.distribution?.type === 'npm' && m.distribution?.package === index.HB_SDK_PACKAGE_NAME && m.distribution?.version === version && m.skillVersion?.startsWith(`${version}+skill.`);
|
|
49
|
+
return { agent, path: file, status: ok ? 'OK' : 'SKILL_OUTDATED', skillVersion: m.skillVersion };
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return { agent, path: file, status: 'SKILL_MISSING' };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function readVersion(files = CANDIDATES) { for (const file of files) {
|
|
56
|
+
try {
|
|
57
|
+
const m = JSON.parse(await fs.readFile(file, 'utf8'));
|
|
58
|
+
if (typeof m.version === 'string' && m.version)
|
|
59
|
+
return m.version;
|
|
60
|
+
}
|
|
61
|
+
catch { }
|
|
62
|
+
} throw new Error(`未能读取 ${index.HB_SDK_PACKAGE_NAME} 当前版本号`); }
|
|
63
|
+
|
|
64
|
+
exports.getDoctorResult = getDoctorResult;
|
|
65
|
+
exports.runDoctorCommand = runDoctorCommand;
|
|
@@ -234,19 +234,19 @@ function requireArgument () {
|
|
|
234
234
|
|
|
235
235
|
var command = {};
|
|
236
236
|
|
|
237
|
-
const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
237
|
+
const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BDaeBI_B.cjs', document.baseURI).href)));
|
|
238
238
|
function __require$4() { return require$5("node:events"); }
|
|
239
239
|
|
|
240
|
-
const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
240
|
+
const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BDaeBI_B.cjs', document.baseURI).href)));
|
|
241
241
|
function __require$3() { return require$4("node:child_process"); }
|
|
242
242
|
|
|
243
|
-
const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
243
|
+
const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BDaeBI_B.cjs', document.baseURI).href)));
|
|
244
244
|
function __require$2() { return require$3("node:path"); }
|
|
245
245
|
|
|
246
|
-
const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
246
|
+
const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BDaeBI_B.cjs', document.baseURI).href)));
|
|
247
247
|
function __require$1() { return require$2("node:fs"); }
|
|
248
248
|
|
|
249
|
-
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-
|
|
249
|
+
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BDaeBI_B.cjs', document.baseURI).href)));
|
|
250
250
|
function __require() { return require$1("node:process"); }
|
|
251
251
|
|
|
252
252
|
var help = {};
|
|
@@ -3883,10 +3883,6 @@ var envPaths = /*@__PURE__*/getDefaultExportFromCjs(envPathsExports);
|
|
|
3883
3883
|
|
|
3884
3884
|
const HB_SDK_PACKAGE_NAME = '@heybox/hb-sdk';
|
|
3885
3885
|
const HB_SDK_SKILL_NAME = 'hb-sdk';
|
|
3886
|
-
const HB_SDK_AGENT_SKILLS_BASE_URL = 'https://open.xiaoheihe.cn/agent-skills';
|
|
3887
|
-
const HB_SDK_SKILL_SOURCE = `${HB_SDK_AGENT_SKILLS_BASE_URL}/${HB_SDK_SKILL_NAME}`;
|
|
3888
|
-
const HB_SDK_SKILL_INDEX_URL = `${HB_SDK_AGENT_SKILLS_BASE_URL}/.well-known/agent-skills/index.json`;
|
|
3889
|
-
const HB_SDK_SKILL_INSTALL_COMMAND = `npx skills add ${HB_SDK_SKILL_SOURCE}`;
|
|
3890
3886
|
|
|
3891
3887
|
var ora$1 = {exports: {}};
|
|
3892
3888
|
|
|
@@ -12837,6 +12833,7 @@ const UPDATE_CHECK_TTL_MS = 24 * 60 * 60 * 1000;
|
|
|
12837
12833
|
const DEFAULT_TIMEOUT_MS = 1500;
|
|
12838
12834
|
const UPDATE_CHECK_CACHE_FILE = 'update-check.json';
|
|
12839
12835
|
const NPM_REGISTRY_URL = `https://registry.npmjs.org/${encodeURIComponent(HB_SDK_PACKAGE_NAME)}`;
|
|
12836
|
+
const PUBLIC_CHANGELOG_URL = 'https://docs.xiaoheihe.cn/hb_sdk/changelog/';
|
|
12840
12837
|
const paths = envPaths('hb-sdk', { suffix: '' });
|
|
12841
12838
|
const PACKAGE_JSON_CANDIDATES$1 = [
|
|
12842
12839
|
path.resolve(__dirname, '..', 'package.json'),
|
|
@@ -12891,14 +12888,23 @@ async function getUpdateReminder(options = {}) {
|
|
|
12891
12888
|
return createUpdateReminder(currentVersion, latestVersion);
|
|
12892
12889
|
}
|
|
12893
12890
|
function formatUpdateReminder(reminder) {
|
|
12894
|
-
|
|
12891
|
+
const latestVersion = parseSemver(reminder.latestVersion);
|
|
12892
|
+
const anchor = latestVersion
|
|
12893
|
+
? `v${latestVersion.major}-${latestVersion.minor}-${latestVersion.patch}`
|
|
12894
|
+
: `v${reminder.latestVersion.replaceAll('.', '-')}`;
|
|
12895
|
+
const changelogUrl = `${PUBLIC_CHANGELOG_URL}#${anchor}`;
|
|
12896
|
+
return `发现新版 ${HB_SDK_PACKAGE_NAME}: ${reminder.currentVersion} -> ${reminder.latestVersion}。升级命令: npm i -D ${HB_SDK_PACKAGE_NAME}@latest;更新内容: ${changelogUrl}`;
|
|
12895
12897
|
}
|
|
12896
12898
|
function isVersionGreater(version, baseline) {
|
|
12897
12899
|
const compared = compareSemver(version, baseline);
|
|
12898
12900
|
return compared !== null && compared > 0;
|
|
12899
12901
|
}
|
|
12900
12902
|
function createUpdateReminder(currentVersion, latestVersion) {
|
|
12901
|
-
|
|
12903
|
+
const parsedLatestVersion = latestVersion ? parseSemver(latestVersion) : null;
|
|
12904
|
+
if (!latestVersion ||
|
|
12905
|
+
!parsedLatestVersion ||
|
|
12906
|
+
parsedLatestVersion.prerelease.length > 0 ||
|
|
12907
|
+
!isVersionGreater(latestVersion, currentVersion)) {
|
|
12902
12908
|
return null;
|
|
12903
12909
|
}
|
|
12904
12910
|
return {
|
|
@@ -13347,7 +13353,7 @@ function getPathname(pathWithQuery) {
|
|
|
13347
13353
|
}
|
|
13348
13354
|
|
|
13349
13355
|
const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
|
|
13350
|
-
const BUILT_CLI_VERSION = '0.8.0-alpha';
|
|
13356
|
+
const BUILT_CLI_VERSION = '0.8.0-alpha.10';
|
|
13351
13357
|
const PACKAGE_JSON_CANDIDATES = [
|
|
13352
13358
|
path.resolve(__dirname, '..', '..', 'package.json'),
|
|
13353
13359
|
path.resolve(__dirname, '..', 'package.json'),
|
|
@@ -13412,6 +13418,7 @@ function createCliProgram(overrides = {}) {
|
|
|
13412
13418
|
runDevCommand: defaultRunDevCommand,
|
|
13413
13419
|
runDoctorCommand: defaultRunDoctorCommand,
|
|
13414
13420
|
runRemoteCommand: defaultRunRemoteCommand,
|
|
13421
|
+
runSkillInstallCommand: defaultRunSkillInstallCommand,
|
|
13415
13422
|
...overrides,
|
|
13416
13423
|
};
|
|
13417
13424
|
const program = new Command();
|
|
@@ -13432,10 +13439,11 @@ function createCliProgram(overrides = {}) {
|
|
|
13432
13439
|
}, handlers.printUpdateReminder, resolveLogger));
|
|
13433
13440
|
addVerboseOption(program
|
|
13434
13441
|
.command('dev')
|
|
13435
|
-
.description('启动当前小程序项目的 Vite
|
|
13436
|
-
.option('--port <port>', '
|
|
13437
|
-
.option('--browser-dev-host-port <port>', '
|
|
13438
|
-
.option('--no-open', '不自动打开浏览器调试页')
|
|
13442
|
+
.description('启动当前小程序项目的 Vite 开发服务器和浏览器调试页服务')
|
|
13443
|
+
.option('--port <port>', '小程序开发服务器端口', parsePositivePort)
|
|
13444
|
+
.option('--browser-dev-host-port <port>', '浏览器调试页服务端口', parsePositivePort)
|
|
13445
|
+
.option('--no-open', '不自动打开浏览器调试页')
|
|
13446
|
+
.helpOption('-h, --help', '显示命令帮助')).action(withUpdateReminder(async (options, command) => {
|
|
13439
13447
|
const logger = resolveLogger(command);
|
|
13440
13448
|
await handlers.runDevCommand(options, { logger });
|
|
13441
13449
|
}, handlers.printUpdateReminder, resolveLogger));
|
|
@@ -13451,9 +13459,20 @@ function createCliProgram(overrides = {}) {
|
|
|
13451
13459
|
await handlers.runBuildCommand({}, { logger });
|
|
13452
13460
|
});
|
|
13453
13461
|
installRemoteCommands(program, handlers, resolveLogger);
|
|
13454
|
-
addVerboseOption(program.command('
|
|
13455
|
-
|
|
13456
|
-
|
|
13462
|
+
const skill = addVerboseOption(program.command('skill').description('管理 Agent Skill'));
|
|
13463
|
+
skill.command('install')
|
|
13464
|
+
.option('--global', '安装到用户级 Agent 目录')
|
|
13465
|
+
.option('--agent <agents...>', '指定 Agent')
|
|
13466
|
+
.option('--all-agents', '安装到所有检测到的 Agent')
|
|
13467
|
+
.option('--force', '覆盖已存在且被修改的 Skill')
|
|
13468
|
+
.action(async (options, command) => {
|
|
13469
|
+
const logger = resolveLogger(command);
|
|
13470
|
+
await handlers.runSkillInstallCommand({ ...options, logger });
|
|
13471
|
+
});
|
|
13472
|
+
addVerboseOption(program.command('doctor').description('诊断 hb-sdk 本地环境和 Agent Skill 版本').option('--json', '以 JSON 格式输出诊断结果')).action(async (...args) => {
|
|
13473
|
+
const command = readCommandFromActionArgs(args);
|
|
13474
|
+
const logger = resolveLogger(command);
|
|
13475
|
+
const result = await handlers.runDoctorCommand({ logger, json: Boolean(command?.opts().json) });
|
|
13457
13476
|
if (result.status !== 'SDK_MISMATCH') {
|
|
13458
13477
|
await handlers.printUpdateReminder({ logger });
|
|
13459
13478
|
}
|
|
@@ -13682,35 +13701,39 @@ function createCommandLoggerResolver(options) {
|
|
|
13682
13701
|
};
|
|
13683
13702
|
}
|
|
13684
13703
|
const defaultClearLoginStatus = async (...args) => {
|
|
13685
|
-
const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-
|
|
13704
|
+
const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-DTY5GolC.cjs'); });
|
|
13686
13705
|
return clearLoginStatus(...args);
|
|
13687
13706
|
};
|
|
13688
13707
|
const defaultLoginToHeybox = async (...args) => {
|
|
13689
|
-
const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-
|
|
13708
|
+
const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-DTY5GolC.cjs'); });
|
|
13690
13709
|
return loginToHeybox(...args);
|
|
13691
13710
|
};
|
|
13692
13711
|
const defaultPrintLoginStatus = async (...args) => {
|
|
13693
|
-
const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-
|
|
13712
|
+
const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-DTY5GolC.cjs'); });
|
|
13694
13713
|
return printLoginStatus(...args);
|
|
13695
13714
|
};
|
|
13696
13715
|
const defaultRunBuildCommand = async (...args) => {
|
|
13697
|
-
const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-
|
|
13716
|
+
const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-aDJbiFqF.cjs'); });
|
|
13698
13717
|
return runBuildCommand(...args);
|
|
13699
13718
|
};
|
|
13700
13719
|
const defaultRunCreateCommand = async (...args) => {
|
|
13701
|
-
const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-
|
|
13720
|
+
const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-P3g0ricz.cjs'); });
|
|
13702
13721
|
return runCreateCommand(...args);
|
|
13703
13722
|
};
|
|
13704
13723
|
const defaultRunDevCommand = async (...args) => {
|
|
13705
|
-
const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-
|
|
13724
|
+
const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-CisJkXuQ.cjs'); }).then(function (n) { return n.dev; });
|
|
13706
13725
|
return runDevCommand(...args);
|
|
13707
13726
|
};
|
|
13708
13727
|
const defaultRunDoctorCommand = async (...args) => {
|
|
13709
|
-
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-
|
|
13728
|
+
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-B-LF5-uj.cjs'); });
|
|
13710
13729
|
return runDoctorCommand(...args);
|
|
13711
13730
|
};
|
|
13731
|
+
const defaultRunSkillInstallCommand = async (...args) => {
|
|
13732
|
+
const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-B0yAnPOJ.cjs'); });
|
|
13733
|
+
return runSkillInstallCommand(...args);
|
|
13734
|
+
};
|
|
13712
13735
|
const defaultRunRemoteCommand = async (...args) => {
|
|
13713
|
-
const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-
|
|
13736
|
+
const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-BBMr7j8W.cjs'); });
|
|
13714
13737
|
return runRemoteCommand(...args);
|
|
13715
13738
|
};
|
|
13716
13739
|
function resolveStandaloneLogger(options, verbose) {
|
|
@@ -13804,10 +13827,7 @@ function parseNonNegativeInteger(value) {
|
|
|
13804
13827
|
|
|
13805
13828
|
exports.CliError = CliError;
|
|
13806
13829
|
exports.HB_SDK_PACKAGE_NAME = HB_SDK_PACKAGE_NAME;
|
|
13807
|
-
exports.HB_SDK_SKILL_INDEX_URL = HB_SDK_SKILL_INDEX_URL;
|
|
13808
|
-
exports.HB_SDK_SKILL_INSTALL_COMMAND = HB_SDK_SKILL_INSTALL_COMMAND;
|
|
13809
13830
|
exports.HB_SDK_SKILL_NAME = HB_SDK_SKILL_NAME;
|
|
13810
|
-
exports.HB_SDK_SKILL_SOURCE = HB_SDK_SKILL_SOURCE;
|
|
13811
13831
|
exports.applyServiceTagIfNeeded = applyServiceTagIfNeeded;
|
|
13812
13832
|
exports.commonjsGlobal = commonjsGlobal;
|
|
13813
13833
|
exports.createCliLogger = createCliLogger;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index$2 = require('./index-
|
|
3
|
+
var index$2 = require('./index-BDaeBI_B.cjs');
|
|
4
4
|
var require$$0$3 = require('fs');
|
|
5
5
|
var require$$0$2 = require('crypto');
|
|
6
6
|
var require$$1$2 = require('path');
|
|
7
7
|
var require$$0$5 = require('assert');
|
|
8
8
|
var require$$0$4 = require('events');
|
|
9
9
|
var require$$1$1 = require('util');
|
|
10
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
10
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CqsTHeas.cjs');
|
|
11
11
|
var require$$0$7 = require('net');
|
|
12
12
|
var require$$0$6 = require('url');
|
|
13
13
|
var require$$2$1 = require('http');
|
|
@@ -11,8 +11,8 @@ var require$$0$4 = require('url');
|
|
|
11
11
|
var require$$0 = require('zlib');
|
|
12
12
|
var require$$0$1 = require('buffer');
|
|
13
13
|
var require$$1 = require('util');
|
|
14
|
-
var index = require('./index-
|
|
15
|
-
var dev = require('./dev-
|
|
14
|
+
var index = require('./index-BDaeBI_B.cjs');
|
|
15
|
+
var dev = require('./dev-CisJkXuQ.cjs');
|
|
16
16
|
require('node:module');
|
|
17
17
|
require('node:fs');
|
|
18
18
|
require('node:fs/promises');
|
|
@@ -27,12 +27,13 @@ require('node:net');
|
|
|
27
27
|
require('node:crypto');
|
|
28
28
|
require('node:dns/promises');
|
|
29
29
|
require('node:http');
|
|
30
|
-
require('./context-
|
|
31
|
-
require('./
|
|
30
|
+
require('./context-Dp36pZ9a.cjs');
|
|
31
|
+
require('./runtime-permission-env-CqsTHeas.cjs');
|
|
32
|
+
require('./version-DN5jrixS.cjs');
|
|
33
|
+
require('node:async_hooks');
|
|
34
|
+
require('./session-CnGeZCRZ.cjs');
|
|
32
35
|
require('fs');
|
|
33
36
|
require('constants');
|
|
34
|
-
require('./runtime-permission-env-CjsCe5bp.cjs');
|
|
35
|
-
require('node:async_hooks');
|
|
36
37
|
require('undici');
|
|
37
38
|
require('./browser-RAy8e8cV.cjs');
|
|
38
39
|
require('node:process');
|
|
@@ -40,7 +41,7 @@ require('node:buffer');
|
|
|
40
41
|
require('node:url');
|
|
41
42
|
require('node:util');
|
|
42
43
|
require('node:child_process');
|
|
43
|
-
require('./project-vite-
|
|
44
|
+
require('./project-vite-DlCjHlu_.cjs');
|
|
44
45
|
|
|
45
46
|
var bufferUtil = {exports: {}};
|
|
46
47
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
var promises = require('node:readline/promises');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
5
|
var node_http = require('node:http');
|
|
6
|
-
var session = require('./session-
|
|
6
|
+
var session = require('./session-CnGeZCRZ.cjs');
|
|
7
7
|
var browser = require('./browser-RAy8e8cV.cjs');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-BDaeBI_B.cjs');
|
|
9
9
|
require('node:path');
|
|
10
10
|
require('fs');
|
|
11
11
|
require('constants');
|
|
@@ -5,7 +5,7 @@ var fs$1 = require('node:fs/promises');
|
|
|
5
5
|
var node_module = require('node:module');
|
|
6
6
|
var path = require('node:path');
|
|
7
7
|
var node_url = require('node:url');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-BDaeBI_B.cjs');
|
|
9
9
|
|
|
10
10
|
function findProjectRoot(startDir) {
|
|
11
11
|
let current = path.resolve(startDir);
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var promises = require('node:readline/promises');
|
|
4
|
-
var index = require('./index-
|
|
5
|
-
var session = require('./session-
|
|
4
|
+
var index = require('./index-BDaeBI_B.cjs');
|
|
5
|
+
var session = require('./session-CnGeZCRZ.cjs');
|
|
6
6
|
var childProcess = require('node:child_process');
|
|
7
7
|
var fs = require('node:fs');
|
|
8
8
|
var fs$1 = require('node:fs/promises');
|
|
9
9
|
var path = require('node:path');
|
|
10
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
11
|
-
var runtimeGate = require('./runtime-gate-
|
|
10
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CqsTHeas.cjs');
|
|
11
|
+
var runtimeGate = require('./runtime-gate-BppCl1r3.cjs');
|
|
12
12
|
var node_crypto = require('node:crypto');
|
|
13
|
-
var context = require('./context-
|
|
13
|
+
var context = require('./context-Dp36pZ9a.cjs');
|
|
14
14
|
require('node:module');
|
|
15
15
|
require('path');
|
|
16
16
|
require('os');
|
|
@@ -23,6 +23,7 @@ require('buffer');
|
|
|
23
23
|
require('util');
|
|
24
24
|
require('fs');
|
|
25
25
|
require('constants');
|
|
26
|
+
require('./version-DN5jrixS.cjs');
|
|
26
27
|
require('node:async_hooks');
|
|
27
28
|
|
|
28
29
|
async function getCDNUploadInfo(options, runtime = {}) {
|
|
@@ -271,7 +272,7 @@ function createDefaultCosClient(uploadToken, COS) {
|
|
|
271
272
|
};
|
|
272
273
|
}
|
|
273
274
|
async function loadCosConstructor() {
|
|
274
|
-
const cosModule = await Promise.resolve().then(function () { return require('./index-
|
|
275
|
+
const cosModule = await Promise.resolve().then(function () { return require('./index-CZGkk7fQ.cjs'); }).then(function (n) { return n.index; });
|
|
275
276
|
return cosModule.default;
|
|
276
277
|
}
|
|
277
278
|
function formatSize(bytes) {
|
|
@@ -530,6 +531,7 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
530
531
|
precheckVersion = precheck.version || precheck.version_normalized || fromVersion;
|
|
531
532
|
}
|
|
532
533
|
else {
|
|
534
|
+
const localPermissions = runtimePermissionEnv.readMiniappPermissionsFromPackageJson(projectRoot, runtimePermissionEnv.resolveMiniappSdkVersion());
|
|
533
535
|
if (typeof packageJson.scripts?.build !== 'string') {
|
|
534
536
|
throw new Error('package.json scripts.build 未定义,请添加 build 脚本');
|
|
535
537
|
}
|
|
@@ -552,7 +554,8 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
552
554
|
loginBaseUrl,
|
|
553
555
|
session: session$1,
|
|
554
556
|
}), { successText: '已读取远端小程序权限' });
|
|
555
|
-
|
|
557
|
+
const localNetworkEnabled = !localPermissions.declared || localPermissions.permissions?.network?.enabled === true;
|
|
558
|
+
skipPlatformCsp = localNetworkEnabled && context.shouldSkipMiniappPlatformCsp(detail.runtime_permissions);
|
|
556
559
|
}
|
|
557
560
|
catch (error) {
|
|
558
561
|
logger.warn('未读取到远端 Runtime 权限,构建将继续注入平台 CSP。');
|
|
@@ -561,7 +564,8 @@ async function runDeployCommand(options, runtime = {}) {
|
|
|
561
564
|
const pm = detectPackageManager(projectRoot);
|
|
562
565
|
const platform = runtime.platform ?? process.platform;
|
|
563
566
|
const buildMode = validateBuildMode(env.HB_SDK_ENV?.trim(), platform);
|
|
564
|
-
|
|
567
|
+
const buildScript = await readProjectBuildScript(projectRoot);
|
|
568
|
+
logger.info(`开始构建: ${pm} ${createBuildArgs(pm, buildMode, buildScript).join(' ')}`);
|
|
565
569
|
await runBuildScript(pm, projectRoot, runtime.spawn ?? childProcess.spawn, {
|
|
566
570
|
env: runtimePermissionEnv.createMiniappPlatformCspEnv(env, skipPlatformCsp),
|
|
567
571
|
mode: buildMode,
|
|
@@ -801,9 +805,10 @@ function detectPackageManager(projectRoot) {
|
|
|
801
805
|
return 'npm';
|
|
802
806
|
}
|
|
803
807
|
async function runBuildScript(pm, cwd, spawnImpl, options) {
|
|
808
|
+
const buildScript = await readProjectBuildScript(cwd);
|
|
804
809
|
await new Promise((resolve, reject) => {
|
|
805
810
|
const pipeStdoutToStderr = options.outputMode === 'stderr';
|
|
806
|
-
const buildArgs = createBuildArgs(pm, options.mode);
|
|
811
|
+
const buildArgs = createBuildArgs(pm, options.mode, buildScript);
|
|
807
812
|
const isWindows = options.platform === 'win32';
|
|
808
813
|
const [executable, args] = isWindows ? createWindowsBuildCommand(pm, buildArgs) : [pm, buildArgs];
|
|
809
814
|
const child = spawnImpl(executable, args, {
|
|
@@ -841,8 +846,18 @@ function validateBuildMode(mode, platform) {
|
|
|
841
846
|
function escapeWindowsCommandArgument(argument) {
|
|
842
847
|
return `"${argument}"`;
|
|
843
848
|
}
|
|
844
|
-
function
|
|
845
|
-
|
|
849
|
+
async function readProjectBuildScript(projectRoot) {
|
|
850
|
+
try {
|
|
851
|
+
const packageJson = JSON.parse(await fs$1.readFile(path.join(projectRoot, 'package.json'), 'utf8'));
|
|
852
|
+
return typeof packageJson.scripts?.build === 'string' ? packageJson.scripts.build : '';
|
|
853
|
+
}
|
|
854
|
+
catch {
|
|
855
|
+
return '';
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
function createBuildArgs(pm, mode, buildScript) {
|
|
859
|
+
const modeOption = /\bhb-sdk\s+build\b/.test(buildScript) ? '--env' : '--mode';
|
|
860
|
+
return ['run', 'build', ...(mode ? [...(pm === 'npm' ? ['--'] : []), modeOption, mode] : [])];
|
|
846
861
|
}
|
|
847
862
|
async function walkDistFiles(distDir) {
|
|
848
863
|
const results = [];
|
|
@@ -1171,7 +1186,10 @@ async function remoteEntitySwitch(options, context, runtime) {
|
|
|
1171
1186
|
async function remoteList(options, context, runtime) {
|
|
1172
1187
|
const result = await context.api.listMiniPrograms({ keyword: options.keyword, status: options.status });
|
|
1173
1188
|
const items = Array.isArray(result.items) ? result.items : [];
|
|
1174
|
-
const outputItems = items.map((item) => ({
|
|
1189
|
+
const outputItems = items.map((item) => ({
|
|
1190
|
+
...toCamelCaseDeep(item),
|
|
1191
|
+
bound: item.mini_program_id === context.binding,
|
|
1192
|
+
}));
|
|
1175
1193
|
const output = { changed: false, items: outputItems, total: readNumber(result.total, items.length) };
|
|
1176
1194
|
if (!options.json) {
|
|
1177
1195
|
if (items.length === 0) {
|
|
@@ -1228,9 +1246,11 @@ async function remoteBind(options, context$1, runtime) {
|
|
|
1228
1246
|
async function remoteInfo(options, context, runtime) {
|
|
1229
1247
|
const miniProgramId = requireBinding(context);
|
|
1230
1248
|
const detail = await context.api.getMiniProgramDetail(miniProgramId);
|
|
1231
|
-
const
|
|
1249
|
+
const localPermissions = runtimePermissionEnv.readMiniappPermissionsFromPackageJson(context.packageJson.projectRoot, runtimePermissionEnv.resolveMiniappSdkVersion());
|
|
1250
|
+
const permissionViews = runtimePermissionEnv.composeMiniappRuntimePermissions(localPermissions, detail.runtime_permissions).views;
|
|
1251
|
+
const output = { changed: false, miniProgramId, detail: toCamelCaseDeep(detail), permissions: permissionViews };
|
|
1232
1252
|
if (!options.json) {
|
|
1233
|
-
printMiniProgramDetail(context.logger, detail);
|
|
1253
|
+
printMiniProgramDetail(context.logger, detail, permissionViews);
|
|
1234
1254
|
}
|
|
1235
1255
|
return finishRemoteCommand(options, runtime, output);
|
|
1236
1256
|
}
|
|
@@ -1356,7 +1376,9 @@ async function remotePreview(options, context, runtime) {
|
|
|
1356
1376
|
}
|
|
1357
1377
|
async function remoteDangerousWrite(options, context, runtime) {
|
|
1358
1378
|
const miniProgramId = requireBinding(context);
|
|
1359
|
-
const version = options.command === 'release' || options.command === 'withdraw'
|
|
1379
|
+
const version = options.command === 'release' || options.command === 'withdraw'
|
|
1380
|
+
? requireNonEmpty(options.version, `remote ${options.command} 必须传 <version>`)
|
|
1381
|
+
: undefined;
|
|
1360
1382
|
const detail = await context.api.getMiniProgramDetail(miniProgramId);
|
|
1361
1383
|
await confirmDangerousRemoteChange(options, runtime, context.logger, {
|
|
1362
1384
|
miniProgramId,
|
|
@@ -1545,7 +1567,18 @@ function parseEntityId(value) {
|
|
|
1545
1567
|
return entityId;
|
|
1546
1568
|
}
|
|
1547
1569
|
async function listDeveloperEntitiesWithAccessFallback(context) {
|
|
1548
|
-
|
|
1570
|
+
let result;
|
|
1571
|
+
try {
|
|
1572
|
+
result = await context.api.listDeveloperEntities();
|
|
1573
|
+
}
|
|
1574
|
+
catch (error) {
|
|
1575
|
+
const fallback = createEntityFromAccessStatus(await context.api.accessStatus());
|
|
1576
|
+
if (!fallback) {
|
|
1577
|
+
throw error;
|
|
1578
|
+
}
|
|
1579
|
+
context.logger.debug('开发者主体列表不可用,已回退使用小程序工坊准入主体');
|
|
1580
|
+
return { fromAccessFallback: true, items: [fallback], total: 1 };
|
|
1581
|
+
}
|
|
1549
1582
|
const items = normalizeDeveloperEntities(result);
|
|
1550
1583
|
if (items.length > 0) {
|
|
1551
1584
|
return { items, total: readNumber(result.total, items.length) };
|
|
@@ -1716,7 +1749,7 @@ async function promptConfirm(message, runtime) {
|
|
|
1716
1749
|
rl.close();
|
|
1717
1750
|
}
|
|
1718
1751
|
}
|
|
1719
|
-
function printMiniProgramDetail(logger, detail) {
|
|
1752
|
+
function printMiniProgramDetail(logger, detail, permissionViews) {
|
|
1720
1753
|
logger.info(`Mini-program: ${detail.mini_program_id ?? '--'}`);
|
|
1721
1754
|
logger.info(`Name: ${detail.name ?? '--'}`);
|
|
1722
1755
|
logger.info(`Status: ${detail.status ?? '--'}`);
|
|
@@ -1727,14 +1760,13 @@ function printMiniProgramDetail(logger, detail) {
|
|
|
1727
1760
|
if (detail.protocol_string) {
|
|
1728
1761
|
logger.info(`Protocol: ${detail.protocol_string}`);
|
|
1729
1762
|
}
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
}
|
|
1763
|
+
logger.info('权限:');
|
|
1764
|
+
for (const view of permissionViews) {
|
|
1765
|
+
const approval = view.access === 'platform-approval' ? ` 需申请=是 批准=${view.approved ? '是' : '否'}` : ' 需申请=否';
|
|
1766
|
+
const configs = view.requestedConfig
|
|
1767
|
+
? ` requested=${JSON.stringify(view.requestedConfig)} approved=${JSON.stringify(view.approvedConfig)} effective=${JSON.stringify(view.effectiveConfig)}`
|
|
1768
|
+
: '';
|
|
1769
|
+
logger.info(` ${view.key}: 声明=${view.declared ? '是' : '否'}${approval} 最终=${view.effective ? '可用' : '不可用'}${configs}`);
|
|
1738
1770
|
}
|
|
1739
1771
|
}
|
|
1740
1772
|
function printDeveloperEntities(logger, entities) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var runtimePermissionEnv = require('./runtime-permission-env-
|
|
3
|
+
var runtimePermissionEnv = require('./runtime-permission-env-CqsTHeas.cjs');
|
|
4
4
|
|
|
5
5
|
const MINIAPP_PLATFORM_VALUES = ['android', 'ios', 'ohos', 'windows', 'macos', 'linux'];
|
|
6
6
|
function isValidMiniappManifestVersion(version) {
|
|
@@ -32,10 +32,18 @@ function parseMiniappManifestJson(raw, sourceLabel = 'manifest.json') {
|
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
function validateMiniappManifestForDeploy(manifest) {
|
|
35
|
+
const version = validateMiniappManifestVersion(manifest.version, 'manifest.version');
|
|
36
|
+
const sdkVersion = validateSdkVersion(manifest.sdkVersion, 'manifest.sdkVersion');
|
|
37
|
+
const permissions = runtimePermissionEnv.parseMiniappPermissions(manifest.permissions, {
|
|
38
|
+
present: Object.prototype.hasOwnProperty.call(manifest, 'permissions'),
|
|
39
|
+
sdkVersion,
|
|
40
|
+
sourceLabel: 'manifest.permissions',
|
|
41
|
+
});
|
|
35
42
|
return {
|
|
36
|
-
version
|
|
37
|
-
sdkVersion
|
|
43
|
+
version,
|
|
44
|
+
sdkVersion,
|
|
38
45
|
platforms: validateMiniappPlatforms(manifest.platforms, 'manifest.platforms'),
|
|
46
|
+
...(permissions.permissions === undefined ? {} : { permissions: permissions.permissions }),
|
|
39
47
|
};
|
|
40
48
|
}
|
|
41
49
|
function validateMiniappPlatforms(platforms, sourceLabel = 'platforms') {
|