@bolloon/bolloon-agent 0.4.33 → 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.
- package/dist/agents/contacts/chain.js +27 -7
- package/dist/agents/execution-supervisor.js +580 -40
- package/dist/agents/external-events.js +35 -6
- package/dist/agents/gateway-group.js +100 -12
- package/dist/agents/goal-criteria.js +10 -3
- package/dist/agents/goal-flywheel/block-executor.js +346 -0
- package/dist/agents/goal-flywheel/continuation-decision.js +592 -0
- package/dist/agents/goal-flywheel/goal-change.js +754 -0
- package/dist/agents/goal-flywheel/index.js +26 -0
- package/dist/agents/goal-flywheel/memory-layers.js +227 -0
- package/dist/agents/goal-flywheel/run-closure.js +809 -0
- package/dist/agents/goal-flywheel/skill-candidate.js +628 -0
- package/dist/agents/goal-flywheel/types.js +329 -0
- package/dist/agents/goal-flywheel/wiring/change.js +288 -0
- package/dist/agents/goal-flywheel/wiring/closure.js +697 -0
- package/dist/agents/goal-flywheel/wiring/continuation.js +432 -0
- package/dist/agents/goal-flywheel/wiring/contract.js +270 -0
- package/dist/agents/goal-flywheel/wiring/index.js +26 -0
- package/dist/agents/goal-flywheel/wiring/monitor.js +254 -0
- package/dist/agents/goal-flywheel/wiring/seams.js +592 -0
- package/dist/agents/goal-flywheel/work-contract.js +478 -0
- package/dist/agents/goal-flywheel/work-monitor.js +488 -0
- package/dist/agents/goal-flywheel-wiring.js +1870 -0
- package/dist/agents/goal-state-reducer.js +406 -0
- package/dist/agents/goal-store.js +35 -1
- package/dist/agents/mobile-flywheel-view.js +144 -0
- package/dist/agents/mobile-task-actions-verify.js +74 -0
- package/dist/agents/mobile-task-actions.js +178 -0
- package/dist/agents/mobile-task-views.js +199 -0
- package/dist/agents/model-policy.js +651 -0
- package/dist/agents/network-pulse.js +304 -18
- package/dist/agents/pi-sdk-tools.js +84 -33
- package/dist/agents/pi-sdk.js +157 -42
- package/dist/agents/run-store.js +71 -5
- package/dist/agents/skill-readiness.js +52 -10
- package/dist/agents/subagent-manager.js +209 -3
- package/dist/agents/task/task-runner.js +17 -4
- package/dist/agents/task-group.js +8 -51
- package/dist/agents/task-public-text.js +89 -0
- package/dist/agents/workflow-pivot-loop.js +19 -12
- package/dist/cli/clipboard.js +65 -0
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/tasks.js +350 -2
- package/dist/cli/identity-command.js +177 -0
- package/dist/cli/ink-app.js +145 -17
- package/dist/cli/log-gate.js +386 -0
- package/dist/cli/mention-data.js +2 -0
- package/dist/cli/model-selector.js +538 -0
- package/dist/cli/reply-hygiene.js +54 -0
- package/dist/cli/setup-wizard.js +757 -69
- package/dist/cli/startup-notice.js +160 -0
- package/dist/cli/stores.js +22 -1
- package/dist/cli/theme.js +49 -0
- package/dist/cli/tui-select.js +970 -0
- package/dist/cli/update-commands.js +150 -24
- package/dist/cli-entry.js +137 -20
- package/dist/electron-build/agents/contacts/chain.js +26 -6
- package/dist/electron-build/agents/contacts/chain.js.map +1 -1
- package/dist/electron-build/agents/execution-supervisor.js +578 -38
- package/dist/electron-build/agents/execution-supervisor.js.map +1 -1
- package/dist/electron-build/agents/external-events.js +34 -5
- package/dist/electron-build/agents/external-events.js.map +1 -1
- package/dist/electron-build/agents/goal-criteria.js +10 -3
- package/dist/electron-build/agents/goal-criteria.js.map +1 -1
- package/dist/electron-build/agents/goal-flywheel/continuation-decision.js +598 -0
- package/dist/electron-build/agents/goal-flywheel/continuation-decision.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/goal-change.js +773 -0
- package/dist/electron-build/agents/goal-flywheel/goal-change.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/memory-layers.js +269 -0
- package/dist/electron-build/agents/goal-flywheel/memory-layers.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/run-closure.js +818 -0
- package/dist/electron-build/agents/goal-flywheel/run-closure.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/skill-candidate.js +642 -0
- package/dist/electron-build/agents/goal-flywheel/skill-candidate.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/types.js +333 -0
- package/dist/electron-build/agents/goal-flywheel/types.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/change.js +294 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/change.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/closure.js +742 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/closure.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/continuation.js +444 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/continuation.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/contract.js +279 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/contract.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/index.js +111 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/index.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/monitor.js +264 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/monitor.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/seams.js +612 -0
- package/dist/electron-build/agents/goal-flywheel/wiring/seams.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/work-contract.js +488 -0
- package/dist/electron-build/agents/goal-flywheel/work-contract.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel/work-monitor.js +501 -0
- package/dist/electron-build/agents/goal-flywheel/work-monitor.js.map +1 -0
- package/dist/electron-build/agents/goal-flywheel-wiring.js +1962 -0
- package/dist/electron-build/agents/goal-flywheel-wiring.js.map +1 -0
- package/dist/electron-build/agents/goal-state-reducer.js +414 -0
- package/dist/electron-build/agents/goal-state-reducer.js.map +1 -0
- package/dist/electron-build/agents/goal-store.js +35 -1
- package/dist/electron-build/agents/goal-store.js.map +1 -1
- package/dist/electron-build/agents/model-policy.js +706 -0
- package/dist/electron-build/agents/model-policy.js.map +1 -0
- package/dist/electron-build/agents/network-pulse.js +307 -19
- package/dist/electron-build/agents/network-pulse.js.map +1 -1
- package/dist/electron-build/agents/pi-sdk-tools.js +84 -33
- package/dist/electron-build/agents/pi-sdk-tools.js.map +1 -1
- package/dist/electron-build/agents/pi-sdk-types.js.map +1 -1
- package/dist/electron-build/agents/pi-sdk.js +156 -41
- package/dist/electron-build/agents/pi-sdk.js.map +1 -1
- package/dist/electron-build/agents/run-store.js +75 -6
- package/dist/electron-build/agents/run-store.js.map +1 -1
- package/dist/electron-build/agents/skill-readiness.js +52 -9
- package/dist/electron-build/agents/skill-readiness.js.map +1 -1
- package/dist/electron-build/agents/task/task-runner.js +16 -3
- package/dist/electron-build/agents/task/task-runner.js.map +1 -1
- package/dist/electron-build/agents/workflow-pivot-loop.js +19 -12
- package/dist/electron-build/agents/workflow-pivot-loop.js.map +1 -1
- package/dist/electron-build/llm/config-store.js +146 -6
- package/dist/electron-build/llm/config-store.js.map +1 -1
- package/dist/electron-build/llm/connection-probe.js +764 -0
- package/dist/electron-build/llm/connection-probe.js.map +1 -0
- package/dist/electron-build/llm/custom-provider-store.js +272 -0
- package/dist/electron-build/llm/custom-provider-store.js.map +1 -0
- package/dist/electron-build/llm/data/provider-catalog-baked.js +23 -0
- package/dist/electron-build/llm/data/provider-catalog-baked.js.map +1 -0
- package/dist/electron-build/llm/model-catalog.js +778 -0
- package/dist/electron-build/llm/model-catalog.js.map +1 -0
- package/dist/electron-build/llm/model-discovery.js +1202 -0
- package/dist/electron-build/llm/model-discovery.js.map +1 -0
- package/dist/electron-build/llm/model-selection.js +1315 -0
- package/dist/electron-build/llm/model-selection.js.map +1 -0
- package/dist/electron-build/llm/pi-ai.js +70 -11
- package/dist/electron-build/llm/pi-ai.js.map +1 -1
- package/dist/electron-build/llm/provider-catalog.js +969 -0
- package/dist/electron-build/llm/provider-catalog.js.map +1 -0
- package/dist/electron-build/llm/provider-registry.js +950 -0
- package/dist/electron-build/llm/provider-registry.js.map +1 -0
- package/dist/electron-build/llm/tool-name.js +266 -0
- package/dist/electron-build/llm/tool-name.js.map +1 -0
- package/dist/electron-build/orbitdb/cid-database.js +83 -17
- package/dist/electron-build/orbitdb/cid-database.js.map +1 -1
- package/dist/electron-build/orbitdb/ipfs-node.js +31 -2
- package/dist/electron-build/orbitdb/ipfs-node.js.map +1 -1
- package/dist/electron-build/utils/dual-source-facts.js +236 -0
- package/dist/electron-build/utils/dual-source-facts.js.map +1 -0
- package/dist/electron-build/utils/dual-source.js +347 -0
- package/dist/electron-build/utils/dual-source.js.map +1 -0
- package/dist/electron-build/utils/update-manager.js +328 -104
- package/dist/electron-build/utils/update-manager.js.map +1 -1
- package/dist/electron-build/utils/update-state.js +9 -11
- package/dist/electron-build/utils/update-state.js.map +1 -1
- package/dist/electron-build/utils/version-identity.js +193 -0
- package/dist/electron-build/utils/version-identity.js.map +1 -0
- package/dist/electron-build/utils/version-info.js +57 -31
- package/dist/electron-build/utils/version-info.js.map +1 -1
- package/dist/index.js +385 -108
- package/dist/ios/bolloon-web.json +10 -0
- package/dist/ios/chain-explorer.js +617 -0
- package/dist/ios/explorer.html +163 -0
- package/dist/ios/index.html +96 -0
- package/dist/ios/mobile-agent.js +2 -2
- package/dist/ios/mobile-contacts.js +362 -0
- package/dist/ios/mobile-core.js +3102 -310
- package/dist/ios/mobile-privacy.js +185 -0
- package/dist/ios/mobile-tasks.js +339 -0
- package/dist/ios/mobile-update.js +1442 -0
- package/dist/ios/mobile.css +19 -0
- package/dist/ios/mobile.html +96 -0
- package/dist/ios/mobile.js +1013 -41
- package/dist/ios/routes-chain-index.js +108 -0
- package/dist/ios/routes-contacts.js +420 -0
- package/dist/ios/routes-llm-config.js +344 -52
- package/dist/ios/routes-mobile-tasks.js +353 -0
- package/dist/ios/routes-onchain-trade.js +99 -0
- package/dist/ios/routes-x402-info.js +1 -0
- package/dist/ios/server.js +921 -0
- package/dist/ios/sw.js +1 -1
- package/dist/ios/task-frame-server.js +211 -0
- package/dist/llm/config-store.js +146 -6
- package/dist/llm/connection-probe.js +744 -0
- package/dist/llm/custom-provider-store.js +224 -0
- package/dist/llm/data/provider-catalog-baked.js +19 -0
- package/dist/llm/model-catalog.js +717 -0
- package/dist/llm/model-discovery.js +1137 -0
- package/dist/llm/model-selection.js +1241 -0
- package/dist/llm/pi-ai.js +70 -11
- package/dist/llm/provider-catalog.js +898 -0
- package/dist/llm/provider-registry.js +917 -0
- package/dist/llm/tool-name.js +220 -0
- package/dist/orbitdb/cid-database.js +81 -16
- package/dist/orbitdb/ipfs-node.js +31 -2
- package/dist/setup/onboard.js +34 -8
- package/dist/utils/dual-source-facts.js +223 -0
- package/dist/utils/dual-source.js +297 -0
- package/dist/utils/update-cli.js +16 -21
- package/dist/utils/update-health.js +35 -5
- package/dist/utils/update-manager.js +325 -96
- package/dist/utils/update-state.js +13 -10
- package/dist/utils/version-identity.js +176 -0
- package/dist/utils/version-info.js +27 -22
- package/dist/web/bolloon-web.json +10 -0
- package/dist/web/mobile-contacts.js +44 -11
- package/dist/web/mobile-core.js +2901 -580
- package/dist/web/mobile-tasks.js +339 -0
- package/dist/web/mobile-update.js +1442 -0
- package/dist/web/mobile.css +19 -0
- package/dist/web/mobile.html +64 -0
- package/dist/web/mobile.js +838 -35
- package/dist/web/routes-llm-config.js +344 -52
- package/dist/web/routes-mobile-tasks.js +353 -0
- package/dist/web/server.js +163 -4
- package/dist/web/sw.js +1 -1
- package/package.json +3 -1
- 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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,MAAY,MAAM,mCAAe;AAEjC,yCAAyC;AAC5B,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAEvC,kCAAkC;AACrB,QAAA,oBAAoB,GAAG,aAAa,CAAC;AAElD,6BAA6B;AAChB,QAAA,iBAAiB,GAAG,uBAAuB,CAAC;AAEzD,iDAAiD;AACjD,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,sBAAsB;AACtB,yBAAgC,IAAY;IAC1C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,QAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,+CAA+C;AAC/C,wBAA+B,IAAY;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4CAA4C;AAC5C,6BAAoC,IAAY;IAC9C,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,0BAAiC,IAAY;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,QAAA,oBAAoB,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,MAAM,GAAG,QAAA,oBAAoB,EAAE,CAAC;QACpC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,oDAAoD;IACpD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,CAAC,GAAG,QAAQ,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gCAAgC;AAChC,4BAAoC,SAAQ,KAAK;IACtC,OAAO,CAAS;IAChB,KAAK,CAAW;IAEzB,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CACH,aAAa,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,OAAO,OAAO;YAC1E,0CAA0C;YAC1C,qBAAqB,QAAA,oBAAoB,aAAa,CACzD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;;AAWD;;;;GAIG;AACH;IACmB,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExD,uDAAuD;IACvD,QAAQ,CAAC,QAAgB;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACpC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,2CAA2C;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC5C,MAAM,IAAI,sBAAsB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,sBAAsB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,WAAW;IACX,WAAW,CAAC,SAAmB;QAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,yCAAyC;IACzC,SAAS,CAAC,QAAgB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,OAAe;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,+BAA+B;IAC/B,IAAI,QAAQ;QACV,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,wBAAwB;IACxB,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;;AAED;;;GAGG;AACU,QAAA,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAQ7D;;;;;;;GAOG;AACH,6BAAsD,KAAU,EAAE,KAAK,GAAuB,QAAA,oBAAoB;IAChH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,GAAG,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAQ,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;QACtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa;gBACvE,yDAAyD,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,EAAQ,CAAC;IACnG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sCAAsC;AACtC,4BAAmC,OAAe,EAAE,KAAK,GAAuB,QAAA,oBAAoB;IAClG,OAAO,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,8BAAqC,KAAuB,EAAE,KAAK,GAAuB,QAAA,oBAAoB;IAC5G,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,gBAAgB;QAChB,IAAI,CAAC;YACH,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -53,7 +53,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
53
53
|
};
|
|
54
54
|
})();
|
|
55
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
-
exports.OrbitDBAdapter = void 0;
|
|
56
|
+
exports.OrbitDBAdapter = exports.OrbitDBStoreUnreachableError = void 0;
|
|
57
57
|
exports.contentToCid = contentToCid;
|
|
58
58
|
exports.getCIDDatabase = getCIDDatabase;
|
|
59
59
|
const cid_1 = require("multiformats/cid");
|
|
@@ -61,9 +61,42 @@ const dagCbor = __importStar(require("@ipld/dag-cbor"));
|
|
|
61
61
|
const sha2_1 = require("multiformats/hashes/sha2");
|
|
62
62
|
const concat_1 = require("uint8arrays/concat");
|
|
63
63
|
const core_1 = require("@orbitdb/core");
|
|
64
|
+
const orbitdbCoreNs = __importStar(require("@orbitdb/core"));
|
|
65
|
+
/**
|
|
66
|
+
* 运行时取 `IPFSAccessController` (2026-09-24)。
|
|
67
|
+
*
|
|
68
|
+
* 它在运行时是**真具名导出** (`@orbitdb/core` 4.0.0 `src/index.js:26`, 经
|
|
69
|
+
* `./access-controllers/index.js` 二级再导出), 但该包是**纯 JS 包**: `package.json`
|
|
70
|
+
* 既无 `types` 也无 `exports`、包内没有任何 `.d.ts` —— TS7 从 JS 推断导出集时看不见
|
|
71
|
+
* 这个二级再导出, `import { IPFSAccessController }` 直接 TS2305。
|
|
72
|
+
* 所以从命名空间按需取一次并显式收窄到已知形状; 不给整个模块上 `any`
|
|
73
|
+
* (createOrbitDB / OrbitDB / KeyValue 仍照旧受类型检查)。
|
|
74
|
+
*/
|
|
75
|
+
const IPFSAccessController = orbitdbCoreNs.IPFSAccessController;
|
|
64
76
|
const ipfs_node_js_1 = require("./ipfs-node.js");
|
|
65
77
|
const path = __importStar(require("path"));
|
|
66
78
|
const os = __importStar(require("os"));
|
|
79
|
+
/**
|
|
80
|
+
* store 打不开 (地址不可解析 / 区块不在本地且没有 block broker 能去网上取)。
|
|
81
|
+
*
|
|
82
|
+
* 2026-09-24: 原来 `openStoreByAddress` 失败返回 null, 上游 (gateway-group) 把它当"空群",
|
|
83
|
+
* 于是"读不到"被显示成"没有消息"。改成**抛**: 打不开 ≠ 没内容。
|
|
84
|
+
*/
|
|
85
|
+
class OrbitDBStoreUnreachableError extends Error {
|
|
86
|
+
address;
|
|
87
|
+
cause;
|
|
88
|
+
dataDir;
|
|
89
|
+
code = 'STORE_UNREACHABLE';
|
|
90
|
+
constructor(address, cause, dataDir) {
|
|
91
|
+
const why = String(cause?.message ?? cause ?? '未知原因').slice(0, 200);
|
|
92
|
+
super(`store 不可达 (${address}): ${why}`);
|
|
93
|
+
this.address = address;
|
|
94
|
+
this.cause = cause;
|
|
95
|
+
this.dataDir = dataDir;
|
|
96
|
+
this.name = 'OrbitDBStoreUnreachableError';
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.OrbitDBStoreUnreachableError = OrbitDBStoreUnreachableError;
|
|
67
100
|
/** 内容 → CID (dag-cbor, sha2-256, codec 0x71); 先 JSON 清洗 (dag-cbor 不支持 undefined) */
|
|
68
101
|
async function contentToCid(obj) {
|
|
69
102
|
const cleaned = JSON.parse(JSON.stringify(obj)); // 丢弃 undefined 字段
|
|
@@ -72,6 +105,26 @@ async function contentToCid(obj) {
|
|
|
72
105
|
return cid_1.CID.createV1(0x71, hash).toString();
|
|
73
106
|
}
|
|
74
107
|
const home = () => process.env.HOME || os.homedir() || '/tmp';
|
|
108
|
+
/**
|
|
109
|
+
* OrbitDB 身份在 keystore 里的槽名 (2026-09-24)。
|
|
110
|
+
* 固定槽名 = 同一 dataDir 下每个进程读到**同一对密钥 / 同一个身份**。
|
|
111
|
+
* 不固定 (@orbitdb/core 默认 createId() 随机 32 位) 会让每个进程变成新写入者,
|
|
112
|
+
* 于是 `canAppend` 拿新身份去比对老 manifest 的 write 列表 → 一律拒绝。
|
|
113
|
+
*/
|
|
114
|
+
const ORBITDB_IDENTITY_ID = 'bolloon';
|
|
115
|
+
/**
|
|
116
|
+
* `opts.accessController.write` → OrbitDB v4 的大写 `AccessController` 工厂 (2026-09-24)。
|
|
117
|
+
*
|
|
118
|
+
* @orbitdb/core v4 的 `open(address, options)` **只认大写 `AccessController`** (一个构造函数),
|
|
119
|
+
* 小写 `accessController: { write: [...] }` 会被静默丢弃 → 新 store 落回默认策略
|
|
120
|
+
* (`IPFSAccessController`: `write = write || [创建者身份 id]`, 即创建者独占写)。
|
|
121
|
+
* 于是 gateway-group 一直传的 `write:['*']` (「群成员可广播」) **从来没生效过**。
|
|
122
|
+
* 这里把已成文的选项接上; 对已存在的地址, manifest 里的 AC 仍优先 (这里不改变既有群)。
|
|
123
|
+
*/
|
|
124
|
+
function accessControllerOption(opts) {
|
|
125
|
+
const write = opts?.accessController?.write;
|
|
126
|
+
return Array.isArray(write) && write.length ? { AccessController: IPFSAccessController({ write }) } : {};
|
|
127
|
+
}
|
|
75
128
|
/**
|
|
76
129
|
* OrbitDB 后端实现。单例: 同一进程只建一个 (helia/OrbitDB 都是重量级节点)。
|
|
77
130
|
*/
|
|
@@ -84,15 +137,29 @@ class OrbitDBAdapter {
|
|
|
84
137
|
constructor(dataDir = path.join(home(), '.bolloon', 'orbitdb')) {
|
|
85
138
|
this.dataDir = dataDir;
|
|
86
139
|
}
|
|
140
|
+
/** 落盘位置 (未初始化时 null; 诊断/验收用) */
|
|
141
|
+
get ipfsPaths() {
|
|
142
|
+
return this.node?.paths ?? null;
|
|
143
|
+
}
|
|
87
144
|
/** 懒初始化: 首次使用时启动 helia + OrbitDB + 打开 keyvalue store */
|
|
88
145
|
async ensure() {
|
|
89
146
|
if (this.db)
|
|
90
147
|
return;
|
|
91
148
|
this.node = await (0, ipfs_node_js_1.createBolloonIpfs)(path.join(this.dataDir, 'ipfs'));
|
|
92
|
-
|
|
149
|
+
// 2026-09-24: 身份必须**跨进程稳定**。不给 id 时 @orbitdb/core 用 createId()
|
|
150
|
+
// (32 位随机串) 当 keystore 槽名 (src/orbitdb.js:43 `id = id || await createId()`
|
|
151
|
+
// → :61 `createIdentity({ id })`) → 每个进程一对新密钥 → 新身份 → 写自己的 store
|
|
152
|
+
// 会被访问控制拒掉 ("Key … is not allowed to write to the log")。
|
|
153
|
+
// 给固定槽名后, 密钥从 <dataDir>/stores/keystore 读出复用 → 同 dataDir 同身份。
|
|
154
|
+
// 类型注: `id` 是 @orbitdb/core 的真选项 (src/orbitdb.js:33), 但 TS7 从 JS 推断出的
|
|
155
|
+
// 参数类型漏了它 → 显式取 Parameters<typeof createOrbitDB>[0] 再补 { id }
|
|
156
|
+
// (不裸 any 掉整个入参)。
|
|
157
|
+
const init = {
|
|
93
158
|
ipfs: this.node.helia,
|
|
94
159
|
directory: path.join(this.dataDir, 'stores'),
|
|
95
|
-
|
|
160
|
+
id: ORBITDB_IDENTITY_ID,
|
|
161
|
+
};
|
|
162
|
+
this._orbitdb = await (0, core_1.createOrbitDB)(init);
|
|
96
163
|
this.db = await this._orbitdb.open('bolloon-cid-store', { type: 'keyvalue' });
|
|
97
164
|
// 共享底层实例 (只读暴露)
|
|
98
165
|
this.orbitdb = this._orbitdb;
|
|
@@ -230,33 +297,32 @@ class OrbitDBAdapter {
|
|
|
230
297
|
*/
|
|
231
298
|
async openStore(name, type = 'keyvalue', opts) {
|
|
232
299
|
await this.ensure();
|
|
233
|
-
const options = { type };
|
|
234
|
-
if (opts?.accessController)
|
|
235
|
-
options.accessController = opts.accessController;
|
|
300
|
+
const options = { type, ...accessControllerOption(opts) };
|
|
236
301
|
const raw = (await this._orbitdb.open(name, options));
|
|
237
302
|
return this.wrapStore(raw);
|
|
238
303
|
}
|
|
239
304
|
/**
|
|
240
305
|
* 2026-08-14: 按地址打开远端 store (Agent Gateway 共享网络 / 群组)。
|
|
241
|
-
*
|
|
242
|
-
*
|
|
306
|
+
*
|
|
307
|
+
* 2026-09-24: 失败改为**抛 OrbitDBStoreUnreachableError** (含原始错误原因),
|
|
308
|
+
* 不再 `console.warn` + return null —— 那让"整个群读不到"在上层显示成"群里没有消息"。
|
|
309
|
+
*
|
|
310
|
+
* 2026-09-24 (修正既有错述): **不再往 OrbitDB 传 `replica`** ——
|
|
311
|
+
* `@orbitdb/core` 4.0.0 的 `open()` 参数表里没有它 (src/orbitdb.js:118), 传了也被丢,
|
|
312
|
+
* 之前的"replica=true 只读副本"是**不存在的语义**(等于什么都没做)。入参保留以兼容
|
|
313
|
+
* 既有调用点, 但不再冒充 OrbitDB 选项。可写与否由 manifest 里的 ACL + 调用方是否 `put` 决定。
|
|
314
|
+
* `opts.accessController` 在**打开既有地址**时同样不生效 (见接口注释: AC 由 manifest 决定)。
|
|
243
315
|
*/
|
|
244
316
|
async openStoreByAddress(address, type = 'keyvalue', opts) {
|
|
245
317
|
await this.ensure();
|
|
246
318
|
try {
|
|
247
|
-
const options = { type };
|
|
248
|
-
if (opts?.replica === false)
|
|
249
|
-
options.replica = false;
|
|
250
|
-
else
|
|
251
|
-
options.replica = true;
|
|
252
|
-
if (opts?.accessController)
|
|
253
|
-
options.accessController = opts.accessController;
|
|
319
|
+
const options = { type, ...accessControllerOption(opts) };
|
|
254
320
|
const raw = (await this._orbitdb.open(address, options));
|
|
255
321
|
return this.wrapStore(raw);
|
|
256
322
|
}
|
|
257
323
|
catch (err) {
|
|
258
|
-
|
|
259
|
-
|
|
324
|
+
// 大声失败: 带上地址 + 原始原因 (最常见: "No block brokers capable of retrieving blocks ...")
|
|
325
|
+
throw new OrbitDBStoreUnreachableError(address, err, this.dataDir);
|
|
260
326
|
}
|
|
261
327
|
}
|
|
262
328
|
async close() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid-database.js","sourceRoot":"","sources":["../../../src/orbitdb/cid-database.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,0CAAuC;AACvC,MAAY,OAAO,2CAAuB;AAC1C,mDAAkD;AAClD,+CAA2D;AAC3D,wCAA2E;AAC3E,iDAAqE;AACrE,MAAY,IAAI,iCAAa;AAC7B,MAAY,EAAE,+BAAW;
|
|
1
|
+
{"version":3,"file":"cid-database.js","sourceRoot":"","sources":["../../../src/orbitdb/cid-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* ipfs-node.ts — Bolloon 的 OrbitDB 底层 IPFS 节点工厂 (2026-08-06)
|
|
3
|
+
* ipfs-node.ts — Bolloon 的 OrbitDB 底层 IPFS 节点工厂 (2026-08-06; 落盘 2026-09-24)
|
|
4
4
|
*
|
|
5
5
|
* 基于 helia 7:
|
|
6
6
|
* - createHelia() 内部已 withLibp2p 但**不传 opts** → 无法自定义 services
|
|
@@ -11,6 +11,20 @@
|
|
|
11
11
|
* 必须显式列出要保留的默认服务 (dht/identify/keychain/...)
|
|
12
12
|
* - withLibp2p().start() 之后 libp2p getter 才可用 (之前抛 NotStartedError)
|
|
13
13
|
*
|
|
14
|
+
* 2026-09-24 **区块/datastore 落盘修复** (跨进程可重开的根因):
|
|
15
|
+
* 原来 createHeliaLight 只传 codecs/hashers → helia 用默认 MemoryBlockstore / MemoryDatastore,
|
|
16
|
+
* 而 OrbitDB 的 manifest 与 oplog 条目都走 IPFSBlockStorage(ipfs.blockstore) 存
|
|
17
|
+
* (@orbitdb/core/src/storage/ipfs-block.js)。于是 `~/.bolloon/orbitdb/` 下只有 stores/
|
|
18
|
+
* (keystore + log/_heads 的 LevelDB), 没有 ipfs/ 块存储 —— store 只活在创建它的那个进程里。
|
|
19
|
+
* 新进程用地址重开必挂在 manifestStore.get():
|
|
20
|
+
* "No block brokers capable of retrieving blocks are configured, the CID bafyrei… cannot be fetched"
|
|
21
|
+
* 现在: FsBlockstore(dataDir/blocks) + FsDatastore(dataDir/datastore) 真落盘。
|
|
22
|
+
* · datastore 顺带持久化 pin (helia pins) 与 libp2p 私钥
|
|
23
|
+
* (@helia/libp2p: loadOrCreateSelfKey(helia.datastore) + opts.datastore ??= helia.datastore)
|
|
24
|
+
* → 同一 dataDir 的 peerId 跨进程稳定。
|
|
25
|
+
* · 这两个包是 Node 专用 (node:fs / node:path); 本文件只被 Node 侧 import,
|
|
26
|
+
* 浏览器入口 (client.ts / mobile-core.ts / a2ui-client.tsx) 到不了这里 —— 不伤 Web 包。
|
|
27
|
+
*
|
|
14
28
|
* 跑法: npx tsx scripts/smoke-orbitdb.ts
|
|
15
29
|
*/
|
|
16
30
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
@@ -51,6 +65,8 @@ exports.createBolloonIpfs = createBolloonIpfs;
|
|
|
51
65
|
exports.dbNameFromAddress = dbNameFromAddress;
|
|
52
66
|
const helia_1 = require("helia");
|
|
53
67
|
const libp2p_1 = require("@helia/libp2p");
|
|
68
|
+
const blockstore_fs_1 = require("blockstore-fs");
|
|
69
|
+
const datastore_fs_1 = require("datastore-fs");
|
|
54
70
|
const dagCbor = __importStar(require("@ipld/dag-cbor"));
|
|
55
71
|
const dagJson = __importStar(require("@ipld/dag-json"));
|
|
56
72
|
const json = __importStar(require("multiformats/codecs/json"));
|
|
@@ -74,13 +90,25 @@ const os = __importStar(require("os"));
|
|
|
74
90
|
/**
|
|
75
91
|
* 创建 Bolloon 用的 helia 节点 (libp2p 完整默认服务 + gossipsub pubsub)。
|
|
76
92
|
* dataDir 持久化节点身份/数据 (默认 ~/.bolloon/orbitdb-ipfs)。
|
|
93
|
+
*
|
|
94
|
+
* 2026-09-24: dataDir 下真落两个目录 —— `blocks/` (区块) 与 `datastore/` (pin + peerkey)。
|
|
95
|
+
* 目录不可写时**直接抛** (不退回内存: 静默退回正好是"新进程读不到群"的根因)。
|
|
77
96
|
*/
|
|
78
97
|
async function createBolloonIpfs(dataDir) {
|
|
79
|
-
const dir = dataDir ?? path.join(process.env.HOME || os.homedir() || '/tmp', '.bolloon', 'orbitdb-ipfs');
|
|
98
|
+
const dir = path.resolve(dataDir ?? path.join(process.env.HOME || os.homedir() || '/tmp', '.bolloon', 'orbitdb-ipfs'));
|
|
99
|
+
const blocksDir = path.join(dir, 'blocks');
|
|
100
|
+
const datastoreDir = path.join(dir, 'datastore');
|
|
101
|
+
// 落盘存储: 不传这两个, helia 默认 MemoryBlockstore/MemoryDatastore → 进程退出即丢区块
|
|
102
|
+
const blockstore = new blockstore_fs_1.FsBlockstore(blocksDir);
|
|
103
|
+
const datastore = new datastore_fs_1.FsDatastore(datastoreDir);
|
|
104
|
+
await blockstore.open(); // 建目录 + F_OK|W_OK 探测, 失败抛 OpenFailedError (不静默)
|
|
105
|
+
await datastore.open();
|
|
80
106
|
// createHeliaLight 无 libp2p → withLibp2p 手动装配 (可传 services)
|
|
81
107
|
// codecs/hashers 照抄 createHelia 默认: OrbitDB 的 log entry 用 dag-cbor (codec 113),
|
|
82
108
|
// 不注册会报 "Could not load codec for 113"
|
|
83
109
|
const helia = (0, libp2p_1.withLibp2p)((0, helia_1.createHeliaLight)({
|
|
110
|
+
blockstore,
|
|
111
|
+
datastore,
|
|
84
112
|
codecs: [dagCbor, dagJson, json],
|
|
85
113
|
hashers: [sha2_1.sha512],
|
|
86
114
|
}), {
|
|
@@ -108,6 +136,7 @@ async function createBolloonIpfs(dataDir) {
|
|
|
108
136
|
return {
|
|
109
137
|
helia,
|
|
110
138
|
peerId,
|
|
139
|
+
paths: { dataDir: dir, blocksDir, datastoreDir },
|
|
111
140
|
start: async () => { await helia.start(); },
|
|
112
141
|
stop: async () => { await helia.stop(); },
|
|
113
142
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs-node.js","sourceRoot":"","sources":["../../../src/orbitdb/ipfs-node.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"ipfs-node.js","sourceRoot":"","sources":["../../../src/orbitdb/ipfs-node.ts"],"names":[],"mappings":"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"}
|