berry-agent-sdk 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -0
- package/dist/packages/berry-agent-sdk/src/client.d.ts +6 -0
- package/dist/packages/berry-agent-sdk/src/client.js +59 -0
- package/dist/packages/berry-agent-sdk/src/client.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/http.d.ts +24 -0
- package/dist/packages/berry-agent-sdk/src/http.js +232 -0
- package/dist/packages/berry-agent-sdk/src/http.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/index.d.ts +25 -0
- package/dist/packages/berry-agent-sdk/src/index.js +22 -0
- package/dist/packages/berry-agent-sdk/src/index.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/stdio.d.ts +23 -0
- package/dist/packages/berry-agent-sdk/src/stdio.js +238 -0
- package/dist/packages/berry-agent-sdk/src/stdio.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/types.d.ts +117 -0
- package/dist/packages/berry-agent-sdk/src/types.js +19 -0
- package/dist/packages/berry-agent-sdk/src/types.js.map +1 -0
- package/dist/src/agent/events.d.ts +11 -0
- package/dist/src/agent/events.js +2 -0
- package/dist/src/agent/events.js.map +1 -0
- package/dist/src/agent/index.d.ts +13 -0
- package/dist/src/agent/index.js +3 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/agent/loop.d.ts +19 -0
- package/dist/src/agent/loop.js +140 -0
- package/dist/src/agent/loop.js.map +1 -0
- package/dist/src/agent/queue.d.ts +105 -0
- package/dist/src/agent/queue.js +120 -0
- package/dist/src/agent/queue.js.map +1 -0
- package/dist/src/agent/stream.d.ts +21 -0
- package/dist/src/agent/stream.js +80 -0
- package/dist/src/agent/stream.js.map +1 -0
- package/dist/src/agent/tools-batch.d.ts +49 -0
- package/dist/src/agent/tools-batch.js +222 -0
- package/dist/src/agent/tools-batch.js.map +1 -0
- package/dist/src/agent/types.d.ts +104 -0
- package/dist/src/agent/types.js +9 -0
- package/dist/src/agent/types.js.map +1 -0
- package/dist/src/channels/ask-queue.d.ts +44 -0
- package/dist/src/channels/ask-queue.js +83 -0
- package/dist/src/channels/ask-queue.js.map +1 -0
- package/dist/src/channels/commands.d.ts +56 -0
- package/dist/src/channels/commands.js +130 -0
- package/dist/src/channels/commands.js.map +1 -0
- package/dist/src/channels/engine/cell.d.ts +55 -0
- package/dist/src/channels/engine/cell.js +144 -0
- package/dist/src/channels/engine/cell.js.map +1 -0
- package/dist/src/channels/engine/diff.d.ts +3 -0
- package/dist/src/channels/engine/diff.js +144 -0
- package/dist/src/channels/engine/diff.js.map +1 -0
- package/dist/src/channels/engine/engine.d.ts +151 -0
- package/dist/src/channels/engine/engine.js +417 -0
- package/dist/src/channels/engine/engine.js.map +1 -0
- package/dist/src/channels/engine/index.d.ts +22 -0
- package/dist/src/channels/engine/index.js +9 -0
- package/dist/src/channels/engine/index.js.map +1 -0
- package/dist/src/channels/engine/input-keys.d.ts +39 -0
- package/dist/src/channels/engine/input-keys.js +87 -0
- package/dist/src/channels/engine/input-keys.js.map +1 -0
- package/dist/src/channels/engine/input.d.ts +174 -0
- package/dist/src/channels/engine/input.js +597 -0
- package/dist/src/channels/engine/input.js.map +1 -0
- package/dist/src/channels/engine/memory-io.d.ts +46 -0
- package/dist/src/channels/engine/memory-io.js +72 -0
- package/dist/src/channels/engine/memory-io.js.map +1 -0
- package/dist/src/channels/engine/process-io.d.ts +23 -0
- package/dist/src/channels/engine/process-io.js +39 -0
- package/dist/src/channels/engine/process-io.js.map +1 -0
- package/dist/src/channels/engine/types.d.ts +202 -0
- package/dist/src/channels/engine/types.js +18 -0
- package/dist/src/channels/engine/types.js.map +1 -0
- package/dist/src/channels/engine/width.d.ts +23 -0
- package/dist/src/channels/engine/width.js +123 -0
- package/dist/src/channels/engine/width.js.map +1 -0
- package/dist/src/channels/index.d.ts +25 -0
- package/dist/src/channels/index.js +16 -0
- package/dist/src/channels/index.js.map +1 -0
- package/dist/src/channels/registry.d.ts +33 -0
- package/dist/src/channels/registry.js +57 -0
- package/dist/src/channels/registry.js.map +1 -0
- package/dist/src/channels/sdk/admit.d.ts +32 -0
- package/dist/src/channels/sdk/admit.js +30 -0
- package/dist/src/channels/sdk/admit.js.map +1 -0
- package/dist/src/channels/sdk/backend.d.ts +19 -0
- package/dist/src/channels/sdk/backend.js +103 -0
- package/dist/src/channels/sdk/backend.js.map +1 -0
- package/dist/src/channels/sdk/cursor.d.ts +51 -0
- package/dist/src/channels/sdk/cursor.js +57 -0
- package/dist/src/channels/sdk/cursor.js.map +1 -0
- package/dist/src/channels/sdk/index.d.ts +20 -0
- package/dist/src/channels/sdk/index.js +21 -0
- package/dist/src/channels/sdk/index.js.map +1 -0
- package/dist/src/channels/sdk/jsonl.d.ts +47 -0
- package/dist/src/channels/sdk/jsonl.js +201 -0
- package/dist/src/channels/sdk/jsonl.js.map +1 -0
- package/dist/src/channels/sdk/protocol.d.ts +297 -0
- package/dist/src/channels/sdk/protocol.js +25 -0
- package/dist/src/channels/sdk/protocol.js.map +1 -0
- package/dist/src/channels/sdk/schema.d.ts +12 -0
- package/dist/src/channels/sdk/schema.js +92 -0
- package/dist/src/channels/sdk/schema.js.map +1 -0
- package/dist/src/channels/sdk/wire-core.d.ts +199 -0
- package/dist/src/channels/sdk/wire-core.js +447 -0
- package/dist/src/channels/sdk/wire-core.js.map +1 -0
- package/dist/src/channels/service.d.ts +66 -0
- package/dist/src/channels/service.js +170 -0
- package/dist/src/channels/service.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/autocomplete.d.ts +32 -0
- package/dist/src/channels/tui/autocomplete/autocomplete.js +43 -0
- package/dist/src/channels/tui/autocomplete/autocomplete.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/file-mentions.d.ts +18 -0
- package/dist/src/channels/tui/autocomplete/file-mentions.js +107 -0
- package/dist/src/channels/tui/autocomplete/file-mentions.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/popup.d.ts +47 -0
- package/dist/src/channels/tui/autocomplete/popup.js +149 -0
- package/dist/src/channels/tui/autocomplete/popup.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/provider.d.ts +38 -0
- package/dist/src/channels/tui/autocomplete/provider.js +8 -0
- package/dist/src/channels/tui/autocomplete/provider.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/token.d.ts +22 -0
- package/dist/src/channels/tui/autocomplete/token.js +69 -0
- package/dist/src/channels/tui/autocomplete/token.js.map +1 -0
- package/dist/src/channels/tui/backend/ansi-rows.d.ts +86 -0
- package/dist/src/channels/tui/backend/ansi-rows.js +209 -0
- package/dist/src/channels/tui/backend/ansi-rows.js.map +1 -0
- package/dist/src/channels/tui/backend/main-screen.d.ts +90 -0
- package/dist/src/channels/tui/backend/main-screen.js +208 -0
- package/dist/src/channels/tui/backend/main-screen.js.map +1 -0
- package/dist/src/channels/tui/backend/osc.d.ts +79 -0
- package/dist/src/channels/tui/backend/osc.js +92 -0
- package/dist/src/channels/tui/backend/osc.js.map +1 -0
- package/dist/src/channels/tui/backend/transcript.d.ts +98 -0
- package/dist/src/channels/tui/backend/transcript.js +231 -0
- package/dist/src/channels/tui/backend/transcript.js.map +1 -0
- package/dist/src/channels/tui/backend/tui-backend.d.ts +324 -0
- package/dist/src/channels/tui/backend/tui-backend.js +916 -0
- package/dist/src/channels/tui/backend/tui-backend.js.map +1 -0
- package/dist/src/channels/tui/editor/editor-model.d.ts +141 -0
- package/dist/src/channels/tui/editor/editor-model.js +544 -0
- package/dist/src/channels/tui/editor/editor-model.js.map +1 -0
- package/dist/src/channels/tui/editor/editor-view.d.ts +36 -0
- package/dist/src/channels/tui/editor/editor-view.js +141 -0
- package/dist/src/channels/tui/editor/editor-view.js.map +1 -0
- package/dist/src/channels/tui/editor/editor.d.ts +50 -0
- package/dist/src/channels/tui/editor/editor.js +276 -0
- package/dist/src/channels/tui/editor/editor.js.map +1 -0
- package/dist/src/channels/tui/editor/undo-stack.d.ts +22 -0
- package/dist/src/channels/tui/editor/undo-stack.js +36 -0
- package/dist/src/channels/tui/editor/undo-stack.js.map +1 -0
- package/dist/src/channels/tui/editor/visual-lines.d.ts +39 -0
- package/dist/src/channels/tui/editor/visual-lines.js +127 -0
- package/dist/src/channels/tui/editor/visual-lines.js.map +1 -0
- package/dist/src/channels/tui/editor/word-nav.d.ts +10 -0
- package/dist/src/channels/tui/editor/word-nav.js +107 -0
- package/dist/src/channels/tui/editor/word-nav.js.map +1 -0
- package/dist/src/channels/tui/history/history-viewer.d.ts +133 -0
- package/dist/src/channels/tui/history/history-viewer.js +404 -0
- package/dist/src/channels/tui/history/history-viewer.js.map +1 -0
- package/dist/src/channels/tui/index.d.ts +16 -0
- package/dist/src/channels/tui/index.js +4 -0
- package/dist/src/channels/tui/index.js.map +1 -0
- package/dist/src/channels/tui/markdown/blocks.d.ts +42 -0
- package/dist/src/channels/tui/markdown/blocks.js +112 -0
- package/dist/src/channels/tui/markdown/blocks.js.map +1 -0
- package/dist/src/channels/tui/markdown/inline.d.ts +24 -0
- package/dist/src/channels/tui/markdown/inline.js +76 -0
- package/dist/src/channels/tui/markdown/inline.js.map +1 -0
- package/dist/src/channels/tui/markdown/markdown.d.ts +34 -0
- package/dist/src/channels/tui/markdown/markdown.js +183 -0
- package/dist/src/channels/tui/markdown/markdown.js.map +1 -0
- package/dist/src/channels/tui/memory/memory-viewer.d.ts +235 -0
- package/dist/src/channels/tui/memory/memory-viewer.js +541 -0
- package/dist/src/channels/tui/memory/memory-viewer.js.map +1 -0
- package/dist/src/channels/tui/overlay/alt-screen.d.ts +79 -0
- package/dist/src/channels/tui/overlay/alt-screen.js +106 -0
- package/dist/src/channels/tui/overlay/alt-screen.js.map +1 -0
- package/dist/src/channels/tui/overlay/overlay.d.ts +53 -0
- package/dist/src/channels/tui/overlay/overlay.js +58 -0
- package/dist/src/channels/tui/overlay/overlay.js.map +1 -0
- package/dist/src/channels/tui/overlay/select-confirm.d.ts +73 -0
- package/dist/src/channels/tui/overlay/select-confirm.js +157 -0
- package/dist/src/channels/tui/overlay/select-confirm.js.map +1 -0
- package/dist/src/channels/tui/panels/todo-panel.d.ts +24 -0
- package/dist/src/channels/tui/panels/todo-panel.js +55 -0
- package/dist/src/channels/tui/panels/todo-panel.js.map +1 -0
- package/dist/src/channels/tui/panels/tool-progress-panel.d.ts +37 -0
- package/dist/src/channels/tui/panels/tool-progress-panel.js +94 -0
- package/dist/src/channels/tui/panels/tool-progress-panel.js.map +1 -0
- package/dist/src/channels/tui/scroll/scroll-view.d.ts +96 -0
- package/dist/src/channels/tui/scroll/scroll-view.js +255 -0
- package/dist/src/channels/tui/scroll/scroll-view.js.map +1 -0
- package/dist/src/channels/tui/status/status-line.d.ts +46 -0
- package/dist/src/channels/tui/status/status-line.js +77 -0
- package/dist/src/channels/tui/status/status-line.js.map +1 -0
- package/dist/src/channels/tui/theme.d.ts +27 -0
- package/dist/src/channels/tui/theme.js +42 -0
- package/dist/src/channels/tui/theme.js.map +1 -0
- package/dist/src/channels/types.d.ts +84 -0
- package/dist/src/channels/types.js +12 -0
- package/dist/src/channels/types.js.map +1 -0
- package/dist/src/channels/ui-core.d.ts +80 -0
- package/dist/src/channels/ui-core.js +210 -0
- package/dist/src/channels/ui-core.js.map +1 -0
- package/dist/src/context/codes.d.ts +1 -0
- package/dist/src/context/codes.js +41 -0
- package/dist/src/context/codes.js.map +1 -0
- package/dist/src/context/events.d.ts +62 -0
- package/dist/src/context/events.js +161 -0
- package/dist/src/context/events.js.map +1 -0
- package/dist/src/context/index.d.ts +16 -0
- package/dist/src/context/index.js +14 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/logger.d.ts +67 -0
- package/dist/src/context/logger.js +137 -0
- package/dist/src/context/logger.js.map +1 -0
- package/dist/src/context/scope.d.ts +78 -0
- package/dist/src/context/scope.js +183 -0
- package/dist/src/context/scope.js.map +1 -0
- package/dist/src/context/workspace.d.ts +8 -0
- package/dist/src/context/workspace.js +105 -0
- package/dist/src/context/workspace.js.map +1 -0
- package/dist/src/contracts/agent-events.d.ts +73 -0
- package/dist/src/contracts/agent-events.js +17 -0
- package/dist/src/contracts/agent-events.js.map +1 -0
- package/dist/src/contracts/api.d.ts +249 -0
- package/dist/src/contracts/api.js +334 -0
- package/dist/src/contracts/api.js.map +1 -0
- package/dist/src/contracts/approval.d.ts +37 -0
- package/dist/src/contracts/approval.js +10 -0
- package/dist/src/contracts/approval.js.map +1 -0
- package/dist/src/contracts/env-ref.d.ts +41 -0
- package/dist/src/contracts/env-ref.js +33 -0
- package/dist/src/contracts/env-ref.js.map +1 -0
- package/dist/src/contracts/errors.d.ts +56 -0
- package/dist/src/contracts/errors.js +267 -0
- package/dist/src/contracts/errors.js.map +1 -0
- package/dist/src/contracts/events.d.ts +70 -0
- package/dist/src/contracts/events.js +330 -0
- package/dist/src/contracts/events.js.map +1 -0
- package/dist/src/contracts/index.d.ts +32 -0
- package/dist/src/contracts/index.js +27 -0
- package/dist/src/contracts/index.js.map +1 -0
- package/dist/src/contracts/llm.d.ts +278 -0
- package/dist/src/contracts/llm.js +13 -0
- package/dist/src/contracts/llm.js.map +1 -0
- package/dist/src/contracts/messages.d.ts +63 -0
- package/dist/src/contracts/messages.js +66 -0
- package/dist/src/contracts/messages.js.map +1 -0
- package/dist/src/contracts/redact.d.ts +46 -0
- package/dist/src/contracts/redact.js +224 -0
- package/dist/src/contracts/redact.js.map +1 -0
- package/dist/src/contracts/tools.d.ts +198 -0
- package/dist/src/contracts/tools.js +35 -0
- package/dist/src/contracts/tools.js.map +1 -0
- package/dist/src/contracts/types.d.ts +304 -0
- package/dist/src/contracts/types.js +51 -0
- package/dist/src/contracts/types.js.map +1 -0
- package/dist/src/contracts/ui.d.ts +122 -0
- package/dist/src/contracts/ui.js +16 -0
- package/dist/src/contracts/ui.js.map +1 -0
- package/dist/src/sdk/types.d.ts +144 -0
- package/dist/src/sdk/types.js +33 -0
- package/dist/src/sdk/types.js.map +1 -0
- package/package.json +29 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L0 contracts — API 治理元数据单源 + 协商层纯函数(03 篇 §8,2026-09-05
|
|
3
|
+
* API 治理批 2 落码)。
|
|
4
|
+
*
|
|
5
|
+
* 本文件 = API 面身份层的机器可读真相源(§8.2 六真相源中的三处):
|
|
6
|
+
* - `VIRTUAL_API_KEYS`:虚拟模块键表(键 + tier + since——§8.3 键级 tier 载体;
|
|
7
|
+
* loader 注入表、抽取器、check-api 三面共取此单源)
|
|
8
|
+
* - `SERVICE_CATALOG`:ctx 服务面目录(随各服务面落码批增条——本目录即声明面)
|
|
9
|
+
* - `CAPABILITIES`:能力面目录(surface.json 顶层 capabilities[] 的声明位,
|
|
10
|
+
* §8.5 ctx.host.capabilities 派生源;起算集 = core: 可卸件能力面——批 U2
|
|
11
|
+
* 首登 v1 高危面两枚并携 `userGrantable` 开门制标注)
|
|
12
|
+
*
|
|
13
|
+
* 加协商层纯函数(§8.4 装载门四出口 + 版本比较语义)与 ctx.host 自省面类型
|
|
14
|
+
* (§8.5——HostFace 插件侧形态 / HostFaceInput 装配侧纯数据输入)。
|
|
15
|
+
* 全部纯数据/纯函数:零副作用、jiti 可载(工具面 check-api/抽取器直接 import)。
|
|
16
|
+
*
|
|
17
|
+
* 分桶纪律(§8.3 internal 行 + §8.4 公开根分桶):本文件顶层导出分两桶——
|
|
18
|
+
* 可见桶六名经 contracts/index.ts 显式 re-export 进公开根(插件作者可消费面);
|
|
19
|
+
* internal 机制桶八名不进公开根(宿主治理机制非插件 API,内核消费深导
|
|
20
|
+
* contracts/api.js)。分桶不变式由抽取器 assertApiBucketPartition fail-loud
|
|
21
|
+
* 执法:新顶层导出未分桶即炸(白名单单点 tools/extract-api-surface.mjs
|
|
22
|
+
* INTERNAL_API_EXPORTS)。
|
|
23
|
+
*/
|
|
24
|
+
import { BaseError } from './errors.js';
|
|
25
|
+
/** apiVersion 格式:MAJOR.MINOR 两段(API 面无 patch——§8.1) */
|
|
26
|
+
const API_VERSION_FORMAT = /^\d+\.\d+$/;
|
|
27
|
+
/**
|
|
28
|
+
* 虚拟模块键表——现役五键全 `stable`(§8.3:berry-agent/llm 是已落码正路非预览;
|
|
29
|
+
* typebox 三键纯转发)。loader 的注入表由本表派生(注入表不另持键单源);
|
|
30
|
+
* 实验件未来以新键 + tier 'experimental' 进。
|
|
31
|
+
*
|
|
32
|
+
* `berry-agent/sqlite` 键(规范目标态六键之一)**推迟至 persist SqliteFace
|
|
33
|
+
* 落码批进表**:查 1 要求每键至少一条导出、无真身即红——表收现役真源,
|
|
34
|
+
* 键进表 = 真身在场(§8.3 批 2 落码注记)。首条 ctx 服务(SERVICE_CATALOG)
|
|
35
|
+
* 与首个 core: 能力(CAPABILITIES)同律随各自落码批进表。
|
|
36
|
+
*/
|
|
37
|
+
export const VIRTUAL_API_KEYS = [
|
|
38
|
+
{ key: 'berry-agent', tier: 'stable', since: '1.0' },
|
|
39
|
+
{ key: 'typebox', tier: 'stable', since: '1.0' },
|
|
40
|
+
{ key: 'typebox/value', tier: 'stable', since: '1.0' },
|
|
41
|
+
{ key: 'typebox/compile', tier: 'stable', since: '1.0' },
|
|
42
|
+
{ key: 'berry-agent/llm', tier: 'stable', since: '1.0' },
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* ctx 服务面目录:首条真实 ctx 具名服务随 c-3 落码批入册(drift 闸守快照,
|
|
46
|
+
* 目录本身是声明面——声明即 API)。抽取器 services 块循环本表,接口切片
|
|
47
|
+
* 机制已就位、每条目落码即活。
|
|
48
|
+
*/
|
|
49
|
+
export const SERVICE_CATALOG = [
|
|
50
|
+
{
|
|
51
|
+
name: 'secrets',
|
|
52
|
+
module: 'credentials',
|
|
53
|
+
faceInterface: 'SecretsService',
|
|
54
|
+
note: '插件凭证受理制读写面(ctx.get("secrets") 消费——get 缺省自域、越域读走高危面开门 credentials.read-cross;set 恒自域且只在宿主回调窗内可达)',
|
|
55
|
+
tier: 'stable',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'compaction',
|
|
59
|
+
module: 'compaction',
|
|
60
|
+
faceInterface: 'CompactionPluginFace',
|
|
61
|
+
note: '压缩策略面(ctx.get("compaction") 消费——setConfig 数值槽/registerSummarizer 摘要 provider 槽两动词装载窗 only 严于通律、单席位先到占;provider 只作用阈值路,溢出兜底恒宿主缺省算法)',
|
|
62
|
+
tier: 'stable',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'sdk-routes',
|
|
66
|
+
module: 'sdk',
|
|
67
|
+
faceInterface: 'SdkRoutesPluginFace',
|
|
68
|
+
note: '路由受理面(ctx.get("sdk-routes") 消费——register 受理制注册 sdk HTTP 面插件道路由:前缀 /plugins/<id>/ 恒受理面施加 + 收窄四件〔鉴权子集/loopbackOnly 恒 true/体帽 1MiB 缺席即帽值/数帽 16〕+ 门检 sdk.register-route 前置 + 装载窗 only;裁决纯函数 sdk/plugin-routes.ts)',
|
|
69
|
+
tier: 'stable',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
// fork 绑定真源 = plugin-boot 装载序 fork.provide(JOBS_SERVICE_NAME,
|
|
73
|
+
// options.jobs.bindForPlugin(pluginId))——绑定面委托共享根真身,改
|
|
74
|
+
// 归属注入两改写位(registerKind kind 归属 + register owner 闭包
|
|
75
|
+
// 固化——六役 CL-C ②);方法面 = subagent/registry.ts JobRegistry
|
|
76
|
+
// 契约接口(七动词)
|
|
77
|
+
name: 'jobs',
|
|
78
|
+
module: 'subagent',
|
|
79
|
+
faceInterface: 'JobRegistry',
|
|
80
|
+
note: 'Job 注册表面(ctx.get("jobs") 消费——fork 绑定面委托共享根真身:registerKind 登记种类(fork 绑定携本插件 id 入 kind 归属记录——starter 谱系闸判籍面)、register 注册在飞 Job 得句柄、hasKind/running/list/get 只读对账、closeOwner 按 owner 围栏收口在飞;未登记 kind 拒 JOB_KIND_UNKNOWN)',
|
|
81
|
+
tier: 'stable',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
// fork 绑定真源 = plugin-boot fork.provide('sessions',
|
|
85
|
+
// bindSessionsForPlugin(...))——归因闸 caller 宿主闭包铸造 + 行籍闸
|
|
86
|
+
// 两拍执法;方法面 = host/sessions-face.ts SessionsFace 契约接口
|
|
87
|
+
// (appendEventFor 单动词)
|
|
88
|
+
name: 'sessions',
|
|
89
|
+
module: 'host',
|
|
90
|
+
faceInterface: 'SessionsFace',
|
|
91
|
+
note: '会话事件受理面(ctx.get("sessions") 消费——appendEventFor 单动词按会话取 appendEvent 活引用:核心事件词/未注册词汇二道闸拒写、surfaceOp 信封改道 appendWithSurfaceOp 正门、无活体驱动返 undefined 诚实降级;插件道恒经绑定面——归因键 source: plugin:<id> 由宿主闭包铸造(传入面无 caller 位防冒名),行不在活装载代即残句柄拒写)',
|
|
92
|
+
tier: 'stable',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
// fork 绑定真源 = plugin-boot fork.provide(SESSIONS_CONTROL_SERVICE,
|
|
96
|
+
// bindControlForPlugin(...))——caller 归因闭包铸造防冒名;方法面 =
|
|
97
|
+
// conversation/control.ts PluginControlFace 契约接口(send/interrupt/
|
|
98
|
+
// withdraw 三动词窄形——无 caller 位)
|
|
99
|
+
name: 'sessions-control',
|
|
100
|
+
module: 'conversation',
|
|
101
|
+
faceInterface: 'PluginControlFace',
|
|
102
|
+
note: '会话操控面(ctx.get("sessions-control") 消费——send/interrupt/withdraw 三动词窄形;caller 归因 {kind:"plugin", pluginId} 由宿主闭包铸造(传入面无 caller 位,传入即被覆写——伪造结构性不存在);withdraw 目标未排队恒报 delivered 不虚构撤回成功;面缺席 = ctx.get 响亮 CONTEXT_SERVICE_MISSING 诚实缺席律)',
|
|
103
|
+
tier: 'stable',
|
|
104
|
+
},
|
|
105
|
+
];
|
|
106
|
+
/**
|
|
107
|
+
* 能力面目录:core: 可卸件能力起算集(§8.5——ctx.host.capabilities 读此层)。
|
|
108
|
+
* 语义 = **本构建面**(编译进包即有——启用清单是否挂载属运行时态,两问不混)。
|
|
109
|
+
* 批 U2 首登 v1 首批高危面两枚(§4.6——`userGrantable` 开门制标注单源):
|
|
110
|
+
* - `channels.ui-backend`:替换界面后端(UiBackend 实装换装——02 §2 表 #6
|
|
111
|
+
* 重述所指高权面;承载方 = channels 宿主固定件〔自研 TUI 引擎席位〕);
|
|
112
|
+
* - `sdk.register-route`:注册网页路由(sdk HTTP 面路由扩展位——03 §10.6;
|
|
113
|
+
* 承载方 = core:sdk 件)。
|
|
114
|
+
* 触发器面 C 批补第三枚(2026-09-07——P1 拍板批 v1 名单两枚→三枚的落码兑现):
|
|
115
|
+
* - `triggers.start-run`:触发器起会(非人触发起无头会话——03 §2.2
|
|
116
|
+
* ctx.triggers.register;承载方 = host 装配根〔注册表/starter 编舞住
|
|
117
|
+
* host 侧触发器件,零新席——03 §8.2 providedBy 第三形〕)。
|
|
118
|
+
* 凭证代管件 c-1 规范先行批入册第四枚(2026-09-08——§4.6 v1 首批名单
|
|
119
|
+
* 三枚→四枚;c-3 读腿落码批代码侧兑现):
|
|
120
|
+
* - `credentials.read-cross`:跨域读凭证(ctx.secrets.get 越自域
|
|
121
|
+
* namespace 读——03 §2.2 第十面/§10.9 读腿;承载方 = core:credentials
|
|
122
|
+
* 件〔judged 面——默认关、开门后逐次 capability/used 审计〕)。
|
|
123
|
+
* 环境感知件 e-2 观测腿批入册第五枚(2026-09-08——§4.6 v1 首批名单
|
|
124
|
+
* 四枚→五枚;立题档题 6 拍板「动词族一枚高危面统摄」——拉取与订阅两
|
|
125
|
+
* 形态一枚统摄):
|
|
126
|
+
* - `sessions.observe-cross`:跨树观测(obs 会话维工具族跨树目标读/
|
|
127
|
+
* 全会话维枚举——03 §10.8 可见性分轴观测轴;树内 self/tree 两档零
|
|
128
|
+
* 开门。承载方 = host 装配根〔per-session 工具族闭包装配位 +
|
|
129
|
+
* 订阅作用域执法住宿主侧——03 §8.2 providedBy 第三形同 triggers.
|
|
130
|
+
* start-run;obs 件提供 SessionView 纯派生读面非承载方〕)。
|
|
131
|
+
* 后续高危面经三路准入扩枚举同律入册(§4.6);构建差能力随真实构建分叉日
|
|
132
|
+
* 启用 `API_CAPABILITY_MISSING`(预留码,本批无 thrower)。
|
|
133
|
+
*/
|
|
134
|
+
export const CAPABILITIES = [
|
|
135
|
+
{
|
|
136
|
+
name: 'channels.ui-backend',
|
|
137
|
+
providedBy: 'channels',
|
|
138
|
+
userGrantable: true,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'sdk.register-route',
|
|
142
|
+
providedBy: 'core:sdk',
|
|
143
|
+
userGrantable: true,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'triggers.start-run',
|
|
147
|
+
providedBy: 'host',
|
|
148
|
+
userGrantable: true,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: 'credentials.read-cross',
|
|
152
|
+
providedBy: 'core:credentials',
|
|
153
|
+
userGrantable: true,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: 'sessions.observe-cross',
|
|
157
|
+
providedBy: 'host',
|
|
158
|
+
userGrantable: true,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
// 操控轴高危面(03 §4.6 v1 首批第六枚——e-4 落码批入册):跨会话
|
|
162
|
+
// send/interrupt/withdraw 全域同门无树内豁免(03 §2.2 第十一面门制句)
|
|
163
|
+
name: 'sessions.control-cross',
|
|
164
|
+
providedBy: 'host',
|
|
165
|
+
userGrantable: true,
|
|
166
|
+
},
|
|
167
|
+
];
|
|
168
|
+
/**
|
|
169
|
+
* 高危面开门名单单源(§4.6 登记单源的派生面):CAPABILITIES 中 `userGrantable`
|
|
170
|
+
* 标注位的能力名清单。启用清单 `opens` 授予位的**值域即此名单**(行校验拒绝
|
|
171
|
+
* 式消费——host/manifest);门检裁决(adjudicateCapabilityDoor)同源判「是否
|
|
172
|
+
* 高危面」。派生不另持单源——目录增删高危面,本面与校验/门检三面共变。
|
|
173
|
+
*/
|
|
174
|
+
export const USER_GRANTABLE_CAPABILITIES = CAPABILITIES.filter((c) => c.userGrantable === true).map((c) => c.name);
|
|
175
|
+
/**
|
|
176
|
+
* 启用清单顶层 `doors:` 段值域 v1 单源(开门制扩展批 2026-09-09——03 §4.6
|
|
177
|
+
* 双源并集律第二源的值域面):观测/操控两门枚举。**射程即值域**——六枚全宽
|
|
178
|
+
* 将致「清单呈现开、门检实效关」的三读分叉与审计说谎背离(冷读闸 major #1
|
|
179
|
+
* 收窄);USER_GRANTABLE_CAPABILITIES 名单系其上界,扩枚随后续模型道高危面
|
|
180
|
+
* 立题放宽。行校验拒绝式消费(host/manifest——段坏形/值域外 fail-loud 拒)。
|
|
181
|
+
*/
|
|
182
|
+
export const DOORS_SEGMENT_V1_DOMAIN = ['sessions.observe-cross', 'sessions.control-cross'];
|
|
183
|
+
/**
|
|
184
|
+
* 高危面门检裁决(§4.6——用户主权开门制的执法判定核;纯函数零副作用)。
|
|
185
|
+
*
|
|
186
|
+
* 判定两序:①能力名 ∈ USER_GRANTABLE_CAPABILITIES(不是高危面即 not-a-door
|
|
187
|
+
* ——常规能力位不走开门制,宿主侧把非门面接进门检系装配缺陷);②该插件的
|
|
188
|
+
* 开门授予集是否含此名(缺席 = 默认关 door-closed)。开门授予集 = 启用清单
|
|
189
|
+
* 行 `opens` 位(读侧行校验已保证值域合法——本函数对集外值不再复验,信任
|
|
190
|
+
* 前置校验)。**调用方 = 宿主注入位**(界面后端换装缝/路由受理面随批 U3/U5
|
|
191
|
+
* 落地接线);插件代码结构性不可达本函数(开门是宿主裁决面非插件 API)。
|
|
192
|
+
*/
|
|
193
|
+
export function adjudicateCapabilityDoor(opened, capability) {
|
|
194
|
+
if (!USER_GRANTABLE_CAPABILITIES.includes(capability)) {
|
|
195
|
+
return {
|
|
196
|
+
ok: false,
|
|
197
|
+
kind: 'not-a-door',
|
|
198
|
+
message: `能力位 ${capability} 不在高危面名单(现役:${USER_GRANTABLE_CAPABILITIES.join('、')})——常规能力位不走开门制,宿主注入位接错面或能力名拼错`,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
if (!opened.has(capability)) {
|
|
202
|
+
return {
|
|
203
|
+
ok: false,
|
|
204
|
+
kind: 'door-closed',
|
|
205
|
+
message: `高危面 ${capability} 默认关(用户主权开门制 03 §4.6)——本插件未获开门授予;开法:启用清单 enabled.yaml 该插件行加 opens: ["${capability}"] 后重装载,撤位即收回`,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
return { ok: true };
|
|
209
|
+
}
|
|
210
|
+
/* ---------------- 版本比较与装载门(§8.4) ---------------- */
|
|
211
|
+
/**
|
|
212
|
+
* apiVersion 比较(§8.4 版本比较语义):MAJOR.MINOR 逐段数值比较——禁字符串
|
|
213
|
+
* 比较("1.10" > "1.9")。格式非法抛 API_VERSION_MALFORMED(调用方 = 清单
|
|
214
|
+
* 校验后的执法面,正常路径格式已验)。
|
|
215
|
+
* @returns 负数 = a < b;0 = 相等;正数 = a > b
|
|
216
|
+
*/
|
|
217
|
+
export function compareApiVersions(a, b) {
|
|
218
|
+
const pa = parseApiVersion(a);
|
|
219
|
+
const pb = parseApiVersion(b);
|
|
220
|
+
return pa[0] !== pb[0] ? pa[0] - pb[0] : pa[1] - pb[1];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* API 族错误消息公共指路尾注(公开锚——运行时字符串不指路知识域)。
|
|
224
|
+
*
|
|
225
|
+
* 指路目标 = 仓库公开文档面(COMPATIBILITY.md 与 docs/API参考.md——批 4
|
|
226
|
+
* 收剑点火件落地后在场;本批先占位词面,两件生成后即真)。第三方插件作者
|
|
227
|
+
* 顺错误消息可达;知识域篇名/章节号(gitignored)禁入运行时字符串。
|
|
228
|
+
* 本模块三条拒载消息统一缀此尾注:拒载消息自带「下一步去哪读」。
|
|
229
|
+
* 模块私有(不入公开桶——INTERNAL_API_EXPORTS 白名单无需扩)。
|
|
230
|
+
*/
|
|
231
|
+
const API_DOC_ANCHOR_NOTE = 'API 治理语义见仓库 COMPATIBILITY.md 与 docs/API参考.md。';
|
|
232
|
+
/** 解析 apiVersion 为 [MAJOR, MINOR] 数值对;格式非法即抛(单点执法) */
|
|
233
|
+
function parseApiVersion(v) {
|
|
234
|
+
if (!API_VERSION_FORMAT.test(v)) {
|
|
235
|
+
throw new BaseError('API_VERSION_MALFORMED', `apiVersion 格式非法:${v}(应为 MAJOR.MINOR,如 "1.0")${API_DOC_ANCHOR_NOTE}`);
|
|
236
|
+
}
|
|
237
|
+
const [major, minor] = v.split('.');
|
|
238
|
+
return [Number(major), Number(minor)];
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* 断言 apiVersion 格式合法(清单校验面用——错误归 PLUGIN_INVALID 语境由调用方
|
|
242
|
+
* 包,本函数只做纯格式判定的复用体)。
|
|
243
|
+
*/
|
|
244
|
+
export function isValidApiVersion(v) {
|
|
245
|
+
return API_VERSION_FORMAT.test(v);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* API 兼容执法收剑点火位(§8.4「批 4 翻必填」+ §8.10 批表——机器在窗口内、
|
|
249
|
+
* 兼容执法单点收剑)。
|
|
250
|
+
*
|
|
251
|
+
* - `false`(现役)= pre-release 窗口容忍态:api 块缺席走 legacy 出口聚合 warn;
|
|
252
|
+
* - `true`(首个 dist-tag=latest 当笔翻转)= 点火:api 块缺席从 warn 变拒载
|
|
253
|
+
* (`API_VERSION_MISMATCH`),min fail-loud 对全体插件生效。
|
|
254
|
+
*
|
|
255
|
+
* **散拷禁令**(§8.4):常量消费面恰两处——adjudicateApiGate 出口 4(行为面:
|
|
256
|
+
* 缺块 warn/拒载)与抽取器 enforcement 纪元章(tools/extract-api-surface.mjs
|
|
257
|
+
* ——只读单源盖章进面快照,不改不散播,§8.10 点火可见性);测试经纯函数
|
|
258
|
+
* `ignited` 参数注入两态,不改常量。点火日翻转 = 改此单点 + 同笔测试 + 快照
|
|
259
|
+
* 再生成(enforcement 纪元章随翻转变色——查 1 自然拦)。
|
|
260
|
+
*/
|
|
261
|
+
export const API_ENFORCEMENT_IGNITED = false;
|
|
262
|
+
/**
|
|
263
|
+
* 装载门序(§8.4 四出口全定义)。纯函数:清单 api 块 × 宿主 apiVersion → 裁决。
|
|
264
|
+
* 全入口同律——凡构造装载计划的进路必经同一根公式(装机腿 / boot 合成腿 /
|
|
265
|
+
* 试件腿 / 收割腿 / core: 装载)。出口:
|
|
266
|
+
* 1. 宿主 < min → 抛 `API_VERSION_MISMATCH`(拒载——message 载 expected/actual/
|
|
267
|
+
* 升级指引三段);
|
|
268
|
+
* 2. min ≤ 宿主 < target → 钳制不警示(生效 target = min(宿主, target));
|
|
269
|
+
* 3. 宿主 > target → 正常兼容态不警示(editions 设计目的);
|
|
270
|
+
* 4. api 块缺席 → 点火前 status 'legacy'(调用方聚合 per-boot warn);点火后
|
|
271
|
+
* (`API_ENFORCEMENT_IGNITED` 翻 true)抛 `API_VERSION_MISMATCH` 拒载——
|
|
272
|
+
* 「批 4 翻必填」的唯一机器翻转点。
|
|
273
|
+
* 格式/不变式(min ≤ target)由清单校验先执法——本函数防御式复验格式,
|
|
274
|
+
* 不变式信任前置校验。
|
|
275
|
+
*
|
|
276
|
+
* @param ignited 点火位注入(缺省 = `API_ENFORCEMENT_IGNITED` 常量单源——测试
|
|
277
|
+
* 两态注入专用参数,产码调用点不传)。
|
|
278
|
+
*/
|
|
279
|
+
export function adjudicateApiGate(api, hostApiVersion, pluginId, ignited = API_ENFORCEMENT_IGNITED) {
|
|
280
|
+
// 出口 4:api 块缺席——点火前 legacy 容忍态(面/行为按宿主当前——不进任何兼容
|
|
281
|
+
// 模式);点火后拒载(min fail-loud 全体生效的机器形态)
|
|
282
|
+
if (api === undefined) {
|
|
283
|
+
if (ignited) {
|
|
284
|
+
throw new BaseError('API_VERSION_MISMATCH', `插件 ${pluginId} 清单(package.json)缺 api 块——兼容执法已点火(api 块必填),` +
|
|
285
|
+
`须在 package.json 的 berryAgent 块补 "api": { "minApiVersion": "<宿主当前 apiVersion 或更旧>" }` +
|
|
286
|
+
`(批 4 翻必填——min fail-loud 与兼容模式对全体插件生效)。${API_DOC_ANCHOR_NOTE}`);
|
|
287
|
+
}
|
|
288
|
+
return { status: 'legacy', effectiveTarget: hostApiVersion, experimentalKeys: new Set() };
|
|
289
|
+
}
|
|
290
|
+
const min = api.minApiVersion;
|
|
291
|
+
const target = api.targetApiVersion ?? min; // 粘性锚:缺省 = min 的值
|
|
292
|
+
parseApiVersion(min); // 防御式格式复验(前置校验已红过一次)
|
|
293
|
+
parseApiVersion(hostApiVersion);
|
|
294
|
+
// 出口 1:硬地板拒载(fail-loud 三段消息)
|
|
295
|
+
if (compareApiVersions(hostApiVersion, min) < 0) {
|
|
296
|
+
throw new BaseError('API_VERSION_MISMATCH', `插件 ${pluginId} 声明 minApiVersion ${min},宿主 API 面版本 ${hostApiVersion} 低于地板——拒载。` +
|
|
297
|
+
`升级指引:升级 berry-agent 宿主包(npm i -g berry-agent@latest)或联系插件作者放宽 minApiVersion。${API_DOC_ANCHOR_NOTE}`);
|
|
298
|
+
}
|
|
299
|
+
// 出口 2/3:钳制与兼容统称 admit——生效 target = min(宿主, target)(钳制出口
|
|
300
|
+
// 的值在兼容出口自然等于 target,两出口同式不分支——「钳制不警示」的机器形态)
|
|
301
|
+
const effectiveTarget = compareApiVersions(hostApiVersion, target) < 0 ? hostApiVersion : target;
|
|
302
|
+
return { status: 'admit', effectiveTarget, experimentalKeys: new Set(api.experimental ?? []) };
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* experimental import 门禁(§8.4 执法点——与说明符白名单门禁同执法位的纯裁决核):
|
|
306
|
+
* import 实验键而清单未声明 → 抛 `API_EXPERIMENTAL_UNDECLARED`。契约即知情:
|
|
307
|
+
* 能用可破面 = 你签了字。键表之外的说明符不属本门禁(白名单三道另辖)。
|
|
308
|
+
*/
|
|
309
|
+
export function assertExperimentalDeclared(specifier, declared, pluginId) {
|
|
310
|
+
const entry = VIRTUAL_API_KEYS.find((k) => k.key === specifier);
|
|
311
|
+
if (entry === undefined || entry.tier !== 'experimental')
|
|
312
|
+
return;
|
|
313
|
+
if (declared.has(specifier))
|
|
314
|
+
return;
|
|
315
|
+
throw new BaseError('API_EXPERIMENTAL_UNDECLARED', `import 实验键 ${specifier} 未在清单声明——插件 ${pluginId ?? '(未知插件)'} 须在 package.json ` +
|
|
316
|
+
`的 berryAgent 块 api 段 experimental 数组显式点名该键方能启用(契约即知情:实验键任意 minor 可破可删)${API_DOC_ANCHOR_NOTE}`);
|
|
317
|
+
}
|
|
318
|
+
/** 由纯数据输入物化 HostFace(装配根唯一构造点——ctx.host 只读面由此而来) */
|
|
319
|
+
export function materializeHostFace(data) {
|
|
320
|
+
const capabilitySet = new Set(data.capabilities);
|
|
321
|
+
const experimentalSet = new Set(data.experimentalKeys);
|
|
322
|
+
return {
|
|
323
|
+
version: data.version,
|
|
324
|
+
apiVersion: data.apiVersion,
|
|
325
|
+
capabilities: {
|
|
326
|
+
has: (name) => capabilitySet.has(name),
|
|
327
|
+
list: () => [...capabilitySet],
|
|
328
|
+
},
|
|
329
|
+
experimental: {
|
|
330
|
+
enabled: (name) => experimentalSet.has(name),
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../../src/contracts/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,uDAAuD;AACvD,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAcxC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC7D,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IACpD,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IAChD,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IACtD,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IACxD,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;CACzD,CAAC;AAuBF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC7D;QACE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,gBAAgB;QAC/B,IAAI,EAAE,iGAAiG;QACvG,IAAI,EAAE,QAAQ;KACf;IACD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,sBAAsB;QACrC,IAAI,EAAE,oIAAoI;QAC1I,IAAI,EAAE,QAAQ;KACf;IACD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,qBAAqB;QACpC,IAAI,EAAE,+MAA+M;QACrN,IAAI,EAAE,QAAQ;KACf;IACD;QACE,8DAA8D;QAC9D,sDAAsD;QACtD,oDAAoD;QACpD,wDAAwD;QACxD,YAAY;QACZ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,UAAU;QAClB,aAAa,EAAE,aAAa;QAC5B,IAAI,EAAE,uNAAuN;QAC7N,IAAI,EAAE,QAAQ;KACf;IACD;QACE,mDAAmD;QACnD,uDAAuD;QACvD,qDAAqD;QACrD,uBAAuB;QACvB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,cAAc;QAC7B,IAAI,EAAE,gOAAgO;QACtO,IAAI,EAAE,QAAQ;KACf;IACD;QACE,iEAAiE;QACjE,qDAAqD;QACrD,iEAAiE;QACjE,8BAA8B;QAC9B,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,mBAAmB;QAClC,IAAI,EAAE,oOAAoO;QAC1O,IAAI,EAAE,QAAQ;KACf;CACF,CAAC;AAwBF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,YAAY,GAA+B;IACtD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,UAAU;QACtB,aAAa,EAAE,IAAI;KACpB;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,UAAU;QACtB,aAAa,EAAE,IAAI;KACpB;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;KACpB;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,kBAAkB;QAC9B,aAAa,EAAE,IAAI;KACpB;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;KACpB;IACD;QACE,0CAA0C;QAC1C,qDAAqD;QACrD,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAsB,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,GAAG,CACpH,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACd,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;AAoB/G;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA2B,EAAE,UAAkB;IACtF,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,OAAO,UAAU,eAAe,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B;SAC7G,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,OAAO,UAAU,wEAAwE,UAAU,eAAe;SAC5H,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,sDAAsD;AAEtD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS,EAAE,CAAS;IACrD,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,+CAA+C,CAAC;AAE5E,sDAAsD;AACtD,SAAS,eAAe,CAAC,CAAS;IAChC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CACjB,uBAAuB,EACvB,mBAAmB,CAAC,2BAA2B,mBAAmB,EAAE,CACrE,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAsB7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAyB,EACzB,cAAsB,EACtB,QAAgB,EAChB,UAAmB,uBAAuB;IAE1C,iDAAiD;IACjD,qCAAqC;IACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,SAAS,CACjB,sBAAsB,EACtB,MAAM,QAAQ,6CAA6C;gBACzD,qFAAqF;gBACrF,yCAAyC,mBAAmB,EAAE,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAC5F,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC,kBAAkB;IAC9D,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB;IAC3C,eAAe,CAAC,cAAc,CAAC,CAAC;IAChC,6BAA6B;IAC7B,IAAI,kBAAkB,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,SAAS,CACjB,sBAAsB,EACtB,MAAM,QAAQ,qBAAqB,GAAG,eAAe,cAAc,YAAY;YAC7E,+EAA+E,mBAAmB,EAAE,CACvG,CAAC;IACJ,CAAC;IACD,yDAAyD;IACzD,6CAA6C;IAC7C,MAAM,eAAe,GAAG,kBAAkB,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;IACjG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;AACjG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAiB,EACjB,QAA6B,EAC7B,QAA4B;IAE5B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IAChE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO;IACjE,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO;IACpC,MAAM,IAAI,SAAS,CACjB,6BAA6B,EAC7B,cAAc,SAAS,eAAe,QAAQ,IAAI,QAAQ,mBAAmB;QAC3E,yEAAyE,mBAAmB,EAAE,CACjG,CAAC;AACJ,CAAC;AAyCD,oDAAoD;AACpD,MAAM,UAAU,mBAAmB,CAAC,IAAmB;IACrD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9C,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC;SAC/B;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;SACrD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 审批 ask 跨模块词汇(07 §4.3 提问队列条款 + 04 §9 审批链的呈现载荷)。
|
|
3
|
+
*
|
|
4
|
+
* 属地裁决(批 11b 契约先行):原住 channels/types.ts(批 10e-2 通道核
|
|
5
|
+
* askApproval 面定稿时落)——conversation 件(fresh 作用域审批三件)消费
|
|
6
|
+
* 同形而依 02 §4.1 边表不可达 channels,闭集词汇归位 contracts 单源;
|
|
7
|
+
* channels 侧改 import + re-export,公开面零变化。
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 审批 ask 应答闭集(07 §4.3 提问队列条款——审批入队契约):approve/reject/
|
|
11
|
+
* cancel/always/unavailable。收口语义两分立(对齐 04 §9 run 信号透传 ask 链):
|
|
12
|
+
* 会话关闭 / run 打断收口 → `'cancel'`(用户主动终止语境);降级到底(全部
|
|
13
|
+
* 后端无 approval capability——headless 单发形态的结构态)→ `'unavailable'`
|
|
14
|
+
* (呈现面结构性无人可答——ApprovalService 侧落 outcome unavailable +
|
|
15
|
+
* source timeout,04 §9 无应答者语义;2026-09-13 真模型实测批增,修前误答
|
|
16
|
+
* `'cancel'` 致 decided 错标 cancel/user 双失真);`always` + 草案的策略表
|
|
17
|
+
* 回写经装配注入回调(onApprovalAlways)。
|
|
18
|
+
*/
|
|
19
|
+
export type ApprovalAskAnswer = 'approve' | 'reject' | 'cancel' | 'always' | 'unavailable';
|
|
20
|
+
/**
|
|
21
|
+
* 审批 ask 呈现载荷(07 §4.3——通道侧形):channels 与 safety 边表互无边
|
|
22
|
+
* (02 §4.1),safety 侧 ApprovalRequest 经装配根映射注入本形;`suggestedEntry`
|
|
23
|
+
* = 「始终允许」草案条目(04 §9 ③ 策略表 allow 条目回写目标;无草案 = always 选项
|
|
24
|
+
* 语义上不呈现、防御收口视同 approve)。
|
|
25
|
+
*/
|
|
26
|
+
export interface ApprovalAskRequest {
|
|
27
|
+
/** 目标动作摘要(人可读一行——面板标题) */
|
|
28
|
+
readonly summary: string;
|
|
29
|
+
/** 请求方/理由(有则呈现说明段) */
|
|
30
|
+
readonly reason?: string;
|
|
31
|
+
/** 发起审批的工具名(有则呈现) */
|
|
32
|
+
readonly toolName?: string;
|
|
33
|
+
/** 挂起身份短形(多驱动单输入框下防串答) */
|
|
34
|
+
readonly approvalId?: string;
|
|
35
|
+
/** 「始终允许」草案条目(策略表 allow 条目回写目标;缺席 = always 防御收口视同 approve) */
|
|
36
|
+
readonly suggestedEntry?: string;
|
|
37
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 审批 ask 跨模块词汇(07 §4.3 提问队列条款 + 04 §9 审批链的呈现载荷)。
|
|
3
|
+
*
|
|
4
|
+
* 属地裁决(批 11b 契约先行):原住 channels/types.ts(批 10e-2 通道核
|
|
5
|
+
* askApproval 面定稿时落)——conversation 件(fresh 作用域审批三件)消费
|
|
6
|
+
* 同形而依 02 §4.1 边表不可达 channels,闭集词汇归位 contracts 单源;
|
|
7
|
+
* channels 侧改 import + re-export,公开面零变化。
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../../src/contracts/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 凭证 env 引用形(03 §10.9 注入腿——c-4 落码批)。
|
|
3
|
+
*
|
|
4
|
+
* 词面:`@credentials:<name>`(值位整串精确匹配——sigil 前缀 + 凭证名)。
|
|
5
|
+
* 用户在 MCP/LSP server config 的 env 声明里以引用形代替明文:
|
|
6
|
+
* `{ "GITHUB_TOKEN": "@credentials:github-token" }`——配置与 durable 面恒
|
|
7
|
+
* 只见引用形原文,明文值只在 spawn 时刻经宿主展开进子进程环境(exec
|
|
8
|
+
* buildChildEnv 单点——模型面/插件码面/工具结果结构性不见值)。
|
|
9
|
+
*
|
|
10
|
+
* 本文件是词面**单源**(跨模块契约词汇:exec 执法消费 + credentials
|
|
11
|
+
* resolver 消费 + 用户 config 书写三方法源):放 contracts 使两消费方均
|
|
12
|
+
* 零新 DAG 边(exec 与 credentials 均既有 contracts 边)。纯数据/纯函数、
|
|
13
|
+
* jiti 可载——与 api.ts 同族纪律。
|
|
14
|
+
*
|
|
15
|
+
* v1 无转义形:以 `@credentials:` 起头的 env 值一律视为引用形(该形在
|
|
16
|
+
* env 值位无正当字面用途——逃生口挂账不需要)。
|
|
17
|
+
*/
|
|
18
|
+
/** 引用形 sigil 前缀(含冒号——`@credentials:`;名 = 前缀后的非空余段) */
|
|
19
|
+
export declare const CREDENTIALS_ENV_REF_PREFIX = "@credentials:";
|
|
20
|
+
/** 引用形解析结果(三态:非引用形 / 引用形携名 / 前缀命中而坏形) */
|
|
21
|
+
export type CredentialEnvRef =
|
|
22
|
+
/** 非引用形——字面值原样放行 */
|
|
23
|
+
{
|
|
24
|
+
readonly kind: 'none';
|
|
25
|
+
}
|
|
26
|
+
/** 引用形——name 为凭证作用名(host 域 provider 名) */
|
|
27
|
+
| {
|
|
28
|
+
readonly kind: 'ref';
|
|
29
|
+
readonly name: string;
|
|
30
|
+
}
|
|
31
|
+
/** 坏形——前缀命中而名空(意图明确是引用形,fail-loud 拒字面注入) */
|
|
32
|
+
| {
|
|
33
|
+
readonly kind: 'invalid';
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* 解析 env 值是否为凭证引用形。
|
|
37
|
+
* @param value env 声明值(set 面单值)
|
|
38
|
+
* @returns 三态解析结果——'none' 字面放行 / 'ref' 交宿主展开 / 'invalid'
|
|
39
|
+
* 前缀命中而名空(调用方以 CREDENTIALS_ENV_REF_INVALID 响亮拒)
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseCredentialEnvRef(value: string): CredentialEnvRef;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 凭证 env 引用形(03 §10.9 注入腿——c-4 落码批)。
|
|
3
|
+
*
|
|
4
|
+
* 词面:`@credentials:<name>`(值位整串精确匹配——sigil 前缀 + 凭证名)。
|
|
5
|
+
* 用户在 MCP/LSP server config 的 env 声明里以引用形代替明文:
|
|
6
|
+
* `{ "GITHUB_TOKEN": "@credentials:github-token" }`——配置与 durable 面恒
|
|
7
|
+
* 只见引用形原文,明文值只在 spawn 时刻经宿主展开进子进程环境(exec
|
|
8
|
+
* buildChildEnv 单点——模型面/插件码面/工具结果结构性不见值)。
|
|
9
|
+
*
|
|
10
|
+
* 本文件是词面**单源**(跨模块契约词汇:exec 执法消费 + credentials
|
|
11
|
+
* resolver 消费 + 用户 config 书写三方法源):放 contracts 使两消费方均
|
|
12
|
+
* 零新 DAG 边(exec 与 credentials 均既有 contracts 边)。纯数据/纯函数、
|
|
13
|
+
* jiti 可载——与 api.ts 同族纪律。
|
|
14
|
+
*
|
|
15
|
+
* v1 无转义形:以 `@credentials:` 起头的 env 值一律视为引用形(该形在
|
|
16
|
+
* env 值位无正当字面用途——逃生口挂账不需要)。
|
|
17
|
+
*/
|
|
18
|
+
/** 引用形 sigil 前缀(含冒号——`@credentials:`;名 = 前缀后的非空余段) */
|
|
19
|
+
export const CREDENTIALS_ENV_REF_PREFIX = '@credentials:';
|
|
20
|
+
/**
|
|
21
|
+
* 解析 env 值是否为凭证引用形。
|
|
22
|
+
* @param value env 声明值(set 面单值)
|
|
23
|
+
* @returns 三态解析结果——'none' 字面放行 / 'ref' 交宿主展开 / 'invalid'
|
|
24
|
+
* 前缀命中而名空(调用方以 CREDENTIALS_ENV_REF_INVALID 响亮拒)
|
|
25
|
+
*/
|
|
26
|
+
export function parseCredentialEnvRef(value) {
|
|
27
|
+
if (!value.startsWith(CREDENTIALS_ENV_REF_PREFIX)) {
|
|
28
|
+
return { kind: 'none' };
|
|
29
|
+
}
|
|
30
|
+
const name = value.slice(CREDENTIALS_ENV_REF_PREFIX.length);
|
|
31
|
+
return name === '' ? { kind: 'invalid' } : { kind: 'ref', name };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=env-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-ref.js","sourceRoot":"","sources":["../../../../../src/contracts/env-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,eAAe,CAAC;AAW1D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 错误码注册表与单一错误基类(02 篇 §5.3 错误码族规范;07 篇 §8 表 #9 定名)。
|
|
3
|
+
*
|
|
4
|
+
* 四条族规范(02 §5.3):
|
|
5
|
+
* 1. 形态:字符串错误码(SCREAMING_SNAKE + 模块前缀族),不搞兼容、定死一条路线;
|
|
6
|
+
* 2. 注册目录:错误码与事件类型同一纪律——contracts 显式注册、运行时可枚举、
|
|
7
|
+
* CI 校验抛出/写入点一致;插件扩展错误码同样显式注册,禁止字符串字面量散落;
|
|
8
|
+
* 3. 进程内载体:全仓单基类 BaseError(Error 子类,{ code, message, cause? })——
|
|
9
|
+
* 类不是词汇、码才是身份;禁止每码一类,catch 一律按 code 分派;
|
|
10
|
+
* 4. durable 事件内一律写码:错误信息 = code + 人读 message(日志自描述)。
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* 全仓单一错误基类(07 篇 §8 表 #9 定名,2026-09-05 冷读闸补定)。
|
|
14
|
+
*
|
|
15
|
+
* 用法约定:catch 一律按 `err instanceof BaseError && err.code === 'XXX'` 分派
|
|
16
|
+
* (或直接读 code 字段判别——码才是身份,类只作载体);禁止为单个错误码派生子类。
|
|
17
|
+
*/
|
|
18
|
+
export declare class BaseError extends Error {
|
|
19
|
+
/** 错误码身份(SCREAMING_SNAKE + 模块前缀,注册表成员) */
|
|
20
|
+
readonly code: string;
|
|
21
|
+
/**
|
|
22
|
+
* @param code 错误码(须已在注册表——本构造器不拦截,注册纪律由写入点与 CI 执法)
|
|
23
|
+
* @param message 人读错误信息(与 code 一道进 durable 事件的错误腿)
|
|
24
|
+
* @param options.cause 底层异常(可选;Error 原生 cause 语义)
|
|
25
|
+
*/
|
|
26
|
+
constructor(code: string, message: string, options?: {
|
|
27
|
+
cause?: unknown;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/** 错误码目录条目(可枚举目录 = 注册表值形态) */
|
|
31
|
+
export interface ErrorCodeInfo {
|
|
32
|
+
/** 错误码(SCREAMING_SNAKE + 模块前缀) */
|
|
33
|
+
code: string;
|
|
34
|
+
/** 归属模块(宿主件名或插件 id)——CI 对账「抛出/写入点一致」的依据 */
|
|
35
|
+
module: string;
|
|
36
|
+
/** 中文语义描述(生成目录用) */
|
|
37
|
+
description: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 错误码前缀族明列(02 篇 §5.3 #1)——文档性常量,供注册面校验与 CI 目录生成;
|
|
41
|
+
* 'HOST_' 系装配根码族(单活跃机 HOST_DATA_DIR_BUSY 等,07 篇 §1 定名位)。
|
|
42
|
+
*/
|
|
43
|
+
export declare const ERROR_CODE_PREFIXES: readonly ["TOOL_", "FS_", "SESSION_", "SANDBOX_", "LLM_", "EXEC_", "PROVIDER_", "APPROVAL_", "CHANNEL_", "WEB_", "CONTEXT_", "SKILLS_", "PLUGIN_", "HOST_", "PERSIST_", "API_", "AGENT_", "SDK_", "SCHEDULER_", "GOAL_", "SUBAGENT_", "JOB_", "TRIGGER_", "CREDENTIALS_", "DANGER_", "UI_"];
|
|
44
|
+
/**
|
|
45
|
+
* 注册错误码(宿主件落码批与插件装载面的统一入口)。
|
|
46
|
+
*
|
|
47
|
+
* 同码重复注册即抛(fail-loud——防两模块抢码/插件伪造宿主码;冲突属装配期
|
|
48
|
+
* 执法,归 host 码族 HOST_ERROR_CODE_CONFLICT)。
|
|
49
|
+
*/
|
|
50
|
+
export declare function registerErrorCodes(infos: readonly ErrorCodeInfo[]): void;
|
|
51
|
+
/** 判别错误码是否已注册(catch 面 code 分派前的目录查询) */
|
|
52
|
+
export declare function isKnownErrorCode(code: string): boolean;
|
|
53
|
+
/** 错误码目录条目查询(未注册返回 undefined) */
|
|
54
|
+
export declare function getErrorCodeInfo(code: string): ErrorCodeInfo | undefined;
|
|
55
|
+
/** 全量目录枚举(生成目录 / CI 校验用) */
|
|
56
|
+
export declare function listErrorCodes(): ErrorCodeInfo[];
|