阶段2-断Electron依赖: human-dialog/window-extended/ai-service经HostBridge迁入包, external+transport迁包(session留宿主), 新增check:deps依赖护栏与包README留守清单
This commit is contained in:
1 parent
caa8e19332
commit
3decced268
21 files changed
+505
-236
No files matched your search
@@ -1,11 +1,13 @@
|
||||
import type { FlowDefinition } from "../types";
|
||||
|
||||
/**
|
||||
* 宿主桥(HostBridge 候选,阶段 2 正式化接口)。
|
||||
* 宿主桥(任务 2.1 正式化)。
|
||||
*
|
||||
* 包内个别能力需要宿主数据(目前仅子流程仓库),通过显式 setter 注入,
|
||||
* 包本身不得 import 宿主模块。宿主启动时调用 setSubflowSource()。
|
||||
* 包内能力需要的宿主能力(子流程仓库 / Electron 窗口 / DPI 换算 / 应用配置)
|
||||
* 通过本接口注入,包本身禁止 import "electron" 或宿主模块(见包内依赖检查脚本)。
|
||||
* 宿主启动时调用 setSubflowSource() / setHostBridge()。
|
||||
*/
|
||||
|
||||
export interface SubflowSource {
|
||||
listFlows(): Promise<Array<{ id: string; name: string }>>;
|
||||
getFlow(id: string): Promise<FlowDefinition>;
|
||||
@@ -20,3 +22,48 @@ export function setSubflowSource(source: SubflowSource): void {
|
||||
export function getSubflowSource(): SubflowSource | undefined {
|
||||
return subflowSource;
|
||||
}
|
||||
|
||||
/** 人机交互表单窗口的最小面(能力只用到这些成员,宿主用 BrowserWindow 适配) */
|
||||
export interface HostDialogWindow {
|
||||
isDestroyed(): boolean;
|
||||
destroy(): void;
|
||||
loadURL(url: string): Promise<void>;
|
||||
on(event: "closed", listener: () => void): void;
|
||||
/** 在窗口页面里执行 JS 并取回结果(宿主侧以 userGesture=true 执行) */
|
||||
executeJavaScript(script: string): Promise<unknown>;
|
||||
}
|
||||
|
||||
export interface HostPoint {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
|
||||
/** AI 服务配置(宿主 settings.aiConfig) */
|
||||
export interface HostAiConfig {
|
||||
baseUrl: string;
|
||||
apiKey: string;
|
||||
model: string;
|
||||
visionModel: string;
|
||||
}
|
||||
|
||||
/** 宿主能力桥最小面(决策点 4):dialog 窗口工厂 / DPI 坐标换算 / 配置读取 */
|
||||
export interface HostBridge {
|
||||
/** 创建人机交互表单窗口(human-dialog 用) */
|
||||
createFormWindow(options: { title: string }): HostDialogWindow;
|
||||
/** DIP 逻辑坐标 → 物理像素(window-extended 的鼠标/拖拽坐标换算) */
|
||||
dipToScreenPoint(point: HostPoint): HostPoint;
|
||||
/** 物理像素 → DIP 逻辑坐标 */
|
||||
screenToDipPoint(point: HostPoint): HostPoint;
|
||||
/** 读取 AI 服务配置(ai-service 用) */
|
||||
loadAiConfig(): HostAiConfig;
|
||||
}
|
||||
|
||||
let hostBridge: HostBridge | undefined;
|
||||
|
||||
export function setHostBridge(bridge: HostBridge): void {
|
||||
hostBridge = bridge;
|
||||
}
|
||||
|
||||
export function getHostBridge(): HostBridge | undefined {
|
||||
return hostBridge;
|
||||
}
|
||||
Reference in new issue
Block a user