@downcity/agent 1.1.222 → 1.1.224
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/local/Agent.d.ts +1 -34
- package/bin/agent/local/Agent.d.ts.map +1 -1
- package/bin/agent/local/Agent.js +1 -44
- package/bin/agent/local/Agent.js.map +1 -1
- package/bin/agent/local/services/AgentAssemblyService.d.ts.map +1 -1
- package/bin/agent/local/services/AgentAssemblyService.js +35 -2
- package/bin/agent/local/services/AgentAssemblyService.js.map +1 -1
- package/bin/agent/local/services/AgentSessions.d.ts +6 -0
- package/bin/agent/local/services/AgentSessions.d.ts.map +1 -1
- package/bin/agent/local/services/AgentSessions.js +42 -0
- package/bin/agent/local/services/AgentSessions.js.map +1 -1
- package/bin/agent/remote/RemoteAgent.d.ts +1 -35
- package/bin/agent/remote/RemoteAgent.d.ts.map +1 -1
- package/bin/agent/remote/RemoteAgent.js +1 -37
- package/bin/agent/remote/RemoteAgent.js.map +1 -1
- package/bin/agent/remote/RemoteSession.d.ts +24 -45
- package/bin/agent/remote/RemoteSession.d.ts.map +1 -1
- package/bin/agent/remote/RemoteSession.js +74 -121
- package/bin/agent/remote/RemoteSession.js.map +1 -1
- package/bin/agent/remote/RemoteTransport.d.ts +11 -27
- package/bin/agent/remote/RemoteTransport.d.ts.map +1 -1
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts +7 -21
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -1
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.js +11 -47
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.js.map +1 -1
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts +7 -20
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -1
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.js +8 -17
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.js.map +1 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +2 -2
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
- package/bin/executor/types/SessionHistoryPaths.d.ts +1 -1
- package/bin/index.d.ts +3 -3
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +1 -1
- package/bin/index.js.map +1 -1
- package/bin/rpc/Client.d.ts +7 -36
- package/bin/rpc/Client.d.ts.map +1 -1
- package/bin/rpc/Client.js +28 -78
- package/bin/rpc/Client.js.map +1 -1
- package/bin/session/Session.d.ts +16 -8
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +66 -21
- package/bin/session/Session.js.map +1 -1
- package/bin/session/browse/Browse.d.ts.map +1 -1
- package/bin/session/browse/Browse.js +49 -18
- package/bin/session/browse/Browse.js.map +1 -1
- package/bin/session/recorder/JsonlSessionMessageStore.d.ts +30 -24
- package/bin/session/recorder/JsonlSessionMessageStore.d.ts.map +1 -1
- package/bin/session/recorder/JsonlSessionMessageStore.js +163 -59
- package/bin/session/recorder/JsonlSessionMessageStore.js.map +1 -1
- package/bin/session/recorder/SessionMessageCodec.d.ts.map +1 -1
- package/bin/session/recorder/SessionMessageCodec.js +6 -1
- package/bin/session/recorder/SessionMessageCodec.js.map +1 -1
- package/bin/session/recorder/SessionRecorder.d.ts +20 -11
- package/bin/session/recorder/SessionRecorder.d.ts.map +1 -1
- package/bin/session/recorder/SessionRecorder.js +148 -103
- package/bin/session/recorder/SessionRecorder.js.map +1 -1
- package/bin/session/recorder/SessionRecorderCompaction.d.ts.map +1 -1
- package/bin/session/recorder/SessionRecorderCompaction.js +1 -0
- package/bin/session/recorder/SessionRecorderCompaction.js.map +1 -1
- package/bin/session/recorder/SessionRecorderHistoryStore.d.ts +5 -5
- package/bin/session/recorder/SessionRecorderHistoryStore.d.ts.map +1 -1
- package/bin/session/recorder/SessionRecorderHistoryStore.js +5 -5
- package/bin/session/recorder/SessionRecorderHistoryStore.js.map +1 -1
- package/bin/session/runtime/SessionEventHub.d.ts +12 -5
- package/bin/session/runtime/SessionEventHub.d.ts.map +1 -1
- package/bin/session/runtime/SessionEventHub.js +11 -6
- package/bin/session/runtime/SessionEventHub.js.map +1 -1
- package/bin/session/runtime/SessionPromptRuntime.d.ts +2 -2
- package/bin/session/runtime/SessionPromptRuntime.d.ts.map +1 -1
- package/bin/session/runtime/SessionPromptRuntime.js +35 -17
- package/bin/session/runtime/SessionPromptRuntime.js.map +1 -1
- package/bin/session/services/SessionStateService.d.ts +2 -2
- package/bin/session/services/SessionStateService.d.ts.map +1 -1
- package/bin/session/services/SessionStateService.js +6 -2
- package/bin/session/services/SessionStateService.js.map +1 -1
- package/bin/session/services/SessionTurnService.d.ts +2 -7
- package/bin/session/services/SessionTurnService.d.ts.map +1 -1
- package/bin/session/services/SessionTurnService.js +2 -8
- package/bin/session/services/SessionTurnService.js.map +1 -1
- package/bin/session/storage/Paths.d.ts +1 -1
- package/bin/session/storage/Paths.d.ts.map +1 -1
- package/bin/session/storage/Paths.js +2 -2
- package/bin/session/storage/Paths.js.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.d.ts +3 -4
- package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.js +2 -2
- package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
- package/bin/types/agent/SessionActor.d.ts +11 -7
- package/bin/types/agent/SessionActor.d.ts.map +1 -1
- package/bin/types/rpc/RpcProtocol.d.ts +35 -62
- package/bin/types/rpc/RpcProtocol.d.ts.map +1 -1
- package/bin/types/runtime/agent/AgentContext.d.ts +4 -4
- package/bin/types/runtime/agent/AgentContext.d.ts.map +1 -1
- package/bin/types/runtime/agent/AgentContext.js.map +1 -1
- package/bin/types/session/SessionApproval.d.ts +97 -0
- package/bin/types/session/SessionApproval.d.ts.map +1 -0
- package/bin/types/session/SessionApproval.js +7 -0
- package/bin/types/session/SessionApproval.js.map +1 -0
- package/bin/types/session/SessionMessage.d.ts +10 -4
- package/bin/types/session/SessionMessage.d.ts.map +1 -1
- package/bin/types/session/SessionMutation.d.ts +116 -0
- package/bin/types/session/SessionMutation.d.ts.map +1 -0
- package/bin/types/session/SessionMutation.js +19 -0
- package/bin/types/session/SessionMutation.js.map +1 -0
- package/bin/types/session/SessionOptions.d.ts +9 -0
- package/bin/types/session/SessionOptions.d.ts.map +1 -1
- package/package.json +3 -3
- package/scripts/remote-session-reconnect.test.mjs +7 -3
- package/scripts/session-history-inflight.test.mjs +2 -2
- package/scripts/session-prompt-runtime.test.mjs +3 -3
- package/scripts/session-recorder.test.mjs +100 -146
- package/src/agent/local/Agent.ts +1 -55
- package/src/agent/local/services/AgentAssemblyService.ts +39 -3
- package/src/agent/local/services/AgentSessions.ts +47 -0
- package/src/agent/remote/RemoteAgent.ts +1 -54
- package/src/agent/remote/RemoteSession.ts +105 -163
- package/src/agent/remote/RemoteTransport.ts +23 -34
- package/src/agent/remote/transports/HttpRemoteAgentTransport.ts +33 -90
- package/src/agent/remote/transports/RpcRemoteAgentTransport.ts +22 -39
- package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +2 -2
- package/src/executor/types/SessionHistoryPaths.ts +1 -1
- package/src/index.ts +20 -12
- package/src/rpc/Client.ts +48 -106
- package/src/session/Session.ts +91 -34
- package/src/session/browse/Browse.ts +51 -22
- package/src/session/recorder/JsonlSessionMessageStore.ts +170 -86
- package/src/session/recorder/SessionMessageCodec.ts +6 -1
- package/src/session/recorder/SessionRecorder.ts +183 -124
- package/src/session/recorder/SessionRecorderCompaction.ts +1 -0
- package/src/session/recorder/SessionRecorderHistoryStore.ts +5 -5
- package/src/session/runtime/SessionEventHub.ts +25 -12
- package/src/session/runtime/SessionPromptRuntime.ts +37 -19
- package/src/session/services/SessionStateService.ts +8 -6
- package/src/session/services/SessionTurnService.ts +3 -14
- package/src/session/storage/Paths.ts +2 -2
- package/src/session/storage/RuntimeSessionPort.ts +8 -11
- package/src/types/agent/SessionActor.ts +23 -20
- package/src/types/rpc/RpcProtocol.ts +34 -71
- package/src/types/runtime/agent/AgentContext.ts +7 -11
- package/src/types/session/SessionApproval.ts +108 -0
- package/src/types/session/SessionMessage.ts +10 -4
- package/src/types/session/SessionMutation.ts +141 -0
- package/src/types/session/SessionOptions.ts +25 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/bin/session/recorder/SessionMessageReducer.d.ts +0 -12
- package/bin/session/recorder/SessionMessageReducer.d.ts.map +0 -1
- package/bin/session/recorder/SessionMessageReducer.js +0 -109
- package/bin/session/recorder/SessionMessageReducer.js.map +0 -1
- package/bin/session/runtime/SessionMessageEventHub.d.ts +0 -15
- package/bin/session/runtime/SessionMessageEventHub.d.ts.map +0 -1
- package/bin/session/runtime/SessionMessageEventHub.js +0 -28
- package/bin/session/runtime/SessionMessageEventHub.js.map +0 -1
- package/bin/types/sdk/AgentSessionEvent.d.ts +0 -303
- package/bin/types/sdk/AgentSessionEvent.d.ts.map +0 -1
- package/bin/types/sdk/AgentSessionEvent.js +0 -9
- package/bin/types/sdk/AgentSessionEvent.js.map +0 -1
- package/bin/types/session/SessionMessageMutation.d.ts +0 -92
- package/bin/types/session/SessionMessageMutation.d.ts.map +0 -1
- package/bin/types/session/SessionMessageMutation.js +0 -21
- package/bin/types/session/SessionMessageMutation.js.map +0 -1
- package/src/session/recorder/SessionMessageReducer.ts +0 -155
- package/src/session/runtime/SessionMessageEventHub.ts +0 -35
- package/src/types/sdk/AgentSessionEvent.ts +0 -372
- package/src/types/session/SessionMessageMutation.ts +0 -121
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session 的统一实时 Mutation 协议。
|
|
3
|
+
*
|
|
4
|
+
* Mutation 描述订阅之后发生的状态变化,不等同于 messages.jsonl 持久化格式。
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { SessionAssistantMessagePart, SessionMessage } from "@/types/session/SessionMessage.js";
|
|
8
|
+
import type { ResolveSessionApprovalInput, SessionApprovalResult } from "@/types/session/SessionApproval.js";
|
|
9
|
+
|
|
10
|
+
/** 所有 Session Mutation 的公共字段。 */
|
|
11
|
+
export interface SessionMutationBase {
|
|
12
|
+
/** 当前 Mutation 的稳定唯一标识。 */
|
|
13
|
+
mutation_id: string;
|
|
14
|
+
/** 当前 Mutation 所属 Session 标识。 */
|
|
15
|
+
session_id: string;
|
|
16
|
+
/** 当前 Mutation 创建时间戳(ms)。 */
|
|
17
|
+
created_at: number;
|
|
18
|
+
}
|
|
19
|
+
/** Message 创建或完整快照更新 Mutation。 */
|
|
20
|
+
export type SessionMessageMutation = {
|
|
21
|
+
[TType in SessionMessage["type"]]: SessionMutationBase & {
|
|
22
|
+
/** Mutation 层级固定为 message。 */
|
|
23
|
+
variant: "message";
|
|
24
|
+
/** 当前完整 Message 类型。 */
|
|
25
|
+
type: TType;
|
|
26
|
+
/** 当前 Mutation 目标 Message 标识。 */
|
|
27
|
+
message_id: string;
|
|
28
|
+
/** 当前 Mutation 所属 Turn 标识。 */
|
|
29
|
+
turn_id?: string;
|
|
30
|
+
/** 当前 Message 在线性 Session 中的不可变顺序。 */
|
|
31
|
+
sequence: number;
|
|
32
|
+
/** 应用当前 Mutation 后的 Message revision。 */
|
|
33
|
+
revision: number;
|
|
34
|
+
/** 创建或更新后的完整 Message 快照。 */
|
|
35
|
+
message: Extract<SessionMessage, { type: TType }>;
|
|
36
|
+
};
|
|
37
|
+
}[SessionMessage["type"]];
|
|
38
|
+
|
|
39
|
+
/** Assistant Part 创建或完整快照更新 Mutation。 */
|
|
40
|
+
export type SessionPartMutation = {
|
|
41
|
+
[TType in SessionAssistantMessagePart["type"]]: SessionMutationBase & {
|
|
42
|
+
/** Mutation 层级固定为 part。 */
|
|
43
|
+
variant: "part";
|
|
44
|
+
/** 当前完整 Part 类型。 */
|
|
45
|
+
type: TType;
|
|
46
|
+
/** 当前 Part 所属 Message 标识。 */
|
|
47
|
+
message_id: string;
|
|
48
|
+
/** 当前 Mutation 所属 Turn 标识。 */
|
|
49
|
+
turn_id?: string;
|
|
50
|
+
/** 应用当前 Mutation 后的 Message revision。 */
|
|
51
|
+
revision: number;
|
|
52
|
+
/** 当前被创建或更新的 Part 标识。 */
|
|
53
|
+
part_id: string;
|
|
54
|
+
/** 创建或更新后的完整 Part 快照。 */
|
|
55
|
+
part: SessionAssistantMessagePart & { type: TType };
|
|
56
|
+
};
|
|
57
|
+
}[SessionAssistantMessagePart["type"]];
|
|
58
|
+
|
|
59
|
+
/** Assistant 文本或推理的原始增量 Mutation。 */
|
|
60
|
+
export interface SessionDeltaMutation extends SessionMutationBase {
|
|
61
|
+
/** Mutation 层级固定为 delta。 */
|
|
62
|
+
variant: "delta";
|
|
63
|
+
/** Delta 只允许可见文本或推理文本。 */
|
|
64
|
+
type: "text" | "reasoning";
|
|
65
|
+
/** 当前 Delta 所属 Message 标识。 */
|
|
66
|
+
message_id: string;
|
|
67
|
+
/** 当前 Mutation 所属 Turn 标识。 */
|
|
68
|
+
turn_id?: string;
|
|
69
|
+
/** 应用当前 Mutation 后的 Message revision。 */
|
|
70
|
+
revision: number;
|
|
71
|
+
/** 当前 Delta 所属 Part 标识。 */
|
|
72
|
+
part_id: string;
|
|
73
|
+
/** 本次新增的原始文本,不是累计全文。 */
|
|
74
|
+
delta: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Turn 生命周期 Mutation。 */
|
|
78
|
+
export type SessionTurnMutation = SessionMutationBase & {
|
|
79
|
+
/** Mutation 层级固定为 turn。 */
|
|
80
|
+
variant: "turn";
|
|
81
|
+
/** 当前 Turn 是开始还是完成。 */
|
|
82
|
+
type: "start" | "finish";
|
|
83
|
+
/** 当前 Turn 的稳定唯一标识。 */
|
|
84
|
+
turn_id: string;
|
|
85
|
+
/** 当前 Turn 的执行状态。 */
|
|
86
|
+
status: "running" | "completed" | "failed" | "stopped";
|
|
87
|
+
/** Turn 完成时的最终可见文本。 */
|
|
88
|
+
text?: string;
|
|
89
|
+
/** Turn 失败或停止时的错误文本。 */
|
|
90
|
+
error?: string;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/** Session 自身属性变化 Mutation。 */
|
|
94
|
+
export type SessionStateMutation = SessionMutationBase & {
|
|
95
|
+
/** Mutation 层级固定为 session。 */
|
|
96
|
+
variant: "session";
|
|
97
|
+
/** 当前 Session 属性变化类型。 */
|
|
98
|
+
type: "title";
|
|
99
|
+
/** 当前 Session 最新标题。 */
|
|
100
|
+
title: string;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/** Session 对外唯一实时 Mutation 联合类型。 */
|
|
104
|
+
export type SessionMutation =
|
|
105
|
+
| SessionMessageMutation
|
|
106
|
+
| SessionPartMutation
|
|
107
|
+
| SessionDeltaMutation
|
|
108
|
+
| SessionTurnMutation
|
|
109
|
+
| SessionStateMutation;
|
|
110
|
+
|
|
111
|
+
/** 当前 Mutation 可用的命令回复入口。 */
|
|
112
|
+
export interface SessionMutationReply {
|
|
113
|
+
/**
|
|
114
|
+
* 回复当前 Tool Part 的审批请求。
|
|
115
|
+
* 只有 approval-required Tool Part Mutation 可以成功调用。
|
|
116
|
+
*/
|
|
117
|
+
approval(input: Pick<ResolveSessionApprovalInput, "decision">): Promise<SessionApprovalResult>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Session Mutation 订阅回调。 */
|
|
121
|
+
export type SessionMutationSubscriber = (
|
|
122
|
+
mutation: SessionMutation,
|
|
123
|
+
reply: SessionMutationReply,
|
|
124
|
+
) => void | Promise<void>;
|
|
125
|
+
|
|
126
|
+
/** 取消 Session Mutation 订阅的函数。 */
|
|
127
|
+
export type SessionMutationUnsubscribe = () => void;
|
|
128
|
+
|
|
129
|
+
/** 判断未知事件是否为 Session Mutation。 */
|
|
130
|
+
export function is_session_mutation(input: unknown): input is SessionMutation {
|
|
131
|
+
if (!input || typeof input !== "object") return false;
|
|
132
|
+
const candidate = input as { mutation_id?: unknown; variant?: unknown; type?: unknown };
|
|
133
|
+
if (typeof candidate.mutation_id !== "string" || typeof candidate.type !== "string") return false;
|
|
134
|
+
return (
|
|
135
|
+
candidate.variant === "message" ||
|
|
136
|
+
candidate.variant === "part" ||
|
|
137
|
+
candidate.variant === "delta" ||
|
|
138
|
+
candidate.variant === "turn" ||
|
|
139
|
+
candidate.variant === "session"
|
|
140
|
+
);
|
|
141
|
+
}
|
|
@@ -14,6 +14,13 @@ import type { AgentSessionSystemBlock } from "@/types/agent/SessionTypes.js";
|
|
|
14
14
|
import type { SessionComposerOptions } from "@/types/session/SessionComposerOptions.js";
|
|
15
15
|
import type { Logger } from "@/utils/logger/Logger.js";
|
|
16
16
|
import type { AgentModel } from "@/model/CityModelAdapter.js";
|
|
17
|
+
import type {
|
|
18
|
+
ResolveSessionApprovalInput,
|
|
19
|
+
SessionApproval,
|
|
20
|
+
SessionApprovalModeSnapshot,
|
|
21
|
+
SessionApprovalResult,
|
|
22
|
+
SetSessionApprovalModeInput,
|
|
23
|
+
} from "@/types/session/SessionApproval.js";
|
|
17
24
|
|
|
18
25
|
/**
|
|
19
26
|
* Agent 可管理的本地 Session 实例。
|
|
@@ -87,6 +94,24 @@ export interface SessionOptions {
|
|
|
87
94
|
/** 按稳定模型 ID 解析当前 Session 的运行时模型。 */
|
|
88
95
|
resolve_model?: (model_id: string) => Promise<AgentModel>;
|
|
89
96
|
|
|
97
|
+
/** 列出当前 Session 的 pending 工具审批。 */
|
|
98
|
+
list_approvals: (session_id: string) => Promise<SessionApproval[]>;
|
|
99
|
+
|
|
100
|
+
/** 读取当前 Session 的工具审批模式。 */
|
|
101
|
+
get_approval_mode: (session_id: string) => Promise<SessionApprovalModeSnapshot>;
|
|
102
|
+
|
|
103
|
+
/** 更新当前 Session 的工具审批模式。 */
|
|
104
|
+
set_approval_mode: (
|
|
105
|
+
session_id: string,
|
|
106
|
+
input: SetSessionApprovalModeInput,
|
|
107
|
+
) => Promise<SessionApprovalModeSnapshot>;
|
|
108
|
+
|
|
109
|
+
/** 处理当前 Session 的 pending 工具审批。 */
|
|
110
|
+
resolve_approval: (
|
|
111
|
+
session_id: string,
|
|
112
|
+
input: ResolveSessionApprovalInput,
|
|
113
|
+
) => Promise<SessionApprovalResult>;
|
|
114
|
+
|
|
90
115
|
/**
|
|
91
116
|
* 当前 session 的 Composer 覆盖项。
|
|
92
117
|
*/
|