@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
@@ -10,6 +10,11 @@
10
10
  * - 错误分类 `classifyGithubError` 与 §3 的 `classifyRegistryError` **并列, 不合并**
11
11
  * - dev 快照的**取源与构建**也在这里 (update-manager 只负责"切换 + 验证 + 回滚", 不另造一套)
12
12
  *
13
+ * 2026-09-26 拆分 (手机端要复用同一份语义): **纯语义那一半**去 `dual-source-facts.ts`
14
+ * (分类 / 交叉校验 / dev 快照比较 —— 无 `node:`, 因此能打进手机端 WebView bundle);
15
+ * 本文件只留**需要网络与子进程**的那一半 (真调 api.github.com / codeload / 现场构建),
16
+ * 并把纯那一半的名字原样再导出 —— 既有 `from './dual-source.js'` 的 import 一行不用改。
17
+ *
13
18
  * 硬口径 (§12.5, 验收核心):
14
19
  * - 源不可达 / 版本不存在 → **拒绝并说清** (带具体分类), 绝不静默装回旧版
15
20
  * - 不编造不存在的路径: 本仓 GitHub 上**真的没有 Release** (0 个), 所以 "Release 缺" 时
@@ -49,14 +54,8 @@ var __importStar = (this && this.__importStar) || (function () {
49
54
  };
50
55
  })();
51
56
  Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.DEV_CHANNEL_WARNING = void 0;
53
- exports.toGithubReport = toGithubReport;
54
- exports.renderGithubReportLine = renderGithubReportLine;
55
- exports.classifyGithubError = classifyGithubError;
57
+ exports.DEV_CHANNEL_WARNING = exports.compareDevSnapshots = exports.crossCheckStable = exports.renderGithubReportLine = exports.toGithubReport = exports.numericCompare = exports.newestGithubVersion = exports.classifyRegistryError = exports.classifyGithubError = exports.OFFLINE_CODES = exports.GITHUB_REASONS = void 0;
56
58
  exports.fetchGithubFacts = fetchGithubFacts;
57
- exports.newestGithubVersion = newestGithubVersion;
58
- exports.crossCheckStable = crossCheckStable;
59
- exports.compareDevSnapshots = compareDevSnapshots;
60
59
  exports.prepareDevSnapshot = prepareDevSnapshot;
61
60
  const fs = __importStar(require("fs"));
62
61
  const fsp = __importStar(require("fs/promises"));
@@ -65,34 +64,24 @@ const http = __importStar(require("http"));
65
64
  const https = __importStar(require("https"));
66
65
  const child_process_1 = require("child_process");
67
66
  const version_info_js_1 = require("./version-info.js");
68
- Object.defineProperty(exports, "DEV_CHANNEL_WARNING", { enumerable: true, get: function () { return version_info_js_1.DEV_CHANNEL_WARNING; } });
69
- function toGithubReport(r) {
70
- if (!r.ok) {
71
- return {
72
- reachable: false, reason: r.reason, detail: r.detail, retryAt: r.retryAt,
73
- headSha: r.facts?.headSha ?? null, ref: r.facts?.ref ?? `refs/heads/${version_info_js_1.DEV_BRANCH}`,
74
- releases: r.facts?.releases.length, tags: r.facts?.tags.length,
75
- newestVersion: r.facts ? newestGithubVersion(r.facts) : null,
76
- partial: r.facts?.partial, fetchedAt: r.facts?.fetchedAt,
77
- };
78
- }
79
- return {
80
- reachable: true, headSha: r.facts.headSha, ref: r.facts.ref,
81
- releases: r.facts.releases.length, tags: r.facts.tags.length,
82
- newestVersion: newestGithubVersion(r.facts), partial: r.facts.partial, fetchedAt: r.facts.fetchedAt,
83
- };
84
- }
85
- function renderGithubReportLine(g) {
86
- if (!g)
87
- return 'GitHub 源: 未查询';
88
- if (!g.reachable) {
89
- const retry = g.retryAt ? `, 限流重试时间 ${g.retryAt}` : '';
90
- return `GitHub 源: 不可达 — github_unavailable(${g.reason}) ${g.detail || ''}${retry}`;
91
- }
92
- return `GitHub 源: 可达 · master HEAD ${g.headSha ? g.headSha.slice(0, 7) : '未知'} · Release ${g.releases ?? 0} 个 · Tag ${g.tags ?? 0} 个 · 最新版本标签 ${g.newestVersion || '无'}${g.partial ? ' (部分请求失败)' : ''}`;
93
- }
94
- // ── HTTP ────────────────────────────────────────────────────────────────────
95
- const OFFLINE_CODES = new Set(['ENOTFOUND', 'EAI_AGAIN', 'ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT', 'EHOSTUNREACH', 'ENETUNREACH', 'ENETDOWN', 'EAI_FAIL', 'UND_ERR_CONNECT_TIMEOUT', 'CERT_HAS_EXPIRED']);
67
+ const dual_source_facts_js_1 = require("./dual-source-facts.js");
68
+ /**
69
+ * 纯语义那一半 (错误分类 / 交叉校验 / dev 快照比较 / 报告渲染) —— **唯一一份在
70
+ * `dual-source-facts.ts`** (桌面与手机端共用)。这里原样再导出: 桌面既有 import 路径不变,
71
+ * 手机端 WebView 直接 import 那份纯模块 (没有 `node:` ⇒ 能进 bundle)。
72
+ */
73
+ var dual_source_facts_js_2 = require("./dual-source-facts.js");
74
+ Object.defineProperty(exports, "GITHUB_REASONS", { enumerable: true, get: function () { return dual_source_facts_js_2.GITHUB_REASONS; } });
75
+ Object.defineProperty(exports, "OFFLINE_CODES", { enumerable: true, get: function () { return dual_source_facts_js_2.OFFLINE_CODES; } });
76
+ Object.defineProperty(exports, "classifyGithubError", { enumerable: true, get: function () { return dual_source_facts_js_2.classifyGithubError; } });
77
+ Object.defineProperty(exports, "classifyRegistryError", { enumerable: true, get: function () { return dual_source_facts_js_2.classifyRegistryError; } });
78
+ Object.defineProperty(exports, "newestGithubVersion", { enumerable: true, get: function () { return dual_source_facts_js_2.newestGithubVersion; } });
79
+ Object.defineProperty(exports, "numericCompare", { enumerable: true, get: function () { return dual_source_facts_js_2.numericCompare; } });
80
+ Object.defineProperty(exports, "toGithubReport", { enumerable: true, get: function () { return dual_source_facts_js_2.toGithubReport; } });
81
+ Object.defineProperty(exports, "renderGithubReportLine", { enumerable: true, get: function () { return dual_source_facts_js_2.renderGithubReportLine; } });
82
+ Object.defineProperty(exports, "crossCheckStable", { enumerable: true, get: function () { return dual_source_facts_js_2.crossCheckStable; } });
83
+ Object.defineProperty(exports, "compareDevSnapshots", { enumerable: true, get: function () { return dual_source_facts_js_2.compareDevSnapshots; } });
84
+ Object.defineProperty(exports, "DEV_CHANNEL_WARNING", { enumerable: true, get: function () { return dual_source_facts_js_2.DEV_CHANNEL_WARNING; } });
96
85
  /** 可选 GitHub token (只为提配额: 匿名 60 次/小时, 认证 5000 次/小时)。**永不打印、永不入库**。 */
97
86
  function githubToken(env = process.env) {
98
87
  const t = env.GITHUB_TOKEN || env.GH_TOKEN || env.BOLLOON_GITHUB_TOKEN;
@@ -118,26 +107,6 @@ function httpGetRaw(url, timeoutMs, token) {
118
107
  req.on('timeout', () => { req.destroy(new Error('timeout')); });
119
108
  });
120
109
  }
121
- /** 网络类 → offline; 403/429 → rate_limited; 404 → not_found; 其它 → http_error。 */
122
- function classifyGithubError(err, httpStatus, headers = {}) {
123
- const retryAt = headers['x-ratelimit-reset']
124
- ? new Date(Number(headers['x-ratelimit-reset']) * 1000).toISOString()
125
- : null;
126
- const code = String(err?.code || '');
127
- if (OFFLINE_CODES.has(code) || /timeout|timed out|ENOTFOUND|getaddrinfo|network|socket hang up|超时/i.test(String(err?.message || ''))) {
128
- return { kind: 'github_unavailable', reason: 'offline', detail: `${code || err?.message || '网络不可达'}`, retryAt: null };
129
- }
130
- if (httpStatus === 403 || httpStatus === 429) {
131
- return { kind: 'github_unavailable', reason: 'rate_limited', detail: `GitHub 返回 HTTP ${httpStatus} (限流/权限)`, retryAt };
132
- }
133
- if (httpStatus === 404) {
134
- return { kind: 'github_unavailable', reason: 'not_found', detail: `GitHub 上没有 ${version_info_js_1.GITHUB_UPSTREAM_SLUG} 的该项记录 (HTTP 404)`, retryAt: null };
135
- }
136
- if (httpStatus && httpStatus >= 400) {
137
- return { kind: 'github_unavailable', reason: 'http_error', detail: `GitHub 返回 HTTP ${httpStatus}`, retryAt };
138
- }
139
- return { kind: 'github_unavailable', reason: 'http_error', detail: code || err?.message || '未知错误', retryAt: null };
140
- }
141
110
  /**
142
111
  * 查 GitHub 的三个事实: Releases / Tags / master HEAD。
143
112
  * **任何一个请求失败 → 整条 `github_unavailable`** (带分类), 但把已拿到的那部分 facts 一起带回去
@@ -167,11 +136,11 @@ async function fetchGithubFacts(opts = {}) {
167
136
  releases = Array.isArray(arr) ? arr.map((x) => String(x?.tag_name || '')).filter(Boolean) : [];
168
137
  }
169
138
  else {
170
- note(classifyGithubError(null, r.status, r.headers), 'releases');
139
+ note((0, dual_source_facts_js_1.classifyGithubError)(null, r.status, r.headers), 'releases');
171
140
  }
172
141
  }
173
142
  catch (e) {
174
- note(classifyGithubError(e), 'releases');
143
+ note((0, dual_source_facts_js_1.classifyGithubError)(e), 'releases');
175
144
  }
176
145
  // 2. Tags
177
146
  try {
@@ -183,11 +152,11 @@ async function fetchGithubFacts(opts = {}) {
183
152
  : [];
184
153
  }
185
154
  else {
186
- note(classifyGithubError(null, r.status, r.headers), 'tags');
155
+ note((0, dual_source_facts_js_1.classifyGithubError)(null, r.status, r.headers), 'tags');
187
156
  }
188
157
  }
189
158
  catch (e) {
190
- note(classifyGithubError(e), 'tags');
159
+ note((0, dual_source_facts_js_1.classifyGithubError)(e), 'tags');
191
160
  }
192
161
  // 3. master HEAD (dev 通道的身份来源)
193
162
  try {
@@ -200,11 +169,11 @@ async function fetchGithubFacts(opts = {}) {
200
169
  }
201
170
  else {
202
171
  // 404 在这里的语义就是"没有 master 分支"(§12.3)
203
- note(classifyGithubError(null, r.status, r.headers), 'head');
172
+ note((0, dual_source_facts_js_1.classifyGithubError)(null, r.status, r.headers), 'head');
204
173
  }
205
174
  }
206
175
  catch (e) {
207
- note(classifyGithubError(e), 'head');
176
+ note((0, dual_source_facts_js_1.classifyGithubError)(e), 'head');
208
177
  }
209
178
  const facts = {
210
179
  slug, ref: `refs/heads/${version_info_js_1.DEV_BRANCH}`, headSha, releases, tags,
@@ -216,99 +185,6 @@ async function fetchGithubFacts(opts = {}) {
216
185
  }
217
186
  return { ok: true, facts };
218
187
  }
219
- /** GitHub 上出现过的最高版本号 (Release ∪ Tag, 去掉 v 前缀)。没有 → null。 */
220
- function newestGithubVersion(facts) {
221
- const all = [...facts.releases, ...facts.tags.map((t) => t.name)]
222
- .map((n) => String(n).trim().replace(/^v/, ''))
223
- .filter((n) => /^\d+\.\d+\.\d+/.test(n));
224
- if (all.length === 0)
225
- return null;
226
- return all.sort((a, b) => (numericCompare(a, b) < 0 ? 1 : -1))[0];
227
- }
228
- /** 只比数值段 (与 update-manager 的 compareVersions 同语义, 这里不反向依赖它)。 */
229
- function numericCompare(a, b) {
230
- const p = (v) => v.split('-')[0].split('.').map((x) => parseInt(x.replace(/\D.*$/, ''), 10) || 0);
231
- const pa = p(a);
232
- const pb = p(b);
233
- for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
234
- const x = pa[i] ?? 0;
235
- const y = pb[i] ?? 0;
236
- if (x < y)
237
- return -1;
238
- if (x > y)
239
- return 1;
240
- }
241
- return 0;
242
- }
243
- function hasName(names, v) {
244
- const set = new Set(names.map((n) => String(n).trim().replace(/^v/, '')));
245
- return set.has(v.replace(/^v/, ''));
246
- }
247
- /**
248
- * stable 的交叉校验 (§12.1/§12.5): npm 仍是权威, GitHub 只回答"这次发布的记录在不在"。
249
- *
250
- * agree npm 的 latest 在 GitHub 上有同名 tag/Release → 两条记录指向同一版
251
- * mismatch GitHub 记录了**更新的**版本而 registry 上没有 → 拒绝 (不许按 tag 去装)
252
- * missing_record registry 有该版本但 GitHub 缺这条记录 → **提醒级, 不阻塞** (§12.5 原文:
253
- * "报发布记录缺 Tag (提醒级, 不阻塞 stable 更新)")
254
- * no_record_at_all GitHub 上一条版本记录都没有 → 如实报"暂无 tag 可交叉校验"(不编造路径)
255
- */
256
- function crossCheckStable(registryLatest, facts) {
257
- const common = {
258
- registryLatest, githubVersion: newestGithubVersion(facts),
259
- releases: facts.releases.length, tags: facts.tags.length,
260
- };
261
- if (!registryLatest) {
262
- return { ...common, kind: 'no_record_at_all', hasTag: false, hasRelease: false, blocking: false, detail: 'npm 没有给出 latest, 无从交叉校验' };
263
- }
264
- const allNames = [...facts.releases, ...facts.tags.map((t) => t.name)];
265
- const hasTag = hasName(facts.tags.map((t) => t.name), registryLatest);
266
- const hasRelease = hasName(facts.releases, registryLatest);
267
- const ghNewest = common.githubVersion;
268
- /**
269
- * **先判"GitHub 记录了比 registry 更新的发布"** —— 这是 §12.5 的 "Release 存在但 registry 上没有该版本 → cross_check_mismatch"。
270
- * 放在 agree 之前: 即使 registry 的 latest 自己也有 tag, 只要 GitHub 上还多出一条更新的发布记录, 两个源对
271
- * "当前最新是哪一版"就是不一致的 —— 这种不一致必须拦住, 不能因为"latest 有 tag"就宣布一致。
272
- */
273
- if (ghNewest && numericCompare(ghNewest, registryLatest) > 0) {
274
- return {
275
- ...common, kind: 'mismatch', hasTag, hasRelease, blocking: true,
276
- detail: `GitHub 上有 ${ghNewest} 的发布记录, 但 npm registry 的 latest 还是 ${registryLatest} — 拒绝按 GitHub 的记录安装`,
277
- };
278
- }
279
- if (hasTag || hasRelease) {
280
- return {
281
- ...common, kind: 'agree', hasTag, hasRelease, blocking: false,
282
- detail: `npm latest=${registryLatest} 在 GitHub 上有同名记录 (${hasRelease ? `Release v${registryLatest}` : `Tag v${registryLatest}`}) — 两个源指向同一版`,
283
- };
284
- }
285
- if (allNames.length === 0) {
286
- return {
287
- ...common, kind: 'no_record_at_all', hasTag: false, hasRelease: false, blocking: false,
288
- detail: `GitHub 上暂无任何 tag / Release (0 个) — 暂无可交叉校验的记录, npm 仍是权威 (latest=${registryLatest})`,
289
- };
290
- }
291
- return {
292
- ...common, kind: 'missing_record', hasTag, hasRelease, blocking: false,
293
- detail: `npm latest=${registryLatest} 在 GitHub 上没有对应记录 (GitHub 最新版本标签 ${ghNewest || '无'}; Release ${facts.releases.length} 个 / Tag ${facts.tags.length} 个) — 发布记录缺 Tag, 不阻塞 stable 更新`,
294
- };
295
- }
296
- function compareDevSnapshots(installedSha, headSha, ref = `refs/heads/${version_info_js_1.DEV_BRANCH}`) {
297
- const short = (s) => (s ? s.slice(0, 7) : '未知');
298
- if (!headSha) {
299
- return { ref, headSha, installedSha, same: false, behind: false, detail: `${ref} 的 HEAD 读不到 — 无法判定 dev 快照新旧` };
300
- }
301
- if (!installedSha) {
302
- return { ref, headSha, installedSha, same: false, behind: false, detail: `当前不是 dev 快照 (stable 安装) — 切到 dev 将得到 ${ref} @ ${short(headSha)}` };
303
- }
304
- const same = installedSha.slice(0, 7) === headSha.slice(0, 7);
305
- return {
306
- ref, headSha, installedSha, same, behind: !same,
307
- detail: same
308
- ? `已是最新的 dev 快照 (${ref} @ ${short(headSha)}) — 同一个 commit`
309
- : `dev 快照落后: 已装 ${short(installedSha)} → master HEAD ${short(headSha)} (按 commit sha 判定, 不看版本号)`,
310
- };
311
- }
312
188
  function defaultRunNpm(args, cwd) {
313
189
  const r = (0, child_process_1.spawnSync)('npm', args, { cwd, encoding: 'utf-8', timeout: 900_000, maxBuffer: 32 * 1024 * 1024 });
314
190
  return { code: r.status ?? 1, stdout: r.stdout || '', stderr: r.stderr || '' };
@@ -326,7 +202,7 @@ async function downloadGithubSnapshot(sha, destParent, env, timeoutMs) {
326
202
  const tk = githubToken(env);
327
203
  const req = client.get(url, { timeout: timeoutMs, headers: { 'User-Agent': 'bolloon-update', ...(tk ? { Authorization: `Bearer ${tk}` } : {}) } }, (res) => {
328
204
  if ((res.statusCode || 0) >= 400) {
329
- reject(classifyGithubError(null, res.statusCode, res.headers));
205
+ reject((0, dual_source_facts_js_1.classifyGithubError)(null, res.statusCode, res.headers));
330
206
  return;
331
207
  }
332
208
  const chunks = [];
@@ -339,7 +215,7 @@ async function downloadGithubSnapshot(sha, destParent, env, timeoutMs) {
339
215
  await fsp.writeFile(file, buf);
340
216
  }
341
217
  catch (e) {
342
- const cls = e?.kind === 'github_unavailable' ? e : classifyGithubError(e);
218
+ const cls = e?.kind === 'github_unavailable' ? e : (0, dual_source_facts_js_1.classifyGithubError)(e);
343
219
  return { ok: false, kind: 'github_unavailable', reason: cls.reason, detail: `取 ${url} 失败: ${cls.detail}` };
344
220
  }
345
221
  const extract = path.join(destParent, 'src');
@@ -1 +1 @@
1
- {"version":3,"file":"dual-source.js","sourceRoot":"","sources":["../../../src/utils/dual-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dual-source.js","sourceRoot":"","sources":["../../../src/utils/dual-source.ts"],"names":[],"mappings":"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"}
@@ -52,14 +52,9 @@ var __importStar = (this && this.__importStar) || (function () {
52
52
  };
53
53
  })();
54
54
  Object.defineProperty(exports, "__esModule", { value: true });
55
- exports.NPM_FETCH_RETRY_FLAGS = exports.IN_FLIGHT_STAGES = exports.MIN_FREE_BYTES = exports.REFUSED_STATUSES = exports.DEV_BACK_TO_STABLE_HINT = exports.DEV_CHANNEL_WARNING = void 0;
55
+ exports.NPM_FETCH_RETRY_FLAGS = exports.IN_FLIGHT_STAGES = exports.MIN_FREE_BYTES = exports.classifyRegistryError = exports.REFUSED_STATUSES = exports.checkExitCode = exports.isKnownVersion = exports.compareVersions = exports.parseVersion = exports.DEV_BACK_TO_STABLE_HINT = exports.DEV_CHANNEL_WARNING = void 0;
56
56
  exports.parseJsonFromStdout = parseJsonFromStdout;
57
- exports.parseVersion = parseVersion;
58
- exports.compareVersions = compareVersions;
59
- exports.isKnownVersion = isKnownVersion;
60
- exports.classifyRegistryError = classifyRegistryError;
61
57
  exports.queryRegistryDoc = queryRegistryDoc;
62
- exports.checkExitCode = checkExitCode;
63
58
  exports.checkForUpdate = checkForUpdate;
64
59
  exports.freeBytesAt = freeBytesAt;
65
60
  exports.buildUpdatePlan = buildUpdatePlan;
@@ -81,9 +76,18 @@ const child_process_1 = require("child_process");
81
76
  const version_info_js_1 = require("./version-info.js");
82
77
  Object.defineProperty(exports, "DEV_CHANNEL_WARNING", { enumerable: true, get: function () { return version_info_js_1.DEV_CHANNEL_WARNING; } });
83
78
  Object.defineProperty(exports, "DEV_BACK_TO_STABLE_HINT", { enumerable: true, get: function () { return version_info_js_1.DEV_BACK_TO_STABLE_HINT; } });
79
+ const version_identity_js_1 = require("./version-identity.js");
80
+ Object.defineProperty(exports, "parseVersion", { enumerable: true, get: function () { return version_identity_js_1.parseVersion; } });
81
+ Object.defineProperty(exports, "compareVersions", { enumerable: true, get: function () { return version_identity_js_1.compareVersions; } });
82
+ Object.defineProperty(exports, "isKnownVersion", { enumerable: true, get: function () { return version_identity_js_1.isKnownVersion; } });
83
+ Object.defineProperty(exports, "checkExitCode", { enumerable: true, get: function () { return version_identity_js_1.checkExitCode; } });
84
+ Object.defineProperty(exports, "REFUSED_STATUSES", { enumerable: true, get: function () { return version_identity_js_1.REFUSED_STATUSES; } });
85
+ // registry 侧的错误分类也在纯那一半 (手机端要用同一份分类) —— 定义在 dual-source-facts.ts。
86
+ const dual_source_facts_js_1 = require("./dual-source-facts.js");
87
+ Object.defineProperty(exports, "classifyRegistryError", { enumerable: true, get: function () { return dual_source_facts_js_1.classifyRegistryError; } });
84
88
  const dual_source_js_1 = require("./dual-source.js");
85
89
  const update_state_js_1 = require("./update-state.js");
86
- // ── 版本比较 (唯一一份) ─────────────────────────────────────────────────────
90
+ // ── 版本比较 (唯一一份在 version-identity.ts; 上面已再导出) ────────────────
87
91
  /**
88
92
  * 从子进程 stdout 里取 JSON —— **不要**按"行首是否 { "过滤:
89
93
  * `JSON.stringify(x, null, 2)` 是**多行**的, 只留第一行 `{` 会解析失败
@@ -111,28 +115,6 @@ function parseJsonFromStdout(stdout) {
111
115
  return null;
112
116
  }
113
117
  }
114
- function parseVersion(v) {
115
- const clean = String(v || '').trim().replace(/^v/, '').split('-')[0];
116
- const parts = clean.split('.').map((p) => parseInt(p.replace(/\D.*$/, ''), 10));
117
- return parts.map((n) => (Number.isFinite(n) ? n : 0));
118
- }
119
- /** -1 = a<b, 0 = 相等, 1 = a>b (只比数值段, 忽略预发布标签) */
120
- function compareVersions(a, b) {
121
- const pa = parseVersion(a);
122
- const pb = parseVersion(b);
123
- for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
124
- const x = pa[i] ?? 0;
125
- const y = pb[i] ?? 0;
126
- if (x < y)
127
- return -1;
128
- if (x > y)
129
- return 1;
130
- }
131
- return 0;
132
- }
133
- function isKnownVersion(v) {
134
- return !!v && v !== 'unknown' && /^\d/.test(String(v).trim().replace(/^v/, ''));
135
- }
136
118
  function httpGetJson(url, timeoutMs = 10000) {
137
119
  return new Promise((resolve, reject) => {
138
120
  const client = url.startsWith('https') ? https : http;
@@ -145,27 +127,12 @@ function httpGetJson(url, timeoutMs = 10000) {
145
127
  req.on('timeout', () => { req.destroy(new Error('timeout')); });
146
128
  });
147
129
  }
148
- const OFFLINE_CODES = new Set(['ENOTFOUND', 'EAI_AGAIN', 'ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT', 'EHOSTUNREACH', 'ENETUNREACH', 'ENETDOWN', 'EAI_FAIL', 'UND_ERR_CONNECT_TIMEOUT']);
149
- /** 网络类错误 → offline; 其它 (HTTP 5xx / 解析失败 / 包不存在) → registry_unavailable。 */
150
- function classifyRegistryError(err, httpStatus) {
151
- const code = String(err?.code || '');
152
- if (OFFLINE_CODES.has(code) || /timeout|timed out|ENOTFOUND|getaddrinfo|network|socket hang up|超时/i.test(String(err?.message || ''))) {
153
- return { kind: 'offline', detail: `${code || err?.message || '网络不可达'}` };
154
- }
155
- if (httpStatus && httpStatus >= 500)
156
- return { kind: 'registry_unavailable', detail: `registry 返回 HTTP ${httpStatus}` };
157
- if (httpStatus === 404)
158
- return { kind: 'registry_unavailable', detail: `registry 上没有 ${version_info_js_1.PKG_NAME} (HTTP 404)` };
159
- if (httpStatus && httpStatus >= 400)
160
- return { kind: 'registry_unavailable', detail: `registry 返回 HTTP ${httpStatus}` };
161
- return { kind: 'registry_unavailable', detail: code || err?.message || '未知错误' };
162
- }
163
130
  async function queryRegistryDoc(pkg = version_info_js_1.PKG_NAME, timeoutMs = 10000) {
164
131
  const url = `${version_info_js_1.NPM_REGISTRY_BASE}/${encodeURIComponent(pkg).replace('%40', '@')}`;
165
132
  try {
166
133
  const { status, body } = await httpGetJson(url, timeoutMs);
167
134
  if (status < 200 || status >= 300)
168
- return { ok: false, ...classifyRegistryError(null, status) };
135
+ return { ok: false, ...(0, dual_source_facts_js_1.classifyRegistryError)(null, status) };
169
136
  let raw;
170
137
  try {
171
138
  raw = JSON.parse(body);
@@ -187,32 +154,15 @@ async function queryRegistryDoc(pkg = version_info_js_1.PKG_NAME, timeoutMs = 10
187
154
  return { ok: true, doc: { latest: distTags.latest || versions[versions.length - 1], distTags, versions, gitHeads } };
188
155
  }
189
156
  catch (e) {
190
- return { ok: false, ...classifyRegistryError(e) };
157
+ return { ok: false, ...(0, dual_source_facts_js_1.classifyRegistryError)(e) };
191
158
  }
192
159
  }
193
160
  /**
194
- * 检查结论 → 退出码 (稳定约定, §2): 0 正常 / 2 检查不可用。
195
- *
161
+ * 检查结论 → 退出码 / "源不可达必拒" 的这一组结论:
162
+ * **唯一一份在 `version-identity.ts`** (上面已 import+再导出)。
196
163
  * §12.5 的核心就是这一句: **源不可达 / 版本不存在 → 拒绝并说清 (退出码 2)**,
197
- * 不许静默装回旧版, 也不许打印"✅ 已是最新"。
198
- */
199
- function checkExitCode(status) {
200
- switch (status) {
201
- case 'offline':
202
- case 'registry_unavailable':
203
- case 'local_version_unknown':
204
- case 'github_unavailable':
205
- case 'cross_check_mismatch':
206
- return 2;
207
- default:
208
- return 0;
209
- }
210
- }
211
- /**
212
- * "源不可达 / 版本不存在" 这一组结论 —— 它们必须**拒绝执行并说清**。
213
- * 这是 §12.5 那一条的代码落点: 不许静默装回旧版, 也不许打印"已是最新"。
164
+ * 不许静默装回旧版, 也不许打印"✅ 已是最新"。桌面与手机共用同一份。
214
165
  */
215
- exports.REFUSED_STATUSES = ['offline', 'registry_unavailable', 'local_version_unknown', 'github_unavailable', 'cross_check_mismatch'];
216
166
  /**
217
167
  * 检查更新。**这是唯一的检查入口** —— CLI / 启动后台 / Python 检查器 / 安装脚本都走它。
218
168
  *
@@ -236,7 +186,7 @@ async function checkForUpdate(opts = {}) {
236
186
  const channelKind = (0, version_info_js_1.channelKindOf)(channel);
237
187
  const install = opts.installation || (0, version_info_js_1.detectInstallation)({ home });
238
188
  const pkg = (0, version_info_js_1.readPackageAt)(install.packageRoot);
239
- const current = isKnownVersion(pkg?.version) ? String(pkg?.version) : 'unknown';
189
+ const current = (0, version_identity_js_1.isKnownVersion)(pkg?.version) ? String(pkg?.version) : 'unknown';
240
190
  const currentBase = (0, version_info_js_1.baseVersionOf)(current);
241
191
  /** 磁盘身份里就是 dev 快照的 sha —— 不从状态文件猜 */
242
192
  const installedDevSha = (0, version_info_js_1.devShaFromIdentity)(current);
@@ -280,7 +230,7 @@ async function checkForUpdate(opts = {}) {
280
230
  return r;
281
231
  };
282
232
  // 1. 本地版本读不到 —— 不猜
283
- if (!isKnownVersion(current)) {
233
+ if (!(0, version_identity_js_1.isKnownVersion)(current)) {
284
234
  return commit({
285
235
  ...base, status: 'local_version_unknown', latestVersion: null,
286
236
  installedChannel: null, installedDevSha: null,
@@ -424,7 +374,7 @@ async function checkForUpdate(opts = {}) {
424
374
  reason: `当前装的是 dev 快照 ${current} → 切回 stable 的 ${latest || '未知'} (一键: ${version_info_js_1.DEV_BACK_TO_STABLE_HINT})`,
425
375
  });
426
376
  }
427
- if (latest && compareVersions(currentBase, latest) < 0) {
377
+ if (latest && (0, version_identity_js_1.compareVersions)(currentBase, latest) < 0) {
428
378
  return commit({
429
379
  ...stableBase, status: 'update_available', latestVersion: latest, targetPublished, rollbackSupported,
430
380
  reason: `当前 ${current} → 目标 ${latest}${crossCheck ? ` · 交叉校验: ${crossCheck.kind}` : ''}`,
@@ -808,7 +758,7 @@ async function applyUpdate(opts = {}) {
808
758
  * §12.5 的核心分流: **源不可达 / 版本不存在 → 拒绝并说清**,
809
759
  * 绝不把"没查到"说成"已是最新"。
810
760
  */
811
- const refused = exports.REFUSED_STATUSES.includes(plan.check.status);
761
+ const refused = version_identity_js_1.REFUSED_STATUSES.includes(plan.check.status);
812
762
  await stage('blocked', refused ? `拒绝更新 (${plan.check.status})` : '没有可执行的更新');
813
763
  const reason = refused
814
764
  ? `拒绝更新 (${plan.check.status}): ${plan.check.reason || plan.blockers[0] || '源不可达 / 版本不存在'}`
@@ -830,7 +780,7 @@ async function applyUpdate(opts = {}) {
830
780
  if (!lock.ok) {
831
781
  const held = lock.heldBy;
832
782
  await stage('blocked', `已有更新进程 (pid ${held?.pid})`);
833
- return record({ stage: 'blocked', ok: false, from, to, durationMs: Date.now() - started, reason: `已有更新进程持有锁 (pid ${held?.pid}, ${held?.at})`, needsRestart: false }, 'blocked');
783
+ return record({ stage: 'blocked', ok: false, from, to, durationMs: Date.now() - started, reason: `另一个更新进程持有锁 (pid ${held?.pid}, ${held?.at})`, needsRestart: false }, 'blocked');
834
784
  }
835
785
  const tmpRoot = await fsp.mkdtemp(path.join(os.tmpdir(), 'bolloon-update-'));
836
786
  const runNpm = opts.runNpm || defaultRunNpm;
@@ -979,7 +929,7 @@ async function readUpdateStatus(opts = {}) {
979
929
  const lock = (0, update_state_js_1.readUpdateLock)(home);
980
930
  const install = opts.installation || (0, version_info_js_1.detectInstallation)({ home });
981
931
  const pkg = (0, version_info_js_1.readPackageAt)(install.packageRoot);
982
- const currentVersion = isKnownVersion(pkg?.version) ? String(pkg?.version) : st.currentVersion;
932
+ const currentVersion = (0, version_identity_js_1.isKnownVersion)(pkg?.version) ? String(pkg?.version) : st.currentVersion;
983
933
  const installedDevSha = (0, version_info_js_1.devShaFromIdentity)(currentVersion);
984
934
  const channel = (0, version_info_js_1.resolveUpdateChannel)(opts.channel || prefs.channel);
985
935
  return {