openxiangda 1.0.187 → 1.0.189

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.
@@ -363,7 +363,25 @@ function releaseExecutionPath(changeId, deploymentId, cwd = process.cwd()) {
363
363
 
364
364
  function withManagedReleaseForwardedFlags(stepId, args = [], flags = {}) {
365
365
  const forwarded = [...args];
366
- if (stepId !== 'backend-stage' || !flags['adopt-online-baseline']) {
366
+ const immutableResourceStages = new Set([
367
+ 'backend-stage',
368
+ 'workflow-stage',
369
+ ]);
370
+ if (
371
+ immutableResourceStages.has(stepId) &&
372
+ !forwarded.includes('--include-noop')
373
+ ) {
374
+ forwarded.push('--include-noop');
375
+ }
376
+ const baselineAdoptionStages = new Set([
377
+ 'form-stage',
378
+ 'backend-stage',
379
+ 'workflow-stage',
380
+ ]);
381
+ if (
382
+ !baselineAdoptionStages.has(stepId) ||
383
+ !flags['adopt-online-baseline']
384
+ ) {
367
385
  return forwarded;
368
386
  }
369
387
  forwarded.push('--adopt-online-baseline');
package/lib/cli.js CHANGED
@@ -11438,6 +11438,7 @@ async function resource(args) {
11438
11438
  ' - publish 默认跳过 plan 判定为 noop 的资源,避免无意义 upsert;需要强制写入时加 --force。',
11439
11439
  ' - Form settings bundle 默认只 stage,不推进线上 Form head;只有显式 --activate 才 CAS 激活。',
11440
11440
  ' - Function/Automation/Workflow 可用 --stage-only 只 prepare + verify immutable child;随后由 release app-finalize 一次原子激活。',
11441
+ ' - --include-noop 仅可与 --stage-only 一起使用,用于受管候选为内容未变的目标生成带当前来源的不可变子版本。',
11441
11442
  ' - publish --dry-run 等价于发布前计划,不会写平台资源。',
11442
11443
  ' - 在线 publish 必须用 --only/--code 精确选择;真正全量发布必须显式 --all --reason,SDD bypass 不能绕过此范围门。',
11443
11444
  ' - 历史代码已先合入主线、线上又来自多次分批发布时,可显式使用 --adopt-online-baseline --adoption-reason "...";仅允许绑定同一 change/lease 的精确非删除范围,仍保留 lease、冻结 head 检查与写入 CAS。',
@@ -11476,6 +11477,9 @@ async function resource(args) {
11476
11477
  const typeFilters = getResourceTypeFilters(positional, flags);
11477
11478
  const codeFilters = getResourceCodeFilters(flags);
11478
11479
  assertBackendStageOnlyScope(subcommand, flags, typeFilters);
11480
+ if (flags['include-noop'] && !flags['stage-only']) {
11481
+ fail('--include-noop 仅允许与 --stage-only 一起使用');
11482
+ }
11479
11483
  assertExplicitResourcePublishScope(subcommand, flags, codeFilters);
11480
11484
  assertExplicitManifestReplacement(flags);
11481
11485
  if (codeFilters && flags.prune) {
@@ -11644,7 +11648,7 @@ async function resource(args) {
11644
11648
  async () =>
11645
11649
  publishResourceManifest(config, target, manifest, {
11646
11650
  planActions: publishPlan.actions,
11647
- skipNoop: !Boolean(flags.force),
11651
+ skipNoop: !Boolean(flags.force || flags['include-noop']),
11648
11652
  prune: Boolean(flags.prune),
11649
11653
  pruneCandidates,
11650
11654
  publishLeaseId: publishLease?.leaseId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "1.0.187",
3
+ "version": "1.0.189",
4
4
  "description": "OpenXiangda CLI, workspace build tools, runtime SDK, and form components.",
5
5
  "private": false,
6
6
  "bin": {