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 @@
|
|
|
1
|
+
{"version":3,"file":"wire-core.js","sourceRoot":"","sources":["../../../../../../src/channels/sdk/wire-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* channels 件聚合工厂(L4 宿主固定件——02 篇席 10;批 10a 通道核)。
|
|
3
|
+
*
|
|
4
|
+
* 组合四件:SessionChannels(多会话注册/焦点/重画)+ CommandRegistry(命令面)
|
|
5
|
+
* + UiCore(七原语分发核)+ AskQueue(提问队列)。后端(UiBackend)经
|
|
6
|
+
* addBackend 注入——TUI 实装批接线 pi-tui、webui 件同面接入;核零 pi-tui
|
|
7
|
+
* import(件分两面定形——07 §4.1 channels 纵切批注记)。
|
|
8
|
+
*
|
|
9
|
+
* host 装配序(批 12):createChannels → addBackend(tui) → registerSession/
|
|
10
|
+
* focus(TUI 启动会话策略——07 §5)→ conversation 侧 per-run sink 汇入 emit。
|
|
11
|
+
*/
|
|
12
|
+
import type { ApprovalAskAnswer, ApprovalAskRequest, AskKind, ChannelsOptions, CommandHandler, CommandSpec, NotifyLevel, SessionEnvelope, UiAskOptions, UiBackend, UiInputOptions, UiSelectChoice } from './types.js';
|
|
13
|
+
import { CommandRegistry } from './commands.js';
|
|
14
|
+
import type { Disposer } from '../context/index.js';
|
|
15
|
+
/** channels 通道核服务面(核级 API 一律显式 sessionId——ctx 级包装归 host 批) */
|
|
16
|
+
export interface ChannelsService<TProjection> {
|
|
17
|
+
/** 命令面(注册/查询/解析/分发——后写胜出) */
|
|
18
|
+
readonly commands: CommandRegistry;
|
|
19
|
+
/** 后端管理(多后端扇出:notify 恒扇出、阻塞原语竞速、信封路由——宿主域装配独占) */
|
|
20
|
+
addBackend(backend: UiBackend<TProjection>): void;
|
|
21
|
+
removeBackend(id: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* 插件域后端注册(03 §2.7 后端 id 分域律——U3 批 U3-3):同 id 后写胜出
|
|
24
|
+
* (upsert 原位顶替,扇出序稳定);撞宿主域 id 拒 `CHANNEL_BACKEND_RESERVED`
|
|
25
|
+
* (宿主后端结构性不可顶替——07 §4 兜底通道恒在场条款的执法承载)。
|
|
26
|
+
* 返回 disposer 三律②——仅当仍是本后端时摘除(同 id 后写顶替后旧
|
|
27
|
+
* disposer 调用为无操作)。与 addBackend 分域分立:插件面无 removeBackend,
|
|
28
|
+
* 摘除只经 disposer。
|
|
29
|
+
*/
|
|
30
|
+
registerPluginBackend(backend: UiBackend<never>): Disposer;
|
|
31
|
+
/** 插件域在册后端 id 清单(所有权读面——观测/测试;宿主域 id 装配侧自明) */
|
|
32
|
+
listPluginBackendIds(): readonly string[];
|
|
33
|
+
/** 会话管理(unregisterSession 联动提问队列收口 + widget 槽清空) */
|
|
34
|
+
registerSession(sessionId: string): void;
|
|
35
|
+
unregisterSession(sessionId: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* 在册判定(ix-2——ctx.ui 锚时效真源):未 registerSession 或已
|
|
38
|
+
* unregisterSession = false。阻塞原语受理时检查——陈年锚晚到不悬死。
|
|
39
|
+
*/
|
|
40
|
+
hasSession(sessionId: string): boolean;
|
|
41
|
+
/** 焦点切换(清屏重画——拉投影经装配注入回调) */
|
|
42
|
+
focus(sessionId: string): Promise<void>;
|
|
43
|
+
isFocused(sessionId: string): boolean;
|
|
44
|
+
/** 当前聚焦会话(null = 焦点空悬) */
|
|
45
|
+
readonly focusedId: string | null;
|
|
46
|
+
/** 活体信封分流入口(conversation 驱动侧 per-run sink 汇入处——按聚焦位路由扇出) */
|
|
47
|
+
emit(env: SessionEnvelope): void;
|
|
48
|
+
notify(sessionId: string, message: string, opts?: {
|
|
49
|
+
level?: NotifyLevel;
|
|
50
|
+
}): void;
|
|
51
|
+
confirm(sessionId: string, message: string, opts?: UiAskOptions): Promise<boolean>;
|
|
52
|
+
select(sessionId: string, message: string, choices: readonly UiSelectChoice[], opts?: UiAskOptions): Promise<string>;
|
|
53
|
+
input(sessionId: string, message: string, opts?: UiInputOptions): Promise<string>;
|
|
54
|
+
/** 审批 ask(07 §4.3 提问队列条款——与阻塞三件同队;safety 侧经装配桥接) */
|
|
55
|
+
askApproval(sessionId: string, request: ApprovalAskRequest, opts?: UiAskOptions): Promise<ApprovalAskAnswer>;
|
|
56
|
+
setStatus(sessionId: string, status: string): void;
|
|
57
|
+
setWidget(sessionId: string, node: unknown | null): void;
|
|
58
|
+
hasAudience(): boolean;
|
|
59
|
+
/** 提问队列观察面(诊断/测试) */
|
|
60
|
+
pendingAsks(sessionId: string): readonly AskKind[];
|
|
61
|
+
registerCommand(name: string, handler: CommandHandler, description?: string): Disposer;
|
|
62
|
+
dispatchCommand(input: string, sessionId?: string): Promise<boolean>;
|
|
63
|
+
listCommands(): readonly CommandSpec[];
|
|
64
|
+
}
|
|
65
|
+
/** 通道核工厂(投影类型 TProjection 由装配侧钉——不 import session 的边表执法) */
|
|
66
|
+
export declare function createChannels<TProjection>(opts?: ChannelsOptions<TProjection>): ChannelsService<TProjection>;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* channels 件聚合工厂(L4 宿主固定件——02 篇席 10;批 10a 通道核)。
|
|
3
|
+
*
|
|
4
|
+
* 组合四件:SessionChannels(多会话注册/焦点/重画)+ CommandRegistry(命令面)
|
|
5
|
+
* + UiCore(七原语分发核)+ AskQueue(提问队列)。后端(UiBackend)经
|
|
6
|
+
* addBackend 注入——TUI 实装批接线 pi-tui、webui 件同面接入;核零 pi-tui
|
|
7
|
+
* import(件分两面定形——07 §4.1 channels 纵切批注记)。
|
|
8
|
+
*
|
|
9
|
+
* host 装配序(批 12):createChannels → addBackend(tui) → registerSession/
|
|
10
|
+
* focus(TUI 启动会话策略——07 §5)→ conversation 侧 per-run sink 汇入 emit。
|
|
11
|
+
*/
|
|
12
|
+
import { BaseError } from '../contracts/index.js';
|
|
13
|
+
import { CommandRegistry } from './commands.js';
|
|
14
|
+
import { AskQueue } from './ask-queue.js';
|
|
15
|
+
import { UiCore } from './ui-core.js';
|
|
16
|
+
import { SessionChannels } from './registry.js';
|
|
17
|
+
/** 通道核工厂(投影类型 TProjection 由装配侧钉——不 import session 的边表执法) */
|
|
18
|
+
export function createChannels(opts = {}) {
|
|
19
|
+
const backends = [];
|
|
20
|
+
// 插件域后端集合(03 §2.7 分域律——U3 批 U3-3):upsert/撞名/disposer 全只
|
|
21
|
+
// 在本域内匹配,宿主域结构性不可及。插件实装形 = UiBackend<never>——投影
|
|
22
|
+
// 泛型宿主装配钉入,插件后端走信封驱动呈现、不参与投影重画(03 §2.2
|
|
23
|
+
// registerUiBackend 定形注记;SDK/webui 后端同形先例)
|
|
24
|
+
const pluginBackends = [];
|
|
25
|
+
// 全量扇出视图(宿主域在前、插件域在后——注册序内稳定):插件域 never 形
|
|
26
|
+
// 经方法双变结构兼容并入 TProjection 序列(onRepaint 等均方法语法声明);
|
|
27
|
+
// UiCore 持 never 形以保自身非泛型——边界处 as(单域时代同洞)
|
|
28
|
+
const allBackends = () => [...backends, ...pluginBackends];
|
|
29
|
+
const backendsForCore = () => allBackends();
|
|
30
|
+
const askQueue = new AskQueue();
|
|
31
|
+
const uiCore = new UiCore(backendsForCore, askQueue, opts.onApprovalAlways);
|
|
32
|
+
const commands = new CommandRegistry();
|
|
33
|
+
const registry = new SessionChannels(opts.fetchProjection, (sessionId, projection) => {
|
|
34
|
+
// repaint 扇出:带上该会话当前 widget 槽值(07 §4.3 单槽重放)——双域合流
|
|
35
|
+
const widget = uiCore.widgetOf(sessionId);
|
|
36
|
+
for (const b of allBackends())
|
|
37
|
+
b.onRepaint?.(sessionId, projection, widget);
|
|
38
|
+
});
|
|
39
|
+
// 件 8 /history 注册面(07 §4.1 条款:history() 注入在场即注册、缺席不注册
|
|
40
|
+
// 不虚报——真源 = 聚焦会话 → 拉全量 durable 正文投影 → 扇出后端 openHistory;
|
|
41
|
+
// 生产数据源接线归批 12 host 装配)
|
|
42
|
+
if (opts.history !== undefined) {
|
|
43
|
+
const fetchHistory = opts.history;
|
|
44
|
+
commands.register('history', async () => {
|
|
45
|
+
const sessionId = registry.focusedId;
|
|
46
|
+
if (sessionId === null)
|
|
47
|
+
return; // 焦点空悬——无回看对象(静默返回不虚报)
|
|
48
|
+
const messages = await fetchHistory(sessionId);
|
|
49
|
+
for (const b of allBackends())
|
|
50
|
+
b.openHistory?.(sessionId, messages);
|
|
51
|
+
}, '全屏回看会话历史');
|
|
52
|
+
}
|
|
53
|
+
// /memory 注册面(06 §7 形态定形注①——memory 注入在场即注册、缺席不注册
|
|
54
|
+
// 不虚报;同 /history 注册面律):管理面是全局面无会话归属,扇出后端
|
|
55
|
+
// openMemory(零参——材料后端自持);全体 falsy(后端不支持或件缺席)时
|
|
56
|
+
// notify 降级提示(warn 档——不静默假装已开);无观众后端时静默返回
|
|
57
|
+
// (notify 扇出无人接帧——与焦点空悬同族的不虚报位)
|
|
58
|
+
if (opts.memory !== undefined) {
|
|
59
|
+
commands.register('memory', async () => {
|
|
60
|
+
let opened = false;
|
|
61
|
+
for (const b of allBackends()) {
|
|
62
|
+
if (b.openMemory?.() === true)
|
|
63
|
+
opened = true; // 任一后端已开即成功(先开胜出)
|
|
64
|
+
}
|
|
65
|
+
if (!opened) {
|
|
66
|
+
// notify 非阻塞不分会话呈现位(service.notify 同律——uiCore 直扇出)
|
|
67
|
+
uiCore.notify('当前通道不支持记忆管理面(或 memory 件未装载)', { level: 'warn' });
|
|
68
|
+
}
|
|
69
|
+
}, '记忆管理面(冻结/忘掉/恢复/导出)');
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
commands,
|
|
73
|
+
addBackend(backend) {
|
|
74
|
+
backends.push(backend);
|
|
75
|
+
},
|
|
76
|
+
removeBackend(id) {
|
|
77
|
+
const index = backends.findIndex((b) => b.id === id);
|
|
78
|
+
if (index !== -1)
|
|
79
|
+
backends.splice(index, 1);
|
|
80
|
+
},
|
|
81
|
+
registerPluginBackend(backend) {
|
|
82
|
+
// 分域律执法(03 §2.7):撞宿主域 id 顶替拒——比保留 id 名单更根治
|
|
83
|
+
// (名单漏一项即穿,分域无此面;07 §4 宿主后端恒在场条款承载)
|
|
84
|
+
if (backends.some((b) => b.id === backend.id)) {
|
|
85
|
+
throw new BaseError('CHANNEL_BACKEND_RESERVED', `后端 id「${backend.id}」是宿主域后端——插件结构性不可顶替(03 §2.7 分域律;07 §4 宿主后端恒在场),请换 id 注册`);
|
|
86
|
+
}
|
|
87
|
+
// 插件域内按 id 后写胜出(upsert 原位顶替——扇出序稳定不移尾;同
|
|
88
|
+
// registerCommand 换装哲学:同 id 顶替 = 显式换装后端正道)
|
|
89
|
+
const index = pluginBackends.findIndex((b) => b.id === backend.id);
|
|
90
|
+
if (index === -1)
|
|
91
|
+
pluginBackends.push(backend);
|
|
92
|
+
else
|
|
93
|
+
pluginBackends[index] = backend;
|
|
94
|
+
// disposer 三律②:仅当仍是本后端时摘除(indexOf 身份闸——同 id 后写
|
|
95
|
+
// 顶替后旧 disposer 调用为无操作)
|
|
96
|
+
return () => {
|
|
97
|
+
const at = pluginBackends.indexOf(backend);
|
|
98
|
+
if (at !== -1)
|
|
99
|
+
pluginBackends.splice(at, 1);
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
listPluginBackendIds() {
|
|
103
|
+
return pluginBackends.map((b) => b.id);
|
|
104
|
+
},
|
|
105
|
+
registerSession(sessionId) {
|
|
106
|
+
registry.registerSession(sessionId);
|
|
107
|
+
},
|
|
108
|
+
unregisterSession(sessionId) {
|
|
109
|
+
registry.unregisterSession(sessionId);
|
|
110
|
+
uiCore.closeSession(sessionId);
|
|
111
|
+
},
|
|
112
|
+
hasSession(sessionId) {
|
|
113
|
+
return registry.has(sessionId);
|
|
114
|
+
},
|
|
115
|
+
focus(sessionId) {
|
|
116
|
+
return registry.focus(sessionId);
|
|
117
|
+
},
|
|
118
|
+
isFocused(sessionId) {
|
|
119
|
+
return registry.isFocused(sessionId);
|
|
120
|
+
},
|
|
121
|
+
get focusedId() {
|
|
122
|
+
return registry.focusedId;
|
|
123
|
+
},
|
|
124
|
+
emit(env) {
|
|
125
|
+
const focused = registry.isFocused(env.sessionId);
|
|
126
|
+
// 信封路由双域合流扇出(聚焦全渲染/非聚焦摘要行——形态归后端)
|
|
127
|
+
for (const b of allBackends())
|
|
128
|
+
b.onEnvelope?.(env, focused);
|
|
129
|
+
},
|
|
130
|
+
notify(sessionId, message, notifyOpts) {
|
|
131
|
+
// notify 非阻塞不分会话呈现位——sessionId 位保留给呈现侧路由(后端自决)
|
|
132
|
+
void sessionId;
|
|
133
|
+
uiCore.notify(message, notifyOpts);
|
|
134
|
+
},
|
|
135
|
+
confirm(sessionId, message, askOpts) {
|
|
136
|
+
return uiCore.confirm(sessionId, message, askOpts);
|
|
137
|
+
},
|
|
138
|
+
select(sessionId, message, choices, askOpts) {
|
|
139
|
+
return uiCore.select(sessionId, message, choices, askOpts);
|
|
140
|
+
},
|
|
141
|
+
input(sessionId, message, askOpts) {
|
|
142
|
+
return uiCore.input(sessionId, message, askOpts);
|
|
143
|
+
},
|
|
144
|
+
askApproval(sessionId, request, askOpts) {
|
|
145
|
+
return uiCore.askApproval(sessionId, request, askOpts);
|
|
146
|
+
},
|
|
147
|
+
setStatus(sessionId, status) {
|
|
148
|
+
uiCore.setStatus(sessionId, status);
|
|
149
|
+
},
|
|
150
|
+
setWidget(sessionId, node) {
|
|
151
|
+
uiCore.setWidget(sessionId, node);
|
|
152
|
+
},
|
|
153
|
+
hasAudience() {
|
|
154
|
+
return uiCore.hasAudience();
|
|
155
|
+
},
|
|
156
|
+
pendingAsks(sessionId) {
|
|
157
|
+
return uiCore.pending(sessionId);
|
|
158
|
+
},
|
|
159
|
+
registerCommand(name, handler, description) {
|
|
160
|
+
return commands.register(name, handler, description);
|
|
161
|
+
},
|
|
162
|
+
dispatchCommand(input, sessionId) {
|
|
163
|
+
return commands.dispatch(input, sessionId);
|
|
164
|
+
},
|
|
165
|
+
listCommands() {
|
|
166
|
+
return commands.list();
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../../src/channels/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 三源合一补全器(07 §4.1 引擎节件 6(组件与呈现装配件)):token 判据单源 + 前缀路由。
|
|
3
|
+
*
|
|
4
|
+
* 路由序(@ 优先 → 命令名 → 参数段):
|
|
5
|
+
* - @ 前缀 token → mention 源(任意位置——命令参数段内也可 mention 文件);
|
|
6
|
+
* - 首逻辑行行首 / 前缀 token(光标在首 token 内)→ 命令名源;
|
|
7
|
+
* - 首行 /xxx 命令名已终结后的 token → 命令参数源(带命令名上下文);
|
|
8
|
+
* - 其余 null(普通对话文本不补——弹层不显)。
|
|
9
|
+
*
|
|
10
|
+
* 源注入面(缺省无源——装配按需接):命令名源注入查询函数(装配接
|
|
11
|
+
* CommandRegistry.list())、命令参数源注入条目(不发明注册面——03 §2.2
|
|
12
|
+
* registerCommand 签名三参数无 schema)、@ 文件段源实机行走归装配批。
|
|
13
|
+
*/
|
|
14
|
+
import type { AutocompleteContext, AutocompleteItem, AutocompleteResult } from './provider.js';
|
|
15
|
+
/** 三源注入面 */
|
|
16
|
+
export interface AutocompleteSources {
|
|
17
|
+
/** 命令名源(query = 去斜杠前缀;返回已过滤条目) */
|
|
18
|
+
readonly commands?: (query: string) => readonly AutocompleteItem[];
|
|
19
|
+
/** 命令参数源(带命令名上下文;query = 当前参数 token 原文) */
|
|
20
|
+
readonly commandArguments?: (command: string, query: string) => readonly AutocompleteItem[];
|
|
21
|
+
/** @-mention 源(query = 去 @ 前缀;文件段实机行走归装配批) */
|
|
22
|
+
readonly mentions?: (query: string) => readonly AutocompleteItem[];
|
|
23
|
+
}
|
|
24
|
+
/** 三源合一补全器 */
|
|
25
|
+
export declare class CombinedAutocompleteProvider {
|
|
26
|
+
private readonly sources;
|
|
27
|
+
constructor(sources?: AutocompleteSources);
|
|
28
|
+
/** 取补全(无 token / 无对应源 / 源空 → null——弹层不显) */
|
|
29
|
+
getCompletions(context: AutocompleteContext): AutocompleteResult | null;
|
|
30
|
+
/** 源结果收口(空源 / 空条目统一 null) */
|
|
31
|
+
private collect;
|
|
32
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { firstTokenRange, tokenAtCursor } from './token.js';
|
|
2
|
+
/** 三源合一补全器 */
|
|
3
|
+
export class CombinedAutocompleteProvider {
|
|
4
|
+
sources;
|
|
5
|
+
constructor(sources = {}) {
|
|
6
|
+
this.sources = sources;
|
|
7
|
+
}
|
|
8
|
+
/** 取补全(无 token / 无对应源 / 源空 → null——弹层不显) */
|
|
9
|
+
getCompletions(context) {
|
|
10
|
+
const line = context.lines[context.cursorLine] ?? '';
|
|
11
|
+
const token = tokenAtCursor(line, context.cursorCol);
|
|
12
|
+
if (token === null || token.text === '')
|
|
13
|
+
return null; // 无 token 段——不补
|
|
14
|
+
// 路由一:@ 前缀(任意位置——命令参数段内也可 mention 文件)
|
|
15
|
+
if (token.text.startsWith('@')) {
|
|
16
|
+
return this.collect(this.sources.mentions?.(token.text.slice(1)), token.start, token.end);
|
|
17
|
+
}
|
|
18
|
+
// 命令段判据只在首逻辑行(多行输入的斜杠命令 = 首行起手式)
|
|
19
|
+
if (context.cursorLine !== 0)
|
|
20
|
+
return null;
|
|
21
|
+
const first = firstTokenRange(line);
|
|
22
|
+
if (first === null)
|
|
23
|
+
return null; // 行首无 token(光标 token 不在行首矛盾——防御位)
|
|
24
|
+
if (token.start === first.start) {
|
|
25
|
+
// 路由二:光标就在首 token 内且 / 前缀——命令名段
|
|
26
|
+
if (!token.text.startsWith('/'))
|
|
27
|
+
return null; // 首 token 非命令——普通文本不补
|
|
28
|
+
return this.collect(this.sources.commands?.(token.text.slice(1)), token.start, token.end);
|
|
29
|
+
}
|
|
30
|
+
// 路由三:首 token 是已终结命令(/xxx)——光标 token 属参数段
|
|
31
|
+
const firstText = line.slice(first.start, first.end);
|
|
32
|
+
if (!firstText.startsWith('/'))
|
|
33
|
+
return null; // 行首非命令——后续 token 也不补
|
|
34
|
+
return this.collect(this.sources.commandArguments?.(firstText.slice(1), token.text), token.start, token.end);
|
|
35
|
+
}
|
|
36
|
+
/** 源结果收口(空源 / 空条目统一 null) */
|
|
37
|
+
collect(items, replaceStart, replaceEnd) {
|
|
38
|
+
if (items === undefined || items.length === 0)
|
|
39
|
+
return null;
|
|
40
|
+
return { items, replaceStart, replaceEnd };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=autocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../../../../../../src/channels/tui/autocomplete/autocomplete.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAY5D,cAAc;AACd,MAAM,OAAO,4BAA4B;IACtB,OAAO,CAAsB;IAE9C,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,4CAA4C;IAC5C,cAAc,CAAC,OAA4B;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,CAAC,gBAAgB;QAEtE,sCAAsC;QACtC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5F,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,kCAAkC;QACnE,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,gCAAgC;YAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,sBAAsB;YACpE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5F,CAAC;QACD,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,sBAAsB;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/G,CAAC;IAED,6BAA6B;IACrB,OAAO,CACb,KAA8C,EAC9C,YAAoB,EACpB,UAAkB;QAElB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AutocompleteItem } from './provider.js';
|
|
2
|
+
/** 源构造选项 */
|
|
3
|
+
export interface FileMentionSourceOptions {
|
|
4
|
+
/** 相对段的锚定根(装配注入 cwd) */
|
|
5
|
+
readonly basePath: string;
|
|
6
|
+
/** 条目帽(缺省 50) */
|
|
7
|
+
readonly maxItems?: number;
|
|
8
|
+
}
|
|
9
|
+
/** @ 文件段补全源:`mentions` 源协议面的实机适配(注入 autocomplete.mentions) */
|
|
10
|
+
export declare class FileMentionSource {
|
|
11
|
+
private readonly basePath;
|
|
12
|
+
private readonly maxItems;
|
|
13
|
+
constructor(options: FileMentionSourceOptions);
|
|
14
|
+
/** 源适配面(query = 去 @ 前缀的 token 内文——可能带引号头) */
|
|
15
|
+
readonly get: (query: string) => readonly AutocompleteItem[];
|
|
16
|
+
/** 列举目录解析(相对段对 basePath;~/ 家目录;/ 起绝对位) */
|
|
17
|
+
private resolveSearchDir;
|
|
18
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ 文件段补全源(07 §4.1 补全三合一第三源——mentions 源的实机行走件)。
|
|
3
|
+
*
|
|
4
|
+
* 语义承 berry 蓝本 getFileSuggestions 的 v1 子集:
|
|
5
|
+
* - **目录列举 + 前缀过滤**(非模糊行走——fuzzy 全库发现随 fd 批挂账,
|
|
6
|
+
* `BERRY_AGENT_FD_PATH` 环境变量是其消费点、本批不触);
|
|
7
|
+
* - 路径段解析:`src/ap` → 列 `src` 滤 `ap`;尾 `/` = 列该目录;相对段
|
|
8
|
+
* 对 basePath(装配注入 cwd)、`~/` 展开家目录、`/` 起绝对位列举;
|
|
9
|
+
* - `.git` 跳过(版本库内脏);符号链指目录归类为目录(label 尾 `/`
|
|
10
|
+
* 续深——断链/不可及跳过);
|
|
11
|
+
* - 排序:目录优先、再 label 字典序;条目帽防大目录全量;
|
|
12
|
+
* - **引号形**(provider 协议条款):路径含空白或前缀已引号 → replacement
|
|
13
|
+
* 以 `@"…"` 包裹防尾空格击穿(tokenAtCursor 引号感知整 token 的续补位)。
|
|
14
|
+
*
|
|
15
|
+
* 件内零缓存(同一目录反复列举随实机批定 cache 策略);同步 IO——
|
|
16
|
+
* mentions 源协议面是同步(单目录列举毫秒级,弹层窗口 10 行消费帽内)。
|
|
17
|
+
*/
|
|
18
|
+
import { readdirSync, statSync } from 'node:fs';
|
|
19
|
+
import { homedir } from 'node:os';
|
|
20
|
+
import * as path from 'node:path';
|
|
21
|
+
/** 条目帽缺省(源侧规模锁——弹层自身另有窗口滚动帽) */
|
|
22
|
+
const DEFAULT_MAX_ITEMS = 50;
|
|
23
|
+
/** 引号前缀解析(`"my f` / `"my file.txt"` → 内文;`~/` 形原样) */
|
|
24
|
+
function parseQuotedPrefix(query) {
|
|
25
|
+
const head = query[0];
|
|
26
|
+
if (head === '"' || head === "'") {
|
|
27
|
+
let inner = query.slice(1);
|
|
28
|
+
if (inner.endsWith(head))
|
|
29
|
+
inner = inner.slice(0, -1); // 已敲闭引号——内文为准
|
|
30
|
+
return { rawPrefix: inner, isQuoted: true };
|
|
31
|
+
}
|
|
32
|
+
return { rawPrefix: query, isQuoted: false };
|
|
33
|
+
}
|
|
34
|
+
/** @ 文件段补全源:`mentions` 源协议面的实机适配(注入 autocomplete.mentions) */
|
|
35
|
+
export class FileMentionSource {
|
|
36
|
+
basePath;
|
|
37
|
+
maxItems;
|
|
38
|
+
constructor(options) {
|
|
39
|
+
this.basePath = options.basePath;
|
|
40
|
+
this.maxItems = options.maxItems ?? DEFAULT_MAX_ITEMS;
|
|
41
|
+
}
|
|
42
|
+
/** 源适配面(query = 去 @ 前缀的 token 内文——可能带引号头) */
|
|
43
|
+
get = (query) => {
|
|
44
|
+
const { rawPrefix, isQuoted } = parseQuotedPrefix(query);
|
|
45
|
+
// '~' 裸形与 '~/' 同为家目录根列举(filePart 空)
|
|
46
|
+
const isHomeRoot = rawPrefix === '~' || rawPrefix === '~/';
|
|
47
|
+
const slash = rawPrefix.lastIndexOf('/');
|
|
48
|
+
const dirPart = isHomeRoot ? '~/' : slash >= 0 ? rawPrefix.slice(0, slash + 1) : '';
|
|
49
|
+
const filePart = isHomeRoot ? '' : slash >= 0 ? rawPrefix.slice(slash + 1) : rawPrefix;
|
|
50
|
+
const searchDir = this.resolveSearchDir(dirPart);
|
|
51
|
+
if (searchDir === null)
|
|
52
|
+
return []; // 不可解析形态
|
|
53
|
+
let entries;
|
|
54
|
+
try {
|
|
55
|
+
entries = readdirSync(searchDir, { withFileTypes: true });
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return []; // 缺目录 / 不可及——空集(补全静默退场)
|
|
59
|
+
}
|
|
60
|
+
const lowerPrefix = filePart.toLowerCase();
|
|
61
|
+
const items = [];
|
|
62
|
+
for (const entry of entries) {
|
|
63
|
+
if (entry.name === '.git')
|
|
64
|
+
continue; // 版本库内脏
|
|
65
|
+
if (!entry.name.toLowerCase().startsWith(lowerPrefix))
|
|
66
|
+
continue;
|
|
67
|
+
// 目录归类:符号链补一次 stat(断链/竞态不可及——跳过)
|
|
68
|
+
let isDirectory = entry.isDirectory();
|
|
69
|
+
if (!isDirectory && entry.isSymbolicLink()) {
|
|
70
|
+
try {
|
|
71
|
+
isDirectory = statSync(path.join(searchDir, entry.name)).isDirectory();
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// replacement 保用户敲的 dirPart 形(~/ 与绝对形原样续接)
|
|
78
|
+
const pathValue = `${dirPart}${entry.name}${isDirectory ? '/' : ''}`;
|
|
79
|
+
items.push({
|
|
80
|
+
label: `${entry.name}${isDirectory ? '/' : ''}`,
|
|
81
|
+
replacement: `@${isQuoted || /\s/.test(pathValue) ? `"${pathValue}"` : pathValue}`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// 目录优先、再 label 字典序(承 berry 排序语义)
|
|
85
|
+
items.sort((a, b) => {
|
|
86
|
+
const aDir = a.label.endsWith('/');
|
|
87
|
+
const bDir = b.label.endsWith('/');
|
|
88
|
+
if (aDir !== bDir)
|
|
89
|
+
return aDir ? -1 : 1;
|
|
90
|
+
return a.label.localeCompare(b.label);
|
|
91
|
+
});
|
|
92
|
+
return items.slice(0, this.maxItems);
|
|
93
|
+
};
|
|
94
|
+
/** 列举目录解析(相对段对 basePath;~/ 家目录;/ 起绝对位) */
|
|
95
|
+
resolveSearchDir(dirPart) {
|
|
96
|
+
if (dirPart === '' || dirPart === './')
|
|
97
|
+
return path.resolve(this.basePath, dirPart);
|
|
98
|
+
if (dirPart === '~/')
|
|
99
|
+
return homedir();
|
|
100
|
+
if (dirPart.startsWith('~/'))
|
|
101
|
+
return path.resolve(homedir(), dirPart.slice(2));
|
|
102
|
+
if (dirPart.startsWith('/'))
|
|
103
|
+
return path.resolve(dirPart);
|
|
104
|
+
return path.resolve(this.basePath, dirPart);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=file-mentions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-mentions.js","sourceRoot":"","sources":["../../../../../../../src/channels/tui/autocomplete/file-mentions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 补全弹层件(07 §4.1 引擎节件 6(组件与呈现装配件)):候选列表浮层——输入框上方按多行输入件
|
|
3
|
+
* 坐标定位(定位 anchor 由 TuiBackend 锚定注册表承载——批 10e-2 已落;
|
|
4
|
+
* 本件是纯内容——只画列表)。
|
|
5
|
+
*
|
|
6
|
+
* - refresh 驱动:装配层在每次输入变更后调(provider 取补全——无补全弹层
|
|
7
|
+
* 不显);候选窗口 10 行帽 + 高亮跟随滚动;
|
|
8
|
+
* - 键面:↑/↓ 循环换高亮、enter/tab 应用、escape 关本轮(后续输入再 refresh
|
|
9
|
+
* 重开);其余键不消费(穿透回 Editor 继续输入——弹层随下次 refresh 重算);
|
|
10
|
+
* enter 的全量输入穿透律——token 已是高亮项全文时 enter 不消费(穿透提交,
|
|
11
|
+
* 归编辑器——2026-09-13 真模型五轮实测定罪补)、tab 恒应用;
|
|
12
|
+
* - 应用 = 整 token 代换(模型 replaceToken 原语——replacement 含触发前缀
|
|
13
|
+
* 与引号形)。
|
|
14
|
+
*/
|
|
15
|
+
import type { CellBuffer, InputEvent, Region, Renderable } from '../../engine/index.js';
|
|
16
|
+
import type { EditorModel } from '../editor/editor-model.js';
|
|
17
|
+
import type { AutocompleteProvider } from './provider.js';
|
|
18
|
+
/** 弹层件:provider 只读消费 + 模型代换原语调用 */
|
|
19
|
+
export declare class AutocompletePopup implements Renderable {
|
|
20
|
+
private result;
|
|
21
|
+
private activeIndex;
|
|
22
|
+
private windowStart;
|
|
23
|
+
private readonly provider;
|
|
24
|
+
private readonly model;
|
|
25
|
+
constructor(provider: AutocompleteProvider, model: EditorModel);
|
|
26
|
+
/** 弹层在场态(无补全不显) */
|
|
27
|
+
get visible(): boolean;
|
|
28
|
+
/** 高亮下标(测试观测面) */
|
|
29
|
+
get activeItemIndex(): number;
|
|
30
|
+
/** 重取补全(每次输入变更后装配调——无补全自然隐藏) */
|
|
31
|
+
refresh(): void;
|
|
32
|
+
/** 量高:可见条目数(不可见 = 0——浮层不占布局) */
|
|
33
|
+
measure(width: number): number;
|
|
34
|
+
/** 落位:铺底空格 → 可见窗条目行(高亮反色 + 说明右对齐) */
|
|
35
|
+
render(buffer: CellBuffer, region: Region): void;
|
|
36
|
+
/** 事件分发(弹层可见才有意义):↑/↓ / enter / tab / escape,其余穿透 */
|
|
37
|
+
handleEvent(event: InputEvent): boolean;
|
|
38
|
+
/** 高亮循环移动 + 窗口跟随(10 行帽外的条目滚动入窗) */
|
|
39
|
+
private moveActive;
|
|
40
|
+
/** 应用选中项:整 token 代换(模型原语——光标落代换尾) */
|
|
41
|
+
private applySelection;
|
|
42
|
+
/**
|
|
43
|
+
* 全量输入判定:光标 token 现文本 === 高亮项 replacement 全文(弹层可见期
|
|
44
|
+
* 间输入变更必经 refresh 重开——本判定取值恒新鲜,无陈旧区间风险)。
|
|
45
|
+
*/
|
|
46
|
+
private selectionAlreadyTyped;
|
|
47
|
+
}
|