@bolloon/bolloon-agent 0.5.0 → 0.5.1

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 (106) hide show
  1. package/dist/agents/execution-supervisor.js +87 -5
  2. package/dist/agents/model-policy.js +651 -0
  3. package/dist/agents/pi-sdk-tools.js +84 -33
  4. package/dist/agents/pi-sdk.js +83 -23
  5. package/dist/agents/run-store.js +53 -0
  6. package/dist/agents/task/task-runner.js +8 -1
  7. package/dist/agents/workflow-pivot-loop.js +19 -12
  8. package/dist/cli/clipboard.js +65 -0
  9. package/dist/cli/ink-app.js +145 -17
  10. package/dist/cli/log-gate.js +386 -0
  11. package/dist/cli/mention-data.js +2 -0
  12. package/dist/cli/model-selector.js +538 -0
  13. package/dist/cli/reply-hygiene.js +54 -0
  14. package/dist/cli/setup-wizard.js +686 -69
  15. package/dist/cli/startup-notice.js +160 -0
  16. package/dist/cli/stores.js +22 -1
  17. package/dist/cli/theme.js +49 -0
  18. package/dist/cli/tui-select.js +970 -0
  19. package/dist/cli-entry.js +125 -18
  20. package/dist/electron-build/agents/execution-supervisor.js +86 -4
  21. package/dist/electron-build/agents/execution-supervisor.js.map +1 -1
  22. package/dist/electron-build/agents/goal-store.js.map +1 -1
  23. package/dist/electron-build/agents/model-policy.js +706 -0
  24. package/dist/electron-build/agents/model-policy.js.map +1 -0
  25. package/dist/electron-build/agents/pi-sdk-tools.js +84 -33
  26. package/dist/electron-build/agents/pi-sdk-tools.js.map +1 -1
  27. package/dist/electron-build/agents/pi-sdk-types.js.map +1 -1
  28. package/dist/electron-build/agents/pi-sdk.js +83 -23
  29. package/dist/electron-build/agents/pi-sdk.js.map +1 -1
  30. package/dist/electron-build/agents/run-store.js +55 -1
  31. package/dist/electron-build/agents/run-store.js.map +1 -1
  32. package/dist/electron-build/agents/task/task-runner.js +8 -1
  33. package/dist/electron-build/agents/task/task-runner.js.map +1 -1
  34. package/dist/electron-build/agents/workflow-pivot-loop.js +19 -12
  35. package/dist/electron-build/agents/workflow-pivot-loop.js.map +1 -1
  36. package/dist/electron-build/llm/config-store.js +146 -6
  37. package/dist/electron-build/llm/config-store.js.map +1 -1
  38. package/dist/electron-build/llm/connection-probe.js +764 -0
  39. package/dist/electron-build/llm/connection-probe.js.map +1 -0
  40. package/dist/electron-build/llm/custom-provider-store.js +272 -0
  41. package/dist/electron-build/llm/custom-provider-store.js.map +1 -0
  42. package/dist/electron-build/llm/data/provider-catalog-baked.js +23 -0
  43. package/dist/electron-build/llm/data/provider-catalog-baked.js.map +1 -0
  44. package/dist/electron-build/llm/model-catalog.js +778 -0
  45. package/dist/electron-build/llm/model-catalog.js.map +1 -0
  46. package/dist/electron-build/llm/model-discovery.js +1202 -0
  47. package/dist/electron-build/llm/model-discovery.js.map +1 -0
  48. package/dist/electron-build/llm/model-selection.js +1315 -0
  49. package/dist/electron-build/llm/model-selection.js.map +1 -0
  50. package/dist/electron-build/llm/pi-ai.js +70 -11
  51. package/dist/electron-build/llm/pi-ai.js.map +1 -1
  52. package/dist/electron-build/llm/provider-catalog.js +969 -0
  53. package/dist/electron-build/llm/provider-catalog.js.map +1 -0
  54. package/dist/electron-build/llm/provider-registry.js +950 -0
  55. package/dist/electron-build/llm/provider-registry.js.map +1 -0
  56. package/dist/electron-build/llm/tool-name.js +266 -0
  57. package/dist/electron-build/llm/tool-name.js.map +1 -0
  58. package/dist/electron-build/utils/dual-source-facts.js +236 -0
  59. package/dist/electron-build/utils/dual-source-facts.js.map +1 -0
  60. package/dist/electron-build/utils/dual-source.js +32 -156
  61. package/dist/electron-build/utils/dual-source.js.map +1 -1
  62. package/dist/electron-build/utils/update-manager.js +22 -72
  63. package/dist/electron-build/utils/update-manager.js.map +1 -1
  64. package/dist/electron-build/utils/update-state.js +2 -19
  65. package/dist/electron-build/utils/update-state.js.map +1 -1
  66. package/dist/electron-build/utils/version-identity.js +193 -0
  67. package/dist/electron-build/utils/version-identity.js.map +1 -0
  68. package/dist/electron-build/utils/version-info.js +47 -101
  69. package/dist/electron-build/utils/version-info.js.map +1 -1
  70. package/dist/index.js +282 -96
  71. package/dist/ios/bolloon-web.json +10 -0
  72. package/dist/ios/mobile-contacts.js +44 -11
  73. package/dist/ios/mobile-core.js +1723 -84
  74. package/dist/ios/mobile-tasks.js +339 -0
  75. package/dist/ios/mobile-update.js +1442 -0
  76. package/dist/ios/mobile.js +308 -35
  77. package/dist/ios/routes-llm-config.js +344 -52
  78. package/dist/ios/routes-mobile-tasks.js +353 -0
  79. package/dist/ios/server.js +163 -4
  80. package/dist/ios/sw.js +1 -1
  81. package/dist/llm/config-store.js +146 -6
  82. package/dist/llm/connection-probe.js +744 -0
  83. package/dist/llm/custom-provider-store.js +224 -0
  84. package/dist/llm/data/provider-catalog-baked.js +19 -0
  85. package/dist/llm/model-catalog.js +717 -0
  86. package/dist/llm/model-discovery.js +1137 -0
  87. package/dist/llm/model-selection.js +1241 -0
  88. package/dist/llm/pi-ai.js +70 -11
  89. package/dist/llm/provider-catalog.js +898 -0
  90. package/dist/llm/provider-registry.js +917 -0
  91. package/dist/llm/tool-name.js +220 -0
  92. package/dist/setup/onboard.js +34 -8
  93. package/dist/utils/dual-source-facts.js +223 -0
  94. package/dist/utils/dual-source.js +12 -141
  95. package/dist/utils/update-manager.js +16 -59
  96. package/dist/utils/update-state.js +6 -18
  97. package/dist/utils/version-identity.js +176 -0
  98. package/dist/utils/version-info.js +9 -78
  99. package/dist/web/bolloon-web.json +10 -0
  100. package/dist/web/mobile-core.js +1721 -84
  101. package/dist/web/mobile-update.js +1442 -0
  102. package/dist/web/mobile.js +308 -35
  103. package/dist/web/routes-llm-config.js +344 -52
  104. package/dist/web/sw.js +1 -1
  105. package/package.json +1 -1
  106. package/scripts/build-web.ts +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../../src/llm/provider-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * tool-name.ts — 工具名「出网前的唯一净化边界」(2026-09-26)
4
+ *
5
+ * 为什么要这个文件:
6
+ * OpenAI 兼容 API 对 `tools[i].function.name` 有硬约束 —— 必须匹配
7
+ * `^[a-zA-Z0-9_-]{1,64}$`. 只要**第 121 个**工具的名字里有一个非法字符 (`.` `:` `/`
8
+ * 空格 / 中文 ...), 整个请求就被 400 拒掉:
9
+ *
10
+ * Invalid 'tools[120].function.name': string does not match pattern.
11
+ * Expected a string that matches the pattern '^[a-zA-Z0-9_-]+$'.
12
+ *
13
+ * 表现是「网页端明明配好了 API, 一跑就失败」—— 根因在**发包形状**, 不在凭据。
14
+ * 本仓曾注册 6 个带点的工具名 (`contact.list_authorized` 一族), 命中这个坑。
15
+ *
16
+ * 设计铁律:
17
+ * 1. **唯一边界**: 净化只在 `pi-ai.ts` 的 `generateText()` 里做一次 (那里是全仓唯一
18
+ * 产出 wire 形状 tools 数组的地方). 业务代码一个都不许自己做净化 —— 否则同一次改动
19
+ * 要有 N 个调用点跟着改, 迟早漏一个.
20
+ * 2. **确定性, 不是随机**: 非法字符 → `_`; 超长 → 前 55 字符 + `_` + 原名 sha256 前 8 位
21
+ * (同一次运行里同一原名永远得到同一个 API 名).
22
+ * 3. **派发不断**: 净化时把 `原名 → API 名` 同时反向登记 (原名 ↔ API 名双射), 回程
23
+ * (`resolveApiToolName`) 把 LLM 回吐的 API 名还原成原名, 再交给 `this.tools.get()`.
24
+ * LLM 也可能照 system prompt 里的原名回吐 —— 原名在表里就直接穿透.
25
+ * 4. **碰撞不许静默**: 两个**不同**原名净化后同名 → 抛 `ToolNameCollisionError`, 消息里
26
+ * 把两个原名都点名. 绝不悄悄合并或悄悄改名 (那会让 LLM 调到的工具和它以为的不是一个).
27
+ * 5. **不猜**: 没有名字 / 空名字的工具也是非法形状 → 抛错点名, 不静默丢掉.
28
+ *
29
+ * 真正「覆盖所有入口」的依据: CLI / Web / MCP / 技能 / 子 Agent / 长期任务全都走
30
+ * `getMinimax().chat(..., tools)` → `PiAIModel.generateText()` → `callOpenAI()`,
31
+ * 全仓只有这一条产出 tools 的路径 (见 `scripts/verify-tool-names.ts` 的源码级断言).
32
+ */
33
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
34
+ if (k2 === undefined) k2 = k;
35
+ var desc = Object.getOwnPropertyDescriptor(m, k);
36
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
37
+ desc = { enumerable: true, get: function() { return m[k]; } };
38
+ }
39
+ Object.defineProperty(o, k2, desc);
40
+ }) : (function(o, m, k, k2) {
41
+ if (k2 === undefined) k2 = k;
42
+ o[k2] = m[k];
43
+ }));
44
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
45
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
46
+ }) : function(o, v) {
47
+ o["default"] = v;
48
+ });
49
+ var __importStar = (this && this.__importStar) || (function () {
50
+ var ownKeys = function(o) {
51
+ ownKeys = Object.getOwnPropertyNames || function (o) {
52
+ var ar = [];
53
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
54
+ return ar;
55
+ };
56
+ return ownKeys(o);
57
+ };
58
+ return function (mod) {
59
+ if (mod && mod.__esModule) return mod;
60
+ var result = {};
61
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
62
+ __setModuleDefault(result, mod);
63
+ return result;
64
+ };
65
+ })();
66
+ Object.defineProperty(exports, "__esModule", { value: true });
67
+ exports.globalToolNameRoutes = exports.ToolNameRouteTable = exports.ToolNameCollisionError = exports.TOOL_NAME_PATTERN = exports.TOOL_NAME_CHAR_CLASS = exports.TOOL_NAME_MAX_LENGTH = void 0;
68
+ exports.isValidToolName = isValidToolName;
69
+ exports.illegalCharsOf = illegalCharsOf;
70
+ exports.toolNameFingerprint = toolNameFingerprint;
71
+ exports.sanitizeToolName = sanitizeToolName;
72
+ exports.sanitizeToolsForApi = sanitizeToolsForApi;
73
+ exports.resolveApiToolName = resolveApiToolName;
74
+ exports.expandKnownToolNames = expandKnownToolNames;
75
+ const crypto = __importStar(require("crypto"));
76
+ /** OpenAI 兼容 API 对 function.name 的硬约束 */
77
+ exports.TOOL_NAME_MAX_LENGTH = 64;
78
+ /** 允许的字符集: 字母 / 数字 / 下划线 / 连字符 */
79
+ exports.TOOL_NAME_CHAR_CLASS = 'a-zA-Z0-9_-';
80
+ /** 完整形状约束 (1..64, 只含安全字符) */
81
+ exports.TOOL_NAME_PATTERN = /^[a-zA-Z0-9_-]{1,64}$/;
82
+ /** 太长时的截断长度: 55 + '_' + 8 位 hash = 64, 正好贴着上限 */
83
+ const TRUNCATE_KEEP = 55;
84
+ /** 严格形状校验 (不做任何修补) */
85
+ function isValidToolName(name) {
86
+ return typeof name === 'string' && exports.TOOL_NAME_PATTERN.test(name);
87
+ }
88
+ /** 名字里的非法字符 (去重, 按出现顺序) —— 给探针/门报「违规字符是什么」用 */
89
+ function illegalCharsOf(name) {
90
+ const out = [];
91
+ for (const ch of String(name ?? '')) {
92
+ if (!/[a-zA-Z0-9_-]/.test(ch) && !out.includes(ch))
93
+ out.push(ch);
94
+ }
95
+ return out;
96
+ }
97
+ /** 原名指纹 (sha256 前 8 位 hex) —— 超长截断的去碰撞后缀 */
98
+ function toolNameFingerprint(name) {
99
+ return crypto.createHash('sha256').update(String(name), 'utf8').digest('hex').slice(0, 8);
100
+ }
101
+ /**
102
+ * 纯函数净化: 非法字符 → `_`; 超长 → 截断 + 稳定 hash 后缀.
103
+ * 已经是合法名的原样返回 (幂等, 再跑一次不变).
104
+ */
105
+ function sanitizeToolName(name) {
106
+ const raw = String(name ?? '');
107
+ let s = raw.replace(new RegExp(`[^${exports.TOOL_NAME_CHAR_CLASS}]`, 'g'), '_');
108
+ if (s.length > exports.TOOL_NAME_MAX_LENGTH) {
109
+ s = `${s.slice(0, TRUNCATE_KEEP)}_${toolNameFingerprint(raw)}`;
110
+ }
111
+ // 空名 / 全非法字符且被清空 (理论上不会, 上面都是替换成 '_') —— 兜底成可派发的稳定名
112
+ if (s.length === 0)
113
+ s = `tool_${toolNameFingerprint(raw)}`;
114
+ return s;
115
+ }
116
+ /** 两个不同原名净化后撞名 —— 点名两方, 拒绝发包 */
117
+ class ToolNameCollisionError extends Error {
118
+ apiName;
119
+ names;
120
+ constructor(apiName, names) {
121
+ super(`工具名净化后撞名: ${names.map((n) => `"${n}"`).join(' 与 ')} 都会净化为 "${apiName}" —— ` +
122
+ `拒绝发包 (两个不同工具共用一个 API 名会让 LLM 调到的实现不可知). ` +
123
+ `请给其中一个改名, 只剩安全字符 [${exports.TOOL_NAME_CHAR_CLASS}] 且 ≤64 字符.`);
124
+ this.name = 'ToolNameCollisionError';
125
+ this.apiName = apiName;
126
+ this.names = names;
127
+ }
128
+ }
129
+ exports.ToolNameCollisionError = ToolNameCollisionError;
130
+ /**
131
+ * 原名 ↔ API 名 双射表.
132
+ * 正向: 出网时把原名登记进来拿 API 名 (碰撞 → 抛错, 不静默).
133
+ * 反向: 回程把 LLM 回吐的 API 名还原成原名 (未知名原样穿透, 由业务侧报「未知工具」).
134
+ */
135
+ class ToolNameRouteTable {
136
+ byApi = new Map();
137
+ byOriginal = new Map();
138
+ /** 登记一个原名, 返回它的 API 名. 撞名 → ToolNameCollisionError. */
139
+ register(original) {
140
+ const orig = String(original ?? '');
141
+ if (isValidToolName(orig)) {
142
+ // 合法名不动: 但也要防「另一个原名净化成它」的撞名 (下面 byApi 会处理)
143
+ const api = orig;
144
+ const holder = this.byApi.get(api);
145
+ if (holder !== undefined && holder !== orig) {
146
+ throw new ToolNameCollisionError(api, [holder, orig]);
147
+ }
148
+ this.byApi.set(api, orig);
149
+ this.byOriginal.set(orig, api);
150
+ return api;
151
+ }
152
+ const api = sanitizeToolName(orig);
153
+ const holder = this.byApi.get(api);
154
+ if (holder !== undefined && holder !== orig) {
155
+ throw new ToolNameCollisionError(api, [holder, orig]);
156
+ }
157
+ this.byApi.set(api, orig);
158
+ this.byOriginal.set(orig, api);
159
+ return api;
160
+ }
161
+ /** 批量登记 */
162
+ registerAll(originals) {
163
+ return originals.map((n) => this.register(n));
164
+ }
165
+ /** 原名 → API 名 (没登记过就现算, 不登记 —— 给纯查询用) */
166
+ apiNameOf(original) {
167
+ const known = this.byOriginal.get(String(original ?? ''));
168
+ if (known !== undefined)
169
+ return known;
170
+ return isValidToolName(original) ? original : sanitizeToolName(original);
171
+ }
172
+ /**
173
+ * API 名 → 原名 (回程派发用).
174
+ * 不在表里 (LLM 照 system prompt 里的原名回吐 / 编了个名字) → 原样返回,
175
+ * 交给业务侧 `tools.get()` 走「未知工具」分支 — 不在这里吞掉.
176
+ */
177
+ resolveToOriginal(apiName) {
178
+ const hit = this.byApi.get(String(apiName ?? ''));
179
+ return hit !== undefined ? hit : String(apiName ?? '');
180
+ }
181
+ /** 是否知道这个 API 名 */
182
+ knows(apiName) {
183
+ return this.byApi.has(String(apiName ?? ''));
184
+ }
185
+ /** 全部映射 (原名 → API 名), 按登记顺序 */
186
+ get mappings() {
187
+ const seen = new Set();
188
+ const out = [];
189
+ for (const [api, original] of this.byApi.entries()) {
190
+ if (seen.has(original))
191
+ continue;
192
+ seen.add(original);
193
+ out.push({ original, api, changed: original !== api });
194
+ }
195
+ return out;
196
+ }
197
+ /** 被改写过的部分 (改名清单) */
198
+ get changed() {
199
+ return this.mappings.filter((m) => m.changed);
200
+ }
201
+ /** 表里已知的原名个数 */
202
+ get size() {
203
+ return this.byApi.size;
204
+ }
205
+ /** 清空 (测试用; 业务路径不该调) */
206
+ clear() {
207
+ this.byApi.clear();
208
+ this.byOriginal.clear();
209
+ }
210
+ }
211
+ exports.ToolNameRouteTable = ToolNameRouteTable;
212
+ /**
213
+ * 进程级单例: 出网净化与回程派发共用同一张表.
214
+ * (出网在 pi-ai.ts, 派发在 pi-sdk.ts / workflow-pivot-loop.ts —— 只有共享一份才保证还原得到真名)
215
+ */
216
+ exports.globalToolNameRoutes = new ToolNameRouteTable();
217
+ /**
218
+ * **唯一**的出网净化入口: 把 wire 形状的 tools 数组里的 `function.name` 逐个净化,
219
+ * 顺便把映射登记进 `globalToolNameRoutes` 供回程派发还原.
220
+ *
221
+ * - 不改入参 (返回新数组 / 新对象), 调用方拿去发包即可;
222
+ * - 没名字 / 空名字 → 抛错 (说不出名字的工具本来就是坏形状, 不许静默丢);
223
+ * - 撞名 → ToolNameCollisionError (点名两个原名).
224
+ */
225
+ function sanitizeToolsForApi(tools, table = exports.globalToolNameRoutes) {
226
+ if (!Array.isArray(tools))
227
+ return tools;
228
+ const out = new Array(tools.length);
229
+ for (let i = 0; i < tools.length; i++) {
230
+ const tool = tools[i];
231
+ const original = tool?.function?.name;
232
+ if (typeof original !== 'string' || original.length === 0) {
233
+ throw new Error(`工具 #${i} 没有可用的 function.name (拿到 ${JSON.stringify(original)}) —— 拒绝发包: ` +
234
+ `OpenAI 兼容 API 要求每个工具都有 name 且匹配 /^[a-zA-Z0-9_-]{1,64}$/`);
235
+ }
236
+ const api = table.register(original);
237
+ out[i] = api === original ? tool : { ...tool, function: { ...tool.function, name: api } };
238
+ }
239
+ return out;
240
+ }
241
+ /** 回程: LLM 回吐的名字 → 注册表真名 (未知名原样穿透) */
242
+ function resolveApiToolName(apiName, table = exports.globalToolNameRoutes) {
243
+ return table.resolveToOriginal(apiName);
244
+ }
245
+ /**
246
+ * 给「文本解析」路径用的已知名集合: 原名 + 它们的 API 名.
247
+ * LLM 在文本里回吐的可能是净化后的名字 (prompt/工具面里给的是 API 名),
248
+ * 只用原名集合过滤会把这类调用直接丢掉.
249
+ */
250
+ function expandKnownToolNames(names, table = exports.globalToolNameRoutes) {
251
+ const out = new Set();
252
+ for (const n of names) {
253
+ out.add(n);
254
+ const api = table.apiNameOf(n);
255
+ out.add(api);
256
+ // 预登记, 保证回程还原得到
257
+ try {
258
+ table.register(n);
259
+ }
260
+ catch {
261
+ // 撞名: 交给出网时的 sanitizeToolsForApi 抛 (那里能给出「拒绝发包」的上下文)
262
+ }
263
+ }
264
+ return out;
265
+ }
266
+ //# sourceMappingURL=tool-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-name.js","sourceRoot":"","sources":["../../../src/llm/tool-name.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ /**
3
+ * dual-source-facts.ts — 双源的**语义核心** (2026-09-26, update-protocol §12)
4
+ *
5
+ * 为什么从 `dual-source.ts` 里抽出这一半: 手机端 WebView **没有 node:**, 但手机端双源更新
6
+ * 必须用**和桌面同一份**交叉校验 / 错误分类 / dev 快照比较 —— 否则同一件事在电脑上和手机上
7
+ * 会长出两套说法 (而"两个源指向不同版本就拒绝"这种事, 两套说法迟早有一处是错的)。
8
+ *
9
+ * 这里只放**纯函数与类型** (不 import 任何 `node:*`, 不在顶层读 `process.env`):
10
+ * · GitHub 侧错误分类 `classifyGithubError` (§12.3, 与 registry 侧并列不合并)
11
+ * · stable 的交叉校验 `crossCheckStable` (§12.1)
12
+ * · dev 的按 sha 比较 `compareDevSnapshots` (§12.1)
13
+ * · 事实/报告的紧凑视图 `toGithubReport` / `renderGithubReportLine`
14
+ *
15
+ * 需要网络与子进程的那一半 (真调 api.github.com / codeload 下载 / 现场构建 dev 快照)
16
+ * 仍在 `dual-source.ts` —— 它在这份纯模块之上, 且把这些名字原样再导出。
17
+ *
18
+ * 硬口径 (§12.5, 验收核心, 两边共用):
19
+ * - 源不可达 / 版本不存在 → **拒绝并说清** (带具体分类), 绝不静默装回旧版
20
+ * - 不编造不存在的路径: 本仓 GitHub 上**真的没有 Release** (0 个), 所以 "Release 缺" 时
21
+ * 如实报 "发布记录缺 Tag / Release" (提醒级), **不是** fake 一个 Release 出来
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.OFFLINE_CODES = exports.GITHUB_REASONS = exports.DEV_CHANNEL_WARNING = void 0;
25
+ exports.toGithubReport = toGithubReport;
26
+ exports.renderGithubReportLine = renderGithubReportLine;
27
+ exports.collectNetEvidence = collectNetEvidence;
28
+ exports.classifyGithubError = classifyGithubError;
29
+ exports.classifyRegistryError = classifyRegistryError;
30
+ exports.newestGithubVersion = newestGithubVersion;
31
+ exports.numericCompare = numericCompare;
32
+ exports.crossCheckStable = crossCheckStable;
33
+ exports.compareDevSnapshots = compareDevSnapshots;
34
+ const version_identity_js_1 = require("./version-identity.js");
35
+ Object.defineProperty(exports, "DEV_CHANNEL_WARNING", { enumerable: true, get: function () { return version_identity_js_1.DEV_CHANNEL_WARNING; } });
36
+ // ── 类型 ────────────────────────────────────────────────────────────────────
37
+ /**
38
+ * GitHub 侧错误的分类 (§12.3) —— 与 registry 的分类**并列且不合并**:
39
+ * offline 网络不可达 (ENOTFOUND/EAI_AGAIN/ECONNREFUSED/超时)
40
+ * rate_limited HTTP 403/429 (限流; 带重试时间)
41
+ * not_found HTTP 404 (没有 Release / 没有 master 分支 / 仓库不存在)
42
+ * http_error 其它 HTTP 状态 (5xx 等) —— 不塞进上面三类, 免得把"服务有问题"说成"网不通"
43
+ * parse_error 拿到了内容但解析不了
44
+ */
45
+ exports.GITHUB_REASONS = ['offline', 'rate_limited', 'not_found', 'http_error', 'parse_error'];
46
+ function toGithubReport(r) {
47
+ if (!r.ok) {
48
+ return {
49
+ reachable: false, reason: r.reason, detail: r.detail, retryAt: r.retryAt,
50
+ headSha: r.facts?.headSha ?? null, ref: r.facts?.ref ?? `refs/heads/${version_identity_js_1.DEV_BRANCH}`,
51
+ releases: r.facts?.releases.length, tags: r.facts?.tags.length,
52
+ newestVersion: r.facts ? newestGithubVersion(r.facts) : null,
53
+ partial: r.facts?.partial, fetchedAt: r.facts?.fetchedAt,
54
+ };
55
+ }
56
+ return {
57
+ reachable: true, headSha: r.facts.headSha, ref: r.facts.ref,
58
+ releases: r.facts.releases.length, tags: r.facts.tags.length,
59
+ newestVersion: newestGithubVersion(r.facts), partial: r.facts.partial, fetchedAt: r.facts.fetchedAt,
60
+ };
61
+ }
62
+ function renderGithubReportLine(g) {
63
+ if (!g)
64
+ return 'GitHub 源: 未查询';
65
+ if (!g.reachable) {
66
+ const retry = g.retryAt ? `, 限流重试时间 ${g.retryAt}` : '';
67
+ return `GitHub 源: 不可达 — github_unavailable(${g.reason}) ${g.detail || ''}${retry}`;
68
+ }
69
+ return `GitHub 源: 可达 · master HEAD ${g.headSha ? g.headSha.slice(0, 7) : '未知'} · Release ${g.releases ?? 0} 个 · Tag ${g.tags ?? 0} 个 · 最新版本标签 ${g.newestVersion || '无'}${g.partial ? ' (部分请求失败)' : ''}`;
70
+ }
71
+ // ── 错误分类 ────────────────────────────────────────────────────────────────
72
+ exports.OFFLINE_CODES = new Set(['ENOTFOUND', 'EAI_AGAIN', 'ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT', 'EHOSTUNREACH', 'ENETUNREACH', 'ENETDOWN', 'EAI_FAIL', 'UND_ERR_CONNECT_TIMEOUT', 'CERT_HAS_EXPIRED']);
73
+ /**
74
+ * 从**错误链**里挖网络类证据。
75
+ *
76
+ * 为什么不能只看 `err.code`: `fetch()` 抛出来的是 `TypeError: fetch failed`, 真正的 socket 错误挂在
77
+ * `err.cause.code` (undici)。只看 `err.code` ⇒ 连不上的端口会被判成 http_error / registry_unavailable,
78
+ * 于是"源不可达"这一条在真跑里变成**分类错误**(真跑抓到过: 死端口 → registry_unavailable)。
79
+ * 浏览器侧则是 `message: 'Failed to fetch'` / `'Load failed'`。
80
+ */
81
+ function collectNetEvidence(err) {
82
+ const codes = [];
83
+ const msgs = [];
84
+ let cur = err;
85
+ for (let depth = 0; cur && depth < 6; depth++) {
86
+ // AggregateError (多地址并发失败) 的成员各带一个 code
87
+ const inner = Array.isArray(cur.errors) ? cur.errors : [];
88
+ for (const e of inner) {
89
+ if (e?.code)
90
+ codes.push(String(e.code));
91
+ if (e?.message)
92
+ msgs.push(String(e.message));
93
+ }
94
+ if (cur.code)
95
+ codes.push(String(cur.code));
96
+ if (cur.errno)
97
+ codes.push(String(cur.errno));
98
+ if (cur.message)
99
+ msgs.push(String(cur.message));
100
+ cur = cur.cause;
101
+ }
102
+ const code = codes.find((c) => exports.OFFLINE_CODES.has(c)) || codes[0] || '';
103
+ const message = msgs.join(' · ');
104
+ const offline = codes.some((c) => exports.OFFLINE_CODES.has(c))
105
+ || /timeout|timed out|ENOTFOUND|getaddrinfo|network|socket hang up|超时|Failed to fetch|fetch failed|NetworkError|Load failed|ECONNREFUSED|ECONNRESET/i.test(message);
106
+ return { code, message, offline };
107
+ }
108
+ /** 网络类 → offline; 403/429 → rate_limited; 404 → not_found; 其它 → http_error。 */
109
+ function classifyGithubError(err, httpStatus, headers = {}) {
110
+ const retryAt = headers['x-ratelimit-reset']
111
+ ? new Date(Number(headers['x-ratelimit-reset']) * 1000).toISOString()
112
+ : null;
113
+ const net = collectNetEvidence(err);
114
+ if (net.offline) {
115
+ return { kind: 'github_unavailable', reason: 'offline', detail: `${net.code || net.message || '网络不可达'}`, retryAt: null };
116
+ }
117
+ if (httpStatus === 403 || httpStatus === 429) {
118
+ return { kind: 'github_unavailable', reason: 'rate_limited', detail: `GitHub 返回 HTTP ${httpStatus} (限流/权限)`, retryAt };
119
+ }
120
+ if (httpStatus === 404) {
121
+ return { kind: 'github_unavailable', reason: 'not_found', detail: `GitHub 上没有 ${version_identity_js_1.GITHUB_UPSTREAM_SLUG} 的该项记录 (HTTP 404)`, retryAt: null };
122
+ }
123
+ if (httpStatus && httpStatus >= 400) {
124
+ return { kind: 'github_unavailable', reason: 'http_error', detail: `GitHub 返回 HTTP ${httpStatus}`, retryAt };
125
+ }
126
+ return { kind: 'github_unavailable', reason: 'http_error', detail: net.code || net.message || '未知错误', retryAt: null };
127
+ }
128
+ /** registry 侧错误的分类 (§3) —— 与 `classifyGithubError` **并列, 不合并**。 */
129
+ function classifyRegistryError(err, httpStatus) {
130
+ const net = collectNetEvidence(err);
131
+ if (net.offline) {
132
+ return { kind: 'offline', detail: `${net.code || net.message || '网络不可达'}` };
133
+ }
134
+ if (httpStatus && httpStatus >= 500)
135
+ return { kind: 'registry_unavailable', detail: `registry 返回 HTTP ${httpStatus}` };
136
+ if (httpStatus === 404)
137
+ return { kind: 'registry_unavailable', detail: `registry 上没有该包 (HTTP 404)` };
138
+ if (httpStatus && httpStatus >= 400)
139
+ return { kind: 'registry_unavailable', detail: `registry 返回 HTTP ${httpStatus}` };
140
+ return { kind: 'registry_unavailable', detail: net.code || net.message || '未知错误' };
141
+ }
142
+ // ── 版本标签比较 ────────────────────────────────────────────────────────────
143
+ /** GitHub 上出现过的最高版本号 (Release ∪ Tag, 去掉 v 前缀)。没有 → null。 */
144
+ function newestGithubVersion(facts) {
145
+ const all = [...facts.releases, ...facts.tags.map((t) => t.name)]
146
+ .map((n) => String(n).trim().replace(/^v/, ''))
147
+ .filter((n) => /^\d+\.\d+\.\d+/.test(n));
148
+ if (all.length === 0)
149
+ return null;
150
+ return all.sort((a, b) => (numericCompare(a, b) < 0 ? 1 : -1))[0];
151
+ }
152
+ /** 只比数值段 (与 version-identity 的 compareVersions 同语义, 这里不再反向依赖它)。 */
153
+ function numericCompare(a, b) {
154
+ const p = (v) => v.split('-')[0].split('.').map((x) => parseInt(x.replace(/\D.*$/, ''), 10) || 0);
155
+ const pa = p(a);
156
+ const pb = p(b);
157
+ for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
158
+ const x = pa[i] ?? 0;
159
+ const y = pb[i] ?? 0;
160
+ if (x < y)
161
+ return -1;
162
+ if (x > y)
163
+ return 1;
164
+ }
165
+ return 0;
166
+ }
167
+ function hasName(names, v) {
168
+ const set = new Set(names.map((n) => String(n).trim().replace(/^v/, '')));
169
+ return set.has(v.replace(/^v/, ''));
170
+ }
171
+ /**
172
+ * stable 的交叉校验 (§12.1/§12.5): npm 仍是权威, GitHub 只回答"这次发布的记录在不在"。
173
+ *
174
+ * agree npm 的 latest 在 GitHub 上有同名 tag/Release → 两条记录指向同一版
175
+ * mismatch GitHub 记录了**更新的**版本而 registry 上没有 → 拒绝 (不许按 tag 去装)
176
+ * missing_record registry 有该版本但 GitHub 缺这条记录 → **提醒级, 不阻塞** (§12.5 原文:
177
+ * "报发布记录缺 Tag (提醒级, 不阻塞 stable 更新)")
178
+ * no_record_at_all GitHub 上一条版本记录都没有 → 如实报"暂无 tag 可交叉校验"(不编造路径)
179
+ */
180
+ function crossCheckStable(registryLatest, facts) {
181
+ const common = {
182
+ registryLatest, githubVersion: newestGithubVersion(facts),
183
+ releases: facts.releases.length, tags: facts.tags.length,
184
+ };
185
+ if (!registryLatest) {
186
+ return { ...common, kind: 'no_record_at_all', hasTag: false, hasRelease: false, blocking: false, detail: 'npm 没有给出 latest, 无从交叉校验' };
187
+ }
188
+ const allNames = [...facts.releases, ...facts.tags.map((t) => t.name)];
189
+ const hasTag = hasName(facts.tags.map((t) => t.name), registryLatest);
190
+ const hasRelease = hasName(facts.releases, registryLatest);
191
+ const ghNewest = common.githubVersion;
192
+ /**
193
+ * **先判"GitHub 记录了比 registry 更新的发布"** —— 这是 §12.5 的 "Release 存在但 registry 上没有该版本 → cross_check_mismatch"。
194
+ * 放在 agree 之前: 即使 registry 的 latest 自己也有 tag, 只要 GitHub 上还多出一条更新的发布记录, 两个源对
195
+ * "当前最新是哪一版"就是不一致的 —— 这种不一致必须拦住, 不能因为"latest 有 tag"就宣布一致。
196
+ */
197
+ if (ghNewest && numericCompare(ghNewest, registryLatest) > 0) {
198
+ return {
199
+ ...common, kind: 'mismatch', hasTag, hasRelease, blocking: true,
200
+ detail: `GitHub 上有 ${ghNewest} 的发布记录, 但 npm registry 的 latest 还是 ${registryLatest} — 拒绝按 GitHub 的记录安装`,
201
+ };
202
+ }
203
+ if (hasTag || hasRelease) {
204
+ return {
205
+ ...common, kind: 'agree', hasTag, hasRelease, blocking: false,
206
+ detail: `npm latest=${registryLatest} 在 GitHub 上有同名记录 (${hasRelease ? `Release v${registryLatest}` : `Tag v${registryLatest}`}) — 两个源指向同一版`,
207
+ };
208
+ }
209
+ if (allNames.length === 0) {
210
+ return {
211
+ ...common, kind: 'no_record_at_all', hasTag: false, hasRelease: false, blocking: false,
212
+ detail: `GitHub 上暂无任何 tag / Release (0 个) — 暂无可交叉校验的记录, npm 仍是权威 (latest=${registryLatest})`,
213
+ };
214
+ }
215
+ return {
216
+ ...common, kind: 'missing_record', hasTag, hasRelease, blocking: false,
217
+ detail: `npm latest=${registryLatest} 在 GitHub 上没有对应记录 (GitHub 最新版本标签 ${ghNewest || '无'}; Release ${facts.releases.length} 个 / Tag ${facts.tags.length} 个) — 发布记录缺 Tag, 不阻塞 stable 更新`,
218
+ };
219
+ }
220
+ function compareDevSnapshots(installedSha, headSha, ref = `refs/heads/${version_identity_js_1.DEV_BRANCH}`) {
221
+ const short = (s) => (s ? s.slice(0, 7) : '未知');
222
+ if (!headSha) {
223
+ return { ref, headSha, installedSha, same: false, behind: false, detail: `${ref} 的 HEAD 读不到 — 无法判定 dev 快照新旧` };
224
+ }
225
+ if (!installedSha) {
226
+ return { ref, headSha, installedSha, same: false, behind: false, detail: `当前不是 dev 快照 (stable 安装) — 切到 dev 将得到 ${ref} @ ${short(headSha)}` };
227
+ }
228
+ const same = installedSha.slice(0, 7) === headSha.slice(0, 7);
229
+ return {
230
+ ref, headSha, installedSha, same, behind: !same,
231
+ detail: same
232
+ ? `已是最新的 dev 快照 (${ref} @ ${short(headSha)}) — 同一个 commit`
233
+ : `dev 快照落后: 已装 ${short(installedSha)} → master HEAD ${short(headSha)} (按 commit sha 判定, 不看版本号)`,
234
+ };
235
+ }
236
+ //# sourceMappingURL=dual-source-facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dual-source-facts.js","sourceRoot":"","sources":["../../../src/utils/dual-source-facts.ts"],"names":[],"mappings":"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"}