@downcity/agent 1.1.237 → 1.1.258
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/README.md +21 -20
- package/bin/agent/{local/Agent.d.ts → Agent.d.ts} +37 -27
- package/bin/agent/Agent.d.ts.map +1 -0
- package/bin/agent/Agent.js +211 -0
- package/bin/agent/Agent.js.map +1 -0
- package/bin/agent/AgentContext.d.ts +64 -0
- package/bin/agent/AgentContext.d.ts.map +1 -0
- package/bin/agent/AgentContext.js +53 -0
- package/bin/agent/AgentContext.js.map +1 -0
- package/bin/agent/{local/AgentInstructions.d.ts → AgentInstructions.d.ts} +1 -6
- package/bin/agent/AgentInstructions.d.ts.map +1 -0
- package/bin/agent/{local/AgentInstructions.js → AgentInstructions.js} +1 -10
- package/bin/agent/AgentInstructions.js.map +1 -0
- package/bin/{model/CityModelAdapter.d.ts → agent/AgentModel.d.ts} +3 -3
- package/bin/agent/AgentModel.d.ts.map +1 -0
- package/bin/{model/CityModelAdapter.js → agent/AgentModel.js} +11 -4
- package/bin/agent/AgentModel.js.map +1 -0
- package/bin/agent/{local/services/AgentSessions.d.ts → AgentSessions.d.ts} +30 -40
- package/bin/agent/AgentSessions.d.ts.map +1 -0
- package/bin/agent/{local/services/AgentSessions.js → AgentSessions.js} +62 -79
- package/bin/agent/AgentSessions.js.map +1 -0
- package/bin/agent/AgentState.d.ts +64 -0
- package/bin/agent/AgentState.d.ts.map +1 -0
- package/bin/agent/AgentState.js +118 -0
- package/bin/agent/AgentState.js.map +1 -0
- package/bin/config/Paths.d.ts +0 -43
- package/bin/config/Paths.d.ts.map +1 -1
- package/bin/config/Paths.js +0 -79
- package/bin/config/Paths.js.map +1 -1
- package/bin/config/ProjectSetup.d.ts.map +1 -0
- package/bin/{agent/local → config}/ProjectSetup.js +1 -1
- package/bin/config/ProjectSetup.js.map +1 -0
- package/bin/executor/Executor.d.ts +20 -86
- package/bin/executor/Executor.d.ts.map +1 -1
- package/bin/executor/Executor.js +109 -260
- package/bin/executor/Executor.js.map +1 -1
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +1 -1
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +1 -1
- package/bin/executor/composer/system/default/SystemDomain.d.ts +1 -1
- package/bin/executor/composer/system/default/SystemDomain.d.ts.map +1 -1
- package/bin/executor/composer/system/default/SystemDomain.js +4 -1
- package/bin/executor/composer/system/default/SystemDomain.js.map +1 -1
- package/bin/executor/composer/system/default/assets/core.prompt.d.ts +1 -1
- package/bin/executor/composer/system/default/assets/core.prompt.d.ts.map +1 -1
- package/bin/executor/composer/system/default/assets/core.prompt.js +1 -1
- package/bin/executor/composer/system/default/assets/core.prompt.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.d.ts +7 -13
- package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.js +81 -34
- package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
- package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +6 -12
- package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -1
- package/bin/executor/services/ExecutorRecoveryPolicy.js +20 -6
- package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -1
- package/bin/executor/tools/file/ReadImageToolBridge.d.ts +21 -0
- package/bin/executor/tools/file/ReadImageToolBridge.d.ts.map +1 -0
- package/bin/executor/tools/file/ReadImageToolBridge.js +69 -0
- package/bin/executor/tools/file/ReadImageToolBridge.js.map +1 -0
- package/bin/executor/tools/plugin/PluginToolBridge.d.ts.map +1 -1
- package/bin/executor/tools/plugin/PluginToolBridge.js +6 -5
- package/bin/executor/tools/plugin/PluginToolBridge.js.map +1 -1
- package/bin/executor/tools/plugin/PluginToolDefinition.d.ts.map +1 -1
- package/bin/executor/tools/plugin/PluginToolDefinition.js +15 -2
- package/bin/executor/tools/plugin/PluginToolDefinition.js.map +1 -1
- package/bin/executor/types/SessionHistoryMeta.d.ts +0 -2
- package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
- package/bin/index.d.ts +17 -21
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +9 -11
- package/bin/index.js.map +1 -1
- package/bin/plugin/core/ActionScheduleExecutor.d.ts +1 -1
- package/bin/plugin/core/ActionScheduleExecutor.d.ts.map +1 -1
- package/bin/plugin/core/ActionScheduleRuntime.d.ts +1 -1
- package/bin/plugin/core/ActionScheduleRuntime.d.ts.map +1 -1
- package/bin/plugin/core/BasePlugin.d.ts +4 -3
- package/bin/plugin/core/BasePlugin.d.ts.map +1 -1
- package/bin/plugin/core/BasePlugin.js.map +1 -1
- package/bin/plugin/core/HookRegistry.d.ts +5 -8
- package/bin/plugin/core/HookRegistry.d.ts.map +1 -1
- package/bin/plugin/core/HookRegistry.js +12 -12
- package/bin/plugin/core/HookRegistry.js.map +1 -1
- package/bin/plugin/core/PluginActionFactory.d.ts +6 -3
- package/bin/plugin/core/PluginActionFactory.d.ts.map +1 -1
- package/bin/plugin/core/PluginActionFactory.js.map +1 -1
- package/bin/plugin/core/PluginActionRunner.d.ts +1 -1
- package/bin/plugin/core/PluginActionRunner.d.ts.map +1 -1
- package/bin/plugin/core/PluginCatalog.d.ts +1 -1
- package/bin/plugin/core/PluginCatalog.d.ts.map +1 -1
- package/bin/plugin/core/PluginHttpRoutes.d.ts +1 -1
- package/bin/plugin/core/PluginHttpRoutes.d.ts.map +1 -1
- package/bin/plugin/core/PluginLocalExecution.d.ts +4 -5
- package/bin/plugin/core/PluginLocalExecution.d.ts.map +1 -1
- package/bin/plugin/core/PluginLocalExecution.js +4 -12
- package/bin/plugin/core/PluginLocalExecution.js.map +1 -1
- package/bin/plugin/core/PluginRegistry.d.ts +16 -12
- package/bin/plugin/core/PluginRegistry.d.ts.map +1 -1
- package/bin/plugin/core/PluginRegistry.js +43 -22
- package/bin/plugin/core/PluginRegistry.js.map +1 -1
- package/bin/plugin/core/PluginStateController.d.ts +1 -1
- package/bin/plugin/core/PluginStateController.d.ts.map +1 -1
- package/bin/{agent/remote → remote}/RemoteAgent.d.ts +4 -4
- package/bin/remote/RemoteAgent.d.ts.map +1 -0
- package/bin/{agent/remote → remote}/RemoteAgent.js +3 -3
- package/bin/remote/RemoteAgent.js.map +1 -0
- package/bin/{agent/remote → remote}/RemoteSession.d.ts +9 -11
- package/bin/remote/RemoteSession.d.ts.map +1 -0
- package/bin/{agent/remote → remote}/RemoteSession.js +3 -33
- package/bin/remote/RemoteSession.js.map +1 -0
- package/bin/{agent/remote → remote}/RemoteTransport.d.ts +7 -9
- package/bin/remote/RemoteTransport.d.ts.map +1 -0
- package/bin/remote/RemoteTransport.js.map +1 -0
- package/bin/{agent/remote → remote}/TransportFactory.d.ts +1 -1
- package/bin/remote/TransportFactory.d.ts.map +1 -0
- package/bin/{agent/remote → remote}/TransportFactory.js +2 -2
- package/bin/remote/TransportFactory.js.map +1 -0
- package/bin/{agent/remote → remote}/transports/HttpRemoteAgentTransport.d.ts +8 -9
- package/bin/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -0
- package/bin/{agent/remote → remote}/transports/HttpRemoteAgentTransport.js +0 -13
- package/bin/remote/transports/HttpRemoteAgentTransport.js.map +1 -0
- package/bin/{rpc/Client.d.ts → remote/transports/RpcClient.d.ts} +15 -22
- package/bin/remote/transports/RpcClient.d.ts.map +1 -0
- package/bin/{rpc/Client.js → remote/transports/RpcClient.js} +2 -13
- package/bin/remote/transports/RpcClient.js.map +1 -0
- package/bin/{agent/remote → remote}/transports/RpcRemoteAgentTransport.d.ts +8 -9
- package/bin/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -0
- package/bin/{agent/remote → remote}/transports/RpcRemoteAgentTransport.js +1 -4
- package/bin/remote/transports/RpcRemoteAgentTransport.js.map +1 -0
- package/bin/session/DefaultSessionComposer.d.ts +18 -0
- package/bin/session/DefaultSessionComposer.d.ts.map +1 -0
- package/bin/session/DefaultSessionComposer.js +62 -0
- package/bin/session/DefaultSessionComposer.js.map +1 -0
- package/bin/session/Session.d.ts +44 -33
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +440 -274
- package/bin/session/Session.js.map +1 -1
- package/bin/session/SessionMessages.d.ts +117 -0
- package/bin/session/SessionMessages.d.ts.map +1 -0
- package/bin/session/{recorder/SessionRecorder.js → SessionMessages.js} +194 -284
- package/bin/session/SessionMessages.js.map +1 -0
- package/bin/session/SessionQueue.d.ts +34 -0
- package/bin/session/SessionQueue.d.ts.map +1 -0
- package/bin/session/SessionQueue.js +60 -0
- package/bin/session/SessionQueue.js.map +1 -0
- package/bin/session/SessionState.d.ts +70 -0
- package/bin/session/SessionState.d.ts.map +1 -0
- package/bin/session/SessionState.js +267 -0
- package/bin/session/SessionState.js.map +1 -0
- package/bin/session/SessionSystem.d.ts +15 -0
- package/bin/session/SessionSystem.d.ts.map +1 -0
- package/bin/session/SessionSystem.js +95 -0
- package/bin/session/SessionSystem.js.map +1 -0
- package/bin/session/SessionTurn.d.ts +84 -0
- package/bin/session/SessionTurn.d.ts.map +1 -0
- package/bin/session/SessionTurn.js +588 -0
- package/bin/session/SessionTurn.js.map +1 -0
- package/bin/session/approval/SessionApprovalBroker.d.ts +48 -0
- package/bin/session/approval/SessionApprovalBroker.d.ts.map +1 -0
- package/bin/session/approval/SessionApprovalBroker.js +126 -0
- package/bin/session/approval/SessionApprovalBroker.js.map +1 -0
- package/bin/session/browse/Browse.d.ts.map +1 -1
- package/bin/session/browse/Browse.js +1 -4
- package/bin/session/browse/Browse.js.map +1 -1
- package/bin/session/{recorder → messages}/JsonlSessionMessageStore.d.ts.map +1 -1
- package/bin/session/{recorder → messages}/JsonlSessionMessageStore.js.map +1 -1
- package/bin/session/messages/SessionAssistantMessageWriter.d.ts +62 -0
- package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +1 -0
- package/bin/session/messages/SessionAssistantMessageWriter.js +287 -0
- package/bin/session/messages/SessionAssistantMessageWriter.js.map +1 -0
- package/bin/session/messages/SessionJsonValue.d.ts +10 -0
- package/bin/session/messages/SessionJsonValue.d.ts.map +1 -0
- package/bin/session/messages/SessionJsonValue.js +23 -0
- package/bin/session/messages/SessionJsonValue.js.map +1 -0
- package/bin/session/{recorder → messages}/SessionMessageCodec.d.ts +4 -1
- package/bin/session/messages/SessionMessageCodec.d.ts.map +1 -0
- package/bin/session/{recorder → messages}/SessionMessageCodec.js +33 -19
- package/bin/session/messages/SessionMessageCodec.js.map +1 -0
- package/bin/session/messages/SessionMessageCompaction.d.ts +22 -0
- package/bin/session/messages/SessionMessageCompaction.d.ts.map +1 -0
- package/bin/session/{recorder/SessionRecorderCompaction.js → messages/SessionMessageCompaction.js} +19 -51
- package/bin/session/messages/SessionMessageCompaction.js.map +1 -0
- package/bin/session/runtime/SessionEventHub.d.ts +1 -8
- package/bin/session/runtime/SessionEventHub.d.ts.map +1 -1
- package/bin/session/runtime/SessionEventHub.js +1 -6
- package/bin/session/runtime/SessionEventHub.js.map +1 -1
- package/bin/session/storage/Metadata.d.ts +23 -5
- package/bin/session/storage/Metadata.d.ts.map +1 -1
- package/bin/session/storage/Metadata.js +32 -29
- package/bin/session/storage/Metadata.js.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.d.ts +5 -10
- package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.js +2 -4
- package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
- package/bin/types/agent/AgentOptions.d.ts +6 -35
- package/bin/types/agent/AgentOptions.d.ts.map +1 -1
- package/bin/types/agent/AgentState.d.ts +28 -0
- package/bin/types/agent/AgentState.d.ts.map +1 -0
- package/bin/types/agent/AgentState.js +9 -0
- package/bin/types/agent/AgentState.js.map +1 -0
- package/bin/types/agent/SessionActor.d.ts +0 -2
- package/bin/types/agent/SessionActor.d.ts.map +1 -1
- package/bin/types/agent/SessionTypes.d.ts +5 -18
- package/bin/types/agent/SessionTypes.d.ts.map +1 -1
- package/bin/types/executor/SessionRunContext.d.ts +8 -2
- package/bin/types/executor/SessionRunContext.d.ts.map +1 -1
- package/bin/types/executor/SessionRunContext.js +1 -1
- package/bin/types/executor/SessionToolExecutionContext.d.ts +20 -0
- package/bin/types/executor/SessionToolExecutionContext.d.ts.map +1 -0
- package/bin/types/executor/SessionToolExecutionContext.js +10 -0
- package/bin/types/executor/SessionToolExecutionContext.js.map +1 -0
- package/bin/types/plugin/PluginAction.d.ts +10 -1
- package/bin/types/plugin/PluginAction.d.ts.map +1 -1
- package/bin/types/plugin/PluginCommand.d.ts +3 -11
- package/bin/types/plugin/PluginCommand.d.ts.map +1 -1
- package/bin/types/plugin/PluginConfig.d.ts +12 -0
- package/bin/types/plugin/PluginConfig.d.ts.map +1 -0
- package/bin/types/plugin/PluginConfig.js +5 -0
- package/bin/types/plugin/PluginConfig.js.map +1 -0
- package/bin/types/plugin/PluginDefinition.d.ts +10 -3
- package/bin/types/plugin/PluginDefinition.d.ts.map +1 -1
- package/bin/types/plugin/PluginHttp.d.ts +1 -1
- package/bin/types/plugin/PluginHttp.d.ts.map +1 -1
- package/bin/types/plugin/PluginRunContext.d.ts +26 -0
- package/bin/types/plugin/PluginRunContext.d.ts.map +1 -0
- package/bin/types/plugin/PluginRunContext.js +10 -0
- package/bin/types/plugin/PluginRunContext.js.map +1 -0
- package/bin/types/plugin/PluginRuntime.d.ts +9 -3
- package/bin/types/plugin/PluginRuntime.d.ts.map +1 -1
- package/bin/types/plugin/PluginToolRuntime.d.ts +11 -0
- package/bin/types/plugin/PluginToolRuntime.d.ts.map +1 -1
- package/bin/types/rpc/RpcProtocol.d.ts +1 -13
- package/bin/types/rpc/RpcProtocol.d.ts.map +1 -1
- package/bin/types/session/SessionApproval.d.ts +4 -38
- package/bin/types/session/SessionApproval.d.ts.map +1 -1
- package/bin/types/session/SessionApprovalBroker.d.ts +17 -0
- package/bin/types/session/SessionApprovalBroker.d.ts.map +1 -0
- package/bin/types/session/SessionApprovalBroker.js +7 -0
- package/bin/types/session/SessionApprovalBroker.js.map +1 -0
- package/bin/types/session/SessionComposer.d.ts +99 -0
- package/bin/types/session/SessionComposer.d.ts.map +1 -0
- package/bin/types/session/SessionComposer.js +8 -0
- package/bin/types/session/SessionComposer.js.map +1 -0
- package/bin/types/session/SessionLocalState.d.ts +6 -6
- package/bin/types/session/SessionLocalState.d.ts.map +1 -1
- package/bin/types/session/SessionLocalState.js +1 -1
- package/bin/types/session/SessionMessage.d.ts +3 -2
- package/bin/types/session/SessionMessage.d.ts.map +1 -1
- package/bin/types/session/SessionMessages.d.ts +115 -0
- package/bin/types/session/SessionMessages.d.ts.map +1 -0
- package/bin/types/session/SessionMessages.js +7 -0
- package/bin/types/session/SessionMessages.js.map +1 -0
- package/bin/types/session/SessionMutation.d.ts +1 -10
- package/bin/types/session/SessionMutation.d.ts.map +1 -1
- package/bin/types/session/SessionMutation.js.map +1 -1
- package/bin/types/session/SessionOptions.d.ts +8 -23
- package/bin/types/session/SessionOptions.d.ts.map +1 -1
- package/bin/types/session/SessionPort.d.ts +72 -0
- package/bin/types/session/SessionPort.d.ts.map +1 -0
- package/bin/types/session/SessionPort.js +9 -0
- package/bin/types/session/SessionPort.js.map +1 -0
- package/bin/types/session/SessionQueue.d.ts +104 -0
- package/bin/types/session/SessionQueue.d.ts.map +1 -0
- package/bin/types/session/SessionQueue.js +7 -0
- package/bin/types/session/SessionQueue.js.map +1 -0
- package/bin/types/session/SessionState.d.ts +43 -0
- package/bin/types/session/SessionState.d.ts.map +1 -0
- package/bin/types/session/SessionState.js +7 -0
- package/bin/types/session/SessionState.js.map +1 -0
- package/bin/types/session/SessionSystem.d.ts +26 -0
- package/bin/types/session/SessionSystem.d.ts.map +1 -0
- package/bin/types/session/SessionSystem.js +7 -0
- package/bin/types/session/SessionSystem.js.map +1 -0
- package/bin/types/session/SessionTool.d.ts +23 -0
- package/bin/types/session/SessionTool.d.ts.map +1 -0
- package/bin/types/session/SessionTool.js +7 -0
- package/bin/types/session/SessionTool.js.map +1 -0
- package/bin/types/session/SessionTurn.d.ts +52 -0
- package/bin/types/session/SessionTurn.d.ts.map +1 -0
- package/bin/types/session/SessionTurn.js +7 -0
- package/bin/types/session/SessionTurn.js.map +1 -0
- package/package.json +3 -3
- package/scripts/agent-env.test.mjs +4 -18
- package/scripts/agent-ready.test.mjs +33 -2
- package/scripts/agent-session-maintenance.test.mjs +52 -0
- package/scripts/city-model-tool-loop.test.mjs +3 -4
- package/scripts/core-engine-context-compaction.test.mjs +5 -22
- package/scripts/image-plugin-job.test.mjs +4 -6
- package/scripts/plugin-tool-bridge.test.mjs +44 -36
- package/scripts/read-image-tool-bridge.test.mjs +71 -0
- package/scripts/remote-session-reconnect.test.mjs +1 -34
- package/scripts/session-compaction-prompts.test.mjs +1 -49
- package/scripts/session-composer.test.mjs +163 -0
- package/scripts/session-config-turn-boundary.test.mjs +2 -5
- package/scripts/session-list-title.test.mjs +3 -2
- package/scripts/session-messages-error.test.mjs +57 -0
- package/scripts/{session-recorder.test.mjs → session-messages.test.mjs} +131 -90
- package/scripts/session-queue.test.mjs +64 -0
- package/scripts/session-shell-approval.test.mjs +171 -0
- package/scripts/session-system-blocks.test.mjs +10 -10
- package/scripts/session-title-event.test.mjs +1 -0
- package/src/agent/Agent.ts +241 -0
- package/src/agent/AgentContext.ts +92 -0
- package/src/agent/{local/AgentInstructions.ts → AgentInstructions.ts} +0 -11
- package/src/{model/CityModelAdapter.ts → agent/AgentModel.ts} +10 -3
- package/src/agent/{local/services/AgentSessions.ts → AgentSessions.ts} +81 -110
- package/src/agent/AgentState.ts +151 -0
- package/src/config/Paths.ts +0 -91
- package/src/executor/Executor.ts +180 -386
- package/src/executor/README.md +29 -89
- package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +1 -1
- package/src/executor/composer/system/default/SystemDomain.ts +4 -2
- package/src/executor/composer/system/default/assets/core.prompt.ts +1 -1
- package/src/executor/composer/system/default/assets/core.prompt.ts.txt +15 -2
- package/src/executor/core-engine/CoreEngineRunner.ts +95 -54
- package/src/executor/services/ExecutorRecoveryPolicy.ts +24 -19
- package/src/executor/tools/file/ReadImageToolBridge.ts +79 -0
- package/src/executor/tools/plugin/PluginToolBridge.ts +6 -8
- package/src/executor/tools/plugin/PluginToolDefinition.ts +23 -3
- package/src/executor/types/SessionHistoryMeta.ts +0 -2
- package/src/index.ts +34 -53
- package/src/plugin/core/ActionScheduleExecutor.ts +1 -1
- package/src/plugin/core/ActionScheduleRuntime.ts +1 -1
- package/src/plugin/core/BasePlugin.ts +7 -3
- package/src/plugin/core/HookRegistry.ts +15 -18
- package/src/plugin/core/PluginActionFactory.ts +9 -3
- package/src/plugin/core/PluginActionRunner.ts +1 -1
- package/src/plugin/core/PluginCatalog.ts +1 -1
- package/src/plugin/core/PluginHttpRoutes.ts +1 -1
- package/src/plugin/core/PluginLocalExecution.ts +11 -24
- package/src/plugin/core/PluginRegistry.ts +55 -32
- package/src/plugin/core/PluginStateController.ts +1 -1
- package/src/{agent/remote → remote}/RemoteAgent.ts +4 -4
- package/src/{agent/remote → remote}/RemoteSession.ts +2 -35
- package/src/{agent/remote → remote}/RemoteTransport.ts +0 -3
- package/src/{agent/remote → remote}/TransportFactory.ts +3 -3
- package/src/{agent/remote → remote}/transports/HttpRemoteAgentTransport.ts +1 -23
- package/src/{rpc/Client.ts → remote/transports/RpcClient.ts} +1 -19
- package/src/{agent/remote → remote}/transports/RpcRemoteAgentTransport.ts +2 -10
- package/src/session/DefaultSessionComposer.ts +79 -0
- package/src/session/Session.ts +496 -332
- package/src/session/{recorder/SessionRecorder.ts → SessionMessages.ts} +254 -428
- package/src/session/SessionQueue.ts +86 -0
- package/src/session/SessionState.ts +322 -0
- package/src/session/SessionSystem.ts +117 -0
- package/src/session/SessionTurn.ts +684 -0
- package/src/session/approval/SessionApprovalBroker.ts +164 -0
- package/src/session/browse/Browse.ts +1 -4
- package/src/session/messages/SessionAssistantMessageWriter.ts +345 -0
- package/src/session/messages/SessionJsonValue.ts +25 -0
- package/src/session/{recorder → messages}/SessionMessageCodec.ts +38 -20
- package/src/session/{recorder/SessionRecorderCompaction.ts → messages/SessionMessageCompaction.ts} +30 -69
- package/src/session/runtime/SessionEventHub.ts +1 -14
- package/src/session/storage/Metadata.ts +60 -34
- package/src/session/storage/RuntimeSessionPort.ts +7 -14
- package/src/types/agent/AgentOptions.ts +6 -38
- package/src/types/agent/AgentState.ts +33 -0
- package/src/types/agent/SessionActor.ts +0 -3
- package/src/types/agent/SessionTypes.ts +5 -18
- package/src/types/executor/SessionRunContext.ts +10 -2
- package/src/types/executor/SessionToolExecutionContext.ts +21 -0
- package/src/types/plugin/PluginAction.ts +10 -1
- package/src/types/plugin/PluginCommand.ts +3 -14
- package/src/types/plugin/PluginConfig.ts +13 -0
- package/src/types/plugin/PluginDefinition.ts +13 -6
- package/src/types/plugin/PluginHttp.ts +1 -1
- package/src/types/plugin/PluginRunContext.ts +31 -0
- package/src/types/plugin/PluginRuntime.ts +13 -6
- package/src/types/plugin/PluginToolRuntime.ts +13 -1
- package/src/types/rpc/RpcProtocol.ts +0 -14
- package/src/types/session/SessionApproval.ts +4 -43
- package/src/types/session/SessionApprovalBroker.ts +18 -0
- package/src/types/session/SessionComposer.ts +114 -0
- package/src/types/session/SessionLocalState.ts +6 -6
- package/src/types/session/SessionMessage.ts +3 -2
- package/src/types/session/SessionMessages.ts +127 -0
- package/src/types/session/SessionMutation.ts +0 -11
- package/src/types/session/SessionOptions.ts +8 -40
- package/src/types/session/SessionPort.ts +97 -0
- package/src/types/session/SessionQueue.ts +122 -0
- package/src/types/session/SessionState.ts +47 -0
- package/src/types/session/SessionSystem.ts +27 -0
- package/src/types/session/SessionTool.ts +25 -0
- package/src/types/session/SessionTurn.ts +56 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/bin/agent/local/Agent.d.ts.map +0 -1
- package/bin/agent/local/Agent.js +0 -216
- package/bin/agent/local/Agent.js.map +0 -1
- package/bin/agent/local/AgentInstructions.d.ts.map +0 -1
- package/bin/agent/local/AgentInstructions.js.map +0 -1
- package/bin/agent/local/AgentPluginFactory.d.ts +0 -26
- package/bin/agent/local/AgentPluginFactory.d.ts.map +0 -1
- package/bin/agent/local/AgentPluginFactory.js +0 -33
- package/bin/agent/local/AgentPluginFactory.js.map +0 -1
- package/bin/agent/local/AgentRuntimeAssembly.d.ts +0 -10
- package/bin/agent/local/AgentRuntimeAssembly.d.ts.map +0 -1
- package/bin/agent/local/AgentRuntimeAssembly.js +0 -43
- package/bin/agent/local/AgentRuntimeAssembly.js.map +0 -1
- package/bin/agent/local/ProjectSetup.d.ts.map +0 -1
- package/bin/agent/local/ProjectSetup.js.map +0 -1
- package/bin/agent/local/services/AgentAssemblyService.d.ts +0 -105
- package/bin/agent/local/services/AgentAssemblyService.d.ts.map +0 -1
- package/bin/agent/local/services/AgentAssemblyService.js +0 -184
- package/bin/agent/local/services/AgentAssemblyService.js.map +0 -1
- package/bin/agent/local/services/AgentBackgroundService.d.ts +0 -55
- package/bin/agent/local/services/AgentBackgroundService.d.ts.map +0 -1
- package/bin/agent/local/services/AgentBackgroundService.js +0 -85
- package/bin/agent/local/services/AgentBackgroundService.js.map +0 -1
- package/bin/agent/local/services/AgentSessions.d.ts.map +0 -1
- package/bin/agent/local/services/AgentSessions.js.map +0 -1
- package/bin/agent/remote/RemoteAgent.d.ts.map +0 -1
- package/bin/agent/remote/RemoteAgent.js.map +0 -1
- package/bin/agent/remote/RemoteSession.d.ts.map +0 -1
- package/bin/agent/remote/RemoteSession.js.map +0 -1
- package/bin/agent/remote/RemoteTransport.d.ts.map +0 -1
- package/bin/agent/remote/RemoteTransport.js.map +0 -1
- package/bin/agent/remote/TransportFactory.d.ts.map +0 -1
- package/bin/agent/remote/TransportFactory.js.map +0 -1
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts.map +0 -1
- package/bin/agent/remote/transports/HttpRemoteAgentTransport.js.map +0 -1
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts.map +0 -1
- package/bin/agent/remote/transports/RpcRemoteAgentTransport.js.map +0 -1
- package/bin/executor/SessionRunScope.d.ts +0 -68
- package/bin/executor/SessionRunScope.d.ts.map +0 -1
- package/bin/executor/SessionRunScope.js +0 -96
- package/bin/executor/SessionRunScope.js.map +0 -1
- package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts +0 -74
- package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts.map +0 -1
- package/bin/executor/composer/compaction/SessionCompactionComposer.js +0 -9
- package/bin/executor/composer/compaction/SessionCompactionComposer.js.map +0 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts +0 -27
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts.map +0 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js +0 -39
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js.map +0 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts +0 -44
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts.map +0 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js +0 -218
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js.map +0 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.d.ts +0 -27
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.d.ts.map +0 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.js +0 -181
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.js.map +0 -1
- package/bin/executor/composer/context/LocalSessionContextComposer.d.ts +0 -50
- package/bin/executor/composer/context/LocalSessionContextComposer.d.ts.map +0 -1
- package/bin/executor/composer/context/LocalSessionContextComposer.js +0 -108
- package/bin/executor/composer/context/LocalSessionContextComposer.js.map +0 -1
- package/bin/executor/composer/context/SessionContextComposer.d.ts +0 -67
- package/bin/executor/composer/context/SessionContextComposer.d.ts.map +0 -1
- package/bin/executor/composer/context/SessionContextComposer.js +0 -9
- package/bin/executor/composer/context/SessionContextComposer.js.map +0 -1
- package/bin/executor/composer/history/SessionHistoryComposer.d.ts +0 -54
- package/bin/executor/composer/history/SessionHistoryComposer.d.ts.map +0 -1
- package/bin/executor/composer/history/SessionHistoryComposer.js +0 -10
- package/bin/executor/composer/history/SessionHistoryComposer.js.map +0 -1
- package/bin/executor/composer/history/SessionHistoryWriter.d.ts +0 -46
- package/bin/executor/composer/history/SessionHistoryWriter.d.ts.map +0 -1
- package/bin/executor/composer/history/SessionHistoryWriter.js +0 -65
- package/bin/executor/composer/history/SessionHistoryWriter.js.map +0 -1
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.d.ts +0 -35
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.d.ts.map +0 -1
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.js +0 -105
- package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.js.map +0 -1
- package/bin/executor/messages/AssistantResultPersistence.d.ts +0 -66
- package/bin/executor/messages/AssistantResultPersistence.d.ts.map +0 -1
- package/bin/executor/messages/AssistantResultPersistence.js +0 -44
- package/bin/executor/messages/AssistantResultPersistence.js.map +0 -1
- package/bin/executor/services/ExecutorInflightService.d.ts +0 -34
- package/bin/executor/services/ExecutorInflightService.d.ts.map +0 -1
- package/bin/executor/services/ExecutorInflightService.js +0 -73
- package/bin/executor/services/ExecutorInflightService.js.map +0 -1
- package/bin/executor/store/history/SessionHistoryStore.d.ts +0 -140
- package/bin/executor/store/history/SessionHistoryStore.d.ts.map +0 -1
- package/bin/executor/store/history/SessionHistoryStore.js +0 -10
- package/bin/executor/store/history/SessionHistoryStore.js.map +0 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +0 -116
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +0 -1
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +0 -709
- package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +0 -1
- package/bin/executor/types/SessionHistoryPaths.d.ts +0 -34
- package/bin/executor/types/SessionHistoryPaths.d.ts.map +0 -1
- package/bin/executor/types/SessionHistoryPaths.js +0 -2
- package/bin/executor/types/SessionHistoryPaths.js.map +0 -1
- package/bin/model/CityModelAdapter.d.ts.map +0 -1
- package/bin/model/CityModelAdapter.js.map +0 -1
- package/bin/rpc/Client.d.ts.map +0 -1
- package/bin/rpc/Client.js.map +0 -1
- package/bin/session/SessionSystemBuilder.d.ts +0 -107
- package/bin/session/SessionSystemBuilder.d.ts.map +0 -1
- package/bin/session/SessionSystemBuilder.js +0 -148
- package/bin/session/SessionSystemBuilder.js.map +0 -1
- package/bin/session/recorder/SessionMessageCodec.d.ts.map +0 -1
- package/bin/session/recorder/SessionMessageCodec.js.map +0 -1
- package/bin/session/recorder/SessionRecorder.d.ts +0 -217
- package/bin/session/recorder/SessionRecorder.d.ts.map +0 -1
- package/bin/session/recorder/SessionRecorder.js.map +0 -1
- package/bin/session/recorder/SessionRecorderCompaction.d.ts +0 -18
- package/bin/session/recorder/SessionRecorderCompaction.d.ts.map +0 -1
- package/bin/session/recorder/SessionRecorderCompaction.js.map +0 -1
- package/bin/session/recorder/SessionRecorderHistoryStore.d.ts +0 -66
- package/bin/session/recorder/SessionRecorderHistoryStore.d.ts.map +0 -1
- package/bin/session/recorder/SessionRecorderHistoryStore.js +0 -190
- package/bin/session/recorder/SessionRecorderHistoryStore.js.map +0 -1
- package/bin/session/runtime/SessionPromptRuntime.d.ts +0 -112
- package/bin/session/runtime/SessionPromptRuntime.d.ts.map +0 -1
- package/bin/session/runtime/SessionPromptRuntime.js +0 -357
- package/bin/session/runtime/SessionPromptRuntime.js.map +0 -1
- package/bin/session/services/SessionStateService.d.ts +0 -187
- package/bin/session/services/SessionStateService.d.ts.map +0 -1
- package/bin/session/services/SessionStateService.js +0 -467
- package/bin/session/services/SessionStateService.js.map +0 -1
- package/bin/session/services/SessionTurnService.d.ts +0 -90
- package/bin/session/services/SessionTurnService.d.ts.map +0 -1
- package/bin/session/services/SessionTurnService.js +0 -293
- package/bin/session/services/SessionTurnService.js.map +0 -1
- package/bin/session/services/SessionViewService.d.ts +0 -114
- package/bin/session/services/SessionViewService.d.ts.map +0 -1
- package/bin/session/services/SessionViewService.js +0 -204
- package/bin/session/services/SessionViewService.js.map +0 -1
- package/bin/session/storage/Persistence.d.ts +0 -73
- package/bin/session/storage/Persistence.d.ts.map +0 -1
- package/bin/session/storage/Persistence.js +0 -63
- package/bin/session/storage/Persistence.js.map +0 -1
- package/bin/types/agent/AgentRuntimeAssembly.d.ts +0 -72
- package/bin/types/agent/AgentRuntimeAssembly.d.ts.map +0 -1
- package/bin/types/agent/AgentRuntimeAssembly.js +0 -10
- package/bin/types/agent/AgentRuntimeAssembly.js.map +0 -1
- package/bin/types/runtime/agent/AgentContext.d.ts +0 -306
- package/bin/types/runtime/agent/AgentContext.d.ts.map +0 -1
- package/bin/types/runtime/agent/AgentContext.js +0 -128
- package/bin/types/runtime/agent/AgentContext.js.map +0 -1
- package/bin/types/session/SessionComposerOptions.d.ts +0 -90
- package/bin/types/session/SessionComposerOptions.d.ts.map +0 -1
- package/bin/types/session/SessionComposerOptions.js +0 -10
- package/bin/types/session/SessionComposerOptions.js.map +0 -1
- package/bin/types/session/SessionQueueCommand.d.ts +0 -68
- package/bin/types/session/SessionQueueCommand.d.ts.map +0 -1
- package/bin/types/session/SessionQueueCommand.js +0 -10
- package/bin/types/session/SessionQueueCommand.js.map +0 -1
- package/scripts/session-action-message.test.mjs +0 -410
- package/scripts/session-compaction-context-window.test.mjs +0 -96
- package/scripts/session-history-inflight.test.mjs +0 -146
- package/scripts/session-history-writer-error.test.mjs +0 -57
- package/scripts/session-prompt-runtime.test.mjs +0 -390
- package/src/agent/local/Agent.ts +0 -250
- package/src/agent/local/AgentPluginFactory.ts +0 -51
- package/src/agent/local/AgentRuntimeAssembly.ts +0 -65
- package/src/agent/local/services/AgentAssemblyService.ts +0 -307
- package/src/agent/local/services/AgentBackgroundService.ts +0 -115
- package/src/executor/SessionRunScope.ts +0 -122
- package/src/executor/composer/compaction/SessionCompactionComposer.ts +0 -84
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.ts +0 -51
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.ts +0 -294
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.ts +0 -197
- package/src/executor/composer/context/LocalSessionContextComposer.ts +0 -175
- package/src/executor/composer/context/SessionContextComposer.ts +0 -83
- package/src/executor/composer/history/SessionHistoryComposer.ts +0 -62
- package/src/executor/composer/history/SessionHistoryWriter.ts +0 -100
- package/src/executor/composer/history/jsonl/JsonlSessionHistoryComposer.ts +0 -133
- package/src/executor/messages/AssistantResultPersistence.ts +0 -106
- package/src/executor/services/ExecutorInflightService.ts +0 -95
- package/src/executor/store/history/SessionHistoryStore.ts +0 -172
- package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +0 -879
- package/src/executor/types/SessionHistoryPaths.ts +0 -38
- package/src/session/SessionSystemBuilder.ts +0 -262
- package/src/session/recorder/SessionRecorderHistoryStore.ts +0 -256
- package/src/session/runtime/SessionPromptRuntime.ts +0 -518
- package/src/session/services/SessionStateService.ts +0 -628
- package/src/session/services/SessionTurnService.ts +0 -368
- package/src/session/services/SessionViewService.ts +0 -335
- package/src/session/storage/Persistence.ts +0 -137
- package/src/types/agent/AgentRuntimeAssembly.ts +0 -74
- package/src/types/runtime/agent/AgentContext.ts +0 -387
- package/src/types/session/SessionComposerOptions.ts +0 -107
- package/src/types/session/SessionQueueCommand.ts +0 -78
- /package/bin/{agent/local → config}/ProjectSetup.d.ts +0 -0
- /package/bin/{agent/remote → remote}/RemoteTransport.js +0 -0
- /package/bin/session/{recorder → messages}/JsonlSessionMessageStore.d.ts +0 -0
- /package/bin/session/{recorder → messages}/JsonlSessionMessageStore.js +0 -0
- /package/src/{agent/local → config}/ProjectSetup.ts +0 -0
- /package/src/session/{recorder → messages}/JsonlSessionMessageStore.ts +0 -0
package/src/session/{recorder/SessionRecorderCompaction.ts → messages/SessionMessageCompaction.ts}
RENAMED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* SessionMessages Active/Segment 上下文压缩计划生成。
|
|
3
3
|
*
|
|
4
4
|
* Compact 把 Active 前缀写入不可变 Segment,并在 footer 保存累计 Summary。
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { generateText } from "ai";
|
|
7
|
+
import { generateText, type LanguageModel } from "ai";
|
|
8
8
|
import { generateId } from "@/utils/Id.js";
|
|
9
|
-
import type { SessionHistoryCompactInput } from "@/executor/store/history/SessionHistoryStore.js";
|
|
10
|
-
import type { SessionActionRecordV1 } from "@/executor/types/SessionRecords.js";
|
|
11
9
|
import {
|
|
12
10
|
build_initial_session_compaction_prompt,
|
|
13
11
|
build_update_session_compaction_prompt,
|
|
14
12
|
SESSION_COMPACTION_SYSTEM_PROMPT,
|
|
15
13
|
} from "@executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js";
|
|
16
14
|
import { fold_compacted_text } from "@executor/core-engine/CoreEngineContextCompaction.js";
|
|
17
|
-
import {
|
|
18
|
-
import { to_executor_ui_message } from "@/session/recorder/SessionMessageCodec.js";
|
|
15
|
+
import { to_executor_ui_message } from "@/session/messages/SessionMessageCodec.js";
|
|
19
16
|
import type { SessionMessage } from "@/types/session/SessionMessage.js";
|
|
17
|
+
import type {
|
|
18
|
+
SessionCompactionPlan,
|
|
19
|
+
} from "@/types/session/SessionComposer.js";
|
|
20
|
+
import type { SessionContextSnapshot } from "@/types/session/SessionSegment.js";
|
|
20
21
|
|
|
21
22
|
/** 单次摘要请求中 conversation 文本的最大字符数。 */
|
|
22
23
|
const SUMMARY_CHUNK_MAX_CHARS = 20_000;
|
|
@@ -30,36 +31,30 @@ const PREVIOUS_SUMMARY_MAX_CHARS = 12_000;
|
|
|
30
31
|
/** 摘要模型的最大输出 token,用于避免 Summary 自身无限增长。 */
|
|
31
32
|
const SUMMARY_MAX_OUTPUT_TOKENS = 4_000;
|
|
32
33
|
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
/**
|
|
35
|
+
* 根据只读 Message 快照生成持久化压缩计划。
|
|
36
|
+
*
|
|
37
|
+
* 该函数可以调用模型生成 Summary,但不会写文件、修改 Recorder 或发布事件。
|
|
38
|
+
*/
|
|
39
|
+
export async function compose_session_compaction(input: {
|
|
40
|
+
/** 当前 Session 标识。 */
|
|
41
|
+
session_id: string;
|
|
42
|
+
/** 当前累计 Summary 与 Active Message 快照。 */
|
|
43
|
+
snapshot: Readonly<SessionContextSnapshot>;
|
|
44
|
+
/** 生成累计 Summary 使用的模型。 */
|
|
45
|
+
model: LanguageModel;
|
|
46
|
+
}): Promise<SessionCompactionPlan | null> {
|
|
47
|
+
const context_messages = input.snapshot.messages.filter(
|
|
42
48
|
(message) => message.type === "user" || message.type === "assistant",
|
|
43
49
|
);
|
|
44
|
-
if (!input.compact_input.force) {
|
|
45
|
-
return { compacted: false, reason: "not_requested" };
|
|
46
|
-
}
|
|
47
50
|
const boundary = context_messages.at(-1);
|
|
48
|
-
if (!boundary) return
|
|
49
|
-
|
|
50
|
-
const action_id = `compacting:${input.recorder.session_id}:${generateId()}`;
|
|
51
|
-
await publish_action(input.compact_input.onAction, {
|
|
52
|
-
id: action_id,
|
|
53
|
-
session_id: input.recorder.session_id,
|
|
54
|
-
title: "Compacting session messages",
|
|
55
|
-
state: "running",
|
|
56
|
-
});
|
|
51
|
+
if (!boundary) return null;
|
|
57
52
|
|
|
58
53
|
const conversation_messages = context_messages
|
|
59
54
|
.map((message) => message_to_compaction_text(message))
|
|
60
55
|
.filter(Boolean);
|
|
61
56
|
const chunks = build_summary_chunks(conversation_messages);
|
|
62
|
-
let summary = String(snapshot.summary?.text || "").trim();
|
|
57
|
+
let summary = String(input.snapshot.summary?.text || "").trim();
|
|
63
58
|
let used_fallback = false;
|
|
64
59
|
for (const chunk of chunks) {
|
|
65
60
|
const prompt = summary
|
|
@@ -75,7 +70,7 @@ export async function compact_session_recorder_messages(input: {
|
|
|
75
70
|
});
|
|
76
71
|
try {
|
|
77
72
|
const result = await generateText({
|
|
78
|
-
model: input.
|
|
73
|
+
model: input.model,
|
|
79
74
|
system: [{ role: "system", content: SESSION_COMPACTION_SYSTEM_PROMPT }],
|
|
80
75
|
prompt,
|
|
81
76
|
maxOutputTokens: SUMMARY_MAX_OUTPUT_TOKENS,
|
|
@@ -93,27 +88,19 @@ export async function compact_session_recorder_messages(input: {
|
|
|
93
88
|
summary = build_deterministic_summary("", "(no textual context)");
|
|
94
89
|
}
|
|
95
90
|
|
|
96
|
-
|
|
91
|
+
return {
|
|
97
92
|
through_sequence: boundary.sequence,
|
|
93
|
+
boundary_message_id: boundary.message_id,
|
|
94
|
+
used_fallback,
|
|
98
95
|
summary: {
|
|
99
96
|
record_type: "summary",
|
|
100
|
-
session_id: input.
|
|
101
|
-
summary_id: `summary:${input.
|
|
97
|
+
session_id: input.session_id,
|
|
98
|
+
summary_id: `summary:${input.session_id}:${generateId()}`,
|
|
102
99
|
through_sequence: boundary.sequence,
|
|
103
100
|
text: summary,
|
|
104
101
|
created_at: Date.now(),
|
|
105
102
|
},
|
|
106
|
-
}
|
|
107
|
-
await publish_action(input.compact_input.onAction, {
|
|
108
|
-
id: action_id,
|
|
109
|
-
session_id: input.recorder.session_id,
|
|
110
|
-
title: "Session messages compacted",
|
|
111
|
-
description: used_fallback
|
|
112
|
-
? `Closed Active through Message ${boundary.message_id} with deterministic fallback Summary.`
|
|
113
|
-
: `Closed Active through Message ${boundary.message_id}.`,
|
|
114
|
-
state: "completed",
|
|
115
|
-
});
|
|
116
|
-
return { compacted: true };
|
|
103
|
+
};
|
|
117
104
|
}
|
|
118
105
|
|
|
119
106
|
function message_to_compaction_text(message: SessionMessage): string {
|
|
@@ -183,29 +170,3 @@ function safe_stringify(value: unknown): string {
|
|
|
183
170
|
return String(value || "");
|
|
184
171
|
}
|
|
185
172
|
}
|
|
186
|
-
|
|
187
|
-
async function publish_action(
|
|
188
|
-
callback: SessionHistoryCompactInput["onAction"],
|
|
189
|
-
input: {
|
|
190
|
-
id: string;
|
|
191
|
-
session_id: string;
|
|
192
|
-
title: string;
|
|
193
|
-
description?: string;
|
|
194
|
-
state: "running" | "completed" | "failed";
|
|
195
|
-
},
|
|
196
|
-
): Promise<void> {
|
|
197
|
-
if (!callback) return;
|
|
198
|
-
const action: SessionActionRecordV1 = {
|
|
199
|
-
type: "action",
|
|
200
|
-
id: input.id,
|
|
201
|
-
title: input.title,
|
|
202
|
-
...(input.description ? { description: input.description } : {}),
|
|
203
|
-
state: input.state,
|
|
204
|
-
metadata: {
|
|
205
|
-
v: 1,
|
|
206
|
-
ts: Date.now(),
|
|
207
|
-
sessionId: input.session_id,
|
|
208
|
-
},
|
|
209
|
-
};
|
|
210
|
-
await callback(action);
|
|
211
|
-
}
|
|
@@ -8,29 +8,17 @@
|
|
|
8
8
|
|
|
9
9
|
import type {
|
|
10
10
|
SessionMutation,
|
|
11
|
-
SessionMutationReply,
|
|
12
11
|
SessionMutationSubscriber,
|
|
13
12
|
SessionMutationUnsubscribe,
|
|
14
13
|
} from "@/types/session/SessionMutation.js";
|
|
15
14
|
|
|
16
|
-
/** SessionEventHub 构造参数。 */
|
|
17
|
-
export interface SessionEventHubOptions {
|
|
18
|
-
/** 为当前 Mutation 创建绑定 Session 和 Tool Part 的回复入口。 */
|
|
19
|
-
create_reply: (mutation: SessionMutation) => SessionMutationReply;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
15
|
/**
|
|
23
16
|
* SessionEventHub:最小事件总线实现。
|
|
24
17
|
*/
|
|
25
18
|
export class SessionEventHub {
|
|
26
19
|
private readonly subscribers = new Map<number, SessionMutationSubscriber>();
|
|
27
|
-
private readonly create_reply: SessionEventHubOptions["create_reply"];
|
|
28
20
|
private next_subscriber_id = 1;
|
|
29
21
|
|
|
30
|
-
constructor(options: SessionEventHubOptions) {
|
|
31
|
-
this.create_reply = options.create_reply;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
22
|
/**
|
|
35
23
|
* 注册一个新的 Session 事件订阅者。
|
|
36
24
|
*/
|
|
@@ -48,10 +36,9 @@ export class SessionEventHub {
|
|
|
48
36
|
* 广播一条 Session 事件。
|
|
49
37
|
*/
|
|
50
38
|
publish(mutation: SessionMutation): void {
|
|
51
|
-
const reply = this.create_reply(mutation);
|
|
52
39
|
for (const subscriber of this.subscribers.values()) {
|
|
53
40
|
try {
|
|
54
|
-
Promise.resolve(subscriber(mutation
|
|
41
|
+
Promise.resolve(subscriber(mutation)).catch(() => undefined);
|
|
55
42
|
} catch {
|
|
56
43
|
// ignore single subscriber failures
|
|
57
44
|
}
|
|
@@ -7,9 +7,31 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import fs from "fs-extra";
|
|
10
|
-
import
|
|
10
|
+
import {
|
|
11
|
+
inferAgentModelLabel,
|
|
12
|
+
type AgentModel,
|
|
13
|
+
} from "@/agent/AgentModel.js";
|
|
11
14
|
import type { SessionHistoryMetaV1 } from "@/executor/types/SessionHistoryMeta.js";
|
|
12
15
|
import { getSdkAgentSessionMetaPath } from "@/session/storage/Paths.js";
|
|
16
|
+
import type { AgentSessionConfigSnapshot } from "@/types/agent/SessionTypes.js";
|
|
17
|
+
|
|
18
|
+
/** 刷新 Session metadata 的参数。 */
|
|
19
|
+
export interface TouchSessionMetadataParams {
|
|
20
|
+
/** 当前项目根目录。 */
|
|
21
|
+
projectRoot: string;
|
|
22
|
+
/** 当前 Agent 稳定标识。 */
|
|
23
|
+
agentId: string;
|
|
24
|
+
/** 当前 Session 稳定标识。 */
|
|
25
|
+
sessionId: string;
|
|
26
|
+
/** 当前 Session configured state。 */
|
|
27
|
+
sessionConfig: AgentSessionConfigSnapshot;
|
|
28
|
+
/** 当前 canonical Message 总数。 */
|
|
29
|
+
message_count?: number;
|
|
30
|
+
/** 当前 Message 日志总字节数。 */
|
|
31
|
+
history_bytes?: number;
|
|
32
|
+
/** 最近一条用户可见 Message 的文本摘要。 */
|
|
33
|
+
preview_text?: string;
|
|
34
|
+
}
|
|
13
35
|
|
|
14
36
|
type ReadSessionMetadataInput = {
|
|
15
37
|
/**
|
|
@@ -33,11 +55,6 @@ function normalizeModelLabel(input: unknown): string | undefined {
|
|
|
33
55
|
return label || undefined;
|
|
34
56
|
}
|
|
35
57
|
|
|
36
|
-
function normalize_model_id(input: unknown): string | undefined {
|
|
37
|
-
const model_id = typeof input === "string" ? input.trim() : "";
|
|
38
|
-
return model_id || undefined;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
58
|
/**
|
|
42
59
|
* 归一化 session 标题。
|
|
43
60
|
*/
|
|
@@ -82,26 +99,9 @@ function normalize_history_bytes(input: unknown): number | undefined {
|
|
|
82
99
|
* 从模型实例推导轻量可读标签。
|
|
83
100
|
*/
|
|
84
101
|
export function inferModelLabel(
|
|
85
|
-
model:
|
|
102
|
+
model: AgentModel | undefined,
|
|
86
103
|
): string | undefined {
|
|
87
|
-
|
|
88
|
-
const record = model as Record<string, unknown>;
|
|
89
|
-
const candidates = [
|
|
90
|
-
record.modelId,
|
|
91
|
-
record.model,
|
|
92
|
-
record.id,
|
|
93
|
-
record.name,
|
|
94
|
-
record.label,
|
|
95
|
-
];
|
|
96
|
-
for (const candidate of candidates) {
|
|
97
|
-
const text = normalizeModelLabel(candidate);
|
|
98
|
-
if (text) return text;
|
|
99
|
-
}
|
|
100
|
-
const constructorName =
|
|
101
|
-
model.constructor && typeof model.constructor.name === "string"
|
|
102
|
-
? model.constructor.name.trim()
|
|
103
|
-
: "";
|
|
104
|
-
return constructorName || "configured-model";
|
|
104
|
+
return inferAgentModelLabel(model);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
/**
|
|
@@ -158,9 +158,6 @@ export async function readSessionMetadataFromPath(input: {
|
|
|
158
158
|
...(normalizeModelLabel(raw.modelLabel)
|
|
159
159
|
? { modelLabel: normalizeModelLabel(raw.modelLabel) }
|
|
160
160
|
: {}),
|
|
161
|
-
...(normalize_model_id(raw.modelId)
|
|
162
|
-
? { modelId: normalize_model_id(raw.modelId) }
|
|
163
|
-
: {}),
|
|
164
161
|
...(normalize_message_count(raw.messageCount) !== undefined
|
|
165
162
|
? { messageCount: normalize_message_count(raw.messageCount) }
|
|
166
163
|
: {}),
|
|
@@ -211,9 +208,7 @@ export async function patchSessionModelLabel(
|
|
|
211
208
|
/**
|
|
212
209
|
* 当前模型实例。
|
|
213
210
|
*/
|
|
214
|
-
model?:
|
|
215
|
-
/** 当前模型稳定 ID。 */
|
|
216
|
-
modelId?: string;
|
|
211
|
+
model?: AgentModel;
|
|
217
212
|
},
|
|
218
213
|
): Promise<SessionHistoryMetaV1> {
|
|
219
214
|
const current = await readSessionMetadata(input);
|
|
@@ -230,9 +225,6 @@ export async function patchSessionModelLabel(
|
|
|
230
225
|
modelLabel,
|
|
231
226
|
}
|
|
232
227
|
: {}),
|
|
233
|
-
...(normalize_model_id(input.modelId)
|
|
234
|
-
? { modelId: normalize_model_id(input.modelId) }
|
|
235
|
-
: {}),
|
|
236
228
|
};
|
|
237
229
|
await writeSessionMetadata({
|
|
238
230
|
...input,
|
|
@@ -240,3 +232,37 @@ export async function patchSessionModelLabel(
|
|
|
240
232
|
});
|
|
241
233
|
return next;
|
|
242
234
|
}
|
|
235
|
+
|
|
236
|
+
/** 根据 canonical Message 统计刷新当前 Session metadata。 */
|
|
237
|
+
export async function touchSessionMetadata(
|
|
238
|
+
params: TouchSessionMetadataParams,
|
|
239
|
+
): Promise<void> {
|
|
240
|
+
const current = await readSessionMetadata({
|
|
241
|
+
projectRoot: params.projectRoot,
|
|
242
|
+
agentId: params.agentId,
|
|
243
|
+
sessionId: params.sessionId,
|
|
244
|
+
});
|
|
245
|
+
const next: SessionHistoryMetaV1 = {
|
|
246
|
+
...current,
|
|
247
|
+
agentId: params.agentId,
|
|
248
|
+
createdAt:
|
|
249
|
+
typeof current.createdAt === "number" ? current.createdAt : Date.now(),
|
|
250
|
+
updatedAt: Date.now(),
|
|
251
|
+
...(params.sessionConfig.modelLabel
|
|
252
|
+
? { modelLabel: params.sessionConfig.modelLabel }
|
|
253
|
+
: {}),
|
|
254
|
+
...(typeof params.message_count === "number"
|
|
255
|
+
? { messageCount: params.message_count }
|
|
256
|
+
: {}),
|
|
257
|
+
...(typeof params.history_bytes === "number"
|
|
258
|
+
? { historyBytes: params.history_bytes }
|
|
259
|
+
: {}),
|
|
260
|
+
...(params.preview_text ? { previewText: params.preview_text } : {}),
|
|
261
|
+
};
|
|
262
|
+
await writeSessionMetadata({
|
|
263
|
+
projectRoot: params.projectRoot,
|
|
264
|
+
agentId: params.agentId,
|
|
265
|
+
sessionId: params.sessionId,
|
|
266
|
+
meta: next,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* - SDK 公开面只保留 `prompt()` / `subscribe()`;runtime/service 若要 one-shot 等待结果,也统一委托给 `prompt()`。
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import type { SessionPort } from "@/types/
|
|
10
|
-
import type { SessionHistoryStore } from "@/executor/store/history/SessionHistoryStore.js";
|
|
9
|
+
import type { SessionPort } from "@/types/session/SessionPort.js";
|
|
11
10
|
import type { AgentSessionPromptInput } from "@/types/sdk/AgentSessionPrompt.js";
|
|
12
11
|
import type { AgentSessionStopResult } from "@/types/sdk/AgentSessionStop.js";
|
|
13
12
|
import type {
|
|
@@ -24,6 +23,8 @@ export interface CreateRuntimeSessionPortParams {
|
|
|
24
23
|
* 当前 sessionId。
|
|
25
24
|
*/
|
|
26
25
|
sessionId: string;
|
|
26
|
+
/** 获取当前 Session 优先解析后的运行时模型实例。 */
|
|
27
|
+
getModel: SessionPort["getModel"];
|
|
27
28
|
/**
|
|
28
29
|
* 读取当前 session 底层执行端口。
|
|
29
30
|
*/
|
|
@@ -42,10 +43,6 @@ export interface CreateRuntimeSessionPortParams {
|
|
|
42
43
|
subscribe: (
|
|
43
44
|
subscriber: SessionMutationSubscriber,
|
|
44
45
|
) => SessionMutationUnsubscribe;
|
|
45
|
-
/**
|
|
46
|
-
* 发布一条 session runtime 事件。
|
|
47
|
-
*/
|
|
48
|
-
publishEvent: SessionPort["publishEvent"];
|
|
49
46
|
/**
|
|
50
47
|
* 追加 user 消息到底层历史。
|
|
51
48
|
*/
|
|
@@ -58,10 +55,8 @@ export interface CreateRuntimeSessionPortParams {
|
|
|
58
55
|
* 返回当前 session 是否正在执行。
|
|
59
56
|
*/
|
|
60
57
|
isExecuting: () => boolean;
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
*/
|
|
64
|
-
historyStore: SessionHistoryStore;
|
|
58
|
+
/** 读取当前 Session 的只读上下文快照。 */
|
|
59
|
+
context: SessionPort["context"];
|
|
65
60
|
/**
|
|
66
61
|
* 在执行前确保当前 session 已完成初始化与宿主级配置。
|
|
67
62
|
*/
|
|
@@ -76,8 +71,9 @@ export function createRuntimeSessionPort(
|
|
|
76
71
|
): SessionPort {
|
|
77
72
|
return {
|
|
78
73
|
sessionId: params.sessionId,
|
|
74
|
+
getModel: () => params.getModel(),
|
|
79
75
|
getExecutor: () => params.getExecutor(),
|
|
80
|
-
|
|
76
|
+
context: async () => await params.context(),
|
|
81
77
|
prompt: async (input) => {
|
|
82
78
|
await params.ensureReadyForExecution();
|
|
83
79
|
return await params.prompt(input);
|
|
@@ -89,9 +85,6 @@ export function createRuntimeSessionPort(
|
|
|
89
85
|
subscribe: (subscriber) => {
|
|
90
86
|
return params.subscribe(subscriber);
|
|
91
87
|
},
|
|
92
|
-
publishEvent: async (event) => {
|
|
93
|
-
await params.publishEvent(event);
|
|
94
|
-
},
|
|
95
88
|
append_user_message: async (messageParams) => {
|
|
96
89
|
await params.append_user_message(messageParams);
|
|
97
90
|
},
|
|
@@ -8,10 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
import type { Tool } from "ai";
|
|
10
10
|
import type { Shell } from "@downcity/shell";
|
|
11
|
+
import type { AgentModel } from "@/agent/AgentModel.js";
|
|
11
12
|
import type { Plugin } from "@/types/plugin/PluginDefinition.js";
|
|
12
|
-
import type { AgentModel } from "@/model/CityModelAdapter.js";
|
|
13
|
-
import type { DowncityConfig } from "@/types/config/DowncityConfig.js";
|
|
14
|
-
import type { AgentPluginConfigRuntime } from "@/types/agent/AgentRuntimeAssembly.js";
|
|
15
13
|
import type {
|
|
16
14
|
AgentManagedSession,
|
|
17
15
|
SessionOptions,
|
|
@@ -73,27 +71,14 @@ export interface AgentOptions {
|
|
|
73
71
|
instruction?: string | string[];
|
|
74
72
|
|
|
75
73
|
/**
|
|
76
|
-
* 当前
|
|
74
|
+
* 当前 Agent 持有的运行时模型实例。
|
|
77
75
|
*
|
|
78
76
|
* 关键点(中文)
|
|
79
|
-
* -
|
|
80
|
-
* -
|
|
81
|
-
* - 该模型会作为 session 首次执行前的默认注入值。
|
|
77
|
+
* - Agent 不选择或恢复模型,只持有宿主传入的实例。
|
|
78
|
+
* - Session 未显式设置模型时,执行自动回退到该实例。
|
|
82
79
|
*/
|
|
83
80
|
model?: AgentModel;
|
|
84
81
|
|
|
85
|
-
/** 当前 Agent 默认模型对应的稳定 ID。 */
|
|
86
|
-
model_id?: string;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* 按稳定 ID 解析 Session 运行时模型。
|
|
90
|
-
*
|
|
91
|
-
* 关键点(中文)
|
|
92
|
-
* - Session 热切换与进程重启后的恢复统一使用该 resolver。
|
|
93
|
-
* - SDK 不维护模型目录,具体目录与鉴权由宿主负责。
|
|
94
|
-
*/
|
|
95
|
-
resolve_model?: (model_id: string) => Promise<AgentModel>;
|
|
96
|
-
|
|
97
82
|
/**
|
|
98
83
|
* 当前 agent 显式持有的插件实例集合。
|
|
99
84
|
*
|
|
@@ -110,7 +95,7 @@ export interface AgentOptions {
|
|
|
110
95
|
*
|
|
111
96
|
* 关键点(中文)
|
|
112
97
|
* - Agent 只负责用这个类创建/恢复 session,不感知具体 Composer 策略。
|
|
113
|
-
* - 如果需要自定义 Composer,请在自定义 Session 类内部传给 `super({
|
|
98
|
+
* - 如果需要自定义 Composer,请在自定义 Session 类内部传给 `super({ composer })`。
|
|
114
99
|
* - 该能力仅适用于本地 `Agent`。
|
|
115
100
|
*/
|
|
116
101
|
Session?: AgentSessionConstructor;
|
|
@@ -121,25 +106,8 @@ export interface AgentOptions {
|
|
|
121
106
|
* 关键点(中文)
|
|
122
107
|
* - 这里表示宿主显式注入给 agent 的基础 env。
|
|
123
108
|
* - `Agent` 会在这份基础 env 之上继续叠加项目 `.env`。
|
|
124
|
-
* -
|
|
109
|
+
* - 覆盖后的最终值会成为 Agent 运行时 env,但不会回写到宿主环境。
|
|
125
110
|
*/
|
|
126
111
|
env?: Record<string, string>;
|
|
127
112
|
|
|
128
|
-
/**
|
|
129
|
-
* 宿主显式传入的运行时配置。
|
|
130
|
-
*
|
|
131
|
-
* 关键点(中文)
|
|
132
|
-
* - SDK 不读取项目配置文件。
|
|
133
|
-
* - CLI / Console 从自己的全局配置存储读取后传入这里。
|
|
134
|
-
*/
|
|
135
|
-
config?: DowncityConfig;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* 宿主提供的 plugin 配置持久化能力。
|
|
139
|
-
*
|
|
140
|
-
* 关键点(中文)
|
|
141
|
-
* - SDK 默认会拒绝持久化操作;CLI 等宿主可在这里接入自己的全局数据库。
|
|
142
|
-
* - plugin 只依赖该稳定接口,不感知 SQLite、文件或远端服务等具体实现。
|
|
143
|
-
*/
|
|
144
|
-
plugin_config?: AgentPluginConfigRuntime;
|
|
145
113
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentState 内部装配参数。
|
|
3
|
+
*
|
|
4
|
+
* 职责说明(中文)
|
|
5
|
+
* - 只描述 AgentState 连接 PluginRegistry、Session、tools 与 Shell 所需的稳定引用。
|
|
6
|
+
* - 这些对象都由 Agent 先完成创建,AgentState 只负责运行时连接和生命周期。
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Tool } from "ai";
|
|
10
|
+
import type { Shell } from "@downcity/shell";
|
|
11
|
+
import type { AgentSessions } from "@/agent/AgentSessions.js";
|
|
12
|
+
import type { PluginRegistry } from "@/plugin/core/PluginRegistry.js";
|
|
13
|
+
import type { AgentContext } from "@/agent/AgentContext.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* AgentState 构造参数。
|
|
17
|
+
*/
|
|
18
|
+
export interface AgentStateOptions {
|
|
19
|
+
/** 当前 Agent 共用的执行上下文。 */
|
|
20
|
+
context: AgentContext;
|
|
21
|
+
|
|
22
|
+
/** 当前 Agent 唯一的 PluginRegistry 实例。 */
|
|
23
|
+
plugins: PluginRegistry;
|
|
24
|
+
|
|
25
|
+
/** 当前 Agent 唯一的 Session 集合。 */
|
|
26
|
+
sessions: AgentSessions;
|
|
27
|
+
|
|
28
|
+
/** 当前 Agent 与 Session 共享的可变工具集合。 */
|
|
29
|
+
tools: Record<string, Tool>;
|
|
30
|
+
|
|
31
|
+
/** 当前 Agent 持有的可选 Shell 实例。 */
|
|
32
|
+
shell?: Shell;
|
|
33
|
+
}
|
|
@@ -133,9 +133,6 @@ export interface AgentSession extends AgentSessionActor {
|
|
|
133
133
|
* 远程 Agent 返回的公开 session 接口。
|
|
134
134
|
*/
|
|
135
135
|
export interface RemoteAgentSession extends AgentSessionActor {
|
|
136
|
-
/** 按稳定模型 ID 更新远程 Session 模型。 */
|
|
137
|
-
set(input: AgentSessionSetInput): Promise<void>;
|
|
138
|
-
|
|
139
136
|
/** 从当前远程 session 创建一个分叉会话。 */
|
|
140
137
|
fork(input?: AgentSessionForkInput | string): Promise<RemoteAgentSession>;
|
|
141
138
|
}
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* - session actor 方法接口拆到 `SessionActor.ts`。
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import type {
|
|
10
|
-
import type { AgentModel } from "@/model/CityModelAdapter.js";
|
|
9
|
+
import type { AgentModel } from "@/agent/AgentModel.js";
|
|
11
10
|
import type { SessionRecordV1 } from "@/executor/types/SessionRecords.js";
|
|
12
11
|
|
|
13
12
|
/**
|
|
@@ -66,18 +65,10 @@ export interface AgentSessionSetInput {
|
|
|
66
65
|
* 当前 session 默认模型实例。
|
|
67
66
|
*
|
|
68
67
|
* 关键点(中文)
|
|
69
|
-
* -
|
|
70
|
-
* -
|
|
68
|
+
* - SDK 只接受宿主已经解析完成的运行时模型实例。
|
|
69
|
+
* - 模型选择、ID 与持久化全部由宿主负责。
|
|
71
70
|
*/
|
|
72
|
-
model
|
|
73
|
-
/**
|
|
74
|
-
* 当前 session 使用的稳定模型 ID。
|
|
75
|
-
*
|
|
76
|
-
* 关键点(中文)
|
|
77
|
-
* - 由 Agent 宿主提供的模型 resolver 解析为运行时模型实例。
|
|
78
|
-
* - 该值会持久化到 session metadata,进程重启后可以恢复。
|
|
79
|
-
*/
|
|
80
|
-
modelId?: string;
|
|
71
|
+
model: AgentModel;
|
|
81
72
|
}
|
|
82
73
|
|
|
83
74
|
/**
|
|
@@ -85,11 +76,9 @@ export interface AgentSessionSetInput {
|
|
|
85
76
|
*/
|
|
86
77
|
export interface AgentSessionConfigSnapshot {
|
|
87
78
|
/** 当前 session 绑定的默认模型实例。 */
|
|
88
|
-
model?:
|
|
79
|
+
model?: AgentModel;
|
|
89
80
|
/** 当前模型的轻量可读标签。 */
|
|
90
81
|
modelLabel?: string;
|
|
91
|
-
/** 当前 session 绑定的稳定模型 ID。 */
|
|
92
|
-
modelId?: string;
|
|
93
82
|
/** 当前模型支持的总上下文窗口长度,单位为 token。 */
|
|
94
83
|
model_context_window?: number;
|
|
95
84
|
}
|
|
@@ -265,8 +254,6 @@ export interface AgentSessionSummary {
|
|
|
265
254
|
messageCount: number;
|
|
266
255
|
/** 当前 session 绑定模型的可读标签。 */
|
|
267
256
|
modelLabel?: string;
|
|
268
|
-
/** 当前 session 绑定的稳定模型 ID。 */
|
|
269
|
-
modelId?: string;
|
|
270
257
|
/** 当前 session 是否处于执行中。 */
|
|
271
258
|
executing?: boolean;
|
|
272
259
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 这里承载本轮执行过程中需要在多个组件间透传的运行期数据。
|
|
6
6
|
* - 业务侧上下文优先通过该对象显式传递,避免分散读取隐式全局状态。
|
|
7
|
-
* - tool
|
|
7
|
+
* - tool 回调通过单次 tool execution context 显式读取该对象。
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import type {
|
|
@@ -19,6 +19,8 @@ import type {
|
|
|
19
19
|
import type { SessionUserMessageV1 } from "@/executor/types/SessionRecords.js";
|
|
20
20
|
import type { FileUIPart } from "ai";
|
|
21
21
|
import type { AgentPluginExecutionLease } from "@/types/plugin/PluginRuntime.js";
|
|
22
|
+
import type { ShellApprovalGateway } from "@downcity/shell";
|
|
23
|
+
import type { SessionToolInputReady } from "@/types/session/SessionTool.js";
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
26
|
* 单次 session run 的运行上下文。
|
|
@@ -79,7 +81,7 @@ export interface SessionRunContext {
|
|
|
79
81
|
*
|
|
80
82
|
* 关键点(中文)
|
|
81
83
|
* - 由 Session 统一输入队列在 step 检查点更新。
|
|
82
|
-
* - tool/plugin
|
|
84
|
+
* - tool/plugin 调用通过显式 run_context 读取,避免看到刚写入但尚未生效的 env。
|
|
83
85
|
*/
|
|
84
86
|
agentEnv?: Readonly<Record<string, string>>;
|
|
85
87
|
|
|
@@ -105,6 +107,12 @@ export interface SessionRunContext {
|
|
|
105
107
|
*/
|
|
106
108
|
onUiMessageChunkCallback?: SessionUiMessageChunkCallback;
|
|
107
109
|
|
|
110
|
+
/** Tool 实现开始执行前提交完整输入的顺序屏障。 */
|
|
111
|
+
on_tool_input_ready?: (input: SessionToolInputReady) => Promise<void>;
|
|
112
|
+
|
|
113
|
+
/** 当前 Session 拥有的 unrestricted 审批网关。 */
|
|
114
|
+
shell_approval_gateway?: ShellApprovalGateway;
|
|
115
|
+
|
|
108
116
|
/**
|
|
109
117
|
* action 发布回调。
|
|
110
118
|
*
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session tool 显式执行上下文。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 该对象由 Executor 在每个 Session step 绑定到 tool.execute。
|
|
6
|
+
* - Agent 工具读取 session_run_context,Shell 工具只读取 shell_run_context。
|
|
7
|
+
* - 上下文归属单次 run,不通过进程级或异步全局容器共享。
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ShellToolRunContext } from "@downcity/shell/types/ShellRuntime.js";
|
|
11
|
+
import type { SessionRunContext } from "@/types/executor/SessionRunContext.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Agent 与 Shell 工具共用的单次执行上下文。
|
|
15
|
+
*/
|
|
16
|
+
export interface SessionToolExecutionContext {
|
|
17
|
+
/** 当前 Shell tool 调用的显式上下文。 */
|
|
18
|
+
shell_run_context: ShellToolRunContext;
|
|
19
|
+
/** 当前工具调用所属的完整 Session run 上下文。 */
|
|
20
|
+
session_run_context: SessionRunContext;
|
|
21
|
+
}
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
import type { Command } from "commander";
|
|
10
10
|
import type { Context as HonoContext } from "hono";
|
|
11
11
|
import type { z } from "zod";
|
|
12
|
-
import type { AgentContext } from "@/
|
|
12
|
+
import type { AgentContext } from "@/agent/AgentContext.js";
|
|
13
|
+
import type { PluginRunContext } from "@/types/plugin/PluginRunContext.js";
|
|
13
14
|
import type { JsonObject, JsonValue } from "@/types/common/Json.js";
|
|
14
15
|
|
|
15
16
|
/**
|
|
@@ -147,6 +148,14 @@ export interface PluginAction<
|
|
|
147
148
|
execute: (params: {
|
|
148
149
|
/** 当前执行上下文。 */
|
|
149
150
|
context: AgentContext;
|
|
151
|
+
/**
|
|
152
|
+
* 当前 action 所属的 Session run 上下文。
|
|
153
|
+
*
|
|
154
|
+
* 关键点(中文)
|
|
155
|
+
* - 模型 tool 调用时必定提供。
|
|
156
|
+
* - CLI、HTTP 或定时任务等非 Session 入口可能不提供。
|
|
157
|
+
*/
|
|
158
|
+
run_context?: PluginRunContext;
|
|
150
159
|
/** 已通过 schema 校验后的输入。 */
|
|
151
160
|
input: P;
|
|
152
161
|
/** 当前插件名称。 */
|