@downcity/agent 1.1.228 → 1.1.236
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 +6 -1
- package/bin/agent/local/Agent.d.ts.map +1 -1
- package/bin/agent/local/Agent.js +30 -3
- package/bin/agent/local/Agent.js.map +1 -1
- package/bin/agent/local/services/AgentSessions.d.ts +23 -0
- package/bin/agent/local/services/AgentSessions.d.ts.map +1 -1
- package/bin/agent/local/services/AgentSessions.js +44 -0
- package/bin/agent/local/services/AgentSessions.js.map +1 -1
- package/bin/agent/remote/RemoteSession.d.ts +2 -0
- package/bin/agent/remote/RemoteSession.d.ts.map +1 -1
- package/bin/agent/remote/RemoteSession.js +4 -0
- package/bin/agent/remote/RemoteSession.js.map +1 -1
- package/bin/agent/remote/RemoteTransport.d.ts +2 -0
- package/bin/agent/remote/RemoteTransport.d.ts.map +1 -1
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts +1 -0
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -1
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.js +11 -7
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.js.map +1 -1
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts +1 -0
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -1
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.js +3 -0
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.js.map +1 -1
- package/bin/executor/Executor.d.ts +43 -0
- package/bin/executor/Executor.d.ts.map +1 -1
- package/bin/executor/Executor.js +127 -7
- package/bin/executor/Executor.js.map +1 -1
- package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts +10 -0
- package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts +0 -10
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js +4 -34
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts +1 -3
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js +7 -59
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts +38 -0
- package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +1 -0
- package/bin/executor/core-engine/CoreEngineContextCompaction.js +392 -0
- package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +1 -0
- package/bin/executor/core-engine/CoreEngineMessageState.d.ts +15 -0
- package/bin/executor/core-engine/CoreEngineMessageState.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineMessageState.js +20 -0
- package/bin/executor/core-engine/CoreEngineMessageState.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.d.ts +15 -0
- package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.js +150 -35
- package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
- package/bin/executor/store/history/SessionHistoryStore.d.ts +7 -23
- package/bin/executor/store/history/SessionHistoryStore.d.ts.map +1 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +2 -4
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
- package/bin/executor/tools/plugin/PluginToolBridge.d.ts.map +1 -1
- package/bin/executor/tools/plugin/PluginToolBridge.js +4 -2
- package/bin/executor/tools/plugin/PluginToolBridge.js.map +1 -1
- package/bin/executor/types/SessionRun.d.ts +8 -0
- package/bin/executor/types/SessionRun.d.ts.map +1 -1
- package/bin/index.d.ts +3 -2
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +2 -2
- package/bin/index.js.map +1 -1
- package/bin/model/CityModelAdapter.d.ts +6 -0
- package/bin/model/CityModelAdapter.d.ts.map +1 -1
- package/bin/model/CityModelAdapter.js +13 -0
- package/bin/model/CityModelAdapter.js.map +1 -1
- package/bin/plugin/core/PluginLocalExecution.js +3 -3
- package/bin/plugin/core/PluginLocalExecution.js.map +1 -1
- package/bin/plugin/core/PluginRegistry.d.ts +41 -2
- package/bin/plugin/core/PluginRegistry.d.ts.map +1 -1
- package/bin/plugin/core/PluginRegistry.js +145 -6
- package/bin/plugin/core/PluginRegistry.js.map +1 -1
- package/bin/rpc/Client.d.ts +4 -0
- package/bin/rpc/Client.d.ts.map +1 -1
- package/bin/rpc/Client.js +11 -0
- package/bin/rpc/Client.js.map +1 -1
- package/bin/session/Session.d.ts +15 -1
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +83 -11
- package/bin/session/Session.js.map +1 -1
- package/bin/session/SessionSystemBuilder.d.ts.map +1 -1
- package/bin/session/SessionSystemBuilder.js +3 -1
- package/bin/session/SessionSystemBuilder.js.map +1 -1
- package/bin/session/browse/Browse.d.ts +0 -8
- package/bin/session/browse/Browse.d.ts.map +1 -1
- package/bin/session/browse/Browse.js +72 -57
- package/bin/session/browse/Browse.js.map +1 -1
- package/bin/session/recorder/JsonlSessionMessageStore.d.ts +69 -16
- package/bin/session/recorder/JsonlSessionMessageStore.d.ts.map +1 -1
- package/bin/session/recorder/JsonlSessionMessageStore.js +283 -60
- package/bin/session/recorder/JsonlSessionMessageStore.js.map +1 -1
- package/bin/session/recorder/SessionRecorder.d.ts +20 -2
- package/bin/session/recorder/SessionRecorder.d.ts.map +1 -1
- package/bin/session/recorder/SessionRecorder.js +91 -46
- package/bin/session/recorder/SessionRecorder.js.map +1 -1
- package/bin/session/recorder/SessionRecorderCompaction.d.ts +3 -3
- package/bin/session/recorder/SessionRecorderCompaction.d.ts.map +1 -1
- package/bin/session/recorder/SessionRecorderCompaction.js +118 -88
- package/bin/session/recorder/SessionRecorderCompaction.js.map +1 -1
- package/bin/session/recorder/SessionRecorderHistoryStore.d.ts +2 -2
- package/bin/session/recorder/SessionRecorderHistoryStore.d.ts.map +1 -1
- package/bin/session/recorder/SessionRecorderHistoryStore.js +31 -36
- package/bin/session/recorder/SessionRecorderHistoryStore.js.map +1 -1
- package/bin/session/runtime/SessionPromptRuntime.d.ts +21 -1
- package/bin/session/runtime/SessionPromptRuntime.d.ts.map +1 -1
- package/bin/session/runtime/SessionPromptRuntime.js +65 -8
- package/bin/session/runtime/SessionPromptRuntime.js.map +1 -1
- package/bin/session/services/SessionStateService.d.ts +19 -1
- package/bin/session/services/SessionStateService.d.ts.map +1 -1
- package/bin/session/services/SessionStateService.js +70 -40
- package/bin/session/services/SessionStateService.js.map +1 -1
- package/bin/session/services/SessionTurnService.d.ts +15 -0
- package/bin/session/services/SessionTurnService.d.ts.map +1 -1
- package/bin/session/services/SessionTurnService.js +104 -7
- package/bin/session/services/SessionTurnService.js.map +1 -1
- package/bin/session/services/SessionViewService.d.ts +1 -5
- package/bin/session/services/SessionViewService.d.ts.map +1 -1
- package/bin/session/services/SessionViewService.js +4 -34
- package/bin/session/services/SessionViewService.js.map +1 -1
- package/bin/session/storage/Paths.d.ts +3 -15
- package/bin/session/storage/Paths.d.ts.map +1 -1
- package/bin/session/storage/Paths.js +5 -21
- package/bin/session/storage/Paths.js.map +1 -1
- package/bin/types/agent/SessionActor.d.ts +8 -0
- package/bin/types/agent/SessionActor.d.ts.map +1 -1
- package/bin/types/agent/SessionTypes.d.ts +2 -24
- package/bin/types/agent/SessionTypes.d.ts.map +1 -1
- package/bin/types/executor/SessionRunContext.d.ts +29 -0
- package/bin/types/executor/SessionRunContext.d.ts.map +1 -1
- package/bin/types/plugin/PluginRuntime.d.ts +59 -2
- package/bin/types/plugin/PluginRuntime.d.ts.map +1 -1
- package/bin/types/plugin/PluginState.d.ts +10 -0
- package/bin/types/plugin/PluginState.d.ts.map +1 -1
- package/bin/types/rpc/RpcProtocol.d.ts +10 -0
- package/bin/types/rpc/RpcProtocol.d.ts.map +1 -1
- package/bin/types/runtime/agent/AgentContext.d.ts +17 -5
- package/bin/types/runtime/agent/AgentContext.d.ts.map +1 -1
- package/bin/types/runtime/agent/AgentContext.js +29 -6
- package/bin/types/runtime/agent/AgentContext.js.map +1 -1
- package/bin/types/session/SessionLocalState.d.ts +8 -0
- package/bin/types/session/SessionLocalState.d.ts.map +1 -1
- package/bin/types/session/SessionMessage.d.ts +16 -12
- package/bin/types/session/SessionMessage.d.ts.map +1 -1
- package/bin/types/session/SessionMutation.d.ts +1 -1
- package/bin/types/session/SessionMutation.js +1 -1
- package/bin/types/session/SessionOptions.d.ts +16 -0
- package/bin/types/session/SessionOptions.d.ts.map +1 -1
- package/bin/types/session/SessionQueueCommand.d.ts +68 -0
- package/bin/types/session/SessionQueueCommand.d.ts.map +1 -0
- package/bin/types/session/SessionQueueCommand.js +10 -0
- package/bin/types/session/SessionQueueCommand.js.map +1 -0
- package/bin/types/session/SessionSegment.d.ts +57 -0
- package/bin/types/session/SessionSegment.d.ts.map +1 -0
- package/bin/types/session/SessionSegment.js +8 -0
- package/bin/types/session/SessionSegment.js.map +1 -0
- package/bin/utils/logger/Logger.d.ts +7 -9
- package/bin/utils/logger/Logger.d.ts.map +1 -1
- package/bin/utils/logger/Logger.js +11 -9
- package/bin/utils/logger/Logger.js.map +1 -1
- package/package.json +3 -3
- package/scripts/city-model-tool-loop.test.mjs +32 -0
- package/scripts/core-engine-context-compaction.test.mjs +411 -0
- package/scripts/logger-isolation.test.mjs +55 -0
- package/scripts/multi-agent-plugin-isolation.test.mjs +289 -0
- package/scripts/plugin-tool-bridge.test.mjs +52 -0
- package/scripts/remote-session-reconnect.test.mjs +18 -0
- package/scripts/session-action-message.test.mjs +59 -13
- package/scripts/session-compaction-context-window.test.mjs +96 -0
- package/scripts/session-config-turn-boundary.test.mjs +278 -0
- package/scripts/session-list-title.test.mjs +21 -3
- package/scripts/session-prompt-runtime.test.mjs +93 -0
- package/scripts/session-recorder.test.mjs +335 -15
- package/src/agent/local/Agent.ts +34 -3
- package/src/agent/local/services/AgentSessions.ts +61 -0
- package/src/agent/remote/RemoteSession.ts +5 -0
- package/src/agent/remote/RemoteTransport.ts +2 -0
- package/src/agent/remote/transports/HttpRemoteAgentTransport.ts +15 -5
- package/src/agent/remote/transports/RpcRemoteAgentTransport.ts +4 -0
- package/src/executor/Executor.ts +161 -7
- package/src/executor/composer/compaction/SessionCompactionComposer.ts +12 -0
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.ts +4 -55
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.ts +8 -66
- package/src/executor/core-engine/CoreEngineContextCompaction.ts +477 -0
- package/src/executor/core-engine/CoreEngineMessageState.ts +29 -0
- package/src/executor/core-engine/CoreEngineRunner.ts +211 -43
- package/src/executor/store/history/SessionHistoryStore.ts +7 -26
- package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +2 -4
- package/src/executor/tools/plugin/PluginToolBridge.ts +4 -2
- package/src/executor/types/SessionRun.ts +9 -0
- package/src/index.ts +9 -1
- package/src/model/CityModelAdapter.ts +15 -0
- package/src/plugin/core/PluginLocalExecution.ts +3 -3
- package/src/plugin/core/PluginRegistry.ts +187 -6
- package/src/rpc/Client.ts +12 -0
- package/src/session/Session.ts +97 -11
- package/src/session/SessionSystemBuilder.ts +4 -1
- package/src/session/browse/Browse.ts +73 -69
- package/src/session/recorder/JsonlSessionMessageStore.ts +378 -60
- package/src/session/recorder/SessionRecorder.ts +116 -49
- package/src/session/recorder/SessionRecorderCompaction.ts +131 -108
- package/src/session/recorder/SessionRecorderHistoryStore.ts +29 -49
- package/src/session/runtime/SessionPromptRuntime.ts +86 -10
- package/src/session/services/SessionStateService.ts +89 -45
- package/src/session/services/SessionTurnService.ts +112 -7
- package/src/session/services/SessionViewService.ts +4 -50
- package/src/session/storage/Paths.ts +5 -38
- package/src/types/agent/SessionActor.ts +9 -0
- package/src/types/agent/SessionTypes.ts +2 -24
- package/src/types/executor/SessionRunContext.ts +34 -0
- package/src/types/plugin/PluginRuntime.ts +63 -2
- package/src/types/plugin/PluginState.ts +10 -0
- package/src/types/rpc/RpcProtocol.ts +11 -0
- package/src/types/runtime/agent/AgentContext.ts +32 -7
- package/src/types/session/SessionLocalState.ts +9 -0
- package/src/types/session/SessionMessage.ts +16 -12
- package/src/types/session/SessionMutation.ts +1 -1
- package/src/types/session/SessionOptions.ts +21 -0
- package/src/types/session/SessionQueueCommand.ts +78 -0
- package/src/types/session/SessionSegment.ts +62 -0
- package/src/utils/logger/Logger.ts +10 -10
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderHistoryStore.d.ts","sourceRoot":"","sources":["../../../src/session/recorder/SessionRecorderHistoryStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAQxE,mCAAmC;AACnC,MAAM,WAAW,kCAAkC;IACjD,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wDAAwD;AACxD,qBAAa,2BAA4B,YAAW,mBAAmB;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAE/B,OAAO,EAAE,kCAAkC;IAQvD,kDAAkD;IAC5C,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D3D,uCAAuC;IACjC,aAAa,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionRecorderHistoryStore.d.ts","sourceRoot":"","sources":["../../../src/session/recorder/SessionRecorderHistoryStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAQxE,mCAAmC;AACnC,MAAM,WAAW,kCAAkC;IACjD,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wDAAwD;AACxD,qBAAa,2BAA4B,YAAW,mBAAmB;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAE/B,OAAO,EAAE,kCAAkC;IAQvD,kDAAkD;IAC5C,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D3D,uCAAuC;IACjC,aAAa,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAWtD,mDAAmD;IAC7C,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9D,wDAAwD;IAClD,iBAAiB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzE,4CAA4C;IACtC,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IA6BhD,6BAA6B;IACvB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI3E,6BAA6B;IACvB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,kDAAkD;IAC5C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9C,uDAAuD;IACjD,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC;QACxD,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAOF,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,eAAe;IAgBnB,gCAAgC;IAChC,aAAa,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAC5B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;KAC/B,GAAG,eAAe;IAgBnB,2CAA2C;IAC3C,MAAM,CAAC,KAAK,EAAE;QACZ,MAAM,EAAE,qBAAqB,CAAC;QAC9B,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAC5C,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,qBAAqB;CAc1B"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SessionRecorder 到 Executor SessionHistoryStore 的内部投影适配器。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - Recorder 的
|
|
5
|
+
* - Recorder 的 active.jsonl、segments 与 assistant_message.json 共同组成持久化事实源。
|
|
6
6
|
* - Executor 继续读取临时 UIMessage 投影,不直接拥有文件写入权。
|
|
7
7
|
* - 流式草稿写入由 AssistantMessageWriter 负责,Executor 的旧接口只提供投影兼容。
|
|
8
8
|
*/
|
|
@@ -77,11 +77,8 @@ export class SessionRecorderHistoryStore {
|
|
|
77
77
|
}
|
|
78
78
|
/** 从 Recorder 当前快照投影运行中的 Assistant。 */
|
|
79
79
|
async read_inflight() {
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
include_internal: true,
|
|
83
|
-
});
|
|
84
|
-
const assistant = [...page.items]
|
|
80
|
+
const snapshot = await this.recorder.context_snapshot();
|
|
81
|
+
const assistant = [...snapshot.messages]
|
|
85
82
|
.reverse()
|
|
86
83
|
.find((message) => message.type === "assistant" && message.status === "streaming");
|
|
87
84
|
return assistant ? to_executor_ui_message(assistant) : null;
|
|
@@ -92,15 +89,34 @@ export class SessionRecorderHistoryStore {
|
|
|
92
89
|
async finalize_inflight(_message) { }
|
|
93
90
|
/** 返回 Context Composer 使用的 UIMessage 投影。 */
|
|
94
91
|
async list_records() {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
const snapshot = await this.recorder.context_snapshot();
|
|
93
|
+
const records = [];
|
|
94
|
+
if (snapshot.summary) {
|
|
95
|
+
records.push({
|
|
96
|
+
id: snapshot.summary.summary_id,
|
|
97
|
+
role: "assistant",
|
|
98
|
+
metadata: {
|
|
99
|
+
v: 1,
|
|
100
|
+
ts: snapshot.summary.created_at,
|
|
101
|
+
sessionId: this.sessionId,
|
|
102
|
+
source: "compact",
|
|
103
|
+
kind: "summary",
|
|
104
|
+
extra: {
|
|
105
|
+
visibility: "internal",
|
|
106
|
+
summaryThroughSequence: snapshot.summary.through_sequence,
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
parts: [{ type: "text", text: snapshot.summary.text }],
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
for (const message of snapshot.messages) {
|
|
113
|
+
if (message.type !== "user" && message.type !== "assistant")
|
|
114
|
+
continue;
|
|
101
115
|
const projected = to_executor_ui_message(message);
|
|
102
|
-
|
|
103
|
-
|
|
116
|
+
if (projected)
|
|
117
|
+
records.push(projected);
|
|
118
|
+
}
|
|
119
|
+
return records;
|
|
104
120
|
}
|
|
105
121
|
/** 返回 Context Message 区间。 */
|
|
106
122
|
async slice_records(start, end) {
|
|
@@ -114,7 +130,7 @@ export class SessionRecorderHistoryStore {
|
|
|
114
130
|
async meta() {
|
|
115
131
|
return {};
|
|
116
132
|
}
|
|
117
|
-
/** 通过 Recorder
|
|
133
|
+
/** 通过 Recorder 把 Active 前缀关闭为带累计 Summary 的 Segment。 */
|
|
118
134
|
async compact(input) {
|
|
119
135
|
return await compact_session_recorder_messages({
|
|
120
136
|
recorder: this.recorder,
|
|
@@ -168,27 +184,6 @@ export class SessionRecorderHistoryStore {
|
|
|
168
184
|
};
|
|
169
185
|
}
|
|
170
186
|
}
|
|
171
|
-
function project_context_messages(messages) {
|
|
172
|
-
const latest_summary = [...messages]
|
|
173
|
-
.reverse()
|
|
174
|
-
.find((message) => message.type === "assistant" &&
|
|
175
|
-
message.kind === "summary" &&
|
|
176
|
-
message.visibility === "internal");
|
|
177
|
-
if (!latest_summary ||
|
|
178
|
-
latest_summary.type !== "assistant" ||
|
|
179
|
-
!latest_summary.summary_through_message_id) {
|
|
180
|
-
return messages.filter((message) => message.type === "user" || message.type === "assistant");
|
|
181
|
-
}
|
|
182
|
-
const boundary_index = messages.findIndex((message) => message.message_id === latest_summary.summary_through_message_id);
|
|
183
|
-
return [
|
|
184
|
-
latest_summary,
|
|
185
|
-
...messages
|
|
186
|
-
.slice(boundary_index + 1)
|
|
187
|
-
.filter((message) => message !== latest_summary &&
|
|
188
|
-
message.type === "user" ||
|
|
189
|
-
(message.type === "assistant" && message.kind !== "summary")),
|
|
190
|
-
];
|
|
191
|
-
}
|
|
192
187
|
function infer_action_type(message_id) {
|
|
193
188
|
return String(message_id || "").split(":")[0] || "action";
|
|
194
189
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderHistoryStore.js","sourceRoot":"","sources":["../../../src/session/recorder/SessionRecorderHistoryStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SessionRecorderHistoryStore.js","sourceRoot":"","sources":["../../../src/session/recorder/SessionRecorderHistoryStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import type { SessionMessageRecordV1 } from "../../executor/types/SessionRecords
|
|
|
11
11
|
import type { SessionMutation } from "../../types/session/SessionMutation.js";
|
|
12
12
|
import type { AgentSessionPromptInput } from "../../types/sdk/AgentSessionPrompt.js";
|
|
13
13
|
import type { AgentSessionStopResult } from "../../types/sdk/AgentSessionStop.js";
|
|
14
|
+
import type { SessionQueueCommand } from "../../types/session/SessionQueueCommand.js";
|
|
14
15
|
import type { AgentSessionTurnHandle } from "../../types/sdk/AgentSessionTurn.js";
|
|
15
16
|
/**
|
|
16
17
|
* SessionPromptRuntime 构造参数。
|
|
@@ -72,6 +73,18 @@ export declare class SessionPromptRuntime {
|
|
|
72
73
|
* 追加一条新的 prompt。
|
|
73
74
|
*/
|
|
74
75
|
prompt(input: AgentSessionPromptInput): Promise<AgentSessionTurnHandle>;
|
|
76
|
+
/**
|
|
77
|
+
* 把一次已成功创建的 command 加入统一输入队列。
|
|
78
|
+
*/
|
|
79
|
+
enqueue_command(command: SessionQueueCommand): void;
|
|
80
|
+
/**
|
|
81
|
+
* 判断是否存在等待并入下一 Session step 的 prompt。
|
|
82
|
+
*/
|
|
83
|
+
has_pending_prompt(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* 判断是否存在等待在下一 Session step 检查点执行的 command。
|
|
86
|
+
*/
|
|
87
|
+
has_pending_command(): boolean;
|
|
75
88
|
/**
|
|
76
89
|
* 返回当前 actor prompt 调度器是否仍处于活跃态。
|
|
77
90
|
*
|
|
@@ -87,6 +100,13 @@ export declare class SessionPromptRuntime {
|
|
|
87
100
|
private ensureProcessing;
|
|
88
101
|
private processLoop;
|
|
89
102
|
private cancelQueuedPrompts;
|
|
90
|
-
|
|
103
|
+
/**
|
|
104
|
+
* 在下一 Session step 检查点按入队顺序提交配置并持久化 steer。
|
|
105
|
+
*/
|
|
106
|
+
private drain_queued_inputs;
|
|
107
|
+
/**
|
|
108
|
+
* 执行一组已经从统一队列截取的 command。
|
|
109
|
+
*/
|
|
110
|
+
private execute_commands;
|
|
91
111
|
}
|
|
92
112
|
//# sourceMappingURL=SessionPromptRuntime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionPromptRuntime.d.ts","sourceRoot":"","sources":["../../../src/session/runtime/SessionPromptRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAEV,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionPromptRuntime.d.ts","sourceRoot":"","sources":["../../../src/session/runtime/SessionPromptRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAEV,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,iCAAiC,CAAC;AAkEzC;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,2BAA2B,EAAE,CAC3B,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,QAAQ,GAAG,OAAO,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEnC,kCAAkC;IAClC,kBAAkB,EAAE,CAAC,KAAK,EAAE;QAC1B,iBAAiB;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpB;;OAEG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,uBAAuB,CAAC;QACrC,WAAW,EAAE,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACnD,WAAW,EAAE,WAAW,CAAC;KAC1B,KAAK,OAAO,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;QACjD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAA6D;IACzG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoD;IACvF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,UAAU,CAAgC;gBAEtC,OAAO,EAAE,2BAA2B;IAYhD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAWvE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAInD;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;;;;;OAMG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,IAAI,IAAI,sBAAsB;IAyB9B,OAAO,CAAC,gBAAgB;YAUV,WAAW;IA4GzB,OAAO,CAAC,mBAAmB;IA+C3B;;OAEG;YACW,mBAAmB;IAsCjC;;OAEG;YACW,gBAAgB;CAe/B"}
|
|
@@ -39,12 +39,31 @@ export class SessionPromptRuntime {
|
|
|
39
39
|
prompt(input) {
|
|
40
40
|
const deferredHandle = createDeferred();
|
|
41
41
|
this.queue.push({
|
|
42
|
+
type: "prompt",
|
|
42
43
|
input,
|
|
43
44
|
deferredHandle,
|
|
44
45
|
});
|
|
45
46
|
this.ensureProcessing();
|
|
46
47
|
return deferredHandle.promise;
|
|
47
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* 把一次已成功创建的 command 加入统一输入队列。
|
|
51
|
+
*/
|
|
52
|
+
enqueue_command(command) {
|
|
53
|
+
this.queue.push(command);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 判断是否存在等待并入下一 Session step 的 prompt。
|
|
57
|
+
*/
|
|
58
|
+
has_pending_prompt() {
|
|
59
|
+
return this.queue.some((item) => item.type === "prompt");
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 判断是否存在等待在下一 Session step 检查点执行的 command。
|
|
63
|
+
*/
|
|
64
|
+
has_pending_command() {
|
|
65
|
+
return this.queue.some((item) => item.type === "command");
|
|
66
|
+
}
|
|
48
67
|
/**
|
|
49
68
|
* 返回当前 actor prompt 调度器是否仍处于活跃态。
|
|
50
69
|
*
|
|
@@ -53,7 +72,7 @@ export class SessionPromptRuntime {
|
|
|
53
72
|
* - Session 会用它阻止内部 direct execution 与 actor 模式并发混用。
|
|
54
73
|
*/
|
|
55
74
|
isActive() {
|
|
56
|
-
return this.processingPromise !== null || this.
|
|
75
|
+
return this.processingPromise !== null || this.has_pending_prompt();
|
|
57
76
|
}
|
|
58
77
|
/**
|
|
59
78
|
* 停止当前 turn,并取消尚未被吸收的排队 prompt。
|
|
@@ -83,15 +102,19 @@ export class SessionPromptRuntime {
|
|
|
83
102
|
return;
|
|
84
103
|
this.processingPromise = this.processLoop().finally(() => {
|
|
85
104
|
this.processingPromise = null;
|
|
86
|
-
if (this.
|
|
105
|
+
if (this.has_pending_prompt()) {
|
|
87
106
|
this.ensureProcessing();
|
|
88
107
|
}
|
|
89
108
|
});
|
|
90
109
|
}
|
|
91
110
|
async processLoop() {
|
|
92
|
-
while (this.
|
|
111
|
+
while (this.has_pending_prompt()) {
|
|
112
|
+
const prompt_index = this.queue.findIndex((item) => item.type === "prompt");
|
|
113
|
+
if (prompt_index < 0)
|
|
114
|
+
break;
|
|
115
|
+
const queued_before_prompt = this.queue.splice(0, prompt_index);
|
|
93
116
|
const current = this.queue.shift();
|
|
94
|
-
if (!current)
|
|
117
|
+
if (!current || current.type !== "prompt")
|
|
95
118
|
break;
|
|
96
119
|
const turnId = `turn:${this.sessionId}:${Date.now()}:${nanoid(6)}`;
|
|
97
120
|
const activeTurn = createActiveTurnState(turnId);
|
|
@@ -107,12 +130,13 @@ export class SessionPromptRuntime {
|
|
|
107
130
|
});
|
|
108
131
|
current.deferredHandle.resolve(createTurnHandle(activeTurn));
|
|
109
132
|
try {
|
|
133
|
+
await this.execute_commands(queued_before_prompt.filter((item) => item.type === "command"), activeTurn);
|
|
110
134
|
await this.createAndPersistUserMessage(current.input, turnId, "prompt");
|
|
111
135
|
const result = await this.executeTurn({
|
|
112
136
|
turnId,
|
|
113
137
|
promptInput: current.input,
|
|
114
138
|
onStepMerge: async () => {
|
|
115
|
-
return await this.
|
|
139
|
+
return await this.drain_queued_inputs(activeTurn);
|
|
116
140
|
},
|
|
117
141
|
abortSignal: activeTurn.abortController.signal,
|
|
118
142
|
});
|
|
@@ -189,9 +213,11 @@ export class SessionPromptRuntime {
|
|
|
189
213
|
}
|
|
190
214
|
}
|
|
191
215
|
cancelQueuedPrompts() {
|
|
192
|
-
|
|
216
|
+
const cancelled = this.queue.filter((item) => item.type === "prompt");
|
|
217
|
+
if (cancelled.length <= 0)
|
|
193
218
|
return 0;
|
|
194
|
-
const
|
|
219
|
+
const retained = this.queue.filter((item) => item.type === "command");
|
|
220
|
+
this.queue.splice(0, this.queue.length, ...retained);
|
|
195
221
|
for (const item of cancelled) {
|
|
196
222
|
const turnId = `turn:${this.sessionId}:cancelled:${Date.now()}:${nanoid(6)}`;
|
|
197
223
|
const cancelledTurn = createActiveTurnState(turnId);
|
|
@@ -231,13 +257,27 @@ export class SessionPromptRuntime {
|
|
|
231
257
|
}
|
|
232
258
|
return cancelled.length;
|
|
233
259
|
}
|
|
234
|
-
|
|
260
|
+
/**
|
|
261
|
+
* 在下一 Session step 检查点按入队顺序提交配置并持久化 steer。
|
|
262
|
+
*/
|
|
263
|
+
async drain_queued_inputs(activeTurn) {
|
|
235
264
|
if (this.queue.length <= 0)
|
|
236
265
|
return [];
|
|
237
266
|
const drained = this.queue.splice(0, this.queue.length);
|
|
238
267
|
const merged = [];
|
|
239
268
|
for (let index = 0; index < drained.length; index += 1) {
|
|
240
269
|
const item = drained[index];
|
|
270
|
+
if (item.type === "command") {
|
|
271
|
+
try {
|
|
272
|
+
await item.execute({
|
|
273
|
+
turn_id: activeTurn.turnId,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// command 自己负责失败观测;单条失败不能吞掉后续 steer 或 command。
|
|
278
|
+
}
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
241
281
|
try {
|
|
242
282
|
const message = await this.createAndPersistUserMessage(item.input, activeTurn.turnId, "steer");
|
|
243
283
|
item.deferredHandle.resolve(createTurnHandle(activeTurn));
|
|
@@ -252,6 +292,23 @@ export class SessionPromptRuntime {
|
|
|
252
292
|
}
|
|
253
293
|
return merged;
|
|
254
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* 执行一组已经从统一队列截取的 command。
|
|
297
|
+
*/
|
|
298
|
+
async execute_commands(commands, active_turn) {
|
|
299
|
+
if (commands.length <= 0)
|
|
300
|
+
return;
|
|
301
|
+
for (const command of commands) {
|
|
302
|
+
try {
|
|
303
|
+
await command.execute({
|
|
304
|
+
turn_id: active_turn.turnId,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
// command 自己负责失败观测;单条失败不能阻断当前 prompt。
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
255
312
|
}
|
|
256
313
|
function buildPromptRuntimeErrorAssistantMessage(input) {
|
|
257
314
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionPromptRuntime.js","sourceRoot":"","sources":["../../../src/session/runtime/SessionPromptRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionPromptRuntime.js","sourceRoot":"","sources":["../../../src/session/runtime/SessionPromptRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import type { SessionMutation } from "../../types/session/SessionMutation.js";
|
|
|
13
13
|
import type { AgentSessionPromptInput } from "../../types/sdk/AgentSessionPrompt.js";
|
|
14
14
|
import type { SessionActionRecordInputV1, SessionActionRecordV1, SessionRecordV1, SessionMessageRecordV1, SessionUserMessageV1 } from "../../executor/types/SessionRecords.js";
|
|
15
15
|
import type { SessionLocalState } from "../../types/session/SessionLocalState.js";
|
|
16
|
+
import type { SessionQueueCommand } from "../../types/session/SessionQueueCommand.js";
|
|
16
17
|
import type { Logger } from "../../utils/logger/Logger.js";
|
|
17
18
|
import type { AgentModel } from "../../model/CityModelAdapter.js";
|
|
18
19
|
import { SessionRecorder } from "../../session/recorder/SessionRecorder.js";
|
|
@@ -69,6 +70,19 @@ type SessionSetOptions = {
|
|
|
69
70
|
emit_action?: boolean;
|
|
70
71
|
};
|
|
71
72
|
type EmitActionInput = SessionActionRecordInputV1 | SessionActionRecordV1;
|
|
73
|
+
/**
|
|
74
|
+
* Session 配置成功写入后的队列提交结果。
|
|
75
|
+
*/
|
|
76
|
+
export interface SessionConfiguredCommandResult {
|
|
77
|
+
/**
|
|
78
|
+
* 等待在下一 Session step 检查点执行的 command。
|
|
79
|
+
*
|
|
80
|
+
* 说明(中文)
|
|
81
|
+
* - 输入未产生实际配置变化时为空。
|
|
82
|
+
* - fork 等内部初始化路径可以选择立即提交而不返回 command。
|
|
83
|
+
*/
|
|
84
|
+
command?: SessionQueueCommand;
|
|
85
|
+
}
|
|
72
86
|
/**
|
|
73
87
|
* 本地 Session 状态与持久化服务。
|
|
74
88
|
*/
|
|
@@ -112,7 +126,7 @@ export declare class SessionStateService {
|
|
|
112
126
|
/**
|
|
113
127
|
* 写入当前 session 配置。
|
|
114
128
|
*/
|
|
115
|
-
set(input: AgentSessionSetInput, options?: SessionSetOptions): Promise<
|
|
129
|
+
set(input: AgentSessionSetInput, options?: SessionSetOptions): Promise<SessionConfiguredCommandResult>;
|
|
116
130
|
/** 恢复 metadata 中持久化的模型覆盖。 */
|
|
117
131
|
private restore_persisted_model;
|
|
118
132
|
/** 使用宿主 resolver 解析稳定模型 ID。 */
|
|
@@ -156,6 +170,10 @@ export declare class SessionStateService {
|
|
|
156
170
|
* 写入并发布一条 action。
|
|
157
171
|
*/
|
|
158
172
|
emit_action_event(input: EmitActionInput): Promise<void>;
|
|
173
|
+
/**
|
|
174
|
+
* 尽力写入配置生效 action,不让 timeline 故障改变 effective state。
|
|
175
|
+
*/
|
|
176
|
+
emit_config_action_event(input: EmitActionInput): Promise<boolean>;
|
|
159
177
|
/**
|
|
160
178
|
* 构造并持久化一条 prompt user 消息。
|
|
161
179
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionStateService.d.ts","sourceRoot":"","sources":["../../../src/session/services/SessionStateService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"SessionStateService.d.ts","sourceRoot":"","sources":["../../../src/session/services/SessionStateService.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - 该服务只关心状态事实源与持久化副作用,不负责 turn 编排。
|
|
7
7
|
* - `Session` facade 与 turn/view service 都通过它访问可变 session 运行态。
|
|
8
8
|
*/
|
|
9
|
-
import { inferAgentModelLabel, normalizeAgentModel, } from "../../model/CityModelAdapter.js";
|
|
9
|
+
import { inferAgentModelLabel, normalizeAgentModel, read_agent_model_context_window, } from "../../model/CityModelAdapter.js";
|
|
10
10
|
import { patchSessionModelLabel, readSessionMetadata, resolveSystemTimezone, writeSessionMetadata, } from "../../session/storage/Metadata.js";
|
|
11
11
|
import { touchSessionMetadata } from "../../session/storage/Persistence.js";
|
|
12
12
|
import { ensureSessionTitle } from "../../session/SessionTitle.js";
|
|
@@ -14,8 +14,6 @@ import { hydrateUserPromptFileParts } from "../../executor/messages/SessionAttac
|
|
|
14
14
|
import { generateId } from "../../utils/Id.js";
|
|
15
15
|
import { normalize_session_user_parts } from "../../session/recorder/SessionRecorder.js";
|
|
16
16
|
import { from_ui_assistant_parts, from_ui_user_parts, to_executor_ui_message, } from "../../session/recorder/SessionMessageCodec.js";
|
|
17
|
-
import fs from "fs-extra";
|
|
18
|
-
import { getSdkAgentSessionMessagesPath } from "../../session/storage/Paths.js";
|
|
19
17
|
/**
|
|
20
18
|
* 本地 Session 状态与持久化服务。
|
|
21
19
|
*/
|
|
@@ -102,6 +100,9 @@ export class SessionStateService {
|
|
|
102
100
|
...(metadata.modelId ? { modelId: metadata.modelId } : {}),
|
|
103
101
|
};
|
|
104
102
|
await this.restore_persisted_model();
|
|
103
|
+
this.state.effective_session_config = {
|
|
104
|
+
...this.state.sessionConfig,
|
|
105
|
+
};
|
|
105
106
|
})();
|
|
106
107
|
await this.state.initializePromise;
|
|
107
108
|
}
|
|
@@ -160,46 +161,58 @@ export class SessionStateService {
|
|
|
160
161
|
const previous_model_name = previous_model_label || previous_model_id;
|
|
161
162
|
const next_model_name = next_model_label || next_model_id;
|
|
162
163
|
const action_id = `model-switching:${this.session_id}:${Date.now()}:${generateId()}`;
|
|
163
|
-
if (should_emit_model_switch_action) {
|
|
164
|
-
await this.emit_action_event({
|
|
165
|
-
id: action_id,
|
|
166
|
-
title: `Switching session model from ${previous_model_name} to ${next_model_name}`,
|
|
167
|
-
state: "running",
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
164
|
try {
|
|
165
|
+
const next_config = {
|
|
166
|
+
...this.state.sessionConfig,
|
|
167
|
+
};
|
|
171
168
|
if (next_model) {
|
|
172
|
-
|
|
173
|
-
|
|
169
|
+
next_config.model = normalizeAgentModel(next_model);
|
|
170
|
+
next_config.modelLabel = next_model_label;
|
|
171
|
+
next_config.model_context_window =
|
|
172
|
+
read_agent_model_context_window(next_model);
|
|
174
173
|
}
|
|
175
174
|
if (next_model_id) {
|
|
176
|
-
|
|
175
|
+
next_config.modelId = next_model_id;
|
|
177
176
|
}
|
|
178
177
|
await patchSessionModelLabel({
|
|
179
178
|
projectRoot: this.project_root,
|
|
180
179
|
agentId: this.agent_id,
|
|
181
180
|
sessionId: this.session_id,
|
|
182
|
-
model:
|
|
183
|
-
modelId:
|
|
181
|
+
model: next_config.model,
|
|
182
|
+
modelId: next_config.modelId,
|
|
184
183
|
});
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
184
|
+
this.state.sessionConfig = next_config;
|
|
185
|
+
const apply_effective_config = async (turn_id) => {
|
|
186
|
+
this.state.effective_session_config = {
|
|
187
|
+
...next_config,
|
|
188
|
+
};
|
|
189
|
+
if (!should_emit_model_switch_action)
|
|
190
|
+
return;
|
|
191
|
+
await this.emit_config_action_event({
|
|
189
192
|
id: action_id,
|
|
190
|
-
title: `Session model
|
|
191
|
-
|
|
192
|
-
|
|
193
|
+
title: `Session model switched from ${previous_model_name} to ${next_model_name}`,
|
|
194
|
+
state: "completed",
|
|
195
|
+
...(turn_id ? { turnId: turn_id } : {}),
|
|
193
196
|
});
|
|
197
|
+
};
|
|
198
|
+
if (options?.emit_action === false) {
|
|
199
|
+
await apply_effective_config();
|
|
200
|
+
return {};
|
|
194
201
|
}
|
|
195
|
-
|
|
202
|
+
const command_id = generateId();
|
|
203
|
+
return {
|
|
204
|
+
command: {
|
|
205
|
+
type: "command",
|
|
206
|
+
command_id,
|
|
207
|
+
scope: "session",
|
|
208
|
+
execute: async ({ turn_id }) => {
|
|
209
|
+
await apply_effective_config(turn_id);
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
};
|
|
196
213
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
id: action_id,
|
|
200
|
-
title: `Session model switched from ${previous_model_name} to ${next_model_name}`,
|
|
201
|
-
state: "completed",
|
|
202
|
-
});
|
|
214
|
+
catch (error) {
|
|
215
|
+
throw error;
|
|
203
216
|
}
|
|
204
217
|
}
|
|
205
218
|
/** 恢复 metadata 中持久化的模型覆盖。 */
|
|
@@ -210,6 +223,8 @@ export class SessionStateService {
|
|
|
210
223
|
const model = await this.resolve_model_by_id(model_id);
|
|
211
224
|
this.state.sessionConfig.model = normalizeAgentModel(model);
|
|
212
225
|
this.state.sessionConfig.modelLabel = inferAgentModelLabel(model);
|
|
226
|
+
this.state.sessionConfig.model_context_window =
|
|
227
|
+
read_agent_model_context_window(model);
|
|
213
228
|
}
|
|
214
229
|
/** 使用宿主 resolver 解析稳定模型 ID。 */
|
|
215
230
|
async resolve_model_by_id(model_id) {
|
|
@@ -262,22 +277,15 @@ export class SessionStateService {
|
|
|
262
277
|
* 仅刷新当前 session metadata。
|
|
263
278
|
*/
|
|
264
279
|
async touch_metadata() {
|
|
265
|
-
const
|
|
266
|
-
|
|
267
|
-
include_internal: true,
|
|
268
|
-
});
|
|
269
|
-
const messages_path = getSdkAgentSessionMessagesPath(this.project_root, this.agent_id, this.session_id);
|
|
270
|
-
const history_bytes = await fs.stat(messages_path)
|
|
271
|
-
.then((file_stat) => file_stat.size)
|
|
272
|
-
.catch(() => 0);
|
|
273
|
-
const preview_text = resolve_message_preview(message_page.items[message_page.items.length - 1]).slice(0, 180);
|
|
280
|
+
const stats = await this.recorder.storage_stats();
|
|
281
|
+
const preview_text = resolve_message_preview(stats.latest_message || undefined).slice(0, 180);
|
|
274
282
|
await touchSessionMetadata({
|
|
275
283
|
projectRoot: this.project_root,
|
|
276
284
|
agentId: this.agent_id,
|
|
277
285
|
sessionId: this.session_id,
|
|
278
286
|
sessionConfig: this.state.sessionConfig,
|
|
279
|
-
message_count:
|
|
280
|
-
history_bytes,
|
|
287
|
+
message_count: stats.message_count,
|
|
288
|
+
history_bytes: stats.history_bytes,
|
|
281
289
|
...(preview_text ? { preview_text } : {}),
|
|
282
290
|
});
|
|
283
291
|
}
|
|
@@ -374,6 +382,28 @@ export class SessionStateService {
|
|
|
374
382
|
},
|
|
375
383
|
});
|
|
376
384
|
}
|
|
385
|
+
/**
|
|
386
|
+
* 尽力写入配置生效 action,不让 timeline 故障改变 effective state。
|
|
387
|
+
*/
|
|
388
|
+
async emit_config_action_event(input) {
|
|
389
|
+
try {
|
|
390
|
+
await this.emit_action_event(input);
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
try {
|
|
395
|
+
await this.logger.log("warn", "[agent] config action persistence failed", {
|
|
396
|
+
sessionId: this.session_id,
|
|
397
|
+
actionId: String(input.id || ""),
|
|
398
|
+
error: error instanceof Error ? error.message : String(error),
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
// 配置已经提交,日志失败也不能反向改变 effective state。
|
|
403
|
+
}
|
|
404
|
+
return false;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
377
407
|
/**
|
|
378
408
|
* 构造并持久化一条 prompt user 消息。
|
|
379
409
|
*/
|