@heybox/hb-sdk 0.6.4 → 0.6.6-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/cli-chunks/{context-BEgbP7mM.cjs → context-Do5YcZPw.cjs} +1 -1
- package/dist/cli-chunks/{create-BHsWWo3V.cjs → create-CG36zW_8.cjs} +1 -1
- package/dist/cli-chunks/dev-BjlyFzNU.cjs +1976 -0
- package/dist/cli-chunks/{doctor-B3AOQgyN.cjs → doctor-OIjeEwrd.cjs} +1 -1
- package/dist/cli-chunks/{index-B0zGksOA.cjs → index-Ck6a9STO.cjs} +13 -13
- package/dist/cli-chunks/{index-BGFf6g7V.cjs → index-NrjOOQMK.cjs} +2 -2
- package/dist/cli-chunks/{login-ClQuL2r6.cjs → login-CqXRKZgq.cjs} +2 -2
- package/dist/cli-chunks/{remote-ib5THDbw.cjs → remote-vquOa1cT.cjs} +4 -4
- package/dist/cli-chunks/{session-D7nmqMiy.cjs → session-DUM4KQHQ.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/mock-host/index.html +1 -0
- package/dist/devtools/mock-host/main.js +258 -20
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/templates/vue3-vite-ts/README.md.ejs +4 -8
- package/dist/vite.cjs.js +1 -1
- package/dist/vite.esm.js +1 -1
- package/package.json +4 -3
- package/skill/SKILL.md +35 -47
- package/skill/references/api-root.md +6 -2
- package/skill/references/cli.md +68 -237
- package/skill/references/recipes.md +20 -28
- package/skill/scripts/sync-references.mjs +33 -53
- package/skill/skill.json +4 -4
- package/types/protocol/dev-session.d.ts +25 -0
- package/dist/cli-chunks/dev-CSjs2OYB.cjs +0 -1122
package/skill/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hb-sdk
|
|
3
|
-
description: Uses @heybox/hb-sdk and its hb-sdk CLI
|
|
3
|
+
description: Uses @heybox/hb-sdk and its hb-sdk CLI to build, debug, review, and publish workshop mini-programs for the Heybox App. Use for public SDK APIs, lifecycle events, hb-sdk create/dev/login/doctor, browser Mock and device debugging, or publishing checks. Don't use for private credentials, internal Heybox client protocols, private package paths, or non-Heybox SDKs.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# hb-sdk Agent Procedure
|
|
@@ -9,19 +9,19 @@ Apply these instructions when writing, reviewing, or debugging code that consume
|
|
|
9
9
|
|
|
10
10
|
## Step 1: Classify the task
|
|
11
11
|
|
|
12
|
-
1. If the task is
|
|
12
|
+
1. If the task is workshop mini-program business code, use the root package import path `@heybox/hb-sdk`.
|
|
13
13
|
2. If the task is parent-container runtime, bridge-server, protocol contract, or `@heybox/hb-sdk-runtime` work, use `@heybox/hb-sdk/protocol` only for shared constants and types.
|
|
14
|
-
3. If the task is project scaffolding, local
|
|
14
|
+
3. If the task is project scaffolding, local startup, browser Mock, device debugging, CLI login, Agent Skill diagnosis, or CLI troubleshooting, use the `hb-sdk` CLI workflow.
|
|
15
15
|
4. If the task is reviewing a mini-program for submission, listing, audit, publishing, content compliance, data/privacy compliance, runtime quality, or icon/cover design requirements, use the online publishing rules workflow.
|
|
16
16
|
5. If the task asks for direct login-state extraction, cookies, tokens, raw Heybox client protocols, or internal hb-sdk package paths, refuse that approach and use the public SDK or CLI boundary instead.
|
|
17
|
-
6. If the task is not about Heybox
|
|
17
|
+
6. If the task is not about Heybox workshop mini-program SDK usage, CLI usage, protocol contracts, or listing/audit/compliance review, do not apply this skill.
|
|
18
18
|
|
|
19
19
|
## Step 2: Load only the needed reference
|
|
20
20
|
|
|
21
21
|
1. For root SDK imports, singleton usage, modules, and errors, read `references/api-root.md`.
|
|
22
|
-
2. For host/runtime protocol contracts only, read `references/api-protocol.md`. Do not use this reference
|
|
22
|
+
2. For host/runtime protocol contracts only, read `references/api-protocol.md`. Do not use this reference for mini-program business code.
|
|
23
23
|
3. For common business flows, read `references/recipes.md`.
|
|
24
|
-
4. For CLI commands, local
|
|
24
|
+
4. For CLI commands, local debugging, device debugging, CLI login, Agent Skill doctor, and update reminders, read `references/cli.md`.
|
|
25
25
|
5. For allowed/forbidden capabilities and security boundaries, read `references/safety-boundaries.md`.
|
|
26
26
|
6. For Vite build manifest behavior, read `references/api-root.md` and `references/safety-boundaries.md`.
|
|
27
27
|
7. For generated documentation provenance and deeper API lookup paths, read `references/llms-index.md`.
|
|
@@ -36,71 +36,59 @@ Apply these instructions when writing, reviewing, or debugging code that consume
|
|
|
36
36
|
3. Never import from internal hb-sdk implementation paths; only use the documented package entrypoints.
|
|
37
37
|
4. Prefer named imports for focused code and the default `hbSDK` singleton for compact page-level examples.
|
|
38
38
|
|
|
39
|
-
## Step 4: Implement
|
|
39
|
+
## Step 4: Implement workshop mini-program code
|
|
40
40
|
|
|
41
41
|
1. Call `await ready()` or `await hbSDK.ready()` near page startup when the page uses SDK capabilities.
|
|
42
42
|
2. Use `user.getInfo()` to read current login state without triggering login.
|
|
43
43
|
3. Use `auth.login()` only when the user action requires login.
|
|
44
|
-
4. Handle `HbMiniProgramSDKError` for
|
|
44
|
+
4. Handle `HbMiniProgramSDKError` for SDK initialization and capability failures.
|
|
45
45
|
5. Handle `HbMiniProgramNetworkError` separately when HTTP completed but `validateStatus` rejected the status.
|
|
46
46
|
6. Cancel lifecycle/event subscriptions returned by `on()` when the page or component unmounts.
|
|
47
|
-
7.
|
|
47
|
+
7. Use the default SDK instance exposed by the root package.
|
|
48
48
|
|
|
49
49
|
## Step 5: Use CLI workflows
|
|
50
50
|
|
|
51
|
-
1. Use `hb-sdk create <project-name>` to scaffold a
|
|
52
|
-
2. Use `hb-sdk dev` for
|
|
53
|
-
3. Use
|
|
54
|
-
4. Use `hb-sdk
|
|
55
|
-
5. Use `hb-sdk remote
|
|
56
|
-
6. Use `hb-sdk remote
|
|
57
|
-
7. Use `hb-sdk remote
|
|
58
|
-
8. Use `hb-sdk remote deploy --
|
|
59
|
-
9.
|
|
60
|
-
10.
|
|
61
|
-
11.
|
|
62
|
-
12.
|
|
63
|
-
13.
|
|
64
|
-
14.
|
|
65
|
-
15. Use `--json` for script consumption of `hb-sdk remote` commands. With `--json`, stdout must contain exactly one JSON object; progress, warnings, update reminders, and verbose diagnostics must not pollute stdout.
|
|
66
|
-
16. Do not expect custom base URLs to affect `hb-sdk doctor`, npm latest checks, or mock-host `network.request()`.
|
|
67
|
-
17. Use the Mock runtime host's "在 Mac 版 APP 中启动" button for Mac App debugging, or the "Mobile App" QR code after selecting a LAN interface for phone App debugging; these entrypoints remain available in anonymous mode. The phone must be on the same LAN and use a Heybox App version that supports the mini-program dev shell.
|
|
68
|
-
18. Use `--port`, `--mock-port`, and `--no-open` when the default Vite/mock ports or browser opening behavior need to be controlled.
|
|
69
|
-
19. Use `hb-sdk login`, `hb-sdk login status`, and `hb-sdk login clear` only for the CLI's own Heybox auth cache. Keep `hb-sdk login` top-level; it is not a remote mini-program command.
|
|
70
|
-
20. Treat `selectedEntity` in the CLI auth cache as a non-authoritative hint snapshot only. Every remote command must use the server-side current entity as the source of truth.
|
|
71
|
-
21. Use `hb-sdk doctor` to diagnose whether the local `hb-sdk` skill matches the installed SDK and remote latest skill metadata.
|
|
72
|
-
22. Do not use `hb-sdk doctor` to auto-install skills; when installation or refresh is needed, tell the user to run `npx skills add https://open.xiaoheihe.cn/agent-skills/hb-sdk`.
|
|
73
|
-
23. If doctor reports `SDK_MISMATCH`, upgrade `@heybox/hb-sdk@latest` before reinstalling the skill.
|
|
74
|
-
24. Do not treat CLI login cache as iframe SDK login state; it does not change `auth.login()`, `user.getInfo()`, `network.request()`, or mock-user behavior.
|
|
75
|
-
25. Keep the CLI and mock runtime under `@heybox/hb-sdk`; do not create or revive a separate mock runtime package.
|
|
76
|
-
26. Do not pass `mini_program_id` or `entity_id` as general CLI flags or environment variables; the mini-program id must come from `package.json.heybox.miniProgramId`, and the entity must come from the server-side current entity.
|
|
77
|
-
27. Do not import deploy / upload internals from outside the CLI; the only externally consumable subpath for publish-pipeline helpers is `@heybox/hb-sdk/miniapp-publish`.
|
|
51
|
+
1. Use `hb-sdk create <project-name>` to scaffold a workshop mini-program.
|
|
52
|
+
2. Use `hb-sdk dev` for browser, Mac App, or mobile App debugging. These entries remain available without CLI login or project binding, but managed capabilities are denied by default.
|
|
53
|
+
3. Use `--port`, `--mock-port`, and `--no-open` when the default local ports or browser opening behavior need to be controlled.
|
|
54
|
+
4. Use `hb-sdk login`, `hb-sdk login status`, and `hb-sdk login clear` only for development and publishing commands. This login does not change the mini-program user's login state.
|
|
55
|
+
5. Use `hb-sdk remote entity current` to confirm the current developer account and `hb-sdk remote entity switch <entity-id>` to change it before remote operations.
|
|
56
|
+
6. Use `hb-sdk remote create` to create and bind a mini-program; use `hb-sdk remote bind <mini-program-id>` to bind an existing manageable mini-program.
|
|
57
|
+
7. Use `hb-sdk remote info`, `hb-sdk remote list`, `hb-sdk remote access`, `hb-sdk remote versions`, `hb-sdk remote preview <version>`, and `hb-sdk remote allowlist ...` for remote inspection and preview management.
|
|
58
|
+
8. Use `hb-sdk remote deploy --release-note <text>` to check, build, upload, and submit the current project for audit. Do not recommend the removed top-level `hb-sdk deploy` alias.
|
|
59
|
+
9. After approval, use `hb-sdk remote release <version>` for manual release or `--auto-publish` when an eligible low-risk version should release automatically.
|
|
60
|
+
10. Treat approval, release, and public display as separate states. Do not promise square, search, or recommendation visibility after release.
|
|
61
|
+
11. Use `hb-sdk remote withdraw`, `hb-sdk remote take-down`, `hb-sdk remote reopen`, and square visibility commands only after showing the target and obtaining required confirmation.
|
|
62
|
+
12. Use `--json` for script consumption and `--verbose` only when concise output is insufficient for diagnosis.
|
|
63
|
+
13. Use `hb-sdk doctor` to diagnose whether the local Skill matches the installed SDK; follow its output to install or refresh the Skill.
|
|
64
|
+
14. Do not print or expose cookies, tokens, private headers, or other credentials.
|
|
78
65
|
|
|
79
66
|
## Step 6: Preserve capability boundaries
|
|
80
67
|
|
|
81
|
-
For
|
|
68
|
+
For workshop mini-program business code:
|
|
82
69
|
|
|
83
70
|
1. Do not read or request tokens, cookies, phone numbers, or private credentials from the SDK.
|
|
84
71
|
2. Do not expose raw share protocol fields, JS callbacks, activity reporting, custom buttons, post publishing, or upload-only flows.
|
|
85
72
|
3. Do not use unsupported storage operations such as delete, clear, info listing, or global client storage access.
|
|
86
|
-
4.
|
|
87
|
-
5. Do not
|
|
73
|
+
4. Use only the public `network.request` configuration.
|
|
74
|
+
5. Do not use private package paths or client protocols.
|
|
88
75
|
6. Build artifacts may include `dist/manifest.json`; business code should not fetch a deployed manifest directly because it is not a CDN asset.
|
|
89
76
|
|
|
90
77
|
For CLI and local development:
|
|
91
78
|
|
|
92
79
|
1. Do not print, persist in templates, or pass through pkey, cookies, tokens, or private credentials.
|
|
93
|
-
2. Do not use `hb-sdk login` as a workaround for
|
|
94
|
-
3.
|
|
95
|
-
4. Keep the Vite `miniappManifest()` plugin enabled
|
|
96
|
-
5.
|
|
97
|
-
6.
|
|
80
|
+
2. Do not use `hb-sdk login` as a workaround for mini-program user authentication.
|
|
81
|
+
3. Use the built-in local debugging page instead of creating another browser Mock.
|
|
82
|
+
4. Keep the Vite `miniappManifest()` plugin enabled.
|
|
83
|
+
5. Treat Dev Context permission changes as persistent local overrides, not online configuration changes. `hb-sdk` scopes them by real project path and `miniProgramId`, restores them after page refresh or `hb-sdk dev` restart, and clears them only after an explicit reset successfully refetches remote permissions. A regenerated Mobile App QR code may carry only a `dev_context_url` backed by a 256-bit token that expires after 5 minutes; it must not embed a permission snapshot.
|
|
84
|
+
6. Require the Runtime Host to fetch the immutable Dev Session snapshot before startup. Dev Session `network.request` must use the token-bound local proxy, never a native credential adapter, and must force `useOfficialDomain: false`.
|
|
85
|
+
7. Do not treat the legacy `dev_network_request` query as authorization or as a fallback. This Web-only flow must preserve existing Android/iOS URL pass-through behavior without requiring client changes.
|
|
98
86
|
|
|
99
87
|
For host/runtime/protocol-maintenance code:
|
|
100
88
|
|
|
101
89
|
1. Use `@heybox/hb-sdk/protocol` for shared constants and type contracts.
|
|
102
|
-
2. Keep raw protocol details inside the host/runtime boundary; do not leak them into app-facing SDK examples or
|
|
103
|
-
3.
|
|
90
|
+
2. Keep raw protocol details inside the host/runtime boundary; do not leak them into app-facing SDK examples or workshop mini-program business code.
|
|
91
|
+
3. Preserve compatibility with existing SDK clients.
|
|
104
92
|
|
|
105
93
|
## Step 7: Validate changes
|
|
106
94
|
|
|
@@ -111,7 +99,7 @@ For host/runtime/protocol-maintenance code:
|
|
|
111
99
|
3. When preparing a package release, run `pnpm --filter @heybox/hb-sdk run release:prepare -- --bump patch` or `pnpm --filter @heybox/hb-sdk run release:prepare -- --version <x.y.z>`. The release assistant updates both package versions, inserts `packages/hb-sdk/CHANGELOG.md`, and runs `check:changelog`. Use `--ai-command "<command>"` or `HB_SDK_CHANGELOG_AI_COMMAND` when an AI writer should rewrite the Conventional Commit draft. Review the entry for Mini-program developers and Host/Runtime integration maintainers, and do not expose Runtime internal adapter, state-machine, or security-policy details.
|
|
112
100
|
4. When modifying this repo's source skill at `packages/hb-sdk/skill` and preparing distributable artifacts, also run:
|
|
113
101
|
- `node packages/hb-sdk/skill/scripts/package-skill.mjs`
|
|
114
|
-
5. When modifying CLI,
|
|
102
|
+
5. When modifying CLI, local debugging, package exports, or package dependency direction, also run:
|
|
115
103
|
- `pnpm --filter @heybox/hb-sdk run check:boundary`
|
|
116
104
|
- `pnpm --filter @heybox/hb-sdk run test:unit`
|
|
117
105
|
6. Inspect the generated zip before distribution:
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
## Package metadata
|
|
20
20
|
|
|
21
21
|
- Package: `@heybox/hb-sdk`
|
|
22
|
-
- Version at generation time: `0.6.
|
|
22
|
+
- Version at generation time: `0.6.6-alpha.0`
|
|
23
23
|
- Public root export: `@heybox/hb-sdk`
|
|
24
24
|
- Protocol export: `@heybox/hb-sdk/protocol`
|
|
25
25
|
- Vite plugin export: `@heybox/hb-sdk/vite`
|
|
@@ -452,7 +452,11 @@ npm run dev
|
|
|
452
452
|
|
|
453
453
|
调试页会通过 iframe 加载本地页面并补齐小程序 bridge 环境。`hb-sdk dev` 的基础启动只依赖本地页面地址:即使项目未绑定、CLI 未登录或远端暂时不可用,浏览器 Mock、Mac 启动协议和手机二维码也会继续生成,真机 dev shell 以匿名本地沙箱加载 `mini_url`,不会把公开 `detail` 查询作为启动门禁。项目已绑定时会限时 3 秒读取远端 dev context;成功后 Mock Host 用真实 Runtime 权限快照初始化本地模拟,失败或超时则显示脱敏警告,并默认拒绝 `network.request` 等受管能力。需要定位降级原因时可使用 `hb-sdk dev --verbose`;详细错误只写入本地调试日志,其中 URL 用户名、密码和敏感 query/hash 会被遮蔽,不会进入 LAN bootstrap。
|
|
454
454
|
|
|
455
|
-
Mock Host
|
|
455
|
+
Mock Host 可以切换开发会话的 `network.request` 权限,不会重建 iframe,因此不影响 Vite HMR。权限覆盖会持久化到 `hb-sdk` 的用户级本地缓存,并按项目真实路径与启动时绑定的 `miniProgramId` 隔离;即使远端权限暂时读取失败,也会继续使用已知绑定 scope。刷新调试页或重启 `hb-sdk dev` 后仍会恢复,直到点击“恢复初始权限”。未绑定项目使用独立匿名 scope,之后绑定小程序时不会继承匿名覆盖。调试页会分别展示远端基线与本地覆盖;多个调试页或进程写入同一 scope 时以最后成功写入的完整配置为准,不提供冲突合并。缓存写入失败时当前页面仍立即生效,同时明确提示刷新或重启后会丢失。已绑定项目重置时会先重新读取远端权限,读取失败则保留当前覆盖并显示错误;匿名项目直接清除本地覆盖。
|
|
456
|
+
|
|
457
|
+
切换或恢复权限时,Mobile App 二维码会同步重生成,重新扫码后的局域网页面使用同一开发权限。二维码不会携带权限内容,只携带指向本机 Mock Host 的 `dev_context_url`;该 URL 使用 256-bit 随机 token,5 分钟后失效,调试页会在会话到期时自动生成新二维码。Runtime Host 会在创建小程序 Runtime 前拉取 token 对应的不可变权限快照,并校验开发页面 origin、会话期限和快照结构。
|
|
458
|
+
|
|
459
|
+
Dev Session 中的 `network.request` 通过同一 token 绑定的本地代理转发,不会调用黑盒原生凭据 adapter,也不会携带 Cookie、pkey 等宿主凭据;`useOfficialDomain` 固定为 `false`。旧 `dev_network_request` query 不再提供授权,不能作为 Dev Session 快照的降级或覆盖入口。此链路只调整 Web 侧 CLI、Mock Host 和 Runtime Host,Android/iOS 客户端继续透传 URL,无需修改。官方域名权限只读取线上快照,本地设置不会修改线上权限;调试页会对比已读取的线上快照,提示本地放开但上线后会返回 `PERMISSION_DENIED` 的差异。真实容器加载开发 `mini_url` 前会提示“即将打开未经验证的开发网页。该页面可能由本机或局域网服务提供,请确认来源可信后继续。”,用户确认后才继续加载。Codex、VSCode 等内嵌浏览器可能无法唤起系统 APP;遇到这种情况时,请在系统浏览器中打开同一个调试页后重试。
|
|
456
460
|
|
|
457
461
|
在未使用脚手架的 Vite 项目中,可以把命令加到 `package.json`:
|
|
458
462
|
|