@heybox/hb-sdk 0.8.2-alpha.5 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +5 -2
  3. package/dist/cli-chunks/{build-D2T3ky_9.cjs → build-ioec3WjV.cjs} +5 -5
  4. package/dist/cli-chunks/{context-DEgmdpSL.cjs → context-CbhLLEgH.cjs} +2 -2
  5. package/dist/cli-chunks/{create-DKqQhrG5.cjs → create-DuRupk1s.cjs} +1 -1
  6. package/dist/cli-chunks/{dev-BEXM7cmq.cjs → dev-DP_yCq4b.cjs} +9 -9
  7. package/dist/cli-chunks/{doctor-B7UixGrd.cjs → doctor-1oB2wnIB.cjs} +25 -13
  8. package/dist/cli-chunks/{index-BtwfuoWI.cjs → index-D_PgcqF1.cjs} +16 -16
  9. package/dist/cli-chunks/{index-C69OtRug.cjs → index-b4qbCgVm.cjs} +2 -2
  10. package/dist/cli-chunks/{index.esm-C86KlVdK.cjs → index.esm-BZZV7lT1.cjs} +7 -7
  11. package/dist/cli-chunks/{login-Bp_HMx-i.cjs → login-DhifhtRN.cjs} +2 -2
  12. package/dist/cli-chunks/{project-vite-DZxipd13.cjs → project-vite-DnFl1fls.cjs} +1 -1
  13. package/dist/cli-chunks/{remote-B_sVsbQP.cjs → remote-daa-2GIp.cjs} +7 -7
  14. package/dist/cli-chunks/{runtime-gate-GR9jZd37.cjs → runtime-gate-nf4bHdwy.cjs} +1 -1
  15. package/dist/cli-chunks/{runtime-permission-env-COWketgE.cjs → runtime-permission-env-DZGT1O3U.cjs} +1 -1
  16. package/dist/cli-chunks/{session-6-AApcTZ.cjs → session-CcJk2K_C.cjs} +1 -1
  17. package/dist/cli-chunks/{skill-CPDLk7t7.cjs → skill-7ktS1iXc.cjs} +2 -2
  18. package/dist/cli-chunks/{version-hHrSPRwW.cjs → version--gWpKmc-.cjs} +1 -1
  19. package/dist/cli.cjs +1 -1
  20. package/dist/devtools/browser-dev-host/assets/{browser-dev-host-CpwQQhA1.js → browser-dev-host-ubGt2Pe3.js} +1 -1
  21. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-BdWBOIvY.js → desktop-app-launch-2aFsf83q.js} +1 -1
  22. package/dist/devtools/browser-dev-host/assets/{index-BQSEynx6.js → index-DbhzDxmE.js} +3 -3
  23. package/dist/devtools/browser-dev-host/index.html +2 -2
  24. package/dist/index.cjs.js +1 -1
  25. package/dist/index.esm.js +1 -1
  26. package/dist/templates/vanilla-vite-js/README.md.ejs +3 -0
  27. package/dist/vite.cjs.js +1 -1
  28. package/dist/vite.esm.js +1 -1
  29. package/package.json +6 -6
  30. package/skill/SKILL.md +22 -128
  31. package/skill/skill.json +5 -5
  32. package/types/skill-metadata.d.ts +2 -2
  33. package/skill/references/api-protocol.md +0 -317
  34. package/skill/references/api-root.md +0 -1244
  35. package/skill/references/cli.md +0 -401
  36. package/skill/references/examples.md +0 -204
  37. package/skill/references/llms-index.md +0 -24
  38. package/skill/references/recipes.md +0 -855
  39. package/skill/references/safety-boundaries.md +0 -63
  40. package/skill/references/smoke-evaluation.md +0 -26
package/CHANGELOG.md CHANGED
@@ -2,6 +2,46 @@
2
2
 
3
3
  本文件随 `@heybox/hb-sdk` npm 包公开分发,只记录外部小程序开发者可观察到的变化。
4
4
 
5
+ ## 0.8.2 - 2026-09-21
6
+
7
+ > 摘要:版本名称与图片改由项目维护,新增 Steam 账号授权,并调整部署与用户数据边界。
8
+ > 影响级别:Breaking
9
+ > 开发者动作:升级至 `0.8.2`,补齐版本资料并移除 `--from-version`;pnpm 白名单项目还需允许 `sharp`。
10
+ > 兼容范围:未启用 Steam 账号能力的版本保持原有用户 API 行为;旧产物继续遵循最低 SDK 策略,平台声明的 `0.9.0` 切点不变。
11
+
12
+ ### 必须操作
13
+
14
+ - 在 [package.json 项目配置](https://docs.xiaoheihe.cn/hb_sdk/guide/project-configuration) 中补齐 `name`、`icon` 和 `coverImages`,并替换占位图;pnpm 白名单项目还需按[安装说明](https://docs.xiaoheihe.cn/hb_sdk/guide/version-profile#安装图片解码依赖)允许 `sharp`。
15
+ - [`remote deploy`](https://docs.xiaoheihe.cn/hb_sdk/guide/cli#部署发布) 已移除 `--from-version`,使用该参数的脚本必须改为从当前项目构建。
16
+ - 启用 Steam 账号能力的 Host 须提供可信的功能开关、用户数据模式和授权上下文;缺失或不一致时,用户数据请求会被拒绝。
17
+
18
+ ### 新增能力
19
+
20
+ - 新增 [Steam 账号授权](https://docs.xiaoheihe.cn/hb_sdk/guide/auth) scope `steam_account`、可选 `steam_id` 和授权状态。联网模式使用 `auth.login()` 与服务端 OpenAPI,无网络模式使用 `user.getInfo()`;反向调用返回 `SERVER_API_REQUIRED`。
21
+ - [版本资料迁移](https://docs.xiaoheihe.cn/hb_sdk/guide/version-profile) 支持 `remote bind`、`dev` 与 `remote deploy`,会写入 package.json 和 `assets/heybox/`;已下架项目同样支持,无法比较远端图片时显示 `unavailable`。
22
+ - `@heybox/hb-sdk/miniapp-publish` 新增版本资料解析与预览、部署前 Manifest 校验、Runtime Gate 检查及相关公开类型。
23
+
24
+ ### 行为调整
25
+
26
+ - `build` 保持离线;`remote deploy` 会校验版本资料,并可在重试同一构建时复用已上传文件。开放平台只读预览构建资料。
27
+ - [Companion 确认界面](https://docs.xiaoheihe.cn/hb_sdk/guide/companion) 新增归档大小与可选 SHA-256 展示;SHA-256 不会进入 `CompanionInfo`。
28
+
29
+ ### 文档与工具
30
+
31
+ - 完善项目配置、API 与 `files` 文档;随包 [Agent Skill](https://docs.xiaoheihe.cn/hb_sdk/guide/agent-skill) 改为读取 [LLM 文档索引](https://docs.xiaoheihe.cn/hb_sdk/llms.txt),`hb-sdk doctor` 会识别旧 references 和额外文件。
32
+
33
+ ## 0.8.2-alpha.6
34
+
35
+ ### 行为调整
36
+
37
+ - 随包 Agent Skill 改为每次从 canonical [`llms.txt`](https://docs.xiaoheihe.cn/hb_sdk/llms.txt) 按需读取公开文档,不再内置 API、CLI 和示例副本;索引或必需页面不可用时停止 hb-sdk 专项工作,不使用旧快照兜底。
38
+ - `hb-sdk doctor` 会把安装目录中残留的旧版 references 或其他额外内容判为完整性异常,使用 `hb-sdk skill install --force` 可覆盖刷新。
39
+
40
+ ### 文档与工具
41
+
42
+ - 新增 `package.json#heybox` 项目配置指南,补齐版本资料、平台、权限、窗口、关联游戏、Companion 与远端绑定字段,以及构建和远端命令关系。
43
+ - 修正创建项目、本地调试和远端管理文档:`hb-sdk dev` 启动前必须完成 CLI 登录与项目绑定,同时明确无需预先绑定的发现和建绑命令。
44
+
5
45
  ## 0.8.2-alpha.5
6
46
 
7
47
  - 无面向小程序开发者的可见变化。
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  小黑盒 APP 小程序工坊的前端 SDK 与开发 CLI,用于创建、调试、构建和发布工坊小程序,并在业务页面中调用小黑盒开放能力。
4
4
 
5
- 运行环境要求 Node.js `>=22.20.0`。`@heybox/hb-sdk` npm 包同时包含与当前 SDK 版本严格对应的 Agent Skill;Skill 不再依赖 Open 远端分发。
5
+ 运行环境要求 Node.js `>=22.20.0`。`@heybox/hb-sdk` npm 包同时包含与当前 SDK 版本严格对应的轻量 Agent Skill 入口和完整性 manifest;Skill 不内置 API、CLI 或示例副本,使用时需要联网读取 [`llms.txt`](https://docs.xiaoheihe.cn/hb_sdk/llms.txt) 及其链接的 Markdown 页面。
6
6
 
7
7
  SDK 只提供面向小程序开发者的稳定接口,不提供客户端内部协议、登录凭据或私有实现入口。本地浏览器调试请使用 `hb-sdk dev` 提供的 Mock 环境,发布前仍需在小黑盒 APP 中完成真机验收。
8
8
 
@@ -18,6 +18,9 @@ SDK 只提供面向小程序开发者的稳定接口,不提供客户端内部
18
18
  npx @heybox/hb-sdk@latest create my-miniapp
19
19
  cd my-miniapp
20
20
  npm install
21
+ npm run hb-sdk -- login
22
+ npm run hb-sdk -- remote create
23
+ # 已有远端小程序时改用:npm run hb-sdk -- remote bind <mini-program-id>
21
24
  npm run dev
22
25
  ```
23
26
 
@@ -47,7 +50,7 @@ hb-sdk skill install --agent codex cursor
47
50
  hb-sdk skill install --all-agents
48
51
  ```
49
52
 
50
- 使用 `hb-sdk doctor` 或 `hb-sdk doctor --json` 检查各 Agent 的 Skill 是否与当前 npm 包匹配;已有内容被修改时,使用 `--force` 才会覆盖。
53
+ 使用 `hb-sdk doctor` 或 `hb-sdk doctor --json` 检查各 Agent 的 Skill 是否与当前 npm 包匹配;已有内容被修改或残留旧版离线 references 时,使用 `--force` 覆盖。`doctor` 不访问网络,因此不会检查线上文档是否可用。
51
54
 
52
55
  SDK 会在导入时启动握手,能力调用会自动等待 SDK 就绪。声明 `userInfo` 后,可通过 `user.getInfo()` 读取当前小程序内的隔离身份和已授权资料:
53
56
 
@@ -3,13 +3,13 @@
3
3
  var fs$1 = require('node:fs');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var runtimePermissionEnv = require('./runtime-permission-env-COWketgE.cjs');
6
+ var runtimePermissionEnv = require('./runtime-permission-env-DZGT1O3U.cjs');
7
7
  require('node:crypto');
8
8
  require('node:zlib');
9
- var runtimeGate = require('./runtime-gate-GR9jZd37.cjs');
10
- var index = require('./index-BtwfuoWI.cjs');
11
- var projectVite = require('./project-vite-DZxipd13.cjs');
12
- require('./version-hHrSPRwW.cjs');
9
+ var runtimeGate = require('./runtime-gate-nf4bHdwy.cjs');
10
+ var index = require('./index-D_PgcqF1.cjs');
11
+ var projectVite = require('./project-vite-DnFl1fls.cjs');
12
+ require('./version--gWpKmc-.cjs');
13
13
  require('node:async_hooks');
14
14
  require('node:module');
15
15
  require('path');
@@ -3,10 +3,10 @@
3
3
  var node_crypto = require('node:crypto');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var runtimePermissionEnv = require('./runtime-permission-env-COWketgE.cjs');
6
+ var runtimePermissionEnv = require('./runtime-permission-env-DZGT1O3U.cjs');
7
7
  var fs$1 = require('node:fs');
8
8
  var sharp = require('sharp');
9
- var session = require('./session-6-AApcTZ.cjs');
9
+ var session = require('./session-CcJk2K_C.cjs');
10
10
 
11
11
  async function inspectBasicInfoImage(bytes, sourcePath, kind) {
12
12
  const inspected = await inspectDecodedBasicInfoImage(bytes, kind);
@@ -5,7 +5,7 @@ var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
6
  var require$$0 = require('fs');
7
7
  var require$$1 = require('path');
8
- var index = require('./index-BtwfuoWI.cjs');
8
+ var index = require('./index-D_PgcqF1.cjs');
9
9
  require('node:module');
10
10
  require('os');
11
11
  require('node:crypto');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var context = require('./context-DEgmdpSL.cjs');
3
+ var context = require('./context-CbhLLEgH.cjs');
4
4
  var node_crypto = require('node:crypto');
5
5
  var fs = require('node:fs');
6
6
  var os = require('node:os');
@@ -9,16 +9,16 @@ var net = require('node:net');
9
9
  var promises = require('node:dns/promises');
10
10
  var node_http = require('node:http');
11
11
  var node_module = require('node:module');
12
- var runtimePermissionEnv = require('./runtime-permission-env-COWketgE.cjs');
12
+ var runtimePermissionEnv = require('./runtime-permission-env-DZGT1O3U.cjs');
13
13
  var undici = require('undici');
14
14
  var fs$1 = require('node:fs/promises');
15
- var index = require('./index-BtwfuoWI.cjs');
15
+ var index = require('./index-D_PgcqF1.cjs');
16
16
  var require$$0$1 = require('crypto');
17
17
  var require$$0 = require('buffer');
18
- var session = require('./session-6-AApcTZ.cjs');
18
+ var session = require('./session-CcJk2K_C.cjs');
19
19
  var browser = require('./browser-RAy8e8cV.cjs');
20
- var projectVite = require('./project-vite-DZxipd13.cjs');
21
- var version = require('./version-hHrSPRwW.cjs');
20
+ var projectVite = require('./project-vite-DnFl1fls.cjs');
21
+ var version = require('./version--gWpKmc-.cjs');
22
22
  require('node:zlib');
23
23
 
24
24
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -1950,8 +1950,8 @@ const DEFAULT_CHANNEL_TRANSPORT = {
1950
1950
  };
1951
1951
  const IPV4_LOOPBACK_ADDRESSES = new net.BlockList();
1952
1952
  IPV4_LOOPBACK_ADDRESSES.addSubnet('127.0.0.0', 8, 'ipv4');
1953
- const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-BEXM7cmq.cjs', document.baseURI).href)))('ws');
1954
- const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-BEXM7cmq.cjs', document.baseURI).href)))('parse5');
1953
+ const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-DP_yCq4b.cjs', document.baseURI).href)))('ws');
1954
+ const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-DP_yCq4b.cjs', document.baseURI).href)))('parse5');
1955
1955
  const BROWSER_DEV_HOST_ROOT_CANDIDATES = [
1956
1956
  path.resolve(__dirname, 'devtools/browser-dev-host'),
1957
1957
  path.resolve(__dirname, '../devtools/browser-dev-host'),
@@ -11049,7 +11049,7 @@ function assertNodeRuntimeCapabilities(ctx, settings) {
11049
11049
  function createNodeRealtimeDriverRegistry() {
11050
11050
  const registry = createRuntimeRealtimeDriverRegistry();
11051
11051
  registry.registerLazy('node-websocket', async () => {
11052
- const mod = await Promise.resolve().then(function () { return require('./index.esm-C86KlVdK.cjs'); });
11052
+ const mod = await Promise.resolve().then(function () { return require('./index.esm-BZZV7lT1.cjs'); });
11053
11053
  return mod.createNodeWebSocketRuntimeDriver();
11054
11054
  });
11055
11055
  return registry;
@@ -3,7 +3,7 @@
3
3
  var fs = require('node:fs/promises');
4
4
  var os = require('node:os');
5
5
  var path = require('node:path');
6
- var index = require('./index-BtwfuoWI.cjs');
6
+ var index = require('./index-D_PgcqF1.cjs');
7
7
  require('node:module');
8
8
  require('node:fs');
9
9
  require('path');
@@ -17,7 +17,11 @@ require('stream');
17
17
  require('buffer');
18
18
  require('util');
19
19
 
20
- const CANDIDATES = [path.resolve(__dirname, '..', 'package.json'), path.resolve(__dirname, '..', '..', 'package.json'), path.resolve(__dirname, '..', '..', '..', 'package.json')];
20
+ const CANDIDATES = [
21
+ path.resolve(__dirname, '..', 'package.json'),
22
+ path.resolve(__dirname, '..', '..', 'package.json'),
23
+ path.resolve(__dirname, '..', '..', '..', 'package.json'),
24
+ ];
21
25
  /** 默认探测目标;`agents` 代表通用 `.agents/skills` 目录(项目级优先,其次全局)。 */
22
26
  const AGENTS = ['codex', 'claude', 'cursor', 'agents'];
23
27
  const AGENTS_TARGET = 'agents';
@@ -123,20 +127,28 @@ async function inspectSkillJson(agent, file, version) {
123
127
  return { agent, path: file, status: 'OK', skillVersion };
124
128
  }
125
129
  /**
126
- * 读取 Skill 可分发内容:`SKILL.md` 与 `references/` 的直接子文件(不含子目录、不含 skill.json 与 scripts/)。
127
- * 路径统一使用 `/` 分隔,确保与发布时在 CI 上生成的 integrity 可跨平台比较。
130
+ * 递归读取已安装 Skill 的全部内容文件,仅排除根目录的 `skill.json` manifest。
131
+ * 这样旧版残留的 `references/` 或任何额外文件都会改变 integrity,而不会继续被静默使用。
128
132
  */
129
- async function readSkillContentEntries(skillDir) {
130
- const entries = [{ path: 'SKILL.md', content: await fs.readFile(path.join(skillDir, 'SKILL.md')) }];
131
- const referencesDir = path.join(skillDir, 'references');
132
- const references = await fs.readdir(referencesDir, { withFileTypes: true });
133
- for (const entry of references) {
134
- if (entry.isDirectory()) {
133
+ async function readSkillContentEntries(skillDir, currentDir = skillDir) {
134
+ const entries = await fs.readdir(currentDir, { withFileTypes: true });
135
+ const contentEntries = [];
136
+ for (const entry of entries) {
137
+ const file = path.join(currentDir, entry.name);
138
+ const relativePath = path.relative(skillDir, file).split(path.sep).join('/');
139
+ if (relativePath === SKILL_MANIFEST_FILE)
135
140
  continue;
141
+ if (entry.isDirectory()) {
142
+ contentEntries.push(...(await readSkillContentEntries(skillDir, file)));
143
+ }
144
+ else if (entry.isFile()) {
145
+ contentEntries.push({ path: relativePath, content: await fs.readFile(file) });
146
+ }
147
+ else {
148
+ throw new Error(`Skill 包含不支持的文件类型:${relativePath}`);
136
149
  }
137
- entries.push({ path: `references/${entry.name}`, content: await fs.readFile(path.join(referencesDir, entry.name)) });
138
150
  }
139
- return entries;
151
+ return contentEntries;
140
152
  }
141
153
  function readExpectedIntegrity(manifest) {
142
154
  if (typeof manifest.integrity !== 'string') {
@@ -159,7 +171,7 @@ function resolveAgentsProjectRoot(runtime) {
159
171
  path.join(runtime.cwd ?? process.cwd(), '.agents'));
160
172
  }
161
173
  function resolveAgentsGlobalRoot(runtime) {
162
- return runtime.agentsGlobalRoot ?? runtime.agentRoots?.[AGENTS_GLOBAL_TARGET] ?? path.join(runtime.env?.HOME ?? process.env.HOME ?? os.homedir(), '.agents');
174
+ return (runtime.agentsGlobalRoot ?? runtime.agentRoots?.[AGENTS_GLOBAL_TARGET] ?? path.join(runtime.env?.HOME ?? process.env.HOME ?? os.homedir(), '.agents'));
163
175
  }
164
176
  async function fileExists(file) {
165
177
  try {
@@ -235,19 +235,19 @@ function requireArgument () {
235
235
 
236
236
  var command = {};
237
237
 
238
- 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-BtwfuoWI.cjs', document.baseURI).href)));
238
+ 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-D_PgcqF1.cjs', document.baseURI).href)));
239
239
  function __require$4() { return require$5("node:events"); }
240
240
 
241
- 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-BtwfuoWI.cjs', document.baseURI).href)));
241
+ 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-D_PgcqF1.cjs', document.baseURI).href)));
242
242
  function __require$3() { return require$4("node:child_process"); }
243
243
 
244
- 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-BtwfuoWI.cjs', document.baseURI).href)));
244
+ 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-D_PgcqF1.cjs', document.baseURI).href)));
245
245
  function __require$2() { return require$3("node:path"); }
246
246
 
247
- 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-BtwfuoWI.cjs', document.baseURI).href)));
247
+ 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-D_PgcqF1.cjs', document.baseURI).href)));
248
248
  function __require$1() { return require$2("node:fs"); }
249
249
 
250
- 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-BtwfuoWI.cjs', document.baseURI).href)));
250
+ 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-D_PgcqF1.cjs', document.baseURI).href)));
251
251
  function __require() { return require$1("node:process"); }
252
252
 
253
253
  var help = {};
@@ -3981,7 +3981,7 @@ var envPaths = /*@__PURE__*/getDefaultExportFromCjs(envPathsExports);
3981
3981
  const HB_SDK_PACKAGE_NAME = '@heybox/hb-sdk';
3982
3982
  const HB_SDK_SKILL_NAME = 'hb-sdk';
3983
3983
  /**
3984
- * 计算 Skill 可分发内容(`SKILL.md` + `references/*`)的内容哈希。
3984
+ * 计算 Skill 可分发内容(不含 `skill.json` manifest)的内容哈希。
3985
3985
  *
3986
3986
  * 该实现必须与 `scripts/skill/skill-metadata.mjs` 的 `createSkillContentHash` 语义完全一致:
3987
3987
  * 按 `path` 升序排序后依次写入 `path`、`\0`、`content`、`\0`,最后取 sha256 十六进制摘要。
@@ -13467,7 +13467,7 @@ function getPathname(pathWithQuery) {
13467
13467
  }
13468
13468
 
13469
13469
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
13470
- const BUILT_CLI_VERSION = '0.8.2-alpha.5';
13470
+ const BUILT_CLI_VERSION = '0.8.2';
13471
13471
  const PACKAGE_JSON_CANDIDATES = [
13472
13472
  path.resolve(__dirname, '..', '..', 'package.json'),
13473
13473
  path.resolve(__dirname, '..', 'package.json'),
@@ -13826,39 +13826,39 @@ function createCommandLoggerResolver(options) {
13826
13826
  };
13827
13827
  }
13828
13828
  const defaultClearLoginStatus = async (...args) => {
13829
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-Bp_HMx-i.cjs'); });
13829
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-DhifhtRN.cjs'); });
13830
13830
  return clearLoginStatus(...args);
13831
13831
  };
13832
13832
  const defaultLoginToHeybox = async (...args) => {
13833
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-Bp_HMx-i.cjs'); });
13833
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-DhifhtRN.cjs'); });
13834
13834
  return loginToHeybox(...args);
13835
13835
  };
13836
13836
  const defaultPrintLoginStatus = async (...args) => {
13837
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-Bp_HMx-i.cjs'); });
13837
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-DhifhtRN.cjs'); });
13838
13838
  return printLoginStatus(...args);
13839
13839
  };
13840
13840
  const defaultRunBuildCommand = async (...args) => {
13841
- const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-D2T3ky_9.cjs'); });
13841
+ const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-ioec3WjV.cjs'); });
13842
13842
  return runBuildCommand(...args);
13843
13843
  };
13844
13844
  const defaultRunCreateCommand = async (...args) => {
13845
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-DKqQhrG5.cjs'); });
13845
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-DuRupk1s.cjs'); });
13846
13846
  return runCreateCommand(...args);
13847
13847
  };
13848
13848
  const defaultRunDevCommand = async (...args) => {
13849
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-BEXM7cmq.cjs'); }).then(function (n) { return n.dev; });
13849
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-DP_yCq4b.cjs'); }).then(function (n) { return n.dev; });
13850
13850
  return runDevCommand(...args);
13851
13851
  };
13852
13852
  const defaultRunDoctorCommand = async (...args) => {
13853
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-B7UixGrd.cjs'); });
13853
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-1oB2wnIB.cjs'); });
13854
13854
  return runDoctorCommand(...args);
13855
13855
  };
13856
13856
  const defaultRunSkillInstallCommand = async (...args) => {
13857
- const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-CPDLk7t7.cjs'); });
13857
+ const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-7ktS1iXc.cjs'); });
13858
13858
  return runSkillInstallCommand(...args);
13859
13859
  };
13860
13860
  const defaultRunRemoteCommand = async (...args) => {
13861
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-B_sVsbQP.cjs'); });
13861
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-daa-2GIp.cjs'); });
13862
13862
  return runRemoteCommand(...args);
13863
13863
  };
13864
13864
  function resolveStandaloneLogger(options, verbose) {
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-BtwfuoWI.cjs');
3
+ var index$2 = require('./index-D_PgcqF1.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-COWketgE.cjs');
10
+ var runtimePermissionEnv = require('./runtime-permission-env-DZGT1O3U.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-BtwfuoWI.cjs');
15
- var dev = require('./dev-BEXM7cmq.cjs');
14
+ var index = require('./index-D_PgcqF1.cjs');
15
+ var dev = require('./dev-DP_yCq4b.cjs');
16
16
  require('node:module');
17
17
  require('node:fs');
18
18
  require('node:fs/promises');
@@ -23,12 +23,12 @@ require('node:crypto');
23
23
  require('readline');
24
24
  require('tty');
25
25
  require('assert');
26
- require('./context-DEgmdpSL.cjs');
27
- require('./runtime-permission-env-COWketgE.cjs');
28
- require('./version-hHrSPRwW.cjs');
26
+ require('./context-CbhLLEgH.cjs');
27
+ require('./runtime-permission-env-DZGT1O3U.cjs');
28
+ require('./version--gWpKmc-.cjs');
29
29
  require('node:async_hooks');
30
30
  require('sharp');
31
- require('./session-6-AApcTZ.cjs');
31
+ require('./session-CcJk2K_C.cjs');
32
32
  require('fs');
33
33
  require('constants');
34
34
  require('node:os');
@@ -42,7 +42,7 @@ require('node:buffer');
42
42
  require('node:url');
43
43
  require('node:util');
44
44
  require('node:child_process');
45
- require('./project-vite-DZxipd13.cjs');
45
+ require('./project-vite-DnFl1fls.cjs');
46
46
  require('node:zlib');
47
47
 
48
48
  var bufferUtil = {exports: {}};
@@ -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-AApcTZ.cjs');
6
+ var session = require('./session-CcJk2K_C.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
- var index = require('./index-BtwfuoWI.cjs');
8
+ var index = require('./index-D_PgcqF1.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-BtwfuoWI.cjs');
8
+ var index = require('./index-D_PgcqF1.cjs');
9
9
 
10
10
  function findProjectRoot(startDir) {
11
11
  let current = path.resolve(startDir);
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var runtimePermissionEnv = require('./runtime-permission-env-COWketgE.cjs');
4
- var context = require('./context-DEgmdpSL.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-DZGT1O3U.cjs');
4
+ var context = require('./context-CbhLLEgH.cjs');
5
5
  var promises = require('node:readline/promises');
6
- var index = require('./index-BtwfuoWI.cjs');
7
- var session = require('./session-6-AApcTZ.cjs');
6
+ var index = require('./index-D_PgcqF1.cjs');
7
+ var session = require('./session-CcJk2K_C.cjs');
8
8
  var childProcess = require('node:child_process');
9
9
  var fs = require('node:fs');
10
10
  var fs$1 = require('node:fs/promises');
11
11
  var path = require('node:path');
12
12
  var node_crypto = require('node:crypto');
13
13
  require('node:zlib');
14
- var runtimeGate = require('./runtime-gate-GR9jZd37.cjs');
15
- require('./version-hHrSPRwW.cjs');
14
+ var runtimeGate = require('./runtime-gate-nf4bHdwy.cjs');
15
+ require('./version--gWpKmc-.cjs');
16
16
  require('node:async_hooks');
17
17
  require('sharp');
18
18
  require('node:module');
@@ -274,7 +274,7 @@ function createDefaultCosClient(uploadToken, COS) {
274
274
  };
275
275
  }
276
276
  async function loadCosConstructor() {
277
- const cosModule = await Promise.resolve().then(function () { return require('./index-C69OtRug.cjs'); }).then(function (n) { return n.index; });
277
+ const cosModule = await Promise.resolve().then(function () { return require('./index-b4qbCgVm.cjs'); }).then(function (n) { return n.index; });
278
278
  return cosModule.default;
279
279
  }
280
280
  function formatSize(bytes) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var runtimePermissionEnv = require('./runtime-permission-env-COWketgE.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-DZGT1O3U.cjs');
4
4
 
5
5
  // Shorthands
6
6
  /**
@@ -2,7 +2,7 @@
2
2
 
3
3
  var fs = require('node:fs');
4
4
  var path = require('node:path');
5
- var version = require('./version-hHrSPRwW.cjs');
5
+ var version = require('./version--gWpKmc-.cjs');
6
6
  require('node:crypto');
7
7
  var node_async_hooks = require('node:async_hooks');
8
8
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BtwfuoWI.cjs');
3
+ var index = require('./index-D_PgcqF1.cjs');
4
4
  var node_crypto = require('node:crypto');
5
5
  var path = require('node:path');
6
6
  var require$$0$2 = require('fs');
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var version = require('./version-hHrSPRwW.cjs');
3
+ var version = require('./version--gWpKmc-.cjs');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
6
  var childProcess = require('node:child_process');
7
- var index = require('./index-BtwfuoWI.cjs');
7
+ var index = require('./index-D_PgcqF1.cjs');
8
8
  require('node:module');
9
9
  require('node:fs');
10
10
  require('path');
@@ -3,6 +3,6 @@
3
3
  /** 构建时替换为当前发布包的实际版本。 */
4
4
  const HB_SDK_VERSION = typeof undefined === 'string'
5
5
  ? undefined
6
- : '0.8.2-alpha.5';
6
+ : '0.8.2';
7
7
 
8
8
  exports.HB_SDK_VERSION = HB_SDK_VERSION;
package/dist/cli.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./cli-chunks/index-BtwfuoWI.cjs');
3
+ var index = require('./cli-chunks/index-D_PgcqF1.cjs');
4
4
  require('node:module');
5
5
  require('node:fs');
6
6
  require('node:fs/promises');