snapshot-checker 0.8.1 → 0.8.5
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 +146 -29
- package/dist/src/cli.d.ts +10 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +106 -379
- package/dist/src/cli.js.map +1 -1
- package/dist/{commands → src/commands}/report-user.d.ts +1 -1
- package/dist/src/commands/report-user.d.ts.map +1 -0
- package/dist/{commands → src/commands}/report-user.js +2 -2
- package/dist/src/commands/report-user.js.map +1 -0
- package/dist/{commands → src/commands}/report.d.ts +1 -1
- package/dist/src/commands/report.d.ts.map +1 -0
- package/dist/{commands → src/commands}/report.js +2 -2
- package/dist/src/commands/report.js.map +1 -0
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/cli/env.d.ts +9 -0
- package/dist/src/lib/cli/env.d.ts.map +1 -0
- package/dist/src/lib/cli/env.js +25 -0
- package/dist/src/lib/cli/env.js.map +1 -0
- package/dist/src/lib/cli/errors.d.ts +13 -0
- package/dist/src/lib/cli/errors.d.ts.map +1 -0
- package/dist/src/lib/cli/errors.js +23 -0
- package/dist/src/lib/cli/errors.js.map +1 -0
- package/dist/src/lib/cli/fatal.d.ts +2 -0
- package/dist/src/lib/cli/fatal.d.ts.map +1 -0
- package/dist/src/lib/cli/fatal.js +15 -0
- package/dist/src/lib/cli/fatal.js.map +1 -0
- package/dist/src/lib/cli/global_options.d.ts +4 -0
- package/dist/src/lib/cli/global_options.d.ts.map +1 -0
- package/dist/src/lib/cli/global_options.js +27 -0
- package/dist/src/lib/cli/global_options.js.map +1 -0
- package/dist/src/lib/cli/output.d.ts +26 -0
- package/dist/src/lib/cli/output.d.ts.map +1 -0
- package/dist/src/lib/cli/output.js +83 -0
- package/dist/src/lib/cli/output.js.map +1 -0
- package/dist/src/lib/cli/pkg_runtime.d.ts +2 -0
- package/dist/src/lib/cli/pkg_runtime.d.ts.map +1 -0
- package/dist/src/lib/cli/pkg_runtime.js +4 -0
- package/dist/src/lib/cli/pkg_runtime.js.map +1 -0
- package/dist/src/lib/cli/shell_identifiers.d.ts +24 -0
- package/dist/src/lib/cli/shell_identifiers.d.ts.map +1 -0
- package/dist/src/lib/cli/shell_identifiers.js +67 -0
- package/dist/src/lib/cli/shell_identifiers.js.map +1 -0
- package/dist/src/lib/cli/shell_params.d.ts +25 -0
- package/dist/src/lib/cli/shell_params.d.ts.map +1 -0
- package/dist/src/lib/cli/shell_params.js +61 -0
- package/dist/src/lib/cli/shell_params.js.map +1 -0
- package/dist/src/lib/cli/validation.d.ts +8 -0
- package/dist/src/lib/cli/validation.d.ts.map +1 -0
- package/dist/src/lib/cli/validation.js +44 -0
- package/dist/src/lib/cli/validation.js.map +1 -0
- package/dist/src/lib/{version.d.ts → cli/version.d.ts} +6 -2
- package/dist/src/lib/cli/version.d.ts.map +1 -0
- package/dist/src/lib/{version.js → cli/version.js} +25 -6
- package/dist/src/lib/cli/version.js.map +1 -0
- package/dist/src/lib/command_suite/globals.d.ts +8 -0
- package/dist/src/lib/command_suite/globals.d.ts.map +1 -0
- package/dist/src/lib/command_suite/globals.js +11 -0
- package/dist/src/lib/command_suite/globals.js.map +1 -0
- package/dist/src/lib/command_suite/runner.d.ts +24 -0
- package/dist/src/lib/command_suite/runner.d.ts.map +1 -0
- package/dist/src/lib/command_suite/runner.js +27 -0
- package/dist/src/lib/command_suite/runner.js.map +1 -0
- package/dist/src/lib/execution/command_suite_modules.d.ts +5 -0
- package/dist/src/lib/execution/command_suite_modules.d.ts.map +1 -0
- package/dist/src/lib/execution/command_suite_modules.js +12 -0
- package/dist/src/lib/execution/command_suite_modules.js.map +1 -0
- package/dist/src/lib/execution/execution_paths.d.ts +5 -0
- package/dist/src/lib/execution/execution_paths.d.ts.map +1 -0
- package/dist/src/lib/execution/execution_paths.js +13 -0
- package/dist/src/lib/execution/execution_paths.js.map +1 -0
- package/dist/src/lib/execution/output_validate.d.ts +31 -0
- package/dist/src/lib/execution/output_validate.d.ts.map +1 -0
- package/dist/src/lib/execution/output_validate.js +119 -0
- package/dist/src/lib/execution/output_validate.js.map +1 -0
- package/dist/src/lib/execution/plan.d.ts +69 -0
- package/dist/src/lib/execution/plan.d.ts.map +1 -0
- package/dist/src/lib/execution/plan.js +347 -0
- package/dist/src/lib/execution/plan.js.map +1 -0
- package/dist/src/lib/execution/register_execution.d.ts +4 -0
- package/dist/src/lib/execution/register_execution.d.ts.map +1 -0
- package/dist/src/lib/execution/register_execution.js +151 -0
- package/dist/src/lib/execution/register_execution.js.map +1 -0
- package/dist/src/lib/execution/run_manifest.d.ts +65 -0
- package/dist/src/lib/execution/run_manifest.d.ts.map +1 -0
- package/dist/src/lib/execution/run_manifest.js +324 -0
- package/dist/src/lib/execution/run_manifest.js.map +1 -0
- package/dist/src/lib/preflight/preflight.d.ts.map +1 -0
- package/dist/src/lib/{preflight.js → preflight/preflight.js} +11 -15
- package/dist/src/lib/preflight/preflight.js.map +1 -0
- package/dist/src/lib/preflight/preflight_check.d.ts +34 -0
- package/dist/src/lib/preflight/preflight_check.d.ts.map +1 -0
- package/dist/src/lib/preflight/preflight_check.js +406 -0
- package/dist/src/lib/preflight/preflight_check.js.map +1 -0
- package/dist/src/lib/preflight/register_preflight.d.ts +4 -0
- package/dist/src/lib/preflight/register_preflight.d.ts.map +1 -0
- package/dist/src/lib/preflight/register_preflight.js +43 -0
- package/dist/src/lib/preflight/register_preflight.js.map +1 -0
- package/dist/src/lib/preflight/shell_exec.d.ts +12 -0
- package/dist/src/lib/preflight/shell_exec.d.ts.map +1 -0
- package/dist/src/lib/preflight/shell_exec.js +25 -0
- package/dist/src/lib/preflight/shell_exec.js.map +1 -0
- package/dist/src/lib/{app_spec.d.ts → report/app.d.ts} +1 -1
- package/dist/src/lib/{app_spec.d.ts.map → report/app.d.ts.map} +1 -1
- package/dist/src/lib/{app_spec.js → report/app.js} +1 -1
- package/dist/src/lib/{app_spec.js.map → report/app.js.map} +1 -1
- package/dist/src/lib/{report_scenario.d.ts → report/command_suite.d.ts} +8 -7
- package/dist/src/lib/report/command_suite.d.ts.map +1 -0
- package/dist/src/lib/{report_scenario.js → report/command_suite.js} +48 -20
- package/dist/src/lib/report/command_suite.js.map +1 -0
- package/dist/src/lib/{perf_decode.d.ts → report/decode.d.ts} +3 -2
- package/dist/src/lib/report/decode.d.ts.map +1 -0
- package/dist/src/lib/{perf_decode.js → report/decode.js} +5 -4
- package/dist/src/lib/report/decode.js.map +1 -0
- package/dist/src/lib/{format.d.ts → report/format.d.ts} +1 -3
- package/dist/src/lib/report/format.d.ts.map +1 -0
- package/dist/src/lib/{format.js → report/format.js} +2 -8
- package/dist/src/lib/report/format.js.map +1 -0
- package/dist/src/lib/report/hdc.d.ts.map +1 -0
- package/dist/src/lib/report/hdc.js.map +1 -0
- package/dist/src/lib/{host_commands.d.ts → report/host.d.ts} +2 -14
- package/dist/src/lib/report/host.d.ts.map +1 -0
- package/dist/src/lib/report/host.js +57 -0
- package/dist/src/lib/report/host.js.map +1 -0
- package/dist/src/lib/{paths.d.ts → report/paths.d.ts} +7 -4
- package/dist/src/lib/report/paths.d.ts.map +1 -0
- package/dist/src/lib/{paths.js → report/paths.js} +22 -12
- package/dist/src/lib/report/paths.js.map +1 -0
- package/dist/src/lib/{pipeline.d.ts → report/pipeline.d.ts} +2 -2
- package/dist/src/lib/report/pipeline.d.ts.map +1 -0
- package/dist/src/lib/{pipeline.js → report/pipeline.js} +2 -2
- package/dist/src/lib/report/pipeline.js.map +1 -0
- package/dist/src/lib/{presets.d.ts → report/presets.d.ts} +6 -6
- package/dist/src/lib/report/presets.d.ts.map +1 -0
- package/dist/src/lib/{presets.js → report/presets.js} +7 -7
- package/dist/src/lib/{presets.js.map → report/presets.js.map} +1 -1
- package/dist/src/logger.d.ts +5 -3
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +20 -19
- package/dist/src/logger.js.map +1 -1
- package/package.json +11 -13
- package/skills/snapshot-checker/SKILL.md +125 -0
- package/skills/snapshot-checker/agents/openai.yaml +4 -0
- package/skills/snapshot-checker/references/capture_profile.md +72 -0
- package/skills/snapshot-checker/references/cli_options.md +87 -0
- package/skills/snapshot-checker/references/error_codes.md +79 -0
- package/skills/snapshot-checker/references/output_layout.md +42 -0
- package/skills/snapshot-checker/references/report_vs_report_user.md +35 -0
- package/dist/commands/forkall.d.ts +0 -44
- package/dist/commands/forkall.d.ts.map +0 -1
- package/dist/commands/forkall.js +0 -322
- package/dist/commands/forkall.js.map +0 -1
- package/dist/commands/report-user.d.ts.map +0 -1
- package/dist/commands/report-user.js.map +0 -1
- package/dist/commands/report.d.ts.map +0 -1
- package/dist/commands/report.js.map +0 -1
- package/dist/demos/context-demo.d.ts +0 -10
- package/dist/demos/context-demo.d.ts.map +0 -1
- package/dist/demos/context-demo.js +0 -69
- package/dist/demos/context-demo.js.map +0 -1
- package/dist/demos/mac-example.d.ts +0 -21
- package/dist/demos/mac-example.d.ts.map +0 -1
- package/dist/demos/mac-example.js +0 -37
- package/dist/demos/mac-example.js.map +0 -1
- package/dist/demos/timeout-demo.d.ts +0 -5
- package/dist/demos/timeout-demo.d.ts.map +0 -1
- package/dist/demos/timeout-demo.js +0 -35
- package/dist/demos/timeout-demo.js.map +0 -1
- package/dist/src/bin.d.ts +0 -3
- package/dist/src/bin.d.ts.map +0 -1
- package/dist/src/bin.js +0 -57
- package/dist/src/bin.js.map +0 -1
- package/dist/src/executor.d.ts +0 -6
- package/dist/src/executor.d.ts.map +0 -1
- package/dist/src/executor.js +0 -4
- package/dist/src/executor.js.map +0 -1
- package/dist/src/group_specs.d.ts +0 -10
- package/dist/src/group_specs.d.ts.map +0 -1
- package/dist/src/group_specs.js +0 -27
- package/dist/src/group_specs.js.map +0 -1
- package/dist/src/lib/format.d.ts.map +0 -1
- package/dist/src/lib/format.js.map +0 -1
- package/dist/src/lib/hdc.d.ts.map +0 -1
- package/dist/src/lib/hdc.js.map +0 -1
- package/dist/src/lib/host_commands.d.ts.map +0 -1
- package/dist/src/lib/host_commands.js +0 -108
- package/dist/src/lib/host_commands.js.map +0 -1
- package/dist/src/lib/paths.d.ts.map +0 -1
- package/dist/src/lib/paths.js.map +0 -1
- package/dist/src/lib/perf_decode.d.ts.map +0 -1
- package/dist/src/lib/perf_decode.js.map +0 -1
- package/dist/src/lib/pipeline.d.ts.map +0 -1
- package/dist/src/lib/pipeline.js.map +0 -1
- package/dist/src/lib/preflight.d.ts.map +0 -1
- package/dist/src/lib/preflight.js.map +0 -1
- package/dist/src/lib/presets.d.ts.map +0 -1
- package/dist/src/lib/programmatic.d.ts +0 -30
- package/dist/src/lib/programmatic.d.ts.map +0 -1
- package/dist/src/lib/programmatic.js +0 -40
- package/dist/src/lib/programmatic.js.map +0 -1
- package/dist/src/lib/report_scenario.d.ts.map +0 -1
- package/dist/src/lib/report_scenario.js.map +0 -1
- package/dist/src/lib/scenario.d.ts +0 -60
- package/dist/src/lib/scenario.d.ts.map +0 -1
- package/dist/src/lib/scenario.js +0 -85
- package/dist/src/lib/scenario.js.map +0 -1
- package/dist/src/lib/version.d.ts.map +0 -1
- package/dist/src/lib/version.js.map +0 -1
- package/dist/src/run_command.d.ts +0 -69
- package/dist/src/run_command.d.ts.map +0 -1
- package/dist/src/run_command.js +0 -367
- package/dist/src/run_command.js.map +0 -1
- package/dist/src/run_groups.d.ts +0 -39
- package/dist/src/run_groups.d.ts.map +0 -1
- package/dist/src/run_groups.js +0 -154
- package/dist/src/run_groups.js.map +0 -1
- package/dist/src/runners/background_executor.d.ts +0 -3
- package/dist/src/runners/background_executor.d.ts.map +0 -1
- package/dist/src/runners/background_executor.js +0 -3
- package/dist/src/runners/background_executor.js.map +0 -1
- package/dist/src/runners/builtin_runner.d.ts +0 -8
- package/dist/src/runners/builtin_runner.d.ts.map +0 -1
- package/dist/src/runners/builtin_runner.js +0 -66
- package/dist/src/runners/builtin_runner.js.map +0 -1
- package/dist/src/runners/embed_runner.d.ts +0 -8
- package/dist/src/runners/embed_runner.d.ts.map +0 -1
- package/dist/src/runners/embed_runner.js +0 -155
- package/dist/src/runners/embed_runner.js.map +0 -1
- package/dist/src/runners/index.d.ts +0 -7
- package/dist/src/runners/index.d.ts.map +0 -1
- package/dist/src/runners/index.js +0 -5
- package/dist/src/runners/index.js.map +0 -1
- package/dist/src/runners/platform_shell_executor.d.ts +0 -71
- package/dist/src/runners/platform_shell_executor.d.ts.map +0 -1
- package/dist/src/runners/platform_shell_executor.js +0 -158
- package/dist/src/runners/platform_shell_executor.js.map +0 -1
- package/dist/src/runners/shell_runner.d.ts +0 -8
- package/dist/src/runners/shell_runner.d.ts.map +0 -1
- package/dist/src/runners/shell_runner.js +0 -167
- package/dist/src/runners/shell_runner.js.map +0 -1
- package/dist/src/runners/types.d.ts +0 -27
- package/dist/src/runners/types.d.ts.map +0 -1
- package/dist/src/runners/types.js +0 -2
- package/dist/src/runners/types.js.map +0 -1
- package/dist/src/types.d.ts +0 -172
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -175
- package/dist/src/types.js.map +0 -1
- /package/dist/src/lib/{preflight.d.ts → preflight/preflight.d.ts} +0 -0
- /package/dist/src/lib/{hdc.d.ts → report/hdc.d.ts} +0 -0
- /package/dist/src/lib/{hdc.js → report/hdc.js} +0 -0
package/README.md
CHANGED
|
@@ -8,14 +8,38 @@
|
|
|
8
8
|
|
|
9
9
|
- `report` 默认 `--trace-from` 由 `hitrace` 改为 **`mix`**(采集默认带 `--raw-data`,analysis 默认预处理 hitrace 并使用 **perfFirst** sidecar)。
|
|
10
10
|
- 日志格式统一为行首 `[ISO8601] {级别} {正文}`(无 consola 颜色)。
|
|
11
|
-
- 依赖升级:`hiperf_txt_parser`
|
|
11
|
+
- 依赖升级:`hiperf_txt_parser` 2.0、`hm-pt-core` 1.0、`hmtrace-parser` 0.8;analysis trace 解码改由 pipeline 编排;公共类型与 trace 机制自 `hm-pt-core` 导入。
|
|
12
12
|
- 若需与 0.6.x 相同默认行为,显式传入 `--trace-from hitrace`。
|
|
13
13
|
|
|
14
|
+
**0.8.x Agent-friendly 变更(相对早期 0.8)**
|
|
15
|
+
|
|
16
|
+
- **统一 CLI 入口**:npm 与 pkg 独立二进制共用 `src/cli.ts`,能力一致(含 `report-user`、`--list`、`--dry-run`、顶层闭环命令)。
|
|
17
|
+
- **默认 fail-fast**:命令套件执行遇错即停;需继续时使用 `--continue-on-error`(`--stop-on-error` 为同义显式写法)。失败时仍会补跑 `restore` 组。
|
|
18
|
+
- **参数校验**:`report` / `report-user` / `plan` 要求非空 `--app`;未知 `--group` 返回退出码 `2` 与稳定错误码(如 `ERROR_MISSING_APP`、`UNKNOWN_GROUP`)。
|
|
19
|
+
- **Shell 安全边界**:进入 Shell 或重定向的参数经统一校验——标识符白名单(`--app`、`--ability`、`--log-key`、`--hitrace-tag`、`--hdc-target` 等 → `INVALID_IDENTIFIER`);数值纯整数解析(`--duration`、`--buffer-size` → `INVALID_NUMERIC`);路径拒绝 Shell 元字符(`--output-dir`、`--hstack-tool-path`、`--sourcemap-dir` → `INVALID_PATH`)。
|
|
20
|
+
- **Plan 完整性**:`plan.json` 含 `commands_digest` 与 `execution_options`(如 `ignorePlatform`);`apply` 校验存储 commands 与重新生成 commands 的双摘要,并**始终**采用 plan 保存的执行选项(与 plan 不一致的 `apply --ignore-platform` 返回 `PLAN_OPTION_OVERRIDE`,需重新 `plan`);`0.x` 版本兼容比较 major+minor。
|
|
21
|
+
- **机器可读输出**:全局 `--output-format json`(与采集目录 `--output-dir` 无关);json 模式下 **stdout 仅 JSON**,日志写 **stderr**。
|
|
22
|
+
- **顶层闭环命令**:`preflight`、`plan`、`apply`、`status`、`validate`(详见下文「CLI 总览」)。
|
|
23
|
+
- **环境变量**:`HYPER_STARTUP_CHECKER_LOG_LEVEL`、`HYPER_STARTUP_CHECKER_BUNDLED_VERSION`(旧名 `SNAPSHOT_CHECKER_*` 仍可读)。
|
|
24
|
+
- **CommandSuite 命名**(依赖 `hmcommand-runner@^1.3.0`):原 `Scenario*` API 与 JSON 字段 `scenario` / `scenario_options` 分别改为 `CommandSuite*`、`command_suite` / `command_suite_options`;`plan` / `preflight` 使用 `--command-suite`。
|
|
25
|
+
- **命令套件源码位置**:`report` / `report-user` 定义迁至 `src/commands/`,CLI 静态注册(不再扫描目录动态加载)。
|
|
26
|
+
|
|
14
27
|
**前置条件**
|
|
15
28
|
|
|
16
29
|
- **Node.js** ≥ 18。
|
|
17
30
|
- PATH 中可用 **`hdc`**,并已连接目标设备。
|
|
18
|
-
- 本机 analysis 依赖 **`hiperf_txt_parser` ^1.
|
|
31
|
+
- 本机 analysis 依赖 **`hiperf_txt_parser` ^2.0**、**`hm-pt-core` ^1.0**、**`hmtrace-parser` ^0.8**(随 `npm install` 安装):hitrace 预处理与索引由 hmtrace 构建,公共类型与 trace 机制由 hm-pt-core 提供,样本级并行解码与 hitrace 合并由 hiperf 完成。
|
|
32
|
+
|
|
33
|
+
## 架构与 hmcommand-runner
|
|
34
|
+
|
|
35
|
+
自 **0.8.x** 起,命令调度与执行引擎已提取为独立 npm 包 **[`hmcommand-runner`](https://www.npmjs.com/package/hmcommand-runner)**(当前依赖 `^1.3.0`):
|
|
36
|
+
|
|
37
|
+
| 层级 | 包 / 目录 | 职责 |
|
|
38
|
+
|------|-----------|------|
|
|
39
|
+
| 执行框架 | `hmcommand-runner` | `CommandDef` 类型、组调度(`group:N`)、Shell/Builtin/Embed Runner、`registerCommandSuites` |
|
|
40
|
+
| 领域命令套件 | `src/commands/`、`src/lib/report/` 等 | report/report-user 命令套件、hdc/hiperf/hitrace 命令拼装与解码 |
|
|
41
|
+
|
|
42
|
+
`snapshot-checker` 的公开 API(`resolveCommandSuite`、`runCommandSuiteGroups`、`executeAll` 等)从主包 re-export(底层委托 `hmcommand-runner`)。npm 仍可通过 `snapshot-checker/commands/report` 引用命令套件模块。若只需通用命令编排框架,可直接依赖 `hmcommand-runner`。
|
|
19
43
|
|
|
20
44
|
---
|
|
21
45
|
|
|
@@ -49,6 +73,70 @@ npm start -- report --help # 或: node dist/src/cli.js report --help
|
|
|
49
73
|
npm run dev -- report --help
|
|
50
74
|
```
|
|
51
75
|
|
|
76
|
+
独立二进制(`npm run build:bin`)与 npm 全局安装共用同一套命令注册;版本号均来自 `package.json`(pkg 构建时注入 `HYPER_STARTUP_CHECKER_BUNDLED_VERSION`)。
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## CLI 总览
|
|
81
|
+
|
|
82
|
+
`snapshot-checker --help` 除命令套件子命令 `report`、`report-user` 外,还提供下列**顶层命令**(`report` 与 `report-user` 输出目录结构一致,闭环命令不按套件嵌套):
|
|
83
|
+
|
|
84
|
+
| 命令 | 说明 |
|
|
85
|
+
| ---- | ---- |
|
|
86
|
+
| `preflight` | 运行前环境检查(Node、hdc、设备、应用、输出目录、命令套件权限等) |
|
|
87
|
+
| `plan` | 生成可保存的执行计划 `plan.json`(不连设备、不执行);默认 `--command-suite report` |
|
|
88
|
+
| `apply` | 按 `plan.json` 执行采集与分析,写入 `run_manifest.json`;采用 plan 中 `execution_options`,不可覆盖(不一致时退出码 `2` / `PLAN_OPTION_OVERRIDE`) |
|
|
89
|
+
| `status` | 读取 `run_manifest.json` 执行状态 |
|
|
90
|
+
| `validate` | 验收 `output-dir` 产物(必需 `dump_stack.json`) |
|
|
91
|
+
|
|
92
|
+
**推荐 Agent 顺序**:`preflight` → `plan` → `apply` → `status` → `validate`。详细契约见 [`skills/snapshot-checker/SKILL.md`](skills/snapshot-checker/SKILL.md)。
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
snapshot-checker preflight --app com.example.app --output-dir ./output --output-format json
|
|
96
|
+
snapshot-checker plan --command-suite report --app com.example.app --output-dir ./output --output-format json
|
|
97
|
+
snapshot-checker apply --plan ./output/plan.json --output-format json
|
|
98
|
+
snapshot-checker status --output-dir ./output --output-format json
|
|
99
|
+
snapshot-checker validate --output-dir ./output --output-format json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 全局选项
|
|
103
|
+
|
|
104
|
+
对各子命令均生效(含顶层命令与 `report` / `report-user`):
|
|
105
|
+
|
|
106
|
+
| 选项 | 说明 |
|
|
107
|
+
| ---- | ---- |
|
|
108
|
+
| `--output-format <text\|json>` | CLI 结果写出格式,默认 `text`;**与 `--output-dir`(采集产物目录)无关** |
|
|
109
|
+
| `--log-level <level>` | 日志级别;未设则读环境变量,默认 `info` |
|
|
110
|
+
| `--log-file [path]` | 日志追加写文件;省略 path 时写入 `<output-dir>/workspace/checker.log` |
|
|
111
|
+
| `--hdc-target <sn>` | 全部 `hdc` 命令加 `-t <sn>` |
|
|
112
|
+
| `--parse-concurrency <n>` | perf 加载与 trace 解码 Worker 数,默认 `1` |
|
|
113
|
+
|
|
114
|
+
### `--output-format json`
|
|
115
|
+
|
|
116
|
+
- **stdout**:仅一行 JSON(含 `schema_version: "1"`、`ok`、命令结果或 `error.code`)。
|
|
117
|
+
- **stderr**:结构化日志与进度;自动设置 `NO_COLOR=1`。
|
|
118
|
+
- 适用于 `--list`、`--dry-run`、正式执行,以及 `preflight` / `plan` / `apply` / `status` / `validate`。
|
|
119
|
+
|
|
120
|
+
### 退出码
|
|
121
|
+
|
|
122
|
+
| 退出码 | 含义 |
|
|
123
|
+
| ------ | ---- |
|
|
124
|
+
| `0` | 成功 |
|
|
125
|
+
| `1` | 执行失败、验收失败、preflight 有 `fail` 检查项 |
|
|
126
|
+
| `2` | 参数/契约错误(如缺 `--app`、未知 `--group`、Shell 参数非法、plan 文件无效或摘要不匹配) |
|
|
127
|
+
|
|
128
|
+
常见 `error.code`:`ERROR_MISSING_APP`、`ERROR_MISSING_ABILITY`、`UNKNOWN_GROUP`、`INVALID_IDENTIFIER`、`INVALID_NUMERIC`、`INVALID_PATH`、`PLAN_CHANGED`、`PLAN_VERSION_MISMATCH`、`PLAN_OPTION_OVERRIDE`、`PLAN_NOT_FOUND`、`MANIFEST_NOT_FOUND`、`MANIFEST_INVALID_JSON`、`MANIFEST_UNSUPPORTED_SCHEMA`。完整列表见 [`skills/snapshot-checker/references/error_codes.md`](skills/snapshot-checker/references/error_codes.md)。
|
|
129
|
+
|
|
130
|
+
### 环境变量
|
|
131
|
+
|
|
132
|
+
| 变量 | 说明 |
|
|
133
|
+
| ---- | ---- |
|
|
134
|
+
| `HYPER_STARTUP_CHECKER_LOG_LEVEL` | 默认日志级别(优先于 `LOG_LEVEL`) |
|
|
135
|
+
| `HYPER_STARTUP_CHECKER_BUNDLED_VERSION` | pkg 二进制嵌入版本(构建注入) |
|
|
136
|
+
| `NO_COLOR` / `FORCE_COLOR` | 控制台颜色 |
|
|
137
|
+
|
|
138
|
+
旧名 `SNAPSHOT_CHECKER_LOG_LEVEL`、`SNAPSHOT_CHECKER_BUNDLED_VERSION` 仍可读,建议迁移至上表新名。
|
|
139
|
+
|
|
52
140
|
---
|
|
53
141
|
|
|
54
142
|
## `report` 命令
|
|
@@ -70,7 +158,7 @@ checkpoint 镜像失效等风险的专项采集与分析。按 `--risk-targets`
|
|
|
70
158
|
|
|
71
159
|
### analysis 阶段 trace 解码
|
|
72
160
|
|
|
73
|
-
analysis 通过 `src/lib/pipeline.ts` 的 pipeline 执行,trace 解码由 `src/lib/
|
|
161
|
+
analysis 通过 `src/lib/report/pipeline.ts` 的 pipeline 执行,trace 解码由 `src/lib/report/decode.ts` 编排(不再在 checker 内逐样本循环):
|
|
74
162
|
|
|
75
163
|
1. 按 `--trace-format-profile`(或 `auto` 时从设备读取的 format)构建 trace registry。
|
|
76
164
|
2. 若 `--trace-from` 为 `hitrace` 或 `mix`:主线程一次调用 `hmtrace-parser` 的 `buildHitraceIndexSnapshot` 解析 `workspace/hyperstart_hitrace.txt`。
|
|
@@ -99,7 +187,7 @@ analysis 通过 `src/lib/pipeline.ts` 的 pipeline 执行,trace 解码由 `src
|
|
|
99
187
|
|
|
100
188
|
| 选项 | 说明 |
|
|
101
189
|
| ---- | ---- |
|
|
102
|
-
| `--app <app>` |
|
|
190
|
+
| `--app <app>` | 应用包名(**`--list` / `--dry-run` / 正式执行均必填**) |
|
|
103
191
|
| `--risk-targets <targets>` | 风险事件类型,默认 `all` |
|
|
104
192
|
| `--trace-from <source>` | **采集**:hiperf record 是否 `--raw-data`(`mix` 默认带,`hiperf` 带,`hitrace` 不带)。**analysis**:是否预处理 hitrace 及 sidecar 策略(见上表);与 `--trace-format-profile` 独立 |
|
|
105
193
|
| `--hstack-tool-path <path>` | hstack 可执行文件;不配置则跳过 |
|
|
@@ -116,13 +204,16 @@ analysis 通过 `src/lib/pipeline.ts` 的 pipeline 执行,trace 解码由 `src
|
|
|
116
204
|
| `--skip-non-backtrack` | `backtrackFS` 使用 `keepNonFsRevoked: false` |
|
|
117
205
|
| `--drop-failed-samples` | 丢弃无 trace 解析器的 raw 样本 |
|
|
118
206
|
|
|
119
|
-
|
|
207
|
+
**全局选项**(对各子命令均生效;完整说明见上文「CLI 总览」)
|
|
120
208
|
|
|
121
209
|
| 选项 | 说明 |
|
|
122
210
|
| ---- | ---- |
|
|
123
211
|
| `--hdc-target <sn>` | 全部 `hdc` 命令加 `-t <sn>` |
|
|
124
212
|
| `--parse-concurrency <n>` | perf **加载**与 **trace 解码** 的 Worker 数,默认 `1`;`profile=auto` 且 format 含主线程 `transformFieldDict` 时解码回退单线程 |
|
|
213
|
+
| `--output-format <text\|json>` | CLI 结果格式,默认 `text` |
|
|
214
|
+
| `--log-level <level>` | 覆盖环境变量中的默认日志级别 |
|
|
125
215
|
| `--log-file [path]` | 日志追加写文件;省略 path 时写入 `<output-dir>/workspace/checker.log` |
|
|
216
|
+
| `--continue-on-error` | 忽略失败并继续后续阶段(默认遇错即停) |
|
|
126
217
|
|
|
127
218
|
### 使用方式
|
|
128
219
|
|
|
@@ -149,7 +240,7 @@ analysis 通过 `src/lib/pipeline.ts` 的 pipeline 执行,trace 解码由 `src
|
|
|
149
240
|
**`--list` 输出格式**(节选):
|
|
150
241
|
|
|
151
242
|
```text
|
|
152
|
-
[report]
|
|
243
|
+
[report] 命令套件(按 group 展示):
|
|
153
244
|
|
|
154
245
|
Group: init
|
|
155
246
|
[mac] hdc shell remount — hdc shell remount
|
|
@@ -179,12 +270,15 @@ Group: monitor
|
|
|
179
270
|
|
|
180
271
|
```text
|
|
181
272
|
output/
|
|
273
|
+
├── plan.json # plan 命令生成(执行前)
|
|
274
|
+
├── run_manifest.json # apply 写入(执行状态)
|
|
182
275
|
├── dump_stack.txt # 最终调用栈(文本)
|
|
183
|
-
├── dump_stack.json # 同上(JSON
|
|
276
|
+
├── dump_stack.json # 同上(JSON);validate 必需
|
|
184
277
|
├── dump_stack.xlsx # 同上(Excel)
|
|
185
278
|
├── perf_txt/
|
|
186
279
|
│ └── hyperstart_perf.data.txt # 设备 hiperf dump 文本
|
|
187
280
|
└── workspace/ # 中间产物
|
|
281
|
+
├── checker.log # --log-file 默认路径
|
|
188
282
|
├── hyperstart_log.txt # hilog 采集
|
|
189
283
|
├── hyperstart_hitrace.txt
|
|
190
284
|
├── perf.data
|
|
@@ -274,6 +368,20 @@ snapshot-checker report --app com.example.app --output-dir ./output
|
|
|
274
368
|
|
|
275
369
|
**常见错误**
|
|
276
370
|
|
|
371
|
+
缺 `--app`(退出码 `2`):
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
snapshot-checker report --dry-run
|
|
375
|
+
# ERROR_MISSING_APP: report requires --app <bundle_name>.
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
未知 `--group`(退出码 `2`,json 模式含 `available_groups`):
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
snapshot-checker report --dry-run --app com.example.app --group missing
|
|
382
|
+
# UNKNOWN_GROUP: Group 'missing' does not exist.
|
|
383
|
+
```
|
|
384
|
+
|
|
277
385
|
无效 `--trace-from` 值会直接报错并退出,例如:
|
|
278
386
|
|
|
279
387
|
```bash
|
|
@@ -297,57 +405,66 @@ snapshot-checker report-user --dry-run --app com.example.app --ability EntryAbil
|
|
|
297
405
|
|
|
298
406
|
---
|
|
299
407
|
|
|
300
|
-
##
|
|
408
|
+
## 测试
|
|
301
409
|
|
|
302
|
-
|
|
410
|
+
```bash
|
|
411
|
+
npm test # 单元与集成
|
|
412
|
+
npm run test:perf # 性能回归
|
|
413
|
+
npm run test:all # 全部
|
|
414
|
+
npm run format # Prettier 格式化 src / tests
|
|
415
|
+
npm run format:check # 仅检查格式(CI 可用)
|
|
416
|
+
```
|
|
303
417
|
|
|
304
|
-
|
|
418
|
+
### Agent 调用与评测
|
|
419
|
+
|
|
420
|
+
Agent 相关能力已接入 CLI 与测试;**契约细节以 Skill 为准**,README「CLI 总览」提供速查。
|
|
421
|
+
|
|
422
|
+
- 技能文档:[`skills/snapshot-checker/SKILL.md`](skills/snapshot-checker/SKILL.md)
|
|
423
|
+
- 集成说明:[`skills/INTEGRATION.md`](skills/INTEGRATION.md)
|
|
424
|
+
- 端到端评测:`tests/agent_e2e.test.ts`(仅解析 JSON 与退出码,无需真实设备)
|
|
425
|
+
- 安全与 Plan 完整性:`tests/shell_identifiers.test.ts`、`tests/shell_params.test.ts`、`tests/plan_integrity.test.ts`
|
|
305
426
|
|
|
306
427
|
```bash
|
|
307
|
-
|
|
428
|
+
npm run test -- tests/agent_e2e.test.ts
|
|
308
429
|
```
|
|
309
430
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
## 测试
|
|
431
|
+
离线预览计划(无需设备):
|
|
313
432
|
|
|
314
433
|
```bash
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
npm run test:all # 全部
|
|
318
|
-
npm run format # Prettier 格式化 src / commands / tests / demos
|
|
319
|
-
npm run format:check # 仅检查格式(CI 可用)
|
|
434
|
+
snapshot-checker plan --command-suite report --app com.example.app --output-dir ./output --output-format json
|
|
435
|
+
# 等价:snapshot-checker report --dry-run --app com.example.app --output-format json
|
|
320
436
|
```
|
|
321
437
|
|
|
322
438
|
## 作为库使用
|
|
323
439
|
|
|
324
440
|
```ts
|
|
325
|
-
import {
|
|
441
|
+
import { resolveCommandSuite, runCommandSuiteGroups } from "snapshot-checker";
|
|
326
442
|
import * as report from "snapshot-checker/commands/report";
|
|
327
443
|
|
|
328
444
|
// dryRun: true 与 CLI --dry-run 相同,applyOptions 不会创建 outputDir
|
|
329
|
-
const { groups, defaultGroupOrder } =
|
|
445
|
+
const { groups, defaultGroupOrder } = resolveCommandSuite(
|
|
330
446
|
report,
|
|
331
447
|
{ app: "com.example.app", riskTargets: "all", dryRun: true },
|
|
332
448
|
{ hdcTarget: "DEVICE01" },
|
|
333
449
|
);
|
|
334
450
|
|
|
335
|
-
await
|
|
451
|
+
await runCommandSuiteGroups({ groups, defaultGroupOrder });
|
|
336
452
|
```
|
|
337
453
|
|
|
338
|
-
|
|
454
|
+
默认遇错即停;需忽略失败继续时传 `stopOnError: false`。
|
|
339
455
|
|
|
340
456
|
---
|
|
341
457
|
|
|
342
|
-
## CLI
|
|
458
|
+
## CLI 命令套件框架
|
|
459
|
+
|
|
460
|
+
本工具将 `src/commands/*.ts` 静态注册为子命令,并由顶层命令提供 Agent 闭环(见「CLI 总览」)。每个命令套件导出 **`groups`**、**`defaultGroupOrder`**,可选 **`options`** 与 **`applyOptions(opts)`**。
|
|
343
461
|
|
|
344
|
-
|
|
462
|
+
- **`src/commands/`**:设备联调命令套件,**`report`**(主套件)、**`report-user`**(无 hidumper/revoke_switch 权限)。
|
|
463
|
+
- **`src/lib/`**:领域实现(如 `lib/report/decode.ts`、`lib/report/pipeline.ts`、`lib/report/command_suite.ts`);调度类型与执行器来自 **`hmcommand-runner`**。
|
|
345
464
|
|
|
346
|
-
|
|
347
|
-
- **`demos/`**:示例场景(`context-demo`、`timeout-demo` 等)。
|
|
348
|
-
- **`src/`**:实现采用 **下划线** 源文件名(如 `group_specs.ts`、`run_command.ts`、`lib/perf_decode.ts`、`runners/platform_shell_executor.ts`)。
|
|
465
|
+
`plan.json` 主要字段:`command_suite`、`command_suite_options`、`commands`、`commands_digest`、`execution_options`(如 `ignorePlatform`)、`tool_version`;`plan --output-format json` 的 stdout 含 `ok: true`、`command: "plan"`。`run_manifest.json` 与 preflight JSON 中套件标识同为 `command_suite`。
|
|
349
466
|
|
|
350
|
-
|
|
467
|
+
命令套件子命令通用开关:`--list`、`--dry-run`、`-g,--group`、`--wait`、`--silent`、`--continue-on-error` 等。完整列表见 `snapshot-checker <command> --help`。
|
|
351
468
|
|
|
352
469
|
### License
|
|
353
470
|
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import type { Command } from "commander";
|
|
3
|
+
export declare function createHyperStartUpCheckerProgram(): Command;
|
|
4
|
+
export interface RunHyperStartUpCheckerCliOptions {
|
|
5
|
+
/** 是否在解析前执行 pkg 二进制 preflight(默认 true) */
|
|
6
|
+
preflight?: boolean;
|
|
7
|
+
/** 自定义 argv,默认 `process.argv` */
|
|
8
|
+
argv?: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/** 注册场景子命令并解析 CLI(npm 与独立二进制共用)。 */
|
|
11
|
+
export declare function runHyperStartUpCheckerCli(options?: RunHyperStartUpCheckerCliOptions): Promise<void>;
|
|
3
12
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+CzC,wBAAgB,gCAAgC,IAAI,OAAO,CAoC1D;AAED,MAAM,WAAW,gCAAgC;IAC/C,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,oCAAoC;AACpC,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|