@qduc/term2 0.1.4 → 0.1.6
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/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +4 -24
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +12 -33
- package/dist/app.js.map +1 -1
- package/dist/app.parseInput.test.js +4 -4
- package/dist/app.parseInput.test.js.map +1 -1
- package/dist/cli.js +44 -29
- package/dist/cli.js.map +1 -1
- package/dist/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/ApprovalPrompt.js +14 -11
- package/dist/components/ApprovalPrompt.js.map +1 -1
- package/dist/components/Banner.d.ts.map +1 -1
- package/dist/components/Banner.js +4 -12
- package/dist/components/Banner.js.map +1 -1
- package/dist/components/BottomArea.d.ts +2 -0
- package/dist/components/BottomArea.d.ts.map +1 -1
- package/dist/components/BottomArea.js +6 -9
- package/dist/components/BottomArea.js.map +1 -1
- package/dist/components/BottomArea.test.js +4 -6
- package/dist/components/BottomArea.test.js.map +1 -1
- package/dist/components/ChatMessage.d.ts.map +1 -1
- package/dist/components/ChatMessage.js.map +1 -1
- package/dist/components/CommandMessage.d.ts.map +1 -1
- package/dist/components/CommandMessage.js +19 -30
- package/dist/components/CommandMessage.js.map +1 -1
- package/dist/components/CommandMessage.test.js +2 -2
- package/dist/components/CommandMessage.test.js.map +1 -1
- package/dist/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/components/ErrorBoundary.js +3 -9
- package/dist/components/ErrorBoundary.js.map +1 -1
- package/dist/components/ErrorBoundary.test.js +2 -2
- package/dist/components/ErrorBoundary.test.js.map +1 -1
- package/dist/components/Input/PopupManager.d.ts.map +1 -1
- package/dist/components/Input/PopupManager.js.map +1 -1
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +15 -33
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/InputBox.menu-logic.test.js +6 -7
- package/dist/components/InputBox.menu-logic.test.js.map +1 -1
- package/dist/components/InputBox.test.js +7 -9
- package/dist/components/InputBox.test.js.map +1 -1
- package/dist/components/LiveResponse.d.ts.map +1 -1
- package/dist/components/LiveResponse.js.map +1 -1
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +12 -12
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js.map +1 -1
- package/dist/components/MessageList.test.js +1 -1
- package/dist/components/MessageList.test.js.map +1 -1
- package/dist/components/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/ModelSelectionMenu.js +35 -31
- package/dist/components/ModelSelectionMenu.js.map +1 -1
- package/dist/components/ModelSelectionMenu.test.js +9 -9
- package/dist/components/ModelSelectionMenu.test.js.map +1 -1
- package/dist/components/PathSelectionMenu.d.ts.map +1 -1
- package/dist/components/PathSelectionMenu.js +1 -1
- package/dist/components/PathSelectionMenu.js.map +1 -1
- package/dist/components/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/SettingsSelectionMenu.js +1 -1
- package/dist/components/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/SettingsSelectionMenu.test.js +4 -4
- package/dist/components/SettingsSelectionMenu.test.js.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.d.ts.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.js +5 -6
- package/dist/components/SettingsValueSelectionMenu.js.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.test.js +5 -5
- package/dist/components/SettingsValueSelectionMenu.test.js.map +1 -1
- package/dist/components/SlashCommandMenu.d.ts.map +1 -1
- package/dist/components/SlashCommandMenu.js +1 -1
- package/dist/components/SlashCommandMenu.js.map +1 -1
- package/dist/components/StatusBar.d.ts +2 -0
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/StatusBar.js +45 -41
- package/dist/components/StatusBar.js.map +1 -1
- package/dist/components/StatusBar.test.d.ts +2 -0
- package/dist/components/StatusBar.test.d.ts.map +1 -0
- package/dist/components/StatusBar.test.js +19 -0
- package/dist/components/StatusBar.test.js.map +1 -0
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js.map +1 -1
- package/dist/context/InputContext.stability.test.js +1 -1
- package/dist/context/InputContext.stability.test.js.map +1 -1
- package/dist/context/InputContext.test.js +15 -15
- package/dist/context/InputContext.test.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +5 -13
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +40 -148
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-input-history.d.ts.map +1 -1
- package/dist/hooks/use-input-history.js +1 -3
- package/dist/hooks/use-input-history.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +9 -35
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-path-completion.d.ts.map +1 -1
- package/dist/hooks/use-path-completion.js +6 -6
- package/dist/hooks/use-path-completion.js.map +1 -1
- package/dist/hooks/use-setting.d.ts.map +1 -1
- package/dist/hooks/use-setting.js +3 -6
- package/dist/hooks/use-setting.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +10 -12
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-completion.test.js +46 -46
- package/dist/hooks/use-settings-completion.test.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +13 -43
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.test.js +12 -18
- package/dist/hooks/use-settings-value-completion.test.js.map +1 -1
- package/dist/hooks/use-slash-commands.d.ts +1 -1
- package/dist/hooks/use-slash-commands.d.ts.map +1 -1
- package/dist/hooks/use-slash-commands.js +6 -11
- package/dist/hooks/use-slash-commands.js.map +1 -1
- package/dist/hooks/use-slash-commands.test.js +24 -24
- package/dist/hooks/use-slash-commands.test.js.map +1 -1
- package/dist/lib/editor-impl.d.ts.map +1 -1
- package/dist/lib/editor-impl.js +6 -16
- package/dist/lib/editor-impl.js.map +1 -1
- package/dist/lib/editor-impl.test.js.map +1 -1
- package/dist/lib/mentor-client.d.ts +41 -0
- package/dist/lib/mentor-client.d.ts.map +1 -0
- package/dist/lib/mentor-client.js +146 -0
- package/dist/lib/mentor-client.js.map +1 -0
- package/dist/lib/mentor-client.test.d.ts +2 -0
- package/dist/lib/mentor-client.test.d.ts.map +1 -0
- package/dist/lib/mentor-client.test.js +440 -0
- package/dist/lib/mentor-client.test.js.map +1 -0
- package/dist/lib/openai-agent-client.chat.test.js +33 -8
- package/dist/lib/openai-agent-client.chat.test.js.map +1 -1
- package/dist/lib/openai-agent-client.d.ts.map +1 -1
- package/dist/lib/openai-agent-client.flex-tier.test.js +5 -5
- package/dist/lib/openai-agent-client.flex-tier.test.js.map +1 -1
- package/dist/lib/openai-agent-client.js +99 -88
- package/dist/lib/openai-agent-client.js.map +1 -1
- package/dist/lib/openai-agent-client.public-methods.test.js +186 -12
- package/dist/lib/openai-agent-client.public-methods.test.js.map +1 -1
- package/dist/lib/openai-agent-client.test.js +17 -17
- package/dist/lib/openai-agent-client.test.js.map +1 -1
- package/dist/lib/retry-strategy.d.ts +43 -0
- package/dist/lib/retry-strategy.d.ts.map +1 -0
- package/dist/lib/retry-strategy.js +93 -0
- package/dist/lib/retry-strategy.js.map +1 -0
- package/dist/lib/retry-strategy.test.d.ts +2 -0
- package/dist/lib/retry-strategy.test.d.ts.map +1 -0
- package/dist/lib/retry-strategy.test.js +200 -0
- package/dist/lib/retry-strategy.test.js.map +1 -0
- package/dist/lib/tool-invoke.d.ts.map +1 -1
- package/dist/lib/tool-invoke.js.map +1 -1
- package/dist/lib/tool-invoke.test.js.map +1 -1
- package/dist/no-singleton-imports.test.js +1 -1
- package/dist/no-singleton-imports.test.js.map +1 -1
- package/dist/non-interactive.d.ts +20 -0
- package/dist/non-interactive.d.ts.map +1 -0
- package/dist/non-interactive.js +86 -0
- package/dist/non-interactive.js.map +1 -0
- package/dist/non-interactive.test.d.ts +2 -0
- package/dist/non-interactive.test.d.ts.map +1 -0
- package/dist/non-interactive.test.js +213 -0
- package/dist/non-interactive.test.js.map +1 -0
- package/dist/prompts/anthropic.md +11 -11
- package/dist/prompts/codex.md +63 -63
- package/dist/prompts/gpt-5.md +95 -95
- package/dist/prompts/mentor-addon.md +6 -5
- package/dist/prompts/prompt-selector.d.ts +8 -0
- package/dist/prompts/prompt-selector.d.ts.map +1 -0
- package/dist/prompts/prompt-selector.js +21 -0
- package/dist/prompts/prompt-selector.js.map +1 -0
- package/dist/prompts/prompt-selector.test.d.ts +2 -0
- package/dist/prompts/prompt-selector.test.d.ts.map +1 -0
- package/dist/prompts/prompt-selector.test.js +21 -0
- package/dist/prompts/prompt-selector.test.js.map +1 -0
- package/dist/prompts/prompt-selector.test.ts +32 -0
- package/dist/prompts/prompt-selector.ts +30 -0
- package/dist/prompts/simple.md +58 -58
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai-compatible/api.d.ts.map +1 -1
- package/dist/providers/openai-compatible/api.js.map +1 -1
- package/dist/providers/openai-compatible/model.d.ts.map +1 -1
- package/dist/providers/openai-compatible/model.js +19 -53
- package/dist/providers/openai-compatible/model.js.map +1 -1
- package/dist/providers/openai-compatible/provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible/provider.js.map +1 -1
- package/dist/providers/openai-compatible/reasoning-content.test.js +2 -2
- package/dist/providers/openai-compatible/reasoning-content.test.js.map +1 -1
- package/dist/providers/openai-compatible/utils.d.ts.map +1 -1
- package/dist/providers/openai-compatible/utils.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +5 -1
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai.provider.js +4 -0
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/openrouter/api.d.ts.map +1 -1
- package/dist/providers/openrouter/api.js +5 -13
- package/dist/providers/openrouter/api.js.map +1 -1
- package/dist/providers/openrouter/converters.d.ts.map +1 -1
- package/dist/providers/openrouter/converters.js +9 -28
- package/dist/providers/openrouter/converters.js.map +1 -1
- package/dist/providers/openrouter/converters.test.js +7 -11
- package/dist/providers/openrouter/converters.test.js.map +1 -1
- package/dist/providers/openrouter/index.d.ts.map +1 -1
- package/dist/providers/openrouter/index.js.map +1 -1
- package/dist/providers/openrouter/model.d.ts.map +1 -1
- package/dist/providers/openrouter/model.js +19 -55
- package/dist/providers/openrouter/model.js.map +1 -1
- package/dist/providers/openrouter/provider.d.ts.map +1 -1
- package/dist/providers/openrouter/provider.js.map +1 -1
- package/dist/providers/openrouter/reasoning-content.test.js +1 -1
- package/dist/providers/openrouter/reasoning-content.test.js.map +1 -1
- package/dist/providers/openrouter/utils.d.ts.map +1 -1
- package/dist/providers/openrouter/utils.js +2 -3
- package/dist/providers/openrouter/utils.js.map +1 -1
- package/dist/providers/openrouter.api.retry.test.js.map +1 -1
- package/dist/providers/openrouter.provider.createRunner.test.js +1 -1
- package/dist/providers/openrouter.provider.createRunner.test.js.map +1 -1
- package/dist/providers/openrouter.provider.js +6 -4
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/openrouter.test.js +13 -17
- package/dist/providers/openrouter.test.js.map +1 -1
- package/dist/providers/registry.d.ts +5 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/registry.test.js +11 -11
- package/dist/providers/registry.test.js.map +1 -1
- package/dist/providers/web-search/index.d.ts +1 -1
- package/dist/providers/web-search/index.d.ts.map +1 -1
- package/dist/providers/web-search/index.js.map +1 -1
- package/dist/providers/web-search/registry.d.ts.map +1 -1
- package/dist/providers/web-search/registry.js.map +1 -1
- package/dist/providers/web-search/registry.test.js +14 -14
- package/dist/providers/web-search/registry.test.js.map +1 -1
- package/dist/providers/web-search/tavily.provider.d.ts.map +1 -1
- package/dist/providers/web-search/tavily.provider.js +4 -4
- package/dist/providers/web-search/tavily.provider.js.map +1 -1
- package/dist/providers/web-search/tavily.provider.test.js +7 -7
- package/dist/providers/web-search/tavily.provider.test.js.map +1 -1
- package/dist/providers/web-search/types.d.ts.map +1 -1
- package/dist/scripts/extract-provider-traffic.d.ts +3 -0
- package/dist/scripts/extract-provider-traffic.d.ts.map +1 -0
- package/dist/scripts/extract-provider-traffic.js +32 -0
- package/dist/scripts/extract-provider-traffic.js.map +1 -0
- package/dist/services/approval-state.d.ts +24 -0
- package/dist/services/approval-state.d.ts.map +1 -0
- package/dist/services/approval-state.js +41 -0
- package/dist/services/approval-state.js.map +1 -0
- package/dist/services/approval-state.test.d.ts +2 -0
- package/dist/services/approval-state.test.d.ts.map +1 -0
- package/dist/services/approval-state.test.js +59 -0
- package/dist/services/approval-state.test.js.map +1 -0
- package/dist/services/command-message-streaming.d.ts +12 -0
- package/dist/services/command-message-streaming.d.ts.map +1 -0
- package/dist/services/command-message-streaming.js +68 -0
- package/dist/services/command-message-streaming.js.map +1 -0
- package/dist/services/command-message-streaming.test.d.ts +2 -0
- package/dist/services/command-message-streaming.test.d.ts.map +1 -0
- package/dist/services/command-message-streaming.test.js +78 -0
- package/dist/services/command-message-streaming.test.js.map +1 -0
- package/dist/services/conversation-events.d.ts +5 -13
- package/dist/services/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation-integration.test.d.ts +2 -0
- package/dist/services/conversation-integration.test.d.ts.map +1 -0
- package/dist/services/conversation-integration.test.js +155 -0
- package/dist/services/conversation-integration.test.js.map +1 -0
- package/dist/services/conversation-result-builder.d.ts +41 -0
- package/dist/services/conversation-result-builder.d.ts.map +1 -0
- package/dist/services/conversation-result-builder.js +110 -0
- package/dist/services/conversation-result-builder.js.map +1 -0
- package/dist/services/conversation-result-builder.test.d.ts +2 -0
- package/dist/services/conversation-result-builder.test.d.ts.map +1 -0
- package/dist/services/conversation-result-builder.test.js +76 -0
- package/dist/services/conversation-result-builder.test.js.map +1 -0
- package/dist/services/conversation-service.d.ts +1 -1
- package/dist/services/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation-service.js.map +1 -1
- package/dist/services/conversation-session-reasoning.test.js +3 -3
- package/dist/services/conversation-session-reasoning.test.js.map +1 -1
- package/dist/services/conversation-session.d.ts +7 -17
- package/dist/services/conversation-session.d.ts.map +1 -1
- package/dist/services/conversation-session.js +290 -278
- package/dist/services/conversation-session.js.map +1 -1
- package/dist/services/conversation-session.usage.test.d.ts +2 -0
- package/dist/services/conversation-session.usage.test.d.ts.map +1 -0
- package/dist/services/conversation-session.usage.test.js +59 -0
- package/dist/services/conversation-session.usage.test.js.map +1 -0
- package/dist/services/conversation-store.d.ts.map +1 -1
- package/dist/services/conversation-store.js +3 -9
- package/dist/services/conversation-store.js.map +1 -1
- package/dist/services/conversation-store.test.js +17 -14
- package/dist/services/conversation-store.test.js.map +1 -1
- package/dist/services/execution-context.d.ts.map +1 -1
- package/dist/services/execution-context.js.map +1 -1
- package/dist/services/execution-context.test.js +7 -7
- package/dist/services/execution-context.test.js.map +1 -1
- package/dist/services/file-service.d.ts.map +1 -1
- package/dist/services/file-service.js +5 -9
- package/dist/services/file-service.js.map +1 -1
- package/dist/services/history-service.d.ts.map +1 -1
- package/dist/services/history-service.js +3 -7
- package/dist/services/history-service.js.map +1 -1
- package/dist/services/logging-contract.d.ts +74 -0
- package/dist/services/logging-contract.d.ts.map +1 -0
- package/dist/services/logging-contract.js +157 -0
- package/dist/services/logging-contract.js.map +1 -0
- package/dist/services/logging-contract.test.d.ts +2 -0
- package/dist/services/logging-contract.test.d.ts.map +1 -0
- package/dist/services/logging-contract.test.js +66 -0
- package/dist/services/logging-contract.test.js.map +1 -0
- package/dist/services/logging-service.d.ts +5 -0
- package/dist/services/logging-service.d.ts.map +1 -1
- package/dist/services/logging-service.js +93 -21
- package/dist/services/logging-service.js.map +1 -1
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +2 -2
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/model-service.test.js +6 -6
- package/dist/services/model-service.test.js.map +1 -1
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/settings-env.d.ts +9 -0
- package/dist/services/settings-env.d.ts.map +1 -0
- package/dist/services/settings-env.js +75 -0
- package/dist/services/settings-env.js.map +1 -0
- package/dist/services/settings-env.test.d.ts +2 -0
- package/dist/services/settings-env.test.d.ts.map +1 -0
- package/dist/services/settings-env.test.js +32 -0
- package/dist/services/settings-env.test.js.map +1 -0
- package/dist/services/settings-merger.d.ts +26 -0
- package/dist/services/settings-merger.d.ts.map +1 -0
- package/dist/services/settings-merger.js +122 -0
- package/dist/services/settings-merger.js.map +1 -0
- package/dist/services/settings-merger.test.d.ts +2 -0
- package/dist/services/settings-merger.test.d.ts.map +1 -0
- package/dist/services/settings-merger.test.js +26 -0
- package/dist/services/settings-merger.test.js.map +1 -0
- package/dist/services/settings-persistence.d.ts +32 -0
- package/dist/services/settings-persistence.d.ts.map +1 -0
- package/dist/services/settings-persistence.js +134 -0
- package/dist/services/settings-persistence.js.map +1 -0
- package/dist/services/settings-persistence.test.d.ts +2 -0
- package/dist/services/settings-persistence.test.d.ts.map +1 -0
- package/dist/services/settings-persistence.test.js +51 -0
- package/dist/services/settings-persistence.test.js.map +1 -0
- package/dist/services/settings-schema.d.ts +320 -0
- package/dist/services/settings-schema.d.ts.map +1 -0
- package/dist/services/settings-schema.js +272 -0
- package/dist/services/settings-schema.js.map +1 -0
- package/dist/services/settings-service.d.ts +4 -248
- package/dist/services/settings-service.d.ts.map +1 -1
- package/dist/services/settings-service.js +45 -641
- package/dist/services/settings-service.js.map +1 -1
- package/dist/services/settings-service.mock.d.ts.map +1 -1
- package/dist/services/settings-service.mock.js.map +1 -1
- package/dist/services/singleton-deprecation.test.js +2 -2
- package/dist/services/singleton-deprecation.test.js.map +1 -1
- package/dist/services/ssh-service.d.ts.map +1 -1
- package/dist/services/ssh-service.js +8 -7
- package/dist/services/ssh-service.js.map +1 -1
- package/dist/services/ssh-service.test.js +15 -13
- package/dist/services/ssh-service.test.js.map +1 -1
- package/dist/services/stream-event-parsing.d.ts +4 -0
- package/dist/services/stream-event-parsing.d.ts.map +1 -0
- package/dist/services/stream-event-parsing.js +76 -0
- package/dist/services/stream-event-parsing.js.map +1 -0
- package/dist/services/stream-event-parsing.test.d.ts +2 -0
- package/dist/services/stream-event-parsing.test.d.ts.map +1 -0
- package/dist/services/stream-event-parsing.test.js +59 -0
- package/dist/services/stream-event-parsing.test.js.map +1 -0
- package/dist/services/stream-event-processor.d.ts +32 -0
- package/dist/services/stream-event-processor.d.ts.map +1 -0
- package/dist/services/stream-event-processor.js +344 -0
- package/dist/services/stream-event-processor.js.map +1 -0
- package/dist/services/stream-event-processor.test.d.ts +2 -0
- package/dist/services/stream-event-processor.test.d.ts.map +1 -0
- package/dist/services/stream-event-processor.test.js +117 -0
- package/dist/services/stream-event-processor.test.js.map +1 -0
- package/dist/tools/apply-patch.d.ts.map +1 -1
- package/dist/tools/apply-patch.js +45 -35
- package/dist/tools/apply-patch.js.map +1 -1
- package/dist/tools/apply-patch.test.js +23 -0
- package/dist/tools/apply-patch.test.js.map +1 -1
- package/dist/tools/ask-mentor.d.ts.map +1 -1
- package/dist/tools/ask-mentor.js +5 -15
- package/dist/tools/ask-mentor.js.map +1 -1
- package/dist/tools/ask-mentor.test.js +1 -1
- package/dist/tools/ask-mentor.test.js.map +1 -1
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +2 -2
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/create-file.test.js.map +1 -1
- package/dist/tools/edit-healing.d.ts.map +1 -1
- package/dist/tools/edit-healing.js +5 -4
- package/dist/tools/edit-healing.js.map +1 -1
- package/dist/tools/edit-healing.test.js.map +1 -1
- package/dist/tools/find-files.d.ts +1 -0
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +93 -24
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/find-files.test.js +46 -2
- package/dist/tools/find-files.test.js.map +1 -1
- package/dist/tools/format-helpers.d.ts.map +1 -1
- package/dist/tools/format-helpers.js +2 -6
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/grep.d.ts +1 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +6 -21
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +3 -7
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-file.test.js.map +1 -1
- package/dist/tools/search-replace.d.ts.map +1 -1
- package/dist/tools/search-replace.js +14 -31
- package/dist/tools/search-replace.js.map +1 -1
- package/dist/tools/search-replace.test.js.map +1 -1
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +6 -16
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.d.ts +1 -1
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +25 -51
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/shell.test.d.ts +2 -0
- package/dist/tools/shell.test.d.ts.map +1 -0
- package/dist/tools/shell.test.js +70 -0
- package/dist/tools/shell.test.js.map +1 -0
- package/dist/tools/tool-names.d.ts +3 -0
- package/dist/tools/tool-names.d.ts.map +1 -0
- package/dist/tools/tool-names.js +3 -0
- package/dist/tools/tool-names.js.map +1 -0
- package/dist/tools/tool-names.test.d.ts +2 -0
- package/dist/tools/tool-names.test.d.ts.map +1 -0
- package/dist/tools/tool-names.test.js +7 -0
- package/dist/tools/tool-names.test.js.map +1 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +3 -8
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +4 -4
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +32 -249
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-fetch.test.js +3 -3
- package/dist/tools/web-fetch.test.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +6 -10
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/web-search.test.js +12 -14
- package/dist/tools/web-search.test.js.map +1 -1
- package/dist/types/messages.d.ts +29 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +2 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/utils/command-logger.d.ts.map +1 -1
- package/dist/utils/command-logger.js.map +1 -1
- package/dist/utils/command-safety/constants.d.ts.map +1 -1
- package/dist/utils/command-safety/constants.js +1 -9
- package/dist/utils/command-safety/constants.js.map +1 -1
- package/dist/utils/command-safety/find-helpers.d.ts.map +1 -1
- package/dist/utils/command-safety/find-helpers.js +4 -9
- package/dist/utils/command-safety/find-helpers.js.map +1 -1
- package/dist/utils/command-safety/handlers/find-handler.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/find-handler.js +3 -10
- package/dist/utils/command-safety/handlers/find-handler.js.map +1 -1
- package/dist/utils/command-safety/handlers/git-handler.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/git-handler.js +2 -4
- package/dist/utils/command-safety/handlers/git-handler.js.map +1 -1
- package/dist/utils/command-safety/handlers/index.d.ts +1 -1
- package/dist/utils/command-safety/handlers/index.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/index.js.map +1 -1
- package/dist/utils/command-safety/handlers/sed-handler.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/sed-handler.js.map +1 -1
- package/dist/utils/command-safety/handlers/types.d.ts.map +1 -1
- package/dist/utils/command-safety/index.d.ts.map +1 -1
- package/dist/utils/command-safety/index.js +4 -10
- package/dist/utils/command-safety/index.js.map +1 -1
- package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
- package/dist/utils/command-safety/path-analysis.js +9 -20
- package/dist/utils/command-safety/path-analysis.js.map +1 -1
- package/dist/utils/command-safety/utils.d.ts.map +1 -1
- package/dist/utils/command-safety/utils.js +1 -3
- package/dist/utils/command-safety/utils.js.map +1 -1
- package/dist/utils/command-safety.find.test.js +44 -87
- package/dist/utils/command-safety.find.test.js.map +1 -1
- package/dist/utils/command-safety.path.test.js +32 -67
- package/dist/utils/command-safety.path.test.js.map +1 -1
- package/dist/utils/conversation-event-handler.d.ts +4 -16
- package/dist/utils/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation-event-handler.js +4 -8
- package/dist/utils/conversation-event-handler.js.map +1 -1
- package/dist/utils/conversation-event-handler.test.js +16 -18
- package/dist/utils/conversation-event-handler.test.js.map +1 -1
- package/dist/utils/conversation-utils.d.ts.map +1 -1
- package/dist/utils/conversation-utils.js +5 -8
- package/dist/utils/conversation-utils.js.map +1 -1
- package/dist/utils/conversation-utils.test.js +45 -44
- package/dist/utils/conversation-utils.test.js.map +1 -1
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/diff.js +2 -4
- package/dist/utils/diff.js.map +1 -1
- package/dist/utils/diff.test.js +12 -12
- package/dist/utils/diff.test.js.map +1 -1
- package/dist/utils/error-helpers.d.ts.map +1 -1
- package/dist/utils/error-helpers.js +2 -6
- package/dist/utils/error-helpers.js.map +1 -1
- package/dist/utils/error-helpers.test.js +32 -32
- package/dist/utils/error-helpers.test.js.map +1 -1
- package/dist/utils/execute-shell.d.ts.map +1 -1
- package/dist/utils/execute-shell.js.map +1 -1
- package/dist/utils/execute-shell.test.js.map +1 -1
- package/dist/utils/extract-command-messages.d.ts.map +1 -1
- package/dist/utils/extract-command-messages.js +16 -21
- package/dist/utils/extract-command-messages.js.map +1 -1
- package/dist/utils/ink-render-options.d.ts.map +1 -1
- package/dist/utils/ink-render-options.js.map +1 -1
- package/dist/utils/log-viewer-filters.d.ts +29 -0
- package/dist/utils/log-viewer-filters.d.ts.map +1 -0
- package/dist/utils/log-viewer-filters.js +49 -0
- package/dist/utils/log-viewer-filters.js.map +1 -0
- package/dist/utils/log-viewer-filters.test.d.ts +2 -0
- package/dist/utils/log-viewer-filters.test.d.ts.map +1 -0
- package/dist/utils/log-viewer-filters.test.js +48 -0
- package/dist/utils/log-viewer-filters.test.js.map +1 -0
- package/dist/utils/message-buffer.d.ts.map +1 -1
- package/dist/utils/message-buffer.js.map +1 -1
- package/dist/utils/message-buffer.test.js +4 -4
- package/dist/utils/message-buffer.test.js.map +1 -1
- package/dist/utils/output-trim.d.ts.map +1 -1
- package/dist/utils/output-trim.js.map +1 -1
- package/dist/utils/provider-credentials.d.ts.map +1 -1
- package/dist/utils/provider-credentials.js +1 -1
- package/dist/utils/provider-credentials.js.map +1 -1
- package/dist/utils/provider-traffic-extractor.d.ts +18 -0
- package/dist/utils/provider-traffic-extractor.d.ts.map +1 -0
- package/dist/utils/provider-traffic-extractor.js +121 -0
- package/dist/utils/provider-traffic-extractor.js.map +1 -0
- package/dist/utils/provider-traffic-extractor.test.d.ts +2 -0
- package/dist/utils/provider-traffic-extractor.test.d.ts.map +1 -0
- package/dist/utils/provider-traffic-extractor.test.js +84 -0
- package/dist/utils/provider-traffic-extractor.test.js.map +1 -0
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +5 -12
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/ssh-config-parser.d.ts.map +1 -1
- package/dist/utils/ssh-config-parser.js.map +1 -1
- package/dist/utils/ssh-config-parser.test.js.map +1 -1
- package/dist/utils/streaming-session-factory.d.ts +33 -0
- package/dist/utils/streaming-session-factory.d.ts.map +1 -0
- package/dist/utils/streaming-session-factory.js +75 -0
- package/dist/utils/streaming-session-factory.js.map +1 -0
- package/dist/utils/streaming-session-factory.test.d.ts +2 -0
- package/dist/utils/streaming-session-factory.test.d.ts.map +1 -0
- package/dist/utils/streaming-session-factory.test.js +74 -0
- package/dist/utils/streaming-session-factory.test.js.map +1 -0
- package/dist/utils/streaming-updater.d.ts.map +1 -1
- package/dist/utils/streaming-updater.js.map +1 -1
- package/dist/utils/throttle.d.ts.map +1 -1
- package/dist/utils/throttle.js.map +1 -1
- package/dist/utils/token-usage.d.ts +16 -0
- package/dist/utils/token-usage.d.ts.map +1 -0
- package/dist/utils/token-usage.js +109 -0
- package/dist/utils/token-usage.js.map +1 -0
- package/dist/utils/token-usage.test.d.ts +2 -0
- package/dist/utils/token-usage.test.d.ts.map +1 -0
- package/dist/utils/token-usage.test.js +38 -0
- package/dist/utils/token-usage.test.js.map +1 -0
- package/dist/utils/trim-tool-output.d.ts +2 -0
- package/dist/utils/trim-tool-output.d.ts.map +1 -0
- package/dist/utils/trim-tool-output.js +52 -0
- package/dist/utils/trim-tool-output.js.map +1 -0
- package/package.json +117 -110
- package/{README.md → readme.md} +208 -136
|
@@ -23,7 +23,9 @@ function createMockSettings(values = {}) {
|
|
|
23
23
|
};
|
|
24
24
|
return {
|
|
25
25
|
get: (key) => store[key],
|
|
26
|
-
set: (key, value) => {
|
|
26
|
+
set: (key, value) => {
|
|
27
|
+
store[key] = value;
|
|
28
|
+
},
|
|
27
29
|
};
|
|
28
30
|
}
|
|
29
31
|
// Mock Runner that tracks calls
|
|
@@ -52,9 +54,102 @@ function ensureProviderRegistered() {
|
|
|
52
54
|
providerRegistered = true;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
57
|
+
let mentorProviderRegistered = false;
|
|
58
|
+
let capturedMainAgentForMentorTest = null;
|
|
59
|
+
let mentorInputs = [];
|
|
60
|
+
let mentorResponseCounter = 0;
|
|
61
|
+
let chainingProviderRegistered = false;
|
|
62
|
+
let chainingRunnerCalls = [];
|
|
63
|
+
function ensureMentorProvidersRegistered() {
|
|
64
|
+
if (!mentorProviderRegistered) {
|
|
65
|
+
registerProvider({
|
|
66
|
+
id: 'mock-main-mentor-refresh',
|
|
67
|
+
label: 'Mock Main Mentor Refresh',
|
|
68
|
+
createRunner: () => ({
|
|
69
|
+
run: async (agent) => {
|
|
70
|
+
capturedMainAgentForMentorTest = agent;
|
|
71
|
+
return {
|
|
72
|
+
status: 'completed',
|
|
73
|
+
finalOutput: 'ok',
|
|
74
|
+
messages: [],
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
fetchModels: async () => [{ id: 'mock-model' }],
|
|
79
|
+
});
|
|
80
|
+
registerProvider({
|
|
81
|
+
id: 'mock-mentor-refresh',
|
|
82
|
+
label: 'Mock Mentor Refresh',
|
|
83
|
+
createRunner: () => ({
|
|
84
|
+
run: async (_agent, _input, _options) => {
|
|
85
|
+
mentorInputs.push(_input);
|
|
86
|
+
mentorResponseCounter += 1;
|
|
87
|
+
return {
|
|
88
|
+
status: 'completed',
|
|
89
|
+
finalOutput: `mentor-${mentorResponseCounter}`,
|
|
90
|
+
responseId: `mentor-response-${mentorResponseCounter}`,
|
|
91
|
+
history: [],
|
|
92
|
+
messages: [],
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
}),
|
|
96
|
+
fetchModels: async () => [{ id: 'mock-model' }],
|
|
97
|
+
});
|
|
98
|
+
mentorProviderRegistered = true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function ensureChainingProvidersRegistered() {
|
|
102
|
+
if (!chainingProviderRegistered) {
|
|
103
|
+
registerProvider({
|
|
104
|
+
id: 'mock-chaining-false',
|
|
105
|
+
label: 'Mock Chaining False',
|
|
106
|
+
createRunner: () => ({
|
|
107
|
+
run: async (_agent, _input, options) => {
|
|
108
|
+
chainingRunnerCalls.push({ options, providerId: 'mock-chaining-false' });
|
|
109
|
+
return {
|
|
110
|
+
status: 'completed',
|
|
111
|
+
finalOutput: 'ok',
|
|
112
|
+
messages: [],
|
|
113
|
+
};
|
|
114
|
+
},
|
|
115
|
+
}),
|
|
116
|
+
fetchModels: async () => [{ id: 'mock-model' }],
|
|
117
|
+
capabilities: {
|
|
118
|
+
supportsConversationChaining: false,
|
|
119
|
+
supportsTracingControl: false,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
registerProvider({
|
|
123
|
+
id: 'mock-chaining-true',
|
|
124
|
+
label: 'Mock Chaining True',
|
|
125
|
+
createRunner: () => ({
|
|
126
|
+
run: async (_agent, _input, options) => {
|
|
127
|
+
chainingRunnerCalls.push({ options, providerId: 'mock-chaining-true' });
|
|
128
|
+
return {
|
|
129
|
+
status: 'completed',
|
|
130
|
+
finalOutput: 'ok',
|
|
131
|
+
messages: [],
|
|
132
|
+
};
|
|
133
|
+
},
|
|
134
|
+
}),
|
|
135
|
+
fetchModels: async () => [{ id: 'mock-model' }],
|
|
136
|
+
capabilities: {
|
|
137
|
+
supportsConversationChaining: true,
|
|
138
|
+
supportsTracingControl: true,
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
chainingProviderRegistered = true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
55
144
|
test.beforeEach(() => {
|
|
56
145
|
runnerCalls = [];
|
|
57
146
|
ensureProviderRegistered();
|
|
147
|
+
ensureMentorProvidersRegistered();
|
|
148
|
+
ensureChainingProvidersRegistered();
|
|
149
|
+
capturedMainAgentForMentorTest = null;
|
|
150
|
+
mentorInputs = [];
|
|
151
|
+
mentorResponseCounter = 0;
|
|
152
|
+
chainingRunnerCalls = [];
|
|
58
153
|
});
|
|
59
154
|
// ========== setModel tests ==========
|
|
60
155
|
test('setModel updates the internal model', async (t) => {
|
|
@@ -72,14 +167,14 @@ test('setModel updates the internal model', async (t) => {
|
|
|
72
167
|
t.truthy(agent);
|
|
73
168
|
});
|
|
74
169
|
// ========== setProvider / getProvider tests ==========
|
|
75
|
-
test('getProvider returns current provider', t => {
|
|
170
|
+
test('getProvider returns current provider', (t) => {
|
|
76
171
|
const settings = createMockSettings({ 'agent.provider': 'mock-provider-public-methods' });
|
|
77
172
|
const client = new OpenAIAgentClient({
|
|
78
173
|
deps: { logger: createMockLogger(), settings },
|
|
79
174
|
});
|
|
80
175
|
t.is(client.getProvider(), 'mock-provider-public-methods');
|
|
81
176
|
});
|
|
82
|
-
test('setProvider updates provider and persists to settings', t => {
|
|
177
|
+
test('setProvider updates provider and persists to settings', (t) => {
|
|
83
178
|
const settings = createMockSettings({ 'agent.provider': 'mock-provider-public-methods' });
|
|
84
179
|
const client = new OpenAIAgentClient({
|
|
85
180
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -88,8 +183,59 @@ test('setProvider updates provider and persists to settings', t => {
|
|
|
88
183
|
t.is(client.getProvider(), 'openai');
|
|
89
184
|
t.is(settings.get('agent.provider'), 'openai');
|
|
90
185
|
});
|
|
186
|
+
test.serial('startStream only passes previousResponseId when provider supports chaining', async (t) => {
|
|
187
|
+
const settings = createMockSettings({
|
|
188
|
+
'agent.provider': 'mock-chaining-false',
|
|
189
|
+
});
|
|
190
|
+
const client = new OpenAIAgentClient({
|
|
191
|
+
deps: { logger: createMockLogger(), settings },
|
|
192
|
+
});
|
|
193
|
+
await client.startStream('Hello', { previousResponseId: 'prev-1' });
|
|
194
|
+
t.is(chainingRunnerCalls.length, 1);
|
|
195
|
+
t.false('previousResponseId' in chainingRunnerCalls[0].options);
|
|
196
|
+
client.setProvider('mock-chaining-true');
|
|
197
|
+
await client.startStream('Hello', { previousResponseId: 'prev-2' });
|
|
198
|
+
t.is(chainingRunnerCalls.length, 2);
|
|
199
|
+
t.is(chainingRunnerCalls[1].options.previousResponseId, 'prev-2');
|
|
200
|
+
});
|
|
201
|
+
test.serial('abort logs with active trace id before clearing correlation', async (t) => {
|
|
202
|
+
const debugLogs = [];
|
|
203
|
+
let correlationId;
|
|
204
|
+
const logger = {
|
|
205
|
+
debug: (message, meta) => {
|
|
206
|
+
debugLogs.push({ message, meta });
|
|
207
|
+
},
|
|
208
|
+
info: () => { },
|
|
209
|
+
warn: () => { },
|
|
210
|
+
error: () => { },
|
|
211
|
+
security: () => { },
|
|
212
|
+
setCorrelationId: (id) => {
|
|
213
|
+
correlationId = id;
|
|
214
|
+
},
|
|
215
|
+
clearCorrelationId: () => {
|
|
216
|
+
correlationId = undefined;
|
|
217
|
+
},
|
|
218
|
+
getCorrelationId: () => correlationId,
|
|
219
|
+
log: () => { },
|
|
220
|
+
};
|
|
221
|
+
const settings = createMockSettings({
|
|
222
|
+
'agent.provider': 'mock-chaining-false',
|
|
223
|
+
});
|
|
224
|
+
const client = new OpenAIAgentClient({
|
|
225
|
+
deps: { logger, settings },
|
|
226
|
+
});
|
|
227
|
+
await client.startStream('Hello');
|
|
228
|
+
const activeCorrelationId = correlationId;
|
|
229
|
+
t.truthy(activeCorrelationId);
|
|
230
|
+
client.abort();
|
|
231
|
+
const abortLogs = debugLogs.filter((entry) => entry.message === 'Agent operation aborted');
|
|
232
|
+
t.true(abortLogs.length > 0);
|
|
233
|
+
const latestAbortLog = abortLogs[abortLogs.length - 1];
|
|
234
|
+
t.is(latestAbortLog.meta?.traceId, activeCorrelationId);
|
|
235
|
+
t.is(correlationId, undefined);
|
|
236
|
+
});
|
|
91
237
|
// ========== addToolInterceptor tests ==========
|
|
92
|
-
test('addToolInterceptor returns removal function', t => {
|
|
238
|
+
test('addToolInterceptor returns removal function', (t) => {
|
|
93
239
|
const settings = createMockSettings();
|
|
94
240
|
const client = new OpenAIAgentClient({
|
|
95
241
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -102,7 +248,7 @@ test('addToolInterceptor returns removal function', t => {
|
|
|
102
248
|
remove();
|
|
103
249
|
t.pass();
|
|
104
250
|
});
|
|
105
|
-
test('addToolInterceptor can be removed', t => {
|
|
251
|
+
test('addToolInterceptor can be removed', (t) => {
|
|
106
252
|
const settings = createMockSettings();
|
|
107
253
|
const client = new OpenAIAgentClient({
|
|
108
254
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -117,7 +263,7 @@ test('addToolInterceptor can be removed', t => {
|
|
|
117
263
|
t.pass();
|
|
118
264
|
});
|
|
119
265
|
// ========== abort tests ==========
|
|
120
|
-
test('abort does not throw when called without active operation', t => {
|
|
266
|
+
test('abort does not throw when called without active operation', (t) => {
|
|
121
267
|
const settings = createMockSettings();
|
|
122
268
|
const client = new OpenAIAgentClient({
|
|
123
269
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -125,7 +271,7 @@ test('abort does not throw when called without active operation', t => {
|
|
|
125
271
|
// Should not throw
|
|
126
272
|
t.notThrows(() => client.abort());
|
|
127
273
|
});
|
|
128
|
-
test('abort can be called multiple times', t => {
|
|
274
|
+
test('abort can be called multiple times', (t) => {
|
|
129
275
|
const settings = createMockSettings();
|
|
130
276
|
const client = new OpenAIAgentClient({
|
|
131
277
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -137,14 +283,14 @@ test('abort can be called multiple times', t => {
|
|
|
137
283
|
});
|
|
138
284
|
});
|
|
139
285
|
// ========== clearConversations tests ==========
|
|
140
|
-
test('clearConversations does not throw', t => {
|
|
286
|
+
test('clearConversations does not throw', (t) => {
|
|
141
287
|
const settings = createMockSettings();
|
|
142
288
|
const client = new OpenAIAgentClient({
|
|
143
289
|
deps: { logger: createMockLogger(), settings },
|
|
144
290
|
});
|
|
145
291
|
t.notThrows(() => client.clearConversations());
|
|
146
292
|
});
|
|
147
|
-
test('clearConversations can be called multiple times', t => {
|
|
293
|
+
test('clearConversations can be called multiple times', (t) => {
|
|
148
294
|
const settings = createMockSettings();
|
|
149
295
|
const client = new OpenAIAgentClient({
|
|
150
296
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -155,7 +301,7 @@ test('clearConversations can be called multiple times', t => {
|
|
|
155
301
|
});
|
|
156
302
|
});
|
|
157
303
|
// ========== setReasoningEffort tests ==========
|
|
158
|
-
test('setReasoningEffort accepts valid effort levels', t => {
|
|
304
|
+
test('setReasoningEffort accepts valid effort levels', (t) => {
|
|
159
305
|
const settings = createMockSettings();
|
|
160
306
|
const client = new OpenAIAgentClient({
|
|
161
307
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -167,7 +313,7 @@ test('setReasoningEffort accepts valid effort levels', t => {
|
|
|
167
313
|
t.notThrows(() => client.setReasoningEffort(undefined));
|
|
168
314
|
});
|
|
169
315
|
// ========== setTemperature tests ==========
|
|
170
|
-
test('setTemperature accepts numeric values', t => {
|
|
316
|
+
test('setTemperature accepts numeric values', (t) => {
|
|
171
317
|
const settings = createMockSettings();
|
|
172
318
|
const client = new OpenAIAgentClient({
|
|
173
319
|
deps: { logger: createMockLogger(), settings },
|
|
@@ -178,11 +324,39 @@ test('setTemperature accepts numeric values', t => {
|
|
|
178
324
|
t.notThrows(() => client.setTemperature(undefined));
|
|
179
325
|
});
|
|
180
326
|
// ========== setRetryCallback tests ==========
|
|
181
|
-
test('setRetryCallback accepts callback function', t => {
|
|
327
|
+
test('setRetryCallback accepts callback function', (t) => {
|
|
182
328
|
const settings = createMockSettings();
|
|
183
329
|
const client = new OpenAIAgentClient({
|
|
184
330
|
deps: { logger: createMockLogger(), settings },
|
|
185
331
|
});
|
|
186
332
|
t.notThrows(() => client.setRetryCallback(() => { }));
|
|
187
333
|
});
|
|
334
|
+
test('setModel resets mentor conversation chain used by ask_mentor', async (t) => {
|
|
335
|
+
const settings = createMockSettings({
|
|
336
|
+
'agent.provider': 'mock-main-mentor-refresh',
|
|
337
|
+
'agent.model': 'mock-model',
|
|
338
|
+
'agent.mentorModel': 'mock-mentor-model',
|
|
339
|
+
'agent.mentorProvider': 'mock-mentor-refresh',
|
|
340
|
+
'app.liteMode': false,
|
|
341
|
+
});
|
|
342
|
+
const client = new OpenAIAgentClient({
|
|
343
|
+
deps: { logger: createMockLogger(), settings },
|
|
344
|
+
});
|
|
345
|
+
await client.chat('prime tools');
|
|
346
|
+
const askMentorTool = capturedMainAgentForMentorTest?.tools?.find((tool) => tool?.name === 'ask_mentor');
|
|
347
|
+
t.truthy(askMentorTool);
|
|
348
|
+
t.is(typeof askMentorTool?.invoke, 'function');
|
|
349
|
+
await askMentorTool.invoke({}, JSON.stringify({ question: 'first' }), { toolCall: { callId: 'call-1' } });
|
|
350
|
+
await askMentorTool.invoke({}, JSON.stringify({ question: 'second' }), { toolCall: { callId: 'call-2' } });
|
|
351
|
+
t.is(mentorInputs.length, 2);
|
|
352
|
+
t.true(Array.isArray(mentorInputs[0]));
|
|
353
|
+
t.true(Array.isArray(mentorInputs[1]));
|
|
354
|
+
t.is(mentorInputs[0].length, 1);
|
|
355
|
+
t.true(mentorInputs[1].length > 1);
|
|
356
|
+
client.setModel('mock-model-v2');
|
|
357
|
+
await askMentorTool.invoke({}, JSON.stringify({ question: 'third' }), { toolCall: { callId: 'call-3' } });
|
|
358
|
+
t.is(mentorInputs.length, 3);
|
|
359
|
+
t.true(Array.isArray(mentorInputs[2]));
|
|
360
|
+
t.is(mentorInputs[2].length, 1);
|
|
361
|
+
});
|
|
188
362
|
//# sourceMappingURL=openai-agent-client.public-methods.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-agent-client.public-methods.test.js","sourceRoot":"","sources":["../../source/lib/openai-agent-client.public-methods.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-agent-client.public-methods.test.js","sourceRoot":"","sources":["../../source/lib/openai-agent-client.public-methods.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,uCAAuC;AAEvC,SAAS,gBAAgB;IACvB,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;QAC1B,kBAAkB,EAAE,GAAG,EAAE,GAAE,CAAC;QAC5B,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;QACjC,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;KACP,CAAC;AACX,CAAC;AAED,SAAS,kBAAkB,CAAC,SAA8B,EAAE;IAC1D,MAAM,KAAK,GAAwB;QACjC,gBAAgB,EAAE,8BAA8B;QAChD,aAAa,EAAE,YAAY;QAC3B,GAAG,MAAM;KACV,CAAC;IACF,OAAO;QACL,GAAG,EAAE,CAAI,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAM;QACxC,GAAG,EAAE,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YAC/B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gCAAgC;AAChC,IAAI,WAAW,GAAU,EAAE,CAAC;AAC5B,MAAM,UAAU;IACd,KAAK,CAAC,GAAG,CAAC,MAAW,EAAE,MAAW,EAAE,QAAa;QAC/C,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtE,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;CACF;AAED,8BAA8B;AAC9B,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,SAAS,wBAAwB;IAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,gBAAgB,CAAC;YACf,EAAE,EAAE,8BAA8B;YAClC,KAAK,EAAE,eAAe;YACtB,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,EAAS;YAC3C,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;YAC/C,kBAAkB,EAAE,GAAG,EAAE,GAAE,CAAC;SAC7B,CAAC,CAAC;QACH,kBAAkB,GAAG,IAAI,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,IAAI,wBAAwB,GAAG,KAAK,CAAC;AACrC,IAAI,8BAA8B,GAAQ,IAAI,CAAC;AAC/C,IAAI,YAAY,GAAU,EAAE,CAAC;AAC7B,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC9B,IAAI,0BAA0B,GAAG,KAAK,CAAC;AACvC,IAAI,mBAAmB,GAAU,EAAE,CAAC;AACpC,SAAS,+BAA+B;IACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,gBAAgB,CAAC;YACf,EAAE,EAAE,0BAA0B;YAC9B,KAAK,EAAE,0BAA0B;YACjC,YAAY,EAAE,GAAG,EAAE,CACjB,CAAC;gBACC,GAAG,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;oBACxB,8BAA8B,GAAG,KAAK,CAAC;oBACvC,OAAO;wBACL,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,IAAI;wBACjB,QAAQ,EAAE,EAAE;qBACb,CAAC;gBACJ,CAAC;aACM,CAAA;YACX,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;SAChD,CAAC,CAAC;QAEH,gBAAgB,CAAC;YACf,EAAE,EAAE,qBAAqB;YACzB,KAAK,EAAE,qBAAqB;YAC5B,YAAY,EAAE,GAAG,EAAE,CACjB,CAAC;gBACC,GAAG,EAAE,KAAK,EAAE,MAAW,EAAE,MAAW,EAAE,QAAa,EAAE,EAAE;oBACrD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1B,qBAAqB,IAAI,CAAC,CAAC;oBAC3B,OAAO;wBACL,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,UAAU,qBAAqB,EAAE;wBAC9C,UAAU,EAAE,mBAAmB,qBAAqB,EAAE;wBACtD,OAAO,EAAE,EAAE;wBACX,QAAQ,EAAE,EAAE;qBACb,CAAC;gBACJ,CAAC;aACM,CAAA;YACX,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;SAChD,CAAC,CAAC;QAEH,wBAAwB,GAAG,IAAI,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,iCAAiC;IACxC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAChC,gBAAgB,CAAC;YACf,EAAE,EAAE,qBAAqB;YACzB,KAAK,EAAE,qBAAqB;YAC5B,YAAY,EAAE,GAAG,EAAE,CACjB,CAAC;gBACC,GAAG,EAAE,KAAK,EAAE,MAAW,EAAE,MAAW,EAAE,OAAY,EAAE,EAAE;oBACpD,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC,CAAC;oBACzE,OAAO;wBACL,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,IAAI;wBACjB,QAAQ,EAAE,EAAE;qBACb,CAAC;gBACJ,CAAC;aACM,CAAA;YACX,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;YAC/C,YAAY,EAAE;gBACZ,4BAA4B,EAAE,KAAK;gBACnC,sBAAsB,EAAE,KAAK;aAC9B;SACF,CAAC,CAAC;QAEH,gBAAgB,CAAC;YACf,EAAE,EAAE,oBAAoB;YACxB,KAAK,EAAE,oBAAoB;YAC3B,YAAY,EAAE,GAAG,EAAE,CACjB,CAAC;gBACC,GAAG,EAAE,KAAK,EAAE,MAAW,EAAE,MAAW,EAAE,OAAY,EAAE,EAAE;oBACpD,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBACxE,OAAO;wBACL,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,IAAI;wBACjB,QAAQ,EAAE,EAAE;qBACb,CAAC;gBACJ,CAAC;aACM,CAAA;YACX,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;YAC/C,YAAY,EAAE;gBACZ,4BAA4B,EAAE,IAAI;gBAClC,sBAAsB,EAAE,IAAI;aAC7B;SACF,CAAC,CAAC;QAEH,0BAA0B,GAAG,IAAI,CAAC;IACpC,CAAC;AACH,CAAC;AAED,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;IACnB,WAAW,GAAG,EAAE,CAAC;IACjB,wBAAwB,EAAE,CAAC;IAC3B,+BAA+B,EAAE,CAAC;IAClC,iCAAiC,EAAE,CAAC;IACpC,8BAA8B,GAAG,IAAI,CAAC;IACtC,YAAY,GAAG,EAAE,CAAC;IAClB,qBAAqB,GAAG,CAAC,CAAC;IAC1B,mBAAmB,GAAG,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,uCAAuC;AAEvC,IAAI,CAAC,qCAAqC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACtD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE/B,2CAA2C;IAC3C,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1B,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5B,0CAA0C;IAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,wDAAwD;AAExD,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,8BAA8B,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uDAAuD,EAAE,CAAC,CAAC,EAAE,EAAE;IAClE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,MAAM,CAAC,4EAA4E,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACpG,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,gBAAgB,EAAE,qBAAqB;KACxC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,oBAAoB,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAEhE,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACzC,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,MAAM,CAAC,6DAA6D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACrF,MAAM,SAAS,GAA+D,EAAE,CAAC;IACjF,IAAI,aAAiC,CAAC;IACtC,MAAM,MAAM,GAAoB;QAC9B,KAAK,EAAE,CAAC,OAAe,EAAE,IAA8B,EAAE,EAAE;YACzD,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,gBAAgB,EAAE,CAAC,EAAsB,EAAE,EAAE;YAC3C,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,kBAAkB,EAAE,GAAG,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;QACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,aAAa;QACrC,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;KACP,CAAC;IACT,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,gBAAgB,EAAE,qBAAqB;KACxC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC3B,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC1C,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE9B,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,yBAAyB,CAAC,CAAC;IAC3F,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,iDAAiD;AAEjD,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE,EAAE;IACxD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;QAClD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,2CAA2C;IAC3C,MAAM,EAAE,CAAC;IACT,CAAC,CAAC,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9C,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;QAClD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,YAAY;IACZ,MAAM,EAAE,CAAC;IAET,sDAAsD;IACtD,2DAA2D;IAC3D,CAAC,CAAC,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,oCAAoC;AAEpC,IAAI,CAAC,2DAA2D,EAAE,CAAC,CAAC,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,mBAAmB;IACnB,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/C,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;QACf,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iDAAiD;AAEjD,IAAI,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9C,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5D,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;QACf,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC5B,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iDAAiD;AAEjD,IAAI,CAAC,gDAAgD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,6CAA6C;AAE7C,IAAI,CAAC,uCAAuC,EAAE,CAAC,CAAC,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,+CAA+C;AAE/C,IAAI,CAAC,4CAA4C,EAAE,CAAC,CAAC,EAAE,EAAE;IACvD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC/E,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,gBAAgB,EAAE,0BAA0B;QAC5C,aAAa,EAAE,YAAY;QAC3B,mBAAmB,EAAE,mBAAmB;QACxC,sBAAsB,EAAE,qBAAqB;QAC7C,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjC,MAAM,aAAa,GAAG,8BAA8B,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC;IAC9G,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,OAAO,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAE/C,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1G,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAE3G,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEnC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEjC,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAE1G,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import test from 'ava';
|
|
2
2
|
import { OpenRouterError } from '../providers/openrouter.js';
|
|
3
|
-
test('OpenRouterError includes status and headers', t => {
|
|
3
|
+
test('OpenRouterError includes status and headers', (t) => {
|
|
4
4
|
const error = new OpenRouterError('Test error', 429, { 'retry-after': '5', 'x-custom': 'value' }, 'response body');
|
|
5
5
|
t.is(error.message, 'Test error');
|
|
6
6
|
t.is(error.status, 429);
|
|
@@ -8,7 +8,7 @@ test('OpenRouterError includes status and headers', t => {
|
|
|
8
8
|
t.is(error.responseBody, 'response body');
|
|
9
9
|
t.is(error.name, 'OpenRouterError');
|
|
10
10
|
});
|
|
11
|
-
test('OpenRouterError is throwable', t => {
|
|
11
|
+
test('OpenRouterError is throwable', (t) => {
|
|
12
12
|
const fn = () => {
|
|
13
13
|
throw new OpenRouterError('Error message', 500, {});
|
|
14
14
|
};
|
|
@@ -19,7 +19,7 @@ test('OpenRouterError is throwable', t => {
|
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
// ========== Exponential Backoff and Retry Logic Tests ==========
|
|
22
|
-
test('exponential backoff calculation follows correct formula', t => {
|
|
22
|
+
test('exponential backoff calculation follows correct formula', (t) => {
|
|
23
23
|
// This tests the algorithm: baseDelay * 2^attemptIndex
|
|
24
24
|
const baseDelay = 1000; // Using fixed base for predictable testing
|
|
25
25
|
// First retry (attemptIndex = 0)
|
|
@@ -35,7 +35,7 @@ test('exponential backoff calculation follows correct formula', t => {
|
|
|
35
35
|
const delay3 = baseDelay * Math.pow(2, 3);
|
|
36
36
|
t.is(delay3, 8000);
|
|
37
37
|
});
|
|
38
|
-
test('exponential backoff is capped at maximum delay', t => {
|
|
38
|
+
test('exponential backoff is capped at maximum delay', (t) => {
|
|
39
39
|
const baseDelay = 1000;
|
|
40
40
|
const maxDelay = 30000; // 30 seconds
|
|
41
41
|
// For attemptIndex = 10, exponential would be 1000 * 2^10 = 1,024,000ms
|
|
@@ -46,7 +46,7 @@ test('exponential backoff is capped at maximum delay', t => {
|
|
|
46
46
|
t.is(cappedDelay, maxDelay);
|
|
47
47
|
t.is(cappedDelay, 30000);
|
|
48
48
|
});
|
|
49
|
-
test('jitter randomizes delay between 0 and capped delay', t => {
|
|
49
|
+
test('jitter randomizes delay between 0 and capped delay', (t) => {
|
|
50
50
|
const cappedDelay = 5000;
|
|
51
51
|
// Run multiple times to verify randomization
|
|
52
52
|
const delays = [];
|
|
@@ -61,12 +61,12 @@ test('jitter randomizes delay between 0 and capped delay', t => {
|
|
|
61
61
|
const uniqueDelays = new Set(delays);
|
|
62
62
|
t.true(uniqueDelays.size > 10); // Should have variety
|
|
63
63
|
});
|
|
64
|
-
test('retry classification - 429 is retryable', t => {
|
|
64
|
+
test('retry classification - 429 is retryable', (t) => {
|
|
65
65
|
const error = new OpenRouterError('Rate limit', 429, {});
|
|
66
66
|
const isRetryable = error.status === 429 || error.status >= 500;
|
|
67
67
|
t.true(isRetryable);
|
|
68
68
|
});
|
|
69
|
-
test('retry classification - 5xx errors are retryable', t => {
|
|
69
|
+
test('retry classification - 5xx errors are retryable', (t) => {
|
|
70
70
|
const retryableStatuses = [500, 502, 503, 504];
|
|
71
71
|
for (const status of retryableStatuses) {
|
|
72
72
|
const error = new OpenRouterError(`Server error`, status, {});
|
|
@@ -74,7 +74,7 @@ test('retry classification - 5xx errors are retryable', t => {
|
|
|
74
74
|
t.true(isRetryable, `Status ${status} should be retryable`);
|
|
75
75
|
}
|
|
76
76
|
});
|
|
77
|
-
test('retry classification - 4xx errors (except 429) are NOT retryable', t => {
|
|
77
|
+
test('retry classification - 4xx errors (except 429) are NOT retryable', (t) => {
|
|
78
78
|
const nonRetryableStatuses = [400, 401, 403, 404, 422];
|
|
79
79
|
for (const status of nonRetryableStatuses) {
|
|
80
80
|
const error = new OpenRouterError(`Client error`, status, {});
|
|
@@ -82,7 +82,7 @@ test('retry classification - 4xx errors (except 429) are NOT retryable', t => {
|
|
|
82
82
|
t.false(isRetryable, `Status ${status} should NOT be retryable`);
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
|
-
test('retry classification - 2xx success codes are NOT retryable', t => {
|
|
85
|
+
test('retry classification - 2xx success codes are NOT retryable', (t) => {
|
|
86
86
|
const successStatuses = [200, 201, 204];
|
|
87
87
|
for (const status of successStatuses) {
|
|
88
88
|
const error = new OpenRouterError(`Success (shouldn't be error)`, status, {});
|
|
@@ -90,7 +90,7 @@ test('retry classification - 2xx success codes are NOT retryable', t => {
|
|
|
90
90
|
t.false(isRetryable);
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
|
-
test('retry classification - 3xx redirects are NOT retryable', t => {
|
|
93
|
+
test('retry classification - 3xx redirects are NOT retryable', (t) => {
|
|
94
94
|
const redirectStatuses = [301, 302, 304];
|
|
95
95
|
for (const status of redirectStatuses) {
|
|
96
96
|
const error = new OpenRouterError(`Redirect`, status, {});
|
|
@@ -98,20 +98,20 @@ test('retry classification - 3xx redirects are NOT retryable', t => {
|
|
|
98
98
|
t.false(isRetryable);
|
|
99
99
|
}
|
|
100
100
|
});
|
|
101
|
-
test('Retry-After header extraction from OpenRouterError', t => {
|
|
101
|
+
test('Retry-After header extraction from OpenRouterError', (t) => {
|
|
102
102
|
const error = new OpenRouterError('Rate limit', 429, { 'retry-after': '60' });
|
|
103
103
|
const retryAfter = error.headers['retry-after'];
|
|
104
104
|
t.is(retryAfter, '60');
|
|
105
105
|
const delayMs = parseInt(retryAfter, 10) * 1000;
|
|
106
106
|
t.is(delayMs, 60000); // 60 seconds in milliseconds
|
|
107
107
|
});
|
|
108
|
-
test('Retry-After header missing returns undefined', t => {
|
|
108
|
+
test('Retry-After header missing returns undefined', (t) => {
|
|
109
109
|
const error = new OpenRouterError('Server error', 503, {});
|
|
110
110
|
const retryAfter = error.headers['retry-after'];
|
|
111
111
|
t.falsy(retryAfter);
|
|
112
112
|
t.false('retry-after' in error.headers);
|
|
113
113
|
});
|
|
114
|
-
test('Retry-After header with different case sensitivity', t => {
|
|
114
|
+
test('Retry-After header with different case sensitivity', (t) => {
|
|
115
115
|
// Headers might come with different casing
|
|
116
116
|
const error1 = new OpenRouterError('Error', 429, { 'Retry-After': '30' });
|
|
117
117
|
const error2 = new OpenRouterError('Error', 429, { 'retry-after': '30' });
|
|
@@ -123,7 +123,7 @@ test('Retry-After header with different case sensitivity', t => {
|
|
|
123
123
|
t.is(error2.headers['retry-after'], '30');
|
|
124
124
|
t.is(error3.headers['RETRY-AFTER'], '30');
|
|
125
125
|
});
|
|
126
|
-
test('exponential backoff with base delay range (500-1000ms)', t => {
|
|
126
|
+
test('exponential backoff with base delay range (500-1000ms)', (t) => {
|
|
127
127
|
// Test the randomized base delay range
|
|
128
128
|
const baseDelays = [];
|
|
129
129
|
for (let i = 0; i < 100; i++) {
|
|
@@ -137,7 +137,7 @@ test('exponential backoff with base delay range (500-1000ms)', t => {
|
|
|
137
137
|
const max = Math.max(...baseDelays);
|
|
138
138
|
t.true(max - min > 200); // Should have good spread
|
|
139
139
|
});
|
|
140
|
-
test('retry delay calculation with attemptIndex progression', t => {
|
|
140
|
+
test('retry delay calculation with attemptIndex progression', (t) => {
|
|
141
141
|
const baseDelay = 750; // Mid-range
|
|
142
142
|
const maxDelay = 30000;
|
|
143
143
|
// Attempt 0 (first retry)
|
|
@@ -155,7 +155,7 @@ test('retry delay calculation with attemptIndex progression', t => {
|
|
|
155
155
|
t.is(delay1, delay0 * 2);
|
|
156
156
|
t.is(delay2, delay0 * 4);
|
|
157
157
|
});
|
|
158
|
-
test('max retry attempts limit (2 retries)', t => {
|
|
158
|
+
test('max retry attempts limit (2 retries)', (t) => {
|
|
159
159
|
const maxRetries = 2;
|
|
160
160
|
// Should allow 2 retries (3 total attempts)
|
|
161
161
|
// First attempt + 2 retries = 3 total
|
|
@@ -167,7 +167,7 @@ test('max retry attempts limit (2 retries)', t => {
|
|
|
167
167
|
}
|
|
168
168
|
t.is(attemptCount, 3); // Original + 2 retries
|
|
169
169
|
});
|
|
170
|
-
test('retry attempt index calculation', t => {
|
|
170
|
+
test('retry attempt index calculation', (t) => {
|
|
171
171
|
const maxRetries = 2;
|
|
172
172
|
// retries starts at 2
|
|
173
173
|
// attemptIndex = maxRetries - retries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-agent-client.test.js","sourceRoot":"","sources":["../../source/lib/openai-agent-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"openai-agent-client.test.js","sourceRoot":"","sources":["../../source/lib/openai-agent-client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true when the error is transient and the request can be retried.
|
|
3
|
+
*/
|
|
4
|
+
export declare function isTransientError(error: unknown): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Extracts the Retry-After header value (in ms) from a supported error type.
|
|
7
|
+
* Returns `undefined` when the header is absent.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getRetryAfterMs(error: unknown): number | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Computes an exponential-backoff delay with full jitter.
|
|
12
|
+
*
|
|
13
|
+
* Formula: random in [0, min(baseDelay * 2^attemptIndex, maxDelay)]
|
|
14
|
+
* where baseDelay ∈ [500, 1000) ms, maxDelay = 30 000 ms.
|
|
15
|
+
*
|
|
16
|
+
* @param attemptIndex Zero-based retry attempt (0 = first retry).
|
|
17
|
+
* @param random RNG returning [0, 1). Defaults to Math.random.
|
|
18
|
+
*/
|
|
19
|
+
export declare function computeBackoffDelay(attemptIndex: number, random?: () => number): number;
|
|
20
|
+
export interface RetryOptions {
|
|
21
|
+
/** Maximum number of retries (default 2). */
|
|
22
|
+
retries: number;
|
|
23
|
+
/** RNG returning [0, 1). Defaults to Math.random. Primarily for deterministic tests. */
|
|
24
|
+
random?: () => number;
|
|
25
|
+
/** Sleep implementation. Defaults to setTimeout-based sleep. Primarily for tests. */
|
|
26
|
+
sleep?: (ms: number) => Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Called just before each retry sleep.
|
|
29
|
+
* Receives attempt metadata so callers can log / notify.
|
|
30
|
+
*/
|
|
31
|
+
onRetry?: (info: {
|
|
32
|
+
attemptIndex: number;
|
|
33
|
+
delay: number;
|
|
34
|
+
error: unknown;
|
|
35
|
+
}) => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Runs `operation`, retrying on transient errors with exponential backoff + jitter.
|
|
39
|
+
*
|
|
40
|
+
* Mirrors the behaviour previously embedded in OpenAIAgentClient.#executeWithRetry.
|
|
41
|
+
*/
|
|
42
|
+
export declare function executeWithRetry<T>(operation: () => Promise<T>, opts: RetryOptions): Promise<T>;
|
|
43
|
+
//# sourceMappingURL=retry-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-strategy.d.ts","sourceRoot":"","sources":["../../source/lib/retry-strategy.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAmBxD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAmBlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,MAAoB,GAAG,MAAM,CAOpG;AAED,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,qFAAqF;IACrF,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACnF;AAMD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CA0BrG"}
|