helixlife-expert-cli 0.3.0 → 0.3.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.
Files changed (133) hide show
  1. package/cli/bin/helixlife-expert.js +1 -1
  2. package/cli/dist/core/api/client.d.ts.map +1 -1
  3. package/cli/dist/core/api/client.js +34 -9
  4. package/cli/dist/core/api/client.js.map +1 -1
  5. package/cli/dist/core/api/http.d.ts +3 -0
  6. package/cli/dist/core/api/http.d.ts.map +1 -1
  7. package/cli/dist/core/api/http.js +38 -6
  8. package/cli/dist/core/api/http.js.map +1 -1
  9. package/cli/dist/core/errors.d.ts +27 -0
  10. package/cli/dist/core/errors.d.ts.map +1 -1
  11. package/cli/dist/core/errors.js +49 -0
  12. package/cli/dist/core/errors.js.map +1 -1
  13. package/cli/dist/core/index.d.ts +3 -3
  14. package/cli/dist/core/index.d.ts.map +1 -1
  15. package/cli/dist/core/index.js +3 -3
  16. package/cli/dist/core/index.js.map +1 -1
  17. package/cli/dist/core/paths.d.ts +16 -0
  18. package/cli/dist/core/paths.d.ts.map +1 -1
  19. package/cli/dist/core/paths.js +70 -1
  20. package/cli/dist/core/paths.js.map +1 -1
  21. package/cli/dist/core/sse-utils.d.ts +6 -1
  22. package/cli/dist/core/sse-utils.d.ts.map +1 -1
  23. package/cli/dist/core/sse-utils.js +39 -5
  24. package/cli/dist/core/sse-utils.js.map +1 -1
  25. package/cli/dist/index.d.ts.map +1 -1
  26. package/cli/dist/index.js +27 -1
  27. package/cli/dist/index.js.map +1 -1
  28. package/cli/dist/modules/analysis/index.d.ts.map +1 -1
  29. package/cli/dist/modules/analysis/index.js +1 -0
  30. package/cli/dist/modules/analysis/index.js.map +1 -1
  31. package/cli/dist/modules/expert-scaffold.d.ts.map +1 -1
  32. package/cli/dist/modules/expert-scaffold.js +1 -0
  33. package/cli/dist/modules/expert-scaffold.js.map +1 -1
  34. package/cli/dist/modules/fund/clinical/commands/article-download.js +2 -2
  35. package/cli/dist/modules/fund/clinical/commands/article-download.js.map +1 -1
  36. package/cli/dist/modules/fund/clinical/session-cache.d.ts +1 -0
  37. package/cli/dist/modules/fund/clinical/session-cache.d.ts.map +1 -1
  38. package/cli/dist/modules/fund/clinical/session-cache.js +9 -5
  39. package/cli/dist/modules/fund/clinical/session-cache.js.map +1 -1
  40. package/cli/dist/modules/fund/index.d.ts.map +1 -1
  41. package/cli/dist/modules/fund/index.js +1 -0
  42. package/cli/dist/modules/fund/index.js.map +1 -1
  43. package/cli/dist/modules/fund/nsfc/article-cache.d.ts +1 -1
  44. package/cli/dist/modules/fund/nsfc/article-cache.d.ts.map +1 -1
  45. package/cli/dist/modules/fund/nsfc/article-cache.js +9 -7
  46. package/cli/dist/modules/fund/nsfc/article-cache.js.map +1 -1
  47. package/cli/dist/modules/fund/nsfc/commands/article-download.js +2 -2
  48. package/cli/dist/modules/fund/nsfc/commands/article-download.js.map +1 -1
  49. package/cli/dist/modules/fund/nsfc/commands/hypothesis-figure.d.ts.map +1 -1
  50. package/cli/dist/modules/fund/nsfc/commands/hypothesis-figure.js +12 -3
  51. package/cli/dist/modules/fund/nsfc/commands/hypothesis-figure.js.map +1 -1
  52. package/cli/dist/modules/fund/nsfc/commands/tech-roadmap.js +2 -2
  53. package/cli/dist/modules/fund/nsfc/commands/tech-roadmap.js.map +1 -1
  54. package/cli/dist/modules/fund/nsfc/session-cache.d.ts +1 -1
  55. package/cli/dist/modules/fund/nsfc/session-cache.d.ts.map +1 -1
  56. package/cli/dist/modules/fund/nsfc/session-cache.js +9 -7
  57. package/cli/dist/modules/fund/nsfc/session-cache.js.map +1 -1
  58. package/cli/dist/modules/literature/commands/workflow-run.d.ts +1 -0
  59. package/cli/dist/modules/literature/commands/workflow-run.d.ts.map +1 -1
  60. package/cli/dist/modules/literature/commands/workflow-run.js +1 -0
  61. package/cli/dist/modules/literature/commands/workflow-run.js.map +1 -1
  62. package/cli/dist/modules/literature/index.d.ts.map +1 -1
  63. package/cli/dist/modules/literature/index.js +4 -0
  64. package/cli/dist/modules/literature/index.js.map +1 -1
  65. package/cli/dist/modules/meta/analysis.d.ts.map +1 -1
  66. package/cli/dist/modules/meta/analysis.js +12 -10
  67. package/cli/dist/modules/meta/analysis.js.map +1 -1
  68. package/cli/dist/modules/meta/extraction.d.ts.map +1 -1
  69. package/cli/dist/modules/meta/extraction.js +8 -8
  70. package/cli/dist/modules/meta/extraction.js.map +1 -1
  71. package/cli/dist/modules/meta/index.d.ts.map +1 -1
  72. package/cli/dist/modules/meta/index.js +1 -0
  73. package/cli/dist/modules/meta/index.js.map +1 -1
  74. package/cli/dist/modules/meta/retrieve.d.ts.map +1 -1
  75. package/cli/dist/modules/meta/retrieve.js +2 -1
  76. package/cli/dist/modules/meta/retrieve.js.map +1 -1
  77. package/cli/dist/modules/meta/screening.d.ts.map +1 -1
  78. package/cli/dist/modules/meta/screening.js +6 -5
  79. package/cli/dist/modules/meta/screening.js.map +1 -1
  80. package/cli/dist/modules/meta/topic.d.ts.map +1 -1
  81. package/cli/dist/modules/meta/topic.js +2 -1
  82. package/cli/dist/modules/meta/topic.js.map +1 -1
  83. package/cli/dist/modules/meta/writing.d.ts.map +1 -1
  84. package/cli/dist/modules/meta/writing.js +14 -7
  85. package/cli/dist/modules/meta/writing.js.map +1 -1
  86. package/cli/dist/modules/proposal/commands/bioinfo-run.d.ts +1 -0
  87. package/cli/dist/modules/proposal/commands/bioinfo-run.d.ts.map +1 -1
  88. package/cli/dist/modules/proposal/commands/bioinfo-run.js +1 -0
  89. package/cli/dist/modules/proposal/commands/bioinfo-run.js.map +1 -1
  90. package/cli/dist/modules/proposal/commands/clinical-run.d.ts +1 -0
  91. package/cli/dist/modules/proposal/commands/clinical-run.d.ts.map +1 -1
  92. package/cli/dist/modules/proposal/commands/clinical-run.js +1 -0
  93. package/cli/dist/modules/proposal/commands/clinical-run.js.map +1 -1
  94. package/cli/dist/modules/proposal/index.d.ts.map +1 -1
  95. package/cli/dist/modules/proposal/index.js +7 -0
  96. package/cli/dist/modules/proposal/index.js.map +1 -1
  97. package/cli/dist/modules/sci/article-cache.d.ts +1 -1
  98. package/cli/dist/modules/sci/article-cache.d.ts.map +1 -1
  99. package/cli/dist/modules/sci/article-cache.js +12 -12
  100. package/cli/dist/modules/sci/article-cache.js.map +1 -1
  101. package/cli/dist/modules/sci/commands/article-download.d.ts.map +1 -1
  102. package/cli/dist/modules/sci/commands/article-download.js +5 -4
  103. package/cli/dist/modules/sci/commands/article-download.js.map +1 -1
  104. package/cli/dist/modules/sci/index.d.ts.map +1 -1
  105. package/cli/dist/modules/sci/index.js +1 -0
  106. package/cli/dist/modules/sci/index.js.map +1 -1
  107. package/cli/dist/modules/sci/precheck-cache.js +1 -1
  108. package/cli/dist/modules/shared/result-wrapper.d.ts +4 -2
  109. package/cli/dist/modules/shared/result-wrapper.d.ts.map +1 -1
  110. package/cli/dist/modules/shared/result-wrapper.js +3 -1
  111. package/cli/dist/modules/shared/result-wrapper.js.map +1 -1
  112. package/cli/dist/modules/shared/workflow-app/command.d.ts +4 -1
  113. package/cli/dist/modules/shared/workflow-app/command.d.ts.map +1 -1
  114. package/cli/dist/modules/shared/workflow-app/command.js +91 -24
  115. package/cli/dist/modules/shared/workflow-app/command.js.map +1 -1
  116. package/cli/dist/modules/shared/workflow-app/form.d.ts +5 -1
  117. package/cli/dist/modules/shared/workflow-app/form.d.ts.map +1 -1
  118. package/cli/dist/modules/shared/workflow-app/form.js +6 -2
  119. package/cli/dist/modules/shared/workflow-app/form.js.map +1 -1
  120. package/cli/dist/modules/shared/workflow-app/index.d.ts +1 -1
  121. package/cli/dist/modules/shared/workflow-app/index.d.ts.map +1 -1
  122. package/cli/dist/modules/shared/workflow-app/index.js +1 -1
  123. package/cli/dist/modules/shared/workflow-app/index.js.map +1 -1
  124. package/cli/dist/modules/shared/workflow-app/run.d.ts.map +1 -1
  125. package/cli/dist/modules/shared/workflow-app/run.js +3 -7
  126. package/cli/dist/modules/shared/workflow-app/run.js.map +1 -1
  127. package/cli/dist/modules/upgrade/index.d.ts.map +1 -1
  128. package/cli/dist/modules/upgrade/index.js +1 -0
  129. package/cli/dist/modules/upgrade/index.js.map +1 -1
  130. package/cli/dist/program.d.ts.map +1 -1
  131. package/cli/dist/program.js +3 -1
  132. package/cli/dist/program.js.map +1 -1
  133. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  // npm bin 入口 shim,加载编译后的 dist/index.js
3
3
  import "../dist/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/api/client.ts"],"names":[],"mappings":"AAQA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAM/D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IAGrB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;CAChD;AAGD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAeD,qBAAa,SAAS;IAEpB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,YAAY;YAiBN,gBAAgB;IAwB9B,OAAO,CAAC,uBAAuB;YAsBjB,IAAI;IAmCZ,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IA0BlE,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAc,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAClD,OAAO,CAAC,cAAc,CAAC;IAQpB,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GACzC,OAAO,CAAC,IAAI,CAAC;YA6CF,kBAAkB;IAehC,OAAO,CAAC,qCAAqC;CAa9C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/api/client.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAuB/D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IAGrB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;CAChD;AAGD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD,qBAAa,SAAS;IAEpB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,YAAY;YAkBN,gBAAgB;IAwC9B,OAAO,CAAC,uBAAuB;YAsBjB,IAAI;IAmCZ,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IA0BlE,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAc,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAClD,OAAO,CAAC,cAAc,CAAC;IAQpB,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GACzC,OAAO,CAAC,IAAI,CAAC;YA0CF,kBAAkB;IAehC,OAAO,CAAC,qCAAqC;CAa9C"}
@@ -1,10 +1,21 @@
1
1
  // 后台 API 请求客户端:统一附加 Token、平台头、超时与 401 处理
2
- import { helixlifeError, helixlifeErrorCode, NOT_AUTHENTICATED_MESSAGE, TOKEN_EXPIRED_MESSAGE, } from "../errors.js";
2
+ import { createNetworkBlockedError, helixlifeError, helixlifeErrorCode, isNetworkBlockedText, isNonRetryableServerMessage, NOT_AUTHENTICATED_MESSAGE, TOKEN_EXPIRED_MESSAGE, } from "../errors.js";
3
3
  import { getDefaultBaseUrl } from "../types/config.js";
4
4
  import { parseSseStream } from "./sse.js";
5
5
  import { loadTokenFromFile } from "../token/index.js";
6
6
  import { getPackageVersion } from "../version.js";
7
- import { DEFAULT_REQUEST_TIMEOUT_MS, fetchWithTimeout } from "./http.js";
7
+ import { DEFAULT_REQUEST_TIMEOUT_MS, fetchWithTimeout, toNetworkError, } from "./http.js";
8
+ // 后端常见的追踪 ID 响应头
9
+ const TRACE_ID_HEADERS = ["x-trace-id", "trace-id", "x-request-id", "traceid"];
10
+ function readTraceId(response) {
11
+ for (const name of TRACE_ID_HEADERS) {
12
+ const value = response.headers.get(name);
13
+ if (value) {
14
+ return value;
15
+ }
16
+ }
17
+ return undefined;
18
+ }
8
19
  // 当前安装的 CLI 版本(来自本包 package.json,不是 npm 最新版)
9
20
  const CLI_VERSION = getPackageVersion();
10
21
  // 前台通用请求头,与 vip.helixlife.cn 浏览器调用保持一致
@@ -12,6 +23,7 @@ const PLATFORM_HEADERS = {
12
23
  platform: "pc",
13
24
  source: "PC",
14
25
  website: "helixlife-ai",
26
+ "x-user-identity": "open-sience-pro",
15
27
  "User-Agent": `helix-cli/${CLI_VERSION}`,
16
28
  "X-Client-Version": CLI_VERSION,
17
29
  };
@@ -51,17 +63,30 @@ export class ApiClient {
51
63
  return headers;
52
64
  }
53
65
  // 校验 HTTP 响应状态:401 视为凭证无效;403 解开后端文案(含购买链接)为 E1005
54
- async assertOkResponse(response) {
66
+ // 沙箱代理拦截的 403 正文带 OPEN_SCIENCE_NETWORK_DOMAIN_BLOCKED,需与业务 403 区分
67
+ async assertOkResponse(response, url) {
68
+ const traceId = readTraceId(response);
55
69
  if (response.status === 401) {
56
- throw new helixlifeError(helixlifeErrorCode.TOKEN_EXPIRED, TOKEN_EXPIRED_MESSAGE);
70
+ throw new helixlifeError(helixlifeErrorCode.TOKEN_EXPIRED, TOKEN_EXPIRED_MESSAGE, { traceId });
57
71
  }
58
72
  if (response.status === 403) {
59
73
  const text = await response.text().catch(() => "");
60
- throw new helixlifeError(helixlifeErrorCode.PERMISSION_DENIED, this.resolveForbiddenMessage(text, response.statusText));
74
+ if (isNetworkBlockedText(text)) {
75
+ throw createNetworkBlockedError(url.hostname);
76
+ }
77
+ throw new helixlifeError(helixlifeErrorCode.PERMISSION_DENIED, this.resolveForbiddenMessage(text, response.statusText), { traceId });
61
78
  }
62
79
  if (!response.ok) {
63
80
  const text = await response.text().catch(() => "");
64
- throw new helixlifeError(helixlifeErrorCode.REQUEST_FAILED, `请求失败 (${response.status}): ${text || response.statusText}`);
81
+ // 5xx / 429 多为瞬时故障;其余 4xx 与「参数非法」类为确定性失败
82
+ const transient = (response.status >= 500 || response.status === 429) &&
83
+ !isNonRetryableServerMessage(text);
84
+ throw new helixlifeError(helixlifeErrorCode.REQUEST_FAILED, `请求失败 (${response.status}): ${text || response.statusText}`, {
85
+ traceId,
86
+ retryable: transient,
87
+ nextAction: transient ? "retry_once" : "stop_and_report",
88
+ detail: { status: response.status, path: url.pathname },
89
+ });
65
90
  }
66
91
  }
67
92
  // 403 优先使用后端 message(已含购买链接),解析失败再回退原始正文
@@ -99,7 +124,7 @@ export class ApiClient {
99
124
  ? options.body
100
125
  : JSON.stringify(options.body),
101
126
  }, DEFAULT_REQUEST_TIMEOUT_MS);
102
- await this.assertOkResponse(response);
127
+ await this.assertOkResponse(response, url);
103
128
  return response;
104
129
  }
105
130
  // 发起 REST 请求并解析 JSON 响应
@@ -149,9 +174,9 @@ export class ApiClient {
149
174
  if (error instanceof Error && error.name === "AbortError") {
150
175
  throw error;
151
176
  }
152
- throw new helixlifeError(helixlifeErrorCode.NETWORK_ERROR, "网络请求失败,请检查后台服务是否可用");
177
+ throw toNetworkError(url.toString(), error);
153
178
  }
154
- await this.assertOkResponse(response);
179
+ await this.assertOkResponse(response, url);
155
180
  if (!response.body) {
156
181
  throw new helixlifeError(helixlifeErrorCode.INVALID_RESPONSE, "SSE 响应体为空");
157
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/api/client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import { helixlifeError } from "../errors.js";
1
2
  export declare const DEFAULT_REQUEST_TIMEOUT_MS = 60000;
3
+ /** fetch 抛错(非 HTTP 状态)统一映射为 NETWORK_ERROR,并附带目标 hostname */
4
+ export declare function toNetworkError(url: string, error: unknown, timedOut?: boolean): helixlifeError;
2
5
  export declare function fetchWithTimeout(url: string, init: RequestInit, timeoutMs: number): Promise<Response>;
3
6
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/core/api/http.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAGjD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAmBnB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/core/api/http.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,cAAc,EAGf,MAAM,cAAc,CAAC;AAGtB,eAAO,MAAM,0BAA0B,QAAS,CAAC;AA0BjD,4DAA4D;AAC5D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,QAAQ,UAAQ,GACf,cAAc,CAahB;AAGD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
@@ -1,7 +1,42 @@
1
1
  // 带超时的 fetch 封装,供 REST 请求与授权接口统一复用
2
- import { helixlifeError, helixlifeErrorCode } from "../errors.js";
2
+ import { createNetworkBlockedError, helixlifeError, helixlifeErrorCode, isNetworkBlockedText, } from "../errors.js";
3
3
  // 普通 REST / 授权类请求的默认整体超时(毫秒)
4
4
  export const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;
5
+ function hostnameOf(url) {
6
+ try {
7
+ return new URL(url).hostname;
8
+ }
9
+ catch {
10
+ return undefined;
11
+ }
12
+ }
13
+ // 拼接错误链上的文本,用于识别沙箱代理拦截(undici 把代理 403 放在 cause 里)
14
+ function collectErrorText(error) {
15
+ const parts = [];
16
+ let current = error;
17
+ for (let depth = 0; current && depth < 5; depth += 1) {
18
+ if (current instanceof Error) {
19
+ parts.push(current.message);
20
+ current = current.cause;
21
+ }
22
+ else {
23
+ parts.push(String(current));
24
+ break;
25
+ }
26
+ }
27
+ return parts.join(" | ");
28
+ }
29
+ /** fetch 抛错(非 HTTP 状态)统一映射为 NETWORK_ERROR,并附带目标 hostname */
30
+ export function toNetworkError(url, error, timedOut = false) {
31
+ const hostname = hostnameOf(url);
32
+ if (hostname && isNetworkBlockedText(collectErrorText(error))) {
33
+ return createNetworkBlockedError(hostname, error);
34
+ }
35
+ const target = hostname ? `(${hostname})` : "";
36
+ return new helixlifeError(helixlifeErrorCode.NETWORK_ERROR, timedOut
37
+ ? `请求超时${target},请检查网络或稍后重试`
38
+ : `网络请求失败${target},请检查后台服务是否可用`, { cause: error, hostname });
39
+ }
5
40
  // 带超时的 fetch:超时或网络失败统一映射为 helixlifeError(NETWORK_ERROR),避免网络挂起时长时间无响应
6
41
  export async function fetchWithTimeout(url, init, timeoutMs) {
7
42
  const controller = new AbortController();
@@ -9,11 +44,8 @@ export async function fetchWithTimeout(url, init, timeoutMs) {
9
44
  try {
10
45
  return await fetch(url, { ...init, signal: controller.signal });
11
46
  }
12
- catch {
13
- if (controller.signal.aborted) {
14
- throw new helixlifeError(helixlifeErrorCode.NETWORK_ERROR, "请求超时,请检查网络或稍后重试");
15
- }
16
- throw new helixlifeError(helixlifeErrorCode.NETWORK_ERROR, "网络请求失败,请检查后台服务是否可用");
47
+ catch (error) {
48
+ throw toNetworkError(url, error, controller.signal.aborted);
17
49
  }
18
50
  finally {
19
51
  clearTimeout(timer);
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/core/api/http.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEjD,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,IAAiB,EACjB,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,aAAa,EAChC,iBAAiB,CAClB,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,aAAa,EAChC,oBAAoB,CACrB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/core/api/http.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEjD,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,SAAS,gBAAgB,CAAC,KAAc;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,YAAY,KAAK,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5B,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,KAAc,EACd,QAAQ,GAAG,KAAK;IAEhB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,IAAI,oBAAoB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,OAAO,IAAI,cAAc,CACvB,kBAAkB,CAAC,aAAa,EAChC,QAAQ;QACN,CAAC,CAAC,OAAO,MAAM,aAAa;QAC5B,CAAC,CAAC,SAAS,MAAM,cAAc,EACjC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAC3B,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,IAAiB,EACjB,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export declare const NOT_AUTHENTICATED_MESSAGE = "\u672C\u5730\u65E0\u6709\u6548\u51ED\u8BC1\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u540E\u53F0\u63A5\u53E3";
2
2
  export declare const TOKEN_EXPIRED_MESSAGE = "\u5F53\u524D\u51ED\u8BC1\u65E0\u6CD5\u8BBF\u95EE\u540E\u53F0\u63A5\u53E3";
3
+ export declare const OPEN_SCIENCE_NETWORK_BLOCKED_MARKER = "OPEN_SCIENCE_NETWORK_DOMAIN_BLOCKED";
3
4
  export declare enum helixlifeErrorCode {
4
5
  NOT_AUTHENTICATED = "E1001",
5
6
  TOKEN_EXPIRED = "E1004",
@@ -9,12 +10,38 @@ export declare enum helixlifeErrorCode {
9
10
  NETWORK_ERROR = "E5001",
10
11
  INVALID_RESPONSE = "E5002"
11
12
  }
13
+ /**
14
+ * 宿主 Agent 收到错误后的处置建议:
15
+ * - ask_user:需用户介入(登录、授权、购买、补充参数)
16
+ * - fix_inputs:Agent 自行修正命令参数 / inputs 后重试一次
17
+ * - request_network_access:向平台申请该 hostname 的网络访问后重试一次
18
+ * - retry_once:瞬时故障,原样重试一次,仍失败则停止并报告
19
+ * - stop_and_report:服务端确定性失败,重试无意义,直接向用户报告
20
+ */
21
+ export type helixlifeNextAction = "ask_user" | "fix_inputs" | "request_network_access" | "retry_once" | "stop_and_report";
12
22
  export interface helixlifeErrorOptions extends ErrorOptions {
13
23
  cause?: unknown;
24
+ retryable?: boolean;
25
+ nextAction?: helixlifeNextAction;
26
+ /** 网络类错误的目标主机名(不含协议与端口),供申请网络访问 */
27
+ hostname?: string;
28
+ /** 服务端返回的追踪 ID,供后端排查 */
29
+ traceId?: string;
30
+ /** 服务端原始错误事件 / 响应片段(已去除凭证) */
31
+ detail?: unknown;
14
32
  }
15
33
  export declare class helixlifeError extends Error {
16
34
  readonly code: helixlifeErrorCode;
17
35
  readonly cause?: unknown;
36
+ readonly retryable: boolean;
37
+ readonly nextAction: helixlifeNextAction;
38
+ readonly hostname?: string;
39
+ readonly traceId?: string;
40
+ readonly detail?: unknown;
18
41
  constructor(code: helixlifeErrorCode, message: string, options?: helixlifeErrorOptions);
42
+ toJSON(): Record<string, unknown>;
19
43
  }
44
+ export declare function isNonRetryableServerMessage(message: string): boolean;
45
+ export declare function isNetworkBlockedText(text: string): boolean;
46
+ export declare function createNetworkBlockedError(hostname: string, cause?: unknown): helixlifeError;
20
47
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,yBAAyB,qGAClB,CAAC;AAGrB,eAAO,MAAM,qBAAqB,6EAAiB,CAAC;AAGpD,oBAAY,kBAAkB;IAC5B,iBAAiB,UAAU;IAC3B,aAAa,UAAU;IACvB,iBAAiB,UAAU;IAC3B,gBAAgB,UAAU;IAC1B,cAAc,UAAU;IACxB,aAAa,UAAU;IACvB,gBAAgB,UAAU;CAC3B;AAGD,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAID,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,kBAAkB,CAAC;IACzC,SAAyB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAGvC,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,qBAAqB;CAOlC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,yBAAyB,qGAClB,CAAC;AAGrB,eAAO,MAAM,qBAAqB,6EAAiB,CAAC;AAGpD,eAAO,MAAM,mCAAmC,wCACT,CAAC;AAGxC,oBAAY,kBAAkB;IAC5B,iBAAiB,UAAU;IAC3B,aAAa,UAAU;IACvB,iBAAiB,UAAU;IAC3B,gBAAgB,UAAU;IAC1B,cAAc,UAAU;IACxB,aAAa,UAAU;IACvB,gBAAgB,UAAU;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,YAAY,GACZ,wBAAwB,GACxB,YAAY,GACZ,iBAAiB,CAAC;AAGtB,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAiBD,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,kBAAkB,CAAC;IACzC,SAAyB,KAAK,CAAC,EAAE,OAAO,CAAC;IACzC,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,UAAU,EAAE,mBAAmB,CAAC;IAChD,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,SAAgB,MAAM,CAAC,EAAE,OAAO,CAAC;gBAG/B,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,qBAAqB;IAejC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAWlC;AAQD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAGD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO,GACd,cAAc,CAMhB"}
@@ -2,6 +2,8 @@
2
2
  export const NOT_AUTHENTICATED_MESSAGE = "本地无有效凭证,无法访问后台接口";
3
3
  // 后台返回 401 时的全局统一提示文案,供 API 调用与命令层复用
4
4
  export const TOKEN_EXPIRED_MESSAGE = "当前凭证无法访问后台接口";
5
+ // Open-Science 沙箱代理拦截未授权域名时,在 403 正文 / 代理错误里携带的标记
6
+ export const OPEN_SCIENCE_NETWORK_BLOCKED_MARKER = "OPEN_SCIENCE_NETWORK_DOMAIN_BLOCKED";
5
7
  // helixlife CLI 统一错误码定义
6
8
  export var helixlifeErrorCode;
7
9
  (function (helixlifeErrorCode) {
@@ -13,16 +15,63 @@ export var helixlifeErrorCode;
13
15
  helixlifeErrorCode["NETWORK_ERROR"] = "E5001";
14
16
  helixlifeErrorCode["INVALID_RESPONSE"] = "E5002";
15
17
  })(helixlifeErrorCode || (helixlifeErrorCode = {}));
18
+ const DEFAULT_DISPOSITION = {
19
+ [helixlifeErrorCode.NOT_AUTHENTICATED]: { retryable: false, nextAction: "ask_user" },
20
+ [helixlifeErrorCode.TOKEN_EXPIRED]: { retryable: false, nextAction: "ask_user" },
21
+ [helixlifeErrorCode.PERMISSION_DENIED]: { retryable: false, nextAction: "ask_user" },
22
+ [helixlifeErrorCode.INVALID_ARGUMENT]: { retryable: false, nextAction: "fix_inputs" },
23
+ [helixlifeErrorCode.REQUEST_FAILED]: { retryable: false, nextAction: "stop_and_report" },
24
+ [helixlifeErrorCode.NETWORK_ERROR]: { retryable: true, nextAction: "retry_once" },
25
+ [helixlifeErrorCode.INVALID_RESPONSE]: { retryable: true, nextAction: "retry_once" },
26
+ };
16
27
  // 结构化 CLI 错误,供命令层与 Agent 解析
17
28
  // 支持错误链(cause)以便调试时追溯原始错误
18
29
  export class helixlifeError extends Error {
19
30
  code;
20
31
  cause;
32
+ retryable;
33
+ nextAction;
34
+ hostname;
35
+ traceId;
36
+ detail;
21
37
  constructor(code, message, options) {
22
38
  super(message, options);
23
39
  this.name = "helixlifeError";
24
40
  this.code = code;
25
41
  this.cause = options?.cause;
42
+ const disposition = DEFAULT_DISPOSITION[code];
43
+ this.retryable = options?.retryable ?? disposition.retryable;
44
+ this.nextAction = options?.nextAction ?? disposition.nextAction;
45
+ this.hostname = options?.hostname;
46
+ this.traceId = options?.traceId;
47
+ this.detail = options?.detail;
26
48
  }
49
+ // 机器可读的错误描述,供入口统一输出
50
+ toJSON() {
51
+ return {
52
+ code: this.code,
53
+ message: this.message,
54
+ retryable: this.retryable,
55
+ nextAction: this.nextAction,
56
+ ...(this.hostname ? { hostname: this.hostname } : {}),
57
+ ...(this.traceId ? { traceId: this.traceId } : {}),
58
+ ...(this.detail !== undefined ? { detail: this.detail } : {}),
59
+ };
60
+ }
61
+ }
62
+ // 后端「参数非法 / 服务已停止」属于确定性失败,换参数或重试都不会成功
63
+ const NON_RETRYABLE_SERVER_PATTERNS = [
64
+ /parameter invalid/i,
65
+ /service has been stopped/i,
66
+ ];
67
+ export function isNonRetryableServerMessage(message) {
68
+ return NON_RETRYABLE_SERVER_PATTERNS.some((pattern) => pattern.test(message));
69
+ }
70
+ export function isNetworkBlockedText(text) {
71
+ return text.includes(OPEN_SCIENCE_NETWORK_BLOCKED_MARKER);
72
+ }
73
+ // 沙箱拦截:统一构造「申请网络访问」错误,hostname 供 Agent 直接填入审批请求
74
+ export function createNetworkBlockedError(hostname, cause) {
75
+ return new helixlifeError(helixlifeErrorCode.NETWORK_ERROR, `平台沙箱未放行域名 ${hostname},需申请网络访问后重试`, { cause, retryable: true, nextAction: "request_network_access", hostname });
27
76
  }
28
77
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,MAAM,CAAC,MAAM,yBAAyB,GACpC,kBAAkB,CAAC;AAErB,qCAAqC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEpD,wBAAwB;AACxB,MAAM,CAAN,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,iDAA2B,CAAA;IAC3B,6CAAuB,CAAA;IACvB,iDAA2B,CAAA;IAC3B,gDAA0B,CAAA;IAC1B,8CAAwB,CAAA;IACxB,6CAAuB,CAAA;IACvB,gDAA0B,CAAA;AAC5B,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAOD,4BAA4B;AAC5B,0BAA0B;AAC1B,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvB,IAAI,CAAqB;IAChB,KAAK,CAAW;IAEzC,YACE,IAAwB,EACxB,OAAe,EACf,OAA+B;QAE/B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { helixlifeError, helixlifeErrorCode, NOT_AUTHENTICATED_MESSAGE, TOKEN_EXPIRED_MESSAGE, } from "./errors.js";
1
+ export { helixlifeError, helixlifeErrorCode, NOT_AUTHENTICATED_MESSAGE, TOKEN_EXPIRED_MESSAGE, OPEN_SCIENCE_NETWORK_BLOCKED_MARKER, createNetworkBlockedError, isNetworkBlockedText, isNonRetryableServerMessage, type helixlifeNextAction, } from "./errors.js";
2
2
  export { fetchWithTimeout, DEFAULT_REQUEST_TIMEOUT_MS } from "./api/http.js";
3
3
  export { ApiClient, type BinaryResponse, type RequestOptions, } from "./api/client.js";
4
4
  export { parseSseStream, type SseDataPayload } from "./api/sse.js";
@@ -6,10 +6,10 @@ export { unwrapResponse, unwrapApiData, unwrapNestedApiData, extractNestedData,
6
6
  export { getTokenFilePath, loadTokenFromFile, TOKEN_DIR_NAME, TOKEN_FILE_NAME, } from "./token/index.js";
7
7
  export { getDefaultBaseUrl, getDefaultAuthBaseUrl, getDefaultNewideaBaseUrl, type helixlifeConfig, } from "./types/config.js";
8
8
  export { loadLocalConfig, saveLocalConfig, updateLocalConfigField, clearLocalConfig, getLocalConfigPath, isValidConfigSetKey, CONFIG_SET_KEYS, CONFIG_DIR_NAME, LOCAL_CONFIG_FILE_NAME, type LocalConfig, type ConfigSetKey, } from "./env-config.js";
9
- export { getUserDownloadsDir, resolveUserPath, sanitizeFilename, type SanitizeFilenameOptions, } from "./paths.js";
9
+ export { getUserDownloadsDir, getHelixlifeOutputDir, getHelixlifeStateDir, getOpenScienceHandoffDir, isOpenScienceRuntime, pruneStaleStateFiles, OPEN_SCIENCE_HANDOFF_ENV, HELIXLIFE_CACHE_DIR_ENV, resolveUserPath, sanitizeFilename, type SanitizeFilenameOptions, } from "./paths.js";
10
10
  export { printOutput, emitJson, stringifyJsonAscii, renderListAsMarkdown, renderListAsHtmlTable, createStderrProgress, createFormatLogger, parseOutputFormat, type OutputFormat, type ProgressReporter, } from "./output/index.js";
11
11
  export { getPackageVersion } from "./version.js";
12
- export { extractSseText, assertWorkflowSucceeded, pickWorkflowOutputText, extractReferences, collectOutputs, extractRecordId, joinOutputsAsMarkdown, type ExtractSseTextOptions, } from "./sse-utils.js";
12
+ export { extractSseText, assertWorkflowSucceeded, createSseErrorEventError, pickWorkflowOutputText, extractReferences, collectOutputs, extractRecordId, joinOutputsAsMarkdown, type ExtractSseTextOptions, } from "./sse-utils.js";
13
13
  export { parseIntegerOption, parseEnumOption } from "./parse.js";
14
14
  export { isInteractiveTerminal } from "./terminal.js";
15
15
  export { createInteractiveInterface, askOption, askOptionWithRl, } from "./interactive.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,SAAS,EACT,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,mCAAmC,EACnC,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,SAAS,EACT,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { helixlifeError, helixlifeErrorCode, NOT_AUTHENTICATED_MESSAGE, TOKEN_EXPIRED_MESSAGE, } from "./errors.js";
1
+ export { helixlifeError, helixlifeErrorCode, NOT_AUTHENTICATED_MESSAGE, TOKEN_EXPIRED_MESSAGE, OPEN_SCIENCE_NETWORK_BLOCKED_MARKER, createNetworkBlockedError, isNetworkBlockedText, isNonRetryableServerMessage, } from "./errors.js";
2
2
  export { fetchWithTimeout, DEFAULT_REQUEST_TIMEOUT_MS } from "./api/http.js";
3
3
  export { ApiClient, } from "./api/client.js";
4
4
  export { parseSseStream } from "./api/sse.js";
@@ -6,10 +6,10 @@ export { unwrapResponse, unwrapApiData, unwrapNestedApiData, extractNestedData,
6
6
  export { getTokenFilePath, loadTokenFromFile, TOKEN_DIR_NAME, TOKEN_FILE_NAME, } from "./token/index.js";
7
7
  export { getDefaultBaseUrl, getDefaultAuthBaseUrl, getDefaultNewideaBaseUrl, } from "./types/config.js";
8
8
  export { loadLocalConfig, saveLocalConfig, updateLocalConfigField, clearLocalConfig, getLocalConfigPath, isValidConfigSetKey, CONFIG_SET_KEYS, CONFIG_DIR_NAME, LOCAL_CONFIG_FILE_NAME, } from "./env-config.js";
9
- export { getUserDownloadsDir, resolveUserPath, sanitizeFilename, } from "./paths.js";
9
+ export { getUserDownloadsDir, getHelixlifeOutputDir, getHelixlifeStateDir, getOpenScienceHandoffDir, isOpenScienceRuntime, pruneStaleStateFiles, OPEN_SCIENCE_HANDOFF_ENV, HELIXLIFE_CACHE_DIR_ENV, resolveUserPath, sanitizeFilename, } from "./paths.js";
10
10
  export { printOutput, emitJson, stringifyJsonAscii, renderListAsMarkdown, renderListAsHtmlTable, createStderrProgress, createFormatLogger, parseOutputFormat, } from "./output/index.js";
11
11
  export { getPackageVersion } from "./version.js";
12
- export { extractSseText, assertWorkflowSucceeded, pickWorkflowOutputText, extractReferences, collectOutputs, extractRecordId, joinOutputsAsMarkdown, } from "./sse-utils.js";
12
+ export { extractSseText, assertWorkflowSucceeded, createSseErrorEventError, pickWorkflowOutputText, extractReferences, collectOutputs, extractRecordId, joinOutputsAsMarkdown, } from "./sse-utils.js";
13
13
  export { parseIntegerOption, parseEnumOption } from "./parse.js";
14
14
  export { isInteractiveTerminal } from "./terminal.js";
15
15
  export { createInteractiveInterface, askOption, askOptionWithRl, } from "./interactive.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,SAAS,GAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAuB,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GAGf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,GAEzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,sBAAsB,GAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,SAAS,EACT,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,mCAAmC,EACnC,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,GAE5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,SAAS,GAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAuB,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GAGf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,GAEzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,sBAAsB,GAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,SAAS,EACT,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
@@ -1,3 +1,19 @@
1
+ export declare const OPEN_SCIENCE_HANDOFF_ENV = "OPEN_SCIENCE_HANDOFF_DIR";
2
+ export declare const HELIXLIFE_CACHE_DIR_ENV = "HELIXLIFE_CACHE_DIR";
3
+ export declare function getOpenScienceHandoffDir(): string | undefined;
4
+ export declare function isOpenScienceRuntime(): boolean;
5
+ /**
6
+ * 跨 CLI 进程的流程状态目录。
7
+ * 优先级:HELIXLIFE_CACHE_DIR → Open-Science 会话 handoff → ~/.config/helixlife/cache。
8
+ */
9
+ export declare function getHelixlifeStateDir(kind: string): string;
10
+ /** 结果文件目录:Open-Science 下写入会话 handoff,供 Agent 以 Artifact 发布 */
11
+ export declare function getHelixlifeOutputDir(): string;
12
+ /**
13
+ * 清理用户目录兜底下的过期状态文件。
14
+ * handoff 目录随会话由平台管理,不做清理;失败静默,不影响主流程。
15
+ */
16
+ export declare function pruneStaleStateFiles(directory: string, maxAgeMs?: number): Promise<void>;
1
17
  export declare function getUserDownloadsDir(): string;
2
18
  export interface SanitizeFilenameOptions {
3
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAsBR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BvD"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAGnE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAK7D,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,SAAS,CAG7D;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUzD;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAyB,GAChC,OAAO,CAAC,IAAI,CAAC,CAqBf;AAGD,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAsBR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsCvD"}
@@ -1,5 +1,66 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readdir, rm, stat } from "node:fs/promises";
1
3
  import { homedir, tmpdir } from "node:os";
2
- import { join, resolve } from "node:path";
4
+ import { isAbsolute, join, resolve } from "node:path";
5
+ // Open-Science 为每个会话注入的跨调用共享目录;存在即视为运行在 Open-Science 中。
6
+ // 平台每条命令的 TEMP/TMP 都是一次性目录,命令结束即整目录删除,跨进程状态不能放在 tmpdir。
7
+ export const OPEN_SCIENCE_HANDOFF_ENV = "OPEN_SCIENCE_HANDOFF_DIR";
8
+ // 显式覆盖状态根目录(测试或 home 不可写的环境)
9
+ export const HELIXLIFE_CACHE_DIR_ENV = "HELIXLIFE_CACHE_DIR";
10
+ // 用户目录兜底时,超过该时长未更新的状态文件在写入时顺带清理
11
+ const STALE_STATE_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
12
+ export function getOpenScienceHandoffDir() {
13
+ const value = process.env[OPEN_SCIENCE_HANDOFF_ENV]?.trim();
14
+ return value ? value : undefined;
15
+ }
16
+ export function isOpenScienceRuntime() {
17
+ return getOpenScienceHandoffDir() !== undefined;
18
+ }
19
+ /**
20
+ * 跨 CLI 进程的流程状态目录。
21
+ * 优先级:HELIXLIFE_CACHE_DIR → Open-Science 会话 handoff → ~/.config/helixlife/cache。
22
+ */
23
+ export function getHelixlifeStateDir(kind) {
24
+ const override = process.env[HELIXLIFE_CACHE_DIR_ENV]?.trim();
25
+ if (override) {
26
+ return join(override, kind);
27
+ }
28
+ const handoff = getOpenScienceHandoffDir();
29
+ if (handoff) {
30
+ return join(handoff, "helixlife", kind);
31
+ }
32
+ return join(homedir(), ".config", "helixlife", "cache", kind);
33
+ }
34
+ /** 结果文件目录:Open-Science 下写入会话 handoff,供 Agent 以 Artifact 发布 */
35
+ export function getHelixlifeOutputDir() {
36
+ const handoff = getOpenScienceHandoffDir();
37
+ return handoff ? join(handoff, "helixlife", "outputs") : getUserDownloadsDir();
38
+ }
39
+ /**
40
+ * 清理用户目录兜底下的过期状态文件。
41
+ * handoff 目录随会话由平台管理,不做清理;失败静默,不影响主流程。
42
+ */
43
+ export async function pruneStaleStateFiles(directory, maxAgeMs = STALE_STATE_MAX_AGE_MS) {
44
+ if (isOpenScienceRuntime() && !process.env[HELIXLIFE_CACHE_DIR_ENV]?.trim()) {
45
+ return;
46
+ }
47
+ const now = Date.now();
48
+ try {
49
+ const entries = await readdir(directory, { withFileTypes: true });
50
+ await Promise.all(entries
51
+ .filter((entry) => entry.isFile())
52
+ .map(async (entry) => {
53
+ const path = join(directory, entry.name);
54
+ const info = await stat(path);
55
+ if (now - info.mtimeMs > maxAgeMs) {
56
+ await rm(path, { force: true });
57
+ }
58
+ }));
59
+ }
60
+ catch {
61
+ /* 目录不存在或无权限时忽略 */
62
+ }
63
+ }
3
64
  // 获取用户系统下载目录,供 docx 等文件默认保存
4
65
  export function getUserDownloadsDir() {
5
66
  const home = homedir();
@@ -41,6 +102,14 @@ export function resolveUserPath(rawPath) {
41
102
  if (!rawPath?.trim()) {
42
103
  return resolve(rawPath);
43
104
  }
105
+ // Open-Science:相对路径统一落到会话 handoff 目录;仅当 handoff 下没有而 cwd 下已有该文件时
106
+ // (如用户上传到 data 目录的文件)才沿用 cwd
107
+ const handoff = getOpenScienceHandoffDir();
108
+ if (handoff && !isAbsolute(rawPath) && !/^[\\/]/.test(rawPath)) {
109
+ const inHandoff = resolve(handoff, rawPath);
110
+ const inCwd = resolve(rawPath);
111
+ return !existsSync(inHandoff) && existsSync(inCwd) ? inCwd : inHandoff;
112
+ }
44
113
  if (process.platform !== "win32") {
45
114
  return resolve(rawPath);
46
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
- import { type SseDataPayload } from "./index.js";
1
+ import { helixlifeError, type SseDataPayload } from "./index.js";
2
+ /**
3
+ * 后端 SSE error 事件 → helixlifeError:保留原始事件与 trace_id 供后端排查;
4
+ * 「参数非法 / 服务已停止」标为不可重试,避免 Agent 反复提交同一请求。
5
+ */
6
+ export declare function createSseErrorEventError(payload: SseDataPayload, fallbackMessage?: string): helixlifeError;
2
7
  export interface ExtractSseTextOptions {
3
8
  /** 是否检查嵌套的 data.text/data.answer 字段 */
4
9
  nested?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"sse-utils.d.ts","sourceRoot":"","sources":["../../src/core/sse-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAgCR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,IAAI,CAyBN;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC5C,QAAQ,SAAI,GACX,MAAM,CAKR;AA0CD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C,MAAM,EAAE,CAmBV;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,GAAG,SAAS,CAO5E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAQR"}
1
+ {"version":3,"file":"sse-utils.d.ts","sourceRoot":"","sources":["../../src/core/sse-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAGd,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAkBpB;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,cAAc,EACvB,eAAe,SAAgB,GAC9B,cAAc,CA0BhB;AAGD,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAgCR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,IAAI,CAqBN;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC5C,QAAQ,SAAI,GACX,MAAM,CAKR;AA0CD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C,MAAM,EAAE,CAmBV;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,GAAG,SAAS,CAO5E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAQR"}