@librechat/agents 3.7.7 → 3.7.9

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.
Files changed (167) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +26 -5
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/common/constants.cjs +12 -0
  4. package/dist/cjs/common/constants.cjs.map +1 -1
  5. package/dist/cjs/graphs/Graph.cjs +56 -11
  6. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  7. package/dist/cjs/graphs/MultiAgentGraph.cjs +1 -1
  8. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  9. package/dist/cjs/hooks/executeHooks.cjs +8 -0
  10. package/dist/cjs/hooks/executeHooks.cjs.map +1 -1
  11. package/dist/cjs/hooks/index.cjs +2 -0
  12. package/dist/cjs/hooks/index.cjs.map +1 -1
  13. package/dist/cjs/hooks/types.cjs +1 -0
  14. package/dist/cjs/hooks/types.cjs.map +1 -1
  15. package/dist/cjs/langfuse.cjs +43 -3
  16. package/dist/cjs/langfuse.cjs.map +1 -1
  17. package/dist/cjs/langfuseTraceShaping.cjs +75 -0
  18. package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
  19. package/dist/cjs/llm/bedrock/toolCache.cjs +1 -1
  20. package/dist/cjs/llm/fake.cjs +9 -5
  21. package/dist/cjs/llm/fake.cjs.map +1 -1
  22. package/dist/cjs/llm/invoke.cjs +3 -7
  23. package/dist/cjs/llm/invoke.cjs.map +1 -1
  24. package/dist/cjs/llm/openrouter/toolCache.cjs +1 -1
  25. package/dist/cjs/llm/prepareProviderRequest.cjs +2 -2
  26. package/dist/cjs/llm/providers.cjs +1 -1
  27. package/dist/cjs/llm/request.cjs +6 -0
  28. package/dist/cjs/llm/request.cjs.map +1 -1
  29. package/dist/cjs/llm/truncation.cjs +1 -0
  30. package/dist/cjs/main.cjs +22 -13
  31. package/dist/cjs/messages/format.cjs +375 -3
  32. package/dist/cjs/messages/format.cjs.map +1 -1
  33. package/dist/cjs/messages/index.cjs +1 -1
  34. package/dist/cjs/messages/prune.cjs +1 -1
  35. package/dist/cjs/run.cjs +217 -52
  36. package/dist/cjs/run.cjs.map +1 -1
  37. package/dist/cjs/session/AgentSession.cjs +1 -1
  38. package/dist/cjs/session/JsonlSessionStore.cjs +1 -1
  39. package/dist/cjs/stream.cjs +1 -1
  40. package/dist/cjs/summarization/index.cjs +1 -0
  41. package/dist/cjs/summarization/index.cjs.map +1 -1
  42. package/dist/cjs/summarization/node.cjs +58 -85
  43. package/dist/cjs/summarization/node.cjs.map +1 -1
  44. package/dist/cjs/summarization/semanticIndex.cjs +366 -0
  45. package/dist/cjs/summarization/semanticIndex.cjs.map +1 -0
  46. package/dist/cjs/summarization/shared.cjs +83 -0
  47. package/dist/cjs/summarization/shared.cjs.map +1 -0
  48. package/dist/cjs/tools/ToolNode.cjs +5 -5
  49. package/dist/cjs/tools/local/CompileCheckTool.cjs +1 -1
  50. package/dist/cjs/tools/local/LocalCodingTools.cjs +1 -1
  51. package/dist/cjs/tools/local/LocalExecutionEngine.cjs +1 -1
  52. package/dist/cjs/tools/runStepResume.cjs +1 -1
  53. package/dist/cjs/tools/runStepResume.cjs.map +1 -1
  54. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +8 -12
  55. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  56. package/dist/cjs/tools/subagent/childGraphConfig.cjs +2 -1
  57. package/dist/cjs/tools/subagent/childGraphConfig.cjs.map +1 -1
  58. package/dist/cjs/utils/index.cjs +1 -1
  59. package/dist/cjs/utils/tokens.cjs +8 -1
  60. package/dist/cjs/utils/tokens.cjs.map +1 -1
  61. package/dist/esm/agents/AgentContext.mjs +26 -5
  62. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  63. package/dist/esm/common/constants.mjs +11 -1
  64. package/dist/esm/common/constants.mjs.map +1 -1
  65. package/dist/esm/graphs/Graph.mjs +56 -11
  66. package/dist/esm/graphs/Graph.mjs.map +1 -1
  67. package/dist/esm/graphs/MultiAgentGraph.mjs +1 -1
  68. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  69. package/dist/esm/hooks/executeHooks.mjs +8 -1
  70. package/dist/esm/hooks/executeHooks.mjs.map +1 -1
  71. package/dist/esm/hooks/index.mjs +2 -1
  72. package/dist/esm/hooks/index.mjs.map +1 -1
  73. package/dist/esm/hooks/types.mjs +1 -0
  74. package/dist/esm/hooks/types.mjs.map +1 -1
  75. package/dist/esm/langfuse.mjs +43 -3
  76. package/dist/esm/langfuse.mjs.map +1 -1
  77. package/dist/esm/langfuseTraceShaping.mjs +75 -0
  78. package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
  79. package/dist/esm/llm/bedrock/toolCache.mjs +1 -1
  80. package/dist/esm/llm/fake.mjs +9 -5
  81. package/dist/esm/llm/fake.mjs.map +1 -1
  82. package/dist/esm/llm/invoke.mjs +3 -7
  83. package/dist/esm/llm/invoke.mjs.map +1 -1
  84. package/dist/esm/llm/openrouter/toolCache.mjs +1 -1
  85. package/dist/esm/llm/prepareProviderRequest.mjs +2 -2
  86. package/dist/esm/llm/providers.mjs +1 -1
  87. package/dist/esm/llm/request.mjs +6 -1
  88. package/dist/esm/llm/request.mjs.map +1 -1
  89. package/dist/esm/llm/truncation.mjs +1 -1
  90. package/dist/esm/main.mjs +15 -14
  91. package/dist/esm/messages/format.mjs +375 -3
  92. package/dist/esm/messages/format.mjs.map +1 -1
  93. package/dist/esm/messages/index.mjs +1 -1
  94. package/dist/esm/messages/prune.mjs +1 -1
  95. package/dist/esm/run.mjs +217 -52
  96. package/dist/esm/run.mjs.map +1 -1
  97. package/dist/esm/session/AgentSession.mjs +1 -1
  98. package/dist/esm/session/JsonlSessionStore.mjs +1 -1
  99. package/dist/esm/stream.mjs +1 -1
  100. package/dist/esm/summarization/index.mjs +1 -0
  101. package/dist/esm/summarization/index.mjs.map +1 -1
  102. package/dist/esm/summarization/node.mjs +57 -84
  103. package/dist/esm/summarization/node.mjs.map +1 -1
  104. package/dist/esm/summarization/semanticIndex.mjs +363 -0
  105. package/dist/esm/summarization/semanticIndex.mjs.map +1 -0
  106. package/dist/esm/summarization/shared.mjs +79 -0
  107. package/dist/esm/summarization/shared.mjs.map +1 -0
  108. package/dist/esm/tools/ToolNode.mjs +5 -5
  109. package/dist/esm/tools/local/CompileCheckTool.mjs +1 -1
  110. package/dist/esm/tools/local/LocalCodingTools.mjs +1 -1
  111. package/dist/esm/tools/local/LocalExecutionEngine.mjs +1 -1
  112. package/dist/esm/tools/runStepResume.mjs +1 -1
  113. package/dist/esm/tools/runStepResume.mjs.map +1 -1
  114. package/dist/esm/tools/subagent/SubagentExecutor.mjs +8 -12
  115. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  116. package/dist/esm/tools/subagent/childGraphConfig.mjs +2 -1
  117. package/dist/esm/tools/subagent/childGraphConfig.mjs.map +1 -1
  118. package/dist/esm/utils/index.mjs +1 -1
  119. package/dist/esm/utils/tokens.mjs +8 -2
  120. package/dist/esm/utils/tokens.mjs.map +1 -1
  121. package/dist/types/agents/AgentContext.d.ts +27 -1
  122. package/dist/types/common/constants.d.ts +17 -0
  123. package/dist/types/graphs/Graph.d.ts +24 -0
  124. package/dist/types/hooks/executeHooks.d.ts +5 -2
  125. package/dist/types/hooks/index.d.ts +7 -2
  126. package/dist/types/hooks/types.d.ts +45 -7
  127. package/dist/types/langfuse.d.ts +3 -1
  128. package/dist/types/llm/fake.d.ts +12 -2
  129. package/dist/types/llm/request.d.ts +10 -0
  130. package/dist/types/messages/format.d.ts +17 -2
  131. package/dist/types/run.d.ts +19 -6
  132. package/dist/types/summarization/index.d.ts +6 -0
  133. package/dist/types/summarization/node.d.ts +0 -4
  134. package/dist/types/summarization/semanticIndex.d.ts +21 -0
  135. package/dist/types/summarization/shared.d.ts +25 -0
  136. package/dist/types/types/graph.d.ts +9 -1
  137. package/dist/types/types/run.d.ts +8 -0
  138. package/dist/types/types/stream.d.ts +6 -0
  139. package/dist/types/types/summarize.d.ts +44 -0
  140. package/dist/types/utils/tokens.d.ts +9 -0
  141. package/package.json +2 -1
  142. package/src/agents/AgentContext.ts +63 -6
  143. package/src/common/constants.ts +19 -0
  144. package/src/graphs/Graph.ts +86 -8
  145. package/src/hooks/HookRegistry.ts +3 -1
  146. package/src/hooks/executeHooks.ts +20 -2
  147. package/src/hooks/index.ts +12 -1
  148. package/src/hooks/types.ts +47 -4
  149. package/src/langfuse.ts +70 -0
  150. package/src/langfuseTraceShaping.ts +94 -0
  151. package/src/llm/fake.ts +35 -4
  152. package/src/llm/invoke.ts +13 -29
  153. package/src/llm/request.ts +24 -0
  154. package/src/messages/format.ts +839 -5
  155. package/src/run.ts +393 -187
  156. package/src/summarization/index.ts +11 -0
  157. package/src/summarization/node.ts +202 -158
  158. package/src/summarization/semanticIndex.ts +662 -0
  159. package/src/summarization/shared.ts +130 -0
  160. package/src/tools/runStepResume.ts +9 -0
  161. package/src/tools/subagent/SubagentExecutor.ts +4 -27
  162. package/src/tools/subagent/childGraphConfig.ts +3 -0
  163. package/src/types/graph.ts +9 -0
  164. package/src/types/run.ts +8 -0
  165. package/src/types/stream.ts +6 -0
  166. package/src/types/summarize.ts +57 -0
  167. package/src/utils/tokens.ts +31 -8
package/dist/esm/main.mjs CHANGED
@@ -1,16 +1,26 @@
1
- import { ACTIVITY_LABEL_RUN_NAME, ACTIVITY_PHASE_LABEL_RUN_NAME, ACTIVITY_PHASE_RUN_NAME, AGENT_MODEL_CALL_RUN_NAME, ANTHROPIC_TOOL_TOKEN_MULTIPLIER, DEFAULT_MAX_SEALS, DEFAULT_RECURSION_LIMIT, DEFAULT_TOOL_TOKEN_MULTIPLIER, MULTI_AGENT_GRAPH_RUN_NAME, PREEMPT_BOUNDARY_HOOK_TIMEOUT_MS, REASONING_LABEL_RUN_NAME, STANDARD_GRAPH_RUN_NAME } from "./common/constants.mjs";
1
+ import { ACTIVITY_LABEL_RUN_NAME, ACTIVITY_PHASE_LABEL_RUN_NAME, ACTIVITY_PHASE_RUN_NAME, AGENT_MODEL_CALL_RUN_NAME, ANTHROPIC_TOOL_TOKEN_MULTIPLIER, COMPACTION_SEMANTIC_INDEX_LIMITS, DEFAULT_MAX_SEALS, DEFAULT_MAX_STOP_CONTINUATIONS, DEFAULT_RECURSION_LIMIT, DEFAULT_TOOL_TOKEN_MULTIPLIER, MULTI_AGENT_GRAPH_RUN_NAME, PREEMPT_BOUNDARY_HOOK_TIMEOUT_MS, REASONING_LABEL_RUN_NAME, STANDARD_GRAPH_RUN_NAME } from "./common/constants.mjs";
2
2
  import { CODE_EXECUTION_TOOLS, Callback, CommonEvents, Constants, ContentTypes, EnvVar, GraphEvents, GraphNodeActions, GraphNodeKeys, LOCAL_CODING_BUNDLE_NAMES, LOCAL_CODING_TOOL_NAMES, Providers, StepTypes, TitleMethod, ToolCallTypes } from "./common/enum.mjs";
3
3
  import "./common/index.mjs";
4
4
  import { composeAbortSignals, isPresent, parseBooleanEnv, unescapeObject } from "./utils/misc.mjs";
5
5
  import { HARD_MAX_TOOL_RESULT_CHARS, HARD_MAX_TOTAL_TOOL_OUTPUT_SIZE, calculateMaxToolResultChars, calculateMaxTotalToolOutputSize, truncateToolInput, truncateToolResultContent } from "./utils/truncation.mjs";
6
6
  import { markTokenCounterCacheCompatible } from "./llm/tokenCounterCacheCompatibility.mjs";
7
- import { IMAGE_TOKEN_SAFETY_MARGIN, TokenEncoderManager, UnsafeTokenMeasurementError, apportionTokenCounts, createTokenCounter, encodingForModel, estimateAnthropicImageTokens, estimateDocumentBlockTokens, estimateImageBlockTokens, estimateOpenAIImageTokens, estimateTimedMediaBlockTokens, extractImageDimensions, getTokenCountForMessage, hasUnsafeStructuredSerialization } from "./utils/tokens.mjs";
7
+ import { IMAGE_TOKEN_SAFETY_MARGIN, TokenEncoderManager, UnsafeTokenMeasurementError, apportionTokenCounts, createTokenCounter, encodingForModel, encodingOfTokenCounter, estimateAnthropicImageTokens, estimateDocumentBlockTokens, estimateImageBlockTokens, estimateOpenAIImageTokens, estimateTimedMediaBlockTokens, extractImageDimensions, getTokenCountForMessage, hasUnsafeStructuredSerialization } from "./utils/tokens.mjs";
8
8
  import { PROVIDER_MESSAGE_PROVENANCE_LIMITS, PROVIDER_MESSAGE_PROVENANCE_VERSION, appendProviderMessageProvenance, getProviderMessageProvenance, getProviderSourceMessageIds, hasBijectiveProviderContentPartMapping, inspectProviderMessageProvenance, inspectProviderSourceMessageIds, setFreshProviderMessageProvenance, setInvalidProviderMessageProvenance, setProviderMessageProvenance, stampSyntheticProviderMessage } from "./messages/provenance.mjs";
9
+ import { registerProvider } from "./llm/providerRegistry.mjs";
10
+ import { constructorChainHasLcName, isAnthropicLike, isGoogleLike, isLibreChatOpenAIModel, isOpenAILike } from "./utils/llm.mjs";
11
+ import { HOOK_EVENTS, TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY } from "./hooks/types.mjs";
12
+ import { HookRegistry } from "./hooks/HookRegistry.mjs";
13
+ import { MAX_CACHE_SIZE, MAX_PATTERN_LENGTH, hasNestedQuantifier, matchesQuery } from "./hooks/matchers.mjs";
14
+ import { DEFAULT_HOOK_TIMEOUT_MS, executeHooks, mergeAggregatedHookResults } from "./hooks/executeHooks.mjs";
15
+ import { createToolPolicyHook } from "./hooks/createToolPolicyHook.mjs";
16
+ import { createWorkspacePolicyHook } from "./hooks/createWorkspacePolicyHook.mjs";
17
+ import { HOOK_INJECTED_MESSAGES_CAPABLE, HOOK_PREEMPT_BOUNDARY_CAPABLE, HOOK_STOP_CONTINUATION_CAPABLE } from "./hooks/index.mjs";
18
+ import { convertInjectedMessages } from "./messages/injected.mjs";
19
+ import { getMaxOutputTokensKey, isThinkingEnabled } from "./llm/request.mjs";
9
20
  import { DEFAULT_PROMPT_CACHE_TTL, addBedrockCacheControl, addBedrockTailCacheControl, addCacheControl, addCacheControlToStablePrefixMessages, addTailCacheControl, buildAnthropicCacheControl, buildBedrockCachePoint, cloneMessage, resolveBedrockPromptCacheTtl, resolvePromptCacheTtl, stripAnthropicCacheControl, stripBedrockCacheControl, supportsBedrockToolCache } from "./messages/cache.mjs";
10
21
  import { OPENAI_RESPONSES_ACTIVE_REASONING_ID_KEY, OPENAI_RESPONSES_REPLAY_POSITIONS_KEY, convertMessagesToContent, dropIncompleteToolStreamContent, findLastIndex, formatAnthropicArtifactContent, formatAnthropicMessage, formatArtifactPayload, getConverseOverrideMessage, modifyDeltaProperties, projectAnthropicArtifactContent, projectArtifactPayload, projectCacheControlledToolOutputsToText, projectComputerCallOutputsToText, projectOpenAIChatToolMessageContent, projectOpenAIResponsesToolMessageContent, projectOpenAIToolMessageContent, projectOpenRouterToolMessageContent, projectSingleTextToolOutputsToText, projectStructuredToolOutputsToText, projectToolStreamContentForProvider } from "./messages/core.mjs";
11
22
  import { getMessageId } from "./messages/ids.mjs";
12
23
  import { DEFAULT_CONTEXT_PRUNING_SETTINGS, resolveContextPruningSettings } from "./messages/contextPruningSettings.mjs";
13
- import { registerProvider } from "./llm/providerRegistry.mjs";
14
24
  import { applyContextPruning } from "./messages/contextPruning.mjs";
15
25
  import { CALIBRATION_RATIO_MAX, CALIBRATION_RATIO_MIN, DEFAULT_RESERVE_RATIO, ORIGINAL_CONTENT_MAX_CHARS, REPLY_PRIMER_TOKENS, calculateMaxToolCallInputChars, calculateTotalTokens, checkValidNumber, clampCalibrationRatio, createPruneMessages, enforceOriginalContentCap, getMessagesWithinTokenLimit, maskConsumedToolResults, preFlightTruncateToolCallInputs, preFlightTruncateToolResults, projectToolCallInputs, projectToolMessagesForProvider, repairOrphanedToolMessages, sanitizeOrphanToolBlocks, serializeToolCallInput } from "./messages/prune.mjs";
16
26
  import { syncBudgetDerivedFields } from "./messages/budget.mjs";
@@ -18,7 +28,6 @@ import { flattenLegacyContent, formatContentStrings, isLegacyConvertible } from
18
28
  import { compactSyntheticProviderContextMessage, ensureThinkingBlockInMessages, foldToolBlocksForToollessAgent, formatAgentMessages, formatFromLangChain, formatLangChainMessages, formatMediaMessage, formatMessage, isSyntheticProviderContextMessage, labelContentByAgent, shiftIndexTokenCountMap, withMessageRole } from "./messages/format.mjs";
19
29
  import { makeIsDeferred, partitionAndMarkAnthropicToolCache } from "./messages/anthropicToolCache.mjs";
20
30
  import { extractToolDiscoveries, hasToolSearchInCurrentTurn } from "./messages/tools.mjs";
21
- import { convertInjectedMessages } from "./messages/injected.mjs";
22
31
  import { coalesceAdjacentUserTurns, strictAlternationProviders } from "./messages/alternation.mjs";
23
32
  import { PREDECESSOR_HANDOFF_CUE, appendPredecessorHandoffCue, removePredecessorHandoffCue } from "./messages/handoffCue.mjs";
24
33
  import { REMOVE_ALL_MESSAGES, createRemoveAllMessage, messagesStateReducer } from "./messages/reducer.mjs";
@@ -27,7 +36,6 @@ import { getAssistantTextPhase, getMessageCreationContentMetadata, splitAssistan
27
36
  import { ProviderMessageProjectionInvariantError, inspectProviderMessageProjection, resolveProviderMessageProjectionInvariantMode } from "./messages/projectionInvariant.mjs";
28
37
  import "./messages/index.mjs";
29
38
  import { joinKeys, resetIfNotEmpty } from "./utils/graph.mjs";
30
- import { constructorChainHasLcName, isAnthropicLike, isGoogleLike, isLibreChatOpenAIModel, isOpenAILike } from "./utils/llm.mjs";
31
39
  import { resolveFetchProxyAgent, shouldBypassProxy } from "./utils/proxy.mjs";
32
40
  import { DEFAULT_MAX_TOOL_CALL_ARG_BYTES, StreamLimitExceededError, resolveStreamLimits } from "./llm/streamLimits.mjs";
33
41
  import { handleServerToolResult, handleToolCallChunks, handleToolCalls, toolResultTypes } from "./tools/handlers.mjs";
@@ -39,13 +47,6 @@ import { RunnableCallable, sleep } from "./utils/run.mjs";
39
47
  import { isZodSchema, toJsonSchema } from "./utils/schema.mjs";
40
48
  import { extractErrorMessage, getContextOverflowInfo, isContextOverflowError, isLikelyContextOverflowError } from "./utils/errors.mjs";
41
49
  import "./utils/index.mjs";
42
- import { HOOK_EVENTS, TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY } from "./hooks/types.mjs";
43
- import { HookRegistry } from "./hooks/HookRegistry.mjs";
44
- import { MAX_CACHE_SIZE, MAX_PATTERN_LENGTH, hasNestedQuantifier, matchesQuery } from "./hooks/matchers.mjs";
45
- import { DEFAULT_HOOK_TIMEOUT_MS, executeHooks } from "./hooks/executeHooks.mjs";
46
- import { createToolPolicyHook } from "./hooks/createToolPolicyHook.mjs";
47
- import { createWorkspacePolicyHook } from "./hooks/createWorkspacePolicyHook.mjs";
48
- import { HOOK_INJECTED_MESSAGES_CAPABLE, HOOK_PREEMPT_BOUNDARY_CAPABLE } from "./hooks/index.mjs";
49
50
  import { buildChildInputs, isGraphSubagentConfig, normalizeSubagentConfigEntries, normalizeSubagentConfigs, resolveSubagentConfigEntries, resolveSubagentConfigs } from "./tools/subagent/childGraphConfig.mjs";
50
51
  import { DEFAULT_SUBAGENT_DESCRIPTION, SubagentExecutor, filterGraphSubagentResult, filterSubagentResult, summarizeEvent } from "./tools/subagent/SubagentExecutor.mjs";
51
52
  import { InMemorySubagentTaskStore } from "./tools/subagent/InMemorySubagentTaskStore.mjs";
@@ -80,8 +81,8 @@ import { isProgrammaticRunnerAutoBound, isProgrammaticRunnerResolvedDirectly, re
80
81
  import "./tools/local/index.mjs";
81
82
  import { ToolNode, createToolErrorOwnership, toolsCondition } from "./tools/ToolNode.mjs";
82
83
  import { SubagentToolDefinition, SubagentToolDescription, SubagentToolName, SubagentToolSchema, buildSubagentToolParams, createSubagentToolDefinition } from "./tools/SubagentTool.mjs";
84
+ import { buildSummarizationInstruction, buildSummaryCarrierText, separateSummarizationParameters } from "./summarization/shared.mjs";
83
85
  import { _resetUnrecognizedTriggerWarnings, shouldTriggerSummarization } from "./summarization/index.mjs";
84
- import { getMaxOutputTokensKey, isThinkingEnabled } from "./llm/request.mjs";
85
86
  import { createSchemaOnlyTool, createSchemaOnlyTools } from "./tools/schema.mjs";
86
87
  import { FakeChatModel, createFakeStreamingLLM } from "./llm/fake.mjs";
87
88
  import { Graph, StandardGraph } from "./graphs/Graph.mjs";
@@ -118,4 +119,4 @@ import "./langchain/index.mjs";
118
119
  import "./provider-registration.mjs";
119
120
  import { DEFAULT_STREAM_DELAY, computeAdaptivePieceSize, resolveStreamDelay, smoothStream } from "./llm/stream/smoother.mjs";
120
121
  import { BaseCheckpointSaver, Command, INTERRUPT, MemorySaver, interrupt, isInterrupted } from "@langchain/langgraph";
121
- export { ACTIVITY_LABEL_RUN_NAME, ACTIVITY_PHASE_LABEL_RUN_NAME, ACTIVITY_PHASE_RUN_NAME, AGENT_MODEL_CALL_RUN_NAME, AIMessage, AIMessageChunk, ANTHROPIC_TOOL_TOKEN_MULTIPLIER, ASK_USER_QUESTION_ID_PATTERN, AgentSession, BASH_SHELL_GUIDANCE, BaseCheckpointSaver, BaseMessage, BaseMessageChunk, BashExecutionToolDefinition, BashExecutionToolDescription, BashExecutionToolName, BashExecutionToolSchema, BashProgrammaticToolCallingDefinition, BashProgrammaticToolCallingDescription, BashProgrammaticToolCallingName, BashProgrammaticToolCallingSchema, BashToolOutputReferencesGuide, CALIBRATION_RATIO_MAX, CALIBRATION_RATIO_MIN, CLOUDFLARE_BASH_CODING_TOOL_NAMES, CLOUDFLARE_CODING_TOOL_NAMES, CODE_API_AUTHORIZATION_ERROR_MESSAGE, CODE_API_EXECUTION_FAILED_ERROR_MESSAGE, CODE_API_EXPECTED_PROFILE_HEADER, CODE_API_INVALID_REQUEST_ERROR_MESSAGE, CODE_API_RATE_LIMITED_ERROR_MESSAGE, CODE_API_UNAVAILABLE_ERROR_MESSAGE, CODE_ARTIFACT_PATH_GUIDANCE, CODE_EXECUTION_TOOLS, Calculator, CalculatorSchema, CalculatorToolDefinition, CalculatorToolDescription, CalculatorToolName, Callback, ChatModelStreamHandler, CloudflareBashExecutionToolDescription, CloudflareCodeExecutionToolDescription, CodeApiRequestError, CodeExecutionToolDefinition, CodeExecutionToolDescription, CodeExecutionToolName, CodeExecutionToolSchema, Command, CommonEvents, CompileCheckToolName, Constants, ContentTypes, DATE_RANGE, DEFAULT_CONTEXT_PRUNING_SETTINGS, DEFAULT_COUNTRY_DESCRIPTION, DEFAULT_HOOK_TIMEOUT_MS, DEFAULT_INTRA_TURN_RETAIN_RATIO, DEFAULT_MAX_SEALS, DEFAULT_MAX_TOOL_CALL_ARG_BYTES, DEFAULT_PROMPT_CACHE_TTL, DEFAULT_QUERY_DESCRIPTION, DEFAULT_RECURSION_LIMIT, DEFAULT_RESERVE_RATIO, DEFAULT_RETAIN_RECENT_TURNS, DEFAULT_STREAM_DELAY, DEFAULT_SUBAGENT_DESCRIPTION, DEFAULT_TOOL_TOKEN_MULTIPLIER, DynamicStructuredTool, EnvVar, EventActorExecutor, FAILED_EXECUTION_FILE_REMINDER, FakeChatModel, Graph, GraphEvents, GraphNodeActions, GraphNodeKeys, HARD_MAX_TOOL_RESULT_CHARS, HARD_MAX_TOTAL_TOOL_OUTPUT_SIZE, HOOK_EVENTS, HOOK_INJECTED_MESSAGES_CAPABLE, HOOK_PREEMPT_BOUNDARY_CAPABLE, HandlerRegistry, HookRegistry, HumanMessage, IMAGE_TOKEN_SAFETY_MARGIN, INTENT_ARG, INTENT_DESCRIPTION, INTENT_LABEL_MARKER, INTENT_PROPERTY, INTERRUPT, InMemorySubagentTaskStore, JsonlSessionStore, LLMStreamHandler, LOCAL_CODING_BUNDLE_NAMES, LOCAL_CODING_TOOL_NAMES, LOCAL_SPAWN_TIMEOUT_MS, LocalBashExecutionToolDescription, LocalCodeExecutionToolDescription, LocalEditFileToolName, LocalEditFileToolSchema, LocalFileCheckpointerImpl, LocalGlobSearchToolName, LocalGlobSearchToolSchema, LocalGrepSearchToolName, LocalGrepSearchToolSchema, LocalListDirectoryToolName, LocalListDirectoryToolSchema, LocalReadFileToolSchema, LocalWriteFileToolName, LocalWriteFileToolSchema, MAX_ASK_USER_QUESTIONS, MAX_CACHE_SIZE, MAX_PATTERN_LENGTH, MULTI_AGENT_GRAPH_RUN_NAME, MemorySaver, ModelEndHandler, MultiAgentGraph, OPENAI_RESPONSES_ACTIVE_REASONING_ID_KEY, OPENAI_RESPONSES_REPLAY_POSITIONS_KEY, ORIGINAL_CONTENT_MAX_CHARS, PREDECESSOR_HANDOFF_CUE, PREEMPT_BOUNDARY_HOOK_TIMEOUT_MS, PROVIDER_MESSAGE_PROVENANCE_LIMITS, PROVIDER_MESSAGE_PROVENANCE_VERSION, ProgrammaticToolCallingDefinition, ProgrammaticToolCallingDescription, ProgrammaticToolCallingName, ProgrammaticToolCallingSchema, PromptTemplate, ProviderMessageProjectionInvariantError, Providers, REASONING_LABEL_RUN_NAME, REMOVE_ALL_MESSAGES, REPLY_PRIMER_TOKENS, ReadFileToolDefinition, ReadFileToolDescription, ReadFileToolName, ReadFileToolSchema, Run, Runnable, RunnableCallable, RunnableLambda, RunnableSequence, SDK_STREAM_DISPATCH, STANDARD_GRAPH_RUN_NAME, STATEFUL_BASH_NOTE, STATEFUL_ENV_NOTE, SessionManager, SkillToolDefinition, SkillToolDescription, SkillToolName, SkillToolSchema, StandardGraph, StatefulBashExecutionToolDescription, StatefulCodeExecutionToolDescription, StepTypes, StreamLimitExceededError, StructuredTool, SubagentExecutor, SubagentToolDefinition, SubagentToolDescription, SubagentToolName, SubagentToolSchema, SystemMessage, TMP_SCRATCH_OUTPUT_REMINDER, TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY, TestChatStreamHandler, TestLLMStreamHandler, TitleMethod, TokenEncoderManager, Tool, ToolCallTypes, ToolEndHandler, ToolMessage, ToolNode, ToolSearchToolDefinition, ToolSearchToolDescription, ToolSearchToolName, ToolSearchToolSchema, UnsafeTokenMeasurementError, WebSearchToolDefinition, WebSearchToolDescription, WebSearchToolName, WebSearchToolSchema, _createBashProgramForTests, _resetLocalEngineWarningsForTests, _resetRipgrepCacheForTests, _resetSyntaxCheckProbeCacheForTests, _resetUnrecognizedTriggerWarnings, addBedrockCacheControl, addBedrockTailCacheControl, addCacheControl, addCacheControlToStablePrefixMessages, addCodeApiExecutionProfileHeader, addTailCacheControl, appendCodeSessionFileSummary, appendFailedExecutionFileReminder, appendPredecessorHandoffCue, appendProviderMessageProvenance, appendTmpScratchReminder, applyContextPruning, applyEdit, applyOutcome, applyPreToolUseHooksForBridge, apportionTokenCounts, askUserQuestion, askUserQuestions, attemptInvoke, bashAstFindingsToErrors, buildAnthropicCacheControl, buildBashExecutionToolDescription, buildBashExecutionToolSchema, buildBedrockCachePoint, buildChildInputs, buildCodeApiEndpoint, buildCodeApiExecutionErrorMessage, buildCodeApiHttpErrorMessage, buildCodeExecutionToolDescription, buildCodeExecutionToolSchema, buildSandboxRuntimeConfig, buildSubagentToolParams, calculateMaxToolCallInputChars, calculateMaxToolResultChars, calculateMaxTotalToolOutputSize, calculateTotalTokens, canSealPreempt, checkValidNumber, clampCalibrationRatio, classifyAttachment, clientExecTimeoutMs, clientFsTimeoutMs, cloneMessage, coalesceAdjacentUserTurns, commandAvailabilityEnvCacheKey, compactSyntheticProviderContextMessage, composeAbortSignals, composeEventHandlers, computeAdaptivePieceSize, constructorChainHasLcName, convertInjectedMessages, convertMessagesToContent, countNestedGroups, countrySchema, createAgentSession, createBashExecutionTool, createBashProgrammaticToolCallingSchema, createBashProgrammaticToolCallingTool, createCloudflareBashExecutionTool, createCloudflareBashProgrammaticToolCallingTool, createCloudflareBridgeRuntime, createCloudflareCodeExecutionTool, createCloudflareCodingToolBundle, createCloudflareCodingTools, createCloudflareExecutionTool, createCloudflareExecutionWorld, createCloudflareLocalExecutionConfig, createCloudflareProgrammaticToolCallingTool, createCloudflareWorkspaceFS, createCodeExecutionTool, createCompileCheckTool, createCompileCheckToolDefinition, createContentAggregator, createEventActorExecutor, createFakeStreamingLLM, createGraph, createHandlers, createLocalBashExecutionTool, createLocalBashProgrammaticToolCallingTool, createLocalCodeExecutionTool, createLocalCodingToolBundle, createLocalCodingToolDefinitions, createLocalCodingToolRegistry, createLocalCodingTools, createLocalEditFileTool, createLocalFileCheckpointer, createLocalGlobSearchTool, createLocalGrepSearchTool, createLocalListDirectoryTool, createLocalProgrammaticToolCallingTool, createLocalReadFileTool, createLocalWriteFileTool, createMetadataAggregator, createProgrammaticToolCallingSchema, createProgrammaticToolCallingTool, createPruneMessages, createRemoveAllMessage, createRunHandlers, createSchemaOnlyTool, createSchemaOnlyTools, createSearchTool, createSubagentToolDefinition, createTokenCounter, createToolErrorOwnership, createToolPolicyHook, createToolSearch, createWorkspacePolicyHook, dateSchema, decodeFile, defaultOmitOptions, deriveMessages, deserializeMessage, dispatchesChatModelStream, dropIncompleteToolStreamContent, emptyOutputMessage, encodeFile, encodingForModel, enforceOriginalContentCap, ensureThinkingBlockInMessages, escapeRegexSpecialChars, estimateAnthropicImageTokens, estimateDocumentBlockTokens, estimateImageBlockTokens, estimateOpenAIImageTokens, estimateTimedMediaBlockTokens, execWithClientTimeout, executeCloudflareBash, executeCloudflareCode, executeHooks, executeLocalBash, executeLocalBashWithArgs, executeLocalCode, executeParallelSearches, executeTools, extractErrorMessage, extractImageDimensions, extractMcpServerName, extractTextFromContent, extractToolDiscoveries, extractUsedBashToolNames, extractUsedToolNames, fetchSessionFiles, filterBashToolsByUsage, filterGraphSubagentResult, filterSubagentResult, filterToolsByUsage, findLastIndex, flattenLegacyContent, foldToolBlocksForToollessAgent, formatAgentMessages, formatAnthropicArtifactContent, formatAnthropicMessage, formatArtifactPayload, formatCloudflareOutput, formatCompletedResponse, formatContentStrings, formatFromLangChain, formatLangChainMessages, formatMediaMessage, formatMessage, formatServerListing, formatSkillCatalog, getAssistantTextPhase, getAvailableMcpServers, getBaseToolName, getBufferString, getChatModelClass, getChunkContent, getCloudflareWorkspaceRoot, getCodeBaseURL, getContextOverflowInfo, getConverseOverrideMessage, getDeferredToolsListing, getExecutionWorld, getLocalCwd, getLocalSessionId, getMaxOutputTokensKey, getMessageCreationContentMetadata, getMessageId, getMessagesWithinTokenLimit, getProviderMessageProvenance, getProviderSourceMessageIds, getReadRoots, getSpawn, getTokenCountForMessage, getWorkspaceFS, getWorkspaceRoots, getWriteRoots, handleServerToolResult, handleToolCallChunks, handleToolCalls, hasBijectiveProviderContentPartMapping, hasNestedQuantifier, hasNestedQuantifiers, hasToolSearchInCurrentTurn, hasUnsafeStructuredSerialization, imageAttachmentContent, imagesSchema, initializeModel, inspectProviderMessageProjection, inspectProviderMessageProvenance, inspectProviderSourceMessageIds, interrupt, isAIMessage, isAnthropicLike, isAskUserQuestionsInterrupt, isBaseMessage, isContextOverflowError, isDangerousPattern, isFromAnyMcpServer, isFromMcpServer, isGoogleLike, isGraphSubagentConfig, isIntentLabelProperty, isInterrupted, isLegacyConvertible, isLibreChatOpenAIModel, isLikelyContextOverflowError, isOpenAILike, isPresent, isProgrammaticRunnerAutoBound, isProgrammaticRunnerResolvedDirectly, isSyntheticProviderContextMessage, isThinkingEnabled, isToolMessage, isZodSchema, joinKeys, labelContentByAgent, locateEdit, makeIsDeferred, makeRequest, mapChatMessagesToStoredMessages, mapStoredMessagesToChatMessages, markTokenCounterCacheCompatible, maskConsumedToolResults, matchesQuery, messagesStateReducer, modifyDeltaProperties, newsSchema, nodeExecutionWorld, normalizeBashToolResultsForReplay, normalizeCodeApiRequestError, normalizeServerFilter, normalizeSubagentConfigEntries, normalizeSubagentConfigs, normalizeToBashIdentifier, normalizeToPythonIdentifier, outcomeFieldsFromResult, parseBooleanEnv, partitionAndMarkAnthropicToolCache, performLocalSearch, preFlightTruncateToolCallInputs, preFlightTruncateToolResults, prepareProviderRequest, probeLocalCommandAvailability, projectAgentContextUsage, projectAnthropicArtifactContent, projectArtifactPayload, projectCacheControlledToolOutputsToText, projectComputerCallOutputsToText, projectOpenAIChatToolMessageContent, projectOpenAIResponsesToolMessageContent, projectOpenAIToolMessageContent, projectOpenRouterToolMessageContent, projectSingleTextToolOutputsToText, projectStructuredToolOutputsToText, projectToolCallInputs, projectToolMessagesForProvider, projectToolStreamContentForProvider, querySchema, readIntent, readOutcomeFields, registerProvider, removePredecessorHandoffCue, repairOrphanedToolMessages, resetIfNotEmpty, resolveBedrockPromptCacheTtl, resolveCloudflareSandbox, resolveCodeApiAuthHeaders, resolveContextPruningSettings, resolveFetchProxyAgent, resolveIntraTurnRetainTokens, resolveLocalExecutionConfig, resolveLocalExecutionTools, resolveLocalImplementationNames, resolveLocalToolRegistry, resolveLocalToolsForBinding, resolvePromptCacheTtl, resolveProviderMessageProjectionInvariantMode, resolveSearchOutcome, resolveStreamDelay, resolveStreamLimits, resolveSubagentConfigEntries, resolveSubagentConfigs, resolveToolOutcome, resolveWorkspacePath, resolveWorkspacePathSafe, runBashAstChecks, runPostEditSyntaxCheck, sanitizeOrphanToolBlocks, sanitizeRegex, selectRuntimeSessionHint, serializeMessage, serializeToolCallInput, setCommandAvailabilityCacheEntry, setFreshProviderMessageProvenance, setInvalidProviderMessageProvenance, setProviderMessageProvenance, shellQuote, shiftIndexTokenCountMap, shouldBypassProxy, shouldTriggerSummarization, sleep, smoothStream, spawnLocalProcess, splitAssistantTextContentByPhase, splitAtRecencyBoundary, stampSyntheticProviderMessage, strictAlternationProviders, stripAnthropicCacheControl, stripBedrockCacheControl, stripCodeSessionFileSummary, stripIntent, summarizeEvent, supportsBedrockToolCache, syncBudgetDerivedFields, toJsonSchema, tool, toolResultTypes, toolsCondition, truncateLocalOutput, truncateToolInput, truncateToolResultContent, tryFallbackProviders, unescapeObject, unwrapToolResponse, validateBashCommand, validateCloudflareBashCommand, videosSchema, withClientTimeout, withIntent, withMessageRole, withoutIntent };
122
+ export { ACTIVITY_LABEL_RUN_NAME, ACTIVITY_PHASE_LABEL_RUN_NAME, ACTIVITY_PHASE_RUN_NAME, AGENT_MODEL_CALL_RUN_NAME, AIMessage, AIMessageChunk, ANTHROPIC_TOOL_TOKEN_MULTIPLIER, ASK_USER_QUESTION_ID_PATTERN, AgentSession, BASH_SHELL_GUIDANCE, BaseCheckpointSaver, BaseMessage, BaseMessageChunk, BashExecutionToolDefinition, BashExecutionToolDescription, BashExecutionToolName, BashExecutionToolSchema, BashProgrammaticToolCallingDefinition, BashProgrammaticToolCallingDescription, BashProgrammaticToolCallingName, BashProgrammaticToolCallingSchema, BashToolOutputReferencesGuide, CALIBRATION_RATIO_MAX, CALIBRATION_RATIO_MIN, CLOUDFLARE_BASH_CODING_TOOL_NAMES, CLOUDFLARE_CODING_TOOL_NAMES, CODE_API_AUTHORIZATION_ERROR_MESSAGE, CODE_API_EXECUTION_FAILED_ERROR_MESSAGE, CODE_API_EXPECTED_PROFILE_HEADER, CODE_API_INVALID_REQUEST_ERROR_MESSAGE, CODE_API_RATE_LIMITED_ERROR_MESSAGE, CODE_API_UNAVAILABLE_ERROR_MESSAGE, CODE_ARTIFACT_PATH_GUIDANCE, CODE_EXECUTION_TOOLS, COMPACTION_SEMANTIC_INDEX_LIMITS, Calculator, CalculatorSchema, CalculatorToolDefinition, CalculatorToolDescription, CalculatorToolName, Callback, ChatModelStreamHandler, CloudflareBashExecutionToolDescription, CloudflareCodeExecutionToolDescription, CodeApiRequestError, CodeExecutionToolDefinition, CodeExecutionToolDescription, CodeExecutionToolName, CodeExecutionToolSchema, Command, CommonEvents, CompileCheckToolName, Constants, ContentTypes, DATE_RANGE, DEFAULT_CONTEXT_PRUNING_SETTINGS, DEFAULT_COUNTRY_DESCRIPTION, DEFAULT_HOOK_TIMEOUT_MS, DEFAULT_INTRA_TURN_RETAIN_RATIO, DEFAULT_MAX_SEALS, DEFAULT_MAX_STOP_CONTINUATIONS, DEFAULT_MAX_TOOL_CALL_ARG_BYTES, DEFAULT_PROMPT_CACHE_TTL, DEFAULT_QUERY_DESCRIPTION, DEFAULT_RECURSION_LIMIT, DEFAULT_RESERVE_RATIO, DEFAULT_RETAIN_RECENT_TURNS, DEFAULT_STREAM_DELAY, DEFAULT_SUBAGENT_DESCRIPTION, DEFAULT_TOOL_TOKEN_MULTIPLIER, DynamicStructuredTool, EnvVar, EventActorExecutor, FAILED_EXECUTION_FILE_REMINDER, FakeChatModel, Graph, GraphEvents, GraphNodeActions, GraphNodeKeys, HARD_MAX_TOOL_RESULT_CHARS, HARD_MAX_TOTAL_TOOL_OUTPUT_SIZE, HOOK_EVENTS, HOOK_INJECTED_MESSAGES_CAPABLE, HOOK_PREEMPT_BOUNDARY_CAPABLE, HOOK_STOP_CONTINUATION_CAPABLE, HandlerRegistry, HookRegistry, HumanMessage, IMAGE_TOKEN_SAFETY_MARGIN, INTENT_ARG, INTENT_DESCRIPTION, INTENT_LABEL_MARKER, INTENT_PROPERTY, INTERRUPT, InMemorySubagentTaskStore, JsonlSessionStore, LLMStreamHandler, LOCAL_CODING_BUNDLE_NAMES, LOCAL_CODING_TOOL_NAMES, LOCAL_SPAWN_TIMEOUT_MS, LocalBashExecutionToolDescription, LocalCodeExecutionToolDescription, LocalEditFileToolName, LocalEditFileToolSchema, LocalFileCheckpointerImpl, LocalGlobSearchToolName, LocalGlobSearchToolSchema, LocalGrepSearchToolName, LocalGrepSearchToolSchema, LocalListDirectoryToolName, LocalListDirectoryToolSchema, LocalReadFileToolSchema, LocalWriteFileToolName, LocalWriteFileToolSchema, MAX_ASK_USER_QUESTIONS, MAX_CACHE_SIZE, MAX_PATTERN_LENGTH, MULTI_AGENT_GRAPH_RUN_NAME, MemorySaver, ModelEndHandler, MultiAgentGraph, OPENAI_RESPONSES_ACTIVE_REASONING_ID_KEY, OPENAI_RESPONSES_REPLAY_POSITIONS_KEY, ORIGINAL_CONTENT_MAX_CHARS, PREDECESSOR_HANDOFF_CUE, PREEMPT_BOUNDARY_HOOK_TIMEOUT_MS, PROVIDER_MESSAGE_PROVENANCE_LIMITS, PROVIDER_MESSAGE_PROVENANCE_VERSION, ProgrammaticToolCallingDefinition, ProgrammaticToolCallingDescription, ProgrammaticToolCallingName, ProgrammaticToolCallingSchema, PromptTemplate, ProviderMessageProjectionInvariantError, Providers, REASONING_LABEL_RUN_NAME, REMOVE_ALL_MESSAGES, REPLY_PRIMER_TOKENS, ReadFileToolDefinition, ReadFileToolDescription, ReadFileToolName, ReadFileToolSchema, Run, Runnable, RunnableCallable, RunnableLambda, RunnableSequence, SDK_STREAM_DISPATCH, STANDARD_GRAPH_RUN_NAME, STATEFUL_BASH_NOTE, STATEFUL_ENV_NOTE, SessionManager, SkillToolDefinition, SkillToolDescription, SkillToolName, SkillToolSchema, StandardGraph, StatefulBashExecutionToolDescription, StatefulCodeExecutionToolDescription, StepTypes, StreamLimitExceededError, StructuredTool, SubagentExecutor, SubagentToolDefinition, SubagentToolDescription, SubagentToolName, SubagentToolSchema, SystemMessage, TMP_SCRATCH_OUTPUT_REMINDER, TOOL_APPROVAL_EXECUTION_SCOPE_CONFIG_KEY, TestChatStreamHandler, TestLLMStreamHandler, TitleMethod, TokenEncoderManager, Tool, ToolCallTypes, ToolEndHandler, ToolMessage, ToolNode, ToolSearchToolDefinition, ToolSearchToolDescription, ToolSearchToolName, ToolSearchToolSchema, UnsafeTokenMeasurementError, WebSearchToolDefinition, WebSearchToolDescription, WebSearchToolName, WebSearchToolSchema, _createBashProgramForTests, _resetLocalEngineWarningsForTests, _resetRipgrepCacheForTests, _resetSyntaxCheckProbeCacheForTests, _resetUnrecognizedTriggerWarnings, addBedrockCacheControl, addBedrockTailCacheControl, addCacheControl, addCacheControlToStablePrefixMessages, addCodeApiExecutionProfileHeader, addTailCacheControl, appendCodeSessionFileSummary, appendFailedExecutionFileReminder, appendPredecessorHandoffCue, appendProviderMessageProvenance, appendTmpScratchReminder, applyContextPruning, applyEdit, applyOutcome, applyPreToolUseHooksForBridge, apportionTokenCounts, askUserQuestion, askUserQuestions, attemptInvoke, bashAstFindingsToErrors, buildAnthropicCacheControl, buildBashExecutionToolDescription, buildBashExecutionToolSchema, buildBedrockCachePoint, buildChildInputs, buildCodeApiEndpoint, buildCodeApiExecutionErrorMessage, buildCodeApiHttpErrorMessage, buildCodeExecutionToolDescription, buildCodeExecutionToolSchema, buildSandboxRuntimeConfig, buildSubagentToolParams, buildSummarizationInstruction, buildSummaryCarrierText, calculateMaxToolCallInputChars, calculateMaxToolResultChars, calculateMaxTotalToolOutputSize, calculateTotalTokens, canSealPreempt, checkValidNumber, clampCalibrationRatio, classifyAttachment, clientExecTimeoutMs, clientFsTimeoutMs, cloneMessage, coalesceAdjacentUserTurns, commandAvailabilityEnvCacheKey, compactSyntheticProviderContextMessage, composeAbortSignals, composeEventHandlers, computeAdaptivePieceSize, constructorChainHasLcName, convertInjectedMessages, convertMessagesToContent, countNestedGroups, countrySchema, createAgentSession, createBashExecutionTool, createBashProgrammaticToolCallingSchema, createBashProgrammaticToolCallingTool, createCloudflareBashExecutionTool, createCloudflareBashProgrammaticToolCallingTool, createCloudflareBridgeRuntime, createCloudflareCodeExecutionTool, createCloudflareCodingToolBundle, createCloudflareCodingTools, createCloudflareExecutionTool, createCloudflareExecutionWorld, createCloudflareLocalExecutionConfig, createCloudflareProgrammaticToolCallingTool, createCloudflareWorkspaceFS, createCodeExecutionTool, createCompileCheckTool, createCompileCheckToolDefinition, createContentAggregator, createEventActorExecutor, createFakeStreamingLLM, createGraph, createHandlers, createLocalBashExecutionTool, createLocalBashProgrammaticToolCallingTool, createLocalCodeExecutionTool, createLocalCodingToolBundle, createLocalCodingToolDefinitions, createLocalCodingToolRegistry, createLocalCodingTools, createLocalEditFileTool, createLocalFileCheckpointer, createLocalGlobSearchTool, createLocalGrepSearchTool, createLocalListDirectoryTool, createLocalProgrammaticToolCallingTool, createLocalReadFileTool, createLocalWriteFileTool, createMetadataAggregator, createProgrammaticToolCallingSchema, createProgrammaticToolCallingTool, createPruneMessages, createRemoveAllMessage, createRunHandlers, createSchemaOnlyTool, createSchemaOnlyTools, createSearchTool, createSubagentToolDefinition, createTokenCounter, createToolErrorOwnership, createToolPolicyHook, createToolSearch, createWorkspacePolicyHook, dateSchema, decodeFile, defaultOmitOptions, deriveMessages, deserializeMessage, dispatchesChatModelStream, dropIncompleteToolStreamContent, emptyOutputMessage, encodeFile, encodingForModel, encodingOfTokenCounter, enforceOriginalContentCap, ensureThinkingBlockInMessages, escapeRegexSpecialChars, estimateAnthropicImageTokens, estimateDocumentBlockTokens, estimateImageBlockTokens, estimateOpenAIImageTokens, estimateTimedMediaBlockTokens, execWithClientTimeout, executeCloudflareBash, executeCloudflareCode, executeHooks, executeLocalBash, executeLocalBashWithArgs, executeLocalCode, executeParallelSearches, executeTools, extractErrorMessage, extractImageDimensions, extractMcpServerName, extractTextFromContent, extractToolDiscoveries, extractUsedBashToolNames, extractUsedToolNames, fetchSessionFiles, filterBashToolsByUsage, filterGraphSubagentResult, filterSubagentResult, filterToolsByUsage, findLastIndex, flattenLegacyContent, foldToolBlocksForToollessAgent, formatAgentMessages, formatAnthropicArtifactContent, formatAnthropicMessage, formatArtifactPayload, formatCloudflareOutput, formatCompletedResponse, formatContentStrings, formatFromLangChain, formatLangChainMessages, formatMediaMessage, formatMessage, formatServerListing, formatSkillCatalog, getAssistantTextPhase, getAvailableMcpServers, getBaseToolName, getBufferString, getChatModelClass, getChunkContent, getCloudflareWorkspaceRoot, getCodeBaseURL, getContextOverflowInfo, getConverseOverrideMessage, getDeferredToolsListing, getExecutionWorld, getLocalCwd, getLocalSessionId, getMaxOutputTokensKey, getMessageCreationContentMetadata, getMessageId, getMessagesWithinTokenLimit, getProviderMessageProvenance, getProviderSourceMessageIds, getReadRoots, getSpawn, getTokenCountForMessage, getWorkspaceFS, getWorkspaceRoots, getWriteRoots, handleServerToolResult, handleToolCallChunks, handleToolCalls, hasBijectiveProviderContentPartMapping, hasNestedQuantifier, hasNestedQuantifiers, hasToolSearchInCurrentTurn, hasUnsafeStructuredSerialization, imageAttachmentContent, imagesSchema, initializeModel, inspectProviderMessageProjection, inspectProviderMessageProvenance, inspectProviderSourceMessageIds, interrupt, isAIMessage, isAnthropicLike, isAskUserQuestionsInterrupt, isBaseMessage, isContextOverflowError, isDangerousPattern, isFromAnyMcpServer, isFromMcpServer, isGoogleLike, isGraphSubagentConfig, isIntentLabelProperty, isInterrupted, isLegacyConvertible, isLibreChatOpenAIModel, isLikelyContextOverflowError, isOpenAILike, isPresent, isProgrammaticRunnerAutoBound, isProgrammaticRunnerResolvedDirectly, isSyntheticProviderContextMessage, isThinkingEnabled, isToolMessage, isZodSchema, joinKeys, labelContentByAgent, locateEdit, makeIsDeferred, makeRequest, mapChatMessagesToStoredMessages, mapStoredMessagesToChatMessages, markTokenCounterCacheCompatible, maskConsumedToolResults, matchesQuery, mergeAggregatedHookResults, messagesStateReducer, modifyDeltaProperties, newsSchema, nodeExecutionWorld, normalizeBashToolResultsForReplay, normalizeCodeApiRequestError, normalizeServerFilter, normalizeSubagentConfigEntries, normalizeSubagentConfigs, normalizeToBashIdentifier, normalizeToPythonIdentifier, outcomeFieldsFromResult, parseBooleanEnv, partitionAndMarkAnthropicToolCache, performLocalSearch, preFlightTruncateToolCallInputs, preFlightTruncateToolResults, prepareProviderRequest, probeLocalCommandAvailability, projectAgentContextUsage, projectAnthropicArtifactContent, projectArtifactPayload, projectCacheControlledToolOutputsToText, projectComputerCallOutputsToText, projectOpenAIChatToolMessageContent, projectOpenAIResponsesToolMessageContent, projectOpenAIToolMessageContent, projectOpenRouterToolMessageContent, projectSingleTextToolOutputsToText, projectStructuredToolOutputsToText, projectToolCallInputs, projectToolMessagesForProvider, projectToolStreamContentForProvider, querySchema, readIntent, readOutcomeFields, registerProvider, removePredecessorHandoffCue, repairOrphanedToolMessages, resetIfNotEmpty, resolveBedrockPromptCacheTtl, resolveCloudflareSandbox, resolveCodeApiAuthHeaders, resolveContextPruningSettings, resolveFetchProxyAgent, resolveIntraTurnRetainTokens, resolveLocalExecutionConfig, resolveLocalExecutionTools, resolveLocalImplementationNames, resolveLocalToolRegistry, resolveLocalToolsForBinding, resolvePromptCacheTtl, resolveProviderMessageProjectionInvariantMode, resolveSearchOutcome, resolveStreamDelay, resolveStreamLimits, resolveSubagentConfigEntries, resolveSubagentConfigs, resolveToolOutcome, resolveWorkspacePath, resolveWorkspacePathSafe, runBashAstChecks, runPostEditSyntaxCheck, sanitizeOrphanToolBlocks, sanitizeRegex, selectRuntimeSessionHint, separateSummarizationParameters, serializeMessage, serializeToolCallInput, setCommandAvailabilityCacheEntry, setFreshProviderMessageProvenance, setInvalidProviderMessageProvenance, setProviderMessageProvenance, shellQuote, shiftIndexTokenCountMap, shouldBypassProxy, shouldTriggerSummarization, sleep, smoothStream, spawnLocalProcess, splitAssistantTextContentByPhase, splitAtRecencyBoundary, stampSyntheticProviderMessage, strictAlternationProviders, stripAnthropicCacheControl, stripBedrockCacheControl, stripCodeSessionFileSummary, stripIntent, summarizeEvent, supportsBedrockToolCache, syncBudgetDerivedFields, toJsonSchema, tool, toolResultTypes, toolsCondition, truncateLocalOutput, truncateToolInput, truncateToolResultContent, tryFallbackProviders, unescapeObject, unwrapToolResponse, validateBashCommand, validateCloudflareBashCommand, videosSchema, withClientTimeout, withIntent, withMessageRole, withoutIntent };
@@ -1,3 +1,4 @@
1
+ import { COMPACTION_SEMANTIC_INDEX_LIMITS } from "../common/constants.mjs";
1
2
  import "../common/enum.mjs";
2
3
  import "../common/index.mjs";
3
4
  import { HARD_MAX_TOOL_RESULT_CHARS } from "../utils/truncation.mjs";
@@ -5,6 +6,7 @@ import { compactToolContent, getToolContentCharLength, isAtomicToolContentBlock,
5
6
  import { hasBijectiveProviderContentPartMapping, inspectProviderMessageProvenance, inspectProviderSourceMessageIds, setFreshProviderMessageProvenance, setInvalidProviderMessageProvenance, setProviderMessageProvenance } from "./provenance.mjs";
6
7
  import { toLangChainContent, toLangChainMessageFields } from "./langchain.mjs";
7
8
  import { appendProviderToolCallDescriptor, consumeProviderToolResultPair, getBoundedProviderPairingArrayProperty, getProviderToolCallPartDescriptor, getProviderToolResultPartDescriptor, hasStructurallyValidAnthropicWebSearchResultContent } from "./toolResultTypes.mjs";
9
+ import { getCompactionSemanticIndexProvidedEntryCount, setCompactionSemanticIndexProvidedEntryCount, snapshotCompactionSemanticIndex } from "../summarization/semanticIndex.mjs";
8
10
  import { normalizeAnthropicToolCallId } from "../llm/anthropic/utils/message_inputs.mjs";
9
11
  import { flattenLegacyContent, isLegacyConvertible } from "./content.mjs";
10
12
  import { emitAgentLog } from "../utils/events.mjs";
@@ -140,6 +142,356 @@ function getToolUseId(part) {
140
142
  if (!("tool_use_id" in part) || typeof part.tool_use_id !== "string") return;
141
143
  return part.tool_use_id;
142
144
  }
145
+ const DERIVED_SEMANTIC_HEAD_LIMIT = COMPACTION_SEMANTIC_INDEX_LIMITS.maxInputEntries / 4;
146
+ const DERIVED_SEMANTIC_TAIL_LIMIT = COMPACTION_SEMANTIC_INDEX_LIMITS.maxInputEntries / 2;
147
+ const DERIVED_SEMANTIC_TYPE_EDGE_LIMIT = COMPACTION_SEMANTIC_INDEX_LIMITS.maxInputEntries / 32;
148
+ const DERIVED_SEMANTIC_TYPE_HASH = Object.freeze({
149
+ tool_intent: 1,
150
+ tool_outcome: 2,
151
+ activity_phase: 3,
152
+ reasoning_label: 4
153
+ });
154
+ function createDerivedCompactionSemanticIndexCollector(baseSnapshot) {
155
+ const collector = {
156
+ entries: [],
157
+ entryCount: 0,
158
+ baseEntryCount: 0,
159
+ omittedBaseEntryCount: 0
160
+ };
161
+ let baseEntries;
162
+ let serializedProvidedEntryCount;
163
+ try {
164
+ baseEntries = baseSnapshot?.entries;
165
+ serializedProvidedEntryCount = baseSnapshot?.providedEntryCount;
166
+ } catch {
167
+ return collector;
168
+ }
169
+ const snapshot = snapshotCompactionSemanticIndex(baseEntries);
170
+ if (snapshot == null) return collector;
171
+ const snapshotProvidedEntryCount = getCompactionSemanticIndexProvidedEntryCount(snapshot);
172
+ collector.omittedBaseEntryCount = Math.max(0, (typeof serializedProvidedEntryCount === "number" && Number.isSafeInteger(serializedProvidedEntryCount) && serializedProvidedEntryCount >= snapshotProvidedEntryCount && serializedProvidedEntryCount != null ? serializedProvidedEntryCount : snapshotProvidedEntryCount) - snapshot.length);
173
+ for (let index = 0; index < snapshot.length; index++) appendDerivedCompactionSemanticEntry(collector, snapshot[index], true);
174
+ collector.baseEntryCount = collector.entryCount;
175
+ return collector;
176
+ }
177
+ function createCompactionSemanticCoverageState() {
178
+ return {
179
+ head: [],
180
+ tail: {
181
+ entries: [],
182
+ cursor: 0
183
+ },
184
+ latestByIdentityHash: /* @__PURE__ */ new Map(),
185
+ typeCoverage: /* @__PURE__ */ new Map()
186
+ };
187
+ }
188
+ function getDerivedCompactionSemanticLocalId(entry) {
189
+ if (entry.type === "reasoning_label") return entry.reasoningStepId.trim();
190
+ if (entry.type !== "activity_phase") return entry.toolCallId.trim();
191
+ return "";
192
+ }
193
+ function hashDerivedCompactionSemanticIdentityString(initialHash, value) {
194
+ let hash = initialHash;
195
+ for (let index = 0; index < value.length; index++) {
196
+ hash ^= value.charCodeAt(index);
197
+ hash = Math.imul(hash, 16777619);
198
+ }
199
+ return hash;
200
+ }
201
+ function hashDerivedCompactionSemanticIdentity(entry) {
202
+ let hash = 2166136261 ^ DERIVED_SEMANTIC_TYPE_HASH[entry.type];
203
+ hash = Math.imul(hash, 16777619);
204
+ hash = hashDerivedCompactionSemanticIdentityString(hash, entry.sourceMessageId.trim());
205
+ hash ^= entry.sourceContentIndex;
206
+ hash = Math.imul(hash, 16777619);
207
+ hash = hashDerivedCompactionSemanticIdentityString(hash, getDerivedCompactionSemanticLocalId(entry));
208
+ return hash >>> 0;
209
+ }
210
+ function entriesShareDerivedCompactionSemanticIdentity(left, right) {
211
+ return left.type === right.type && left.sourceMessageId.trim() === right.sourceMessageId.trim() && left.sourceContentIndex === right.sourceContentIndex && getDerivedCompactionSemanticLocalId(left) === getDerivedCompactionSemanticLocalId(right);
212
+ }
213
+ function entriesHaveConflictingSemanticState(left, right) {
214
+ return left.status !== right.status || left.redacted === true !== (right.redacted === true) || left.text.replace(/\s+/g, " ").trim() !== right.text.replace(/\s+/g, " ").trim();
215
+ }
216
+ function findCompactionSemanticRevisionFloor(collector, entry, identityHash) {
217
+ return collector.baseRevisionFloors?.get(identityHash)?.find((floor) => entriesShareDerivedCompactionSemanticIdentity(floor.entry, entry));
218
+ }
219
+ function seedCompactionSemanticRevisionFloor(collector, entry, order) {
220
+ collector.baseRevisionFloors ??= /* @__PURE__ */ new Map();
221
+ const identityHash = hashDerivedCompactionSemanticIdentity(entry);
222
+ const existing = findCompactionSemanticRevisionFloor(collector, entry, identityHash);
223
+ if (existing != null) {
224
+ if (entry.revision > existing.entry.revision) {
225
+ existing.entry = entry;
226
+ existing.order = order;
227
+ }
228
+ return;
229
+ }
230
+ const floor = {
231
+ entry,
232
+ order
233
+ };
234
+ const bucket = collector.baseRevisionFloors.get(identityHash);
235
+ if (bucket == null) {
236
+ collector.baseRevisionFloors.set(identityHash, [floor]);
237
+ return;
238
+ }
239
+ bucket.push(floor);
240
+ }
241
+ function updateCompactionSemanticRevisionFloor(collector, orderedEntry) {
242
+ const floor = findCompactionSemanticRevisionFloor(collector, orderedEntry.entry, orderedEntry.identityHash);
243
+ if (floor == null || orderedEntry.entry.revision <= floor.entry.revision) return;
244
+ floor.entry = orderedEntry.entry;
245
+ floor.order = orderedEntry.order;
246
+ }
247
+ function shouldRejectCompactionSemanticEntryBelowBaseFloor(collector, orderedEntry) {
248
+ const floor = findCompactionSemanticRevisionFloor(collector, orderedEntry.entry, orderedEntry.identityHash);
249
+ if (floor == null || orderedEntry.order === floor.order) return false;
250
+ if ((collector.coverage?.latestByIdentityHash.get(orderedEntry.identityHash))?.find(({ entry }) => entriesShareDerivedCompactionSemanticIdentity(entry, orderedEntry.entry)) != null) return false;
251
+ return orderedEntry.entry.revision <= floor.entry.revision;
252
+ }
253
+ function retainCompactionSemanticEntry(entry) {
254
+ entry.retentionCount++;
255
+ }
256
+ function releaseCompactionSemanticEntry(coverage, entry) {
257
+ entry.retentionCount--;
258
+ if (entry.retentionCount === 0 && coverage.latestByIdentityHash.has(entry.identityHash)) {
259
+ const bucket = coverage.latestByIdentityHash.get(entry.identityHash);
260
+ if (bucket == null) return;
261
+ const entryIndex = bucket.indexOf(entry);
262
+ if (entryIndex >= 0) bucket.splice(entryIndex, 1);
263
+ if (bucket.length === 0) coverage.latestByIdentityHash.delete(entry.identityHash);
264
+ }
265
+ }
266
+ function appendCompactionSemanticEntryRing(coverage, ring, entry, limit) {
267
+ if (ring.entries.length < limit) {
268
+ ring.entries.push(entry);
269
+ retainCompactionSemanticEntry(entry);
270
+ return;
271
+ }
272
+ releaseCompactionSemanticEntry(coverage, ring.entries[ring.cursor]);
273
+ ring.entries[ring.cursor] = entry;
274
+ retainCompactionSemanticEntry(entry);
275
+ ring.cursor = (ring.cursor + 1) % limit;
276
+ }
277
+ function renewCompactionSemanticEntryRing(coverage, ring, entry, limit) {
278
+ const existingIndex = ring.entries.indexOf(entry);
279
+ if (existingIndex < 0) {
280
+ appendCompactionSemanticEntryRing(coverage, ring, entry, limit);
281
+ return;
282
+ }
283
+ if (ring.entries.length < limit) {
284
+ ring.entries.splice(existingIndex, 1);
285
+ ring.entries.push(entry);
286
+ return;
287
+ }
288
+ const newestIndex = (ring.cursor + ring.entries.length - 1) % ring.entries.length;
289
+ let currentIndex = existingIndex;
290
+ for (let offset = 0; currentIndex !== newestIndex && offset < ring.entries.length; offset++) {
291
+ const nextIndex = (currentIndex + 1) % ring.entries.length;
292
+ ring.entries[currentIndex] = ring.entries[nextIndex];
293
+ currentIndex = nextIndex;
294
+ }
295
+ ring.entries[newestIndex] = entry;
296
+ }
297
+ function renewCoverageBalancedCompactionSemanticEntry(coverage, entry) {
298
+ renewCompactionSemanticEntryRing(coverage, coverage.tail, entry, DERIVED_SEMANTIC_TAIL_LIMIT);
299
+ const typeCoverage = coverage.typeCoverage.get(entry.entry.type);
300
+ if (typeCoverage == null) return;
301
+ renewCompactionSemanticEntryRing(coverage, typeCoverage.tail, entry, DERIVED_SEMANTIC_TYPE_EDGE_LIMIT);
302
+ }
303
+ function appendDerivedCompactionSemanticEntry(collector, entry, baseEntry = false) {
304
+ let boundedEntry = entry;
305
+ if (entry.status === "pending") boundedEntry = {
306
+ ...entry,
307
+ text: ""
308
+ };
309
+ else if (entry.text.length > COMPACTION_SEMANTIC_INDEX_LIMITS.maxInputTextChars) boundedEntry = {
310
+ ...entry,
311
+ text: "",
312
+ redacted: true
313
+ };
314
+ const order = collector.entryCount;
315
+ collector.entryCount++;
316
+ if (collector.coverage == null && collector.entries.length < COMPACTION_SEMANTIC_INDEX_LIMITS.maxInputEntries) {
317
+ collector.entries.push(boundedEntry);
318
+ if (!baseEntry && collector.baseRevisionFloors != null) updateCompactionSemanticRevisionFloor(collector, {
319
+ entry: boundedEntry,
320
+ identityHash: hashDerivedCompactionSemanticIdentity(boundedEntry),
321
+ order,
322
+ retentionCount: 0
323
+ });
324
+ return;
325
+ }
326
+ const orderedEntry = {
327
+ entry: boundedEntry,
328
+ identityHash: hashDerivedCompactionSemanticIdentity(boundedEntry),
329
+ order,
330
+ retentionCount: 0
331
+ };
332
+ if (collector.coverage == null) {
333
+ for (let order = 0; order < collector.baseEntryCount; order++) seedCompactionSemanticRevisionFloor(collector, collector.entries[order], order);
334
+ collector.coverage = createCompactionSemanticCoverageState();
335
+ for (let order = 0; order < collector.entries.length; order++) {
336
+ const bufferedEntry = {
337
+ entry: collector.entries[order],
338
+ identityHash: hashDerivedCompactionSemanticIdentity(collector.entries[order]),
339
+ order,
340
+ retentionCount: 0
341
+ };
342
+ if (shouldRejectCompactionSemanticEntryBelowBaseFloor(collector, bufferedEntry)) continue;
343
+ appendCoverageBalancedCompactionSemanticEntry(collector.coverage, bufferedEntry);
344
+ if (order >= collector.baseEntryCount) updateCompactionSemanticRevisionFloor(collector, bufferedEntry);
345
+ }
346
+ collector.entries = [];
347
+ }
348
+ if (!baseEntry && shouldRejectCompactionSemanticEntryBelowBaseFloor(collector, orderedEntry)) return;
349
+ appendCoverageBalancedCompactionSemanticEntry(collector.coverage, orderedEntry);
350
+ if (!baseEntry) updateCompactionSemanticRevisionFloor(collector, orderedEntry);
351
+ }
352
+ function appendCoverageBalancedCompactionSemanticEntry(coverage, orderedEntry) {
353
+ const identityHash = orderedEntry.identityHash;
354
+ const identityBucket = coverage.latestByIdentityHash.get(identityHash);
355
+ const current = identityBucket?.find(({ entry }) => entriesShareDerivedCompactionSemanticIdentity(entry, orderedEntry.entry));
356
+ if (current != null) {
357
+ if (orderedEntry.entry.revision < current.entry.revision) return;
358
+ if (orderedEntry.entry.revision === current.entry.revision) {
359
+ if (entriesHaveConflictingSemanticState(current.entry, orderedEntry.entry)) {
360
+ current.entry = {
361
+ ...current.entry,
362
+ text: "",
363
+ redacted: true
364
+ };
365
+ current.order = orderedEntry.order;
366
+ renewCoverageBalancedCompactionSemanticEntry(coverage, current);
367
+ }
368
+ return;
369
+ }
370
+ current.entry = orderedEntry.entry;
371
+ current.order = orderedEntry.order;
372
+ renewCoverageBalancedCompactionSemanticEntry(coverage, current);
373
+ return;
374
+ }
375
+ if (identityBucket == null) coverage.latestByIdentityHash.set(identityHash, [orderedEntry]);
376
+ else identityBucket.push(orderedEntry);
377
+ if (coverage.head.length < DERIVED_SEMANTIC_HEAD_LIMIT) {
378
+ coverage.head.push(orderedEntry);
379
+ retainCompactionSemanticEntry(orderedEntry);
380
+ }
381
+ appendCompactionSemanticEntryRing(coverage, coverage.tail, orderedEntry, DERIVED_SEMANTIC_TAIL_LIMIT);
382
+ let typeCoverage = coverage.typeCoverage.get(orderedEntry.entry.type);
383
+ if (typeCoverage == null) {
384
+ typeCoverage = {
385
+ head: [],
386
+ tail: {
387
+ entries: [],
388
+ cursor: 0
389
+ }
390
+ };
391
+ coverage.typeCoverage.set(orderedEntry.entry.type, typeCoverage);
392
+ }
393
+ if (typeCoverage.head.length < DERIVED_SEMANTIC_TYPE_EDGE_LIMIT) {
394
+ typeCoverage.head.push(orderedEntry);
395
+ retainCompactionSemanticEntry(orderedEntry);
396
+ }
397
+ appendCompactionSemanticEntryRing(coverage, typeCoverage.tail, orderedEntry, DERIVED_SEMANTIC_TYPE_EDGE_LIMIT);
398
+ }
399
+ function finalizeDerivedCompactionSemanticIndexSnapshot(collector) {
400
+ if (collector == null || collector.entryCount === 0 && collector.omittedBaseEntryCount === 0) return;
401
+ const providedEntryCount = Math.min(Number.MAX_SAFE_INTEGER, collector.entryCount + collector.omittedBaseEntryCount);
402
+ if (collector.coverage == null) {
403
+ setCompactionSemanticIndexProvidedEntryCount(collector.entries, providedEntryCount);
404
+ return {
405
+ entries: collector.entries,
406
+ providedEntryCount
407
+ };
408
+ }
409
+ const retained = /* @__PURE__ */ new Map();
410
+ const retain = (entries) => {
411
+ for (const { entry, order } of entries) retained.set(order, entry);
412
+ };
413
+ retain(collector.coverage.head);
414
+ retain(collector.coverage.tail.entries);
415
+ for (const typeCoverage of collector.coverage.typeCoverage.values()) {
416
+ retain(typeCoverage.head);
417
+ retain(typeCoverage.tail.entries);
418
+ }
419
+ const result = [...retained.entries()].sort(([left], [right]) => left - right).map(([, entry]) => entry);
420
+ setCompactionSemanticIndexProvidedEntryCount(result, providedEntryCount);
421
+ return {
422
+ entries: result,
423
+ providedEntryCount
424
+ };
425
+ }
426
+ function collectCompactionSemanticEntriesFromPart(collector, part, sourceMessageId, sourceContentIndex, retainedSourceContentStart, retainedSourceContentEnd, intentToolNames, parsedToolInput) {
427
+ if (sourceMessageId.length > COMPACTION_SEMANTIC_INDEX_LIMITS.maxIdentityChars) return;
428
+ if (part.type === "tool_call") {
429
+ if (sourceContentIndex < 0 || sourceContentIndex > COMPACTION_SEMANTIC_INDEX_LIMITS.maxSourceContentIndex) return;
430
+ const toolCall = part.tool_call;
431
+ const toolCallId = toolCall?.id;
432
+ if (typeof toolCallId !== "string" || toolCallId === "" || toolCallId.length > COMPACTION_SEMANTIC_INDEX_LIMITS.maxIdentityChars) return;
433
+ if (typeof toolCall.name === "string" && intentToolNames?.has(toolCall.name) === true) {
434
+ const intent = parsedToolInput != null && typeof parsedToolInput === "object" && !Array.isArray(parsedToolInput) ? parsedToolInput.intent : void 0;
435
+ if (typeof intent === "string" && intent !== "") appendDerivedCompactionSemanticEntry(collector, {
436
+ type: "tool_intent",
437
+ sourceMessageId,
438
+ sourceContentIndex,
439
+ revision: 0,
440
+ status: "committed",
441
+ text: intent,
442
+ toolCallId
443
+ });
444
+ }
445
+ if (typeof toolCall.outcome === "string" && toolCall.outcome !== "") appendDerivedCompactionSemanticEntry(collector, {
446
+ type: "tool_outcome",
447
+ sourceMessageId,
448
+ sourceContentIndex,
449
+ revision: 0,
450
+ status: "committed",
451
+ text: toolCall.outcome,
452
+ toolCallId
453
+ });
454
+ return;
455
+ }
456
+ if (part.type === "think") {
457
+ if (sourceContentIndex < 0 || sourceContentIndex > COMPACTION_SEMANTIC_INDEX_LIMITS.maxSourceContentIndex) return;
458
+ const reasoningStepId = part.reasoning_label_step_id;
459
+ const revision = part.reasoning_label_revision;
460
+ const status = part.reasoning_label_status;
461
+ const text = part.reasoning_label;
462
+ if (typeof reasoningStepId !== "string" || reasoningStepId === "" || reasoningStepId.length > COMPACTION_SEMANTIC_INDEX_LIMITS.maxIdentityChars || typeof revision !== "number" || !Number.isSafeInteger(revision) || revision < 0) return;
463
+ const malformedState = status !== "complete" && status !== "streaming" || typeof text !== "string";
464
+ appendDerivedCompactionSemanticEntry(collector, {
465
+ type: "reasoning_label",
466
+ sourceMessageId,
467
+ sourceContentIndex,
468
+ revision,
469
+ status: status === "streaming" || malformedState ? "pending" : "committed",
470
+ text: typeof text === "string" ? text : "",
471
+ reasoningStepId,
472
+ ...malformedState ? { redacted: true } : {}
473
+ });
474
+ return;
475
+ }
476
+ if (part.type !== "activity_label" || part.activity_label_type !== "phase") return;
477
+ const activitySourceContentIndex = part.activity_start_index;
478
+ if (typeof activitySourceContentIndex !== "number" || !Number.isSafeInteger(activitySourceContentIndex) || activitySourceContentIndex < retainedSourceContentStart || activitySourceContentIndex >= retainedSourceContentEnd || activitySourceContentIndex > COMPACTION_SEMANTIC_INDEX_LIMITS.maxSourceContentIndex) return;
479
+ const revision = part.activity_label_revision;
480
+ if (revision !== void 0 && (typeof revision !== "number" || !Number.isSafeInteger(revision) || revision < 0)) return;
481
+ const malformedPending = part.pending !== void 0 && typeof part.pending !== "boolean";
482
+ const malformedText = typeof part.activity_label !== "string";
483
+ const malformedState = malformedPending || malformedText;
484
+ const text = typeof part.activity_label === "string" ? part.activity_label : "";
485
+ appendDerivedCompactionSemanticEntry(collector, {
486
+ type: "activity_phase",
487
+ sourceMessageId,
488
+ sourceContentIndex: activitySourceContentIndex,
489
+ revision: revision ?? 0,
490
+ status: part.pending === true || malformedPending ? "pending" : "committed",
491
+ text,
492
+ ...malformedState ? { redacted: true } : {}
493
+ });
494
+ }
143
495
  function collectTrustedToolResultSourceContentPartIndices(content, sourceContentPartOffset) {
144
496
  if (content == null) return;
145
497
  let calls;
@@ -295,6 +647,10 @@ function formatAssistantMessage(message, options) {
295
647
  const emittedServerToolUseIds = /* @__PURE__ */ new Set();
296
648
  const pendingServerToolUses = /* @__PURE__ */ new Map();
297
649
  const shouldPreserveReasoningContent = options?.preserveReasoningContent === true;
650
+ const compactionSemanticIndex = options?.compactionSemanticIndex;
651
+ const semanticSourceMessageId = compactionSemanticIndex != null && options?.sourceMessageId != null && options.sourceMessageId.length <= COMPACTION_SEMANTIC_INDEX_LIMITS.maxIdentityChars ? options.sourceMessageId : void 0;
652
+ const retainedSourceContentStart = options?.sourceContentPartOffset ?? 0;
653
+ const retainedSourceContentEnd = options?.retainedSourceContentEnd ?? retainedSourceContentStart;
298
654
  const serverToolResultIds = /* @__PURE__ */ new Set();
299
655
  const preferredToolCallParts = /* @__PURE__ */ new Map();
300
656
  const takePendingReasoningContent = () => {
@@ -353,6 +709,7 @@ function formatAssistantMessage(message, options) {
353
709
  for (let partIndex = 0; partIndex < contentParts.length; partIndex++) {
354
710
  const part = contentParts[partIndex];
355
711
  if (part == null) continue;
712
+ if (part.type === "activity_label") continue;
356
713
  const isTrustedResult = isTrustedServerToolResult(part, getSourcePartIndices(partIndex), options?.toolSourceContentPartIndices);
357
714
  if (isTrustedResult) {
358
715
  trustedServerToolResultPartIndices ??= /* @__PURE__ */ new Set();
@@ -374,6 +731,10 @@ function formatAssistantMessage(message, options) {
374
731
  const part = contentParts[partIndex];
375
732
  if (part == null) continue;
376
733
  const sourcePartIndices = getSourcePartIndices(partIndex);
734
+ if (part.type === "activity_label") {
735
+ if (compactionSemanticIndex != null && semanticSourceMessageId != null && typeof sourcePartIndices === "number") collectCompactionSemanticEntriesFromPart(compactionSemanticIndex, part, semanticSourceMessageId, sourcePartIndices, retainedSourceContentStart, retainedSourceContentEnd, options?.intentToolNames);
736
+ continue;
737
+ }
377
738
  const toolUseId = getToolUseId(part);
378
739
  if (toolUseId != null) {
379
740
  const isServerToolResult = trustedServerToolResultPartIndices?.has(partIndex) === true;
@@ -418,12 +779,14 @@ function formatAssistantMessage(message, options) {
418
779
  if (options?.provider === "anthropic" && typeof _tool_call.id === "string" && _tool_call.id.startsWith("srvtoolu_")) {
419
780
  if (!serverToolResultIds.has(_tool_call.id) && options.preserveUnpairedServerToolUses !== true) continue;
420
781
  if (emittedServerToolUseIds.has(_tool_call.id) || pendingServerToolUses.has(_tool_call.id)) continue;
782
+ const serverToolInput = parseServerToolInput(_args);
783
+ if (compactionSemanticIndex != null && semanticSourceMessageId != null && typeof sourcePartIndices === "number") collectCompactionSemanticEntriesFromPart(compactionSemanticIndex, part, semanticSourceMessageId, sourcePartIndices, retainedSourceContentStart, retainedSourceContentEnd, options.intentToolNames, serverToolInput);
421
784
  pendingServerToolUses.set(_tool_call.id, {
422
785
  content: {
423
786
  type: "server_tool_use",
424
787
  id: _tool_call.id,
425
788
  name: _tool_call.name,
426
- input: parseServerToolInput(_args)
789
+ input: serverToolInput
427
790
  },
428
791
  sourceContentPartIndices: sourcePartIndices
429
792
  });
@@ -442,6 +805,7 @@ function formatAssistantMessage(message, options) {
442
805
  if (typeof _args === "string") args = { input: _args };
443
806
  }
444
807
  tool_call.args = args;
808
+ if (compactionSemanticIndex != null && semanticSourceMessageId != null && typeof sourcePartIndices === "number") collectCompactionSemanticEntriesFromPart(compactionSemanticIndex, part, semanticSourceMessageId, sourcePartIndices, retainedSourceContentStart, retainedSourceContentEnd, options?.intentToolNames, args);
445
809
  if (options?.provider === "anthropic" && Array.isArray(lastAIMessage.content)) {
446
810
  const content = lastAIMessage.content;
447
811
  content.push({
@@ -461,6 +825,7 @@ function formatAssistantMessage(message, options) {
461
825
  content: formatToolCallOutput(output)
462
826
  }), "tool"), "tool", sourcePartIndices);
463
827
  } else if (part.type === "think" || part.type === "thinking" || part.type === "reasoning" || part.type === "reasoning_content" || part.type === "redacted_thinking") {
828
+ if (part.type === "think" && compactionSemanticIndex != null && semanticSourceMessageId != null && typeof sourcePartIndices === "number") collectCompactionSemanticEntriesFromPart(compactionSemanticIndex, part, semanticSourceMessageId, sourcePartIndices, retainedSourceContentStart, retainedSourceContentEnd, options?.intentToolNames);
464
829
  hasReasoning = true;
465
830
  pendingReasoningContent += extractReasoningContent(part);
466
831
  appendSourceContentPartIndices(pendingReasoningSourcePartIndices, sourcePartIndices);
@@ -487,7 +852,7 @@ function formatAssistantMessage(message, options) {
487
852
  hasReasoning = false;
488
853
  pendingReasoningContent = "";
489
854
  pendingReasoningSourcePartIndices = [];
490
- } else if (part.type === "error" || part.type === "agent_update" || part.type === "summary" || part.type === "activity_label") continue;
855
+ } else if (part.type === "error" || part.type === "agent_update" || part.type === "summary") continue;
491
856
  else {
492
857
  if (part.type === "text" && !getTextContent(part).trim()) continue;
493
858
  currentContent.push(part);
@@ -764,6 +1129,7 @@ function extractSkillName(args) {
764
1129
  const formatAgentMessages = (payload, indexTokenCountMap, tools, skills, options) => {
765
1130
  const messages = [];
766
1131
  const legacyContentEnabled = options?.legacyContent === true;
1132
+ const compactionSemanticIndexCollector = options?.compactionSemanticIndex != null ? createDerivedCompactionSemanticIndexCollector(options.compactionSemanticIndex.baseSnapshot) : void 0;
767
1133
  const emitFormattedMessage = (message) => {
768
1134
  if (legacyContentEnabled && isLegacyConvertible(message)) {
769
1135
  const flattened = flattenLegacyContent(message.content);
@@ -914,9 +1280,12 @@ const formatAgentMessages = (payload, indexTokenCountMap, tools, skills, options
914
1280
  }
915
1281
  }
916
1282
  const formattedMessages = formatAssistantMessage(processedMessage, {
1283
+ compactionSemanticIndex: compactionSemanticIndexCollector,
1284
+ intentToolNames: options?.compactionSemanticIndex?.intentToolNames,
917
1285
  preserveUnpairedServerToolUses: i === payload.length - 1,
918
1286
  preserveReasoningContent: options?.preserveReasoningContent ?? options?.provider === "deepseek",
919
1287
  provider: options?.provider,
1288
+ retainedSourceContentEnd: sourceContentPartOffset + (Array.isArray(message.content) ? message.content.length : 0),
920
1289
  sourceMessageId,
921
1290
  sourceContentPartOffset,
922
1291
  sourceContentPartIndices: processedSourceContentPartIndices,
@@ -1036,6 +1405,7 @@ const formatAgentMessages = (payload, indexTokenCountMap, tools, skills, options
1036
1405
  updatedIndexTokenCountMap[resultIndices[lastIdx]] = tokenCount - distributed;
1037
1406
  }
1038
1407
  }
1408
+ const compactionSemanticIndexSnapshot = finalizeDerivedCompactionSemanticIndexSnapshot(compactionSemanticIndexCollector);
1039
1409
  return {
1040
1410
  messages,
1041
1411
  indexTokenCountMap: indexTokenCountMap ? updatedIndexTokenCountMap : void 0,
@@ -1043,7 +1413,9 @@ const formatAgentMessages = (payload, indexTokenCountMap, tools, skills, options
1043
1413
  text: summaryBoundary.text,
1044
1414
  tokenCount: summaryBoundary.tokenCount
1045
1415
  } : void 0,
1046
- boundaryTokenAdjustment
1416
+ boundaryTokenAdjustment,
1417
+ compactionSemanticIndex: compactionSemanticIndexSnapshot?.entries,
1418
+ compactionSemanticIndexSnapshot
1047
1419
  };
1048
1420
  };
1049
1421
  function shiftIndexTokenCountMap(indexTokenCountMap, instructionsTokenCount) {