@downcity/agent 1.1.430 → 1.1.437
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 +13 -11
- package/bin/agent/Agent.d.ts +3 -3
- package/bin/agent/Agent.d.ts.map +1 -1
- package/bin/agent/Agent.js +38 -8
- package/bin/agent/Agent.js.map +1 -1
- package/bin/agent/AgentInstructions.js +2 -2
- package/bin/agent/AgentInstructions.js.map +1 -1
- package/bin/agent/AgentMemoryStorage.d.ts.map +1 -1
- package/bin/agent/AgentMemoryStorage.js +1 -0
- package/bin/agent/AgentMemoryStorage.js.map +1 -1
- package/bin/agent/AgentSessions.d.ts +5 -1
- package/bin/agent/AgentSessions.d.ts.map +1 -1
- package/bin/agent/AgentSessions.js +17 -9
- package/bin/agent/AgentSessions.js.map +1 -1
- package/bin/executor/Executor.d.ts +9 -27
- package/bin/executor/Executor.d.ts.map +1 -1
- package/bin/executor/Executor.js +32 -127
- package/bin/executor/Executor.js.map +1 -1
- package/bin/executor/composer/system/default/SystemPromptAssets.d.ts +0 -4
- package/bin/executor/composer/system/default/SystemPromptAssets.d.ts.map +1 -1
- package/bin/executor/composer/system/default/SystemPromptAssets.js +0 -5
- package/bin/executor/composer/system/default/SystemPromptAssets.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts +3 -9
- package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineContextCompaction.js +4 -130
- package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.d.ts +3 -30
- package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineRunner.js +38 -194
- package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
- package/bin/executor/core-engine/CoreEngineSignals.d.ts +6 -6
- package/bin/executor/core-engine/CoreEngineSignals.d.ts.map +1 -1
- package/bin/executor/core-engine/CoreEngineSignals.js +1 -1
- package/bin/executor/core-engine/CoreEngineSignals.js.map +1 -1
- package/bin/executor/messages/SessionAttachmentMapper.d.ts +2 -2
- package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +1 -1
- package/bin/executor/messages/SessionAttachmentMapper.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/SessionModelMessages.d.ts +0 -3
- package/bin/executor/messages/SessionModelMessages.d.ts.map +1 -1
- package/bin/executor/messages/SessionModelMessages.js +80 -97
- package/bin/executor/messages/SessionModelMessages.js.map +1 -1
- package/bin/executor/model/ModelStepRunner.d.ts +2 -6
- package/bin/executor/model/ModelStepRunner.d.ts.map +1 -1
- package/bin/executor/model/ModelStepRunner.js +0 -28
- package/bin/executor/model/ModelStepRunner.js.map +1 -1
- package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +7 -64
- package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -1
- package/bin/executor/services/ExecutorRecoveryPolicy.js +29 -45
- package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -1
- package/bin/executor/types/SessionHistoryMeta.d.ts +1 -3
- package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
- package/bin/executor/types/SessionHistoryMeta.js +1 -1
- package/bin/index.d.ts +9 -13
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +2 -4
- package/bin/index.js.map +1 -1
- package/bin/session/DefaultSessionComposer.d.ts +13 -7
- package/bin/session/DefaultSessionComposer.d.ts.map +1 -1
- package/bin/session/DefaultSessionComposer.js +26 -21
- package/bin/session/DefaultSessionComposer.js.map +1 -1
- package/bin/session/Session.d.ts +12 -19
- package/bin/session/Session.d.ts.map +1 -1
- package/bin/session/Session.js +70 -202
- package/bin/session/Session.js.map +1 -1
- package/bin/session/SessionComposition.d.ts +0 -2
- package/bin/session/SessionComposition.d.ts.map +1 -1
- package/bin/session/SessionComposition.js +30 -54
- package/bin/session/SessionComposition.js.map +1 -1
- package/bin/session/SessionLoop.d.ts +17 -16
- package/bin/session/SessionLoop.d.ts.map +1 -1
- package/bin/session/SessionLoop.js +217 -320
- package/bin/session/SessionLoop.js.map +1 -1
- package/bin/session/SessionMessages.d.ts +52 -44
- package/bin/session/SessionMessages.d.ts.map +1 -1
- package/bin/session/SessionMessages.js +285 -187
- package/bin/session/SessionMessages.js.map +1 -1
- package/bin/session/SessionQueue.d.ts +1 -1
- package/bin/session/SessionQueue.d.ts.map +1 -1
- package/bin/session/SessionQueue.js +2 -1
- package/bin/session/SessionQueue.js.map +1 -1
- package/bin/session/SessionState.d.ts +3 -7
- package/bin/session/SessionState.d.ts.map +1 -1
- package/bin/session/SessionState.js +50 -89
- package/bin/session/SessionState.js.map +1 -1
- package/bin/session/SessionSystem.d.ts +5 -1
- package/bin/session/SessionSystem.d.ts.map +1 -1
- package/bin/session/SessionSystem.js +40 -0
- package/bin/session/SessionSystem.js.map +1 -1
- package/bin/session/SessionTitle.d.ts +3 -3
- package/bin/session/SessionTitle.d.ts.map +1 -1
- package/bin/session/SessionTitle.js +2 -2
- package/bin/session/browse/Browse.d.ts +32 -46
- package/bin/session/browse/Browse.d.ts.map +1 -1
- package/bin/session/browse/Browse.js +104 -360
- package/bin/session/browse/Browse.js.map +1 -1
- package/bin/session/browse/SessionMessageTimeline.d.ts.map +1 -1
- package/bin/session/browse/SessionMessageTimeline.js +61 -37
- package/bin/session/browse/SessionMessageTimeline.js.map +1 -1
- package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts +35 -0
- package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts.map +1 -0
- package/bin/session/composer/policies/AdaptivePartContextPolicy.js +256 -0
- package/bin/session/composer/policies/AdaptivePartContextPolicy.js.map +1 -0
- package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts +24 -0
- package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts.map +1 -0
- package/bin/session/composer/policies/FullHistoryContextPolicy.js +31 -0
- package/bin/session/composer/policies/FullHistoryContextPolicy.js.map +1 -0
- package/bin/session/composer/policies/SessionSummaryPrompts.d.ts +16 -0
- package/bin/session/composer/policies/SessionSummaryPrompts.d.ts.map +1 -0
- package/bin/session/composer/policies/SessionSummaryPrompts.js +32 -0
- package/bin/session/composer/policies/SessionSummaryPrompts.js.map +1 -0
- package/bin/session/execution/SessionAssistantOutputAdapter.d.ts +15 -4
- package/bin/session/execution/SessionAssistantOutputAdapter.d.ts.map +1 -1
- package/bin/session/execution/SessionAssistantOutputAdapter.js +7 -3
- package/bin/session/execution/SessionAssistantOutputAdapter.js.map +1 -1
- package/bin/session/messages/{SessionActionMessageWriter.d.ts → SessionAgentActionPartWriter.d.ts} +7 -7
- package/bin/session/messages/SessionAgentActionPartWriter.d.ts.map +1 -0
- package/bin/session/messages/{SessionActionMessageWriter.js → SessionAgentActionPartWriter.js} +7 -7
- package/bin/session/messages/SessionAgentActionPartWriter.js.map +1 -0
- package/bin/session/messages/SessionAgentContent.d.ts +10 -0
- package/bin/session/messages/SessionAgentContent.d.ts.map +1 -0
- package/bin/session/messages/SessionAgentContent.js +44 -0
- package/bin/session/messages/SessionAgentContent.js.map +1 -0
- package/bin/session/messages/SessionAgentMessageState.d.ts +50 -0
- package/bin/session/messages/SessionAgentMessageState.d.ts.map +1 -0
- package/bin/session/messages/SessionAgentMessageState.js +283 -0
- package/bin/session/messages/SessionAgentMessageState.js.map +1 -0
- package/bin/session/messages/{SessionAssistantMessageWriter.d.ts → SessionAgentMessageWriter.d.ts} +22 -8
- package/bin/session/messages/SessionAgentMessageWriter.d.ts.map +1 -0
- package/bin/session/messages/{SessionAssistantMessageWriter.js → SessionAgentMessageWriter.js} +54 -42
- package/bin/session/messages/SessionAgentMessageWriter.js.map +1 -0
- package/bin/session/messages/SessionForkMessageFiles.d.ts +11 -0
- package/bin/session/messages/SessionForkMessageFiles.d.ts.map +1 -1
- package/bin/session/messages/SessionForkMessageFiles.js +8 -2
- package/bin/session/messages/SessionForkMessageFiles.js.map +1 -1
- package/bin/session/messages/SessionMessageInteractionWriter.d.ts +6 -6
- package/bin/session/messages/SessionMessageInteractionWriter.d.ts.map +1 -1
- package/bin/session/messages/SessionMessageInteractionWriter.js +4 -4
- package/bin/session/messages/SessionMessageInteractionWriter.js.map +1 -1
- package/bin/session/messages/SessionMessageText.d.ts +3 -3
- package/bin/session/messages/SessionMessageText.d.ts.map +1 -1
- package/bin/session/messages/SessionMessageText.js +0 -2
- package/bin/session/messages/SessionMessageText.js.map +1 -1
- package/bin/session/messages/SessionTurnFileDiffData.d.ts +3 -3
- package/bin/session/messages/SessionTurnFileDiffData.d.ts.map +1 -1
- package/bin/session/messages/SessionTurnFileDiffData.js.map +1 -1
- package/bin/session/messages/SessionUserMessage.d.ts +3 -3
- package/bin/session/messages/SessionUserMessage.d.ts.map +1 -1
- package/bin/session/messages/SessionUserMessage.js +6 -3
- package/bin/session/messages/SessionUserMessage.js.map +1 -1
- package/bin/session/preview/SessionMessagePreview.d.ts.map +1 -1
- package/bin/session/preview/SessionMessagePreview.js +25 -9
- package/bin/session/preview/SessionMessagePreview.js.map +1 -1
- package/bin/session/runtime/SessionTurnCompletion.d.ts +15 -0
- package/bin/session/runtime/SessionTurnCompletion.d.ts.map +1 -0
- package/bin/session/runtime/SessionTurnCompletion.js +126 -0
- package/bin/session/runtime/SessionTurnCompletion.js.map +1 -0
- package/bin/session/runtime/SessionTurnContext.d.ts.map +1 -1
- package/bin/session/runtime/SessionTurnContext.js +14 -19
- package/bin/session/runtime/SessionTurnContext.js.map +1 -1
- package/bin/session/runtime/SessionTurnFileDiff.d.ts +12 -0
- package/bin/session/runtime/SessionTurnFileDiff.d.ts.map +1 -0
- package/bin/session/runtime/SessionTurnFileDiff.js +71 -0
- package/bin/session/runtime/SessionTurnFileDiff.js.map +1 -0
- package/bin/session/storage/LocalSessionDataStore.d.ts +6 -41
- package/bin/session/storage/LocalSessionDataStore.d.ts.map +1 -1
- package/bin/session/storage/LocalSessionDataStore.js +19 -101
- package/bin/session/storage/LocalSessionDataStore.js.map +1 -1
- package/bin/session/storage/LocalSessionStore.d.ts +13 -5
- package/bin/session/storage/LocalSessionStore.d.ts.map +1 -1
- package/bin/session/storage/LocalSessionStore.js +153 -30
- package/bin/session/storage/LocalSessionStore.js.map +1 -1
- package/bin/session/storage/LocalStorePaths.d.ts +4 -16
- package/bin/session/storage/LocalStorePaths.d.ts.map +1 -1
- package/bin/session/storage/LocalStorePaths.js +7 -31
- package/bin/session/storage/LocalStorePaths.js.map +1 -1
- package/bin/session/storage/Metadata.d.ts +4 -4
- package/bin/session/storage/Metadata.d.ts.map +1 -1
- package/bin/session/storage/Metadata.js +3 -11
- package/bin/session/storage/Metadata.js.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.d.ts +4 -4
- package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
- package/bin/session/storage/RuntimeSessionPort.js +3 -3
- package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
- package/bin/session/storage/SessionStorageCodec.d.ts +59 -0
- package/bin/session/storage/SessionStorageCodec.d.ts.map +1 -0
- package/bin/session/storage/SessionStorageCodec.js +331 -0
- package/bin/session/storage/SessionStorageCodec.js.map +1 -0
- package/bin/session/storage/SessionStorageSchema.d.ts +11 -0
- package/bin/session/storage/SessionStorageSchema.d.ts.map +1 -0
- package/bin/session/storage/SessionStorageSchema.js +131 -0
- package/bin/session/storage/SessionStorageSchema.js.map +1 -0
- package/bin/session/storage/SqliteSessionStorage.d.ts +120 -0
- package/bin/session/storage/SqliteSessionStorage.d.ts.map +1 -0
- package/bin/session/storage/SqliteSessionStorage.js +581 -0
- package/bin/session/storage/SqliteSessionStorage.js.map +1 -0
- package/bin/tools/ask/AskQuestionsTool.d.ts.map +1 -1
- package/bin/tools/ask/AskQuestionsTool.js +3 -1
- package/bin/tools/ask/AskQuestionsTool.js.map +1 -1
- package/bin/types/action/ActionResult.d.ts +9 -9
- package/bin/types/action/ActionResult.d.ts.map +1 -1
- package/bin/types/action/ActionResult.js +1 -1
- package/bin/types/agent/AgentOptions.d.ts +10 -0
- package/bin/types/agent/AgentOptions.d.ts.map +1 -1
- package/bin/types/agent/AgentStorage.d.ts +3 -1
- package/bin/types/agent/AgentStorage.d.ts.map +1 -1
- package/bin/types/agent/SessionActor.d.ts +0 -9
- package/bin/types/agent/SessionActor.d.ts.map +1 -1
- package/bin/types/agent/SessionTypes.d.ts +5 -5
- package/bin/types/agent/SessionTypes.d.ts.map +1 -1
- package/bin/types/executor/SessionAssistantOutput.d.ts +15 -4
- package/bin/types/executor/SessionAssistantOutput.d.ts.map +1 -1
- package/bin/types/executor/SessionTurnContext.d.ts +17 -19
- package/bin/types/executor/SessionTurnContext.d.ts.map +1 -1
- package/bin/types/sdk/AgentSessionAction.d.ts +1 -1
- package/bin/types/sdk/AgentSessionAction.js +1 -1
- package/bin/types/sdk/AgentSessionPrompt.d.ts +14 -5
- package/bin/types/sdk/AgentSessionPrompt.d.ts.map +1 -1
- package/bin/types/sdk/AgentSessionPrompt.js +1 -1
- package/bin/types/sdk/AgentSessionPrompt.js.map +1 -1
- package/bin/types/session/AdaptivePartContextPolicy.d.ts +31 -0
- package/bin/types/session/AdaptivePartContextPolicy.d.ts.map +1 -0
- package/bin/types/session/AdaptivePartContextPolicy.js +7 -0
- package/bin/types/session/AdaptivePartContextPolicy.js.map +1 -0
- package/bin/types/session/{SessionAssistantMessageState.d.ts → SessionAgentMessageState.d.ts} +7 -7
- package/bin/types/session/SessionAgentMessageState.d.ts.map +1 -0
- package/bin/types/session/{SessionAssistantMessageState.js → SessionAgentMessageState.js} +1 -1
- package/bin/types/session/SessionAgentMessageState.js.map +1 -0
- package/bin/types/session/SessionCommand.d.ts +19 -7
- package/bin/types/session/SessionCommand.d.ts.map +1 -1
- package/bin/types/session/SessionComposer.d.ts +43 -43
- package/bin/types/session/SessionComposer.d.ts.map +1 -1
- package/bin/types/session/SessionComposer.js +2 -2
- package/bin/types/session/SessionComposition.d.ts +2 -5
- package/bin/types/session/SessionComposition.d.ts.map +1 -1
- package/bin/types/session/SessionContextPolicy.d.ts +70 -0
- package/bin/types/session/SessionContextPolicy.d.ts.map +1 -0
- package/bin/types/session/SessionContextPolicy.js +8 -0
- package/bin/types/session/SessionContextPolicy.js.map +1 -0
- package/bin/types/session/SessionExecution.d.ts +5 -32
- package/bin/types/session/SessionExecution.d.ts.map +1 -1
- package/bin/types/session/SessionLoop.d.ts +3 -5
- package/bin/types/session/SessionLoop.d.ts.map +1 -1
- package/bin/types/session/SessionMessages.d.ts +18 -28
- package/bin/types/session/SessionMessages.d.ts.map +1 -1
- package/bin/types/session/SessionOptions.d.ts +5 -5
- package/bin/types/session/SessionOptions.d.ts.map +1 -1
- package/bin/types/session/SessionPort.d.ts +8 -9
- package/bin/types/session/SessionPort.d.ts.map +1 -1
- package/bin/types/session/SessionState.d.ts +2 -5
- package/bin/types/session/SessionState.d.ts.map +1 -1
- package/bin/types/session/SessionSystem.d.ts +14 -0
- package/bin/types/session/SessionSystem.d.ts.map +1 -1
- package/bin/types/session/SessionTool.d.ts +2 -2
- package/bin/types/session/SessionTool.d.ts.map +1 -1
- package/bin/types/session/SessionTurnCompletion.d.ts +23 -0
- package/bin/types/session/SessionTurnCompletion.d.ts.map +1 -0
- package/bin/types/session/SessionTurnCompletion.js +8 -0
- package/bin/types/session/SessionTurnCompletion.js.map +1 -0
- package/bin/types/session/SessionTurnFileDiff.d.ts +42 -0
- package/bin/types/session/SessionTurnFileDiff.d.ts.map +1 -0
- package/bin/types/session/SessionTurnFileDiff.js +8 -0
- package/bin/types/session/SessionTurnFileDiff.js.map +1 -0
- package/bin/types/store/LocalStore.d.ts +6 -13
- package/bin/types/store/LocalStore.d.ts.map +1 -1
- package/bin/types/store/LocalStore.js +1 -1
- package/bin/types/store/SessionStorage.d.ts +103 -0
- package/bin/types/store/SessionStorage.d.ts.map +1 -0
- package/bin/types/store/SessionStorage.js +8 -0
- package/bin/types/store/SessionStorage.js.map +1 -0
- package/bin/types/store/SessionStore.d.ts +5 -3
- package/bin/types/store/SessionStore.d.ts.map +1 -1
- package/package.json +2 -2
- package/scripts/core-engine-context-compaction.test.mjs +96 -219
- package/scripts/core-engine-model-stream.test.mjs +2 -4
- package/scripts/executor-failure-result.test.mjs +14 -17
- package/scripts/session-agent-message-part-order.test.mjs +63 -0
- package/scripts/session-initialization.test.mjs +141 -0
- package/scripts/session-message-timeline.test.mjs +5 -6
- package/scripts/session-messages-error-part.test.mjs +175 -0
- package/scripts/session-messages-error.test.mjs +47 -6
- package/scripts/session-prompt-idempotency.test.mjs +91 -0
- package/scripts/session-queue.test.mjs +13 -12
- package/scripts/session-storage-sqlite.test.mjs +209 -0
- package/scripts/session-turn-context.test.mjs +21 -33
- package/src/agent/Agent.ts +48 -12
- package/src/agent/AgentInstructions.ts +2 -2
- package/src/agent/AgentMemoryStorage.ts +1 -0
- package/src/agent/AgentSessions.ts +31 -12
- package/src/executor/Executor.ts +47 -184
- package/src/executor/README.md +12 -13
- package/src/executor/composer/system/default/SystemPromptAssets.ts +0 -6
- package/src/executor/core-engine/CoreEngineContextCompaction.ts +3 -135
- package/src/executor/core-engine/CoreEngineRunner.ts +51 -273
- package/src/executor/core-engine/CoreEngineSignals.ts +9 -9
- package/src/executor/messages/SessionAttachmentMapper.ts +4 -4
- package/src/executor/messages/SessionMessageLog.ts +3 -3
- package/src/executor/messages/SessionModelMessages.ts +85 -103
- package/src/executor/model/ModelStepRunner.ts +9 -41
- package/src/executor/services/ExecutorRecoveryPolicy.ts +34 -127
- package/src/executor/types/SessionHistoryMeta.ts +1 -3
- package/src/index.ts +39 -47
- package/src/session/DefaultSessionComposer.ts +33 -30
- package/src/session/Session.ts +96 -227
- package/src/session/SessionComposition.ts +28 -65
- package/src/session/SessionLoop.ts +267 -370
- package/src/session/SessionMessages.ts +363 -242
- package/src/session/SessionQueue.ts +3 -2
- package/src/session/SessionState.ts +55 -101
- package/src/session/SessionSystem.ts +51 -1
- package/src/session/SessionTitle.ts +4 -4
- package/src/session/browse/Browse.ts +182 -468
- package/src/session/browse/SessionMessageTimeline.ts +63 -38
- package/src/session/composer/policies/AdaptivePartContextPolicy.ts +307 -0
- package/src/session/composer/policies/FullHistoryContextPolicy.ts +36 -0
- package/src/session/composer/policies/SessionSummaryPrompts.ts +42 -0
- package/src/session/execution/SessionAssistantOutputAdapter.ts +25 -11
- package/src/session/messages/{SessionActionMessageWriter.ts → SessionAgentActionPartWriter.ts} +8 -8
- package/src/session/messages/SessionAgentContent.ts +56 -0
- package/src/session/messages/SessionAgentMessageState.ts +378 -0
- package/src/session/messages/{SessionAssistantMessageWriter.ts → SessionAgentMessageWriter.ts} +89 -60
- package/src/session/messages/SessionForkMessageFiles.ts +25 -1
- package/src/session/messages/SessionMessageInteractionWriter.ts +19 -19
- package/src/session/messages/SessionMessageText.ts +3 -4
- package/src/session/messages/SessionTurnFileDiffData.ts +3 -3
- package/src/session/messages/SessionUserMessage.ts +10 -7
- package/src/session/preview/SessionMessagePreview.ts +26 -9
- package/src/session/runtime/SessionTurnCompletion.ts +159 -0
- package/src/session/runtime/SessionTurnContext.ts +20 -21
- package/src/session/runtime/SessionTurnFileDiff.ts +105 -0
- package/src/session/storage/LocalSessionDataStore.ts +27 -176
- package/src/session/storage/LocalSessionStore.ts +170 -38
- package/src/session/storage/LocalStorePaths.ts +14 -86
- package/src/session/storage/Metadata.ts +4 -13
- package/src/session/storage/RuntimeSessionPort.ts +7 -7
- package/src/session/storage/SessionStorageCodec.ts +465 -0
- package/src/session/storage/SessionStorageSchema.ts +132 -0
- package/src/session/storage/SqliteSessionStorage.ts +776 -0
- package/src/tools/ask/AskQuestionsTool.ts +3 -1
- package/src/types/action/ActionResult.ts +10 -10
- package/src/types/agent/AgentOptions.ts +11 -0
- package/src/types/agent/AgentStorage.ts +3 -1
- package/src/types/agent/SessionActor.ts +0 -10
- package/src/types/agent/SessionTypes.ts +5 -5
- package/src/types/executor/SessionAssistantOutput.ts +15 -4
- package/src/types/executor/SessionTurnContext.ts +25 -22
- package/src/types/sdk/AgentSessionAction.ts +1 -1
- package/src/types/sdk/AgentSessionPrompt.ts +15 -5
- package/src/types/session/AdaptivePartContextPolicy.ts +37 -0
- package/src/types/session/{SessionAssistantMessageState.ts → SessionAgentMessageState.ts} +6 -6
- package/src/types/session/SessionCommand.ts +21 -7
- package/src/types/session/SessionComposer.ts +48 -48
- package/src/types/session/SessionComposition.ts +2 -5
- package/src/types/session/SessionContextPolicy.ts +77 -0
- package/src/types/session/SessionExecution.ts +11 -36
- package/src/types/session/SessionLoop.ts +3 -8
- package/src/types/session/SessionMessages.ts +19 -29
- package/src/types/session/SessionOptions.ts +5 -5
- package/src/types/session/SessionPort.ts +10 -10
- package/src/types/session/SessionState.ts +2 -5
- package/src/types/session/SessionSystem.ts +19 -0
- package/src/types/session/SessionTool.ts +2 -2
- package/src/types/session/SessionTurnCompletion.ts +24 -0
- package/src/types/session/SessionTurnFileDiff.ts +44 -0
- package/src/types/store/LocalStore.ts +6 -14
- package/src/types/store/SessionStorage.ts +121 -0
- package/src/types/store/SessionStore.ts +6 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts +0 -45
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts.map +0 -1
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js +0 -144
- package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js.map +0 -1
- package/bin/executor/composer/system/SessionSystemComposer.d.ts +0 -23
- package/bin/executor/composer/system/SessionSystemComposer.d.ts.map +0 -1
- package/bin/executor/composer/system/SessionSystemComposer.js +0 -9
- package/bin/executor/composer/system/SessionSystemComposer.js.map +0 -1
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +0 -43
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +0 -1
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js +0 -42
- package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js.map +0 -1
- package/bin/executor/composer/system/default/PromptRenderer.d.ts +0 -35
- package/bin/executor/composer/system/default/PromptRenderer.d.ts.map +0 -1
- package/bin/executor/composer/system/default/PromptRenderer.js +0 -23
- package/bin/executor/composer/system/default/PromptRenderer.js.map +0 -1
- package/bin/executor/composer/system/default/SystemDomain.d.ts +0 -151
- package/bin/executor/composer/system/default/SystemDomain.d.ts.map +0 -1
- package/bin/executor/composer/system/default/SystemDomain.js +0 -162
- package/bin/executor/composer/system/default/SystemDomain.js.map +0 -1
- package/bin/executor/composer/system/default/assets/task.prompt.d.ts +0 -7
- package/bin/executor/composer/system/default/assets/task.prompt.d.ts.map +0 -1
- package/bin/executor/composer/system/default/assets/task.prompt.js +0 -8
- package/bin/executor/composer/system/default/assets/task.prompt.js.map +0 -1
- package/bin/executor/composer/system/default/variables/GeoContext.d.ts +0 -14
- package/bin/executor/composer/system/default/variables/GeoContext.d.ts.map +0 -1
- package/bin/executor/composer/system/default/variables/GeoContext.js +0 -150
- package/bin/executor/composer/system/default/variables/GeoContext.js.map +0 -1
- package/bin/executor/composer/system/default/variables/PromptTypes.d.ts +0 -36
- package/bin/executor/composer/system/default/variables/PromptTypes.d.ts.map +0 -1
- package/bin/executor/composer/system/default/variables/PromptTypes.js +0 -9
- package/bin/executor/composer/system/default/variables/PromptTypes.js.map +0 -1
- package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts +0 -61
- package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts.map +0 -1
- package/bin/executor/composer/system/default/variables/VariableReplacer.js +0 -93
- package/bin/executor/composer/system/default/variables/VariableReplacer.js.map +0 -1
- package/bin/executor/core-engine/CoreEngineMessageState.d.ts +0 -63
- package/bin/executor/core-engine/CoreEngineMessageState.d.ts.map +0 -1
- package/bin/executor/core-engine/CoreEngineMessageState.js +0 -81
- package/bin/executor/core-engine/CoreEngineMessageState.js.map +0 -1
- package/bin/session/SessionCommand.d.ts +0 -24
- package/bin/session/SessionCommand.d.ts.map +0 -1
- package/bin/session/SessionCommand.js +0 -35
- package/bin/session/SessionCommand.js.map +0 -1
- package/bin/session/messages/SessionActionMessageWriter.d.ts.map +0 -1
- package/bin/session/messages/SessionActionMessageWriter.js.map +0 -1
- package/bin/session/messages/SessionAssistantMessageState.d.ts +0 -49
- package/bin/session/messages/SessionAssistantMessageState.d.ts.map +0 -1
- package/bin/session/messages/SessionAssistantMessageState.js +0 -296
- package/bin/session/messages/SessionAssistantMessageState.js.map +0 -1
- package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +0 -1
- package/bin/session/messages/SessionAssistantMessageWriter.js.map +0 -1
- package/bin/session/messages/SessionMessageCompaction.d.ts +0 -29
- package/bin/session/messages/SessionMessageCompaction.d.ts.map +0 -1
- package/bin/session/messages/SessionMessageCompaction.js +0 -128
- package/bin/session/messages/SessionMessageCompaction.js.map +0 -1
- package/bin/session/runtime/SessionCompactOperation.d.ts +0 -29
- package/bin/session/runtime/SessionCompactOperation.d.ts.map +0 -1
- package/bin/session/runtime/SessionCompactOperation.js +0 -66
- package/bin/session/runtime/SessionCompactOperation.js.map +0 -1
- package/bin/session/runtime/SessionHistoryCompaction.d.ts +0 -22
- package/bin/session/runtime/SessionHistoryCompaction.d.ts.map +0 -1
- package/bin/session/runtime/SessionHistoryCompaction.js +0 -31
- package/bin/session/runtime/SessionHistoryCompaction.js.map +0 -1
- package/bin/session/storage/JsonlSessionMessageStore.d.ts +0 -77
- package/bin/session/storage/JsonlSessionMessageStore.d.ts.map +0 -1
- package/bin/session/storage/JsonlSessionMessageStore.js +0 -419
- package/bin/session/storage/JsonlSessionMessageStore.js.map +0 -1
- package/bin/session/storage/SessionMessageStoreFactory.d.ts +0 -12
- package/bin/session/storage/SessionMessageStoreFactory.d.ts.map +0 -1
- package/bin/session/storage/SessionMessageStoreFactory.js +0 -13
- package/bin/session/storage/SessionMessageStoreFactory.js.map +0 -1
- package/bin/types/common/Template.d.ts +0 -9
- package/bin/types/common/Template.d.ts.map +0 -1
- package/bin/types/common/Template.js +0 -9
- package/bin/types/common/Template.js.map +0 -1
- package/bin/types/sdk/AgentSessionCompact.d.ts +0 -30
- package/bin/types/sdk/AgentSessionCompact.d.ts.map +0 -1
- package/bin/types/sdk/AgentSessionCompact.js +0 -8
- package/bin/types/sdk/AgentSessionCompact.js.map +0 -1
- package/bin/types/session/SessionAssistantMessageState.d.ts.map +0 -1
- package/bin/types/session/SessionAssistantMessageState.js.map +0 -1
- package/bin/types/session/SessionSegment.d.ts +0 -57
- package/bin/types/session/SessionSegment.d.ts.map +0 -1
- package/bin/types/session/SessionSegment.js +0 -8
- package/bin/types/session/SessionSegment.js.map +0 -1
- package/bin/types/store/SessionDataStore.d.ts +0 -88
- package/bin/types/store/SessionDataStore.d.ts.map +0 -1
- package/bin/types/store/SessionDataStore.js +0 -9
- package/bin/types/store/SessionDataStore.js.map +0 -1
- package/bin/utils/Template.d.ts +0 -17
- package/bin/utils/Template.d.ts.map +0 -1
- package/bin/utils/Template.js +0 -24
- package/bin/utils/Template.js.map +0 -1
- package/scripts/session-compaction-prompts.test.mjs +0 -49
- package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.ts +0 -162
- package/src/executor/composer/system/SessionSystemComposer.ts +0 -25
- package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +0 -76
- package/src/executor/composer/system/default/PromptRenderer.ts +0 -52
- package/src/executor/composer/system/default/SystemDomain.ts +0 -301
- package/src/executor/composer/system/default/assets/task.prompt.ts +0 -9
- package/src/executor/composer/system/default/assets/task.prompt.ts.txt +0 -33
- package/src/executor/composer/system/default/variables/GeoContext.ts +0 -180
- package/src/executor/composer/system/default/variables/PromptTypes.ts +0 -37
- package/src/executor/composer/system/default/variables/VariableReplacer.ts +0 -154
- package/src/executor/core-engine/CoreEngineMessageState.ts +0 -117
- package/src/session/SessionCommand.ts +0 -42
- package/src/session/messages/SessionAssistantMessageState.ts +0 -392
- package/src/session/messages/SessionMessageCompaction.ts +0 -160
- package/src/session/runtime/SessionCompactOperation.ts +0 -93
- package/src/session/runtime/SessionHistoryCompaction.ts +0 -45
- package/src/session/storage/JsonlSessionMessageStore.ts +0 -513
- package/src/session/storage/SessionMessageStoreFactory.ts +0 -18
- package/src/types/common/Template.ts +0 -9
- package/src/types/sdk/AgentSessionCompact.ts +0 -32
- package/src/types/session/SessionSegment.ts +0 -62
- package/src/types/store/SessionDataStore.ts +0 -113
- package/src/utils/Template.ts +0 -28
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Session Message 的 Active + Segment JSONL 存储。
|
|
3
|
-
*
|
|
4
|
-
* Active 保存上次 Compact 后产生的真实 Message;Compact 把 Active 前缀写入按
|
|
5
|
-
* sequence 范围命名的不可变 Segment,并在 Segment 末尾追加累计 Summary footer。
|
|
6
|
-
*/
|
|
7
|
-
import path from "node:path";
|
|
8
|
-
const SEGMENT_FILE_PATTERN = /^(\d+)-(\d+)\.jsonl$/;
|
|
9
|
-
const SEQUENCE_FILE_WIDTH = 12;
|
|
10
|
-
/** Active + Segment JSONL 存储。 */
|
|
11
|
-
export class JsonlSessionMessageStore {
|
|
12
|
-
session_id;
|
|
13
|
-
active_file_path;
|
|
14
|
-
assistant_message_file_path;
|
|
15
|
-
segments_dir_path;
|
|
16
|
-
lock_file_path;
|
|
17
|
-
files;
|
|
18
|
-
constructor(options) {
|
|
19
|
-
this.files = options.files;
|
|
20
|
-
this.session_id = String(options.session_id || "").trim();
|
|
21
|
-
this.active_file_path = path.resolve(options.file_path);
|
|
22
|
-
this.assistant_message_file_path = path.resolve(options.assistant_message_file_path ||
|
|
23
|
-
path.join(path.dirname(this.active_file_path), "assistant_message.json"));
|
|
24
|
-
this.segments_dir_path = path.join(path.dirname(this.active_file_path), "segments");
|
|
25
|
-
this.lock_file_path = `${this.active_file_path}.lock`;
|
|
26
|
-
if (!this.session_id)
|
|
27
|
-
throw new Error("JsonlSessionMessageStore requires session_id");
|
|
28
|
-
}
|
|
29
|
-
/** 创建 Active 与 Segment 布局,并清理已经完成的遗留草稿。 */
|
|
30
|
-
async initialize() {
|
|
31
|
-
await this.with_write_lock(async () => {
|
|
32
|
-
const ranges = await this.list_segment_ranges();
|
|
33
|
-
const folded_messages = await this.read_folded_active_messages_unsafe();
|
|
34
|
-
const latest_segment_end = ranges.at(-1)?.end_sequence || 0;
|
|
35
|
-
const messages = folded_messages.filter((message) => message.sequence > latest_segment_end);
|
|
36
|
-
// Compact 先落 Segment 再覆盖 Active。若进程在两步之间退出,重启时按
|
|
37
|
-
// Segment sequence 边界清除 Active 重叠前缀,保证不丢消息且上下文不重复。
|
|
38
|
-
if (messages.length !== folded_messages.length) {
|
|
39
|
-
await this.write_active_messages_unsafe(messages);
|
|
40
|
-
}
|
|
41
|
-
const draft = await this.read_assistant_message();
|
|
42
|
-
if (draft && draft.session_id !== this.session_id) {
|
|
43
|
-
throw new Error("assistant_message.json session_id mismatch");
|
|
44
|
-
}
|
|
45
|
-
const finalized = draft && messages.find((message) => message.message_id === draft.message_id);
|
|
46
|
-
const effective_draft = draft && finalized?.type === "assistant" &&
|
|
47
|
-
finalized.revision >= draft.revision &&
|
|
48
|
-
finalized.status !== "streaming"
|
|
49
|
-
? null
|
|
50
|
-
: draft;
|
|
51
|
-
this.validate_runtime_sequence(effective_draft ? [...messages, effective_draft] : messages, latest_segment_end);
|
|
52
|
-
if (draft &&
|
|
53
|
-
finalized?.type === "assistant" &&
|
|
54
|
-
finalized.revision >= draft.revision &&
|
|
55
|
-
finalized.status !== "streaming") {
|
|
56
|
-
await this.files.remove_path(this.assistant_message_file_path);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
/** 读取 Active 和当前 Assistant 草稿,并按 revision 折叠。 */
|
|
61
|
-
async list_messages() {
|
|
62
|
-
await this.ensure_layout();
|
|
63
|
-
const by_id = new Map((await this.read_active_messages_unsafe()).map((message) => [message.message_id, message]));
|
|
64
|
-
const draft = await this.read_assistant_message();
|
|
65
|
-
if (draft) {
|
|
66
|
-
const previous = by_id.get(draft.message_id);
|
|
67
|
-
if (!previous || draft.revision > previous.revision)
|
|
68
|
-
by_id.set(draft.message_id, draft);
|
|
69
|
-
}
|
|
70
|
-
const messages = [...by_id.values()].sort(compare_message_sequence);
|
|
71
|
-
const ranges = await this.list_segment_ranges();
|
|
72
|
-
this.validate_runtime_sequence(messages, ranges.at(-1)?.end_sequence || 0);
|
|
73
|
-
return messages;
|
|
74
|
-
}
|
|
75
|
-
/** 读取指定 sequence 之前最近的完整 Segment。 */
|
|
76
|
-
async read_segment_before(before_sequence) {
|
|
77
|
-
const boundary = Number(before_sequence);
|
|
78
|
-
if (!Number.isFinite(boundary))
|
|
79
|
-
return null;
|
|
80
|
-
const ranges = await this.list_segment_ranges();
|
|
81
|
-
const range = [...ranges].reverse().find((item) => item.end_sequence < boundary);
|
|
82
|
-
return range ? await this.read_segment(range) : null;
|
|
83
|
-
}
|
|
84
|
-
/** 读取最新已关闭 Segment 的累计 Summary。 */
|
|
85
|
-
async read_latest_summary() {
|
|
86
|
-
const ranges = await this.list_segment_ranges();
|
|
87
|
-
const latest = ranges[ranges.length - 1];
|
|
88
|
-
return latest ? (await this.read_segment(latest)).summary : null;
|
|
89
|
-
}
|
|
90
|
-
/** 读取全部真实历史,供 Fork 等明确需要完整复制的操作使用。 */
|
|
91
|
-
async list_history_messages() {
|
|
92
|
-
const ranges = await this.list_segment_ranges();
|
|
93
|
-
const messages = [];
|
|
94
|
-
for (const range of ranges) {
|
|
95
|
-
messages.push(...(await this.read_segment(range)).messages);
|
|
96
|
-
}
|
|
97
|
-
messages.push(...(await this.list_messages()));
|
|
98
|
-
return messages.sort(compare_message_sequence);
|
|
99
|
-
}
|
|
100
|
-
/** 读取当前存储统计,不解析与当前操作无关的旧 Segment 正文。 */
|
|
101
|
-
async stats() {
|
|
102
|
-
const ranges = await this.list_segment_ranges();
|
|
103
|
-
const active_messages = await this.list_messages();
|
|
104
|
-
const latest_range = ranges[ranges.length - 1];
|
|
105
|
-
const latest_message = active_messages[active_messages.length - 1] ||
|
|
106
|
-
(latest_range ? (await this.read_segment(latest_range)).messages.at(-1) : null) ||
|
|
107
|
-
null;
|
|
108
|
-
const paths = [this.active_file_path, ...ranges.map((range) => range.file_path)];
|
|
109
|
-
const sizes = await Promise.all(paths.map(async (file_path) => await this.files.file_size(file_path).catch(() => 0)));
|
|
110
|
-
const latest_sequence = Math.max(latest_range?.end_sequence || 0, active_messages.reduce((max, message) => Math.max(max, message.sequence), 0));
|
|
111
|
-
return {
|
|
112
|
-
message_count: latest_sequence,
|
|
113
|
-
history_bytes: sizes.reduce((total, size) => total + size, 0),
|
|
114
|
-
latest_message,
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
/** 判断给定边界之前是否仍存在历史 Segment。 */
|
|
118
|
-
async has_segment_before(before_sequence) {
|
|
119
|
-
return (await this.list_segment_ranges()).some((range) => range.end_sequence < before_sequence);
|
|
120
|
-
}
|
|
121
|
-
/** 返回当前 Active 之前的读取边界。 */
|
|
122
|
-
async active_before_sequence(messages) {
|
|
123
|
-
const first = messages[0];
|
|
124
|
-
if (first)
|
|
125
|
-
return first.sequence;
|
|
126
|
-
const ranges = await this.list_segment_ranges();
|
|
127
|
-
const latest = ranges[ranges.length - 1];
|
|
128
|
-
return latest ? latest.end_sequence + 1 : undefined;
|
|
129
|
-
}
|
|
130
|
-
/** 读取当前运行中的 Assistant 草稿。 */
|
|
131
|
-
async read_assistant_message() {
|
|
132
|
-
try {
|
|
133
|
-
const value = JSON.parse((await this.files.read_file(this.assistant_message_file_path)).toString("utf8"));
|
|
134
|
-
this.validate_message(value);
|
|
135
|
-
return value.type === "assistant" && value.status === "streaming" ? value : null;
|
|
136
|
-
}
|
|
137
|
-
catch (error) {
|
|
138
|
-
if (error.code === "ENOENT")
|
|
139
|
-
return null;
|
|
140
|
-
throw error;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/** 原子覆盖运行中的 Assistant 草稿。 */
|
|
144
|
-
async write_assistant_message(message) {
|
|
145
|
-
this.validate_message(message);
|
|
146
|
-
if (message.status !== "streaming")
|
|
147
|
-
throw new Error("Assistant draft must be streaming");
|
|
148
|
-
await this.with_write_lock(async () => {
|
|
149
|
-
const current = await this.read_assistant_message();
|
|
150
|
-
if (!current || current.message_id !== message.message_id) {
|
|
151
|
-
throw new Error(`Assistant draft does not exist: ${message.message_id}`);
|
|
152
|
-
}
|
|
153
|
-
if (message.revision !== current.revision + 1) {
|
|
154
|
-
throw new Error(`Invalid Assistant draft revision: ${message.message_id}`);
|
|
155
|
-
}
|
|
156
|
-
await this.write_assistant_message_unsafe(message);
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
/** 在写锁内分配全局 sequence 并创建唯一 Assistant 草稿。 */
|
|
160
|
-
async create_assistant_message(build_message) {
|
|
161
|
-
return await this.with_write_lock(async () => {
|
|
162
|
-
const current = await this.read_assistant_message();
|
|
163
|
-
if (current)
|
|
164
|
-
throw new Error(`Assistant draft already exists: ${current.message_id}`);
|
|
165
|
-
const messages = await this.read_active_messages_unsafe();
|
|
166
|
-
const ranges = await this.list_segment_ranges();
|
|
167
|
-
this.validate_runtime_sequence(messages, ranges.at(-1)?.end_sequence || 0);
|
|
168
|
-
const message = build_message({
|
|
169
|
-
message_sequence: await this.next_sequence_unsafe(messages),
|
|
170
|
-
messages,
|
|
171
|
-
});
|
|
172
|
-
this.validate_message(message);
|
|
173
|
-
if (message.status !== "streaming" || message.revision !== 1) {
|
|
174
|
-
throw new Error("New Assistant draft must be streaming at revision 1");
|
|
175
|
-
}
|
|
176
|
-
await this.write_assistant_message_unsafe(message);
|
|
177
|
-
return message;
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
/** 创建新 Message 或向 Active 追加已有 Message revision。 */
|
|
181
|
-
async append_message(build_message) {
|
|
182
|
-
return await this.with_write_lock(async () => {
|
|
183
|
-
const messages = await this.read_active_messages_unsafe();
|
|
184
|
-
const draft = await this.read_assistant_message();
|
|
185
|
-
const current_messages = draft ? [...messages, draft] : messages;
|
|
186
|
-
const ranges = await this.list_segment_ranges();
|
|
187
|
-
this.validate_runtime_sequence(current_messages, ranges.at(-1)?.end_sequence || 0);
|
|
188
|
-
const message = build_message({
|
|
189
|
-
message_sequence: await this.next_sequence_unsafe(current_messages),
|
|
190
|
-
messages: current_messages,
|
|
191
|
-
});
|
|
192
|
-
this.validate_message(message);
|
|
193
|
-
await this.files.append_file(this.active_file_path, `${JSON.stringify(message)}\n`);
|
|
194
|
-
return message;
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
/** 将 Assistant 草稿最终追加到 Active,并删除草稿文件。 */
|
|
198
|
-
async finalize_assistant_message(message) {
|
|
199
|
-
this.validate_message(message);
|
|
200
|
-
if (message.status === "streaming")
|
|
201
|
-
throw new Error("Final Assistant message cannot be streaming");
|
|
202
|
-
await this.with_write_lock(async () => {
|
|
203
|
-
const current = await this.read_assistant_message();
|
|
204
|
-
if (!current || current.message_id !== message.message_id) {
|
|
205
|
-
throw new Error(`Assistant draft does not exist: ${message.message_id}`);
|
|
206
|
-
}
|
|
207
|
-
if (message.revision !== current.revision + 1) {
|
|
208
|
-
throw new Error(`Invalid final Assistant revision: ${message.message_id}`);
|
|
209
|
-
}
|
|
210
|
-
await this.files.append_file(this.active_file_path, `${JSON.stringify(message)}\n`);
|
|
211
|
-
await this.files.remove_path(this.assistant_message_file_path);
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
/** 把 Active 前缀与累计 Summary 提交为不可变 Segment。 */
|
|
215
|
-
async compact_active(input) {
|
|
216
|
-
return await this.with_write_lock(async () => {
|
|
217
|
-
const draft = await this.read_assistant_message();
|
|
218
|
-
if (draft)
|
|
219
|
-
throw new Error("Cannot compact while Assistant is streaming");
|
|
220
|
-
const active_messages = await this.read_active_messages_unsafe();
|
|
221
|
-
const ranges = await this.list_segment_ranges();
|
|
222
|
-
this.validate_runtime_sequence(active_messages, ranges.at(-1)?.end_sequence || 0);
|
|
223
|
-
const segment_messages = active_messages.filter((message) => message.sequence <= input.through_sequence);
|
|
224
|
-
const retained_messages = active_messages.filter((message) => message.sequence > input.through_sequence);
|
|
225
|
-
if (segment_messages.length === 0) {
|
|
226
|
-
throw new Error("Compact boundary does not include Active messages");
|
|
227
|
-
}
|
|
228
|
-
const start_sequence = segment_messages[0].sequence;
|
|
229
|
-
const end_sequence = segment_messages.at(-1)?.sequence || 0;
|
|
230
|
-
if (input.summary.through_sequence !== end_sequence) {
|
|
231
|
-
throw new Error("Compact Summary boundary does not match Segment end");
|
|
232
|
-
}
|
|
233
|
-
const range = {
|
|
234
|
-
start_sequence,
|
|
235
|
-
end_sequence,
|
|
236
|
-
file_path: this.segment_file_path(start_sequence, end_sequence),
|
|
237
|
-
};
|
|
238
|
-
if (await this.files.path_exists(range.file_path)) {
|
|
239
|
-
throw new Error(`Session Segment already exists: ${range.file_path}`);
|
|
240
|
-
}
|
|
241
|
-
await this.write_segment_unsafe(range, segment_messages, input.summary);
|
|
242
|
-
await this.write_active_messages_unsafe(retained_messages);
|
|
243
|
-
return {
|
|
244
|
-
segment: { range, messages: segment_messages, summary: input.summary },
|
|
245
|
-
active_messages: retained_messages,
|
|
246
|
-
};
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
/** 扫描 Segment 文件名并返回 sequence 升序索引。 */
|
|
250
|
-
async list_segment_ranges() {
|
|
251
|
-
await this.ensure_layout();
|
|
252
|
-
const entries = await this.files.read_directory(this.segments_dir_path);
|
|
253
|
-
const ranges = entries
|
|
254
|
-
.flatMap((entry) => {
|
|
255
|
-
if (!entry.is_file)
|
|
256
|
-
return [];
|
|
257
|
-
const match = SEGMENT_FILE_PATTERN.exec(entry.name);
|
|
258
|
-
if (!match)
|
|
259
|
-
return [];
|
|
260
|
-
const start_sequence = Number(match[1]);
|
|
261
|
-
const end_sequence = Number(match[2]);
|
|
262
|
-
if (!Number.isInteger(start_sequence) || !Number.isInteger(end_sequence))
|
|
263
|
-
return [];
|
|
264
|
-
return [{
|
|
265
|
-
start_sequence,
|
|
266
|
-
end_sequence,
|
|
267
|
-
file_path: path.join(this.segments_dir_path, entry.name),
|
|
268
|
-
}];
|
|
269
|
-
})
|
|
270
|
-
.sort((left, right) => left.start_sequence - right.start_sequence);
|
|
271
|
-
for (let index = 0; index < ranges.length; index += 1) {
|
|
272
|
-
const range = ranges[index];
|
|
273
|
-
const previous = ranges[index - 1];
|
|
274
|
-
if (!range || range.start_sequence > range.end_sequence) {
|
|
275
|
-
throw new Error("Session Segment filename contains an invalid sequence range");
|
|
276
|
-
}
|
|
277
|
-
if (index === 0 && range.start_sequence !== 1) {
|
|
278
|
-
throw new Error("The first Session Segment must start at sequence 1");
|
|
279
|
-
}
|
|
280
|
-
if (previous && range.start_sequence !== previous.end_sequence + 1) {
|
|
281
|
-
throw new Error("Session Segment sequence ranges must be contiguous and non-overlapping");
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return ranges;
|
|
285
|
-
}
|
|
286
|
-
/** 读取并验证一个不可变 Segment。 */
|
|
287
|
-
async read_segment(range) {
|
|
288
|
-
const raw = (await this.files.read_file(range.file_path)).toString("utf8");
|
|
289
|
-
const lines = raw.split("\n").map((line) => line.trim()).filter(Boolean);
|
|
290
|
-
const summary_value = JSON.parse(lines.pop() || "null");
|
|
291
|
-
this.validate_summary(summary_value, range.end_sequence);
|
|
292
|
-
const messages = lines.map((line) => {
|
|
293
|
-
const message = JSON.parse(line);
|
|
294
|
-
this.validate_message(message);
|
|
295
|
-
return message;
|
|
296
|
-
}).sort(compare_message_sequence);
|
|
297
|
-
if (messages.length !== range.end_sequence - range.start_sequence + 1 ||
|
|
298
|
-
messages[0]?.sequence !== range.start_sequence ||
|
|
299
|
-
messages.at(-1)?.sequence !== range.end_sequence ||
|
|
300
|
-
messages.some((message, index) => message.sequence !== range.start_sequence + index)) {
|
|
301
|
-
throw new Error(`Session Segment range mismatch: ${range.file_path}`);
|
|
302
|
-
}
|
|
303
|
-
return { range, messages, summary: summary_value };
|
|
304
|
-
}
|
|
305
|
-
/** 读取 Active 中每个 Message 的最高 revision。 */
|
|
306
|
-
async read_active_messages_unsafe() {
|
|
307
|
-
const messages = await this.read_folded_active_messages_unsafe();
|
|
308
|
-
const ranges = await this.list_segment_ranges();
|
|
309
|
-
const latest_segment_end = ranges.at(-1)?.end_sequence || 0;
|
|
310
|
-
const active_messages = messages.filter((message) => message.sequence > latest_segment_end);
|
|
311
|
-
return active_messages;
|
|
312
|
-
}
|
|
313
|
-
/** 读取 Active 原始行,并按 Message ID 保留最高 revision。 */
|
|
314
|
-
async read_folded_active_messages_unsafe() {
|
|
315
|
-
const raw = await this.files.read_file(this.active_file_path)
|
|
316
|
-
.then((value) => value.toString("utf8"))
|
|
317
|
-
.catch(() => "");
|
|
318
|
-
const by_id = new Map();
|
|
319
|
-
for (const line of raw.split("\n")) {
|
|
320
|
-
if (!line.trim())
|
|
321
|
-
continue;
|
|
322
|
-
const message = JSON.parse(line);
|
|
323
|
-
this.validate_message(message);
|
|
324
|
-
const previous = by_id.get(message.message_id);
|
|
325
|
-
if (!previous || message.revision > previous.revision)
|
|
326
|
-
by_id.set(message.message_id, message);
|
|
327
|
-
}
|
|
328
|
-
return [...by_id.values()].sort(compare_message_sequence);
|
|
329
|
-
}
|
|
330
|
-
/** 计算下一条真实 Message sequence。 */
|
|
331
|
-
async next_sequence_unsafe(messages) {
|
|
332
|
-
const ranges = await this.list_segment_ranges();
|
|
333
|
-
return Math.max(ranges.at(-1)?.end_sequence || 0, messages.reduce((max, message) => Math.max(max, message.sequence), 0)) + 1;
|
|
334
|
-
}
|
|
335
|
-
/** 原子覆盖 Assistant 草稿。 */
|
|
336
|
-
async write_assistant_message_unsafe(message) {
|
|
337
|
-
await this.files.write_file_atomically(this.assistant_message_file_path, `${JSON.stringify(message, null, 2)}\n`);
|
|
338
|
-
}
|
|
339
|
-
/** 原子覆盖 Active,只写入每个 Message 的最终 revision。 */
|
|
340
|
-
async write_active_messages_unsafe(messages) {
|
|
341
|
-
const content = messages.length > 0
|
|
342
|
-
? `${messages.map((message) => JSON.stringify(message)).join("\n")}\n`
|
|
343
|
-
: "";
|
|
344
|
-
await this.files.write_file_atomically(this.active_file_path, content);
|
|
345
|
-
}
|
|
346
|
-
/** 原子创建一个带累计 Summary footer 的 Segment。 */
|
|
347
|
-
async write_segment_unsafe(range, messages, summary) {
|
|
348
|
-
const content = `${[
|
|
349
|
-
...messages.map((message) => JSON.stringify(message)),
|
|
350
|
-
JSON.stringify(summary),
|
|
351
|
-
].join("\n")}\n`;
|
|
352
|
-
if (await this.files.path_exists(range.file_path)) {
|
|
353
|
-
throw new Error(`Session Segment already exists: ${range.file_path}`);
|
|
354
|
-
}
|
|
355
|
-
await this.files.write_file_atomically(range.file_path, content);
|
|
356
|
-
}
|
|
357
|
-
/** 生成稳定的 Segment sequence 范围文件名。 */
|
|
358
|
-
segment_file_path(start_sequence, end_sequence) {
|
|
359
|
-
const start = String(start_sequence).padStart(SEQUENCE_FILE_WIDTH, "0");
|
|
360
|
-
const end = String(end_sequence).padStart(SEQUENCE_FILE_WIDTH, "0");
|
|
361
|
-
return path.join(this.segments_dir_path, `${start}-${end}.jsonl`);
|
|
362
|
-
}
|
|
363
|
-
/** 验证真实 Session Message。 */
|
|
364
|
-
validate_message(message) {
|
|
365
|
-
if (!message || typeof message !== "object")
|
|
366
|
-
throw new Error("message must be an object");
|
|
367
|
-
if (message.session_id !== this.session_id)
|
|
368
|
-
throw new Error("session_id mismatch");
|
|
369
|
-
if (!message.message_id || !Number.isInteger(message.sequence) || !Number.isInteger(message.revision)) {
|
|
370
|
-
throw new Error("message identity, sequence and revision are required");
|
|
371
|
-
}
|
|
372
|
-
if (message.type === "assistant") {
|
|
373
|
-
const sequences = new Set();
|
|
374
|
-
for (const part of message.parts) {
|
|
375
|
-
if (!Number.isInteger(part.sequence) || sequences.has(part.sequence)) {
|
|
376
|
-
throw new Error(`invalid Assistant part sequence: ${part.part_id}`);
|
|
377
|
-
}
|
|
378
|
-
sequences.add(part.sequence);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
/** 验证 Segment footer Summary。 */
|
|
383
|
-
validate_summary(summary, expected_sequence) {
|
|
384
|
-
if (!summary || summary.record_type !== "summary") {
|
|
385
|
-
throw new Error("Session Segment summary footer is required");
|
|
386
|
-
}
|
|
387
|
-
if (summary.session_id !== this.session_id || !summary.summary_id) {
|
|
388
|
-
throw new Error("Session Segment summary identity mismatch");
|
|
389
|
-
}
|
|
390
|
-
if (summary.through_sequence !== expected_sequence || !String(summary.text || "").trim()) {
|
|
391
|
-
throw new Error("Session Segment summary boundary is invalid");
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
/** 验证 Active 与草稿合并后紧接最新 Segment,且真实 Message sequence 连续。 */
|
|
395
|
-
validate_runtime_sequence(messages, latest_segment_end) {
|
|
396
|
-
const ordered_messages = [...messages].sort(compare_message_sequence);
|
|
397
|
-
if (ordered_messages.some((message, index) => message.sequence !== latest_segment_end + index + 1)) {
|
|
398
|
-
throw new Error("Active and draft Session Message sequences must be contiguous");
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
/** 创建 Active、Segment 与锁所需目录。 */
|
|
402
|
-
async ensure_layout() {
|
|
403
|
-
await this.files.ensure_directory(path.dirname(this.active_file_path));
|
|
404
|
-
await this.files.ensure_directory(this.segments_dir_path);
|
|
405
|
-
if (!(await this.files.path_exists(this.active_file_path))) {
|
|
406
|
-
await this.files.write_file_atomically(this.active_file_path, "");
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
/** 使用同目录锁串行化 Active、草稿与 Segment 写入。 */
|
|
410
|
-
async with_write_lock(callback) {
|
|
411
|
-
await this.ensure_layout();
|
|
412
|
-
return await this.files.with_file_lock(this.lock_file_path, callback);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
/** 按全局 Message sequence 升序排序。 */
|
|
416
|
-
function compare_message_sequence(left, right) {
|
|
417
|
-
return left.sequence - right.sequence;
|
|
418
|
-
}
|
|
419
|
-
//# sourceMappingURL=JsonlSessionMessageStore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonlSessionMessageStore.js","sourceRoot":"","sources":["../../../src/session/storage/JsonlSessionMessageStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Session Message Store 工厂。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 跨 package 调用方只依赖 SessionMessageStore contract,不依赖 JSONL 实现类。
|
|
6
|
-
* - 物理格式由 @downcity/agent 内部选择,后续替换实现不会扩散到宿主 Plugin。
|
|
7
|
-
*/
|
|
8
|
-
import type { JsonlSessionMessageStoreOptions } from "../../types/store/LocalStore.js";
|
|
9
|
-
import type { SessionMessageStore } from "../../types/store/SessionDataStore.js";
|
|
10
|
-
/** 创建当前默认的本地 Session Message Store。 */
|
|
11
|
-
export declare function create_session_message_store(options: JsonlSessionMessageStoreOptions): SessionMessageStore;
|
|
12
|
-
//# sourceMappingURL=SessionMessageStoreFactory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionMessageStoreFactory.d.ts","sourceRoot":"","sources":["../../../src/session/storage/SessionMessageStoreFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,uCAAuC;AACvC,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,+BAA+B,GACvC,mBAAmB,CAErB"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Session Message Store 工厂。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - 跨 package 调用方只依赖 SessionMessageStore contract,不依赖 JSONL 实现类。
|
|
6
|
-
* - 物理格式由 @downcity/agent 内部选择,后续替换实现不会扩散到宿主 Plugin。
|
|
7
|
-
*/
|
|
8
|
-
import { JsonlSessionMessageStore } from "../../session/storage/JsonlSessionMessageStore.js";
|
|
9
|
-
/** 创建当前默认的本地 Session Message Store。 */
|
|
10
|
-
export function create_session_message_store(options) {
|
|
11
|
-
return new JsonlSessionMessageStore(options);
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=SessionMessageStoreFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionMessageStoreFactory.js","sourceRoot":"","sources":["../../../src/session/storage/SessionMessageStoreFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAIzF,uCAAuC;AACvC,MAAM,UAAU,4BAA4B,CAC1C,OAAwC;IAExC,OAAO,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Template.d.ts","sourceRoot":"","sources":["../../../src/types/common/Template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../../../src/types/common/Template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session 显式压缩句柄与结果类型。
|
|
3
|
-
*
|
|
4
|
-
* `session.compact()` 返回句柄表示请求已进入有序队列;压缩真正结束后由
|
|
5
|
-
* `finished` 兑现最终结果,调用方不需要从 Action Message 反推完成状态。
|
|
6
|
-
*/
|
|
7
|
-
import type { SessionCompactReason } from "@downcity/type";
|
|
8
|
-
/** 一次显式 Session 压缩的最终结果。 */
|
|
9
|
-
export interface AgentSessionCompactResult {
|
|
10
|
-
/** 当前压缩请求的稳定标识。 */
|
|
11
|
-
compact_id: string;
|
|
12
|
-
/** 压缩请求是否成功完成;没有可压缩内容同样视为成功。 */
|
|
13
|
-
success: boolean;
|
|
14
|
-
/** 是否实际生成并提交了压缩计划。 */
|
|
15
|
-
compacted: boolean;
|
|
16
|
-
/** 当前请求结束的稳定原因。 */
|
|
17
|
-
reason: SessionCompactReason;
|
|
18
|
-
/** 压缩失败时的错误文本。 */
|
|
19
|
-
error?: string;
|
|
20
|
-
}
|
|
21
|
-
/** 一次显式 Session 压缩的等待句柄。 */
|
|
22
|
-
export interface AgentSessionCompactHandle {
|
|
23
|
-
/** 当前句柄绑定的压缩请求标识。 */
|
|
24
|
-
id: string;
|
|
25
|
-
/** 已完成后的最终结果;`finished` 兑现前为 null。 */
|
|
26
|
-
result: AgentSessionCompactResult | null;
|
|
27
|
-
/** 等待压缩 Command 真正完成的 Promise。 */
|
|
28
|
-
finished: Promise<AgentSessionCompactResult>;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=AgentSessionCompact.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSessionCompact.d.ts","sourceRoot":"","sources":["../../../src/types/sdk/AgentSessionCompact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,4BAA4B;AAC5B,MAAM,WAAW,yBAAyB;IACxC,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB;IACnB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4BAA4B;AAC5B,MAAM,WAAW,yBAAyB;IACxC,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,MAAM,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACzC,kCAAkC;IAClC,QAAQ,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAC9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSessionCompact.js","sourceRoot":"","sources":["../../../src/types/sdk/AgentSessionCompact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionAssistantMessageState.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionAssistantMessageState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,oCAAoC;AACpC,MAAM,WAAW,mCAAmC;IAClD,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,KAAK,EAAE,mBAAmB,CAAC;IAC3B,qDAAqD;IACrD,aAAa,EAAE,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,cAAc,EAAE,CACd,OAAO,EAAE,cAAc,EACvB,gBAAgB,CAAC,EAAE,OAAO,KACvB,IAAI,CAAC;IACV,mDAAmD;IACnD,eAAe,EAAE,CACf,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,KACpB,IAAI,CAAC;CACX"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionAssistantMessageState.js","sourceRoot":"","sources":["../../../src/types/session/SessionAssistantMessageState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session Message 物理分段类型。
|
|
3
|
-
*
|
|
4
|
-
* Segment 保存一段连续的原始 Message,并在文件末尾保存覆盖到该段末尾的累计 Summary。
|
|
5
|
-
* Summary 只服务模型上下文,不占用 Session Message sequence。
|
|
6
|
-
*/
|
|
7
|
-
import type { SessionMessage } from "@downcity/type";
|
|
8
|
-
/** 已关闭 Segment 的累计上下文摘要。 */
|
|
9
|
-
export interface SessionSegmentSummary {
|
|
10
|
-
/** 记录类型固定为 summary,用于和原始 Message 行区分。 */
|
|
11
|
-
record_type: "summary";
|
|
12
|
-
/** 当前 Summary 所属 Session 标识。 */
|
|
13
|
-
session_id: string;
|
|
14
|
-
/** 当前 Summary 的稳定唯一标识。 */
|
|
15
|
-
summary_id: string;
|
|
16
|
-
/** 当前 Summary 已覆盖到的最后一条真实 Message sequence。 */
|
|
17
|
-
through_sequence: number;
|
|
18
|
-
/** 供下一轮模型直接使用的累计摘要文本。 */
|
|
19
|
-
text: string;
|
|
20
|
-
/** 当前 Summary 创建时间戳(ms)。 */
|
|
21
|
-
created_at: number;
|
|
22
|
-
}
|
|
23
|
-
/** 已关闭 Segment 的 sequence 范围与文件位置。 */
|
|
24
|
-
export interface SessionSegmentRange {
|
|
25
|
-
/** Segment 内第一条真实 Message sequence。 */
|
|
26
|
-
start_sequence: number;
|
|
27
|
-
/** Segment 内最后一条真实 Message sequence。 */
|
|
28
|
-
end_sequence: number;
|
|
29
|
-
/** Segment JSONL 文件的绝对路径。 */
|
|
30
|
-
file_path: string;
|
|
31
|
-
}
|
|
32
|
-
/** 从一个已关闭 Segment 读取出的完整数据。 */
|
|
33
|
-
export interface SessionSegmentSnapshot {
|
|
34
|
-
/** Segment 的 sequence 范围。 */
|
|
35
|
-
range: SessionSegmentRange;
|
|
36
|
-
/** Segment 中按 sequence 升序排列的原始 Message。 */
|
|
37
|
-
messages: SessionMessage[];
|
|
38
|
-
/** Segment 文件末尾的累计 Summary。 */
|
|
39
|
-
summary: SessionSegmentSummary;
|
|
40
|
-
}
|
|
41
|
-
/** 当前模型上下文所需的最小 Session 快照。 */
|
|
42
|
-
export interface SessionContextSnapshot {
|
|
43
|
-
/** 最新已关闭 Segment 的累计 Summary;从未 Compact 时为空。 */
|
|
44
|
-
summary: SessionSegmentSummary | null;
|
|
45
|
-
/** Active 中上次 Compact 后产生的全部真实 Message。 */
|
|
46
|
-
messages: SessionMessage[];
|
|
47
|
-
}
|
|
48
|
-
/** Session 历史存储统计。 */
|
|
49
|
-
export interface SessionMessageStorageStats {
|
|
50
|
-
/** 当前 Session 已分配的真实 Message 总数。 */
|
|
51
|
-
message_count: number;
|
|
52
|
-
/** Active 与所有 Segment 文件占用的总字节数。 */
|
|
53
|
-
history_bytes: number;
|
|
54
|
-
/** 当前最新真实 Message;空 Session 时为空。 */
|
|
55
|
-
latest_message: SessionMessage | null;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=SessionSegment.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionSegment.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionSegment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,4BAA4B;AAC5B,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,WAAW,EAAE,SAAS,CAAC;IACvB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,2CAA2C;IAC3C,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,+BAA+B;AAC/B,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtC,2CAA2C;IAC3C,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,sBAAsB;AACtB,MAAM,WAAW,0BAA0B;IACzC,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC"}
|