@downcity/agent 1.1.446 → 1.5.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/bin/agent/Agent.d.ts +29 -2
- package/bin/agent/Agent.d.ts.map +1 -1
- package/bin/agent/Agent.js +56 -10
- package/bin/agent/Agent.js.map +1 -1
- package/bin/agent/AgentSessionIdentity.d.ts +19 -0
- package/bin/agent/AgentSessionIdentity.d.ts.map +1 -0
- package/bin/agent/AgentSessionIdentity.js +26 -0
- package/bin/agent/AgentSessionIdentity.js.map +1 -0
- package/bin/agent/AgentSessions.d.ts +35 -9
- package/bin/agent/AgentSessions.d.ts.map +1 -1
- package/bin/agent/AgentSessions.js +110 -63
- package/bin/agent/AgentSessions.js.map +1 -1
- package/bin/agent/SessionWork.d.ts +85 -0
- package/bin/agent/SessionWork.d.ts.map +1 -0
- package/bin/agent/SessionWork.js +165 -0
- package/bin/agent/SessionWork.js.map +1 -0
- package/bin/index.d.ts +5 -0
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js.map +1 -1
- package/bin/session/Session.d.ts +34 -8
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +102 -27
- package/bin/session/Session.js.map +1 -1
- package/bin/session/input/StepInput.d.ts +15 -0
- package/bin/session/input/StepInput.d.ts.map +1 -1
- package/bin/session/input/StepInput.js +39 -5
- package/bin/session/input/StepInput.js.map +1 -1
- package/bin/session/loop/SessionLoop.d.ts +2 -1
- package/bin/session/loop/SessionLoop.d.ts.map +1 -1
- package/bin/session/loop/SessionLoop.js +7 -9
- package/bin/session/loop/SessionLoop.js.map +1 -1
- package/bin/session/loop/SessionState.d.ts +21 -1
- package/bin/session/loop/SessionState.d.ts.map +1 -1
- package/bin/session/loop/SessionState.js +54 -1
- package/bin/session/loop/SessionState.js.map +1 -1
- package/bin/session/storage/Browse.d.ts.map +1 -1
- package/bin/session/storage/Browse.js +2 -2
- package/bin/session/storage/Browse.js.map +1 -1
- package/bin/session/storage/LocalSessionStore.d.ts.map +1 -1
- package/bin/session/storage/LocalSessionStore.js +7 -7
- package/bin/session/storage/LocalSessionStore.js.map +1 -1
- package/bin/tools/session/SessionToolSchemas.d.ts +34 -0
- package/bin/tools/session/SessionToolSchemas.d.ts.map +1 -0
- package/bin/tools/session/SessionToolSchemas.js +39 -0
- package/bin/tools/session/SessionToolSchemas.js.map +1 -0
- package/bin/tools/session/SessionTools.d.ts +57 -0
- package/bin/tools/session/SessionTools.d.ts.map +1 -0
- package/bin/tools/session/SessionTools.js +111 -0
- package/bin/tools/session/SessionTools.js.map +1 -0
- package/bin/types/agent/AgentOptions.d.ts +10 -1
- package/bin/types/agent/AgentOptions.d.ts.map +1 -1
- package/bin/types/agent/AgentSessionCollection.d.ts +17 -6
- package/bin/types/agent/AgentSessionCollection.d.ts.map +1 -1
- package/bin/types/agent/AgentSessionCollection.js +1 -1
- package/bin/types/agent/AgentSessionInput.d.ts +14 -0
- package/bin/types/agent/AgentSessionInput.d.ts.map +1 -0
- package/bin/types/agent/AgentSessionInput.js +9 -0
- package/bin/types/agent/AgentSessionInput.js.map +1 -0
- package/bin/types/agent/SessionActor.d.ts +16 -5
- package/bin/types/agent/SessionActor.d.ts.map +1 -1
- package/bin/types/agent/SessionContext.d.ts +26 -0
- package/bin/types/agent/SessionContext.d.ts.map +1 -0
- package/bin/types/agent/SessionContext.js +12 -0
- package/bin/types/agent/SessionContext.js.map +1 -0
- package/bin/types/agent/SessionState.d.ts +55 -0
- package/bin/types/agent/SessionState.d.ts.map +1 -0
- package/bin/types/agent/SessionState.js +15 -0
- package/bin/types/agent/SessionState.js.map +1 -0
- package/bin/types/agent/SessionTypes.d.ts +12 -1
- package/bin/types/agent/SessionTypes.d.ts.map +1 -1
- package/bin/types/agent/SessionWork.d.ts +53 -0
- package/bin/types/agent/SessionWork.d.ts.map +1 -0
- package/bin/types/agent/SessionWork.js +13 -0
- package/bin/types/agent/SessionWork.js.map +1 -0
- package/bin/types/session/SessionLocalState.d.ts +20 -1
- package/bin/types/session/SessionLocalState.d.ts.map +1 -1
- package/bin/types/session/SessionLoop.d.ts +6 -2
- package/bin/types/session/SessionLoop.d.ts.map +1 -1
- package/bin/types/session/SessionOptions.d.ts +9 -11
- package/bin/types/session/SessionOptions.d.ts.map +1 -1
- package/bin/types/session/StepInput.d.ts +5 -5
- package/bin/types/session/StepInput.d.ts.map +1 -1
- package/bin/types/tools/session/SessionTools.d.ts +92 -0
- package/bin/types/tools/session/SessionTools.d.ts.map +1 -0
- package/bin/types/tools/session/SessionTools.js +12 -0
- package/bin/types/tools/session/SessionTools.js.map +1 -0
- package/package.json +2 -2
- package/scripts/session-executor-context-pressure.test.mjs +1 -1
- package/scripts/session-executor-failure-result.test.mjs +1 -1
- package/scripts/session-executor-max-steps.test.mjs +1 -1
- package/scripts/session-initialization.test.mjs +4 -2
- package/scripts/session-interaction-migration.test.mjs +2 -2
- package/scripts/session-prompt-idempotency.test.mjs +2 -2
- package/scripts/session-storage-sqlite.test.mjs +3 -3
- package/scripts/session-turn-context.test.mjs +4 -4
- package/src/agent/Agent.ts +64 -10
- package/src/agent/AgentSessionIdentity.ts +30 -0
- package/src/agent/AgentSessions.ts +119 -77
- package/src/agent/SessionWork.ts +235 -0
- package/src/index.ts +19 -0
- package/src/session/Session.ts +112 -29
- package/src/session/input/StepInput.ts +42 -7
- package/src/session/loop/SessionLoop.ts +7 -9
- package/src/session/loop/SessionState.ts +61 -1
- package/src/session/storage/Browse.ts +2 -1
- package/src/session/storage/LocalSessionStore.ts +7 -7
- package/src/tools/session/SessionToolSchemas.ts +61 -0
- package/src/tools/session/SessionTools.ts +170 -0
- package/src/types/agent/AgentOptions.ts +12 -1
- package/src/types/agent/AgentSessionCollection.ts +18 -7
- package/src/types/agent/AgentSessionInput.ts +15 -0
- package/src/types/agent/SessionActor.ts +23 -5
- package/src/types/agent/SessionContext.ts +29 -0
- package/src/types/agent/SessionState.ts +74 -0
- package/src/types/agent/SessionTypes.ts +13 -1
- package/src/types/agent/SessionWork.ts +57 -0
- package/src/types/session/SessionLocalState.ts +24 -1
- package/src/types/session/SessionLoop.ts +6 -2
- package/src/types/session/SessionOptions.ts +10 -14
- package/src/types/session/StepInput.ts +5 -5
- package/src/types/tools/session/SessionTools.ts +104 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session 状态读取协议。
|
|
3
|
+
*
|
|
4
|
+
* 职责说明(中文)
|
|
5
|
+
* - Session 的持久化配置与当前运行时实例都可以通过一个带泛型的 `get(key)` 读取。
|
|
6
|
+
* - 两类值明确分开:
|
|
7
|
+
* 1. 持久化字段:可序列化,随 Session 落盘,跨进程恢复后仍可读(如 `workspace_id`、`title`)。
|
|
8
|
+
* 2. 运行时实例:只存在于当前进程,由宿主在创建或打开 Session 时注入(如 `workspace`、`model`)。
|
|
9
|
+
*
|
|
10
|
+
* 关键点(中文)
|
|
11
|
+
* - 不提供 `get_workspace()` 这类专用方法:新增状态只需扩展这里的键,不需要新增 API。
|
|
12
|
+
* - 键名即语义,`workspace_id` 是持久化标识,`workspace` 是运行时实例,两者不可互相推导。
|
|
13
|
+
*/
|
|
14
|
+
import type { ModelClient, SessionApprovalMode, WorkspaceRuntime } from "@downcity/type";
|
|
15
|
+
/**
|
|
16
|
+
* `session.get(key)` 支持的键到值类型的映射。
|
|
17
|
+
*
|
|
18
|
+
* 两类值明确分开:
|
|
19
|
+
* 1. 持久化字段:可序列化,随 Session 落盘,跨进程恢复后仍可读。
|
|
20
|
+
* 2. 运行时实例:只存在于当前进程,由宿主在创建或打开 Session 时注入。
|
|
21
|
+
*/
|
|
22
|
+
export interface AgentSessionStateValues {
|
|
23
|
+
/** 当前 Session 正在使用的 Workspace 实例;未注入或已脱离时为 undefined。 */
|
|
24
|
+
workspace: WorkspaceRuntime | undefined;
|
|
25
|
+
/** 当前 Session 持久化的 Workspace 标识;没有项目上下文时为 undefined。 */
|
|
26
|
+
workspace_id: string | undefined;
|
|
27
|
+
/** 当前 Session 使用的运行时模型实例。 */
|
|
28
|
+
model: ModelClient | undefined;
|
|
29
|
+
/** 当前模型的轻量可读标签。 */
|
|
30
|
+
model_label: string | undefined;
|
|
31
|
+
/** 当前模型声明的上下文窗口长度,单位为 token。 */
|
|
32
|
+
model_context_window: number | undefined;
|
|
33
|
+
/** 当前 Session 已接受的审批模式。 */
|
|
34
|
+
approval_mode: SessionApprovalMode;
|
|
35
|
+
/** 当前 Session 的用户可见标题;未生成时为空。 */
|
|
36
|
+
title: string | undefined;
|
|
37
|
+
/** 当前 Session 的参考时区,IANA 名称。 */
|
|
38
|
+
timezone: string;
|
|
39
|
+
/** 当前 Session 首次创建时间戳(ms)。 */
|
|
40
|
+
created_at: number;
|
|
41
|
+
/** 当前 Session 最近一次更新时间戳(ms);尚未写入时为 undefined。 */
|
|
42
|
+
updated_at: number | undefined;
|
|
43
|
+
}
|
|
44
|
+
/** `session.get(key)` 支持的键。 */
|
|
45
|
+
export type AgentSessionStateKey = keyof AgentSessionStateValues;
|
|
46
|
+
/**
|
|
47
|
+
* 远程 Session 可读取的键:只包括可序列化的持久化字段。
|
|
48
|
+
*
|
|
49
|
+
* 关键点(中文):只包括能从远程详情快照直接得到的可序列化字段;进程内实例
|
|
50
|
+
* (`workspace`、`model`)与需要单独查询的状态(`approval_mode`)不在其中。
|
|
51
|
+
*/
|
|
52
|
+
export type RemoteSessionStateKey = Exclude<AgentSessionStateKey, "workspace" | "model" | "model_context_window" | "approval_mode">;
|
|
53
|
+
/** 远程 `session.get(key)` 支持的值。 */
|
|
54
|
+
export type RemoteSessionStateValues = Pick<AgentSessionStateValues, RemoteSessionStateKey>;
|
|
55
|
+
//# sourceMappingURL=SessionState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionState.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,yDAAyD;IACzD,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAExC,wDAAwD;IACxD,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC,6BAA6B;IAC7B,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAE/B,mBAAmB;IACnB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,gCAAgC;IAChC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,2BAA2B;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IAEnC,iCAAiC;IACjC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1B,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IAEnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,+BAA+B;AAC/B,MAAM,MAAM,oBAAoB,GAAG,MAAM,uBAAuB,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,oBAAoB,EACpB,WAAW,GAAG,OAAO,GAAG,sBAAsB,GAAG,eAAe,CACjE,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,uBAAuB,EACvB,qBAAqB,CACtB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session 状态读取协议。
|
|
3
|
+
*
|
|
4
|
+
* 职责说明(中文)
|
|
5
|
+
* - Session 的持久化配置与当前运行时实例都可以通过一个带泛型的 `get(key)` 读取。
|
|
6
|
+
* - 两类值明确分开:
|
|
7
|
+
* 1. 持久化字段:可序列化,随 Session 落盘,跨进程恢复后仍可读(如 `workspace_id`、`title`)。
|
|
8
|
+
* 2. 运行时实例:只存在于当前进程,由宿主在创建或打开 Session 时注入(如 `workspace`、`model`)。
|
|
9
|
+
*
|
|
10
|
+
* 关键点(中文)
|
|
11
|
+
* - 不提供 `get_workspace()` 这类专用方法:新增状态只需扩展这里的键,不需要新增 API。
|
|
12
|
+
* - 键名即语义,`workspace_id` 是持久化标识,`workspace` 是运行时实例,两者不可互相推导。
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=SessionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionState.js","sourceRoot":"","sources":["../../../src/types/agent/SessionState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import type { ModelClient } from "@downcity/type";
|
|
9
9
|
import type { SessionApprovalMode } from "@downcity/type";
|
|
10
10
|
import type { SessionOrigin } from "@downcity/type";
|
|
11
|
+
import type { WorkspaceRuntime } from "@downcity/type";
|
|
11
12
|
import type { SessionSystemBlock, SessionSystemBlockSource } from "@downcity/type/session";
|
|
12
13
|
/**
|
|
13
14
|
* 新建 Session 的输入参数。
|
|
@@ -19,7 +20,7 @@ export interface AgentCreateSessionInput {
|
|
|
19
20
|
/**
|
|
20
21
|
* 当前 Session 的创建来源。
|
|
21
22
|
*
|
|
22
|
-
* 省略时使用 `{ type: "
|
|
23
|
+
* 省略时使用 `{ type: "work" }`;其他调用方可以使用任意稳定的非空类型。
|
|
23
24
|
*/
|
|
24
25
|
readonly origin?: SessionOrigin;
|
|
25
26
|
}
|
|
@@ -81,6 +82,16 @@ export interface AgentSessionSetInput {
|
|
|
81
82
|
* - 执行面在下一 Session Step 检查点原子提交该值。
|
|
82
83
|
*/
|
|
83
84
|
security?: AgentSessionSecurityConfig;
|
|
85
|
+
/**
|
|
86
|
+
* 当前 Session 的工作目录。
|
|
87
|
+
*
|
|
88
|
+
* 关键点(中文)
|
|
89
|
+
* - 与 `model` 同级:只接受宿主持有的运行时实例,持久化的是它的 `id`。
|
|
90
|
+
* - 传空值表示脱离项目上下文;此时没有文件工具与 Shell,但纯模型对话仍可用。
|
|
91
|
+
* - 不迁移已有消息、附件与工具结果;它们属于发生时的目录。
|
|
92
|
+
* - 执行中的 Turn 沿用旧目录,从下一 Step 检查点起生效。
|
|
93
|
+
*/
|
|
94
|
+
workspace?: WorkspaceRuntime | null;
|
|
84
95
|
}
|
|
85
96
|
/** Session 配置提交后的 Action 可观测性选项。 */
|
|
86
97
|
export interface AgentSessionSetOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionTypes.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;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,CAAC,EAAE,WAAW,CAAC;IAEpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionTypes.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;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,CAAC,EAAE,WAAW,CAAC;IAEpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IAEtC;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrC;AAED,oCAAoC;AACpC,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,kCAAkC;AAClC,MAAM,WAAW,0BAA0B;IACzC,uBAAuB;IACvB,aAAa,EAAE,mBAAmB,CAAC;CACpC;AAED,8BAA8B;AAC9B,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC;AAED,sBAAsB;AACtB,MAAM,WAAW,0BAA0B;IACzC,oCAAoC;IACpC,aAAa,EAAE,mBAAmB,CAAC;IACnC,8BAA8B;IAC9B,uBAAuB,EAAE,mBAAmB,CAAC;CAC9C;AAED,sBAAsB;AACtB,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,QAAQ,EAAE,0BAA0B,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC;IAChE,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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,wBAAwB,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,OAAO,EAAE,6BAA6B,CAAC;IACvC,yCAAyC;IACzC,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;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,yBAAyB;IACxC,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;CAAG;AAE9E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,8BAA8B;IAC9B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 会话安排与观察其他会话的运行时协议。
|
|
3
|
+
*
|
|
4
|
+
* 职责说明(中文)
|
|
5
|
+
* - Agent 自己的会话需要「开一条活、看进展、代答、收回」,这些动作依赖 Session 集合与运行态。
|
|
6
|
+
* - 工具实现只依赖本协议,不接触 AgentSessions 或 Session 内部结构。
|
|
7
|
+
* - 它描述的是「一件活的完整动作」,而不是对 Session 方法逐一转发。
|
|
8
|
+
*
|
|
9
|
+
* 关键点(中文)
|
|
10
|
+
* - 这组能力只注入 `origin.type === "agent"` 的会话,因此活不会再派活。
|
|
11
|
+
*/
|
|
12
|
+
import type { SessionInteractionResponse, WorkspaceRuntime } from "@downcity/type";
|
|
13
|
+
import type { SessionCheckDetailToolOutput, SessionToolSummary } from "../../types/tools/session/SessionTools.js";
|
|
14
|
+
/** Agent 会话可用的会话工作运行时。 */
|
|
15
|
+
export interface SessionWorkContract {
|
|
16
|
+
/** 开一条工作会话并立刻把任务交给它;返回时该会话可能仍在执行。 */
|
|
17
|
+
spawn(input: {
|
|
18
|
+
/** 交给新会话的完整任务文本。 */
|
|
19
|
+
query: string;
|
|
20
|
+
/** 可选短标题,用于清单展示。 */
|
|
21
|
+
title?: string;
|
|
22
|
+
/** 新会话的初始目录;省略时使用 Agent 会话当前的目录。 */
|
|
23
|
+
workspace?: WorkspaceRuntime;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
session_id: string;
|
|
26
|
+
}>;
|
|
27
|
+
/** 列出当前 Agent 的全部工作会话摘要,按最近更新倒序。 */
|
|
28
|
+
list(input?: {
|
|
29
|
+
limit?: number;
|
|
30
|
+
}): Promise<SessionToolSummary[]>;
|
|
31
|
+
/** 读取单条会话的摘要、最近消息与待响应的 Interaction。 */
|
|
32
|
+
read(input: {
|
|
33
|
+
/** 目标会话稳定标识。 */
|
|
34
|
+
session_id: string;
|
|
35
|
+
/** 返回的最近消息条数上限。 */
|
|
36
|
+
limit?: number;
|
|
37
|
+
}): Promise<SessionCheckDetailToolOutput>;
|
|
38
|
+
/** 代答某条会话正在等待的用户响应。 */
|
|
39
|
+
reply(input: {
|
|
40
|
+
/** 目标会话稳定标识。 */
|
|
41
|
+
session_id: string;
|
|
42
|
+
/** 待响应的 Interaction 标识。 */
|
|
43
|
+
interaction_id: string;
|
|
44
|
+
/** 与原请求一致的完整结构化响应。 */
|
|
45
|
+
response: SessionInteractionResponse;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
/** 停止某条会话当前正在执行的 Turn。 */
|
|
48
|
+
stop(input: {
|
|
49
|
+
/** 目标会话稳定标识。 */
|
|
50
|
+
session_id: string;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=SessionWork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionWork.d.ts","sourceRoot":"","sources":["../../../src/types/agent/SessionWork.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EACV,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,uCAAuC,CAAC;AAE/C,0BAA0B;AAC1B,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,KAAK,CAAC,KAAK,EAAE;QACX,oBAAoB;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,oCAAoC;QACpC,SAAS,CAAC,EAAE,gBAAgB,CAAC;KAC9B,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEpC,oCAAoC;IACpC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEhE,uCAAuC;IACvC,IAAI,CAAC,KAAK,EAAE;QACV,gBAAgB;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,mBAAmB;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAE1C,uBAAuB;IACvB,KAAK,CAAC,KAAK,EAAE;QACX,gBAAgB;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,2BAA2B;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,sBAAsB;QACtB,QAAQ,EAAE,0BAA0B,CAAC;KACtC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB,0BAA0B;IAC1B,IAAI,CAAC,KAAK,EAAE;QACV,gBAAgB;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 会话安排与观察其他会话的运行时协议。
|
|
3
|
+
*
|
|
4
|
+
* 职责说明(中文)
|
|
5
|
+
* - Agent 自己的会话需要「开一条活、看进展、代答、收回」,这些动作依赖 Session 集合与运行态。
|
|
6
|
+
* - 工具实现只依赖本协议,不接触 AgentSessions 或 Session 内部结构。
|
|
7
|
+
* - 它描述的是「一件活的完整动作」,而不是对 Session 方法逐一转发。
|
|
8
|
+
*
|
|
9
|
+
* 关键点(中文)
|
|
10
|
+
* - 这组能力只注入 `origin.type === "agent"` 的会话,因此活不会再派活。
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=SessionWork.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionWork.js","sourceRoot":"","sources":["../../../src/types/agent/SessionWork.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - 这里只保存运行态,不承载行为逻辑。
|
|
8
8
|
*/
|
|
9
9
|
import type { AgentSessionConfigSnapshot } from "../../types/agent/SessionTypes.js";
|
|
10
|
-
import type { SessionApprovalMode } from "@downcity/type";
|
|
10
|
+
import type { SessionApprovalMode, WorkspaceRuntime } from "@downcity/type";
|
|
11
11
|
/**
|
|
12
12
|
* 本地 Session 内存状态。
|
|
13
13
|
*/
|
|
@@ -26,10 +26,29 @@ export interface SessionLocalState {
|
|
|
26
26
|
effective_session_config: AgentSessionConfigSnapshot;
|
|
27
27
|
/** 当前 Session 已接受并持久化的 Shell 审批模式。 */
|
|
28
28
|
configured_approval_mode: SessionApprovalMode;
|
|
29
|
+
/**
|
|
30
|
+
* 当前 Session 正在哪个 Workspace 中干活。
|
|
31
|
+
*
|
|
32
|
+
* 关键点(中文)
|
|
33
|
+
* - 这是会话状态,不是会话身份:它可以在会话中切换,切换不改变 session_id 与历史。
|
|
34
|
+
* - 为空表示这段会话没有项目上下文,此时没有文件工具与 Shell。
|
|
35
|
+
*/
|
|
36
|
+
current_workspace?: WorkspaceRuntime;
|
|
37
|
+
/**
|
|
38
|
+
* 没有 Workspace 时使用的目录回退值。
|
|
39
|
+
*
|
|
40
|
+
* 关键点(中文):只用于 system 快照与项目根展示;没有 Workspace 就没有文件工具,
|
|
41
|
+
* 因此该值不会被当作可访问路径使用。
|
|
42
|
+
*/
|
|
43
|
+
fallback_workspace_path: string;
|
|
29
44
|
/**
|
|
30
45
|
* 当前 session 创建时间(毫秒时间戳)。
|
|
31
46
|
*/
|
|
32
47
|
created_at: number;
|
|
48
|
+
/** 当前 session 最近一次更新时间(毫秒时间戳);尚未写入时为空。 */
|
|
49
|
+
updated_at?: number;
|
|
50
|
+
/** 当前 session 的用户可见标题;未生成时为空。 */
|
|
51
|
+
title?: string;
|
|
33
52
|
/**
|
|
34
53
|
* 当前 session 参考时区。
|
|
35
54
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionLocalState.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionLocalState.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionLocalState.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionLocalState.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,cAAc,EAAE,0BAA0B,CAAC;IAE3C;;;;;;OAMG;IACH,wBAAwB,EAAE,0BAA0B,CAAC;IAErD,sCAAsC;IACtC,wBAAwB,EAAE,mBAAmB,CAAC;IAE9C;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAErC;;;;;OAKG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1C"}
|
|
@@ -42,8 +42,12 @@ export interface SessionLoopOptions {
|
|
|
42
42
|
session_id: string;
|
|
43
43
|
/** 当前 Session 的完整来源元数据。 */
|
|
44
44
|
session_origin: SessionOrigin;
|
|
45
|
-
/**
|
|
46
|
-
|
|
45
|
+
/**
|
|
46
|
+
* 当前 Session 的目录解析器。
|
|
47
|
+
*
|
|
48
|
+
* 关键点(中文):目录是可变的会话状态,因此按需读取而不是构造时固定。
|
|
49
|
+
*/
|
|
50
|
+
get_workspace_path: () => string;
|
|
47
51
|
/**
|
|
48
52
|
* 已装配的执行器。
|
|
49
53
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionLoop.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionLoop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EACV,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,4BAA4B,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,qBAAqB;AACrB,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,sBAAsB;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAED,uBAAuB;AACvB,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,0BAA0B;IAC1B,iBAAiB,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC3D,+BAA+B;IAC/B,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,mCAAmC;IACnC,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAwB;AACxB,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,cAAc,EAAE,aAAa,CAAC;IAC9B
|
|
1
|
+
{"version":3,"file":"SessionLoop.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionLoop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EACV,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,4BAA4B,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,qBAAqB;AACrB,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,sBAAsB;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAED,uBAAuB;AACvB,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,0BAA0B;IAC1B,iBAAiB,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC3D,+BAA+B;IAC/B,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,mCAAmC;IACnC,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAwB;AACxB,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,cAAc,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,uCAAuC;IACvC,eAAe,EAAE,CACf,OAAO,EAAE,4BAA4B,KAClC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,mCAAmC;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,yCAAyC;IACzC,QAAQ,EAAE,eAAe,CAAC;IAC1B,gCAAgC;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,2BAA2B,GAAG,sBAAsB,CAAC;IACnE,sBAAsB;IACtB,SAAS,EAAE,MAAM,WAAW,CAAC;IAC7B,yBAAyB;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE;QAC3B,oBAAoB;QACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,qBAAqB;QACrB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;KACpC,KAAK,eAAe,CAAC;CACvB"}
|
|
@@ -45,10 +45,15 @@ export interface SessionOptions {
|
|
|
45
45
|
agent_name: string;
|
|
46
46
|
/** 当前 Agent 一句话能力描述;进入工具与扩展的调用环境。 */
|
|
47
47
|
agent_description: string;
|
|
48
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* 当前 Session 的初始目录。
|
|
50
|
+
*
|
|
51
|
+
* 关键点(中文):这是会话配置而非身份,可在会话中通过 `set({ workspace })` 切换;
|
|
52
|
+
* 省略时该 Session 没有项目上下文。
|
|
53
|
+
*/
|
|
54
|
+
workspace?: WorkspaceRuntime;
|
|
55
|
+
/** 没有 Workspace 时用于 system 快照与项目根展示的回退路径。 */
|
|
49
56
|
workspace_path: string;
|
|
50
|
-
/** 当前 Session 创建时绑定的 Workspace 稳定标识;未传 Workspace 时为空。 */
|
|
51
|
-
workspace_id?: string;
|
|
52
57
|
/** 当前 Session 的创建来源与物理存储分区。 */
|
|
53
58
|
origin: SessionOrigin;
|
|
54
59
|
/** 当前 Session 独享的领域持久化视图。 */
|
|
@@ -89,14 +94,7 @@ export interface SessionOptions {
|
|
|
89
94
|
* - 普通 Session 执行仍使用首次生成后固定的 system snapshot。
|
|
90
95
|
*/
|
|
91
96
|
get_instruction_system_blocks: () => AgentSessionSystemBlock[];
|
|
92
|
-
/**
|
|
93
|
-
* 读取当前 Workspace configured env。
|
|
94
|
-
*
|
|
95
|
-
* 关键点(中文)
|
|
96
|
-
* - 每个 Step 在检查点读取一次并形成不可变快照。
|
|
97
|
-
*/
|
|
98
|
-
get_workspace_env: () => Record<string, string>;
|
|
99
|
-
/** 读取当前 Session 绑定的 Workspace 实例;未绑定时返回 undefined。 */
|
|
97
|
+
/** 读取当前 Session 的当前目录;未绑定时返回 undefined。 */
|
|
100
98
|
get_workspace: () => WorkspaceRuntime | undefined;
|
|
101
99
|
/** 在每个 Step 检查点读取当前生效的扩展处理器集合。 */
|
|
102
100
|
get_hooks: () => ToolHookSet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionOptions.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,IAAI,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpG,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,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,gBAAgB,IAAI,WAAW,CAAC;IAEhC,+BAA+B;IAC/B,wBAAwB,CAAC,IAAI,IAAI,CAAC;IAElC;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC;CAEzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAE1B
|
|
1
|
+
{"version":3,"file":"SessionOptions.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,IAAI,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpG,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,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,gBAAgB,IAAI,WAAW,CAAC;IAEhC,+BAA+B;IAC/B,wBAAwB,CAAC,IAAI,IAAI,CAAC;IAElC;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC;CAEzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IAEvB,+BAA+B;IAC/B,MAAM,EAAE,aAAa,CAAC;IAEtB,6BAA6B;IAC7B,KAAK,EAAE,cAAc,CAAC;IAEtB,qCAAqC;IACrC,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,cAAc,CAAC;IAE7D;;;;;;OAMG;IACH,uBAAuB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAEhE;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB,kCAAkC;IAClC,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC;;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,2CAA2C;IAC3C,aAAa,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;IAElD,kCAAkC;IAClC,SAAS,EAAE,MAAM,WAAW,CAAC;IAG7B,6BAA6B;IAC7B,eAAe,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAE/C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B"}
|
|
@@ -21,24 +21,24 @@ export interface StepInputOptions {
|
|
|
21
21
|
session_id: string;
|
|
22
22
|
/** 当前 Session 的创建来源。 */
|
|
23
23
|
session_origin: SessionOrigin;
|
|
24
|
-
/** 当前 Session
|
|
25
|
-
|
|
24
|
+
/** 当前 Session 使用的目录解析器;目录是可变的会话状态。 */
|
|
25
|
+
get_workspace_path: () => string;
|
|
26
26
|
/** 当前 Session 的领域持久化视图。 */
|
|
27
27
|
store: SessionStorage;
|
|
28
28
|
/** 当前 Session 使用的统一 Composer。 */
|
|
29
29
|
composer: SessionComposer;
|
|
30
30
|
/** 在每个 Step 检查点读取当前可用 Tool 集合。 */
|
|
31
31
|
get_tools: () => Record<string, Tool>;
|
|
32
|
-
/** 读取当前 Session
|
|
32
|
+
/** 读取当前 Session 的当前目录;未绑定时返回 undefined。 */
|
|
33
33
|
get_workspace?: () => WorkspaceRuntime | undefined;
|
|
34
|
+
/** 读取当前持久化的目录标识;内存实例不存在时用它触发还原。 */
|
|
35
|
+
/** 把持久化的 workspace_id 还原为当前可用实例;由宿主在注入时提供。 */
|
|
34
36
|
/** 当前 Session 创建时捕获的 instruction system blocks。 */
|
|
35
37
|
instruction_system_blocks: AgentSessionSystemBlock[];
|
|
36
38
|
/** 显式刷新 system 时读取 Agent 最新 instruction system blocks。 */
|
|
37
39
|
get_instruction_system_blocks: () => AgentSessionSystemBlock[];
|
|
38
40
|
/** 在每个 Step 检查点读取当前生效的扩展处理器集合。 */
|
|
39
41
|
get_hooks: () => ToolHookSet;
|
|
40
|
-
/** 在每个 Step 检查点读取 Workspace env。 */
|
|
41
|
-
get_workspace_env: () => Record<string, string>;
|
|
42
42
|
/** 读取当前 Session 实际使用的模型。 */
|
|
43
43
|
get_model: () => ModelClient | undefined;
|
|
44
44
|
/** 读取当前模型声明的上下文窗口。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepInput.d.ts","sourceRoot":"","sources":["../../../src/types/session/StepInput.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,IAAI,IAAI,EACjB,aAAa,EACb,WAAW,EACX,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,sBAAsB;AACtB,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,cAAc,EAAE,aAAa,CAAC;IAC9B,sCAAsC;IACtC,
|
|
1
|
+
{"version":3,"file":"StepInput.d.ts","sourceRoot":"","sources":["../../../src/types/session/StepInput.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,IAAI,IAAI,EACjB,aAAa,EACb,WAAW,EACX,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,sBAAsB;AACtB,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,cAAc,EAAE,aAAa,CAAC;IAC9B,sCAAsC;IACtC,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC,2BAA2B;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,iCAAiC;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,kCAAkC;IAClC,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;IACnD,mCAAmC;IACnC,8CAA8C;IAC9C,mDAAmD;IACnD,yBAAyB,EAAE,uBAAuB,EAAE,CAAC;IACrD,0DAA0D;IAC1D,6BAA6B,EAAE,MAAM,uBAAuB,EAAE,CAAC;IAC/D,kCAAkC;IAClC,SAAS,EAAE,MAAM,WAAW,CAAC;IAC7B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IACzC,sBAAsB;IACtB,wBAAwB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACnD,2BAA2B;IAC3B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,0BAA0B;IAC1B,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 会话的 Session 工具类型协议。
|
|
3
|
+
*
|
|
4
|
+
* 职责说明(中文)
|
|
5
|
+
* - 这四个工具让 Agent 在自己的对话里安排、观察和收回其他会话。
|
|
6
|
+
* - 它们只出现在 `origin.type === "agent"` 的会话上下文中,其他 Session 拿不到,因此不会递归派发。
|
|
7
|
+
*
|
|
8
|
+
* 关键点(中文)
|
|
9
|
+
* - 工具不接触 Session 内部结构,只消费公开的摘要、消息投影和交互入口。
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* 一条会话在清单中暴露的稳定状态。
|
|
13
|
+
*
|
|
14
|
+
* 说明(中文):清单只投影可从轻量摘要与内存运行态得到的状态;失败原因属于详情,
|
|
15
|
+
* 需要读取该会话的消息,因此不在此列。
|
|
16
|
+
*/
|
|
17
|
+
export type SessionToolState = "running" | "waiting_for_user" | "idle";
|
|
18
|
+
/** 清单里的一条会话摘要。 */
|
|
19
|
+
export interface SessionToolSummary {
|
|
20
|
+
/** 会话稳定标识。 */
|
|
21
|
+
session_id: string;
|
|
22
|
+
/** 用户可见标题;未生成时省略。 */
|
|
23
|
+
title?: string;
|
|
24
|
+
/** 当前状态。 */
|
|
25
|
+
state: SessionToolState;
|
|
26
|
+
/** 最近更新的预览文本;用于让对话判断这条活是什么。 */
|
|
27
|
+
preview_text?: string;
|
|
28
|
+
/** 最近更新时间戳(ms)。 */
|
|
29
|
+
updated_at?: number;
|
|
30
|
+
/** 当前正在等待用户响应的 Interaction 数量。 */
|
|
31
|
+
pending_interaction_count: number;
|
|
32
|
+
}
|
|
33
|
+
/** `session_start` 的输出。 */
|
|
34
|
+
export interface SessionStartToolOutput {
|
|
35
|
+
/** 新建会话的稳定标识。 */
|
|
36
|
+
session_id: string;
|
|
37
|
+
/** 本次任务已提交,返回时该会话可能仍在执行。 */
|
|
38
|
+
status: "started";
|
|
39
|
+
}
|
|
40
|
+
/** `session_check` 清单模式的输出。 */
|
|
41
|
+
export interface SessionCheckListToolOutput {
|
|
42
|
+
/** 当前 Agent 除自己那条会话外的全部会话。 */
|
|
43
|
+
mode: "list";
|
|
44
|
+
/** 全部会话摘要,按最近更新倒序。 */
|
|
45
|
+
sessions: SessionToolSummary[];
|
|
46
|
+
}
|
|
47
|
+
/** `session_check` 详情模式的输出。 */
|
|
48
|
+
export interface SessionCheckDetailToolOutput {
|
|
49
|
+
/** 本次读取的是单条会话。 */
|
|
50
|
+
mode: "detail";
|
|
51
|
+
/** 该会话摘要。 */
|
|
52
|
+
session: SessionToolSummary;
|
|
53
|
+
/** 最近的消息投影,用于回答「它做了什么」。 */
|
|
54
|
+
messages: Array<{
|
|
55
|
+
/** 消息角色。 */
|
|
56
|
+
role: "user" | "agent";
|
|
57
|
+
/** 已归一化的纯文本内容。 */
|
|
58
|
+
text: string;
|
|
59
|
+
}>;
|
|
60
|
+
/** 当前等待用户响应的 Interaction;为空表示不需要用户介入。 */
|
|
61
|
+
pending_interactions: Array<{
|
|
62
|
+
/** Interaction 稳定标识,可交给 `session_reply`。 */
|
|
63
|
+
interaction_id: string;
|
|
64
|
+
/** Interaction 业务类型,例如 question 或 approval。 */
|
|
65
|
+
type: string;
|
|
66
|
+
/** 面向用户的展示标题。 */
|
|
67
|
+
title?: string;
|
|
68
|
+
/** 面向用户的展示描述。 */
|
|
69
|
+
description?: string;
|
|
70
|
+
}>;
|
|
71
|
+
/** 该会话最近一个 Turn 的失败文本;成功时为省略。 */
|
|
72
|
+
failure?: string;
|
|
73
|
+
}
|
|
74
|
+
/** `session_check` 的输出。 */
|
|
75
|
+
export type SessionCheckToolOutput = SessionCheckListToolOutput | SessionCheckDetailToolOutput;
|
|
76
|
+
/** `session_reply` 的输出。 */
|
|
77
|
+
export interface SessionReplyToolOutput {
|
|
78
|
+
/** 响应已提交并被目标会话接受。 */
|
|
79
|
+
status: "resolved" | "denied";
|
|
80
|
+
/** 目标会话标识。 */
|
|
81
|
+
session_id: string;
|
|
82
|
+
/** 已完成的 Interaction 标识。 */
|
|
83
|
+
interaction_id: string;
|
|
84
|
+
}
|
|
85
|
+
/** `session_stop` 的输出。 */
|
|
86
|
+
export interface SessionStopToolOutput {
|
|
87
|
+
/** 目标会话标识。 */
|
|
88
|
+
session_id: string;
|
|
89
|
+
/** 停止结果状态。 */
|
|
90
|
+
status: "stopped";
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=SessionTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionTools.d.ts","sourceRoot":"","sources":["../../../../src/types/tools/session/SessionTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,kBAAkB,GAClB,MAAM,CAAC;AAEX,kBAAkB;AAClB,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,KAAK,EAAE,gBAAgB,CAAC;IACxB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,2BAA2B;AAC3B,MAAM,WAAW,sBAAsB;IACrC,iBAAiB;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,0BAA0B;IACzC,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,+BAA+B;AAC/B,MAAM,WAAW,4BAA4B;IAC3C,kBAAkB;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa;IACb,OAAO,EAAE,kBAAkB,CAAC;IAC5B,2BAA2B;IAC3B,QAAQ,EAAE,KAAK,CAAC;QACd,YAAY;QACZ,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACvB,kBAAkB;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,yCAAyC;IACzC,oBAAoB,EAAE,KAAK,CAAC;QAC1B,4CAA4C;QAC5C,cAAc,EAAE,MAAM,CAAC;QACvB,+CAA+C;QAC/C,IAAI,EAAE,MAAM,CAAC;QACb,iBAAiB;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,iBAAiB;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2BAA2B;AAC3B,MAAM,MAAM,sBAAsB,GAC9B,0BAA0B,GAC1B,4BAA4B,CAAC;AAEjC,2BAA2B;AAC3B,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,cAAc;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,0BAA0B;AAC1B,MAAM,WAAW,qBAAqB;IACpC,cAAc;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,MAAM,EAAE,SAAS,CAAC;CACnB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 会话的 Session 工具类型协议。
|
|
3
|
+
*
|
|
4
|
+
* 职责说明(中文)
|
|
5
|
+
* - 这四个工具让 Agent 在自己的对话里安排、观察和收回其他会话。
|
|
6
|
+
* - 它们只出现在 `origin.type === "agent"` 的会话上下文中,其他 Session 拿不到,因此不会递归派发。
|
|
7
|
+
*
|
|
8
|
+
* 关键点(中文)
|
|
9
|
+
* - 工具不接触 Session 内部结构,只消费公开的摘要、消息投影和交互入口。
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=SessionTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionTools.js","sourceRoot":"","sources":["../../../../src/types/tools/session/SessionTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@downcity/agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Downcity 单 Agent SDK 与执行运行时",
|
|
6
6
|
"main": "./bin/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@downcity/type": "
|
|
27
|
+
"@downcity/type": "1.5.0",
|
|
28
28
|
"diff": "^8.0.4",
|
|
29
29
|
"fs-extra": "^11.3.5",
|
|
30
30
|
"js-yaml": "^4.1.1",
|
|
@@ -59,7 +59,7 @@ function create_turn_input(model, messages, context_window = 100, warnings = [])
|
|
|
59
59
|
return {
|
|
60
60
|
turn_context: create_session_turn_context({
|
|
61
61
|
session_id: "compact-runner-session",
|
|
62
|
-
session_origin: { type: "
|
|
62
|
+
session_origin: { type: "work" },
|
|
63
63
|
turn_id: "compact-runner-turn",
|
|
64
64
|
report_model_request_failure: (warning) => warnings.push(warning),
|
|
65
65
|
}),
|
|
@@ -13,7 +13,7 @@ import { create_session_turn_context } from "../bin/session/loop/SessionTurnCont
|
|
|
13
13
|
function create_turn_context(overrides = {}) {
|
|
14
14
|
return create_session_turn_context({
|
|
15
15
|
session_id: "executor-failure-test",
|
|
16
|
-
session_origin: { type: "
|
|
16
|
+
session_origin: { type: "work" },
|
|
17
17
|
turn_id: "executor-failure-turn",
|
|
18
18
|
...overrides,
|
|
19
19
|
});
|
|
@@ -83,7 +83,7 @@ function create_turn_input(model) {
|
|
|
83
83
|
input: {
|
|
84
84
|
turn_context: create_session_turn_context({
|
|
85
85
|
session_id: "tool-loop-limit-session",
|
|
86
|
-
session_origin: { type: "
|
|
86
|
+
session_origin: { type: "work" },
|
|
87
87
|
turn_id: "tool-loop-limit-turn",
|
|
88
88
|
append_internal_user_message: async (parts) => {
|
|
89
89
|
internal_parts.push(...parts);
|
|
@@ -17,7 +17,7 @@ function create_session(overrides = {}) {
|
|
|
17
17
|
let initialize_promise;
|
|
18
18
|
const store = {
|
|
19
19
|
session_id: "initialization-session",
|
|
20
|
-
origin: { type: "
|
|
20
|
+
origin: { type: "work" },
|
|
21
21
|
attachments: {},
|
|
22
22
|
initialize: async () => {
|
|
23
23
|
if (!initialize_promise) initialize_promise = (async () => {
|
|
@@ -62,7 +62,9 @@ function create_session(overrides = {}) {
|
|
|
62
62
|
logger: { log: async () => {} },
|
|
63
63
|
instruction_system_blocks: [],
|
|
64
64
|
get_instruction_system_blocks: () => [],
|
|
65
|
-
|
|
65
|
+
resolve_workspace: () => undefined,
|
|
66
|
+
get_workspace: () => undefined,
|
|
67
|
+
get_workspace_id: () => undefined,
|
|
66
68
|
get_hooks: () => ({}),
|
|
67
69
|
get_managed_power_system_blocks: async () => [],
|
|
68
70
|
get_agent_model: () => undefined,
|
|
@@ -23,7 +23,7 @@ async function create_storage(directory_path) {
|
|
|
23
23
|
session_id: "session-1",
|
|
24
24
|
agent_id: "agent-1",
|
|
25
25
|
workspace_id: "workspace-1",
|
|
26
|
-
origin: { type: "
|
|
26
|
+
origin: { type: "work" },
|
|
27
27
|
database_path: path.join(directory_path, "session.db"),
|
|
28
28
|
database_location: { type: "file" },
|
|
29
29
|
files: create_files(),
|
|
@@ -96,7 +96,7 @@ function insert_legacy_interaction(database_path, sequence) {
|
|
|
96
96
|
|
|
97
97
|
test("旧格式交互在迁移前不可读,迁移后可读且归属正确", async () => {
|
|
98
98
|
const root_path = await fs.mkdtemp(path.join(os.tmpdir(), "downcity-interaction-migration-"));
|
|
99
|
-
const directory_path = path.join(root_path, "agents", "agent-1", "sessions", "
|
|
99
|
+
const directory_path = path.join(root_path, "agents", "agent-1", "sessions", "work", "session-1");
|
|
100
100
|
const database_path = path.join(directory_path, "session.db");
|
|
101
101
|
|
|
102
102
|
const storage = await create_storage(directory_path);
|
|
@@ -45,8 +45,8 @@ function create_loop(request_id) {
|
|
|
45
45
|
let execute_count = 0;
|
|
46
46
|
const loop = new SessionLoop({
|
|
47
47
|
session_id,
|
|
48
|
-
session_origin: { type: "
|
|
49
|
-
|
|
48
|
+
session_origin: { type: "work" },
|
|
49
|
+
get_workspace_path: () => ("/tmp/downcity-idempotent-prompt"),
|
|
50
50
|
executor: {
|
|
51
51
|
execute: async () => {
|
|
52
52
|
execute_count += 1;
|
|
@@ -22,7 +22,7 @@ async function create_storage(directory_path, options = {}) {
|
|
|
22
22
|
session_id: options.session_id || "session-1",
|
|
23
23
|
agent_id: options.agent_id || "agent-1",
|
|
24
24
|
workspace_id: "workspace-1",
|
|
25
|
-
origin: { type: "
|
|
25
|
+
origin: { type: "work" },
|
|
26
26
|
database_path: path.join(directory_path, "session.db"),
|
|
27
27
|
database_location: { type: "file" },
|
|
28
28
|
files: create_files(),
|
|
@@ -153,7 +153,7 @@ test("初始化失败会关闭连接并允许同一实例重试", async () => {
|
|
|
153
153
|
const storage = new SqliteSessionStorage({
|
|
154
154
|
session_id: "session-1",
|
|
155
155
|
agent_id: "agent-1",
|
|
156
|
-
origin: { type: "
|
|
156
|
+
origin: { type: "work" },
|
|
157
157
|
database_path,
|
|
158
158
|
database_location: { type: "file" },
|
|
159
159
|
files: create_files(),
|
|
@@ -177,7 +177,7 @@ test("旧 SQLite schema 必须由外部脚本迁移", async () => {
|
|
|
177
177
|
const storage = new SqliteSessionStorage({
|
|
178
178
|
session_id: "session-1",
|
|
179
179
|
agent_id: "agent-1",
|
|
180
|
-
origin: { type: "
|
|
180
|
+
origin: { type: "work" },
|
|
181
181
|
database_path,
|
|
182
182
|
database_location: { type: "file" },
|
|
183
183
|
files: create_files(),
|