@downcity/agent 1.1.11 → 1.1.13
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/index.d.ts +3 -3
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +2 -2
- package/bin/index.js.map +1 -1
- package/bin/runtime/AgentRuntime.d.ts +2 -2
- package/bin/runtime/AgentRuntime.d.ts.map +1 -1
- package/bin/runtime/AgentRuntime.js +7 -12
- package/bin/runtime/AgentRuntime.js.map +1 -1
- package/bin/runtime/AgentRuntimeTypes.d.ts +3 -3
- package/bin/runtime/AgentRuntimeTypes.d.ts.map +1 -1
- package/bin/sdk/Agent.d.ts +13 -8
- package/bin/sdk/Agent.d.ts.map +1 -1
- package/bin/sdk/Agent.js +62 -18
- package/bin/sdk/Agent.js.map +1 -1
- package/bin/sdk/AgentSdkTypes.d.ts +95 -0
- package/bin/sdk/AgentSdkTypes.d.ts.map +1 -1
- package/bin/sdk/RemoteAgent.d.ts +3 -3
- package/bin/sdk/RemoteAgent.d.ts.map +1 -1
- package/bin/sdk/RemoteAgent.js +5 -2
- package/bin/sdk/RemoteAgent.js.map +1 -1
- package/bin/sdk/Session.d.ts +21 -19
- package/bin/sdk/Session.d.ts.map +1 -1
- package/bin/sdk/Session.js +79 -69
- package/bin/sdk/Session.js.map +1 -1
- package/bin/sdk/SessionMetadata.d.ts +7 -3
- package/bin/sdk/SessionMetadata.d.ts.map +1 -1
- package/bin/sdk/SessionMetadata.js +21 -5
- package/bin/sdk/SessionMetadata.js.map +1 -1
- package/bin/sdk/SessionPersistence.d.ts +6 -6
- package/bin/sdk/SessionPersistence.d.ts.map +1 -1
- package/bin/sdk/SessionPersistence.js +7 -7
- package/bin/sdk/SessionPersistence.js.map +1 -1
- package/bin/sdk/SessionServicePort.d.ts +5 -5
- package/bin/sdk/SessionServicePort.d.ts.map +1 -1
- package/bin/sdk/SessionServicePort.js +9 -9
- package/bin/sdk/SessionServicePort.js.map +1 -1
- package/bin/sdk/SessionSystemBuilder.d.ts +106 -0
- package/bin/sdk/SessionSystemBuilder.d.ts.map +1 -0
- package/bin/sdk/SessionSystemBuilder.js +150 -0
- package/bin/sdk/SessionSystemBuilder.js.map +1 -0
- package/bin/service/builtins/chat/runtime/ChatSession.d.ts +27 -8
- package/bin/service/builtins/chat/runtime/ChatSession.d.ts.map +1 -1
- package/bin/service/builtins/chat/runtime/ChatSession.js +9 -4
- package/bin/service/builtins/chat/runtime/ChatSession.js.map +1 -1
- package/bin/service/builtins/task/runtime/Runner.d.ts +1 -1
- package/bin/service/builtins/task/runtime/Runner.js +1 -1
- package/bin/service/builtins/task/runtime/TaskRunnerSession.d.ts +2 -2
- package/bin/service/builtins/task/runtime/TaskRunnerSession.js +4 -4
- package/bin/service/builtins/task/runtime/TaskRunnerSession.js.map +1 -1
- package/bin/service/builtins/task/runtime/TaskRunnerTypes.d.ts +1 -1
- package/bin/session/{Session.d.ts → Executor.d.ts} +54 -17
- package/bin/session/Executor.d.ts.map +1 -0
- package/bin/session/{Session.js → Executor.js} +60 -23
- package/bin/session/Executor.js.map +1 -0
- package/bin/session/composer/SessionComposer.d.ts +1 -1
- package/bin/session/composer/SessionComposer.js +1 -1
- package/bin/session/composer/compaction/SessionCompactionComposer.d.ts +2 -2
- package/bin/session/composer/execution/LocalSessionExecutionComposer.d.ts +1 -1
- package/bin/session/composer/execution/LocalSessionExecutionComposer.js +1 -1
- package/bin/session/composer/execution/SessionExecutionComposer.d.ts +1 -1
- package/bin/session/composer/history/SessionHistoryComposer.d.ts +1 -1
- package/bin/session/composer/system/SessionSystemComposer.d.ts +1 -1
- package/bin/session/composer/system/SessionSystemComposer.js +1 -1
- package/bin/session/executors/local/{LocalSessionCore.d.ts → Runner.d.ts} +10 -10
- package/bin/session/executors/local/Runner.d.ts.map +1 -0
- package/bin/session/executors/local/{LocalSessionCore.js → Runner.js} +11 -11
- package/bin/session/executors/local/Runner.js.map +1 -0
- package/bin/session/executors/local/SessionExecutionError.d.ts +1 -1
- package/bin/session/executors/local/SessionExecutionError.js +1 -1
- package/bin/session/executors/local/SessionLoopDecision.d.ts +3 -3
- package/bin/session/executors/local/SessionLoopDecision.js +3 -3
- package/bin/session/executors/local/SessionModelMessageState.d.ts +2 -2
- package/bin/session/executors/local/SessionModelMessageState.js +2 -2
- package/bin/session/executors/local/SessionSignals.d.ts +3 -3
- package/bin/session/executors/local/SessionSignals.js +3 -3
- package/bin/session/executors/local/SessionToolLoopRunner.d.ts +1 -1
- package/bin/session/executors/local/SessionToolLoopRunner.js +2 -2
- package/bin/session/executors/local/SessionToolLoopRunner.js.map +1 -1
- package/bin/session/types/SessionHistoryMeta.d.ts +2 -0
- package/bin/session/types/SessionHistoryMeta.d.ts.map +1 -1
- package/bin/session/types/SessionLoop.d.ts +1 -1
- package/bin/session/types/SessionLoop.js +1 -1
- package/bin/session/types/SessionRun.d.ts +2 -2
- package/bin/session/types/SessionRun.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +6 -2
- package/src/runtime/AgentRuntime.ts +7 -17
- package/src/runtime/AgentRuntimeTypes.ts +3 -3
- package/src/sdk/Agent.ts +75 -23
- package/src/sdk/AgentSdkTypes.ts +113 -0
- package/src/sdk/RemoteAgent.ts +10 -4
- package/src/sdk/Session.ts +100 -85
- package/src/sdk/SessionMetadata.ts +23 -5
- package/src/sdk/SessionPersistence.ts +13 -13
- package/src/sdk/SessionServicePort.ts +13 -13
- package/src/sdk/SessionSystemBuilder.ts +261 -0
- package/src/service/builtins/chat/runtime/ChatSession.ts +37 -13
- package/src/service/builtins/task/runtime/Runner.ts +1 -1
- package/src/service/builtins/task/runtime/TaskRunnerSession.ts +4 -4
- package/src/service/builtins/task/runtime/TaskRunnerTypes.ts +1 -1
- package/src/session/{Session.ts → Executor.ts} +96 -26
- package/src/session/composer/SessionComposer.ts +1 -1
- package/src/session/composer/compaction/SessionCompactionComposer.ts +2 -2
- package/src/session/composer/execution/LocalSessionExecutionComposer.ts +1 -1
- package/src/session/composer/execution/SessionExecutionComposer.ts +1 -1
- package/src/session/composer/history/SessionHistoryComposer.ts +1 -1
- package/src/session/composer/system/SessionSystemComposer.ts +1 -1
- package/src/session/executors/local/{LocalSessionCore.ts → Runner.ts} +13 -13
- package/src/session/executors/local/SessionExecutionError.ts +1 -1
- package/src/session/executors/local/SessionLoopDecision.ts +3 -3
- package/src/session/executors/local/SessionModelMessageState.ts +2 -2
- package/src/session/executors/local/SessionSignals.ts +3 -3
- package/src/session/executors/local/SessionToolLoopRunner.ts +2 -2
- package/src/session/types/SessionHistoryMeta.ts +2 -0
- package/src/session/types/SessionLoop.ts +1 -1
- package/src/session/types/SessionRun.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/bin/sdk/SdkSessionSystemComposer.d.ts +0 -73
- package/bin/sdk/SdkSessionSystemComposer.d.ts.map +0 -1
- package/bin/sdk/SdkSessionSystemComposer.js +0 -96
- package/bin/sdk/SdkSessionSystemComposer.js.map +0 -1
- package/bin/session/Session.d.ts.map +0 -1
- package/bin/session/Session.js.map +0 -1
- package/bin/session/executors/local/LocalSessionCore.d.ts.map +0 -1
- package/bin/session/executors/local/LocalSessionCore.js.map +0 -1
- package/bin/session/executors/local/LocalSessionExecutor.d.ts +0 -61
- package/bin/session/executors/local/LocalSessionExecutor.d.ts.map +0 -1
- package/bin/session/executors/local/LocalSessionExecutor.js +0 -36
- package/bin/session/executors/local/LocalSessionExecutor.js.map +0 -1
- package/src/sdk/SdkSessionSystemComposer.ts +0 -173
- package/src/session/executors/local/LocalSessionExecutor.ts +0 -89
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Runner:本地 Session 执行内核。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 这个类只做“流程编排”,不承载业务策略。
|
|
@@ -33,9 +33,9 @@ import { SessionToolLoopRunner } from "@session/executors/local/SessionToolLoopR
|
|
|
33
33
|
const MAX_COMPACTION_RETRY_ATTEMPTS = 3;
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* Runner 构造参数。
|
|
37
37
|
*/
|
|
38
|
-
type
|
|
38
|
+
type RunnerOptions = {
|
|
39
39
|
/** 当前模型实例。 */
|
|
40
40
|
model: LanguageModel;
|
|
41
41
|
|
|
@@ -57,9 +57,9 @@ type LocalSessionCoreOptions = {
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* Runner 主类。
|
|
61
61
|
*/
|
|
62
|
-
export class
|
|
62
|
+
export class Runner {
|
|
63
63
|
/** 模型实例:用于真正执行 streamText。 */
|
|
64
64
|
private readonly model: LanguageModel;
|
|
65
65
|
|
|
@@ -78,7 +78,7 @@ export class LocalSessionCore {
|
|
|
78
78
|
/** system 解析器:用于解析 system messages。 */
|
|
79
79
|
private readonly systemComposer: SessionSystemComposer;
|
|
80
80
|
|
|
81
|
-
/** 运行互斥锁:防止同一个
|
|
81
|
+
/** 运行互斥锁:防止同一个 Runner 实例并发 run。 */
|
|
82
82
|
private isRunning = false;
|
|
83
83
|
|
|
84
84
|
/** context-length 重试计数。 */
|
|
@@ -87,7 +87,7 @@ export class LocalSessionCore {
|
|
|
87
87
|
/**
|
|
88
88
|
* 构造函数。
|
|
89
89
|
*/
|
|
90
|
-
constructor(options:
|
|
90
|
+
constructor(options: RunnerOptions) {
|
|
91
91
|
// 注入模型。
|
|
92
92
|
this.model = options.model;
|
|
93
93
|
|
|
@@ -109,7 +109,7 @@ export class LocalSessionCore {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
/**
|
|
112
|
-
* 执行一次
|
|
112
|
+
* 执行一次 Runner run。
|
|
113
113
|
*
|
|
114
114
|
* 关键点(中文)
|
|
115
115
|
* - 这里只做入口控制,不直接做模型调用。
|
|
@@ -118,7 +118,7 @@ export class LocalSessionCore {
|
|
|
118
118
|
async run(input: SessionRunInput): Promise<SessionRunResult> {
|
|
119
119
|
// 如果当前实例已经在运行,则直接拒绝并发调用。
|
|
120
120
|
if (this.isRunning) {
|
|
121
|
-
throw new Error("
|
|
121
|
+
throw new Error("Runner.run does not support concurrent execution");
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
// 标记运行中。
|
|
@@ -140,7 +140,7 @@ export class LocalSessionCore {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
/**
|
|
143
|
-
* 执行一次
|
|
143
|
+
* 执行一次 Runner run(带可压缩错误重试)。
|
|
144
144
|
*
|
|
145
145
|
* 关键点(中文)
|
|
146
146
|
* - 正常:准备输入 -> 执行。
|
|
@@ -159,7 +159,7 @@ export class LocalSessionCore {
|
|
|
159
159
|
// 执行组装好的运行输入。
|
|
160
160
|
return await this.executePreparedRun(prepared);
|
|
161
161
|
} catch (error) {
|
|
162
|
-
// 是否应压缩重试由 compaction Composer 决策,
|
|
162
|
+
// 是否应压缩重试由 compaction Composer 决策,Runner 只消费布尔结果。
|
|
163
163
|
if (this.compactionComposer.shouldCompactOnError(error)) {
|
|
164
164
|
// 记录压缩重试日志,便于观测问题频率。
|
|
165
165
|
await this.logger.log("info", "[agent] compacting", {
|
|
@@ -187,7 +187,7 @@ export class LocalSessionCore {
|
|
|
187
187
|
const errorMsg = String(error);
|
|
188
188
|
|
|
189
189
|
// 记录错误日志。
|
|
190
|
-
await this.logger.log("error", "
|
|
190
|
+
await this.logger.log("error", "Runner execution failed", {
|
|
191
191
|
error: errorMsg,
|
|
192
192
|
});
|
|
193
193
|
|
|
@@ -213,7 +213,7 @@ export class LocalSessionCore {
|
|
|
213
213
|
private async prepareExecuteInput(query: string): Promise<SessionExecuteInput> {
|
|
214
214
|
// 基础安全检查:historyComposer 必须携带 sessionId。
|
|
215
215
|
if (!String(this.historyComposer.sessionId || "").trim()) {
|
|
216
|
-
throw new Error("
|
|
216
|
+
throw new Error("Runner.run requires historyComposer.sessionId");
|
|
217
217
|
}
|
|
218
218
|
|
|
219
219
|
// 让 execution Composer 组装运行上下文(例如 tools 与 request 作用域)。
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SessionLoopDecision:
|
|
2
|
+
* SessionLoopDecision:Runner 执行循环的纯决策模块。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - 把 “是否继续下一轮” 的分支优先级从
|
|
5
|
+
* - 把 “是否继续下一轮” 的分支优先级从 Runner 主流程中拆出。
|
|
6
6
|
* - 保持纯函数,不依赖模型、持久化或 logger,便于直接测试。
|
|
7
7
|
*/
|
|
8
8
|
|
|
@@ -13,7 +13,7 @@ import type {
|
|
|
13
13
|
} from "@/session/types/SessionLoop.js";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* 评估当前 step 完成后,
|
|
16
|
+
* 评估当前 step 完成后,Runner 是否应继续下一轮。
|
|
17
17
|
*
|
|
18
18
|
* 优先级(中文)
|
|
19
19
|
* 1. 不完整响应恢复
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Session 模型消息运行态。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* -
|
|
5
|
+
* - Runner 同时维护 session 语义消息与模型消息。
|
|
6
6
|
* - 新增 user 消息可优先做增量转换,失败时再回退为全量重算。
|
|
7
7
|
* - assistant UI 消息只需要进入 session 语义基线;模型侧使用 SDK 返回的 response messages。
|
|
8
8
|
*/
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "@session/messages/SessionMessageCodec.js";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* Runner 单轮执行期间的消息基线。
|
|
19
19
|
*/
|
|
20
20
|
export class SessionModelMessageState {
|
|
21
21
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SessionLoopSignals:
|
|
2
|
+
* SessionLoopSignals:Runner 执行循环的信号判断与调试摘要工具。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 这里只放“如何判断继续执行 / 如何输出调试摘要”的纯函数。
|
|
6
|
-
* - 不放
|
|
7
|
-
* - 目标是让
|
|
6
|
+
* - 不放 Runner 主流程,避免执行内核被大量辅助细节淹没。
|
|
7
|
+
* - 目标是让 Runner 保持“只看主链路就能理解”的结构。
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 这里只负责已准备好的 `SessionExecuteInput` 如何进入 `streamText` 循环。
|
|
6
|
-
* -
|
|
6
|
+
* - Runner 保留入口、重试与输入准备职责,本模块负责 step 循环、续写、恢复和最终日志。
|
|
7
7
|
* - 运行过程中同时维护 UI assistant 消息、模型消息基线和 step 统计。
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -334,7 +334,7 @@ export class SessionToolLoopRunner {
|
|
|
334
334
|
streamError: lastObservedStreamError,
|
|
335
335
|
});
|
|
336
336
|
|
|
337
|
-
await this.logger.log("error", "
|
|
337
|
+
await this.logger.log("error", "Runner execution failed", {
|
|
338
338
|
error: errorMsg,
|
|
339
339
|
});
|
|
340
340
|
|
|
@@ -27,6 +27,8 @@ export type SessionHistoryMetaV1 = {
|
|
|
27
27
|
agentId?: string;
|
|
28
28
|
/** 当前 session 首次创建时间戳(ms)。 */
|
|
29
29
|
createdAt?: number;
|
|
30
|
+
/** 当前 session 初始化时解析到的系统时区。 */
|
|
31
|
+
timezone?: string;
|
|
30
32
|
/** 最近一次更新元信息的时间戳(ms)。 */
|
|
31
33
|
updatedAt: number;
|
|
32
34
|
/** 固定注入到 Session 上下文的 skill id 列表。 */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - `SessionRunInput` 表示上层会话入口输入(例如 context query)。
|
|
6
|
-
* - `SessionExecuteInput` 表示
|
|
6
|
+
* - `SessionExecuteInput` 表示 Runner 通过 Composer 装配后的中间运行态。
|
|
7
7
|
* - 输出仅暴露 assistantMessage(UIMessage)。
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -107,7 +107,7 @@ export interface SessionRunInput {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
/**
|
|
110
|
-
*
|
|
110
|
+
* Runner 通过 Composer 装配后的中间运行态。
|
|
111
111
|
*/
|
|
112
112
|
export interface SessionExecuteInput {
|
|
113
113
|
/**
|