@whispering233/ai-editor-server 0.0.30 → 0.0.33
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/client-dist/assets/{index-BBkKfUUn.css → index-oxaM6dHH.css} +1 -1
- package/client-dist/assets/index-tfvJfexp.js +523 -0
- package/client-dist/index.html +3 -3
- package/client-dist/provider-icons.svg +54 -0
- package/dist/backup.d.ts +8 -7
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +61 -45
- package/dist/backup.js.map +1 -1
- package/dist/chat-runtime.d.ts +44 -0
- package/dist/chat-runtime.d.ts.map +1 -0
- package/dist/chat-runtime.js +102 -0
- package/dist/chat-runtime.js.map +1 -0
- package/dist/debug.d.ts +1 -1
- package/dist/debug.d.ts.map +1 -1
- package/dist/debug.js +3 -3
- package/dist/debug.js.map +1 -1
- package/dist/http-dispatcher.d.ts +30 -0
- package/dist/http-dispatcher.d.ts.map +1 -0
- package/dist/http-dispatcher.js +101 -0
- package/dist/http-dispatcher.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -1
- package/dist/index.js.map +1 -1
- package/dist/last-project.d.ts +7 -0
- package/dist/last-project.d.ts.map +1 -0
- package/dist/last-project.js +48 -0
- package/dist/last-project.js.map +1 -0
- package/dist/middleware/project.d.ts.map +1 -1
- package/dist/middleware/project.js +4 -0
- package/dist/middleware/project.js.map +1 -1
- package/dist/model-runtime.d.ts +41 -0
- package/dist/model-runtime.d.ts.map +1 -0
- package/dist/model-runtime.js +81 -0
- package/dist/model-runtime.js.map +1 -0
- package/dist/routes/chat.d.ts +35 -72
- package/dist/routes/chat.d.ts.map +1 -1
- package/dist/routes/chat.js +390 -373
- package/dist/routes/chat.js.map +1 -1
- package/dist/routes/names.js +2 -2
- package/dist/routes/project.d.ts.map +1 -1
- package/dist/routes/project.js +6 -0
- package/dist/routes/project.js.map +1 -1
- package/dist/routes/settings.d.ts +0 -53
- package/dist/routes/settings.d.ts.map +1 -1
- package/dist/routes/settings.js +161 -194
- package/dist/routes/settings.js.map +1 -1
- package/package.json +8 -6
- package/client-dist/assets/index-ygCEt46m.js +0 -523
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// server:对话运行时池 + 在途流登记
|
|
2
|
+
//
|
|
3
|
+
// 两件事只在这里做(session 文件的读写细节全在 agent 包 runtime/sessions.ts):
|
|
4
|
+
// 1. **每项目一个 ProjectRuntime**:懒创建;切换项目/关闭项目或切换会话时释放
|
|
5
|
+
// (dispose 会话 + 中止在途流 + 清空提案仓)。
|
|
6
|
+
// 2. **单项目单在途流 + 会话级在途登记**:CHAT_BUSY / SESSION_BUSY 两个 409 的判定依据。
|
|
7
|
+
//
|
|
8
|
+
// 路径安全:session_id → 文件路径只经 agent 包的磁盘发现(SessionManager.list)映射,
|
|
9
|
+
// 客户端传入值**永不参与路径拼接**(docs/db/schema.md「本仓依赖的契约面」)。
|
|
10
|
+
import { createProjectRuntime, defaultProposalStore, openProjectSessionManager, } from "@whispering233/ai-editor-agent";
|
|
11
|
+
import { applyActiveSettings, getModelRuntime, getSettingsManager } from "./model-runtime.js";
|
|
12
|
+
/** 缺省工厂:项目 sessions/ 目录 + 项目根 AGENTS.md 的 pi 运行时(装配细节见 agent 包 runtime/)
|
|
13
|
+
* 模型目录/凭据/settings 用 server 层单例:设置端点与对话链路看到同一份配置(docs/design/config.md)。 */
|
|
14
|
+
export const defaultRuntimeFactory = async ({ target, sessionFile }) => {
|
|
15
|
+
const input = {
|
|
16
|
+
projectRoot: target.root,
|
|
17
|
+
toolContext: { db: target.db, outlineDir: target.root, projectId: target.projectId },
|
|
18
|
+
sessionManager: openProjectSessionManager(target.root, sessionFile),
|
|
19
|
+
modelRuntime: await getModelRuntime(),
|
|
20
|
+
settingsManager: getSettingsManager(),
|
|
21
|
+
};
|
|
22
|
+
return createProjectRuntime(input);
|
|
23
|
+
};
|
|
24
|
+
let active = null;
|
|
25
|
+
/**
|
|
26
|
+
* 取当前项目的运行时:同项目同会话复用,否则释放旧的再建。
|
|
27
|
+
* 抛出(如 NoModelConfiguredError)时调用方在开流前转 HTTP 错误。
|
|
28
|
+
*/
|
|
29
|
+
export async function acquireProjectRuntime(target, sessionFile, factory = defaultRuntimeFactory) {
|
|
30
|
+
if (active !== null) {
|
|
31
|
+
const sameProject = active.projectRoot === target.root;
|
|
32
|
+
const sameSession = sessionFile !== undefined && active.sessionFile === sessionFile;
|
|
33
|
+
if (sameProject && sameSession) {
|
|
34
|
+
// 复用前同步一次激活模型/思考强度:设置页的变更只影响新请求,但必须对**下一个**请求生效
|
|
35
|
+
// (否则 ChatPanel 已乐观显示新模型、对话仍用旧模型)
|
|
36
|
+
await applyActiveSettings(active.runtime);
|
|
37
|
+
return active.runtime;
|
|
38
|
+
}
|
|
39
|
+
disposeProjectRuntime(); // 换项目/换会话:旧运行时连同其在途流一起退休
|
|
40
|
+
}
|
|
41
|
+
const runtime = await factory({ target, sessionFile });
|
|
42
|
+
active = { projectRoot: target.root, sessionFile: runtime.session.sessionFile, runtime };
|
|
43
|
+
return runtime;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 释放运行时:中止在途流 → dispose 会话订阅 → 清空提案仓。
|
|
47
|
+
* 项目切换/关闭时由 middleware/project.ts 的 setCurrentProject 单点调用。
|
|
48
|
+
*/
|
|
49
|
+
export function disposeProjectRuntime() {
|
|
50
|
+
abortActiveChats();
|
|
51
|
+
const previous = active;
|
|
52
|
+
active = null;
|
|
53
|
+
previous?.runtime.dispose();
|
|
54
|
+
// 未确认提案随项目/会话切换作废(docs/design/30-agent-loop.md §2)
|
|
55
|
+
defaultProposalStore.clear();
|
|
56
|
+
}
|
|
57
|
+
const activeChats = new Set();
|
|
58
|
+
/** 该项目的在途流是否已存在(重复进入 → 409 CHAT_BUSY) */
|
|
59
|
+
export function hasActiveChat(projectRoot) {
|
|
60
|
+
for (const chat of activeChats) {
|
|
61
|
+
if (chat.projectRoot === projectRoot)
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
/** 占用「本项目在途流」名额(**同步**:与 hasActiveChat 相邻调用即可避免竞态窗口) */
|
|
67
|
+
export function beginActiveChat(projectRoot) {
|
|
68
|
+
const chat = { projectRoot, abort: null };
|
|
69
|
+
activeChats.add(chat);
|
|
70
|
+
return {
|
|
71
|
+
setAbort: (abort) => {
|
|
72
|
+
chat.abort = abort;
|
|
73
|
+
},
|
|
74
|
+
release: () => {
|
|
75
|
+
activeChats.delete(chat);
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/** 中止全部在途流(项目切换/关闭时;未就绪的占位跳过) */
|
|
80
|
+
export function abortActiveChats() {
|
|
81
|
+
for (const chat of [...activeChats])
|
|
82
|
+
chat.abort?.();
|
|
83
|
+
}
|
|
84
|
+
// ============ 会话级在途登记(DELETE 的并发防线) ============
|
|
85
|
+
const inFlightSessions = new Map();
|
|
86
|
+
/** 登记会话在途(同一会话并发流可重复登记) */
|
|
87
|
+
export function enterInFlightSession(sessionId) {
|
|
88
|
+
inFlightSessions.set(sessionId, (inFlightSessions.get(sessionId) ?? 0) + 1);
|
|
89
|
+
}
|
|
90
|
+
/** 注销会话在途(归零即删条目) */
|
|
91
|
+
export function leaveInFlightSession(sessionId) {
|
|
92
|
+
const next = (inFlightSessions.get(sessionId) ?? 1) - 1;
|
|
93
|
+
if (next <= 0)
|
|
94
|
+
inFlightSessions.delete(sessionId);
|
|
95
|
+
else
|
|
96
|
+
inFlightSessions.set(sessionId, next);
|
|
97
|
+
}
|
|
98
|
+
/** 该会话是否有在途流(删除端点用:拒删在途会话,防流把文件原地重建) */
|
|
99
|
+
export function isSessionInFlight(sessionId) {
|
|
100
|
+
return (inFlightSessions.get(sessionId) ?? 0) > 0;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=chat-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-runtime.js","sourceRoot":"","sources":["../src/chat-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/debug.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** 五类别清单(isCategoryEnabled 判定依据;新增类别在此扩展) */
|
|
2
|
-
export declare const DEBUG_CATEGORIES: readonly ["chat", "request", "
|
|
2
|
+
export declare const DEBUG_CATEGORIES: readonly ["chat", "request", "usage", "http"];
|
|
3
3
|
/** 调试类别(细粒度开关;debugLog 第一参) */
|
|
4
4
|
export type DebugCategory = (typeof DEBUG_CATEGORIES)[number];
|
|
5
5
|
/**
|
package/dist/debug.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAuBA,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAuBA,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,+CAAgD,CAAC;AAE9E,+BAA+B;AAC/B,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAmD9D;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAG7D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAGrF"}
|
package/dist/debug.js
CHANGED
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
// 配置文件进入配置态,initDebugConfig(undefined) 回全关态。
|
|
17
17
|
import { readFileSync } from "node:fs";
|
|
18
18
|
import { join } from "node:path";
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
19
|
+
/** 配置文件相对创作根的路径(项目级调试配置——debug 开关的唯一载体;
|
|
20
|
+
* 模型/凭据/运行参数自 K5 起全部在 pi agent dir,与本文件无关) */
|
|
21
21
|
const DEBUG_CONFIG_RELATIVE_PATH = join(".ai-editor", "config.json");
|
|
22
22
|
/** 五类别清单(isCategoryEnabled 判定依据;新增类别在此扩展) */
|
|
23
|
-
export const DEBUG_CATEGORIES = ["chat", "request", "
|
|
23
|
+
export const DEBUG_CATEGORIES = ["chat", "request", "usage", "http"];
|
|
24
24
|
// 模块内配置状态(initDebugConfig 每次调用重置快照——测试可重复进入/退出配置态)
|
|
25
25
|
let configEnabled = false; // 配置 enabled(仅 true 开;缺失/非布尔 = false → 全关)
|
|
26
26
|
let configCategories = null; // null = 全部类别
|
package/dist/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,+DAA+D;AAC/D,2DAA2D;AAC3D,wBAAwB;AACxB,2EAA2E;AAC3E,0EAA0E;AAC1E,2CAA2C;AAC3C,8EAA8E;AAC9E,+DAA+D;AAC/D,mEAAmE;AACnE,wDAAwD;AACxD,uCAAuC;AACvC,2CAA2C;AAC3C,sDAAsD;AACtD,6CAA6C;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const DEFAULT_HTTP_IDLE_TIMEOUT_MS = 300000;
|
|
2
|
+
/** HTTP 空闲超时可选项(设置页/文档用;0 = 关闭超时) */
|
|
3
|
+
export declare const HTTP_IDLE_TIMEOUT_CHOICES: readonly [{
|
|
4
|
+
readonly label: "30 sec";
|
|
5
|
+
readonly timeoutMs: 30000;
|
|
6
|
+
}, {
|
|
7
|
+
readonly label: "1 min";
|
|
8
|
+
readonly timeoutMs: 60000;
|
|
9
|
+
}, {
|
|
10
|
+
readonly label: "2 min";
|
|
11
|
+
readonly timeoutMs: 120000;
|
|
12
|
+
}, {
|
|
13
|
+
readonly label: "5 min";
|
|
14
|
+
readonly timeoutMs: 300000;
|
|
15
|
+
}, {
|
|
16
|
+
readonly label: "disabled";
|
|
17
|
+
readonly timeoutMs: 0;
|
|
18
|
+
}];
|
|
19
|
+
/** 解析空闲超时配置:字符串("disabled" / 数字串)/ 数字;非法 → undefined */
|
|
20
|
+
export declare function parseHttpIdleTimeoutMs(value: unknown): number | undefined;
|
|
21
|
+
/** 空闲超时的人类可读标签(非法值 → "<n> sec" 形态) */
|
|
22
|
+
export declare function formatHttpIdleTimeoutMs(timeoutMs: number): string;
|
|
23
|
+
/** 把 `httpProxy` 设置写入环境(仅在未设置时;供 EnvHttpProxyAgent 读取) */
|
|
24
|
+
export declare function applyHttpProxySettings(httpProxy: string | undefined): void;
|
|
25
|
+
/**
|
|
26
|
+
* 安装全局 undici dispatcher(启动时调用一次;设置变更后可再次调用覆盖)。
|
|
27
|
+
* @param timeoutMs 空闲超时(`bodyTimeout`/`headersTimeout`),缺省 5 分钟
|
|
28
|
+
*/
|
|
29
|
+
export declare function configureHttpDispatcher(timeoutMs?: number): void;
|
|
30
|
+
//# sourceMappingURL=http-dispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-dispatcher.d.ts","sourceRoot":"","sources":["../src/http-dispatcher.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAKpD,qCAAqC;AACrC,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAM5B,CAAC;AAKX,wDAAwD;AACxD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASzE;AAED,sCAAsC;AACtC,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAK1E;AAyBD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,MAAqC,GAAG,IAAI,CAyB9F"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// 出站 HTTP dispatcher(嵌入 pi 运行时必需的一环)
|
|
2
|
+
//
|
|
3
|
+
// 为什么需要它:pi CLI 启动时会安装自己的 undici dispatcher(`pi-coding-agent` 的
|
|
4
|
+
// `core/http-dispatcher.ts`,未从包根导出),其中两项对本机/弱网环境是必需的:
|
|
5
|
+
// 1. `connect.autoSelectFamilyAttemptTimeout = 2000`——Node 默认 250ms 会让
|
|
6
|
+
// 「IPv6 可达性黑洞」的链路上快速放弃、整连接 ETIMEDOUT(实测:不装 dispatcher 时
|
|
7
|
+
// 对 opencode.ai 的 fetch 稳定 1.4s 超时,装了即 200);
|
|
8
|
+
// 2. 环境代理支持(`EnvHttpProxyAgent`,配合 `httpProxy` 设置/`HTTP(S)_PROXY`)。
|
|
9
|
+
// 不装 dispatcher 时 pi 的 SDK 走 Node 自带 fetch/连接策略,于是「pi CLI 能连、本仓不能连」。
|
|
10
|
+
//
|
|
11
|
+
// 实现与 pi 0.85.1 的同名模块保持同构(pi-web 也以拷贝方式复用该模块),差异仅:
|
|
12
|
+
// 不做一次性守卫(允许设置热更新后重新安装),注释指向本仓语境。
|
|
13
|
+
import { EventEmitter } from "node:events";
|
|
14
|
+
import * as undici from "undici";
|
|
15
|
+
export const DEFAULT_HTTP_IDLE_TIMEOUT_MS = 300_000;
|
|
16
|
+
/** Node 默认 250ms 在高延迟/黑洞链路上会过早终止连接尝试(见文件头注释) */
|
|
17
|
+
const DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS = 2_000;
|
|
18
|
+
/** HTTP 空闲超时可选项(设置页/文档用;0 = 关闭超时) */
|
|
19
|
+
export const HTTP_IDLE_TIMEOUT_CHOICES = [
|
|
20
|
+
{ label: "30 sec", timeoutMs: 30_000 },
|
|
21
|
+
{ label: "1 min", timeoutMs: 60_000 },
|
|
22
|
+
{ label: "2 min", timeoutMs: 120_000 },
|
|
23
|
+
{ label: "5 min", timeoutMs: 300_000 },
|
|
24
|
+
{ label: "disabled", timeoutMs: 0 },
|
|
25
|
+
];
|
|
26
|
+
const originalGlobalFetch = globalThis.fetch;
|
|
27
|
+
const ignoreUndiciDispatcherError = () => { };
|
|
28
|
+
/** 解析空闲超时配置:字符串("disabled" / 数字串)/ 数字;非法 → undefined */
|
|
29
|
+
export function parseHttpIdleTimeoutMs(value) {
|
|
30
|
+
if (typeof value === "string") {
|
|
31
|
+
const trimmed = value.trim();
|
|
32
|
+
if (trimmed.toLowerCase() === "disabled")
|
|
33
|
+
return 0;
|
|
34
|
+
if (trimmed.length === 0)
|
|
35
|
+
return undefined;
|
|
36
|
+
return parseHttpIdleTimeoutMs(Number(trimmed));
|
|
37
|
+
}
|
|
38
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value < 0)
|
|
39
|
+
return undefined;
|
|
40
|
+
return Math.floor(value);
|
|
41
|
+
}
|
|
42
|
+
/** 空闲超时的人类可读标签(非法值 → "<n> sec" 形态) */
|
|
43
|
+
export function formatHttpIdleTimeoutMs(timeoutMs) {
|
|
44
|
+
return HTTP_IDLE_TIMEOUT_CHOICES.find((item) => item.timeoutMs === timeoutMs)?.label ?? `${timeoutMs / 1000} sec`;
|
|
45
|
+
}
|
|
46
|
+
/** 把 `httpProxy` 设置写入环境(仅在未设置时;供 EnvHttpProxyAgent 读取) */
|
|
47
|
+
export function applyHttpProxySettings(httpProxy) {
|
|
48
|
+
const proxy = httpProxy?.trim();
|
|
49
|
+
if (!proxy)
|
|
50
|
+
return;
|
|
51
|
+
process.env.HTTP_PROXY ??= proxy;
|
|
52
|
+
process.env.HTTPS_PROXY ??= proxy;
|
|
53
|
+
}
|
|
54
|
+
/** undici 在终止响应体时可能发出 Client 级 error:挂空监听防 EventEmitter 未处理错误打挂进程 */
|
|
55
|
+
function withUndiciErrorListener(dispatcher) {
|
|
56
|
+
if (dispatcher instanceof EventEmitter) {
|
|
57
|
+
EventEmitter.prototype.on.call(dispatcher, "error", ignoreUndiciDispatcherError);
|
|
58
|
+
}
|
|
59
|
+
return dispatcher;
|
|
60
|
+
}
|
|
61
|
+
function createUndiciClient(origin, options) {
|
|
62
|
+
return withUndiciErrorListener(new undici.Client(origin, options));
|
|
63
|
+
}
|
|
64
|
+
function createUndiciOriginDispatcher(origin, options) {
|
|
65
|
+
const dispatcherOptions = options;
|
|
66
|
+
if (dispatcherOptions.connections === 1)
|
|
67
|
+
return createUndiciClient(origin, dispatcherOptions);
|
|
68
|
+
return withUndiciErrorListener(new undici.Pool(origin, {
|
|
69
|
+
...dispatcherOptions,
|
|
70
|
+
factory: createUndiciClient,
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 安装全局 undici dispatcher(启动时调用一次;设置变更后可再次调用覆盖)。
|
|
75
|
+
* @param timeoutMs 空闲超时(`bodyTimeout`/`headersTimeout`),缺省 5 分钟
|
|
76
|
+
*/
|
|
77
|
+
export function configureHttpDispatcher(timeoutMs = DEFAULT_HTTP_IDLE_TIMEOUT_MS) {
|
|
78
|
+
const normalizedTimeoutMs = parseHttpIdleTimeoutMs(timeoutMs);
|
|
79
|
+
if (normalizedTimeoutMs === undefined) {
|
|
80
|
+
throw new Error(`Invalid HTTP idle timeout: ${String(timeoutMs)}`);
|
|
81
|
+
}
|
|
82
|
+
const dispatcher = withUndiciErrorListener(new undici.EnvHttpProxyAgent({
|
|
83
|
+
allowH2: false,
|
|
84
|
+
// HTTP origin 仍走 CONNECT 隧道(与 pi 行为一致)
|
|
85
|
+
proxyTunnel: true,
|
|
86
|
+
bodyTimeout: normalizedTimeoutMs,
|
|
87
|
+
headersTimeout: normalizedTimeoutMs,
|
|
88
|
+
connect: {
|
|
89
|
+
autoSelectFamilyAttemptTimeout: DEFAULT_AUTO_SELECT_FAMILY_ATTEMPT_TIMEOUT_MS,
|
|
90
|
+
},
|
|
91
|
+
clientFactory: createUndiciClient,
|
|
92
|
+
factory: createUndiciOriginDispatcher,
|
|
93
|
+
}));
|
|
94
|
+
undici.setGlobalDispatcher(dispatcher);
|
|
95
|
+
// fetch 与 dispatcher 用同一 undici 实现(否则 Node 自带 fetch 可能读到未解压响应);
|
|
96
|
+
// 若调用方在模块加载后主动替换过 fetch,则尊重该覆盖。
|
|
97
|
+
if (globalThis.fetch === originalGlobalFetch) {
|
|
98
|
+
undici.install?.();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=http-dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-dispatcher.js","sourceRoot":"","sources":["../src/http-dispatcher.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWzE,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAWjC,qCAAqC;AACrC,eAAO,MAAM,YAAY,OAAO,CAAC;AAuBjC,MAAM,WAAW,kBAAkB;IAClC,iCAAiC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACf;;;MAGE;IACD,GAAG,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACvB,yDAAyD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,IAAI,CAAC;QAAE,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IAC3C,MAAM,EAAE,UAAU,CAAC;IACpB,6BAA6B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC7D,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,mBAAmB;IAClB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMzD;AAmCD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC,CAkK9G;AAcD,gDAAgD;AAChD,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW/D;AAID;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAK1E"}
|
package/dist/index.js
CHANGED
|
@@ -22,12 +22,15 @@ import { createAdaptorServer } from "@hono/node-server";
|
|
|
22
22
|
import { errorHandler, fail, ok } from "./middleware/error.js";
|
|
23
23
|
import { stopAutoBackup } from "./backup.js";
|
|
24
24
|
import { initDebugConfig, isCategoryEnabled } from "./debug.js";
|
|
25
|
+
import { applyHttpProxySettings, configureHttpDispatcher } from "./http-dispatcher.js";
|
|
26
|
+
import { getSettingsManager } from "./model-runtime.js";
|
|
25
27
|
import { chatRoutes } from "./routes/chat.js";
|
|
26
28
|
import { deltaRoutes } from "./routes/delta.js";
|
|
27
29
|
import { entityRoutes } from "./routes/entity.js";
|
|
28
30
|
import { settingsRoutes } from "./routes/settings.js";
|
|
29
31
|
import { closeProject, detectProject, originCheckMiddleware, projectMiddleware, setCurrentProject, } from "./middleware/project.js";
|
|
30
32
|
import { projectRoutes, setProjectRoot } from "./routes/project.js";
|
|
33
|
+
import { readLastProject } from "./last-project.js";
|
|
31
34
|
import { outlineRoutes } from "./routes/outline.js";
|
|
32
35
|
import { namesRoutes } from "./routes/names.js"; // 批量名称解析(工具调用人类可读化)
|
|
33
36
|
import { proposalRoutes } from "./routes/proposal.js";
|
|
@@ -75,6 +78,23 @@ export function resolveClientDist(baseDir) {
|
|
|
75
78
|
function defaultClientDist() {
|
|
76
79
|
return resolveClientDist(dirname(fileURLToPath(import.meta.url)));
|
|
77
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* 按创作根偏好恢复上次打开的项目(lastProject):
|
|
83
|
+
* - 无记录 / 目录已不存在(readProjectFile → null)→ null(待命)
|
|
84
|
+
* - project.json 损坏或打开失败(readProjectFile/openDatabase 抛错)→ null(**不阻断启动**:
|
|
85
|
+
* 宁回书架也不让一次坏数据把服务起不起来)
|
|
86
|
+
*/
|
|
87
|
+
function detectLastProject(root) {
|
|
88
|
+
const last = readLastProject(root);
|
|
89
|
+
if (last === null)
|
|
90
|
+
return null;
|
|
91
|
+
try {
|
|
92
|
+
return detectProject(last);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
78
98
|
function contentTypeFor(file) {
|
|
79
99
|
return CONTENT_TYPES[extname(file).toLowerCase()] ?? "application/octet-stream";
|
|
80
100
|
}
|
|
@@ -111,9 +131,18 @@ export async function startServer(projectRoot, options = {}) {
|
|
|
111
131
|
// 五类别 chat/request/stream/usage/http;文件不存在/非法 JSON/结构不符 → 全关;
|
|
112
132
|
// 不阻断启动。运行中改配置文件不生效——热加载 YAGNI)
|
|
113
133
|
initDebugConfig(root);
|
|
134
|
+
// 出站 HTTP dispatcher(嵌入 pi 运行时的必需环节,见 http-dispatcher.ts 文件头):
|
|
135
|
+
// 装 undici dispatcher 以拿到 pi CLI 同款行为(IPv6 黑洞链路的 autoSelectFamily 退避 +
|
|
136
|
+
// 环境代理支持 + 可配 HTTP 空闲超时);不装 → 部分网络下 provider 请求稳定 ETIMEDOUT。
|
|
137
|
+
const settings = getSettingsManager();
|
|
138
|
+
applyHttpProxySettings(settings.getGlobalSettings().httpProxy);
|
|
139
|
+
configureHttpDispatcher(settings.getHttpIdleTimeoutMs());
|
|
114
140
|
// 检测语义(设计缺陷修复):不再无条件初始化——待命态下 GET /project/config → 409
|
|
115
141
|
// NO_PROJECT_OPEN,前端引导「新建/打开项目」(client store loadConfig 已处理该错误码)
|
|
116
|
-
|
|
142
|
+
// 上次书籍恢复(2026-09 用户需求「打开时直接进入上一次选择的书籍」):创作根自身不是项目时,
|
|
143
|
+
// 按 <创作根>/.ai-editor/config.json 的 lastProject(上次 open 成功的目录)尝试打开——路径已
|
|
144
|
+
// 删除/移动(无 project.json)或 project.json 损坏(readProjectFile 抛错)都静默回待命(书架页)
|
|
145
|
+
const project = detectProject(root) ?? detectLastProject(root);
|
|
117
146
|
if (project !== null) {
|
|
118
147
|
setCurrentProject(project); // 启动即打开(部署场景);null 则保持待命
|
|
119
148
|
// S4.2 启动一致性校验:以大纲节点软删为准补标 DB 关联记录
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** `lastProject` 键名(读写的唯一字面量处) */
|
|
2
|
+
export declare const LAST_PROJECT_KEY = "lastProject";
|
|
3
|
+
/** 上次打开的项目目录绝对路径(无记录 / 字段非字符串 → null) */
|
|
4
|
+
export declare function readLastProject(projectRoot: string): string | null;
|
|
5
|
+
/** 记下本次打开的项目目录(合并写;失败静默——见文件头注释) */
|
|
6
|
+
export declare function writeLastProject(projectRoot: string, projectDir: string): void;
|
|
7
|
+
//# sourceMappingURL=last-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"last-project.d.ts","sourceRoot":"","sources":["../src/last-project.ts"],"names":[],"mappings":"AAoBA,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAa9C,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGlE;AAED,oCAAoC;AACpC,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAQ9E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// 创作根级偏好:<创作根>/.ai-editor/config.json 的 `lastProject` 键
|
|
2
|
+
//
|
|
3
|
+
// 用途(2026-09,用户需求「打开时直接进入上一次选择的书籍」):POST /project/open 成功后
|
|
4
|
+
// 记下目标目录的绝对路径;startServer 在创作根自身不是项目时按它恢复上次打开的书。
|
|
5
|
+
//
|
|
6
|
+
// 与 debug.ts 同文件不同键:debug 段由用户手编、服务端只在启动读一次;lastProject 由服务端
|
|
7
|
+
// 写(**合并写**:先读整份 JSON,只覆盖本键——否则会把用户手编的 debug 段清掉)。
|
|
8
|
+
// 任何失败(文件不存在/非法 JSON/只读目录)都不抛错也不阻断调用方:
|
|
9
|
+
// 偏好丢失只是下次启动回到书架,不该让一次 open 失败。
|
|
10
|
+
import { mkdirSync, readFileSync } from "node:fs";
|
|
11
|
+
import { dirname, join } from "node:path";
|
|
12
|
+
import { writeJsonAtomic } from "@whispering233/ai-editor-db";
|
|
13
|
+
/** 配置文件相对创作根的路径(与 debug.ts 同一文件,各自只读写自己的键) */
|
|
14
|
+
const ROOT_CONFIG_RELATIVE_PATH = join(".ai-editor", "config.json");
|
|
15
|
+
function configFilePath(projectRoot) {
|
|
16
|
+
return join(projectRoot, ROOT_CONFIG_RELATIVE_PATH);
|
|
17
|
+
}
|
|
18
|
+
/** `lastProject` 键名(读写的唯一字面量处) */
|
|
19
|
+
export const LAST_PROJECT_KEY = "lastProject";
|
|
20
|
+
/** 读取整份配置(文件不存在/非法 JSON/顶层非对象 → 空对象——调用方按「无该键」处理) */
|
|
21
|
+
function readRootConfig(projectRoot) {
|
|
22
|
+
try {
|
|
23
|
+
const parsed = JSON.parse(readFileSync(configFilePath(projectRoot), "utf8"));
|
|
24
|
+
if (typeof parsed === "object" && parsed !== null)
|
|
25
|
+
return parsed;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// 文件不存在 / 读取失败 / 非法 JSON:都退化为空配置
|
|
29
|
+
}
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
/** 上次打开的项目目录绝对路径(无记录 / 字段非字符串 → null) */
|
|
33
|
+
export function readLastProject(projectRoot) {
|
|
34
|
+
const value = readRootConfig(projectRoot)[LAST_PROJECT_KEY];
|
|
35
|
+
return typeof value === "string" && value !== "" ? value : null;
|
|
36
|
+
}
|
|
37
|
+
/** 记下本次打开的项目目录(合并写;失败静默——见文件头注释) */
|
|
38
|
+
export function writeLastProject(projectRoot, projectDir) {
|
|
39
|
+
try {
|
|
40
|
+
const next = { ...readRootConfig(projectRoot), [LAST_PROJECT_KEY]: projectDir };
|
|
41
|
+
mkdirSync(dirname(configFilePath(projectRoot)), { recursive: true });
|
|
42
|
+
writeJsonAtomic(configFilePath(projectRoot), next);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// 只读创作根 / 磁盘错误:偏好写入失败不影响已完成的 open
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=last-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"last-project.js","sourceRoot":"","sources":["../src/last-project.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,2DAA2D;AAC3D,iDAAiD;AACjD,EAAE;AACF,6DAA6D;AAC7D,mDAAmD;AACnD,uCAAuC;AACvC,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,8CAA8C;AAC9C,MAAM,yBAAyB,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AAEpE,SAAS,cAAc,CAAC,WAAmB;IACzC,OAAO,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;AACtD,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAE9C,qDAAqD;AACrD,SAAS,cAAc,CAAC,WAAmB;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAiC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,UAAkB;IACtE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC;QAChF,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/middleware/project.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAA+C,KAAK,EAAE,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/middleware/project.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAA+C,KAAK,EAAE,EAAE,MAAM,6BAA6B,CAAC;AASnG,yBAAyB;AACzB,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAK3C,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,EAAE,EAAE,EAAE,CAAC;CACR;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,8BAA8B;AAC9B,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAAG,cAAc,CAEtF;AAWD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAUtE;AAED,uBAAuB;AACvB,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,cAAc,CAKtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAUjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,GACrE,cAAc,CAoBhB;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAE1D;AAYD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CASzD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,CAQrD"}
|
|
@@ -19,6 +19,7 @@ import { SCHEMA_VERSION } from "@whispering233/ai-editor-db";
|
|
|
19
19
|
import { nowIso } from "@whispering233/ai-editor-db";
|
|
20
20
|
import { HttpError, fail } from "./error.js";
|
|
21
21
|
import { migratePromptToAgents, startAutoBackup, stopAutoBackup } from "../backup.js";
|
|
22
|
+
import { disposeProjectRuntime } from "../chat-runtime.js";
|
|
22
23
|
/** data.db 文件名(项目根目录) */
|
|
23
24
|
export const DATA_DB_FILE_NAME = "data.db";
|
|
24
25
|
/** 来源白名单 host(仅允许本机访问;IPv6 ::1 去括号后比对) */
|
|
@@ -41,6 +42,9 @@ let currentProject = null;
|
|
|
41
42
|
* 调度器 tick 内重读 config 自行跟随。
|
|
42
43
|
*/
|
|
43
44
|
export function setCurrentProject(project) {
|
|
45
|
+
// 旧项目的对话运行时在此释放:中止在途流 → dispose 会话订阅 → 清空提案仓
|
|
46
|
+
//(单点覆盖 create/open/close/restore 全部切换路径,见 chat-runtime.ts)
|
|
47
|
+
disposeProjectRuntime();
|
|
44
48
|
currentProject = project;
|
|
45
49
|
if (project !== null) {
|
|
46
50
|
startAutoBackup(project);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/middleware/project.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,iDAAiD;AACjD,4DAA4D;AAC5D,8DAA8D;AAC9D,6DAA6D;AAC7D,wDAAwD;AACxD,mEAAmE;AACnE,2CAA2C;AAC3C,oDAAoD;AACpD,sDAAsD;AACtD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAW,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAqB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/middleware/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ModelRuntime, SettingsManager } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import { type ProjectRuntime } from "@whispering233/ai-editor-agent";
|
|
3
|
+
/**
|
|
4
|
+
* 思考强度类型:直接从 pi 的 setter 签名取(pi-coding-agent 包根不导出该类型),
|
|
5
|
+
* 避免跨包手工声明一份可能漂移的联合类型。
|
|
6
|
+
*/
|
|
7
|
+
export type ThinkingLevel = Parameters<SettingsManager["setDefaultThinkingLevel"]>[0];
|
|
8
|
+
/** pi 未配置 defaultThinkingLevel 时的行为与 pi 自身缺省一致(coding-agent core/defaults.ts) */
|
|
9
|
+
export declare const PI_DEFAULT_THINKING_LEVEL: ThinkingLevel;
|
|
10
|
+
/**
|
|
11
|
+
* pi 模型/凭据运行时(懒创建;缺省读 `~/.pi/agent` 的 auth.json / models.json)。
|
|
12
|
+
* 创建期不联网(`allowNetwork` 未开启)——远端目录刷新由 pi 的本地缓存语义承担。
|
|
13
|
+
*/
|
|
14
|
+
export declare function getModelRuntime(): Promise<ModelRuntime>;
|
|
15
|
+
/**
|
|
16
|
+
* 全局 settings(激活模型 / 思考强度 / 重试 / 压缩参数)。
|
|
17
|
+
* `projectTrusted: false`:项目目录可能来自他人,其中的 `.pi/settings.json` 不参与配置;
|
|
18
|
+
* 因此本实例只读写 `~/.pi/agent/settings.json`。
|
|
19
|
+
*/
|
|
20
|
+
export declare function getSettingsManager(): SettingsManager;
|
|
21
|
+
/** 重置单例(测试隔离:HOME / 环境变量变化后必须重建) */
|
|
22
|
+
export declare function resetModelRuntime(): void;
|
|
23
|
+
/** 本地重载模型目录与凭据可用性(不联网):外部编辑 models.json / 环境变量变化后立即可见 */
|
|
24
|
+
export declare function reloadModelRuntime(runtime: ModelRuntime): Promise<void>;
|
|
25
|
+
/** 激活模型选择(provider + model 成对) */
|
|
26
|
+
export interface ActiveModelSelection {
|
|
27
|
+
provider: string;
|
|
28
|
+
modelId: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 激活模型解析(GET /settings/llm 展示与 PUT 校验共用):
|
|
32
|
+
* pi settings 的 defaultProvider+defaultModel → 首个有凭据的可用模型 → null(什么都没配)。
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveActiveSelection(runtime: ModelRuntime, settings: SettingsManager): Promise<ActiveModelSelection | null>;
|
|
35
|
+
/**
|
|
36
|
+
* 把 pi settings 的当前激活模型 / 思考强度应用到既有会话(「配置变更仅影响新请求」落地)。
|
|
37
|
+
* 会话池按项目+会话复用时,设置页改过的模型必须在本轮生效,否则 UI 改了模型而对话仍用旧模型。
|
|
38
|
+
* 最佳努力:任何失败都不阻断本轮(chat 路由仍会做凭据预检并给出明确错误)。
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyActiveSettings(runtime: ProjectRuntime): Promise<void>;
|
|
41
|
+
//# sourceMappingURL=model-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime.d.ts","sourceRoot":"","sources":["../src/model-runtime.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEtF;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,EAAE,aAAwB,CAAC;AAKjE;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAGvD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAGpD;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED,yDAAyD;AACzD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED,kCAAkC;AAClC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAQtC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhF"}
|