@downcity/agent 1.1.281 → 1.1.282
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/bin/agent/AgentSessions.d.ts.map +1 -1
- package/bin/agent/AgentSessions.js +1 -0
- package/bin/agent/AgentSessions.js.map +1 -1
- package/bin/executor/Executor.d.ts +4 -1
- package/bin/executor/Executor.d.ts.map +1 -1
- package/bin/executor/Executor.js +6 -1
- package/bin/executor/Executor.js.map +1 -1
- package/bin/session/Session.d.ts +24 -4
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +102 -23
- package/bin/session/Session.js.map +1 -1
- package/bin/session/storage/Instruction.d.ts +7 -5
- package/bin/session/storage/Instruction.d.ts.map +1 -1
- package/bin/session/storage/Instruction.js +9 -5
- package/bin/session/storage/Instruction.js.map +1 -1
- package/bin/session/storage/Paths.d.ts +2 -2
- package/bin/session/storage/Paths.js +2 -2
- package/bin/types/agent/SessionActor.d.ts +3 -1
- package/bin/types/agent/SessionActor.d.ts.map +1 -1
- package/bin/types/agent/SessionTypes.d.ts +2 -2
- package/bin/types/agent/SessionTypes.d.ts.map +1 -1
- package/bin/types/session/SessionInstruction.d.ts +3 -3
- package/bin/types/session/SessionInstruction.d.ts.map +1 -1
- package/bin/types/session/SessionInstruction.js +2 -2
- package/bin/types/session/SessionOptions.d.ts +9 -1
- package/bin/types/session/SessionOptions.d.ts.map +1 -1
- package/package.json +2 -2
- package/scripts/agent-compiler.mjs +12 -5
- package/scripts/session-config-turn-boundary.test.mjs +141 -5
- package/src/agent/AgentSessions.ts +1 -0
- package/src/executor/Executor.ts +9 -1
- package/src/session/Session.ts +115 -26
- package/src/session/storage/Instruction.ts +18 -5
- package/src/session/storage/Paths.ts +2 -2
- package/src/types/agent/SessionActor.ts +4 -1
- package/src/types/agent/SessionTypes.ts +2 -2
- package/src/types/session/SessionInstruction.ts +3 -3
- package/src/types/session/SessionOptions.ts +10 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session
|
|
2
|
+
* Session system 显式快照存储。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - instruction.md 是可选文件,不存在时由 Session
|
|
6
|
-
* -
|
|
5
|
+
* - instruction.md 是可选文件,不存在时由 Session 在内存中重新生成完整 system。
|
|
6
|
+
* - 空文件也是有效的完整 system 快照。
|
|
7
7
|
* - 写入使用同目录临时文件替换,避免进程中断留下半份内容。
|
|
8
8
|
*/
|
|
9
9
|
import { randomUUID } from "node:crypto";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import fs from "fs-extra";
|
|
12
12
|
import { getSdkAgentSessionInstructionPath } from "../../session/storage/Paths.js";
|
|
13
|
-
/** 读取 Session
|
|
13
|
+
/** 读取 Session 显式固化的完整 system;文件不存在时返回 null。 */
|
|
14
14
|
export async function read_session_instruction(input) {
|
|
15
15
|
const instruction_path = getSdkAgentSessionInstructionPath(input.project_root, input.agent_id, input.session_id);
|
|
16
16
|
try {
|
|
@@ -22,7 +22,11 @@ export async function read_session_instruction(input) {
|
|
|
22
22
|
throw error;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
25
|
+
/** 判断当前 Session 是否已经显式持久化 instruction.md。 */
|
|
26
|
+
export async function has_session_instruction(input) {
|
|
27
|
+
return await fs.pathExists(getSdkAgentSessionInstructionPath(input.project_root, input.agent_id, input.session_id));
|
|
28
|
+
}
|
|
29
|
+
/** 使用完整 system Markdown 原子覆盖当前 Session 的 instruction.md。 */
|
|
26
30
|
export async function write_session_instruction(input) {
|
|
27
31
|
const instruction_path = getSdkAgentSessionInstructionPath(input.project_root, input.agent_id, input.session_id);
|
|
28
32
|
const temporary_path = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instruction.js","sourceRoot":"","sources":["../../../src/session/storage/Instruction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAM/E
|
|
1
|
+
{"version":3,"file":"Instruction.js","sourceRoot":"","sources":["../../../src/session/storage/Instruction.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAM/E,+CAA+C;AAC/C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAwC;IAExC,MAAM,gBAAgB,GAAG,iCAAiC,CACxD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,CACjB,CAAC;IACF,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAwC;IAExC,OAAO,MAAM,EAAE,CAAC,UAAU,CACxB,iCAAiC,CAC/B,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAmC;IAEnC,MAAM,gBAAgB,GAAG,iCAAiC,CACxD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,CACjB,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,gBAAgB;QAChB,OAAO,CAAC,GAAG;QACX,IAAI,CAAC,GAAG,EAAE;QACV,UAAU,EAAE;QACZ,KAAK;KACN,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -50,11 +50,11 @@ export declare function getSdkAgentArchivedSessionMetaPath(projectRoot: string,
|
|
|
50
50
|
*/
|
|
51
51
|
export declare function getSdkAgentSessionDirPath(projectRoot: string, agentId: string, sessionId: string): string;
|
|
52
52
|
/**
|
|
53
|
-
* 单个 session
|
|
53
|
+
* 单个 session 显式固化完整 system 的 instruction.md 路径。
|
|
54
54
|
*
|
|
55
55
|
* 关键点(中文)
|
|
56
56
|
* - 文件不存在表示 Session 恢复时继续采用 Agent 当前 instruction。
|
|
57
|
-
* - 空文件表示调用方显式固化了空
|
|
57
|
+
* - 空文件表示调用方显式固化了空 system。
|
|
58
58
|
*/
|
|
59
59
|
export declare function getSdkAgentSessionInstructionPath(projectRoot: string, agentId: string, sessionId: string): string;
|
|
60
60
|
/**
|
|
@@ -71,11 +71,11 @@ export function getSdkAgentSessionDirPath(projectRoot, agentId, sessionId) {
|
|
|
71
71
|
return path.join(getSdkAgentSessionsRootDirPath(projectRoot, agentId), encodeURIComponent(String(sessionId || "").trim()));
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
* 单个 session
|
|
74
|
+
* 单个 session 显式固化完整 system 的 instruction.md 路径。
|
|
75
75
|
*
|
|
76
76
|
* 关键点(中文)
|
|
77
77
|
* - 文件不存在表示 Session 恢复时继续采用 Agent 当前 instruction。
|
|
78
|
-
* - 空文件表示调用方显式固化了空
|
|
78
|
+
* - 空文件表示调用方显式固化了空 system。
|
|
79
79
|
*/
|
|
80
80
|
export function getSdkAgentSessionInstructionPath(projectRoot, agentId, sessionId) {
|
|
81
81
|
return path.join(getSdkAgentSessionDirPath(projectRoot, agentId, sessionId), "instruction.md");
|
|
@@ -74,8 +74,10 @@ export interface AgentSession extends AgentSessionActor {
|
|
|
74
74
|
readonly config: AgentSessionConfigSnapshot;
|
|
75
75
|
/** 写入当前 session 默认配置。 */
|
|
76
76
|
set(input: AgentSessionSetInput): Promise<void>;
|
|
77
|
-
/** 把当前 Session
|
|
77
|
+
/** 把当前 Session 首次生成后固定的完整 system 显式固化到 instruction.md。 */
|
|
78
78
|
snapshot(): Promise<void>;
|
|
79
|
+
/** 使用 Agent 当前 instruction 与 plugin 显式重新生成 Session system。 */
|
|
80
|
+
syncshot(): Promise<void>;
|
|
79
81
|
/** 从当前 session 创建一个分叉会话。 */
|
|
80
82
|
fork(input?: AgentSessionForkInput | string): Promise<AgentSession>;
|
|
81
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionActor.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionActor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SessionActor.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionActor.ts"],"names":[],"mappings":"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"}
|
|
@@ -185,7 +185,7 @@ export interface AgentSessionSystemSessionInfo {
|
|
|
185
185
|
timezone: string;
|
|
186
186
|
}
|
|
187
187
|
/**
|
|
188
|
-
* 当前 session
|
|
188
|
+
* 当前 session 首次生成后固定的完整 system prompt 快照。
|
|
189
189
|
*/
|
|
190
190
|
export interface AgentSessionSystemSnapshot {
|
|
191
191
|
/** 当前 sessionId。 */
|
|
@@ -199,7 +199,7 @@ export interface AgentSessionSystemSnapshot {
|
|
|
199
199
|
* - 每轮动态信息应由调用方放入 user message,避免破坏 instruction 缓存命中。
|
|
200
200
|
*/
|
|
201
201
|
session: AgentSessionSystemSessionInfo;
|
|
202
|
-
/**
|
|
202
|
+
/** 首次生成后固定的 system blocks,按进入模型的顺序排列。 */
|
|
203
203
|
blocks: AgentSessionSystemBlock[];
|
|
204
204
|
}
|
|
205
205
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionTypes.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CAEpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC;IACpE,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,GACrC,MAAM,GACN,aAAa,GACb,QAAQ,GACR,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,sBAAsB;IACtB,MAAM,EAAE,6BAA6B,CAAC;IACtC;;;;;;;;OAQG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,OAAO,EAAE,6BAA6B,CAAC;IACvC,
|
|
1
|
+
{"version":3,"file":"SessionTypes.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session
|
|
2
|
+
* Session system 显式快照存储类型。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 这里只描述 instruction.md 的定位与写入输入。
|
|
6
|
-
* - 文件存在性本身用于表达 Session 是否启用显式
|
|
6
|
+
* - 文件存在性本身用于表达 Session 是否启用显式 system 快照。
|
|
7
7
|
*/
|
|
8
8
|
/** Session instruction.md 的稳定定位信息。 */
|
|
9
9
|
export interface SessionInstructionStorageLocation {
|
|
@@ -16,7 +16,7 @@ export interface SessionInstructionStorageLocation {
|
|
|
16
16
|
}
|
|
17
17
|
/** 原子写入 Session instruction.md 使用的完整输入。 */
|
|
18
18
|
export interface WriteSessionInstructionInput extends SessionInstructionStorageLocation {
|
|
19
|
-
/** 当前 Session
|
|
19
|
+
/** 当前 Session 首次生成后固定的完整 system Markdown。 */
|
|
20
20
|
instruction: string;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=SessionInstruction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionInstruction.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionInstruction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sCAAsC;AACtC,MAAM,WAAW,iCAAiC;IAChD,eAAe;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,2CAA2C;AAC3C,MAAM,WAAW,4BACf,SAAQ,iCAAiC;IACzC,
|
|
1
|
+
{"version":3,"file":"SessionInstruction.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionInstruction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sCAAsC;AACtC,MAAM,WAAW,iCAAiC;IAChD,eAAe;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,2CAA2C;AAC3C,MAAM,WAAW,4BACf,SAAQ,iCAAiC;IACzC,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session
|
|
2
|
+
* Session system 显式快照存储类型。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 这里只描述 instruction.md 的定位与写入输入。
|
|
6
|
-
* - 文件存在性本身用于表达 Session 是否启用显式
|
|
6
|
+
* - 文件存在性本身用于表达 Session 是否启用显式 system 快照。
|
|
7
7
|
*/
|
|
8
8
|
export {};
|
|
9
9
|
//# sourceMappingURL=SessionInstruction.js.map
|
|
@@ -65,9 +65,17 @@ export interface SessionOptions {
|
|
|
65
65
|
*
|
|
66
66
|
* 关键点(中文)
|
|
67
67
|
* - Session 创建后不再动态读取 Agent instruction。
|
|
68
|
-
* - `session.snapshot()`
|
|
68
|
+
* - `session.snapshot()` 会把首次生成后固定的完整 system 显式写入本地文件。
|
|
69
69
|
*/
|
|
70
70
|
instruction_system_blocks: AgentSessionSystemBlock[];
|
|
71
|
+
/**
|
|
72
|
+
* 读取当前 Agent configured instruction system blocks。
|
|
73
|
+
*
|
|
74
|
+
* 关键点(中文)
|
|
75
|
+
* - 仅供 `session.syncshot()` 显式重新生成 system 使用。
|
|
76
|
+
* - 普通 Session 执行仍使用首次生成后固定的 system snapshot。
|
|
77
|
+
*/
|
|
78
|
+
get_instruction_system_blocks: () => AgentSessionSystemBlock[];
|
|
71
79
|
/**
|
|
72
80
|
* 读取当前 Agent configured env。
|
|
73
81
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionOptions.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,cAAc,IAAI,WAAW,CAAC;IAE9B;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,qBAAqB,CACnB,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,yBAAyB,EAAE,uBAAuB,EAAE,CAAC;IAErD;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;IAErD;;OAEG;IACH,4BAA4B,EAAE,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAEvE;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,6BAA6B;IAC7B,aAAa,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;IAE5C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B"}
|
|
1
|
+
{"version":3,"file":"SessionOptions.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,cAAc,IAAI,WAAW,CAAC;IAE9B;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,qBAAqB,CACnB,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,yBAAyB,EAAE,uBAAuB,EAAE,CAAC;IAErD;;;;;;OAMG;IACH,6BAA6B,EAAE,MAAM,uBAAuB,EAAE,CAAC;IAE/D;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;IAErD;;OAEG;IACH,4BAA4B,EAAE,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAEvE;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,6BAA6B;IAC7B,aAAa,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;IAE5C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@downcity/agent",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.282",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Downcity Agent 运行时 — 单 Agent 执行壳与本机 RPC 能力",
|
|
6
6
|
"main": "./bin/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@downcity/shell": "^0.1.
|
|
15
|
+
"@downcity/shell": "^0.1.133",
|
|
16
16
|
"@downcity/type": "0.1.161",
|
|
17
17
|
"ai": "^6.0.193",
|
|
18
18
|
"commander": "^15.0.0",
|
|
@@ -2,6 +2,7 @@ import fs from "node:fs";
|
|
|
2
2
|
import fsp from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -15,8 +16,11 @@ import { fileURLToPath } from "node:url";
|
|
|
15
16
|
|
|
16
17
|
const __filename = fileURLToPath(import.meta.url);
|
|
17
18
|
const __dirname = path.dirname(__filename);
|
|
19
|
+
const module_require = createRequire(import.meta.url);
|
|
18
20
|
const packageRoot = path.resolve(__dirname, "..");
|
|
19
21
|
const srcRoot = path.join(packageRoot, "src");
|
|
22
|
+
const tsc_entry = module_require.resolve("typescript/bin/tsc");
|
|
23
|
+
const tsc_alias_entry = module_require.resolve("tsc-alias/dist/bin/index.js");
|
|
20
24
|
const generatedHeader = [
|
|
21
25
|
"/**",
|
|
22
26
|
" * 自动生成文件,请勿手改。",
|
|
@@ -114,14 +118,17 @@ function spawnCommand(command, args, options = {}) {
|
|
|
114
118
|
|
|
115
119
|
async function runBuild() {
|
|
116
120
|
await generateTextModules();
|
|
117
|
-
await
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
await Promise.all([
|
|
122
|
+
fsp.rm(path.join(packageRoot, "bin"), { recursive: true, force: true }),
|
|
123
|
+
fsp.rm(path.join(packageRoot, "tsconfig.tsbuildinfo"), { force: true }),
|
|
124
|
+
]);
|
|
125
|
+
await spawnCommand(process.execPath, [tsc_entry]);
|
|
126
|
+
await spawnCommand(process.execPath, [tsc_alias_entry, "-f"]);
|
|
120
127
|
}
|
|
121
128
|
|
|
122
129
|
async function runTypecheck() {
|
|
123
130
|
await generateTextModules();
|
|
124
|
-
await spawnCommand(
|
|
131
|
+
await spawnCommand(process.execPath, [tsc_entry, "--noEmit"]);
|
|
125
132
|
}
|
|
126
133
|
|
|
127
134
|
async function runDev() {
|
|
@@ -201,7 +208,7 @@ async function runDev() {
|
|
|
201
208
|
}
|
|
202
209
|
|
|
203
210
|
await attachWatchers();
|
|
204
|
-
const tscWatch = spawn(
|
|
211
|
+
const tscWatch = spawn(process.execPath, [tsc_entry, "--watch"], {
|
|
205
212
|
cwd: packageRoot,
|
|
206
213
|
stdio: "inherit",
|
|
207
214
|
env: process.env,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 第一次 provider 请求保持阻塞,用来制造真实的运行中配置修改窗口。
|
|
6
|
-
* - Agent instruction 修改不能改变已有 Session;
|
|
6
|
+
* - Agent instruction 与 plugin system 修改不能改变已有 Session;plugin action 视图在 step 检查点生效。
|
|
7
7
|
* - config 与 steer 在同一个 Session step 检查点提交,并继续使用同一个 turn id。
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -135,7 +135,7 @@ test("Agent instruction changes only affect newly created Sessions", async () =>
|
|
|
135
135
|
assert.equal(provider_prompts.length, 2);
|
|
136
136
|
assert.match(provider_prompts[1], /instruction:old/);
|
|
137
137
|
assert.doesNotMatch(provider_prompts[1], /instruction:new/);
|
|
138
|
-
assert.
|
|
138
|
+
assert.match(provider_prompts[1], /plugin-env:old/);
|
|
139
139
|
|
|
140
140
|
const messages = await session.messages();
|
|
141
141
|
const completed_actions = messages.items
|
|
@@ -171,7 +171,132 @@ test("Agent instruction changes only affect newly created Sessions", async () =>
|
|
|
171
171
|
}
|
|
172
172
|
});
|
|
173
173
|
|
|
174
|
-
test("
|
|
174
|
+
test("Plugin registry changes do not rewrite an existing Session system", async () => {
|
|
175
|
+
const agent_path = await fs.mkdtemp(
|
|
176
|
+
path.join(os.tmpdir(), "downcity-session-fixed-plugin-system-"),
|
|
177
|
+
);
|
|
178
|
+
const agent = new Agent({
|
|
179
|
+
id: "fixed_plugin_system_agent",
|
|
180
|
+
path: agent_path,
|
|
181
|
+
model: new MockLanguageModelV3({ modelId: "fixed-plugin-system-model" }),
|
|
182
|
+
});
|
|
183
|
+
const runtime_plugin = createPlugin({
|
|
184
|
+
name: "runtime-system",
|
|
185
|
+
title: "Runtime System",
|
|
186
|
+
description: "Provides a fixed Session system test block",
|
|
187
|
+
system: () => "plugin-system:registered",
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
try {
|
|
191
|
+
const existing_session = await agent.sessions.create({
|
|
192
|
+
sessionId: "existing_session",
|
|
193
|
+
});
|
|
194
|
+
const existing_before = await existing_session.system();
|
|
195
|
+
|
|
196
|
+
await agent.plugins.register(runtime_plugin);
|
|
197
|
+
const existing_after_register = await existing_session.system();
|
|
198
|
+
assert.deepEqual(existing_after_register, existing_before);
|
|
199
|
+
|
|
200
|
+
const registered_session = await agent.sessions.create({
|
|
201
|
+
sessionId: "registered_session",
|
|
202
|
+
});
|
|
203
|
+
const registered_before = await registered_session.system();
|
|
204
|
+
assert.match(
|
|
205
|
+
registered_before.blocks.map((block) => block.content).join("\n"),
|
|
206
|
+
/plugin-system:registered/,
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
await agent.plugins.unregister("runtime-system");
|
|
210
|
+
const registered_after_unregister = await registered_session.system();
|
|
211
|
+
assert.deepEqual(registered_after_unregister, registered_before);
|
|
212
|
+
|
|
213
|
+
const unregistered_session = await agent.sessions.create({
|
|
214
|
+
sessionId: "unregistered_session",
|
|
215
|
+
});
|
|
216
|
+
assert.doesNotMatch(
|
|
217
|
+
(await unregistered_session.system()).blocks
|
|
218
|
+
.map((block) => block.content)
|
|
219
|
+
.join("\n"),
|
|
220
|
+
/plugin-system:registered/,
|
|
221
|
+
);
|
|
222
|
+
} finally {
|
|
223
|
+
await agent.dispose();
|
|
224
|
+
await fs.rm(agent_path, { recursive: true, force: true });
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
test("Session syncshot refreshes system and only rewrites an existing instruction.md", async () => {
|
|
229
|
+
const agent_path = await fs.mkdtemp(
|
|
230
|
+
path.join(os.tmpdir(), "downcity-session-syncshot-"),
|
|
231
|
+
);
|
|
232
|
+
const session_id = "syncshot_session";
|
|
233
|
+
const instruction_path = path.join(
|
|
234
|
+
agent_path,
|
|
235
|
+
".downcity",
|
|
236
|
+
"agents",
|
|
237
|
+
"syncshot_agent",
|
|
238
|
+
"sessions",
|
|
239
|
+
session_id,
|
|
240
|
+
"instruction.md",
|
|
241
|
+
);
|
|
242
|
+
const create_system_plugin = (content) => createPlugin({
|
|
243
|
+
name: "syncshot-system",
|
|
244
|
+
title: "Syncshot System",
|
|
245
|
+
description: "Provides system text refreshed by session.syncshot()",
|
|
246
|
+
system: () => content,
|
|
247
|
+
});
|
|
248
|
+
const model = new MockLanguageModelV3({ modelId: "syncshot-model" });
|
|
249
|
+
const agent = new Agent({
|
|
250
|
+
id: "syncshot_agent",
|
|
251
|
+
path: agent_path,
|
|
252
|
+
model,
|
|
253
|
+
instruction: ["instruction:initial"],
|
|
254
|
+
plugins: [create_system_plugin("plugin-system:initial")],
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
try {
|
|
258
|
+
const session = await agent.sessions.create({ sessionId: session_id });
|
|
259
|
+
const initial_text = (await session.system()).blocks
|
|
260
|
+
.map((block) => block.content)
|
|
261
|
+
.join("\n");
|
|
262
|
+
assert.match(initial_text, /instruction:initial/);
|
|
263
|
+
assert.match(initial_text, /plugin-system:initial/);
|
|
264
|
+
|
|
265
|
+
agent.setInstruction(["instruction:refreshed"]);
|
|
266
|
+
await agent.plugins.register(create_system_plugin("plugin-system:refreshed"));
|
|
267
|
+
await session.syncshot();
|
|
268
|
+
|
|
269
|
+
const refreshed_text = (await session.system()).blocks
|
|
270
|
+
.map((block) => block.content)
|
|
271
|
+
.join("\n");
|
|
272
|
+
assert.match(refreshed_text, /instruction:refreshed/);
|
|
273
|
+
assert.match(refreshed_text, /plugin-system:refreshed/);
|
|
274
|
+
assert.doesNotMatch(refreshed_text, /instruction:initial/);
|
|
275
|
+
await assert.rejects(fs.access(instruction_path));
|
|
276
|
+
|
|
277
|
+
await session.snapshot();
|
|
278
|
+
agent.setInstruction(["instruction:latest"]);
|
|
279
|
+
await agent.plugins.register(create_system_plugin("plugin-system:latest"));
|
|
280
|
+
await Promise.all([session.snapshot(), session.syncshot()]);
|
|
281
|
+
|
|
282
|
+
const latest_system = await session.system();
|
|
283
|
+
const latest_text = latest_system.blocks
|
|
284
|
+
.map((block) => block.content)
|
|
285
|
+
.join("\n");
|
|
286
|
+
const persisted_text = await fs.readFile(instruction_path, "utf8");
|
|
287
|
+
assert.match(latest_text, /instruction:latest/);
|
|
288
|
+
assert.match(latest_text, /plugin-system:latest/);
|
|
289
|
+
assert.equal(
|
|
290
|
+
persisted_text,
|
|
291
|
+
latest_system.blocks.map((block) => block.content).join("\n\n"),
|
|
292
|
+
);
|
|
293
|
+
} finally {
|
|
294
|
+
await agent.dispose();
|
|
295
|
+
await fs.rm(agent_path, { recursive: true, force: true });
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
test("Session snapshot explicitly persists the complete system to instruction.md", async () => {
|
|
175
300
|
const agent_path = await fs.mkdtemp(
|
|
176
301
|
path.join(os.tmpdir(), "downcity-agent-instruction-restart-"),
|
|
177
302
|
);
|
|
@@ -181,6 +306,12 @@ test("Session snapshot explicitly persists instruction.md", async () => {
|
|
|
181
306
|
path: agent_path,
|
|
182
307
|
model,
|
|
183
308
|
instruction: ["instruction:old"],
|
|
309
|
+
plugins: [createPlugin({
|
|
310
|
+
name: "snapshot-system",
|
|
311
|
+
title: "Snapshot System",
|
|
312
|
+
description: "Provides system text persisted by session.snapshot()",
|
|
313
|
+
system: () => "plugin-system:persisted",
|
|
314
|
+
})],
|
|
184
315
|
});
|
|
185
316
|
|
|
186
317
|
try {
|
|
@@ -203,11 +334,15 @@ test("Session snapshot explicitly persists instruction.md", async () => {
|
|
|
203
334
|
"instruction_restart_session",
|
|
204
335
|
"instruction.md",
|
|
205
336
|
);
|
|
206
|
-
|
|
337
|
+
const persisted_system = await fs.readFile(instruction_path, "utf8");
|
|
338
|
+
assert.match(persisted_system, /instruction:old/);
|
|
339
|
+
assert.match(persisted_system, /# Downcity Agent/);
|
|
340
|
+
assert.match(persisted_system, /plugin-system:persisted/);
|
|
341
|
+
assert.match(persisted_system, /Current session context:/);
|
|
207
342
|
|
|
208
343
|
await fs.writeFile(instruction_path, "instruction:manual", "utf8");
|
|
209
344
|
await session.snapshot();
|
|
210
|
-
assert.equal(await fs.readFile(instruction_path, "utf8"),
|
|
345
|
+
assert.equal(await fs.readFile(instruction_path, "utf8"), persisted_system);
|
|
211
346
|
} finally {
|
|
212
347
|
await first_agent.dispose();
|
|
213
348
|
}
|
|
@@ -227,6 +362,7 @@ test("Session snapshot explicitly persists instruction.md", async () => {
|
|
|
227
362
|
.map((block) => block.content)
|
|
228
363
|
.join("\n");
|
|
229
364
|
assert.match(restored_system_text, /instruction:old/);
|
|
365
|
+
assert.match(restored_system_text, /plugin-system:persisted/);
|
|
230
366
|
assert.doesNotMatch(restored_system_text, /instruction:new/);
|
|
231
367
|
} finally {
|
|
232
368
|
await restarted_agent.dispose();
|
|
@@ -418,6 +418,7 @@ export class AgentSessions implements AgentSessionsContract<AgentSession> {
|
|
|
418
418
|
tools: this.tools,
|
|
419
419
|
logger: this.logger,
|
|
420
420
|
instruction_system_blocks: this.load_instruction_system_blocks(),
|
|
421
|
+
get_instruction_system_blocks: () => this.load_instruction_system_blocks(),
|
|
421
422
|
getAgentEnv: () => this.get_agent_env(),
|
|
422
423
|
getAgentModel: () => this.get_agent_model(),
|
|
423
424
|
get_agent_plugins: () => this.get_agent_plugins(),
|
package/src/executor/Executor.ts
CHANGED
|
@@ -42,6 +42,9 @@ type ExecutorOptions = {
|
|
|
42
42
|
retry_count: number,
|
|
43
43
|
) => Promise<SessionComposeInput>;
|
|
44
44
|
|
|
45
|
+
/** 应用 Session 级固定 system snapshot。 */
|
|
46
|
+
apply_system_snapshot?: (input: SessionStepInput) => SessionStepInput;
|
|
47
|
+
|
|
45
48
|
/** 提交 Composer 生成的持久化压缩计划。 */
|
|
46
49
|
commit_compaction: (
|
|
47
50
|
plan: SessionCompactionPlan,
|
|
@@ -73,6 +76,7 @@ export class Executor implements SessionExecutor {
|
|
|
73
76
|
|
|
74
77
|
private readonly composer: SessionComposer;
|
|
75
78
|
private readonly get_compose_input: ExecutorOptions["get_compose_input"];
|
|
79
|
+
private readonly apply_system_snapshot?: ExecutorOptions["apply_system_snapshot"];
|
|
76
80
|
private readonly commit_compaction: ExecutorOptions["commit_compaction"];
|
|
77
81
|
private readonly getModel: ExecutorOptions["getModel"];
|
|
78
82
|
private readonly get_plugins: ExecutorOptions["get_plugins"];
|
|
@@ -92,6 +96,7 @@ export class Executor implements SessionExecutor {
|
|
|
92
96
|
this.sessionId = sessionId;
|
|
93
97
|
this.composer = options.composer;
|
|
94
98
|
this.get_compose_input = options.get_compose_input;
|
|
99
|
+
this.apply_system_snapshot = options.apply_system_snapshot;
|
|
95
100
|
this.commit_compaction = options.commit_compaction;
|
|
96
101
|
this.getModel = options.getModel;
|
|
97
102
|
this.get_plugins = options.get_plugins;
|
|
@@ -340,9 +345,12 @@ export class Executor implements SessionExecutor {
|
|
|
340
345
|
run_context.agentSystems = Object.freeze([
|
|
341
346
|
...compose_input.state.systems,
|
|
342
347
|
]);
|
|
348
|
+
const raw_input = await this.composer.compose(compose_input);
|
|
343
349
|
return {
|
|
344
350
|
compose_input,
|
|
345
|
-
input:
|
|
351
|
+
input: this.apply_system_snapshot
|
|
352
|
+
? this.apply_system_snapshot(raw_input)
|
|
353
|
+
: raw_input,
|
|
346
354
|
model,
|
|
347
355
|
};
|
|
348
356
|
}
|