helixlife-expert-cli 0.3.2 → 0.4.0

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.
Files changed (57) hide show
  1. package/README.md +3 -3
  2. package/cli/dist/modules/analysis/api.d.ts +28 -0
  3. package/cli/dist/modules/analysis/api.d.ts.map +1 -0
  4. package/cli/dist/modules/analysis/api.js +265 -0
  5. package/cli/dist/modules/analysis/api.js.map +1 -0
  6. package/cli/dist/modules/analysis/bio.d.ts +159 -0
  7. package/cli/dist/modules/analysis/bio.d.ts.map +1 -0
  8. package/cli/dist/modules/analysis/bio.js +275 -0
  9. package/cli/dist/modules/analysis/bio.js.map +1 -0
  10. package/cli/dist/modules/analysis/catalog.d.ts +22 -0
  11. package/cli/dist/modules/analysis/catalog.d.ts.map +1 -0
  12. package/cli/dist/modules/analysis/catalog.js +126 -0
  13. package/cli/dist/modules/analysis/catalog.js.map +1 -0
  14. package/cli/dist/modules/analysis/commands.d.ts +15 -0
  15. package/cli/dist/modules/analysis/commands.d.ts.map +1 -0
  16. package/cli/dist/modules/analysis/commands.js +475 -0
  17. package/cli/dist/modules/analysis/commands.js.map +1 -0
  18. package/cli/dist/modules/analysis/constants.d.ts +14 -0
  19. package/cli/dist/modules/analysis/constants.d.ts.map +1 -1
  20. package/cli/dist/modules/analysis/constants.js +15 -0
  21. package/cli/dist/modules/analysis/constants.js.map +1 -1
  22. package/cli/dist/modules/analysis/errors.d.ts +12 -0
  23. package/cli/dist/modules/analysis/errors.d.ts.map +1 -0
  24. package/cli/dist/modules/analysis/errors.js +96 -0
  25. package/cli/dist/modules/analysis/errors.js.map +1 -0
  26. package/cli/dist/modules/analysis/files.d.ts +8 -0
  27. package/cli/dist/modules/analysis/files.d.ts.map +1 -0
  28. package/cli/dist/modules/analysis/files.js +59 -0
  29. package/cli/dist/modules/analysis/files.js.map +1 -0
  30. package/cli/dist/modules/analysis/flags.d.ts +27 -0
  31. package/cli/dist/modules/analysis/flags.d.ts.map +1 -0
  32. package/cli/dist/modules/analysis/flags.js +58 -0
  33. package/cli/dist/modules/analysis/flags.js.map +1 -0
  34. package/cli/dist/modules/analysis/index.d.ts.map +1 -1
  35. package/cli/dist/modules/analysis/index.js +154 -8
  36. package/cli/dist/modules/analysis/index.js.map +1 -1
  37. package/cli/dist/modules/analysis/inputs.d.ts +36 -0
  38. package/cli/dist/modules/analysis/inputs.d.ts.map +1 -0
  39. package/cli/dist/modules/analysis/inputs.js +120 -0
  40. package/cli/dist/modules/analysis/inputs.js.map +1 -0
  41. package/cli/dist/modules/analysis/json.d.ts +7 -0
  42. package/cli/dist/modules/analysis/json.d.ts.map +1 -0
  43. package/cli/dist/modules/analysis/json.js +30 -0
  44. package/cli/dist/modules/analysis/json.js.map +1 -0
  45. package/cli/dist/modules/analysis/overrides.d.ts +12 -0
  46. package/cli/dist/modules/analysis/overrides.d.ts.map +1 -0
  47. package/cli/dist/modules/analysis/overrides.js +185 -0
  48. package/cli/dist/modules/analysis/overrides.js.map +1 -0
  49. package/cli/dist/modules/analysis/prepare.d.ts +47 -0
  50. package/cli/dist/modules/analysis/prepare.d.ts.map +1 -0
  51. package/cli/dist/modules/analysis/prepare.js +941 -0
  52. package/cli/dist/modules/analysis/prepare.js.map +1 -0
  53. package/cli/dist/modules/analysis/schema.d.ts +5 -0
  54. package/cli/dist/modules/analysis/schema.d.ts.map +1 -0
  55. package/cli/dist/modules/analysis/schema.js +39 -0
  56. package/cli/dist/modules/analysis/schema.js.map +1 -0
  57. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/modules/analysis/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function downloadToPath(url: string, outputPath: string | undefined): Promise<string>;
2
+ export declare function downloadArtifact(path: string | undefined): {
3
+ path: string;
4
+ filename: string;
5
+ mimeType: string;
6
+ } | null;
7
+ export declare function writeDownloadBytes(target: string, bytes: Buffer): Promise<void>;
8
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/files.ts"],"names":[],"mappings":"AAQA,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAcjG;AAgBD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO7D;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF"}
@@ -0,0 +1,59 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { basename, dirname, extname, join } from "node:path";
4
+ import { fetchWithTimeout } from "../../core/index.js";
5
+ import { ANALYSIS_BIO_TIMEOUT_MS } from "./constants.js";
6
+ import { AnalysisError } from "./errors.js";
7
+ import { resolveUserPath } from "../../core/paths.js";
8
+ export async function downloadToPath(url, outputPath) {
9
+ let response;
10
+ try {
11
+ response = await fetchWithTimeout(url, { method: "GET" }, ANALYSIS_BIO_TIMEOUT_MS);
12
+ }
13
+ catch {
14
+ throw new AnalysisError("下载失败,请检查网络后重试。");
15
+ }
16
+ if (!response.ok) {
17
+ throw new AnalysisError(`下载失败 (${response.status})`);
18
+ }
19
+ const target = outputPath ? resolveUserPath(outputPath) : defaultDownloadPath(url);
20
+ const bytes = Buffer.from(await response.arrayBuffer());
21
+ await writeDownloadBytes(target, bytes);
22
+ return target;
23
+ }
24
+ const MIME_TYPES = {
25
+ ".csv": "text/csv",
26
+ ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
27
+ ".pdf": "application/pdf",
28
+ ".png": "image/png",
29
+ ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
30
+ ".svg": "image/svg+xml",
31
+ ".tif": "image/tiff",
32
+ ".tiff": "image/tiff",
33
+ ".txt": "text/plain",
34
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
35
+ ".zip": "application/zip",
36
+ };
37
+ export function downloadArtifact(path) {
38
+ if (!path)
39
+ return null;
40
+ return {
41
+ path,
42
+ filename: basename(path),
43
+ mimeType: MIME_TYPES[extname(path).toLowerCase()] ?? "application/octet-stream",
44
+ };
45
+ }
46
+ export async function writeDownloadBytes(target, bytes) {
47
+ await mkdir(dirname(target), { recursive: true });
48
+ await writeFile(target, bytes);
49
+ }
50
+ function defaultDownloadPath(url) {
51
+ try {
52
+ const name = decodeURIComponent(basename(new URL(url).pathname)) || "download.bin";
53
+ return join(homedir(), "Downloads", name);
54
+ }
55
+ catch {
56
+ return join(homedir(), "Downloads", "download.bin");
57
+ }
58
+ }
59
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/modules/analysis/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,UAA8B;IAC9E,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,aAAa,CAAC,SAAS,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,MAAM,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,GAA2B;IACzC,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,yEAAyE;IAClF,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,2EAA2E;IACpF,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,mEAAmE;IAC5E,MAAM,EAAE,iBAAiB;CAC1B,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,IAAwB;IAExB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;QACxB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,0BAA0B;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa;IACpE,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,cAAc,CAAC;QACnF,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface ToolRunFlags {
2
+ demo: boolean;
3
+ files: string[];
4
+ sets: string[];
5
+ specifics: string[];
6
+ configPath?: string;
7
+ cloudDataId?: string;
8
+ cloudKey?: string;
9
+ cloudFilter?: string;
10
+ cloudIndex?: number;
11
+ cloudRecordJson?: string;
12
+ cloudRecordFile?: string;
13
+ recordKey?: string;
14
+ recordId?: string;
15
+ recordJson?: string;
16
+ recordFile?: string;
17
+ menuUuid?: string;
18
+ route?: string;
19
+ uuid?: string;
20
+ toolProductUuid?: string;
21
+ download?: string;
22
+ downloadItem?: number;
23
+ downloadLabel?: string;
24
+ }
25
+ export declare function readToolRunFlags(raw: Record<string, unknown>): ToolRunFlags;
26
+ export declare function collectRepeat(_value: string, previous: string[] | undefined): string[];
27
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/flags.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAyB3E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAEtF"}
@@ -0,0 +1,58 @@
1
+ import { AnalysisError } from "./errors.js";
2
+ export function readToolRunFlags(raw) {
3
+ return {
4
+ demo: raw.demo === true,
5
+ files: stringList(raw.file),
6
+ sets: stringList(raw.set),
7
+ specifics: stringList(raw.specific),
8
+ configPath: optionalText(raw.config),
9
+ cloudDataId: optionalText(raw.cloudDataId),
10
+ cloudKey: optionalText(raw.cloudKey),
11
+ cloudFilter: optionalText(raw.cloudFilter),
12
+ cloudIndex: optionalIndex(raw.cloudIndex, "--cloudIndex"),
13
+ cloudRecordJson: optionalText(raw.cloudRecordJson),
14
+ cloudRecordFile: optionalText(raw.cloudRecordFile),
15
+ recordKey: optionalText(raw.recordKey),
16
+ recordId: optionalText(raw.recordId),
17
+ recordJson: optionalText(raw.recordJson),
18
+ recordFile: optionalText(raw.recordFile),
19
+ menuUuid: optionalText(raw.menuUuid),
20
+ route: optionalText(raw.route),
21
+ uuid: optionalText(raw.uuid),
22
+ toolProductUuid: optionalText(raw.toolProductUuid),
23
+ download: optionalText(raw.download),
24
+ downloadItem: optionalInteger(raw.downloadItem, "--downloadItem"),
25
+ downloadLabel: optionalText(raw.downloadLabel),
26
+ };
27
+ }
28
+ export function collectRepeat(_value, previous) {
29
+ return [...(previous ?? []), _value];
30
+ }
31
+ function stringList(value) {
32
+ if (Array.isArray(value)) {
33
+ return value.filter((item) => typeof item === "string");
34
+ }
35
+ return typeof value === "string" && value ? [value] : [];
36
+ }
37
+ function optionalText(value) {
38
+ return typeof value === "string" && value.trim() ? value : undefined;
39
+ }
40
+ function optionalIndex(value, flag) {
41
+ if (value === undefined || value === null || value === "")
42
+ return undefined;
43
+ const raw = String(value);
44
+ if (!/^(0|[1-9]\d*)$/.test(raw)) {
45
+ throw new AnalysisError(`${flag} 无效: ${raw}`);
46
+ }
47
+ return Number(raw);
48
+ }
49
+ function optionalInteger(value, flag) {
50
+ if (value === undefined || value === null || value === "")
51
+ return undefined;
52
+ const raw = String(value);
53
+ if (!/^-?\d+$/.test(raw)) {
54
+ throw new AnalysisError(`${flag} 无效: ${raw}`);
55
+ }
56
+ return Number(raw);
57
+ }
58
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../src/modules/analysis/flags.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmB/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2J/D"}
@@ -1,24 +1,170 @@
1
1
  import { emitJson } from "../../core/index.js";
2
2
  import { ANALYSIS_EXPERT_ID, ANALYSIS_EXPERT_TITLE } from "./constants.js";
3
- // 注册数据分析专家命名空间:helixlife-expert analysis info
4
- // 业务执行经外部仙桃 CLI(xt,npm: @helixlife-ai/xiantao),与本 CLI 共用 ~/.config/helixlife 授权
3
+ import { runAnalysisCommand, runHistoryDelete, runHistoryDownload, runHistoryList, runHistoryRename, runHistorySave, runHistoryView, runSpecificSearch, runToolCloud, runToolExec, runToolInspect, runToolMenus, runToolPrepare, runToolSearch, } from "./commands.js";
4
+ const FORMAT = ["--format <format>", "输出格式:markdown | json(本命令固定 JSON)", "json"];
5
+ function collect(value, previous = []) {
6
+ return [...previous, value];
7
+ }
8
+ function addResolveOptions(command) {
9
+ return command
10
+ .option("--toolProductUuid <uuid>", "工具产品 UUID,默认主产品")
11
+ .option("--uuid <uuid>", "工具 UUID;与 --route 同时传入时跳过菜单解析")
12
+ .option("--route <route>", "工具 route,例如 app1.violin_flat")
13
+ .option("--menuUuid <uuid>", "菜单 UUID");
14
+ }
15
+ function addInputOptions(command) {
16
+ return command
17
+ .option("--demo", "使用模块默认远端示例输入")
18
+ .option("--file <path>", "本地文件;可重复,多上传写成 key=path", collect, [])
19
+ .option("--set <entry>", "覆盖 args_main,点分路径,例如 title.title=My Title", collect, [])
20
+ .option("--specific <entry>", "覆盖 args_specific,例如 genes=TP53", collect, [])
21
+ .option("--config <path>", "args_main 覆盖 JSON 文件")
22
+ .option("--cloudDataId <id>", "按 data_id 选择云端记录")
23
+ .option("--cloudFilter <keyword>", "按疾病或关键词筛选云端记录")
24
+ .option("--cloudIndex <n>", "云端记录的 0 起序号")
25
+ .option("--cloudKey <key>", "云端字段名,例如 surv")
26
+ .option("--cloudRecordJson <json>", "选中的云端记录 JSON")
27
+ .option("--cloudRecordFile <path>", "选中的云端记录 JSON 文件")
28
+ .option("--recordKey <key>", "XTRecord 字段名")
29
+ .option("--recordId <id>", "按 record_id 选择历史记录")
30
+ .option("--recordJson <json>", "选中的历史记录 JSON")
31
+ .option("--recordFile <path>", "选中的历史记录 JSON 文件");
32
+ }
33
+ // 注册数据分析专家:业务命令在本 CLI 内调用菜单、生信统一入口和原上传接口
5
34
  export function registerAnalysisCommands(program) {
6
- const analysis = program
7
- .command(ANALYSIS_EXPERT_ID)
8
- .description(ANALYSIS_EXPERT_TITLE);
35
+ const analysis = program.command(ANALYSIS_EXPERT_ID).description(ANALYSIS_EXPERT_TITLE);
9
36
  analysis
10
37
  .command("info")
11
38
  .description("查看数据分析专家模块状态")
12
- .option("--format <format>", "输出格式:markdown | json(本命令固定 JSON)", "json")
39
+ .option(...FORMAT)
13
40
  .action(() => {
14
41
  emitJson({
15
42
  ok: true,
16
43
  expert: ANALYSIS_EXPERT_ID,
17
44
  title: ANALYSIS_EXPERT_TITLE,
18
45
  implemented: true,
19
- runtime: "external",
20
- note: "分析/绘图经外部仙桃 CLI(xt,npm: @helixlife-ai/xiantao)执行,与本 CLI 共用 ~/.config/helixlife 授权",
46
+ runtime: "internal",
47
+ note: "分析/绘图由本 CLI 直接调用菜单、生信统一入口与上传接口,凭证为 ~/.config/helixlife",
21
48
  });
22
49
  });
50
+ const tool = analysis.command("tool").description("检索、检视并执行数据分析工具");
51
+ tool
52
+ .command("search <keyword>")
53
+ .description("按工具 id、标题、路径或 route 搜索")
54
+ .option("--toolProductUuid <uuid>", "工具产品 UUID,默认主产品")
55
+ .option(...FORMAT)
56
+ .action(async (keyword, opts) => {
57
+ await runAnalysisCommand("tool search", () => runToolSearch(keyword, opts.toolProductUuid));
58
+ });
59
+ tool
60
+ .command("menus")
61
+ .description("列出工具目录(标题、module_id、path、route)")
62
+ .option("--toolProductUuid <uuid>", "工具产品 UUID,默认主产品")
63
+ .option(...FORMAT)
64
+ .action(async (opts) => {
65
+ await runAnalysisCommand("tool menus", () => runToolMenus(opts.toolProductUuid));
66
+ });
67
+ tool
68
+ .command("inspect <tool>")
69
+ .description("查看工具动态输入与参数 schema")
70
+ .option("--toolProductUuid <uuid>", "工具产品 UUID,默认主产品")
71
+ .option(...FORMAT)
72
+ .action(async (name, opts) => {
73
+ await runAnalysisCommand("tool inspect", () => runToolInspect(name, opts.toolProductUuid));
74
+ });
75
+ const cloud = tool
76
+ .command("cloud <tool>")
77
+ .description("分页列出工具的云端数据候选")
78
+ .option("--filter <keyword>", "云端筛选词,例如疾病名")
79
+ .option("--page <n>", "页码,从 1 开始", "1")
80
+ .option("--all", "从当前页合并到最后一页")
81
+ .option("--argsKey <key>", "云端字段名;默认识别")
82
+ .option("--recordJson <json>", "当前云端记录种子 JSON")
83
+ .option("--recordFile <path>", "当前云端记录种子 JSON 文件")
84
+ .option("--uuid <uuid>", "工具 UUID")
85
+ .option("--toolProductUuid <uuid>", "工具产品 UUID,默认主产品")
86
+ .option(...FORMAT);
87
+ cloud.action(async (name, opts) => {
88
+ await runAnalysisCommand("tool cloud", () => runToolCloud(name, opts));
89
+ });
90
+ const specific = tool
91
+ .command("specific-search <tool> <argsKey> <query>")
92
+ .description("搜索动态 args_specific 的可选值")
93
+ .option("--selected <value>", "当前已选值")
94
+ .option(...FORMAT);
95
+ addResolveOptions(specific);
96
+ addInputOptions(specific);
97
+ specific.action(async (name, argsKey, query, opts) => {
98
+ await runAnalysisCommand("tool specific-search", () => runSpecificSearch(name, argsKey, query, opts));
99
+ });
100
+ const prepare = tool
101
+ .command("prepare <tool>")
102
+ .description("准备输入并返回最终动态 schema")
103
+ .option(...FORMAT);
104
+ addResolveOptions(prepare);
105
+ addInputOptions(prepare);
106
+ prepare.action(async (name, opts) => {
107
+ await runAnalysisCommand("tool prepare", () => runToolPrepare(name, opts));
108
+ });
109
+ const exec = tool
110
+ .command("exec <tool>")
111
+ .description("提交分析;需要落盘时加 --download")
112
+ .option("--download <path>", "提交后下载到本地路径")
113
+ .option("--downloadItem <n>", "多个产物时按 1 起序号选择")
114
+ .option("--downloadLabel <text>", "多个产物时按名称选择")
115
+ .option(...FORMAT);
116
+ addResolveOptions(exec);
117
+ addInputOptions(exec);
118
+ exec.action(async (name, opts) => {
119
+ await runAnalysisCommand("tool exec", () => runToolExec(name, opts));
120
+ });
121
+ const history = analysis.command("history").description("查看、下载和管理分析历史");
122
+ history
123
+ .command("list")
124
+ .description("列出历史记录")
125
+ .option("--page <n>", "页码,从 1 开始", "1")
126
+ .option(...FORMAT)
127
+ .action(async (opts) => {
128
+ await runAnalysisCommand("history list", () => runHistoryList(opts.page));
129
+ });
130
+ history
131
+ .command("view <fuid>")
132
+ .description("查看一条历史记录的可下载文件")
133
+ .option(...FORMAT)
134
+ .action(async (fuid) => {
135
+ await runAnalysisCommand("history view", () => runHistoryView(fuid));
136
+ });
137
+ history
138
+ .command("download <fuid>")
139
+ .description("下载历史产物")
140
+ .option("--device <format>", "期望格式,例如 pdf、xlsx、zip")
141
+ .option("--item <n>", "按 1 起序号选择下载项")
142
+ .option("--label <text>", "按名称选择下载项")
143
+ .option("--output <path>", "保存路径,默认下载目录")
144
+ .option(...FORMAT)
145
+ .action(async (fuid, opts) => {
146
+ await runAnalysisCommand("history download", () => runHistoryDownload(fuid, opts));
147
+ });
148
+ history
149
+ .command("rename <fuid> <name>")
150
+ .description("重命名历史记录")
151
+ .option(...FORMAT)
152
+ .action(async (fuid, name) => {
153
+ await runAnalysisCommand("history rename", () => runHistoryRename(fuid, name));
154
+ });
155
+ history
156
+ .command("delete <fuid>")
157
+ .description("删除历史记录")
158
+ .option(...FORMAT)
159
+ .action(async (fuid) => {
160
+ await runAnalysisCommand("history delete", () => runHistoryDelete(fuid));
161
+ });
162
+ history
163
+ .command("save <fuid> <uuid> <moduleId> <name>")
164
+ .description("把直接分析结果保存到历史")
165
+ .option(...FORMAT)
166
+ .action(async (fuid, uuid, moduleId, name) => {
167
+ await runAnalysisCommand("history save", () => runHistorySave(fuid, uuid, moduleId, name));
168
+ });
23
169
  }
24
170
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,8CAA8C;AAC9C,gFAAgF;AAChF,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAEtC,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,cAAc,CAAC;SAC3B,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,MAAM,CAAC;SACvE,MAAM,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC;YACP,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,qBAAqB;YAC5B,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,kFAAkF;SACzF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type JsonObject } from "./json.js";
2
+ export interface DemoUpload {
3
+ fileName: string;
4
+ fileOss: string;
5
+ fileSize: number;
6
+ }
7
+ export interface UploadField {
8
+ key: string;
9
+ label: string;
10
+ required: boolean;
11
+ defaultUpload: DemoUpload | null;
12
+ }
13
+ export interface RecordDefault {
14
+ key: string;
15
+ label: string;
16
+ moduleId: string;
17
+ moduleName: string;
18
+ recordId: string;
19
+ recordName: string;
20
+ time: string;
21
+ }
22
+ export interface RecordField {
23
+ label: string;
24
+ options: JsonObject[];
25
+ }
26
+ export interface CloudDefault {
27
+ key: string;
28
+ label: string;
29
+ record: JsonObject;
30
+ }
31
+ export declare function listUploadFields(argsData: unknown[]): UploadField[];
32
+ export declare function findDefaultRecord(argsData: unknown[]): RecordDefault | null;
33
+ export declare function findRecordField(argsData: unknown[], key: string): RecordField | null;
34
+ export declare function findArgsDataType(argsData: unknown[], key: string): string | null;
35
+ export declare function findDefaultCloud(argsData: unknown[]): CloudDefault | null;
36
+ //# sourceMappingURL=inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAsBnE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,GAAG,IAAI,CAmB3E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CASpF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAShF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,GAAG,IAAI,CAYzE"}
@@ -0,0 +1,120 @@
1
+ import { asArray, asObject, textOf } from "./json.js";
2
+ export function listUploadFields(argsData) {
3
+ return argsData.flatMap((item) => {
4
+ const field = asObject(item);
5
+ if (!field || field.type !== "XTUpload")
6
+ return [];
7
+ const key = textOf(field.key);
8
+ if (!key)
9
+ return [];
10
+ const defaults = asObject(field.default_value);
11
+ const fileName = textOf(defaults?.file_name);
12
+ const fileOss = textOf(defaults?.file_oss);
13
+ const fileSize = defaults?.file_size;
14
+ return [
15
+ {
16
+ key,
17
+ label: textOf(field.label),
18
+ required: field.required === true,
19
+ defaultUpload: fileName && fileOss && typeof fileSize === "number"
20
+ ? { fileName, fileOss, fileSize }
21
+ : null,
22
+ },
23
+ ];
24
+ });
25
+ }
26
+ export function findDefaultRecord(argsData) {
27
+ for (const item of argsData) {
28
+ const field = asObject(item);
29
+ if (!field || field.type !== "XTRecord")
30
+ continue;
31
+ const key = textOf(field.key);
32
+ const defaults = asObject(field.default_value);
33
+ const recordId = textOf(defaults?.record_id);
34
+ if (!key || !recordId)
35
+ continue;
36
+ return {
37
+ key,
38
+ label: textOf(field.label),
39
+ moduleId: textOf(defaults?.module_id),
40
+ moduleName: textOf(defaults?.module_name),
41
+ recordId,
42
+ recordName: textOf(defaults?.record_name),
43
+ time: textOf(defaults?.time),
44
+ };
45
+ }
46
+ return null;
47
+ }
48
+ export function findRecordField(argsData, key) {
49
+ const wanted = key.trim();
50
+ if (!wanted)
51
+ return null;
52
+ for (const item of argsData) {
53
+ const field = asObject(item);
54
+ if (!field || field.type !== "XTRecord" || textOf(field.key) !== wanted)
55
+ continue;
56
+ return { label: textOf(field.label), options: listRecordOptions(field) };
57
+ }
58
+ return null;
59
+ }
60
+ export function findArgsDataType(argsData, key) {
61
+ const wanted = key.trim();
62
+ if (!wanted)
63
+ return null;
64
+ for (const item of argsData) {
65
+ const field = asObject(item);
66
+ if (!field || textOf(field.key) !== wanted)
67
+ continue;
68
+ return textOf(field.type);
69
+ }
70
+ return null;
71
+ }
72
+ export function findDefaultCloud(argsData) {
73
+ for (const item of argsData) {
74
+ const field = asObject(item);
75
+ if (!field)
76
+ continue;
77
+ const key = textOf(field.key);
78
+ if (!key)
79
+ continue;
80
+ const record = findCloudRecord(field);
81
+ if (record) {
82
+ return { key, label: textOf(field.label), record };
83
+ }
84
+ }
85
+ return null;
86
+ }
87
+ function listRecordOptions(field) {
88
+ const options = [];
89
+ for (const item of asArray(field.options)) {
90
+ const record = asObject(item);
91
+ if (record && textOf(record.record_id)) {
92
+ options.push(structuredClone(record));
93
+ }
94
+ }
95
+ if (options.length > 0)
96
+ return options;
97
+ const defaults = asObject(field.default_value);
98
+ if (defaults && textOf(defaults.record_id)) {
99
+ options.push(structuredClone(defaults));
100
+ }
101
+ return options;
102
+ }
103
+ function findCloudRecord(value, depth = 0) {
104
+ if (!isPlain(value) || depth > 3)
105
+ return null;
106
+ if (textOf(value.data_id))
107
+ return structuredClone(value);
108
+ for (const child of Object.values(value)) {
109
+ if (!isPlain(child))
110
+ continue;
111
+ const found = findCloudRecord(child, depth + 1);
112
+ if (found)
113
+ return found;
114
+ }
115
+ return null;
116
+ }
117
+ function isPlain(value) {
118
+ return asObject(value) !== undefined;
119
+ }
120
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/modules/analysis/inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type JsonObject = Record<string, unknown>;
2
+ export declare function isJsonObject(value: unknown): value is JsonObject;
3
+ export declare function asObject(value: unknown): JsonObject | undefined;
4
+ export declare function asArray(value: unknown): unknown[];
5
+ export declare function textOf(value: unknown): string;
6
+ export declare function deepMerge(base: JsonObject, ...layers: JsonObject[]): JsonObject;
7
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/json.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAE/D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAEjD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAM/E"}
@@ -0,0 +1,30 @@
1
+ export function isJsonObject(value) {
2
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3
+ }
4
+ export function asObject(value) {
5
+ return isJsonObject(value) ? value : undefined;
6
+ }
7
+ export function asArray(value) {
8
+ return Array.isArray(value) ? value : [];
9
+ }
10
+ export function textOf(value) {
11
+ return typeof value === "string" ? value.trim() : "";
12
+ }
13
+ export function deepMerge(base, ...layers) {
14
+ const result = structuredClone(base);
15
+ for (const layer of layers) {
16
+ mergeInto(result, layer);
17
+ }
18
+ return result;
19
+ }
20
+ function mergeInto(target, source) {
21
+ for (const [key, value] of Object.entries(source)) {
22
+ const current = target[key];
23
+ if (isJsonObject(current) && isJsonObject(value)) {
24
+ mergeInto(current, value);
25
+ continue;
26
+ }
27
+ target[key] = structuredClone(value);
28
+ }
29
+ }
30
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/modules/analysis/json.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAgB,EAAE,GAAG,MAAoB;IACjE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,MAAkB,EAAE,MAAkB;IACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type JsonObject } from "./json.js";
2
+ export declare function parseSetOverrides(entries: string[] | undefined): JsonObject;
3
+ export declare function assertOverrideSides(input: {
4
+ sets?: string[];
5
+ specifics?: string[];
6
+ mainSchema: unknown[];
7
+ specificSchema: unknown[];
8
+ }): void;
9
+ export declare function clarifyConfArgsMessage(message: string): string;
10
+ export declare function applySpecificOverrides(base: JsonObject, entries: string[] | undefined): JsonObject;
11
+ export declare function loadArgsMainConfig(moduleId: string, configPath: string | undefined): Promise<JsonObject>;
12
+ //# sourceMappingURL=overrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/overrides.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAI7E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,UAAU,CAiB3E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,cAAc,EAAE,OAAO,EAAE,CAAC;CAC3B,GAAG,IAAI,CAKP;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO9D;AA+BD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,UAAU,CAuBlG;AAGD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,UAAU,CAAC,CAsBrB"}