@lark-apaas/miaoda-cli 0.1.24-alpha.77f133a → 0.1.24-alpha.800d445

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.
@@ -217,7 +217,7 @@ function registerAppInit(parent) {
217
217
  .command('init')
218
218
  .description('初始化应用代码:抓 template 渲染、同步 upgrade/templates、装 .agent/steering/ skills、写 .spark/meta.json。.spark/meta.json 已存在则直接退出')
219
219
  .option('--template <stack>', `技术栈短名(${index_1.SUPPORTED_STACKS.join(' / ')})`)
220
- .option('--app-type <type>', 'aPaaS 业务类型(html / modern_html / jspage / full_stack);未传 --template 时用于解析技术栈')
220
+ .option('--app-type <type>', 'aPaaS 业务类型(html / modern_html / frontend / jspage / full_stack);未传 --template 时用于解析技术栈')
221
221
  .option('--source-path <path>', '导入源目录:把该目录内容聚合进脚手架 src/(当前仅 --app-type modern_html 生效)')
222
222
  .option('--conf [json]', 'init 配置 JSON。支持 {"version": "<template 版本>"},默认 latest')
223
223
  .option('--skip-install', '跳过依赖安装', false)
@@ -237,7 +237,7 @@ function registerAppInit(parent) {
237
237
 
238
238
  技术栈解析(--template / --app-type)
239
239
  --template 传了 → 直接用(vite-react / html / design-html / nestjs-react-fullstack)
240
- 否则 --app-type 传了 → 查表:html→design-html, modern_html→html, jspage→vite-react, full_stack→nestjs-react-fullstack
240
+ 否则 --app-type 传了 → 查表:html→design-html, modern_html→html, frontend/jspage→vite-react, full_stack→nestjs-react-fullstack
241
241
  两者都没传 → 报错 ARGS_INVALID
242
242
 
243
243
  源码导入(--source-path)
@@ -17,6 +17,7 @@ function registerDeployCommandsModern(program) {
17
17
  .description('触发 modern 应用发布:本地构建 + 本地部署(preRelease + localPublish)')
18
18
  .option('--dir <path>', '项目目录', '.')
19
19
  .option('--skip-build', '跳过 build 步骤(已构建好时使用)', false)
20
+ .option('--skip-release', '不创建/更新本地发布单,发布单状态由外部托管', false)
20
21
  .option('--conf <json>', '关联元信息 JSON,仅识别 checkPointVersion / commitID 两字段')
21
22
  .addHelpText('after', `
22
23
  不要用异步模式或后台模式调用 deploy,否则调用可能提前结束,Agent 会误判发布已完成。
@@ -34,6 +35,15 @@ function registerDeployCommandsModern(program) {
34
35
  6. savePluginInstances(扫描 dist/output_capabilities/*.json 批量注册)
35
36
  7. finalizeLocalRelease(Finished|Failed)
36
37
 
38
+ --skip-release(发布单外部托管)
39
+ 跳过第 4、7 步(createLocalRelease / updateLocalRelease),其余步骤不变:
40
+ preRelease 仍照常签发 version,构建、上传、capability 注册照常执行。
41
+ 外部据 stdout 返回的 version / preReleaseID 自行建单,并据本命令的
42
+ 退出码决定把发布单翻成 Finished 还是 Failed —— 失败态由外部负责,CLI 不再兜底。
43
+ 该模式下 releaseID / url 输出为 null(CLI 未建单,无从得知)。
44
+ 注意:--conf 的 checkPointVersion / commitID 唯一消费者是 createLocalRelease,
45
+ 本模式下不生效(静默忽略,不报错),需要关联请在外部建单时自行传递。
46
+
37
47
  --conf(关联元信息透传)
38
48
  值为 JSON string,只识别两个字段,其余 key 忽略:
39
49
  checkPointVersion 关联的 checkpoint 版本
@@ -42,11 +52,13 @@ function registerDeployCommandsModern(program) {
42
52
 
43
53
  JSON 输出(stdout)
44
54
  {"data": {"appId": "...", "version": <n>, "url": "...", "releaseID": "...", "preReleaseID": "..."}}
55
+ --skip-release 时 url 与 releaseID 为 null,字段本身仍在。
45
56
 
46
57
  示例
47
58
  $ miaoda deploy
48
59
  $ miaoda deploy --dir ./my-app
49
60
  $ miaoda deploy --skip-build
61
+ $ miaoda deploy --skip-release
50
62
  $ miaoda deploy --conf '{"checkPointVersion":"v3","commitID":"a1b2c3d"}'
51
63
  `);
52
64
  deployCmd.action((0, shared_1.withHelp)(deployCmd, async (rawOpts) => {
@@ -54,6 +66,7 @@ JSON 输出(stdout)
54
66
  dir: rawOpts.dir ?? '.',
55
67
  appId: (0, shared_1.resolveAppId)({}),
56
68
  skipBuild: rawOpts.skipBuild,
69
+ skipRelease: rawOpts.skipRelease,
57
70
  conf: rawOpts.conf,
58
71
  });
59
72
  }));
@@ -60,11 +60,16 @@ async function handleAppInit(opts) {
60
60
  const tplResult = (0, index_1.renderTemplate)({ stack, version, targetDir, projectName });
61
61
  // source_path 导入:当前仅 app_type=modern_html 生效。渲染完模板后、装依赖前叠加进 src/。
62
62
  const sourceImport = applySourcePathImport(opts, targetDir);
63
+ // 本地脚手架门禁:沙箱内所有栈照旧同步(nested,产出 .agent/);本地只有 LOCAL_STEERING_STACKS
64
+ // 白名单栈(nestjs-react-fullstack / vite-react)才落地 steering(.claude/.agents)与 logs/。
65
+ // html / design-html 是纯静态 / 设计产物,本地不需要这套 agent skills 脚手架,整段跳过。
66
+ const sandbox = (0, env_1.isSandboxEnv)();
67
+ const scaffoldSteering = sandbox || index_1.LOCAL_STEERING_STACKS.has(stack);
63
68
  // 先建 logs/,防止 user 跑 dev 之前 AI/工具 redirect 到 logs/*.log 因为父目录不存在直接挂
64
69
  // (dev.js / dev-local.js 自己也建 logs/,但只在它启动后;启动前的 shell redirect 会先于此)。
65
- // 仅本地开发需要:沙箱环境由平台 supervisor 拉起 dev,无 init 前的 shell redirect 场景,
66
- // 不预建 logs/ 以免在沙箱工作区留空目录。
67
- if (!(0, env_1.isSandboxEnv)()) {
70
+ // 仅本地白名单栈需要:沙箱环境由平台 supervisor 拉起 dev,无 init 前的 shell redirect 场景;
71
+ // 非白名单栈本地不落 steering 脚手架,也无需预建 logs/。
72
+ if (!sandbox && scaffoldSteering) {
68
73
  (0, logs_dir_1.ensureLogsDir)(targetDir);
69
74
  }
70
75
  // skills 同步软失败:拉不到 coding-steering 包不该阻断 writeSparkMeta /
@@ -74,21 +79,28 @@ async function handleAppInit(opts) {
74
79
  // 跟沙箱端 update-skills.sh 链路对齐
75
80
  // - 本地 → flat (.agents/skills + .claude/skills 软链),
76
81
  // Agent / Claude Code 用同一份;nrf 在本地是主战场,vite-react 等也一样适用
77
- const outputLayout = (0, env_1.isSandboxEnv)() ? 'nested' : 'flat';
78
- let steeringResult;
82
+ const outputLayout = sandbox ? 'nested' : 'flat';
83
+ // 默认空结果:非白名单栈跳过 steering 同步时(scaffoldSteering=false)直接沿用,
84
+ // 与"拉不到 coding-steering 包"软失败路径共用同一份占位,emit / meta 落盘不受影响。
85
+ let steeringResult = {
86
+ version: 'unknown',
87
+ syncedSkills: [],
88
+ techSynced: false,
89
+ };
79
90
  let steeringError;
80
- try {
81
- steeringResult = (0, coding_steering_1.syncCodingSteering)({
82
- stack,
83
- targetDir,
84
- logPrefix: 'init',
85
- outputLayout,
86
- });
87
- }
88
- catch (err) {
89
- steeringError = err instanceof Error ? err.message : String(err);
90
- (0, logger_1.log)('init', `⚠ skills sync failed (continuing init): ${steeringError}`);
91
- steeringResult = { version: 'unknown', syncedSkills: [], techSynced: false };
91
+ if (scaffoldSteering) {
92
+ try {
93
+ steeringResult = (0, coding_steering_1.syncCodingSteering)({
94
+ stack,
95
+ targetDir,
96
+ logPrefix: 'init',
97
+ outputLayout,
98
+ });
99
+ }
100
+ catch (err) {
101
+ steeringError = err instanceof Error ? err.message : String(err);
102
+ (0, logger_1.log)('init', `⚠ skills sync failed (continuing init): ${steeringError}`);
103
+ }
92
104
  }
93
105
  // 依赖安装:async 模式留到 meta 落盘后派发后台进程(不等装完),同步模式当场装。
94
106
  // 同步:装模板钉死的依赖。不带 <pkg>@latest 位置参数,因此 npm 不会改写 package.json/lockfile
@@ -55,6 +55,7 @@ async function handleDeployModern(opts) {
55
55
  projectDir,
56
56
  appId: opts.appId,
57
57
  skipBuild: opts.skipBuild ?? false,
58
+ skipRelease: opts.skipRelease ?? false,
58
59
  checkPointVersion: conf.checkPointVersion,
59
60
  commitID: conf.commitID,
60
61
  });
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ASYNC_INSTALL_LOG = exports.runAsyncInstallWorker = exports.dispatchAsyncInstall = exports.resolveNpmInstallRegistry = exports.installDependencies = exports.writeSparkMeta = exports.readSparkMeta = exports.IMPORT_SKIP_FILES = exports.IMPORT_SKIP_DIRS = exports.importSourceSrc = exports.TEMPLATE_PACKAGE_BY_STACK = exports.STACK_BY_APP_TYPE = exports.APP_TYPES = exports.SUPPORTED_STACKS = exports.resolveStack = exports.renderTemplate = void 0;
3
+ exports.ASYNC_INSTALL_LOG = exports.runAsyncInstallWorker = exports.dispatchAsyncInstall = exports.resolveNpmInstallRegistry = exports.installDependencies = exports.writeSparkMeta = exports.readSparkMeta = exports.IMPORT_SKIP_FILES = exports.IMPORT_SKIP_DIRS = exports.importSourceSrc = exports.TEMPLATE_PACKAGE_BY_STACK = exports.STACK_BY_APP_TYPE = exports.APP_TYPES = exports.LOCAL_STEERING_STACKS = exports.SUPPORTED_STACKS = exports.resolveStack = exports.renderTemplate = void 0;
4
4
  var template_1 = require("./template");
5
5
  Object.defineProperty(exports, "renderTemplate", { enumerable: true, get: function () { return template_1.renderTemplate; } });
6
6
  Object.defineProperty(exports, "resolveStack", { enumerable: true, get: function () { return template_1.resolveStack; } });
7
7
  Object.defineProperty(exports, "SUPPORTED_STACKS", { enumerable: true, get: function () { return template_1.SUPPORTED_STACKS; } });
8
+ Object.defineProperty(exports, "LOCAL_STEERING_STACKS", { enumerable: true, get: function () { return template_1.LOCAL_STEERING_STACKS; } });
8
9
  Object.defineProperty(exports, "APP_TYPES", { enumerable: true, get: function () { return template_1.APP_TYPES; } });
9
10
  Object.defineProperty(exports, "STACK_BY_APP_TYPE", { enumerable: true, get: function () { return template_1.STACK_BY_APP_TYPE; } });
10
11
  Object.defineProperty(exports, "TEMPLATE_PACKAGE_BY_STACK", { enumerable: true, get: function () { return template_1.TEMPLATE_PACKAGE_BY_STACK; } });
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.APP_TYPES = exports.STACK_BY_APP_TYPE = exports.SUPPORTED_STACKS = exports.TEMPLATE_PINNED_VERSION_BY_STACK = exports.TEMPLATE_PACKAGE_BY_STACK = void 0;
6
+ exports.APP_TYPES = exports.STACK_BY_APP_TYPE = exports.LOCAL_STEERING_STACKS = exports.SUPPORTED_STACKS = exports.TEMPLATE_PINNED_VERSION_BY_STACK = exports.TEMPLATE_PACKAGE_BY_STACK = void 0;
7
7
  exports.resolveStack = resolveStack;
8
8
  exports.renderTemplate = renderTemplate;
9
9
  const node_fs_1 = __importDefault(require("node:fs"));
@@ -27,14 +27,25 @@ exports.TEMPLATE_PACKAGE_BY_STACK = {
27
27
  */
28
28
  exports.TEMPLATE_PINNED_VERSION_BY_STACK = {};
29
29
  exports.SUPPORTED_STACKS = Object.keys(exports.TEMPLATE_PACKAGE_BY_STACK);
30
+ /**
31
+ * 本地开发(非沙箱)需要落地 agent skills 脚手架(.claude/.agents)与 logs/ 的 stack 白名单。
32
+ * 只有这些全栈 / 前端框架栈在本地才需要 coding-steering 的 skills;html / design-html 是纯
33
+ * 静态 / 设计产物,本地无需这套脚手架,init 直接跳过 syncCodingSteering 与 logs 创建。
34
+ * 沙箱环境不受此白名单约束(所有栈照旧走 nested 同步,产出 .agent/)。
35
+ */
36
+ exports.LOCAL_STEERING_STACKS = new Set(['nestjs-react-fullstack', 'vite-react']);
30
37
  /**
31
38
  * app_type(业务类型)→ stack 短名映射。仅在调用方未显式传 --template 时用于解析 stack。
32
39
  * 与 src/api/app/types.ts 的 AppType 枚举无关,是独立的业务类型概念。
40
+ *
41
+ * 注:`frontend` 是 lark-cli 对外的纯前端应用类型;`jspage` 是内部历史代号,二者同映射
42
+ * 到 vite-react。保留 jspage 键以兼容内部既有调用方(豆包 / 妙搭链路),不删除。
33
43
  */
34
44
  exports.STACK_BY_APP_TYPE = {
35
45
  html: 'design-html',
36
46
  modern_html: 'html',
37
47
  jspage: 'vite-react',
48
+ frontend: 'vite-react',
38
49
  full_stack: 'nestjs-react-fullstack',
39
50
  };
40
51
  exports.APP_TYPES = Object.keys(exports.STACK_BY_APP_TYPE);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.savePluginInstances = exports.LocalReleaseStatus = exports.finalizeLocalRelease = exports.createLocalRelease = exports.uploadArtifacts = exports.uploadDesignArtifacts = exports.cleanDesignDist = exports.buildDesignOutput = exports.runBuild = exports.preRelease = exports.prepareDeployContext = void 0;
3
+ exports.savePluginInstances = exports.resolveReleaseTracker = exports.createManagedReleaseTracker = exports.NOOP_RELEASE_TRACKER = exports.LocalReleaseStatus = exports.finalizeLocalRelease = exports.createLocalRelease = exports.uploadArtifacts = exports.uploadDesignArtifacts = exports.cleanDesignDist = exports.buildDesignOutput = exports.runBuild = exports.preRelease = exports.prepareDeployContext = void 0;
4
4
  var context_1 = require("./context");
5
5
  Object.defineProperty(exports, "prepareDeployContext", { enumerable: true, get: function () { return context_1.prepareDeployContext; } });
6
6
  var pre_release_1 = require("./pre-release");
@@ -18,5 +18,9 @@ var local_release_1 = require("./local-release");
18
18
  Object.defineProperty(exports, "createLocalRelease", { enumerable: true, get: function () { return local_release_1.createLocalRelease; } });
19
19
  Object.defineProperty(exports, "finalizeLocalRelease", { enumerable: true, get: function () { return local_release_1.finalizeLocalRelease; } });
20
20
  Object.defineProperty(exports, "LocalReleaseStatus", { enumerable: true, get: function () { return local_release_1.LocalReleaseStatus; } });
21
+ var release_tracker_1 = require("./release-tracker");
22
+ Object.defineProperty(exports, "NOOP_RELEASE_TRACKER", { enumerable: true, get: function () { return release_tracker_1.NOOP_RELEASE_TRACKER; } });
23
+ Object.defineProperty(exports, "createManagedReleaseTracker", { enumerable: true, get: function () { return release_tracker_1.createManagedReleaseTracker; } });
24
+ Object.defineProperty(exports, "resolveReleaseTracker", { enumerable: true, get: function () { return release_tracker_1.resolveReleaseTracker; } });
21
25
  var save_plugin_instances_1 = require("./save-plugin-instances");
22
26
  Object.defineProperty(exports, "savePluginInstances", { enumerable: true, get: function () { return save_plugin_instances_1.savePluginInstances; } });
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NOOP_RELEASE_TRACKER = void 0;
4
+ exports.createManagedReleaseTracker = createManagedReleaseTracker;
5
+ exports.resolveReleaseTracker = resolveReleaseTracker;
6
+ const logger_1 = require("../../../../utils/logger");
7
+ const local_release_1 = require("./local-release");
8
+ /**
9
+ * 建本地发布单并返回受管 tracker。
10
+ *
11
+ * url 沿用原有口径:后端 onlineUrl 缺失时为空串(`''` 表示"后端没给",
12
+ * 与外部托管模式的 `null`「本模式不产生」是两个不同语义,别合并)。
13
+ */
14
+ async function createManagedReleaseTracker(appId, version, extra) {
15
+ (0, logger_1.log)('deploy', 'Creating local release...');
16
+ const release = await (0, local_release_1.createLocalRelease)(appId, version, extra);
17
+ return {
18
+ releaseID: release.releaseID,
19
+ url: release.onlineUrl ?? '',
20
+ finish: () => (0, local_release_1.finalizeLocalRelease)(appId, release.releaseID, local_release_1.LocalReleaseStatus.Finished),
21
+ fail: () => (0, local_release_1.finalizeLocalRelease)(appId, release.releaseID, local_release_1.LocalReleaseStatus.Failed),
22
+ };
23
+ }
24
+ /**
25
+ * 空实现:发布单由外部托管,CLI 不建单也不翻终态。
26
+ *
27
+ * 外部据 CLI 的退出码决定把自己的发布单翻成 Finished 还是 Failed,
28
+ * 因此这里的 finish/fail 必须是真正的 no-op,不能顺手打日志误导排查。
29
+ */
30
+ exports.NOOP_RELEASE_TRACKER = {
31
+ releaseID: null,
32
+ url: null,
33
+ finish: () => Promise.resolve(),
34
+ fail: () => Promise.resolve(),
35
+ };
36
+ /** 按 skipRelease 选 tracker:跳过则 NOOP,否则建真实发布单。 */
37
+ async function resolveReleaseTracker(opts) {
38
+ if (opts.skipRelease) {
39
+ (0, logger_1.log)('deploy', 'Skipping local release (managed externally)');
40
+ return exports.NOOP_RELEASE_TRACKER;
41
+ }
42
+ return createManagedReleaseTracker(opts.appId, opts.version, opts.extra);
43
+ }
@@ -24,25 +24,26 @@ async function designLocalPublishPipeline(opts) {
24
24
  if (!opts.skipBuild) {
25
25
  (0, index_1.buildDesignOutput)({ projectDir: ctx.projectDir });
26
26
  }
27
- (0, logger_1.log)('deploy', 'Creating local release...');
28
- const release = await (0, index_1.createLocalRelease)(ctx.appId, pre.version, {
29
- checkPointVersion: opts.checkPointVersion,
30
- commitID: opts.commitID,
27
+ const tracker = await (0, index_1.resolveReleaseTracker)({
28
+ skipRelease: opts.skipRelease ?? false,
29
+ appId: ctx.appId,
30
+ version: pre.version,
31
+ extra: { checkPointVersion: opts.checkPointVersion, commitID: opts.commitID },
31
32
  });
32
33
  try {
33
34
  await (0, index_1.uploadDesignArtifacts)({ projectDir: ctx.projectDir, data });
34
- await (0, index_1.finalizeLocalRelease)(ctx.appId, release.releaseID, index_1.LocalReleaseStatus.Finished);
35
+ await tracker.finish();
35
36
  }
36
37
  catch (err) {
37
- await (0, index_1.finalizeLocalRelease)(ctx.appId, release.releaseID, index_1.LocalReleaseStatus.Failed);
38
+ await tracker.fail();
38
39
  throw err;
39
40
  }
40
41
  (0, logger_1.log)('deploy', 'Deployed successfully');
41
42
  return {
42
43
  appId: ctx.appId,
43
44
  version: pre.version,
44
- url: release.onlineUrl ?? '',
45
- releaseID: release.releaseID,
45
+ url: tracker.url,
46
+ releaseID: tracker.releaseID,
46
47
  preReleaseID: pre.preReleaseID,
47
48
  };
48
49
  }
@@ -11,14 +11,14 @@ const index_1 = require("../atoms/index");
11
11
  * 1. prepareDeployContext — 校验项目 + 读 meta
12
12
  * 2. preRelease — 签发 pre_release_id / version / 动态配置 data
13
13
  * 3. runBuild — 本地 npm run build(注入 data 中的 CDN 前缀)
14
- * 4. createLocalRelease — 创建发布单(加锁、拿 releaseID)
14
+ * 4. resolveReleaseTracker — 创建发布单(加锁、拿 releaseID);--skip-release 下为 NOOP
15
15
  * 5. uploadArtifacts — 把产物推到 preRelease 下发的 pre-signed URL
16
16
  * 6. savePluginInstances — 扫描 dist/output_capabilities/*.json,批量注册插件能力
17
- * 7. finalizeLocalRelease — Finished / Failed 翻终态
17
+ * 7. tracker.finish/fail — Finished / Failed 翻终态
18
18
  *
19
- * createLocalRelease 提前到 upload 之前:发布单先建出来,
20
- * upload / savePluginInstances 在已知 releaseID 的前提下进行;
19
+ * 发布单先于 upload 建出来:upload / savePluginInstances 在已知 releaseID 的前提下进行;
21
20
  * 任一步失败都会精准把该发布单标记为 Failed,避免遗留挂态。
21
+ * `--skip-release` 下发布单由外部托管,tracker 为 NOOP,失败信息通过非零退出码传递。
22
22
  */
23
23
  async function localBuildLocalPublishPipeline(opts) {
24
24
  const ctx = (0, index_1.prepareDeployContext)(opts.projectDir, opts.appId);
@@ -41,10 +41,11 @@ async function localBuildLocalPublishPipeline(opts) {
41
41
  data,
42
42
  });
43
43
  }
44
- (0, logger_1.log)('deploy', 'Creating local release...');
45
- const release = await (0, index_1.createLocalRelease)(ctx.appId, pre.version, {
46
- checkPointVersion: opts.checkPointVersion,
47
- commitID: opts.commitID,
44
+ const tracker = await (0, index_1.resolveReleaseTracker)({
45
+ skipRelease: opts.skipRelease ?? false,
46
+ appId: ctx.appId,
47
+ version: pre.version,
48
+ extra: { checkPointVersion: opts.checkPointVersion, commitID: opts.commitID },
48
49
  });
49
50
  try {
50
51
  (0, logger_1.log)('deploy', 'Uploading artifacts...');
@@ -57,18 +58,18 @@ async function localBuildLocalPublishPipeline(opts) {
57
58
  if (saveResult.saved > 0) {
58
59
  (0, logger_1.log)('deploy', `${String(saveResult.saved)} capability instance(s) registered`);
59
60
  }
60
- await (0, index_1.finalizeLocalRelease)(ctx.appId, release.releaseID, index_1.LocalReleaseStatus.Finished);
61
+ await tracker.finish();
61
62
  }
62
63
  catch (err) {
63
- await (0, index_1.finalizeLocalRelease)(ctx.appId, release.releaseID, index_1.LocalReleaseStatus.Failed);
64
+ await tracker.fail();
64
65
  throw err;
65
66
  }
66
67
  (0, logger_1.log)('deploy', 'Deployed successfully');
67
68
  return {
68
69
  appId: ctx.appId,
69
70
  version: pre.version,
70
- url: release.onlineUrl ?? '',
71
- releaseID: release.releaseID,
71
+ url: tracker.url,
72
+ releaseID: tracker.releaseID,
72
73
  preReleaseID: pre.preReleaseID,
73
74
  };
74
75
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/miaoda-cli",
3
- "version": "0.1.24-alpha.77f133a",
3
+ "version": "0.1.24-alpha.800d445",
4
4
  "description": "Miaoda 平台命令行工具,面向 Agent 调用",
5
5
  "type": "commonjs",
6
6
  "bin": {