@lark-apaas/miaoda-cli 0.1.31 → 0.1.32

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 CHANGED
@@ -55,7 +55,7 @@ miaoda file ls --output json
55
55
 
56
56
  `miaoda registry` 提供 shadcn 式的「组件 registry」:把 SDK 文件**拷进**当前项目(copy-in),而非作为依赖安装。registry 是独立 npm 包,按运行时分发(design-html / html → buildless runtime → `@lark-apaas/coding-registry-buildless`)。
57
57
 
58
- 前置:当前目录(或 `--dir`)已走过 `miaoda app init`,且 `.spark/meta.json` 的 `stack` 有对应 registry 包(当前支持 `design-html` / `html`);其余 stack 执行时报 `REGISTRY_STACK_UNSUPPORTED` 并提示支持列表。
58
+ 前置:当前工作目录已走过 `miaoda app init`,且 `.spark/meta.json` 的 `stack` 有对应 registry 包(当前支持 `design-html` / `html`);其余 stack 执行时报 `REGISTRY_STACK_UNSUPPORTED` 并提示支持列表。meta 一律从 cwd 读取,不随 `--dir` 走。
59
59
 
60
60
  ```bash
61
61
  # 列出可用 SDK 条目(输出各文件 USAGE 注释块原文,便于 Agent 直接读用法)
@@ -76,7 +76,7 @@ miaoda registry add deck-slide --overwrite # 目标已存在时覆盖(
76
76
  - **拍平落地**:所有文件**拍平**到项目根(`scripts/deck-slide.js` → 项目 `deck-slide.js`,不保留子目录);闭包内同名 basename 撞车时后者覆盖前者。
77
77
  - **skip-by-disk**:项目已有同名(拍平后的 basename)文件默认跳过,`--overwrite` 才覆盖;不写任何安装记账文件,项目文件树即状态。
78
78
  - **add 回执带 usage**:`add` 结果的 `entries` 只列**你请求的条目**(不含被 `Depends` 传递拉进来的依赖——依赖照常落地在 `added`/`skipped`,但那是"管道"),逐条给出 `usage`(USAGE 块原文)与 `dependsOn`,Agent `add` 完即可直接读用法,无需再 `registry list`。请求的条目即使已存在被跳过也回带 usage(`status` 标 `added`/`skipped`,据此判断磁盘上是 registry 版还是你改过的旧版)。`--json` 结构为 `{registryVersion, added, skipped, dryRun, entries}`;pretty(默认)输出 `registry@<ver>` + `added:`/`skipped:` 逗号列表 + 各请求条目的 USAGE 块,稳定 label、无 JSON 数组、无截断,对 Agent 与人同样可读。
79
- - `--version <ver>` 指定 registry 包版本或 dist-tag(缺省 `latest`),`--dir <path>` 指定项目目录(缺省当前目录)。
79
+ - `--version <ver>` 指定 registry 包版本或 dist-tag(缺省 `latest`);`add` 的 `--dir <path>` 指定 copy-in 落地目录(缺省当前目录),不影响 `.spark/meta.json` 读取。
80
80
 
81
81
  ## 全局参数
82
82
 
@@ -33,8 +33,9 @@ function registerRegistryCommands(program) {
33
33
  - add 落地:拍平到项目根(包根 scripts/x.js → 项目 x.js);同名 basename 撞车时后者覆盖前者
34
34
 
35
35
  前置
36
- 当前目录(或 --dir)已走过 'miaoda app init',且 .spark/meta.json 的 stack 有对应
36
+ 当前工作目录已走过 'miaoda app init',且 .spark/meta.json 的 stack 有对应
37
37
  registry 包(当前支持 design-html / html);其余 stack 执行时报 REGISTRY_STACK_UNSUPPORTED
38
+ meta 一律从 cwd 读取,add 的 --dir 只影响 copy-in 落地目录
38
39
  `);
39
40
  registerRegistryList(registryCmd);
40
41
  registerRegistryAdd(registryCmd);
@@ -43,7 +44,6 @@ function registerRegistryList(parent) {
43
44
  const cmd = parent
44
45
  .command('list')
45
46
  .description('列出 registry 可用 SDK 条目,输出各文件的 USAGE 块原文')
46
- .option('--dir <path>', '项目目录,默认当前目录', '.')
47
47
  .option('--version <ver>', 'registry 包版本或 dist-tag,缺省 latest')
48
48
  .addHelpText('after', `
49
49
  输出
@@ -59,7 +59,6 @@ JSON 输出
59
59
  `);
60
60
  cmd.action((0, shared_1.withHelp)(cmd, async (rawOpts) => {
61
61
  await (0, index_1.handleRegistryList)({
62
- dir: rawOpts.dir,
63
62
  version: rawOpts.version,
64
63
  });
65
64
  }));
@@ -69,7 +68,7 @@ function registerRegistryAdd(parent) {
69
68
  .command('add')
70
69
  .description('把一个或多个 SDK 文件 copy-in 到当前项目(拍平到项目根,含 Depends 闭包)')
71
70
  .argument('<token...>', 'name / 完整文件名 / relPath,可传多个;同名多匹配全拉,Depends 自动传递解析')
72
- .option('--dir <path>', '项目目录,默认当前目录', '.')
71
+ .option('--dir <path>', 'copy-in 落地目录,默认当前目录(stack 一律读 cwd 的 .spark/meta.json)', '.')
73
72
  .option('--version <ver>', 'registry 包版本或 dist-tag,缺省 latest')
74
73
  .option('--overwrite', '目标文件已存在时覆盖(默认跳过以保护用户改动)', false)
75
74
  .option('--dry-run', '只报告将写 / 将跳哪些文件,不落盘', false)
@@ -77,8 +76,9 @@ function registerRegistryAdd(parent) {
77
76
  行为
78
77
  - token 寻址:name(foo)/ 完整文件名(foo.css)/ relPath(stylesheets/foo.css)任一形式
79
78
  - 多匹配全拉:token 命中多个同名条目时全部 copy-in;想只要其一就写完整文件名 / relPath
80
- - 解析 USAGE 块 Depends 传递闭包,把 SDK 文件**拍平**拷到项目根
81
- (包根 scripts/deck-stage.js → 项目 deck-stage.js;同名 basename 撞车时后者覆盖前者)
79
+ - 解析 USAGE 块 Depends 传递闭包,把 SDK 文件**拍平**拷到落地目录(--dir,默认当前目录)
80
+ (包根 scripts/deck-stage.js → 落地 deck-stage.js;同名 basename 撞车时后者覆盖前者)
81
+ - stack 一律读当前工作目录的 .spark/meta.json,--dir 不影响 meta 读取
82
82
  - skip-by-disk:目标文件已存在默认跳过;--overwrite 才覆盖
83
83
  - 不写任何安装记账文件(项目文件树即状态)
84
84
 
@@ -13,7 +13,8 @@ const output_1 = require("../../../utils/output");
13
13
  * miaoda registry add <name...> [--overwrite] [--dry-run] [--dir <path>] [--version <ver>]
14
14
  *
15
15
  * 解析 USAGE 块 Depends 传递闭包,把每个条目对应的 SDK 文件从 registry 包根的 <relPath>
16
- * **保留相对路径**拷到项目根(--dir 指定目录的根)。
16
+ * **保留相对路径**拷到落地目录(--dir,默认 cwd)。stack 一律从 <cwd>/.spark/meta.json 读,
17
+ * 不随 --dir 走。
17
18
  * skip-by-disk:目标已存在默认跳过,--overwrite 才覆盖。不写任何安装记账文件。
18
19
  */
19
20
  async function handleRegistryAdd(opts) {
@@ -22,7 +23,7 @@ async function handleRegistryAdd(opts) {
22
23
  throw new error_1.AppError('ARGS_INVALID', 'registry add 至少需要一个条目名');
23
24
  }
24
25
  const targetDir = node_path_1.default.resolve(opts.dir ?? process.cwd());
25
- const stack = (0, shared_1.resolveRegistryStack)(targetDir);
26
+ const stack = (0, shared_1.resolveRegistryStack)();
26
27
  const reg = (0, index_1.loadRegistry)({ stack, version: opts.version });
27
28
  try {
28
29
  const plan = (0, index_1.planAdd)({
@@ -1,17 +1,13 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.handleRegistryList = handleRegistryList;
7
- const node_path_1 = __importDefault(require("node:path"));
8
4
  const index_1 = require("../../../services/registry/index");
9
5
  const shared_1 = require("./shared");
10
6
  const output_1 = require("../../../utils/output");
11
7
  /**
12
- * miaoda registry list [--dir <path>] [--version <ver>]
8
+ * miaoda registry list [--version <ver>]
13
9
  *
14
- * 从 .spark/meta.json 读 stack → runtime → 包名,拉对应 registry 包,从包根递归扫含 USAGE 块的 SDK 文件。
10
+ * 从 <cwd>/.spark/meta.json 读 stack → runtime → 包名,拉对应 registry 包,从包根递归扫含 USAGE 块的 SDK 文件。
15
11
  *
16
12
  * - 默认(pretty):输出各条目 USAGE 块原文,带文件名分隔,给 Agent 直接读注释。
17
13
  * - --json:输出 [{name, file, usage(原文字符串), dependsOn[]}],usage 保持原文不解析成字段。
@@ -19,8 +15,7 @@ const output_1 = require("../../../utils/output");
19
15
  */
20
16
  async function handleRegistryList(opts) {
21
17
  await Promise.resolve();
22
- const targetDir = node_path_1.default.resolve(opts.dir ?? process.cwd());
23
- const stack = (0, shared_1.resolveRegistryStack)(targetDir);
18
+ const stack = (0, shared_1.resolveRegistryStack)();
24
19
  const reg = (0, index_1.loadRegistry)({ stack, version: opts.version });
25
20
  try {
26
21
  if ((0, output_1.isJsonMode)()) {
@@ -5,16 +5,20 @@ const spark_meta_1 = require("../../../utils/spark-meta");
5
5
  const index_1 = require("../../../services/registry/index");
6
6
  const error_1 = require("../../../utils/error");
7
7
  /**
8
- * 从 <targetDir>/.spark/meta.json 读 stack,校验该 stack 有组件 registry。
8
+ * 从 <cwd>/.spark/meta.json 读 stack,校验该 stack 有组件 registry。
9
+ * meta 只与当前工作目录相关(CLI 必须在 user app 根目录下运行),不随 --dir 走——
10
+ * --dir 只影响 add 的 copy-in 落地目录。
9
11
  * 缺 stack → 提示先 init;stack 无 registry(无对应 runtime / runtime 无 registry 包)→ 提示支持哪些 stack。
10
12
  *
11
13
  * 这里只做「stack 是否在支持列表」的早校验给用户友好提示;包名的两跳解析
12
14
  * (stack → runtime → 包)由 loadRegistry/resolveRegistryPackage 负责。
13
15
  */
14
- function resolveRegistryStack(targetDir) {
15
- const meta = (0, spark_meta_1.readSparkMeta)(targetDir);
16
+ function resolveRegistryStack() {
17
+ const meta = (0, spark_meta_1.readSparkMeta)(process.cwd());
16
18
  if (meta.stack === undefined || meta.stack === '') {
17
- throw new error_1.AppError('REGISTRY_META_INCOMPLETE', '.spark/meta.json missing stack — run `miaoda app init` first');
19
+ throw new error_1.AppError('REGISTRY_META_INCOMPLETE', '.spark/meta.json missing stack — run `miaoda app init` first', {
20
+ next_actions: ['meta 一律读当前工作目录(不随 --dir),请 cd 到 user app 根目录后重试'],
21
+ });
18
22
  }
19
23
  if (!index_1.REGISTRY_SUPPORTED_STACKS.includes(meta.stack)) {
20
24
  throw new error_1.AppError('REGISTRY_STACK_UNSUPPORTED', `stack "${meta.stack}" 没有组件 registry`, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/miaoda-cli",
3
- "version": "0.1.31",
3
+ "version": "0.1.32",
4
4
  "description": "Miaoda 平台命令行工具,面向 Agent 调用",
5
5
  "type": "commonjs",
6
6
  "bin": {