openxiangda-cli 2.7.2 → 2.8.2

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/dist/base.d.ts CHANGED
@@ -48,6 +48,7 @@ export declare abstract class OpenXiangdaCommand extends Command {
48
48
  workspace: null;
49
49
  data: null;
50
50
  error: {
51
+ requestId?: string;
51
52
  details?: Record<string, unknown>;
52
53
  pointer?: string;
53
54
  code: string;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAE7C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAE9B,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAmBzB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAG/B,CAAC;AAEF,8BAAsB,kBAAmB,SAAQ,OAAO;IACtD,MAAM,CAAC,cAAc,UAAQ;IAE7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,iCAExB;IACH,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAS;cAEhB,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAiB1D,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;IAuB/C,SAAS,CAAC,oBAAoB;IAI9B,SAAS,CAAC,cAAc,CAAC,SAAS,SAAuB;IAazD,SAAS,CAAC,aAAa,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAWvC,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,iBAAiB;IAO3D,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;IAmBpC,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,gBAAgB;CAsCzB"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAE7C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,8BAA8B,EAE9B,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAmBzB,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAG/B,CAAC;AAEF,8BAAsB,kBAAmB,SAAQ,OAAO;IACtD,MAAM,CAAC,cAAc,UAAQ;IAE7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,iCAExB;IACH,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAS;cAEhB,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAiB1D,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;IAuB/C,SAAS,CAAC,oBAAoB;IAI9B,SAAS,CAAC,cAAc,CAAC,SAAS,SAAuB;IAazD,SAAS,CAAC,aAAa,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAWvC,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,iBAAiB;IAO3D,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;IAmBpC,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,gBAAgB;CAsCzB"}
@@ -6,7 +6,8 @@ export default class Admin extends OpenXiangdaCommand {
6
6
  workflowCode: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
7
  };
8
8
  static flags: {
9
- environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ environment: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ input: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
11
  cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
12
  };
12
13
  run(): Promise<import("openxiangda-contracts").DevkitResult<unknown> | {
@@ -26,4 +27,6 @@ export default class Admin extends OpenXiangdaCommand {
26
27
  } | null;
27
28
  } | undefined>;
28
29
  }
30
+ /** 有界读取,避免无界 JSON 文件或标准输入进入内存。 */
31
+ export declare function readOperationInput(path: string): unknown;
29
32
  //# sourceMappingURL=admin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,YAAY,CAAC;AAGhE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,kBAAkB;IACnD,MAAM,CAAC,OAAO,SAA2B;IACzC,MAAM,CAAC,IAAI;;;MAGT;IACF,MAAM,CAAC,KAAK;;;MAGV;IACI,GAAG;;;;;;;;;;;;;;;;CAUV"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,YAAY,CAAC;AAIhE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,kBAAkB;IACnD,MAAM,CAAC,OAAO,SAAqC;IACnD,MAAM,CAAC,IAAI;;;MAGT;IACF,MAAM,CAAC,KAAK;;;;MAIV;IACI,GAAG;;;;;;;;;;;;;;;;CAmBV;AAED,kCAAkC;AAClC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,WAc9C"}
@@ -1,18 +1,32 @@
1
1
  import { Args, Flags } from "@oclif/core";
2
2
  import { OpenXiangdaCommand, workspaceFlags } from "../base.js";
3
3
  import { DEVELOPER_ENVIRONMENTS, developerEnvironment } from "openxiangda-devkit-core";
4
+ import { openSync, readSync, closeSync } from 'node:fs';
4
5
  export default class Admin extends OpenXiangdaCommand {
5
- static summary = "只读查看当前应用管理能力和流程节点运行配置";
6
+ static summary = "查看应用管理或自助操作契约,按明确环境执行事件、密钥和通知操作";
6
7
  static args = {
7
- action: Args.string({ required: true, options: ["context", "workflow"] }),
8
- workflowCode: Args.string({ summary: "workflow 操作需要指定流程代码" }),
8
+ action: Args.string({ required: true, options: ["context", "workflow", "operations", "execute"] }),
9
+ workflowCode: Args.string({ summary: "workflow 的流程代码,或 execute 的目录操作名" }),
9
10
  };
10
11
  static flags = {
11
12
  ...workspaceFlags,
12
- environment: Flags.string({ options: [...DEVELOPER_ENVIRONMENTS], default: "test", summary: "读取环境;默认测试环境" }),
13
+ environment: Flags.string({ options: [...DEVELOPER_ENVIRONMENTS], summary: "读取默认 test;execute 必须明确指定 test 或 production" }),
14
+ input: Flags.string({ summary: "execute 必填:目录 input 契约的 JSON 文件,或 - 从标准输入读取;最多 32 KiB,无密钥明文" }),
13
15
  };
14
16
  async run() {
15
17
  const { args, flags } = await this.parse(Admin);
18
+ if (args.action === 'execute') {
19
+ if (!args.workflowCode || !flags.environment || !flags.input)
20
+ throw new Error('APPLICATION_OPERATION_ARGUMENT_REQUIRED: 指定操作名、--environment 和 --input;先读 admin operations --json');
21
+ return this.present(await this.services.applicationOperation(flags.cwd, { operation: args.workflowCode, environment: flags.environment, input: readOperationInput(flags.input) }));
22
+ }
23
+ if (flags.input)
24
+ throw new Error('APPLICATION_OPERATION_INPUT_UNEXPECTED: --input 仅用于 execute');
25
+ if (args.action === 'operations') {
26
+ if (args.workflowCode || flags.environment)
27
+ throw new Error('APPLICATION_OPERATION_CATALOG_ARGUMENT_INVALID: operations 是本地操作目录,不接受操作名或环境');
28
+ return this.present(await this.services.applicationOperations(flags.cwd));
29
+ }
16
30
  const environment = developerEnvironment(flags.environment);
17
31
  if (args.action === "context") {
18
32
  if (args.workflowCode)
@@ -24,4 +38,30 @@ export default class Admin extends OpenXiangdaCommand {
24
38
  return this.present(await this.services.workflowNodeConfigurations(flags.cwd, args.workflowCode, environment));
25
39
  }
26
40
  }
41
+ /** 有界读取,避免无界 JSON 文件或标准输入进入内存。 */
42
+ export function readOperationInput(path) {
43
+ const fd = path === '-' ? 0 : openSync(path, 'r');
44
+ try {
45
+ const buffer = Buffer.alloc(32769);
46
+ let size = 0;
47
+ while (size < buffer.length) {
48
+ const read = readSync(fd, buffer, size, buffer.length - size, null);
49
+ if (read === 0)
50
+ break;
51
+ size += read;
52
+ }
53
+ if (size > 32768)
54
+ throw new Error('APPLICATION_OPERATION_INPUT_TOO_LARGE: 输入最多 32 KiB');
55
+ try {
56
+ return JSON.parse(buffer.subarray(0, size).toString('utf8'));
57
+ }
58
+ catch {
59
+ throw new Error('APPLICATION_OPERATION_INPUT_INVALID: 输入必须为目录 input 契约的 JSON 对象');
60
+ }
61
+ }
62
+ finally {
63
+ if (path !== '-')
64
+ closeSync(fd);
65
+ }
66
+ }
27
67
  //# sourceMappingURL=admin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,kBAAkB;IACnD,MAAM,CAAC,OAAO,GAAG,uBAAuB,CAAC;IACzC,MAAM,CAAC,IAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;QACzE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;KAC9D,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;KAC7G,CAAC;IACF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IACjH,CAAC"}
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda-cli",
3
- "version": "2.7.2",
3
+ "version": "2.8.2",
4
4
  "description": "OpenXiangda 2.0 应用生命周期命令、创建器与模板。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,10 +21,10 @@
21
21
  ],
22
22
  "dependencies": {
23
23
  "@oclif/core": "4.13.3",
24
- "openxiangda-contracts": "2.70.0",
25
- "openxiangda-devkit-core": "2.52.0",
26
- "openxiangda-mcp": "2.0.109",
27
- "openxiangda-skill-kit": "2.3.90"
24
+ "openxiangda-contracts": "2.71.1",
25
+ "openxiangda-devkit-core": "2.53.1",
26
+ "openxiangda-mcp": "2.1.1",
27
+ "openxiangda-skill-kit": "2.3.92"
28
28
  },
29
29
  "devDependencies": {
30
30
  "tsx": "4.23.12",
@@ -19,6 +19,7 @@
19
19
  - 默认读取 AppSpec 当前规格、设计索引、活动变更和阶段缺口。新应用先用自然语言对话主动发现模块,完成本期 PRD、旅程、逐页交互、视觉/原型、权限与架构设计及实际确认,形成内容摘要绑定的评审基线后再制定实施计划和实现业务;参见 docs product-design 和 docs interaction-patterns。既有应用仅修订受影响设计,不把 AI 建议写成用户确认。总纲保存长期规则,本轮变更关联需求、任务、源码与 AC 验收;测试发布前完成设计与计划,生产晋级前保存绑定原测试运行及包摘要的实际验收报告。更新当前规则、验证与发布结果和交接后归档;不得编造确认或通过结果。
20
20
  - 根据变化风险记录业务意图。无行为变化引用已有记录;已有授权和已确认意图不重复向用户请求机械确认。真实角色和浏览器验收与本地测试分别记录。
21
21
  - 失败保留错误码、指针和原候选;查询平台状态后使用允许的恢复操作,不自动重放未知结果。
22
+ - 事件高水位、缺少正式环境密钥或通知故障先读 `docs application-operations` 和 `admin operations --json`(MCP `application_operations`)。AI 沿用当前应用管理权限,在已授权范围内直接用 `admin execute` / `application_operation` 完成诊断、加密环境凭据复用、渠道配置及指定投递恢复,无需转交用户操作管理页面。显式选择环境,保留修订与原幂等键,不读取密钥明文、不重建原业务、不批量重发历史通知。
22
23
  - 平台契约、诊断和产品/架构咨询按 openxiangda-support 技能持续跟进已授权案例。使用 support status 查看 DWS 接入状态;待 OAuth、钉钉入群或网络恢复不阻塞独立开发,后台续跑以实际宿主监听/定时配置为准。
23
24
 
24
25
  MCP 使用同一项目 CLI:`pnpm exec openxiangda --mcp-stdio --cwd <workspace>`。先读取 workspace_context,再按任务读取 docs_read 和当前契约。登录、创建及长期 dev 使用 CLI/终端。
@@ -14,7 +14,7 @@
14
14
  "@ant-design/icons": "6.2.3",
15
15
  "@refinedev/core": "5.0.12",
16
16
  "antd": "6.4.3",
17
- "openxiangda": "2.59.2",
17
+ "openxiangda": "2.59.5",
18
18
  "react": "19.2.8",
19
19
  "react-dom": "19.2.8",
20
20
  "react-router-dom": "7.8.2"
@@ -22,7 +22,7 @@
22
22
  "build": "pnpm --recursive build"
23
23
  },
24
24
  "devDependencies": {
25
- "openxiangda": "2.59.2",
25
+ "openxiangda": "2.59.5",
26
26
  "typescript": "5.9.3"
27
27
  }
28
28
  }