@downcity/agent 1.1.200 → 1.1.202
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 +3 -7
- package/bin/agent/local/Agent.d.ts.map +1 -1
- package/bin/agent/local/Agent.js +14 -19
- package/bin/agent/local/Agent.js.map +1 -1
- package/bin/agent/local/services/{AgentSessionManager.d.ts → AgentSessions.d.ts} +12 -17
- package/bin/agent/local/services/AgentSessions.d.ts.map +1 -0
- package/bin/agent/local/services/{AgentSessionManager.js → AgentSessions.js} +11 -26
- package/bin/agent/local/services/AgentSessions.js.map +1 -0
- package/bin/agent/remote/RemoteAgent.d.ts +2 -9
- package/bin/agent/remote/RemoteAgent.d.ts.map +1 -1
- package/bin/agent/remote/RemoteAgent.js +40 -22
- package/bin/agent/remote/RemoteAgent.js.map +1 -1
- package/bin/agent/remote/RemoteSession.d.ts +5 -5
- package/bin/agent/remote/RemoteSession.d.ts.map +1 -1
- package/bin/agent/remote/RemoteSession.js +5 -3
- package/bin/agent/remote/RemoteSession.js.map +1 -1
- package/bin/agent/remote/RemoteTransport.d.ts +2 -2
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts +2 -2
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.js +5 -5
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts +2 -2
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.js +2 -2
- package/bin/executor/Executor.d.ts +5 -5
- package/bin/executor/Executor.d.ts.map +1 -1
- package/bin/executor/Executor.js +22 -13
- package/bin/executor/Executor.js.map +1 -1
- package/bin/executor/SessionRunScope.d.ts +1 -1
- package/bin/executor/SessionRunScope.d.ts.map +1 -1
- package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts +3 -3
- package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts +4 -5
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js +56 -16
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js.map +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.d.ts +27 -0
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.d.ts.map +1 -0
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.js +181 -0
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.js.map +1 -0
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts +45 -0
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts.map +1 -0
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js +144 -0
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js.map +1 -0
- package/bin/executor/composer/context/LocalSessionContextComposer.d.ts +3 -3
- package/bin/executor/composer/context/LocalSessionContextComposer.d.ts.map +1 -1
- package/bin/executor/composer/context/SessionContextComposer.d.ts +3 -3
- package/bin/executor/composer/context/SessionContextComposer.d.ts.map +1 -1
- package/bin/executor/composer/history/SessionHistoryComposer.d.ts +2 -2
- package/bin/executor/composer/history/SessionHistoryComposer.d.ts.map +1 -1
- package/bin/executor/composer/history/SessionHistoryWriter.d.ts +5 -5
- package/bin/executor/composer/history/SessionHistoryWriter.d.ts.map +1 -1
- package/bin/executor/composer/history/SessionHistoryWriter.js +6 -6
- package/bin/executor/composer/history/SessionHistoryWriter.js.map +1 -1
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.d.ts +2 -2
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.d.ts.map +1 -1
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.js +5 -5
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineMessageState.d.ts +5 -5
- package/bin/executor/core-engine/CoreEngineMessageState.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineMessageState.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineSignals.d.ts +4 -4
- package/bin/executor/core-engine/CoreEngineSignals.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineSignals.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts +3 -3
- package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineUiStreamCollector.js.map +1 -1
- package/bin/executor/messages/AssistantResultPersistence.d.ts +5 -5
- package/bin/executor/messages/AssistantResultPersistence.d.ts.map +1 -1
- package/bin/executor/messages/AssistantResultPersistence.js +1 -1
- package/bin/executor/messages/AssistantResultPersistence.js.map +1 -1
- package/bin/executor/messages/SessionAttachmentMapper.d.ts +3 -3
- package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +1 -1
- package/bin/executor/messages/SessionAttachmentMapper.js.map +1 -1
- package/bin/executor/messages/SessionMessageCodec.d.ts +4 -4
- package/bin/executor/messages/SessionMessageCodec.d.ts.map +1 -1
- package/bin/executor/messages/SessionMessageCodec.js +5 -5
- package/bin/executor/messages/SessionMessageCodec.js.map +1 -1
- package/bin/executor/messages/SessionMessageLog.d.ts +3 -3
- package/bin/executor/messages/SessionMessageLog.d.ts.map +1 -1
- package/bin/executor/messages/SessionMessageLog.js.map +1 -1
- package/bin/executor/messages/SessionStepEventMapper.d.ts +2 -2
- package/bin/executor/messages/SessionStepEventMapper.d.ts.map +1 -1
- package/bin/executor/messages/SessionStepEventMapper.js.map +1 -1
- package/bin/executor/messages/UserVisibleText.d.ts +3 -3
- package/bin/executor/messages/UserVisibleText.d.ts.map +1 -1
- package/bin/executor/messages/UserVisibleText.js +3 -3
- package/bin/executor/messages/UserVisibleText.js.map +1 -1
- package/bin/executor/services/ExecutorInflightService.d.ts +2 -2
- package/bin/executor/services/ExecutorInflightService.d.ts.map +1 -1
- package/bin/executor/services/ExecutorInflightService.js +4 -4
- package/bin/executor/services/ExecutorInflightService.js.map +1 -1
- package/bin/executor/store/history/SessionHistoryStore.d.ts +24 -21
- package/bin/executor/store/history/SessionHistoryStore.d.ts.map +1 -1
- package/bin/executor/store/history/SessionHistoryStore.js +3 -3
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +18 -19
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +33 -36
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
- package/bin/executor/tools/plugin/PluginToolDefinition.d.ts +1 -7
- package/bin/executor/tools/plugin/PluginToolDefinition.d.ts.map +1 -1
- package/bin/executor/tools/plugin/PluginToolSchemas.d.ts +4 -6
- package/bin/executor/tools/plugin/PluginToolSchemas.d.ts.map +1 -1
- package/bin/executor/tools/plugin/PluginToolSchemas.js +24 -10
- package/bin/executor/tools/plugin/PluginToolSchemas.js.map +1 -1
- package/bin/executor/types/{SessionMessages.d.ts → SessionRecords.d.ts} +53 -28
- package/bin/executor/types/SessionRecords.d.ts.map +1 -0
- package/bin/executor/types/SessionRecords.js +52 -0
- package/bin/executor/types/SessionRecords.js.map +1 -0
- package/bin/executor/types/SessionRun.d.ts +3 -3
- package/bin/executor/types/SessionRun.d.ts.map +1 -1
- package/bin/index.d.ts +1 -1
- package/bin/index.d.ts.map +1 -1
- package/bin/rpc/Client.d.ts +5 -5
- package/bin/rpc/Client.js +4 -4
- package/bin/session/Session.d.ts +6 -6
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +8 -8
- package/bin/session/Session.js.map +1 -1
- package/bin/session/SessionTitle.d.ts +2 -2
- package/bin/session/SessionTitle.d.ts.map +1 -1
- package/bin/session/SessionTitle.js +3 -3
- package/bin/session/SessionTitle.js.map +1 -1
- package/bin/session/browse/Browse.d.ts +12 -12
- package/bin/session/browse/Browse.d.ts.map +1 -1
- package/bin/session/browse/Browse.js +9 -9
- package/bin/session/browse/Browse.js.map +1 -1
- package/bin/session/index.d.ts +1 -1
- package/bin/session/index.js +1 -1
- package/bin/session/runtime/SessionPromptRuntime.d.ts +3 -3
- package/bin/session/runtime/SessionPromptRuntime.d.ts.map +1 -1
- package/bin/session/services/SessionStateService.d.ts +7 -8
- package/bin/session/services/SessionStateService.d.ts.map +1 -1
- package/bin/session/services/SessionStateService.js +15 -31
- package/bin/session/services/SessionStateService.js.map +1 -1
- package/bin/session/services/SessionViewService.d.ts +4 -4
- package/bin/session/services/SessionViewService.js +12 -12
- package/bin/session/services/SessionViewService.js.map +1 -1
- package/bin/session/storage/Persistence.d.ts +4 -4
- package/bin/session/storage/Persistence.d.ts.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.d.ts +2 -2
- package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.js +4 -4
- package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
- package/bin/types/agent/AgentTypes.d.ts +2 -2
- package/bin/types/agent/AgentTypes.d.ts.map +1 -1
- package/bin/types/agent/SessionActor.d.ts +11 -11
- package/bin/types/agent/SessionActor.d.ts.map +1 -1
- package/bin/types/agent/SessionTypes.d.ts +12 -12
- package/bin/types/agent/SessionTypes.d.ts.map +1 -1
- package/bin/types/executor/SessionRunContext.d.ts +2 -2
- package/bin/types/executor/SessionRunContext.d.ts.map +1 -1
- package/bin/types/rpc/RpcProtocol.d.ts +6 -6
- package/bin/types/runtime/agent/AgentContext.d.ts +7 -7
- package/bin/types/runtime/agent/AgentContext.d.ts.map +1 -1
- package/bin/types/sdk/AgentSessionAction.d.ts +8 -49
- package/bin/types/sdk/AgentSessionAction.d.ts.map +1 -1
- package/bin/types/sdk/AgentSessionAction.js +4 -4
- package/bin/types/sdk/AgentSessionTurn.d.ts +2 -2
- package/bin/types/sdk/AgentSessionTurn.d.ts.map +1 -1
- package/package.json +3 -3
- package/scripts/agent-ready.test.mjs +1 -1
- package/scripts/city-model-tool-loop.test.mjs +36 -4
- package/scripts/plugin-tool-bridge.test.mjs +13 -0
- package/scripts/session-action-message.test.mjs +25 -25
- package/scripts/session-compaction-prompts.test.mjs +97 -0
- package/scripts/session-history-archive.test.mjs +8 -8
- package/scripts/session-history-inflight.test.mjs +10 -10
- package/scripts/session-list-title.test.mjs +9 -9
- package/scripts/session-title-event.test.mjs +12 -10
- package/src/agent/local/Agent.ts +16 -22
- package/src/agent/local/services/{AgentSessionManager.ts → AgentSessions.ts} +16 -32
- package/src/agent/remote/RemoteAgent.ts +58 -23
- package/src/agent/remote/RemoteSession.ts +10 -8
- package/src/agent/remote/RemoteTransport.ts +5 -5
- package/src/agent/remote/transports/HttpRemoteAgentTransport.ts +10 -10
- package/src/agent/remote/transports/RpcRemoteAgentTransport.ts +6 -6
- package/src/executor/Executor.ts +30 -19
- package/src/executor/SessionRunScope.ts +1 -1
- package/src/executor/composer/compaction/SessionCompactionComposer.ts +3 -3
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.ts +73 -29
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.ts +197 -0
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.ts +162 -0
- package/src/executor/composer/context/LocalSessionContextComposer.ts +5 -5
- package/src/executor/composer/context/SessionContextComposer.ts +5 -5
- package/src/executor/composer/history/SessionHistoryComposer.ts +2 -2
- package/src/executor/composer/history/SessionHistoryWriter.ts +10 -10
- package/src/executor/composer/history/jsonl/JsonlSessionHistoryComposer.ts +13 -13
- package/src/executor/core-engine/CoreEngineMessageState.ts +8 -8
- package/src/executor/core-engine/CoreEngineRunner.ts +7 -7
- package/src/executor/core-engine/CoreEngineSignals.ts +7 -7
- package/src/executor/core-engine/CoreEngineUiStreamCollector.ts +5 -5
- package/src/executor/messages/AssistantResultPersistence.ts +8 -8
- package/src/executor/messages/SessionAttachmentMapper.ts +11 -11
- package/src/executor/messages/SessionMessageCodec.ts +10 -10
- package/src/executor/messages/SessionMessageLog.ts +3 -3
- package/src/executor/messages/SessionStepEventMapper.ts +5 -5
- package/src/executor/messages/UserVisibleText.ts +9 -9
- package/src/executor/services/ExecutorInflightService.ts +7 -7
- package/src/executor/store/history/SessionHistoryStore.ts +26 -23
- package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +58 -62
- package/src/executor/tools/plugin/PluginToolSchemas.ts +24 -10
- package/src/executor/types/{SessionMessages.ts → SessionRecords.ts} +71 -40
- package/src/executor/types/SessionRun.ts +5 -5
- package/src/index.ts +4 -4
- package/src/rpc/Client.ts +9 -9
- package/src/session/Session.ts +10 -10
- package/src/session/SessionTitle.ts +7 -7
- package/src/session/browse/Browse.ts +38 -38
- package/src/session/index.ts +1 -1
- package/src/session/runtime/SessionPromptRuntime.ts +6 -6
- package/src/session/services/SessionStateService.ts +29 -44
- package/src/session/services/SessionTurnService.ts +4 -4
- package/src/session/services/SessionViewService.ts +21 -21
- package/src/session/storage/Persistence.ts +6 -6
- package/src/session/storage/RuntimeSessionPort.ts +6 -6
- package/src/types/agent/AgentTypes.ts +4 -4
- package/src/types/agent/SessionActor.ts +12 -12
- package/src/types/agent/SessionTypes.ts +12 -12
- package/src/types/executor/SessionRunContext.ts +2 -2
- package/src/types/rpc/RpcProtocol.ts +6 -6
- package/src/types/runtime/agent/AgentContext.ts +8 -8
- package/src/types/sdk/AgentSessionAction.ts +12 -56
- package/src/types/sdk/AgentSessionTurn.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/bin/agent/local/services/AgentSessionManager.d.ts.map +0 -1
- package/bin/agent/local/services/AgentSessionManager.js.map +0 -1
- package/bin/executor/types/SessionMessages.d.ts.map +0 -1
- package/bin/executor/types/SessionMessages.js +0 -46
- package/bin/executor/types/SessionMessages.js.map +0 -1
|
@@ -10,7 +10,7 @@ import type { Tool } from "ai";
|
|
|
10
10
|
import type { AgentContext } from "../../types/runtime/agent/AgentContext.js";
|
|
11
11
|
import type { DowncityConfig } from "../../types/config/DowncityConfig.js";
|
|
12
12
|
import type { AgentPlugins } from "../../plugin/types/Plugin.js";
|
|
13
|
-
import type { AgentOptions,
|
|
13
|
+
import type { AgentOptions, AgentSessions as AgentSessionsApi } from "../../types/agent/AgentTypes.js";
|
|
14
14
|
import type { ShellApprovalMode, ShellApprovalDecisionResult, ShellApprovalModeUpdateResult, ShellApprovalModeOption, ShellSessionApprovalModeView, ShellApprovalView, Shell } from "@downcity/shell";
|
|
15
15
|
import { Logger } from "../../utils/logger/Logger.js";
|
|
16
16
|
/**
|
|
@@ -21,6 +21,7 @@ export declare class Agent {
|
|
|
21
21
|
readonly path: string;
|
|
22
22
|
readonly tools: Record<string, Tool>;
|
|
23
23
|
readonly plugins: AgentPlugins;
|
|
24
|
+
readonly sessions: AgentSessionsApi;
|
|
24
25
|
private readonly logger;
|
|
25
26
|
private readonly agentContext;
|
|
26
27
|
private readonly pluginRegistry;
|
|
@@ -28,7 +29,6 @@ export declare class Agent {
|
|
|
28
29
|
private readonly env;
|
|
29
30
|
private readonly defaultModel?;
|
|
30
31
|
private readonly SessionClass;
|
|
31
|
-
private readonly sessionManager;
|
|
32
32
|
private readonly backgroundService;
|
|
33
33
|
private readonly shell?;
|
|
34
34
|
private instruction;
|
|
@@ -122,14 +122,10 @@ export declare class Agent {
|
|
|
122
122
|
* 返回当前 agent context。
|
|
123
123
|
*/
|
|
124
124
|
getContext(): AgentContext;
|
|
125
|
-
/**
|
|
126
|
-
* 返回当前 session collection 入口。
|
|
127
|
-
*/
|
|
128
|
-
session_collection(): AgentSessionCollection;
|
|
129
125
|
/**
|
|
130
126
|
* 返回当前 agent 挂载的 Shell。
|
|
131
127
|
*/
|
|
132
128
|
getShell(): Shell | undefined;
|
|
133
|
-
private
|
|
129
|
+
private create_sessions;
|
|
134
130
|
}
|
|
135
131
|
//# sourceMappingURL=Agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../../src/agent/local/Agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAEV,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../../src/agent/local/Agent.ts"],"names":[],"mappings":"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"}
|
package/bin/agent/local/Agent.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { normalizeInstructionInput } from "../../agent/local/AgentInstructions.js";
|
|
10
10
|
import { AgentAssemblyService, } from "../../agent/local/services/AgentAssemblyService.js";
|
|
11
|
-
import {
|
|
11
|
+
import { AgentSessions as LocalAgentSessions } from "../../agent/local/services/AgentSessions.js";
|
|
12
12
|
import { AgentBackgroundService } from "../../agent/local/services/AgentBackgroundService.js";
|
|
13
13
|
/**
|
|
14
14
|
* SDK 本地 Agent。
|
|
@@ -18,6 +18,7 @@ export class Agent {
|
|
|
18
18
|
path;
|
|
19
19
|
tools;
|
|
20
20
|
plugins;
|
|
21
|
+
sessions;
|
|
21
22
|
logger;
|
|
22
23
|
agentContext;
|
|
23
24
|
pluginRegistry;
|
|
@@ -25,27 +26,26 @@ export class Agent {
|
|
|
25
26
|
env;
|
|
26
27
|
defaultModel;
|
|
27
28
|
SessionClass;
|
|
28
|
-
sessionManager;
|
|
29
29
|
backgroundService;
|
|
30
30
|
shell;
|
|
31
31
|
instruction;
|
|
32
32
|
constructor(options) {
|
|
33
33
|
this.defaultModel = options.model;
|
|
34
34
|
this.SessionClass = options.Session;
|
|
35
|
-
let
|
|
35
|
+
let sessions_ref = null;
|
|
36
36
|
const assembly_service = new AgentAssemblyService({
|
|
37
37
|
options,
|
|
38
|
-
list_cached_sessions: () =>
|
|
38
|
+
list_cached_sessions: () => sessions_ref?.list_cached_sessions() || [],
|
|
39
39
|
get_session_port: (session_id) => {
|
|
40
|
-
if (!
|
|
41
|
-
throw new Error("Agent
|
|
40
|
+
if (!sessions_ref) {
|
|
41
|
+
throw new Error("Agent sessions are not initialized");
|
|
42
42
|
}
|
|
43
|
-
return
|
|
43
|
+
return sessions_ref.get_session_port(session_id);
|
|
44
44
|
},
|
|
45
45
|
resolve_session_model: async (session_id) => {
|
|
46
|
-
if (!
|
|
46
|
+
if (!sessions_ref)
|
|
47
47
|
return undefined;
|
|
48
|
-
const session = await
|
|
48
|
+
const session = await sessions_ref.get(session_id);
|
|
49
49
|
return session.config.model;
|
|
50
50
|
},
|
|
51
51
|
});
|
|
@@ -67,8 +67,9 @@ export class Agent {
|
|
|
67
67
|
agent_context: this.agentContext,
|
|
68
68
|
get_shell: () => this.shell,
|
|
69
69
|
});
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
const sessions = this.create_sessions(assembly);
|
|
71
|
+
this.sessions = sessions;
|
|
72
|
+
sessions_ref = sessions;
|
|
72
73
|
}
|
|
73
74
|
/**
|
|
74
75
|
* 等待 Agent 后台能力启动完成。
|
|
@@ -202,20 +203,14 @@ export class Agent {
|
|
|
202
203
|
getContext() {
|
|
203
204
|
return this.agentContext;
|
|
204
205
|
}
|
|
205
|
-
/**
|
|
206
|
-
* 返回当前 session collection 入口。
|
|
207
|
-
*/
|
|
208
|
-
session_collection() {
|
|
209
|
-
return this.sessionManager.get_session_collection();
|
|
210
|
-
}
|
|
211
206
|
/**
|
|
212
207
|
* 返回当前 agent 挂载的 Shell。
|
|
213
208
|
*/
|
|
214
209
|
getShell() {
|
|
215
210
|
return this.shell;
|
|
216
211
|
}
|
|
217
|
-
|
|
218
|
-
return new
|
|
212
|
+
create_sessions(assembly) {
|
|
213
|
+
return new LocalAgentSessions({
|
|
219
214
|
agent_id: this.id || assembly.id,
|
|
220
215
|
project_root: this.path || assembly.path,
|
|
221
216
|
tools: this.tools || assembly.tools,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../../src/agent/local/Agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EACL,oBAAoB,GAErB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../../src/agent/local/Agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* AgentSessions:本地 Agent session 集合入口。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - 统一管理 session
|
|
5
|
+
* - 统一管理 session 缓存、创建、恢复、默认配置注入与列表查询。
|
|
6
6
|
* - 该服务只负责 session 生命周期与查询,不负责 plugin / RPC 启停。
|
|
7
7
|
* - Session 对象创建细节集中在这里,避免 facade 和 lifecycle 重复依赖 Session 构造逻辑。
|
|
8
8
|
*/
|
|
9
9
|
import type { Tool } from "ai";
|
|
10
10
|
import type { Logger } from "../../../utils/logger/Logger.js";
|
|
11
|
-
import type { AgentCreateSessionInput, AgentArchiveSessionInput, AgentArchiveSessionsInput, AgentArchiveSessionResult, AgentArchiveSessionsResult, AgentCleanArchiveResult, AgentListSessionsInput, AgentManagedSession, AgentModel, AgentSession,
|
|
11
|
+
import type { AgentCreateSessionInput, AgentArchiveSessionInput, AgentArchiveSessionsInput, AgentArchiveSessionResult, AgentArchiveSessionsResult, AgentCleanArchiveResult, AgentListSessionsInput, AgentManagedSession, AgentModel, AgentSession, AgentSessions as AgentSessionsApi, AgentSessionConstructor, AgentSessionSummaryPage } from "../../../types/agent/AgentTypes.js";
|
|
12
12
|
import type { AgentContext } from "../../../types/runtime/agent/AgentContext.js";
|
|
13
13
|
import type { SessionPort } from "../../../types/runtime/agent/AgentContext.js";
|
|
14
14
|
import type { Plugin } from "../../../types/plugin/PluginDefinition.js";
|
|
15
|
-
type
|
|
15
|
+
type AgentSessionsOptions = {
|
|
16
16
|
/**
|
|
17
17
|
* 当前 agent 稳定标识。
|
|
18
18
|
*/
|
|
@@ -60,7 +60,7 @@ type AgentSessionManagerOptions = {
|
|
|
60
60
|
/**
|
|
61
61
|
* 本地 Agent session 管理服务。
|
|
62
62
|
*/
|
|
63
|
-
export declare class
|
|
63
|
+
export declare class AgentSessions implements AgentSessionsApi<AgentSession> {
|
|
64
64
|
private readonly agent_id;
|
|
65
65
|
private readonly project_root;
|
|
66
66
|
private readonly tools;
|
|
@@ -73,16 +73,11 @@ export declare class AgentSessionManager {
|
|
|
73
73
|
private readonly SessionClass;
|
|
74
74
|
private readonly sessions_by_id;
|
|
75
75
|
private readonly configured_session_ids;
|
|
76
|
-
|
|
77
|
-
constructor(options: AgentSessionManagerOptions);
|
|
76
|
+
constructor(options: AgentSessionsOptions);
|
|
78
77
|
/**
|
|
79
78
|
* 返回当前缓存的 session 实例。
|
|
80
79
|
*/
|
|
81
80
|
list_cached_sessions(): AgentManagedSession[];
|
|
82
|
-
/**
|
|
83
|
-
* 返回对外暴露的 session collection。
|
|
84
|
-
*/
|
|
85
|
-
get_session_collection(): AgentSessionCollection;
|
|
86
81
|
/**
|
|
87
82
|
* 获取或创建一个 session runtime port。
|
|
88
83
|
*/
|
|
@@ -90,23 +85,23 @@ export declare class AgentSessionManager {
|
|
|
90
85
|
/**
|
|
91
86
|
* 新建一个 session。
|
|
92
87
|
*/
|
|
93
|
-
|
|
88
|
+
create(input?: AgentCreateSessionInput): Promise<AgentSession>;
|
|
94
89
|
/**
|
|
95
90
|
* 获取一个已存在的 session。
|
|
96
91
|
*/
|
|
97
|
-
|
|
92
|
+
get(session_id: string): Promise<AgentSession>;
|
|
98
93
|
/**
|
|
99
94
|
* 列出当前 agent 的 session 摘要页。
|
|
100
95
|
*/
|
|
101
|
-
|
|
96
|
+
list(input?: AgentListSessionsInput): Promise<AgentSessionSummaryPage>;
|
|
102
97
|
/**
|
|
103
98
|
* 归档单个 session。
|
|
104
99
|
*/
|
|
105
|
-
|
|
100
|
+
archive(input: AgentArchiveSessionInput): Promise<AgentArchiveSessionResult>;
|
|
106
101
|
/**
|
|
107
102
|
* 列出当前 agent 的已归档 session 摘要页。
|
|
108
103
|
*/
|
|
109
|
-
|
|
104
|
+
archived(input?: AgentArchiveSessionsInput): Promise<AgentArchiveSessionsResult>;
|
|
110
105
|
/**
|
|
111
106
|
* 永久清空已归档 session。
|
|
112
107
|
*/
|
|
@@ -117,4 +112,4 @@ export declare class AgentSessionManager {
|
|
|
117
112
|
private load_plugin_system_blocks;
|
|
118
113
|
}
|
|
119
114
|
export {};
|
|
120
|
-
//# sourceMappingURL=
|
|
115
|
+
//# sourceMappingURL=AgentSessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentSessions.d.ts","sourceRoot":"","sources":["../../../../src/agent/local/services/AgentSessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* AgentSessions:本地 Agent session 集合入口。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - 统一管理 session
|
|
5
|
+
* - 统一管理 session 缓存、创建、恢复、默认配置注入与列表查询。
|
|
6
6
|
* - 该服务只负责 session 生命周期与查询,不负责 plugin / RPC 启停。
|
|
7
7
|
* - Session 对象创建细节集中在这里,避免 facade 和 lifecycle 重复依赖 Session 构造逻辑。
|
|
8
8
|
*/
|
|
@@ -22,7 +22,7 @@ function decodeMaybe(input) {
|
|
|
22
22
|
/**
|
|
23
23
|
* 本地 Agent session 管理服务。
|
|
24
24
|
*/
|
|
25
|
-
export class
|
|
25
|
+
export class AgentSessions {
|
|
26
26
|
agent_id;
|
|
27
27
|
project_root;
|
|
28
28
|
tools;
|
|
@@ -35,7 +35,6 @@ export class AgentSessionManager {
|
|
|
35
35
|
SessionClass;
|
|
36
36
|
sessions_by_id = new Map();
|
|
37
37
|
configured_session_ids = new Set();
|
|
38
|
-
session_collection;
|
|
39
38
|
constructor(options) {
|
|
40
39
|
this.agent_id = options.agent_id;
|
|
41
40
|
this.project_root = options.project_root;
|
|
@@ -47,14 +46,6 @@ export class AgentSessionManager {
|
|
|
47
46
|
this.ensure_agent_ready = options.ensure_agent_ready;
|
|
48
47
|
this.default_model = options.default_model;
|
|
49
48
|
this.SessionClass = options.SessionClass || Session;
|
|
50
|
-
this.session_collection = {
|
|
51
|
-
create_session: async (input) => await this.create_session(input),
|
|
52
|
-
get_session: async (session_id) => await this.get_session(session_id),
|
|
53
|
-
list_sessions: async (input) => await this.list_sessions(input),
|
|
54
|
-
archive_session: async (input) => await this.archive_session(input),
|
|
55
|
-
archive_sessions: async (input) => await this.archive_sessions(input),
|
|
56
|
-
clean_archive: async () => await this.clean_archive(),
|
|
57
|
-
};
|
|
58
49
|
}
|
|
59
50
|
/**
|
|
60
51
|
* 返回当前缓存的 session 实例。
|
|
@@ -62,12 +53,6 @@ export class AgentSessionManager {
|
|
|
62
53
|
list_cached_sessions() {
|
|
63
54
|
return [...this.sessions_by_id.values()];
|
|
64
55
|
}
|
|
65
|
-
/**
|
|
66
|
-
* 返回对外暴露的 session collection。
|
|
67
|
-
*/
|
|
68
|
-
get_session_collection() {
|
|
69
|
-
return this.session_collection;
|
|
70
|
-
}
|
|
71
56
|
/**
|
|
72
57
|
* 获取或创建一个 session runtime port。
|
|
73
58
|
*/
|
|
@@ -79,7 +64,7 @@ export class AgentSessionManager {
|
|
|
79
64
|
/**
|
|
80
65
|
* 新建一个 session。
|
|
81
66
|
*/
|
|
82
|
-
async
|
|
67
|
+
async create(input) {
|
|
83
68
|
const explicit_session_id = String(input?.sessionId || "").trim() || undefined;
|
|
84
69
|
if (explicit_session_id &&
|
|
85
70
|
(this.sessions_by_id.has(explicit_session_id) ||
|
|
@@ -96,10 +81,10 @@ export class AgentSessionManager {
|
|
|
96
81
|
/**
|
|
97
82
|
* 获取一个已存在的 session。
|
|
98
83
|
*/
|
|
99
|
-
async
|
|
84
|
+
async get(session_id) {
|
|
100
85
|
const resolved_session_id = String(session_id || "").trim();
|
|
101
86
|
if (!resolved_session_id) {
|
|
102
|
-
throw new Error("
|
|
87
|
+
throw new Error("sessions.get requires a non-empty sessionId");
|
|
103
88
|
}
|
|
104
89
|
const session_dir_path = getSdkAgentSessionDirPath(this.project_root, this.agent_id, resolved_session_id);
|
|
105
90
|
if (!this.sessions_by_id.has(resolved_session_id) &&
|
|
@@ -116,7 +101,7 @@ export class AgentSessionManager {
|
|
|
116
101
|
/**
|
|
117
102
|
* 列出当前 agent 的 session 摘要页。
|
|
118
103
|
*/
|
|
119
|
-
async
|
|
104
|
+
async list(input) {
|
|
120
105
|
return await listAgentSessionSummaryPage({
|
|
121
106
|
projectRoot: this.project_root,
|
|
122
107
|
agentId: this.agent_id,
|
|
@@ -127,10 +112,10 @@ export class AgentSessionManager {
|
|
|
127
112
|
/**
|
|
128
113
|
* 归档单个 session。
|
|
129
114
|
*/
|
|
130
|
-
async
|
|
115
|
+
async archive(input) {
|
|
131
116
|
const session_id = String(input?.id || "").trim();
|
|
132
117
|
if (!session_id) {
|
|
133
|
-
throw new Error("
|
|
118
|
+
throw new Error("sessions.archive requires a non-empty id");
|
|
134
119
|
}
|
|
135
120
|
const executing_session_ids = new Set(this.get_agent_context().listExecutingSessionIds());
|
|
136
121
|
if (executing_session_ids.has(session_id)) {
|
|
@@ -157,7 +142,7 @@ export class AgentSessionManager {
|
|
|
157
142
|
/**
|
|
158
143
|
* 列出当前 agent 的已归档 session 摘要页。
|
|
159
144
|
*/
|
|
160
|
-
async
|
|
145
|
+
async archived(input) {
|
|
161
146
|
return await listArchivedAgentSessionSummaryPage({
|
|
162
147
|
projectRoot: this.project_root,
|
|
163
148
|
agentId: this.agent_id,
|
|
@@ -230,4 +215,4 @@ export class AgentSessionManager {
|
|
|
230
215
|
return await this.get_agent_context().plugins.systemBlocks();
|
|
231
216
|
}
|
|
232
217
|
}
|
|
233
|
-
//# sourceMappingURL=
|
|
218
|
+
//# sourceMappingURL=AgentSessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentSessions.js","sourceRoot":"","sources":["../../../../src/agent/local/services/AgentSessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,13 @@
|
|
|
6
6
|
* - 当前内部支持 `http/https` 与 `rpc` 两种访问方式。
|
|
7
7
|
* - `RemoteAgent` 只负责远程访问,不重复实现第二套会话编排器。
|
|
8
8
|
*/
|
|
9
|
-
import type {
|
|
9
|
+
import type { AgentSessions, RemoteAgentPluginActionInput, RemoteAgentPluginActionResult, RemoteAgentOptions, RemoteAgentSession } from "../../types/agent/AgentTypes.js";
|
|
10
10
|
import type { ShellApprovalMode, ShellApprovalDecisionResult, ShellApprovalModeUpdateResult, ShellApprovalModeOption, ShellSessionApprovalModeView, ShellApprovalView } from "@downcity/shell";
|
|
11
11
|
/**
|
|
12
12
|
* RemoteAgent:远程 Agent 客户端。
|
|
13
13
|
*/
|
|
14
14
|
export declare class RemoteAgent {
|
|
15
|
+
readonly sessions: AgentSessions<RemoteAgentSession>;
|
|
15
16
|
private readonly transport;
|
|
16
17
|
constructor(options: RemoteAgentOptions);
|
|
17
18
|
/**
|
|
@@ -63,13 +64,5 @@ export declare class RemoteAgent {
|
|
|
63
64
|
* - `http://` / `https://` 没有常驻连接,调用时是安全 no-op。
|
|
64
65
|
*/
|
|
65
66
|
close(): Promise<void>;
|
|
66
|
-
/**
|
|
67
|
-
* 返回当前远程 session collection 入口。
|
|
68
|
-
*
|
|
69
|
-
* 关键点(中文)
|
|
70
|
-
* - `RemoteAgentTransport` 只负责协议传输,不直接等价于 `AgentSessionCollection`。
|
|
71
|
-
* - 这里把 transport 包装为 `AgentSessionCollection`,`create_session` / `get_session` 返回 `RemoteSession` 实例。
|
|
72
|
-
*/
|
|
73
|
-
session_collection(): AgentSessionCollection;
|
|
74
67
|
}
|
|
75
68
|
//# sourceMappingURL=RemoteAgent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteAgent.d.ts","sourceRoot":"","sources":["../../../src/agent/remote/RemoteAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"RemoteAgent.d.ts","sourceRoot":"","sources":["../../../src/agent/remote/RemoteAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EASV,aAAa,EACb,4BAA4B,EAC5B,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAErD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;gBAErC,OAAO,EAAE,kBAAkB;IASvC;;;;;;OAMG;IACG,eAAe,CACnB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,6BAA6B,CAAC;IAgBzC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI/C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAI1D;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAIzF;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,iBAAiB,CAAC;KACzB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAI1C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAInF;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAIhF;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|
|
@@ -12,6 +12,7 @@ import { create_remote_agent_transport } from "../../agent/remote/TransportFacto
|
|
|
12
12
|
* RemoteAgent:远程 Agent 客户端。
|
|
13
13
|
*/
|
|
14
14
|
export class RemoteAgent {
|
|
15
|
+
sessions;
|
|
15
16
|
transport;
|
|
16
17
|
constructor(options) {
|
|
17
18
|
const url = String(options.url || "").trim();
|
|
@@ -19,6 +20,7 @@ export class RemoteAgent {
|
|
|
19
20
|
throw new Error("RemoteAgent requires a non-empty url");
|
|
20
21
|
}
|
|
21
22
|
this.transport = create_remote_agent_transport(url, options.token);
|
|
23
|
+
this.sessions = new RemoteAgentSessions(this.transport);
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* 执行远程 Agent runtime 内的 plugin action。
|
|
@@ -88,28 +90,44 @@ export class RemoteAgent {
|
|
|
88
90
|
async close() {
|
|
89
91
|
await this.transport.close?.();
|
|
90
92
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 远程 Agent session 集合入口。
|
|
96
|
+
*
|
|
97
|
+
* 关键点(中文)
|
|
98
|
+
* - `RemoteAgentTransport` 只负责协议传输,不直接暴露为用户 SDK API。
|
|
99
|
+
* - 这里把远程传输包装成和本地 `agent.sessions` 一致的方法命名。
|
|
100
|
+
*/
|
|
101
|
+
class RemoteAgentSessions {
|
|
102
|
+
transport;
|
|
103
|
+
constructor(transport) {
|
|
104
|
+
this.transport = transport;
|
|
105
|
+
}
|
|
106
|
+
/** 新建一个远程 session。 */
|
|
107
|
+
async create(input) {
|
|
108
|
+
const info = await this.transport.create_session(input);
|
|
109
|
+
return new RemoteSession(this.transport, info);
|
|
110
|
+
}
|
|
111
|
+
/** 获取一个远程 session。 */
|
|
112
|
+
async get(session_id) {
|
|
113
|
+
const info = await this.transport.get_info(session_id);
|
|
114
|
+
return new RemoteSession(this.transport, info);
|
|
115
|
+
}
|
|
116
|
+
/** 列出远程 session 摘要页。 */
|
|
117
|
+
async list(input) {
|
|
118
|
+
return await this.transport.list_sessions(input);
|
|
119
|
+
}
|
|
120
|
+
/** 归档一个远程 session。 */
|
|
121
|
+
async archive(input) {
|
|
122
|
+
return await this.transport.archive_session(input);
|
|
123
|
+
}
|
|
124
|
+
/** 列出远程已归档 session。 */
|
|
125
|
+
async archived(input) {
|
|
126
|
+
return await this.transport.archive_sessions(input);
|
|
127
|
+
}
|
|
128
|
+
/** 永久清空远程已归档 session。 */
|
|
129
|
+
async clean_archive() {
|
|
130
|
+
return await this.transport.clean_archive();
|
|
113
131
|
}
|
|
114
132
|
}
|
|
115
133
|
//# sourceMappingURL=RemoteAgent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteAgent.js","sourceRoot":"","sources":["../../../src/agent/remote/RemoteAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"RemoteAgent.js","sourceRoot":"","sources":["../../../src/agent/remote/RemoteAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - 这里只负责 session 级 API、turn lifecycle 与事件泵。
|
|
6
6
|
* - 具体 HTTP / RPC 细节由 RemoteSessionTransport 提供。
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { AgentSessionConfigSnapshot, AgentSessionForkInput, AgentSessionRecordsInput, AgentSessionRecordsPage, AgentSessionInfo, AgentSessionSetInput, AgentSessionSystemSnapshot, RemoteAgentSession } from "../../types/agent/AgentTypes.js";
|
|
9
9
|
import type { AgentSessionStopResult } from "../../types/sdk/AgentSessionStop.js";
|
|
10
10
|
import type { AgentSessionSubscriber, AgentSessionUnsubscribe } from "../../types/sdk/AgentSessionEvent.js";
|
|
11
11
|
import type { AgentSessionPromptInput } from "../../types/sdk/AgentSessionPrompt.js";
|
|
@@ -14,7 +14,7 @@ import type { RemoteSessionTransport } from "../../agent/remote/RemoteTransport.
|
|
|
14
14
|
/**
|
|
15
15
|
* 远程 Session 客户端。
|
|
16
16
|
*/
|
|
17
|
-
export declare class RemoteSession implements
|
|
17
|
+
export declare class RemoteSession implements RemoteAgentSession {
|
|
18
18
|
readonly id: string;
|
|
19
19
|
readonly agentId: string;
|
|
20
20
|
readonly config: AgentSessionConfigSnapshot;
|
|
@@ -34,7 +34,7 @@ export declare class RemoteSession implements AgentSession {
|
|
|
34
34
|
/**
|
|
35
35
|
* 读取当前远程 session 详情。
|
|
36
36
|
*/
|
|
37
|
-
|
|
37
|
+
get_info(): Promise<AgentSessionInfo>;
|
|
38
38
|
/**
|
|
39
39
|
* 向当前远程 session 追加一条新的 prompt。
|
|
40
40
|
*/
|
|
@@ -50,7 +50,7 @@ export declare class RemoteSession implements AgentSession {
|
|
|
50
50
|
/**
|
|
51
51
|
* 读取远程消息历史。
|
|
52
52
|
*/
|
|
53
|
-
|
|
53
|
+
records(input?: AgentSessionRecordsInput): Promise<AgentSessionRecordsPage>;
|
|
54
54
|
/**
|
|
55
55
|
* 读取远程 session 当前生效的 system prompt 快照。
|
|
56
56
|
*/
|
|
@@ -58,7 +58,7 @@ export declare class RemoteSession implements AgentSession {
|
|
|
58
58
|
/**
|
|
59
59
|
* 分叉远程 session。
|
|
60
60
|
*/
|
|
61
|
-
fork(input?: AgentSessionForkInput | string): Promise<
|
|
61
|
+
fork(input?: AgentSessionForkInput | string): Promise<RemoteAgentSession>;
|
|
62
62
|
private ensure_event_pump;
|
|
63
63
|
private handle_event;
|
|
64
64
|
private ensure_turn_lifecycle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteSession.d.ts","sourceRoot":"","sources":["../../../src/agent/remote/RemoteSession.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"RemoteSession.d.ts","sourceRoot":"","sources":["../../../src/agent/remote/RemoteSession.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAEV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,mCAAmC,CAAC;AAkB3C;;GAEG;AACH,qBAAa,aAAc,YAAW,kBAAkB;IACtD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0C;IACtE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgB;IACnD,OAAO,CAAC,0BAA0B,CAA8B;IAChE,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAsC;gBAEpD,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAQrE;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI3C;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAW7E;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAK7C;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,sBAAsB,GAAG,uBAAuB;IAgBtE;;OAEG;IACG,OAAO,CAAC,KAAK,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIjF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAInD;;OAEG;IACG,IAAI,CAAC,KAAK,CAAC,EAAE,qBAAqB,GAAG,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAKjE,iBAAiB;IA+B/B,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,uBAAuB;YAUjB,qBAAqB;CAapC"}
|
|
@@ -38,7 +38,7 @@ export class RemoteSession {
|
|
|
38
38
|
/**
|
|
39
39
|
* 读取当前远程 session 详情。
|
|
40
40
|
*/
|
|
41
|
-
async
|
|
41
|
+
async get_info() {
|
|
42
42
|
return await this.transport.get_info(this.id);
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
@@ -81,8 +81,8 @@ export class RemoteSession {
|
|
|
81
81
|
/**
|
|
82
82
|
* 读取远程消息历史。
|
|
83
83
|
*/
|
|
84
|
-
async
|
|
85
|
-
return await this.transport.
|
|
84
|
+
async records(input) {
|
|
85
|
+
return await this.transport.records(this.id, input);
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
88
|
* 读取远程 session 当前生效的 system prompt 快照。
|
|
@@ -230,6 +230,8 @@ function extract_turn_id(event) {
|
|
|
230
230
|
case "assistant-step":
|
|
231
231
|
case "turn-finish":
|
|
232
232
|
return event.turnId;
|
|
233
|
+
case "action":
|
|
234
|
+
return event.metadata.turnId || null;
|
|
233
235
|
default:
|
|
234
236
|
return null;
|
|
235
237
|
}
|