@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,81 @@
|
|
|
1
|
+
// server:pi 运行时的进程级单例(模型目录 + 凭据 + 全局 settings)
|
|
2
|
+
//
|
|
3
|
+
// 为什么单例:模型目录(内置目录 + `~/.pi/agent/models.json` 覆盖 + 远端 overlay 缓存)、
|
|
4
|
+
// 凭据(`~/.pi/agent/auth.json`)、运行参数(`~/.pi/agent/settings.json`)都只有一份真相源,
|
|
5
|
+
// 每请求/每项目各建一份会重复建目录、重复刷可用性,且设置端点与对话端点会读到不同快照。
|
|
6
|
+
//
|
|
7
|
+
// 配置所有权在 pi(docs/design/config.md):本模块只做「懒创建 + 复用 + 测试重置」,
|
|
8
|
+
// 不缓存、不镜像任何自建配置;项目目录内的 `.pi/` 一律不参与(`projectTrusted: false`)。
|
|
9
|
+
import { ModelRuntime, SettingsManager } from "@earendil-works/pi-coding-agent";
|
|
10
|
+
import { resolveAgentDir } from "@whispering233/ai-editor-agent";
|
|
11
|
+
/** pi 未配置 defaultThinkingLevel 时的行为与 pi 自身缺省一致(coding-agent core/defaults.ts) */
|
|
12
|
+
export const PI_DEFAULT_THINKING_LEVEL = "medium";
|
|
13
|
+
let runtimePromise;
|
|
14
|
+
let settingsManager;
|
|
15
|
+
/**
|
|
16
|
+
* pi 模型/凭据运行时(懒创建;缺省读 `~/.pi/agent` 的 auth.json / models.json)。
|
|
17
|
+
* 创建期不联网(`allowNetwork` 未开启)——远端目录刷新由 pi 的本地缓存语义承担。
|
|
18
|
+
*/
|
|
19
|
+
export function getModelRuntime() {
|
|
20
|
+
runtimePromise ??= ModelRuntime.create();
|
|
21
|
+
return runtimePromise;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 全局 settings(激活模型 / 思考强度 / 重试 / 压缩参数)。
|
|
25
|
+
* `projectTrusted: false`:项目目录可能来自他人,其中的 `.pi/settings.json` 不参与配置;
|
|
26
|
+
* 因此本实例只读写 `~/.pi/agent/settings.json`。
|
|
27
|
+
*/
|
|
28
|
+
export function getSettingsManager() {
|
|
29
|
+
settingsManager ??= SettingsManager.create(process.cwd(), resolveAgentDir(), { projectTrusted: false });
|
|
30
|
+
return settingsManager;
|
|
31
|
+
}
|
|
32
|
+
/** 重置单例(测试隔离:HOME / 环境变量变化后必须重建) */
|
|
33
|
+
export function resetModelRuntime() {
|
|
34
|
+
runtimePromise = undefined;
|
|
35
|
+
settingsManager = undefined;
|
|
36
|
+
}
|
|
37
|
+
/** 本地重载模型目录与凭据可用性(不联网):外部编辑 models.json / 环境变量变化后立即可见 */
|
|
38
|
+
export async function reloadModelRuntime(runtime) {
|
|
39
|
+
await runtime.refresh({ allowNetwork: false });
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 激活模型解析(GET /settings/llm 展示与 PUT 校验共用):
|
|
43
|
+
* pi settings 的 defaultProvider+defaultModel → 首个有凭据的可用模型 → null(什么都没配)。
|
|
44
|
+
*/
|
|
45
|
+
export async function resolveActiveSelection(runtime, settings) {
|
|
46
|
+
const provider = settings.getDefaultProvider();
|
|
47
|
+
const modelId = settings.getDefaultModel();
|
|
48
|
+
if (provider !== undefined && modelId !== undefined && runtime.getModel(provider, modelId) !== undefined) {
|
|
49
|
+
return { provider, modelId };
|
|
50
|
+
}
|
|
51
|
+
const first = (await runtime.getAvailable())[0];
|
|
52
|
+
return first === undefined ? null : { provider: first.provider, modelId: first.id };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 把 pi settings 的当前激活模型 / 思考强度应用到既有会话(「配置变更仅影响新请求」落地)。
|
|
56
|
+
* 会话池按项目+会话复用时,设置页改过的模型必须在本轮生效,否则 UI 改了模型而对话仍用旧模型。
|
|
57
|
+
* 最佳努力:任何失败都不阻断本轮(chat 路由仍会做凭据预检并给出明确错误)。
|
|
58
|
+
*/
|
|
59
|
+
export async function applyActiveSettings(runtime) {
|
|
60
|
+
const { modelRuntime, settingsManager: settings, session } = runtime;
|
|
61
|
+
try {
|
|
62
|
+
const selection = await resolveActiveSelection(modelRuntime, settings);
|
|
63
|
+
if (selection !== null) {
|
|
64
|
+
const current = session.model;
|
|
65
|
+
if (current === undefined || current.id !== selection.modelId || current.provider !== selection.provider) {
|
|
66
|
+
const next = modelRuntime.getModel(selection.provider, selection.modelId);
|
|
67
|
+
if (next !== undefined)
|
|
68
|
+
await session.setModel(next);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// 思考强度:per-model 覆盖优先于全局缺省(与 pi 的模型切换语义一致)
|
|
72
|
+
const level = settings.getModelThinkingLevel(selection?.provider ?? "", selection?.modelId ?? "") ??
|
|
73
|
+
settings.getDefaultThinkingLevel();
|
|
74
|
+
if (level !== undefined && session.thinkingLevel !== level)
|
|
75
|
+
session.setThinkingLevel(level);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// 最佳努力:见函数注释
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=model-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime.js","sourceRoot":"","sources":["../src/model-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/chat.d.ts
CHANGED
|
@@ -1,98 +1,61 @@
|
|
|
1
1
|
import { Hono, type Context } from "hono";
|
|
2
|
-
import { type
|
|
3
|
-
import { type
|
|
4
|
-
import type
|
|
5
|
-
import { type ToolDefinition } from "@whispering233/ai-editor-tools";
|
|
2
|
+
import { type ProposalStore, type ProjectRuntime } from "@whispering233/ai-editor-agent";
|
|
3
|
+
import { type ProjectContext } from "../middleware/project.js";
|
|
4
|
+
import { type RuntimeFactory } from "../chat-runtime.js";
|
|
6
5
|
/** 心跳间隔(15-30s 随机;测试经 deps.heartbeat 覆盖为毫秒级) */
|
|
7
6
|
export declare const DEFAULT_HEARTBEAT_MS: {
|
|
8
7
|
readonly minMs: 15000;
|
|
9
8
|
readonly maxMs: 30000;
|
|
10
9
|
};
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* 单个工具 argsSchema(zod)→ OpenAI 兼容 JSON Schema(LLMToolDefinition.parameters)。
|
|
16
|
-
* 方案:**zod 4 内置 toJSONSchema**(`import { toJSONSchema } from "zod"`,v4.4+ 自带,
|
|
17
|
-
* 无新增依赖)——33 个工具参数均为简单对象 + string/enum/array/record/literal/union 字段,
|
|
18
|
-
* 内置转换全覆盖且输出 draft 2020-12 合法 schema(`.strict` → additionalProperties:false、
|
|
19
|
-
* `.refine` 仅影响校验不改变类型 schema、`z.record` → propertyNames 形态)。
|
|
20
|
-
* 仅剥离顶层 `$schema` 关键字——OpenAI 兼容端点(含 DeepSeek)对 parameters 内未知关键字
|
|
21
|
-
* 存在严格模式拒绝风险,剥离后零风险(其余关键字为标准 JSON Schema 内容,兼容)。
|
|
22
|
-
*/
|
|
23
|
-
export declare function zodArgsToJsonSchema(schema: z.ZodTypeAny): Record<string, unknown>;
|
|
24
|
-
/**
|
|
25
|
-
* registry 工具定义 → LLM function calling 工具定义(决策点:只转换 AUTO + PROPOSAL 权限的
|
|
26
|
-
* 33 个工具——listTools 已不注册执行类(S6.7 核心设计原则「AI 只能提案不能直接写」),
|
|
27
|
-
* 此处权限过滤为双保险:未来误注册执行类工具也不会暴露给模型)。
|
|
28
|
-
*/
|
|
29
|
-
export declare function toLLMToolDefinitions(defs: readonly ToolDefinition[]): LLMToolDefinition[];
|
|
30
|
-
/**
|
|
31
|
-
* [llm] 请求调试日志装饰器:给 produce 包一层(真实路径经
|
|
32
|
-
* `createLLMRequestLogger(createRealProduce(...), { model, tools })` 组装),对应类别开启时:
|
|
33
|
-
* - **request 日志**(类别 request):模型名 + 请求参数 + **完整 messages JSON(不截断——
|
|
34
|
-
* 用户核心诉求「最终组装的 prompt」)** + 工具名列表;每轮每次 attempt 各打一次(含重试)
|
|
35
|
-
* - **usage 日志**(类别 usage):onEvent 转发处捕获 finish 事件,打真实 token 数
|
|
36
|
-
* (需求 3,流内真实 usage)——与 request **分开判定**(categories: ["request","usage"]
|
|
37
|
-
* 时只显示请求与 tokens 统计)
|
|
38
|
-
* - **敏感红线**:只打印请求体(messages 本身无 key——key 走 fetch header),
|
|
39
|
-
* 绝不打印 apiKey / headers
|
|
40
|
-
* - 两类别全关(request + usage 均未开启)时**零开销直通**:不包装 onEvent、不拼接字符串
|
|
41
|
-
* 独立成装饰器而非塞进 createRealProduce:测试可用 mock produce 直测日志层,
|
|
42
|
-
* 不经真实 DeepSeek 网络调用(与 createChatEventLogger 的「工厂 + 组合」同款模式)。
|
|
43
|
-
* 注:produce (run.ts)不含 maxTokens/temperature(当前无对应配置),如实标注 <未设置>。
|
|
44
|
-
*/
|
|
45
|
-
export declare function createLLMRequestLogger(produce: RunAgentDeps["produce"], ctx: {
|
|
46
|
-
model: string;
|
|
47
|
-
tools: LLMToolDefinition[];
|
|
48
|
-
}): RunAgentDeps["produce"];
|
|
49
|
-
/** POST /chat 可注入依赖(全部可选;缺省走真实实现。测试注入 mock 避免真实 DeepSeek 调用) */
|
|
10
|
+
/** 会话列表 lastMessage 截断长度(与历史口径一致,见 docs/db/schema.md) */
|
|
11
|
+
export declare const SESSION_LAST_MESSAGE_MAX_LEN = 50;
|
|
12
|
+
/** chat 路由可注入依赖(全部可选;缺省走真实实现) */
|
|
50
13
|
export interface ChatRouteDeps {
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
dispatcher?: ToolDispatcher;
|
|
55
|
-
/** 提案仓(缺省 defaultProposalStore 单例——与 S7.5 confirm/reject 同仓;测试注入独立实例隔离) */
|
|
14
|
+
/** 运行时工厂(缺省 = 项目 sessions/ + pi 装配;测试注入 faux provider 运行时) */
|
|
15
|
+
runtimeFactory?: RuntimeFactory;
|
|
16
|
+
/** 提案仓(缺省 defaultProposalStore 单例——与 confirm/reject 同仓;测试注入独立实例隔离) */
|
|
56
17
|
store?: ProposalStore;
|
|
57
18
|
/** 心跳间隔覆盖 ms(缺省 15-30s 随机;测试注入毫秒级) */
|
|
58
19
|
heartbeat?: {
|
|
59
20
|
minMs: number;
|
|
60
21
|
maxMs: number;
|
|
61
22
|
};
|
|
62
|
-
/** 时间注入(缺省 db nowIso——应用层写 ISO 8601 约定) */
|
|
63
|
-
now?: () => string;
|
|
64
|
-
/** 模型名覆盖(缺省设置页模型或 DEFAULT_MODEL) */
|
|
65
|
-
model?: string;
|
|
66
|
-
/** apiKey 覆盖(缺省 effectiveApiKey() 环境变量 > 用户级配置) */
|
|
67
|
-
apiKey?: string;
|
|
68
|
-
/** 已转换工具定义覆盖(缺省 listTools → toLLMToolDefinitions) */
|
|
69
|
-
tools?: LLMToolDefinition[];
|
|
70
|
-
/** 续聊历史条数上限覆盖(缺省 SESSION_HISTORY_MAX_MESSAGES;测试可收紧) */
|
|
71
|
-
sessionHistoryMaxCount?: number;
|
|
72
23
|
}
|
|
73
24
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
25
|
+
* 聚焦上下文文本:focus_entity_id → 实体、focus_node_id → 大纲节点,拼成结构化文本。
|
|
26
|
+
* 查询不到(已软删/不存在/跨项目)→ 跳过该项(不报错):客户端可能携带过期 focus。
|
|
27
|
+
* 两项皆无 → undefined(不注入,消息原文保持干净)。
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildFocusText(project: ProjectContext, context: {
|
|
30
|
+
focus_entity_type?: string;
|
|
31
|
+
focus_entity_id?: string;
|
|
32
|
+
focus_node_id?: string;
|
|
33
|
+
} | undefined): string | undefined;
|
|
34
|
+
/** pi 会话事件的最小结构形态(结构性类型:server 包不直接依赖 pi 的类型) */
|
|
35
|
+
interface MinimalAgentEvent {
|
|
36
|
+
type: string;
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 会话事件调试日志器(配置文件 debug 段;类别全关时零开销早退):
|
|
41
|
+
* - chat:turn_start / 文本与思考增量(只打长度)/ 工具执行起止(参数与结果摘要)/ 压缩 / 重试 / 本轮结束
|
|
42
|
+
* - request:**每次模型请求前一次**(即 user / toolResult 消息落定之时——这两种消息之后紧跟一次模型请求)
|
|
43
|
+
* 打印模型名 + 工具名 + **完整 messages JSON(不截断——用户核心诉求「最终组装的 prompt」)**
|
|
44
|
+
* - usage:assistant 消息的真实 usage;工具结果被截断时的 TOOL_RESULT_TOO_LARGE 记录
|
|
45
|
+
* 注:旧 `stream` 类别(chatStream debugStream)随自研 LLM 层退场,见报告。
|
|
82
46
|
*/
|
|
83
|
-
export declare function
|
|
47
|
+
export declare function createChatDebugLogger(runtime: ProjectRuntime): (event: MinimalAgentEvent) => void;
|
|
84
48
|
/**
|
|
85
49
|
* POST /chat 处理器工厂(测试经 createChatRoutes 注入 deps)。
|
|
86
|
-
* 流程:项目/请求校验(JSON 错误,不开流)→
|
|
87
|
-
* →
|
|
88
|
-
* onEvent 转 SSE 帧、onMessages 落库)→ 取消作废提案(B2 取舍见下)→ 关流。
|
|
50
|
+
* 流程:项目/请求校验(JSON 错误,不开流)→ 会话解析(磁盘发现或新建)→ 运行时装配 + 凭据预检
|
|
51
|
+
* → 开流:首帧 session + 事件投影帧 + 心跳 → `session.prompt()` → 收尾(取消则作废提案)。
|
|
89
52
|
*/
|
|
90
53
|
export declare function chatSendHandler(deps?: ChatRouteDeps): (c: Context) => Promise<Response>;
|
|
91
54
|
/**
|
|
92
|
-
* 创建对话路由(
|
|
93
|
-
* 独立实例挂载测试 app,避免真实 DeepSeek 调用;index.ts 挂载默认实例)。
|
|
55
|
+
* 创建对话路由(index.ts 挂载默认实例;测试注入 deps 构造独立实例)。
|
|
94
56
|
*/
|
|
95
57
|
export declare function createChatRoutes(deps?: ChatRouteDeps): Hono;
|
|
96
58
|
/** 默认对话路由实例(index.ts 挂载于 /api/v1/chat) */
|
|
97
59
|
export declare const chatRoutes: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
60
|
+
export {};
|
|
98
61
|
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAaL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEpB,MAAM,gCAAgC,CAAC;AAWxC,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAQL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAI5B,gDAAgD;AAChD,eAAO,MAAM,oBAAoB;;;CAA4C,CAAC;AAE9E,yDAAyD;AACzD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAO/C,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,sEAAsE;IACtE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,sCAAsC;IACtC,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACpG,MAAM,GAAG,SAAS,CAiBpB;AAkBD,iDAAiD;AACjD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CA4HjG;AAgCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,aAAkB,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA4K3F;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,aAAkB,GAAG,IAAI,CA+E/D;AAED,0CAA0C;AAC1C,eAAO,MAAM,UAAU,4EAAqB,CAAC"}
|