helixlife-expert-cli 0.5.8 → 0.6.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 (66) hide show
  1. package/README.md +5 -5
  2. package/cli/dist/core/api/client.d.ts +1 -1
  3. package/cli/dist/core/api/client.d.ts.map +1 -1
  4. package/cli/dist/core/api/client.js +39 -35
  5. package/cli/dist/core/api/client.js.map +1 -1
  6. package/cli/dist/core/api/response.d.ts.map +1 -1
  7. package/cli/dist/core/api/response.js +12 -8
  8. package/cli/dist/core/api/response.js.map +1 -1
  9. package/cli/dist/core/env-config.d.ts +2 -2
  10. package/cli/dist/core/env-config.d.ts.map +1 -1
  11. package/cli/dist/core/env-config.js +44 -23
  12. package/cli/dist/core/env-config.js.map +1 -1
  13. package/cli/dist/core/index.d.ts +1 -1
  14. package/cli/dist/core/index.d.ts.map +1 -1
  15. package/cli/dist/core/index.js +1 -1
  16. package/cli/dist/core/index.js.map +1 -1
  17. package/cli/dist/core/token/index.js +1 -1
  18. package/cli/dist/core/token/index.js.map +1 -1
  19. package/cli/dist/core/types/config.d.ts.map +1 -1
  20. package/cli/dist/core/types/config.js +3 -2
  21. package/cli/dist/core/types/config.js.map +1 -1
  22. package/cli/dist/modules/analysis/api.d.ts.map +1 -1
  23. package/cli/dist/modules/analysis/api.js +12 -47
  24. package/cli/dist/modules/analysis/api.js.map +1 -1
  25. package/cli/dist/modules/analysis/files.d.ts.map +1 -1
  26. package/cli/dist/modules/analysis/files.js +2 -1
  27. package/cli/dist/modules/analysis/files.js.map +1 -1
  28. package/cli/dist/modules/analysis/throttle.d.ts +6 -0
  29. package/cli/dist/modules/analysis/throttle.d.ts.map +1 -0
  30. package/cli/dist/modules/analysis/throttle.js +39 -0
  31. package/cli/dist/modules/analysis/throttle.js.map +1 -0
  32. package/cli/dist/modules/meta/api.js +1 -1
  33. package/cli/dist/modules/meta/api.js.map +1 -1
  34. package/package.json +1 -1
  35. package/cli/dist/core/auth/index.d.ts +0 -35
  36. package/cli/dist/core/auth/index.d.ts.map +0 -1
  37. package/cli/dist/core/auth/index.js +0 -150
  38. package/cli/dist/core/auth/index.js.map +0 -1
  39. package/cli/dist/modules/auth/index.d.ts +0 -3
  40. package/cli/dist/modules/auth/index.d.ts.map +0 -1
  41. package/cli/dist/modules/auth/index.js +0 -76
  42. package/cli/dist/modules/auth/index.js.map +0 -1
  43. package/cli/dist/modules/proposal/artifacts.d.ts +0 -18
  44. package/cli/dist/modules/proposal/artifacts.d.ts.map +0 -1
  45. package/cli/dist/modules/proposal/artifacts.js +0 -43
  46. package/cli/dist/modules/proposal/artifacts.js.map +0 -1
  47. package/cli/dist/modules/proposal/commands/basic-create.d.ts +0 -22
  48. package/cli/dist/modules/proposal/commands/basic-create.d.ts.map +0 -1
  49. package/cli/dist/modules/proposal/commands/basic-create.js +0 -81
  50. package/cli/dist/modules/proposal/commands/basic-create.js.map +0 -1
  51. package/cli/dist/modules/proposal/commands/basic-result.d.ts +0 -24
  52. package/cli/dist/modules/proposal/commands/basic-result.d.ts.map +0 -1
  53. package/cli/dist/modules/proposal/commands/basic-result.js +0 -96
  54. package/cli/dist/modules/proposal/commands/basic-result.js.map +0 -1
  55. package/cli/dist/modules/proposal/newidea-env.d.ts +0 -28
  56. package/cli/dist/modules/proposal/newidea-env.d.ts.map +0 -1
  57. package/cli/dist/modules/proposal/newidea-env.js +0 -69
  58. package/cli/dist/modules/proposal/newidea-env.js.map +0 -1
  59. package/cli/dist/modules/proposal/newidea-runner.d.ts +0 -25
  60. package/cli/dist/modules/proposal/newidea-runner.d.ts.map +0 -1
  61. package/cli/dist/modules/proposal/newidea-runner.js +0 -158
  62. package/cli/dist/modules/proposal/newidea-runner.js.map +0 -1
  63. package/cli/dist/modules/proposal/parse.d.ts +0 -25
  64. package/cli/dist/modules/proposal/parse.d.ts.map +0 -1
  65. package/cli/dist/modules/proposal/parse.js +0 -173
  66. package/cli/dist/modules/proposal/parse.js.map +0 -1
@@ -1,81 +0,0 @@
1
- // 课题方案 - 基础研究(第一步):发起 newidea 异步任务,返回任务标识供轮询
2
- import { readFile } from "node:fs/promises";
3
- import { helixlifeError, helixlifeErrorCode, printOutput, resolveUserPath, } from "../../../core/index.js";
4
- import { wrapWorkbenchResult } from "../../shared/result-wrapper.js";
5
- import { PROPOSAL_BASIC_TOOL_ID } from "../constants.js";
6
- import { runNewideaJson } from "../newidea-runner.js";
7
- import { parseRunRecordId } from "../parse.js";
8
- import { runProposalBasicResult } from "./basic-result.js";
9
- const MAX_INPUT_CHARS = 20_000;
10
- /** 课题条件文本:--input 与 --input-file 二选一 */
11
- export async function resolveProposalInput(options) {
12
- if (options.input && options.inputFile) {
13
- throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, "--input 与 --input-file 互斥,请二选一");
14
- }
15
- let text = options.input?.trim() ?? "";
16
- if (options.inputFile) {
17
- try {
18
- text = (await readFile(resolveUserPath(options.inputFile), "utf8")).trim();
19
- }
20
- catch {
21
- throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, `无法读取课题条件文件: ${options.inputFile}`);
22
- }
23
- }
24
- if (!text) {
25
- throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, "请通过 --input <课题条件> 或 --input-file <path> 提供课题条件");
26
- }
27
- if (text.length > MAX_INPUT_CHARS) {
28
- throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, `课题条件过长(${text.length} 字符),请压缩到 ${MAX_INPUT_CHARS} 字符以内`);
29
- }
30
- return text;
31
- }
32
- /** 发起任务并解析任务标识;start 输出不含标识时回落最近一条记录 */
33
- export async function startProposalBasicTask(topic) {
34
- const started = await runNewideaJson([
35
- "invocation",
36
- "start",
37
- PROPOSAL_BASIC_TOOL_ID,
38
- "--input",
39
- topic,
40
- "--json",
41
- ]);
42
- const direct = parseRunRecordId(started);
43
- if (direct) {
44
- return direct;
45
- }
46
- const last = await runNewideaJson(["invocation", "last", "--json"]);
47
- const fallback = parseRunRecordId(last);
48
- if (fallback) {
49
- return fallback;
50
- }
51
- throw new helixlifeError(helixlifeErrorCode.INVALID_RESPONSE, "任务已提交但未能解析任务标识,请稍后重试");
52
- }
53
- export async function runCreateProposalBasic(options = {}) {
54
- const format = options.format ?? "json";
55
- const topic = await resolveProposalInput(options);
56
- const runRecordId = await startProposalBasicTask(topic);
57
- if (options.wait) {
58
- await runProposalBasicResult({
59
- runRecordId,
60
- topic,
61
- wait: true,
62
- maxWaitMs: options.maxWaitMs,
63
- download: options.download,
64
- format,
65
- });
66
- return;
67
- }
68
- const result = {
69
- status: "running",
70
- topic,
71
- note: "任务已发起,请用 proposal basic result 轮询进度,直到返回产物链接或失败",
72
- };
73
- if (format === "json") {
74
- printOutput(wrapWorkbenchResult(result, { step: "create", subType: "basic" }, {
75
- runRecordId,
76
- }), "json");
77
- return;
78
- }
79
- console.log("课题方案(基础研究)任务已发起,接口正在处理中,请耐心等待...");
80
- }
81
- //# sourceMappingURL=basic-create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic-create.js","sourceRoot":"","sources":["../../../../src/modules/proposal/commands/basic-create.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,GAEhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,eAAe,GAAG,MAAM,CAAC;AAmB/B,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAmC;IAEnC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,gBAAgB,EACnC,gCAAgC,CACjC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,CACL,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAC3D,CAAC,IAAI,EAAE,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,gBAAgB,EACnC,eAAe,OAAO,CAAC,SAAS,EAAE,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,gBAAgB,EACnC,iDAAiD,CAClD,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAClC,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,gBAAgB,EACnC,UAAU,IAAI,CAAC,MAAM,aAAa,eAAe,OAAO,CACzD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAa;IACxD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;QACnC,YAAY;QACZ,OAAO;QACP,sBAAsB;QACtB,SAAS;QACT,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,gBAAgB,EACnC,sBAAsB,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAsC,EAAE;IAExC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAExD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,sBAAsB,CAAC;YAC3B,WAAW;YACX,KAAK;YACL,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM;SACP,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAA8B;QACxC,MAAM,EAAE,SAAS;QACjB,KAAK;QACL,IAAI,EAAE,iDAAiD;KACxD,CAAC;IAEF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,WAAW,CACT,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;YAChE,WAAW;SACZ,CAAC,EACF,MAAM,CACP,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAClD,CAAC"}
@@ -1,24 +0,0 @@
1
- import { type OutputFormat } from "../../../core/index.js";
2
- export interface ProposalBasicResultOptions {
3
- runRecordId: string;
4
- topic?: string;
5
- wait?: boolean;
6
- maxWaitMs?: number;
7
- /** 传入目录则额外把 ZIP 存到本地(不解压);空字符串表示用默认目录 */
8
- download?: string;
9
- format?: OutputFormat;
10
- }
11
- export interface ProposalBasicResultData {
12
- status: "running" | "success";
13
- note: string;
14
- /** 成功且服务端返回产物时给出 ZIP 直链 */
15
- zipUrl?: string;
16
- zipPath?: string;
17
- zipBytes?: number;
18
- }
19
- /**
20
- * 轮询任务进度直到成功 / 失败。`--wait` 下单条命令最多等待 maxWaitMs
21
- * (受 Shell 单条命令预算限制),到点仍在生成则返回 running,由上层再调一次继续轮询。
22
- */
23
- export declare function runProposalBasicResult(options: ProposalBasicResultOptions): Promise<ProposalBasicResultData>;
24
- //# sourceMappingURL=basic-result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic-result.d.ts","sourceRoot":"","sources":["../../../../src/modules/proposal/commands/basic-result.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAahC,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkBD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,uBAAuB,CAAC,CAqFlC"}
@@ -1,96 +0,0 @@
1
- // 课题方案 - 基础研究(第二步):轮询任务进度,成功后交付 ZIP 直链(可选落盘)
2
- import { helixlifeError, helixlifeErrorCode, printOutput, } from "../../../core/index.js";
3
- import { wrapWorkbenchResult } from "../../shared/result-wrapper.js";
4
- import { downloadProposalArtifact } from "../artifacts.js";
5
- import { PROPOSAL_DEFAULT_WAIT_MS, PROPOSAL_POLL_INTERVAL_MS, } from "../constants.js";
6
- import { runNewideaJson } from "../newidea-runner.js";
7
- import { normalizeInvocationProcess, } from "../parse.js";
8
- function sleep(ms) {
9
- return new Promise((resolve) => setTimeout(resolve, ms));
10
- }
11
- async function queryProcess(runRecordId) {
12
- const raw = await runNewideaJson([
13
- "invocation",
14
- "process",
15
- runRecordId,
16
- "--json",
17
- ]);
18
- return normalizeInvocationProcess(raw);
19
- }
20
- /**
21
- * 轮询任务进度直到成功 / 失败。`--wait` 下单条命令最多等待 maxWaitMs
22
- * (受 Shell 单条命令预算限制),到点仍在生成则返回 running,由上层再调一次继续轮询。
23
- */
24
- export async function runProposalBasicResult(options) {
25
- const format = options.format ?? "json";
26
- const runRecordId = options.runRecordId?.trim();
27
- if (!runRecordId) {
28
- throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, "缺少参数 --run-record-id");
29
- }
30
- const maxWaitMs = options.wait
31
- ? (options.maxWaitMs ?? PROPOSAL_DEFAULT_WAIT_MS)
32
- : 0;
33
- const startedAt = Date.now();
34
- let snapshot = await queryProcess(runRecordId);
35
- while (snapshot.status === "running") {
36
- const elapsed = Date.now() - startedAt;
37
- if (elapsed + PROPOSAL_POLL_INTERVAL_MS > maxWaitMs) {
38
- break;
39
- }
40
- await sleep(PROPOSAL_POLL_INTERVAL_MS);
41
- snapshot = await queryProcess(runRecordId);
42
- }
43
- if (snapshot.status === "failed") {
44
- throw new helixlifeError(helixlifeErrorCode.REQUEST_FAILED, `课题方案生成失败:${snapshot.error ?? snapshot.rawStatus ?? "未知原因"}`);
45
- }
46
- let data;
47
- if (snapshot.status === "running") {
48
- data = {
49
- status: "running",
50
- note: "接口正在处理中,请继续轮询进度",
51
- };
52
- }
53
- else if (!snapshot.artifacts) {
54
- data = {
55
- status: "success",
56
- note: "任务已完成但未返回产物,请联系服务方核查",
57
- };
58
- }
59
- else {
60
- data = {
61
- status: "success",
62
- note: "课题方案已生成,可通过链接下载压缩包",
63
- zipUrl: snapshot.artifacts,
64
- };
65
- if (options.download !== undefined) {
66
- const saved = await downloadProposalArtifact({
67
- url: snapshot.artifacts,
68
- runRecordId,
69
- topic: options.topic,
70
- outputDir: options.download || undefined,
71
- });
72
- data.zipPath = saved.zipPath;
73
- data.zipBytes = saved.bytes;
74
- data.note = "课题方案已生成,压缩包已保存到本地";
75
- }
76
- }
77
- if (format === "json") {
78
- printOutput(wrapWorkbenchResult(data, { step: "result", subType: "basic" }, {
79
- runRecordId,
80
- }), "json");
81
- return data;
82
- }
83
- if (data.status === "running") {
84
- console.log("接口正在处理中,请耐心等待...");
85
- return data;
86
- }
87
- console.log(data.note);
88
- if (data.zipUrl) {
89
- console.log(`下载链接: ${data.zipUrl}`);
90
- }
91
- if (data.zipPath) {
92
- console.log(`本地文件: ${data.zipPath} (${data.zipBytes} 字节)`);
93
- }
94
- return data;
95
- }
96
- //# sourceMappingURL=basic-result.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic-result.js","sourceRoot":"","sources":["../../../../src/modules/proposal/commands/basic-result.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /** newidea 本地配置文件(与 helixlife-expert 的 config.json 分离) */
2
- export declare const NEWIDEA_CONFIG_RELATIVE_PATH = ".config/newidea/config.json";
3
- /** newidea 支持的配置项(见 @helixlife-ai/newidea README) */
4
- export type NewideaConfigKey = "auth-api-url" | "agent-url" | "base-url" | "api-url" | "completion-url" | "diagram-api-url";
5
- /** 生产默认 invocation 前缀(newidea 包内默认值) */
6
- export declare const NEWIDEA_DEFAULT_AGENT_URL = "https://agent-service.newidea.pro/api/v1";
7
- /**
8
- * 测试/预发(api.helixlife.net)联调用的 invocation 前缀。
9
- * 可通过环境变量 NEWIDEA_AGENT_URL 或 `newidea config set agent-url` 覆盖。
10
- */
11
- export declare const NEWIDEA_TEST_AGENT_URL: string;
12
- export interface NewideaEnvRecommendation {
13
- /** helixlife-expert 当前生效的业务 api */
14
- helix_api: string;
15
- /** helixlife-expert 当前生效的 agent_api */
16
- helix_agent_api: string;
17
- profile: "test" | "production" | "custom";
18
- newidea_config_path: string;
19
- /** 写入 ~/.config/newidea/config.json 的键值 */
20
- newidea_config: Partial<Record<NewideaConfigKey, string>>;
21
- /** 与 newidea 包一致的环境变量名(优先级高于配置文件) */
22
- env_vars: Record<string, string>;
23
- setup_commands: string[];
24
- notes: string[];
25
- }
26
- /** 根据 helixlife-expert 当前 api/agent_api 生成 newidea 应对齐的独立配置建议 */
27
- export declare function getNewideaEnvRecommendation(): NewideaEnvRecommendation;
28
- //# sourceMappingURL=newidea-env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"newidea-env.d.ts","sourceRoot":"","sources":["../../../src/modules/proposal/newidea-env.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAE1E,qDAAqD;AACrD,MAAM,MAAM,gBAAgB,GACxB,cAAc,GACd,WAAW,GACX,UAAU,GACV,SAAS,GACT,gBAAgB,GAChB,iBAAiB,CAAC;AAQtB,wCAAwC;AACxC,eAAO,MAAM,yBAAyB,6CACM,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAGR,CAAC;AAE5B,MAAM,WAAW,wBAAwB;IACvC,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAgBD,iEAAiE;AACjE,wBAAgB,2BAA2B,IAAI,wBAAwB,CAiDtE"}
@@ -1,69 +0,0 @@
1
- import { getDefaultAuthBaseUrl, getDefaultBaseUrl } from "../../core/index.js";
2
- /** newidea 本地配置文件(与 helixlife-expert 的 config.json 分离) */
3
- export const NEWIDEA_CONFIG_RELATIVE_PATH = ".config/newidea/config.json";
4
- /** 与 helixlife-expert `api` 基址对齐的 newidea `auth-api-url` 建议值 */
5
- const AUTH_API_BY_HELIX_API = {
6
- "https://api.helixlife.net": "https://agent.helixlife.net/api/v1",
7
- "https://api.helixlife.cn": "https://agent.helixlife.cn/api/v1",
8
- };
9
- /** 生产默认 invocation 前缀(newidea 包内默认值) */
10
- export const NEWIDEA_DEFAULT_AGENT_URL = "https://agent-service.newidea.pro/api/v1";
11
- /**
12
- * 测试/预发(api.helixlife.net)联调用的 invocation 前缀。
13
- * 可通过环境变量 NEWIDEA_AGENT_URL 或 `newidea config set agent-url` 覆盖。
14
- */
15
- export const NEWIDEA_TEST_AGENT_URL = process.env.NEWIDEA_TEST_AGENT_URL?.trim() ||
16
- process.env.NEWIDEA_AGENT_URL?.trim() ||
17
- NEWIDEA_DEFAULT_AGENT_URL;
18
- function normalizeBase(url) {
19
- return url.trim().replace(/\/+$/, "");
20
- }
21
- function resolveProfile(helixApi) {
22
- if (helixApi.includes("helixlife.net")) {
23
- return "test";
24
- }
25
- if (helixApi.includes("helixlife.cn")) {
26
- return "production";
27
- }
28
- return "custom";
29
- }
30
- /** 根据 helixlife-expert 当前 api/agent_api 生成 newidea 应对齐的独立配置建议 */
31
- export function getNewideaEnvRecommendation() {
32
- const helixApi = normalizeBase(getDefaultBaseUrl());
33
- const helixAgentApi = normalizeBase(getDefaultAuthBaseUrl());
34
- const profile = resolveProfile(helixApi);
35
- const authApiUrl = AUTH_API_BY_HELIX_API[helixApi] ??
36
- `${helixAgentApi}/api/v1`.replace(/\/api\/v1\/api\/v1$/, "/api/v1");
37
- const agentUrl = profile === "test" ? NEWIDEA_TEST_AGENT_URL : NEWIDEA_DEFAULT_AGENT_URL;
38
- const newidea_config = {
39
- "auth-api-url": authApiUrl,
40
- "agent-url": agentUrl,
41
- };
42
- const env_vars = {
43
- HELIXLIFE_AUTH_API_URL: authApiUrl,
44
- NEWIDEA_AGENT_URL: agentUrl,
45
- };
46
- const setup_commands = [
47
- `newidea config set auth-api-url ${authApiUrl}`,
48
- `newidea config set agent-url ${agentUrl}`,
49
- ];
50
- const notes = [
51
- "newidea 不读取 ~/.config/helixlife/config.json;仅共用 user-access-token.txt。",
52
- "newidea 配置写入 ~/.config/newidea/config.json,或使用 HELIXLIFE_AUTH_API_URL / NEWIDEA_AGENT_URL 等环境变量(优先级更高)。",
53
- "修改 helixlife-expert 的 api/agent_api 不会自动同步 newidea,需按本建议单独设置。",
54
- ];
55
- if (profile === "test") {
56
- notes.push("测试 token(api.helixlife.net)与生产 invocation 网关的鉴权体系可能不一致;若 invocation start 仍报 Token 无效,需后台提供测试环境 agent-url 或开通网关认测试 token。");
57
- }
58
- return {
59
- helix_api: helixApi,
60
- helix_agent_api: helixAgentApi,
61
- profile,
62
- newidea_config_path: NEWIDEA_CONFIG_RELATIVE_PATH,
63
- newidea_config,
64
- env_vars,
65
- setup_commands,
66
- notes,
67
- };
68
- }
69
- //# sourceMappingURL=newidea-env.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"newidea-env.js","sourceRoot":"","sources":["../../../src/modules/proposal/newidea-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AAW1E,gEAAgE;AAChE,MAAM,qBAAqB,GAAqC;IAC9D,2BAA2B,EAAE,oCAAoC;IACjE,0BAA0B,EAAE,mCAAmC;CAChE,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,yBAAyB,GACpC,0CAA0C,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE;IAC1C,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE;IACrC,yBAAyB,CAAC;AAiB5B,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,2BAA2B;IACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,UAAU,GACd,qBAAqB,CAAC,QAAQ,CAAC;QAC/B,GAAG,aAAa,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAEtE,MAAM,QAAQ,GACZ,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAE1E,MAAM,cAAc,GAA8C;QAChE,cAAc,EAAE,UAAU;QAC1B,WAAW,EAAE,QAAQ;KACtB,CAAC;IAEF,MAAM,QAAQ,GAA2B;QACvC,sBAAsB,EAAE,UAAU;QAClC,iBAAiB,EAAE,QAAQ;KAC5B,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,mCAAmC,UAAU,EAAE;QAC/C,gCAAgC,QAAQ,EAAE;KAC3C,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,wEAAwE;QACxE,yGAAyG;QACzG,+DAA+D;KAChE,CAAC;IAEF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR,2HAA2H,CAC5H,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,aAAa;QAC9B,OAAO;QACP,mBAAmB,EAAE,4BAA4B;QACjD,cAAc;QACd,QAAQ;QACR,cAAc;QACd,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -1,25 +0,0 @@
1
- export declare const NEWIDEA_PACKAGE = "@helixlife-ai/newidea";
2
- export interface NewideaRunner {
3
- /** 始终为当前 node 可执行文件,避免 Windows 上 .cmd/.ps1 shim 必须走 shell */
4
- execPath: string;
5
- /** 业务参数前的固定前缀:[run.js] 或 [npx-cli.js, --yes, <pkg>] */
6
- baseArgs: string[];
7
- /** 解析来源,写入结果供排查 */
8
- via: string;
9
- }
10
- /**
11
- * 解析 newidea 可执行入口,按序:环境变量覆盖 → 已装(全局/本地)→ 自动全局安装 → npx 兜底。
12
- * 结果在进程内缓存,一次命令里只解析一次。
13
- */
14
- export declare function resolveNewideaRunner(): Promise<NewideaRunner>;
15
- /** 仅供测试重置解析缓存 */
16
- export declare function __resetNewideaRunnerForTesting(): void;
17
- export interface RunNewideaOptions {
18
- timeoutMs?: number;
19
- }
20
- /**
21
- * 执行一条 newidea 命令并解析其 --json 输出。
22
- * 非零退出时若 stdout 仍带 JSON(CLI 的结构化报错),优先返回该 JSON 交上层判断。
23
- */
24
- export declare function runNewideaJson(args: string[], options?: RunNewideaOptions): Promise<unknown>;
25
- //# sourceMappingURL=newidea-runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"newidea-runner.d.ts","sourceRoot":"","sources":["../../../src/modules/proposal/newidea-runner.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAOvD,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAsDD;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAuDnE;AAED,iBAAiB;AACjB,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAwClB"}
@@ -1,158 +0,0 @@
1
- /**
2
- * newidea CLI 调用层
3
- *
4
- * 课题方案基础研究走外部 newidea 异步任务。用户输入的课题条件会作为参数传入,
5
- * 因此主路径一律用 `node <run.js> ...` + 参数数组、shell: false 执行,
6
- * 不经 shell 解析,规避命令注入。
7
- */
8
- import { exec, execFile } from "node:child_process";
9
- import { existsSync } from "node:fs";
10
- import { join } from "node:path";
11
- import { promisify } from "node:util";
12
- import { helixlifeError, helixlifeErrorCode } from "../../core/index.js";
13
- import { extractJsonFromStdout } from "./parse.js";
14
- const execFileAsync = promisify(execFile);
15
- // npm 在 Windows 上是 .cmd shim,必须经 shell;以下 npm 命令全为常量字符串,无注入面
16
- const execAsync = promisify(exec);
17
- export const NEWIDEA_PACKAGE = "@helixlife-ai/newidea";
18
- const NEWIDEA_BIN_RELATIVE = join("@helixlife-ai", "newidea", "bin", "run.js");
19
- const NPX_CLI_RELATIVE = join("npm", "bin", "npx-cli.js");
20
- const DEFAULT_EXEC_TIMEOUT_MS = 600_000;
21
- const MAX_STDOUT_BYTES = 20 * 1024 * 1024;
22
- let cachedRunner = null;
23
- async function readNpmRoot(global) {
24
- try {
25
- const { stdout } = await execAsync(global ? "npm root -g" : "npm root", {
26
- encoding: "utf-8",
27
- windowsHide: true,
28
- timeout: 60_000,
29
- });
30
- const dir = stdout.trim();
31
- return dir || null;
32
- }
33
- catch {
34
- return null;
35
- }
36
- }
37
- async function findRunJs() {
38
- const globalRoot = await readNpmRoot(true);
39
- if (globalRoot) {
40
- const candidate = join(globalRoot, NEWIDEA_BIN_RELATIVE);
41
- if (existsSync(candidate)) {
42
- return { path: candidate, via: "global" };
43
- }
44
- }
45
- const localRoot = await readNpmRoot(false);
46
- if (localRoot) {
47
- const candidate = join(localRoot, NEWIDEA_BIN_RELATIVE);
48
- if (existsSync(candidate)) {
49
- return { path: candidate, via: "local" };
50
- }
51
- }
52
- return null;
53
- }
54
- async function installNewideaGlobally() {
55
- await execAsync(`npm install -g ${NEWIDEA_PACKAGE}@latest`, {
56
- encoding: "utf-8",
57
- windowsHide: true,
58
- timeout: 300_000,
59
- });
60
- }
61
- async function findNpxCli() {
62
- const globalRoot = await readNpmRoot(true);
63
- if (!globalRoot) {
64
- return null;
65
- }
66
- const candidate = join(globalRoot, NPX_CLI_RELATIVE);
67
- return existsSync(candidate) ? candidate : null;
68
- }
69
- /**
70
- * 解析 newidea 可执行入口,按序:环境变量覆盖 → 已装(全局/本地)→ 自动全局安装 → npx 兜底。
71
- * 结果在进程内缓存,一次命令里只解析一次。
72
- */
73
- export async function resolveNewideaRunner() {
74
- if (cachedRunner) {
75
- return cachedRunner;
76
- }
77
- const override = process.env.HELIXLIFE_NEWIDEA_BIN?.trim();
78
- if (override) {
79
- if (!existsSync(override)) {
80
- throw new helixlifeError(helixlifeErrorCode.INVALID_ARGUMENT, `HELIXLIFE_NEWIDEA_BIN 指向的文件不存在:${override}`);
81
- }
82
- cachedRunner = {
83
- execPath: process.execPath,
84
- baseArgs: [override],
85
- via: "env",
86
- };
87
- return cachedRunner;
88
- }
89
- let found = await findRunJs();
90
- if (!found) {
91
- // 被动安装:仅在确实缺失时才装,不在会话开始预装
92
- try {
93
- await installNewideaGlobally();
94
- }
95
- catch {
96
- // 安装失败继续走 npx 兜底
97
- }
98
- found = await findRunJs();
99
- }
100
- if (found) {
101
- cachedRunner = {
102
- execPath: process.execPath,
103
- baseArgs: [found.path],
104
- via: found.via,
105
- };
106
- return cachedRunner;
107
- }
108
- const npxCli = await findNpxCli();
109
- if (npxCli) {
110
- cachedRunner = {
111
- execPath: process.execPath,
112
- baseArgs: [npxCli, "--yes", `${NEWIDEA_PACKAGE}@latest`],
113
- via: "npx",
114
- };
115
- return cachedRunner;
116
- }
117
- throw new helixlifeError(helixlifeErrorCode.REQUEST_FAILED, `未找到 ${NEWIDEA_PACKAGE},请手动执行 npm install -g ${NEWIDEA_PACKAGE}@latest 后重试(或用 HELIXLIFE_NEWIDEA_BIN 指定 bin/run.js 路径)`);
118
- }
119
- /** 仅供测试重置解析缓存 */
120
- export function __resetNewideaRunnerForTesting() {
121
- cachedRunner = null;
122
- }
123
- /**
124
- * 执行一条 newidea 命令并解析其 --json 输出。
125
- * 非零退出时若 stdout 仍带 JSON(CLI 的结构化报错),优先返回该 JSON 交上层判断。
126
- */
127
- export async function runNewideaJson(args, options = {}) {
128
- const runner = await resolveNewideaRunner();
129
- const timeout = options.timeoutMs ?? DEFAULT_EXEC_TIMEOUT_MS;
130
- try {
131
- const { stdout } = await execFileAsync(runner.execPath, [...runner.baseArgs, ...args], {
132
- encoding: "utf-8",
133
- windowsHide: true,
134
- timeout,
135
- maxBuffer: MAX_STDOUT_BYTES,
136
- });
137
- return extractJsonFromStdout(stdout);
138
- }
139
- catch (error) {
140
- const stdout = typeof error?.stdout === "string"
141
- ? error.stdout
142
- : "";
143
- if (stdout.trim()) {
144
- try {
145
- return extractJsonFromStdout(stdout);
146
- }
147
- catch {
148
- // 落到统一错误
149
- }
150
- }
151
- const stderr = typeof error?.stderr === "string"
152
- ? error.stderr.trim()
153
- : "";
154
- const message = stderr || (error instanceof Error ? error.message : String(error));
155
- throw new helixlifeError(helixlifeErrorCode.REQUEST_FAILED, `newidea 命令执行失败:${message}`, { cause: error });
156
- }
157
- }
158
- //# sourceMappingURL=newidea-runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"newidea-runner.js","sourceRoot":"","sources":["../../../src/modules/proposal/newidea-runner.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /** 归一后的任务状态:未知状态一律按 running 处理,避免误判为失败而中断轮询 */
2
- export type InvocationStatus = "running" | "success" | "failed";
3
- export interface NormalizedInvocationProcess {
4
- status: InvocationStatus;
5
- /** 接口原始 status,保留供排查 */
6
- rawStatus: string;
7
- error: string | null;
8
- /** 产物 ZIP 直链;成功也可能为 null */
9
- artifacts: string | null;
10
- itemCount: number;
11
- }
12
- /**
13
- * 从 CLI stdout 中提取首个完整 JSON 值(对象或数组)。
14
- */
15
- export declare function extractJsonFromStdout(stdout: string): unknown;
16
- /**
17
- * 从 `invocation start` / `last` 的返回中提取 run_record_id。
18
- * 兼容下划线与驼峰,并向下一层 data / record / result 探一层。
19
- */
20
- export declare function parseRunRecordId(raw: unknown): string | undefined;
21
- /**
22
- * 归一 `invocation process` 返回:状态、错误、产物链接与事件条数。
23
- */
24
- export declare function normalizeInvocationProcess(raw: unknown): NormalizedInvocationProcess;
25
- //# sourceMappingURL=parse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/modules/proposal/parse.ts"],"names":[],"mappings":"AAQA,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,gBAAgB,CAAC;IACzB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqDD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAqB7D;AAqBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CA+BjE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,OAAO,GACX,2BAA2B,CA+C7B"}