@zhushanwen/pi-rename-session 0.2.0 → 0.3.0
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/package.json +3 -3
- package/src/__tests__/llm.test.ts +1 -1
- package/src/llm.ts +9 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhushanwen/pi-rename-session",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.ts",
|
|
6
6
|
"pi": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"@earendil-works/pi-coding-agent": "*",
|
|
25
25
|
"@earendil-works/pi-ai": "*",
|
|
26
|
-
"
|
|
26
|
+
"typebox": "*"
|
|
27
27
|
},
|
|
28
28
|
"peerDependenciesMeta": {
|
|
29
29
|
"@earendil-works/pi-coding-agent": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@earendil-works/pi-ai": {
|
|
33
33
|
"optional": true
|
|
34
34
|
},
|
|
35
|
-
"
|
|
35
|
+
"typebox": {
|
|
36
36
|
"optional": true
|
|
37
37
|
}
|
|
38
38
|
},
|
|
@@ -11,7 +11,7 @@ describe("buildMessages", () => {
|
|
|
11
11
|
const result = buildMessages(entries, "生成标题");
|
|
12
12
|
expect(result).toHaveLength(3);
|
|
13
13
|
expect(result[0]).toEqual({ role: "user", content: [{ type: "text", text: "hi" }] });
|
|
14
|
-
expect(result[2]).toEqual({ role: "user", content: [{ type: "text", text: "生成标题" }] });
|
|
14
|
+
expect(result[2]).toEqual({ role: "user", content: [{ type: "text", text: "生成标题" }], timestamp: expect.any(Number) });
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
it("LTC2: 过滤非 message entry", () => {
|
package/src/llm.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
Context as LlmContext,
|
|
6
6
|
SimpleStreamOptions,
|
|
7
7
|
} from "@earendil-works/pi-ai/compat";
|
|
8
|
+
import type { Message } from "@earendil-works/pi-ai";
|
|
8
9
|
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
9
10
|
|
|
10
11
|
import { CONFIG, extractTitle } from "./pure.js";
|
|
@@ -23,14 +24,18 @@ interface EntryLike {
|
|
|
23
24
|
/**
|
|
24
25
|
* 从 session entries 构造 messages 前缀,末尾追加 rename 指令 user message。
|
|
25
26
|
* 取 type==='message' 的 entry.message,按原顺序保留(前缀与主 turn 字节级一致,命中 kvcache)。
|
|
27
|
+
*
|
|
28
|
+
* 返回 pi-ai 的 Message[](completeSimple 的 Context.messages 契约)。前缀来自
|
|
29
|
+
* entry.message(SessionMessageEntry.message 即 AgentMessage,是 Message 的超集),
|
|
30
|
+
* 末尾的 rename 指令补齐 UserMessage 必填的 timestamp 字段。
|
|
26
31
|
*/
|
|
27
|
-
export function buildMessages(entries: ReadonlyArray<EntryLike>, instruction: string):
|
|
32
|
+
export function buildMessages(entries: ReadonlyArray<EntryLike>, instruction: string): Message[] {
|
|
28
33
|
const prefix = entries
|
|
29
34
|
.filter((e) => e.type === "message" && e.message !== undefined)
|
|
30
|
-
.map((e) => e.message as
|
|
35
|
+
.map((e) => e.message as Message);
|
|
31
36
|
return [
|
|
32
37
|
...prefix,
|
|
33
|
-
{ role: "user", content: [{ type: "text", text: instruction }] },
|
|
38
|
+
{ role: "user", content: [{ type: "text", text: instruction }], timestamp: Date.now() },
|
|
34
39
|
];
|
|
35
40
|
}
|
|
36
41
|
|
|
@@ -86,7 +91,7 @@ export async function callRenameLLM(
|
|
|
86
91
|
// 标题只需几个词,64 token 足够且省 quota
|
|
87
92
|
maxTokens: 64,
|
|
88
93
|
};
|
|
89
|
-
const context: LlmContext = { systemPrompt, messages, tools: mappedTools };
|
|
94
|
+
const context: LlmContext = { systemPrompt, messages, tools: mappedTools as LlmContext["tools"] };
|
|
90
95
|
const resp: AssistantMessage = await completeSimple(model, context, options);
|
|
91
96
|
|
|
92
97
|
const title = extractTitle(resp, CONFIG.maxTitleLength);
|