indusagi 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dist/agent/agent-loop.d.ts +21 -0
- package/dist/agent/agent-loop.d.ts.map +1 -0
- package/dist/agent/agent-loop.js +307 -0
- package/dist/agent/agent.d.ts +122 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +347 -0
- package/dist/agent/index.d.ts +5 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/proxy.d.ts +85 -0
- package/dist/agent/proxy.d.ts.map +1 -0
- package/dist/agent/proxy.js +267 -0
- package/dist/agent/types.d.ts +178 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +1 -0
- package/dist/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +1 -0
- package/dist/ai/api-registry.d.ts +20 -0
- package/dist/ai/api-registry.d.ts.map +1 -0
- package/dist/ai/api-registry.js +43 -0
- package/dist/ai/cli.d.ts +3 -0
- package/dist/ai/cli.d.ts.map +1 -0
- package/dist/ai/cli.js +115 -0
- package/dist/ai/env-api-keys.d.ts +9 -0
- package/dist/ai/env-api-keys.d.ts.map +1 -0
- package/dist/ai/env-api-keys.js +90 -0
- package/dist/ai/index.d.ts +20 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +19 -0
- package/dist/ai/models.d.ts +21 -0
- package/dist/ai/models.d.ts.map +1 -0
- package/dist/ai/models.generated.d.ts +11500 -0
- package/dist/ai/models.generated.d.ts.map +1 -0
- package/dist/ai/models.generated.js +11350 -0
- package/dist/ai/models.js +47 -0
- package/dist/ai/providers/amazon-bedrock.d.ts +15 -0
- package/dist/ai/providers/amazon-bedrock.d.ts.map +1 -0
- package/dist/ai/providers/amazon-bedrock.js +510 -0
- package/dist/ai/providers/anthropic.d.ts +13 -0
- package/dist/ai/providers/anthropic.d.ts.map +1 -0
- package/dist/ai/providers/anthropic.js +584 -0
- package/dist/ai/providers/azure-openai-responses.d.ts +15 -0
- package/dist/ai/providers/azure-openai-responses.d.ts.map +1 -0
- package/dist/ai/providers/azure-openai-responses.js +183 -0
- package/dist/ai/providers/google-gemini-cli.d.ts +74 -0
- package/dist/ai/providers/google-gemini-cli.d.ts.map +1 -0
- package/dist/ai/providers/google-gemini-cli.js +807 -0
- package/dist/ai/providers/google-shared.d.ts +64 -0
- package/dist/ai/providers/google-shared.d.ts.map +1 -0
- package/dist/ai/providers/google-shared.js +300 -0
- package/dist/ai/providers/google-vertex.d.ts +15 -0
- package/dist/ai/providers/google-vertex.d.ts.map +1 -0
- package/dist/ai/providers/google-vertex.js +370 -0
- package/dist/ai/providers/google.d.ts +13 -0
- package/dist/ai/providers/google.d.ts.map +1 -0
- package/dist/ai/providers/google.js +351 -0
- package/dist/ai/providers/openai-codex-responses.d.ts +9 -0
- package/dist/ai/providers/openai-codex-responses.d.ts.map +1 -0
- package/dist/ai/providers/openai-codex-responses.js +341 -0
- package/dist/ai/providers/openai-completions.d.ts +15 -0
- package/dist/ai/providers/openai-completions.d.ts.map +1 -0
- package/dist/ai/providers/openai-completions.js +701 -0
- package/dist/ai/providers/openai-responses-shared.d.ts +17 -0
- package/dist/ai/providers/openai-responses-shared.d.ts.map +1 -0
- package/dist/ai/providers/openai-responses-shared.js +423 -0
- package/dist/ai/providers/openai-responses.d.ts +13 -0
- package/dist/ai/providers/openai-responses.d.ts.map +1 -0
- package/dist/ai/providers/openai-responses.js +182 -0
- package/dist/ai/providers/register-builtins.d.ts +3 -0
- package/dist/ai/providers/register-builtins.d.ts.map +1 -0
- package/dist/ai/providers/register-builtins.js +62 -0
- package/dist/ai/providers/simple-options.d.ts +8 -0
- package/dist/ai/providers/simple-options.d.ts.map +1 -0
- package/dist/ai/providers/simple-options.js +31 -0
- package/dist/ai/providers/transform-messages.d.ts +8 -0
- package/dist/ai/providers/transform-messages.d.ts.map +1 -0
- package/dist/ai/providers/transform-messages.js +149 -0
- package/dist/ai/stream.d.ts +8 -0
- package/dist/ai/stream.d.ts.map +1 -0
- package/dist/ai/stream.js +34 -0
- package/dist/ai/types.d.ts +234 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +1 -0
- package/dist/ai/utils/event-stream.d.ts +21 -0
- package/dist/ai/utils/event-stream.d.ts.map +1 -0
- package/dist/ai/utils/event-stream.js +76 -0
- package/dist/ai/utils/json-parse.d.ts +9 -0
- package/dist/ai/utils/json-parse.d.ts.map +1 -0
- package/dist/ai/utils/json-parse.js +28 -0
- package/dist/ai/utils/oauth/anthropic.d.ts +17 -0
- package/dist/ai/utils/oauth/anthropic.d.ts.map +1 -0
- package/dist/ai/utils/oauth/anthropic.js +103 -0
- package/dist/ai/utils/oauth/github-copilot.d.ts +30 -0
- package/dist/ai/utils/oauth/github-copilot.d.ts.map +1 -0
- package/dist/ai/utils/oauth/github-copilot.js +280 -0
- package/dist/ai/utils/oauth/google-antigravity.d.ts +26 -0
- package/dist/ai/utils/oauth/google-antigravity.d.ts.map +1 -0
- package/dist/ai/utils/oauth/google-antigravity.js +355 -0
- package/dist/ai/utils/oauth/google-gemini-cli.d.ts +26 -0
- package/dist/ai/utils/oauth/google-gemini-cli.d.ts.map +1 -0
- package/dist/ai/utils/oauth/google-gemini-cli.js +461 -0
- package/dist/ai/utils/oauth/index.d.ts +50 -0
- package/dist/ai/utils/oauth/index.d.ts.map +1 -0
- package/dist/ai/utils/oauth/index.js +106 -0
- package/dist/ai/utils/oauth/openai-codex.d.ts +34 -0
- package/dist/ai/utils/oauth/openai-codex.d.ts.map +1 -0
- package/dist/ai/utils/oauth/openai-codex.js +379 -0
- package/dist/ai/utils/oauth/pkce.d.ts +13 -0
- package/dist/ai/utils/oauth/pkce.d.ts.map +1 -0
- package/dist/ai/utils/oauth/pkce.js +30 -0
- package/dist/ai/utils/oauth/types.d.ts +47 -0
- package/dist/ai/utils/oauth/types.d.ts.map +1 -0
- package/dist/ai/utils/oauth/types.js +1 -0
- package/dist/ai/utils/overflow.d.ts +51 -0
- package/dist/ai/utils/overflow.d.ts.map +1 -0
- package/dist/ai/utils/overflow.js +111 -0
- package/dist/ai/utils/sanitize-unicode.d.ts +22 -0
- package/dist/ai/utils/sanitize-unicode.d.ts.map +1 -0
- package/dist/ai/utils/sanitize-unicode.js +25 -0
- package/dist/ai/utils/typebox-helpers.d.ts +17 -0
- package/dist/ai/utils/typebox-helpers.d.ts.map +1 -0
- package/dist/ai/utils/typebox-helpers.js +20 -0
- package/dist/ai/utils/validation.d.ts +18 -0
- package/dist/ai/utils/validation.d.ts.map +1 -0
- package/dist/ai/utils/validation.js +71 -0
- package/dist/ai.d.ts +2 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/tui/autocomplete.d.ts +47 -0
- package/dist/tui/autocomplete.d.ts.map +1 -0
- package/dist/tui/autocomplete.js +474 -0
- package/dist/tui/components/box.d.ts +24 -0
- package/dist/tui/components/box.d.ts.map +1 -0
- package/dist/tui/components/box.js +100 -0
- package/dist/tui/components/cancellable-loader.d.ts +22 -0
- package/dist/tui/components/cancellable-loader.d.ts.map +1 -0
- package/dist/tui/components/cancellable-loader.js +35 -0
- package/dist/tui/components/editor.d.ts +171 -0
- package/dist/tui/components/editor.d.ts.map +1 -0
- package/dist/tui/components/editor.js +1540 -0
- package/dist/tui/components/image.d.ts +28 -0
- package/dist/tui/components/image.d.ts.map +1 -0
- package/dist/tui/components/image.js +60 -0
- package/dist/tui/components/input.d.ts +25 -0
- package/dist/tui/components/input.d.ts.map +1 -0
- package/dist/tui/components/input.js +297 -0
- package/dist/tui/components/loader.d.ts +21 -0
- package/dist/tui/components/loader.d.ts.map +1 -0
- package/dist/tui/components/loader.js +45 -0
- package/dist/tui/components/markdown.d.ts +89 -0
- package/dist/tui/components/markdown.d.ts.map +1 -0
- package/dist/tui/components/markdown.js +525 -0
- package/dist/tui/components/select-list.d.ts +32 -0
- package/dist/tui/components/select-list.d.ts.map +1 -0
- package/dist/tui/components/select-list.js +147 -0
- package/dist/tui/components/settings-list.d.ts +50 -0
- package/dist/tui/components/settings-list.d.ts.map +1 -0
- package/dist/tui/components/settings-list.js +176 -0
- package/dist/tui/components/spacer.d.ts +12 -0
- package/dist/tui/components/spacer.d.ts.map +1 -0
- package/dist/tui/components/spacer.js +21 -0
- package/dist/tui/components/text.d.ts +19 -0
- package/dist/tui/components/text.d.ts.map +1 -0
- package/dist/tui/components/text.js +80 -0
- package/dist/tui/components/truncated-text.d.ts +13 -0
- package/dist/tui/components/truncated-text.d.ts.map +1 -0
- package/dist/tui/components/truncated-text.js +47 -0
- package/dist/tui/editor-component.d.ts +35 -0
- package/dist/tui/editor-component.d.ts.map +1 -0
- package/dist/tui/editor-component.js +1 -0
- package/dist/tui/fuzzy.d.ts +16 -0
- package/dist/tui/fuzzy.d.ts.map +1 -0
- package/dist/tui/fuzzy.js +106 -0
- package/dist/tui/index.d.ts +23 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +31 -0
- package/dist/tui/keybindings.d.ts +39 -0
- package/dist/tui/keybindings.d.ts.map +1 -0
- package/dist/tui/keybindings.js +110 -0
- package/dist/tui/keys.d.ts +160 -0
- package/dist/tui/keys.d.ts.map +1 -0
- package/dist/tui/keys.js +939 -0
- package/dist/tui/stdin-buffer.d.ts +48 -0
- package/dist/tui/stdin-buffer.d.ts.map +1 -0
- package/dist/tui/stdin-buffer.js +315 -0
- package/dist/tui/terminal-image.d.ts +67 -0
- package/dist/tui/terminal-image.d.ts.map +1 -0
- package/dist/tui/terminal-image.js +277 -0
- package/dist/tui/terminal.d.ts +63 -0
- package/dist/tui/terminal.d.ts.map +1 -0
- package/dist/tui/terminal.js +174 -0
- package/dist/tui/tui.d.ts +191 -0
- package/dist/tui/tui.d.ts.map +1 -0
- package/dist/tui/tui.js +881 -0
- package/dist/tui/utils.d.ts +78 -0
- package/dist/tui/utils.d.ts.map +1 -0
- package/dist/tui/utils.js +801 -0
- package/dist/tui.d.ts +2 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +1 -0
- package/dist/webui/ChatPanel.d.ts +28 -0
- package/dist/webui/ChatPanel.d.ts.map +1 -0
- package/dist/webui/ChatPanel.js +192 -0
- package/dist/webui/components/AgentInterface.d.ts +39 -0
- package/dist/webui/components/AgentInterface.d.ts.map +1 -0
- package/dist/webui/components/AgentInterface.js +370 -0
- package/dist/webui/components/AttachmentTile.d.ts +12 -0
- package/dist/webui/components/AttachmentTile.d.ts.map +1 -0
- package/dist/webui/components/AttachmentTile.js +110 -0
- package/dist/webui/components/ConsoleBlock.d.ts +12 -0
- package/dist/webui/components/ConsoleBlock.d.ts.map +1 -0
- package/dist/webui/components/ConsoleBlock.js +83 -0
- package/dist/webui/components/CustomProviderCard.d.ts +17 -0
- package/dist/webui/components/CustomProviderCard.d.ts.map +1 -0
- package/dist/webui/components/CustomProviderCard.js +109 -0
- package/dist/webui/components/ExpandableSection.d.ts +15 -0
- package/dist/webui/components/ExpandableSection.d.ts.map +1 -0
- package/dist/webui/components/ExpandableSection.js +62 -0
- package/dist/webui/components/Input.d.ts +26 -0
- package/dist/webui/components/Input.d.ts.map +1 -0
- package/dist/webui/components/Input.js +56 -0
- package/dist/webui/components/MessageEditor.d.ts +44 -0
- package/dist/webui/components/MessageEditor.d.ts.map +1 -0
- package/dist/webui/components/MessageEditor.js +413 -0
- package/dist/webui/components/MessageList.d.ts +14 -0
- package/dist/webui/components/MessageList.d.ts.map +1 -0
- package/dist/webui/components/MessageList.js +103 -0
- package/dist/webui/components/Messages.d.ts +94 -0
- package/dist/webui/components/Messages.d.ts.map +1 -0
- package/dist/webui/components/Messages.js +351 -0
- package/dist/webui/components/ProviderKeyInput.d.ts +16 -0
- package/dist/webui/components/ProviderKeyInput.d.ts.map +1 -0
- package/dist/webui/components/ProviderKeyInput.js +170 -0
- package/dist/webui/components/SandboxedIframe.d.ts +85 -0
- package/dist/webui/components/SandboxedIframe.d.ts.map +1 -0
- package/dist/webui/components/SandboxedIframe.js +510 -0
- package/dist/webui/components/StreamingMessageContainer.d.ts +19 -0
- package/dist/webui/components/StreamingMessageContainer.d.ts.map +1 -0
- package/dist/webui/components/StreamingMessageContainer.js +116 -0
- package/dist/webui/components/ThinkingBlock.d.ts +11 -0
- package/dist/webui/components/ThinkingBlock.d.ts.map +1 -0
- package/dist/webui/components/ThinkingBlock.js +57 -0
- package/dist/webui/components/message-renderer-registry.d.ts +12 -0
- package/dist/webui/components/message-renderer-registry.d.ts.map +1 -0
- package/dist/webui/components/message-renderer-registry.js +11 -0
- package/dist/webui/components/sandbox/ArtifactsRuntimeProvider.d.ts +35 -0
- package/dist/webui/components/sandbox/ArtifactsRuntimeProvider.d.ts.map +1 -0
- package/dist/webui/components/sandbox/ArtifactsRuntimeProvider.js +188 -0
- package/dist/webui/components/sandbox/AttachmentsRuntimeProvider.d.ts +17 -0
- package/dist/webui/components/sandbox/AttachmentsRuntimeProvider.d.ts.map +1 -0
- package/dist/webui/components/sandbox/AttachmentsRuntimeProvider.js +63 -0
- package/dist/webui/components/sandbox/ConsoleRuntimeProvider.d.ts +42 -0
- package/dist/webui/components/sandbox/ConsoleRuntimeProvider.d.ts.map +1 -0
- package/dist/webui/components/sandbox/ConsoleRuntimeProvider.js +160 -0
- package/dist/webui/components/sandbox/FileDownloadRuntimeProvider.d.ts +30 -0
- package/dist/webui/components/sandbox/FileDownloadRuntimeProvider.d.ts.map +1 -0
- package/dist/webui/components/sandbox/FileDownloadRuntimeProvider.js +96 -0
- package/dist/webui/components/sandbox/RuntimeMessageBridge.d.ts +19 -0
- package/dist/webui/components/sandbox/RuntimeMessageBridge.d.ts.map +1 -0
- package/dist/webui/components/sandbox/RuntimeMessageBridge.js +73 -0
- package/dist/webui/components/sandbox/RuntimeMessageRouter.d.ts +65 -0
- package/dist/webui/components/sandbox/RuntimeMessageRouter.d.ts.map +1 -0
- package/dist/webui/components/sandbox/RuntimeMessageRouter.js +167 -0
- package/dist/webui/components/sandbox/SandboxRuntimeProvider.d.ts +48 -0
- package/dist/webui/components/sandbox/SandboxRuntimeProvider.d.ts.map +1 -0
- package/dist/webui/components/sandbox/SandboxRuntimeProvider.js +1 -0
- package/dist/webui/dialogs/ApiKeyPromptDialog.d.ts +15 -0
- package/dist/webui/dialogs/ApiKeyPromptDialog.d.ts.map +1 -0
- package/dist/webui/dialogs/ApiKeyPromptDialog.js +78 -0
- package/dist/webui/dialogs/AttachmentOverlay.d.ts +32 -0
- package/dist/webui/dialogs/AttachmentOverlay.d.ts.map +1 -0
- package/dist/webui/dialogs/AttachmentOverlay.js +575 -0
- package/dist/webui/dialogs/CustomProviderDialog.d.ts +25 -0
- package/dist/webui/dialogs/CustomProviderDialog.d.ts.map +1 -0
- package/dist/webui/dialogs/CustomProviderDialog.js +269 -0
- package/dist/webui/dialogs/ModelSelector.d.ts +27 -0
- package/dist/webui/dialogs/ModelSelector.d.ts.map +1 -0
- package/dist/webui/dialogs/ModelSelector.js +319 -0
- package/dist/webui/dialogs/PersistentStorageDialog.d.ts +17 -0
- package/dist/webui/dialogs/PersistentStorageDialog.d.ts.map +1 -0
- package/dist/webui/dialogs/PersistentStorageDialog.js +146 -0
- package/dist/webui/dialogs/ProvidersModelsTab.d.ts +20 -0
- package/dist/webui/dialogs/ProvidersModelsTab.d.ts.map +1 -0
- package/dist/webui/dialogs/ProvidersModelsTab.js +190 -0
- package/dist/webui/dialogs/SessionListDialog.d.ts +19 -0
- package/dist/webui/dialogs/SessionListDialog.d.ts.map +1 -0
- package/dist/webui/dialogs/SessionListDialog.js +153 -0
- package/dist/webui/dialogs/SettingsDialog.d.ts +30 -0
- package/dist/webui/dialogs/SettingsDialog.d.ts.map +1 -0
- package/dist/webui/dialogs/SettingsDialog.js +228 -0
- package/dist/webui/index.d.ts +65 -0
- package/dist/webui/index.d.ts.map +1 -0
- package/dist/webui/index.js +67 -0
- package/dist/webui/prompts/prompts.d.ts +11 -0
- package/dist/webui/prompts/prompts.d.ts.map +1 -0
- package/dist/webui/prompts/prompts.js +271 -0
- package/dist/webui/storage/app-storage.d.ts +33 -0
- package/dist/webui/storage/app-storage.d.ts.map +1 -0
- package/dist/webui/storage/app-storage.js +37 -0
- package/dist/webui/storage/backends/indexeddb-storage-backend.d.ts +27 -0
- package/dist/webui/storage/backends/indexeddb-storage-backend.d.ts.map +1 -0
- package/dist/webui/storage/backends/indexeddb-storage-backend.js +165 -0
- package/dist/webui/storage/store.d.ts +23 -0
- package/dist/webui/storage/store.d.ts.map +1 -0
- package/dist/webui/storage/store.js +25 -0
- package/dist/webui/storage/stores/custom-providers-store.d.ts +25 -0
- package/dist/webui/storage/stores/custom-providers-store.d.ts.map +1 -0
- package/dist/webui/storage/stores/custom-providers-store.js +34 -0
- package/dist/webui/storage/stores/provider-keys-store.d.ts +14 -0
- package/dist/webui/storage/stores/provider-keys-store.d.ts.map +1 -0
- package/dist/webui/storage/stores/provider-keys-store.js +26 -0
- package/dist/webui/storage/stores/sessions-store.d.ts +32 -0
- package/dist/webui/storage/stores/sessions-store.d.ts.map +1 -0
- package/dist/webui/storage/stores/sessions-store.js +112 -0
- package/dist/webui/storage/stores/settings-store.d.ts +14 -0
- package/dist/webui/storage/stores/settings-store.d.ts.map +1 -0
- package/dist/webui/storage/stores/settings-store.js +27 -0
- package/dist/webui/storage/types.d.ts +176 -0
- package/dist/webui/storage/types.d.ts.map +1 -0
- package/dist/webui/storage/types.js +1 -0
- package/dist/webui/tools/artifacts/ArtifactElement.d.ts +9 -0
- package/dist/webui/tools/artifacts/ArtifactElement.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/ArtifactElement.js +10 -0
- package/dist/webui/tools/artifacts/ArtifactPill.d.ts +4 -0
- package/dist/webui/tools/artifacts/ArtifactPill.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/ArtifactPill.js +22 -0
- package/dist/webui/tools/artifacts/Console.d.ts +18 -0
- package/dist/webui/tools/artifacts/Console.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/Console.js +94 -0
- package/dist/webui/tools/artifacts/DocxArtifact.d.ts +22 -0
- package/dist/webui/tools/artifacts/DocxArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/DocxArtifact.js +207 -0
- package/dist/webui/tools/artifacts/ExcelArtifact.d.ts +24 -0
- package/dist/webui/tools/artifacts/ExcelArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/ExcelArtifact.js +215 -0
- package/dist/webui/tools/artifacts/GenericArtifact.d.ts +19 -0
- package/dist/webui/tools/artifacts/GenericArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/GenericArtifact.js +116 -0
- package/dist/webui/tools/artifacts/HtmlArtifact.d.ts +27 -0
- package/dist/webui/tools/artifacts/HtmlArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/HtmlArtifact.js +188 -0
- package/dist/webui/tools/artifacts/ImageArtifact.d.ts +20 -0
- package/dist/webui/tools/artifacts/ImageArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/ImageArtifact.js +119 -0
- package/dist/webui/tools/artifacts/MarkdownArtifact.d.ts +19 -0
- package/dist/webui/tools/artifacts/MarkdownArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/MarkdownArtifact.js +81 -0
- package/dist/webui/tools/artifacts/PdfArtifact.d.ts +25 -0
- package/dist/webui/tools/artifacts/PdfArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/PdfArtifact.js +183 -0
- package/dist/webui/tools/artifacts/SvgArtifact.d.ts +18 -0
- package/dist/webui/tools/artifacts/SvgArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/SvgArtifact.js +77 -0
- package/dist/webui/tools/artifacts/TextArtifact.d.ts +19 -0
- package/dist/webui/tools/artifacts/TextArtifact.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/TextArtifact.js +143 -0
- package/dist/webui/tools/artifacts/artifacts-tool-renderer.d.ts +11 -0
- package/dist/webui/tools/artifacts/artifacts-tool-renderer.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/artifacts-tool-renderer.js +271 -0
- package/dist/webui/tools/artifacts/artifacts.d.ts +63 -0
- package/dist/webui/tools/artifacts/artifacts.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/artifacts.js +658 -0
- package/dist/webui/tools/artifacts/index.d.ts +8 -0
- package/dist/webui/tools/artifacts/index.d.ts.map +1 -0
- package/dist/webui/tools/artifacts/index.js +7 -0
- package/dist/webui/tools/extract-document.d.ts +24 -0
- package/dist/webui/tools/extract-document.d.ts.map +1 -0
- package/dist/webui/tools/extract-document.js +215 -0
- package/dist/webui/tools/index.d.ts +16 -0
- package/dist/webui/tools/index.d.ts.map +1 -0
- package/dist/webui/tools/index.js +32 -0
- package/dist/webui/tools/javascript-repl.d.ts +44 -0
- package/dist/webui/tools/javascript-repl.d.ts.map +1 -0
- package/dist/webui/tools/javascript-repl.js +223 -0
- package/dist/webui/tools/renderer-registry.d.ts +23 -0
- package/dist/webui/tools/renderer-registry.d.ts.map +1 -0
- package/dist/webui/tools/renderer-registry.js +106 -0
- package/dist/webui/tools/renderers/BashRenderer.d.ts +10 -0
- package/dist/webui/tools/renderers/BashRenderer.d.ts.map +1 -0
- package/dist/webui/tools/renderers/BashRenderer.js +41 -0
- package/dist/webui/tools/renderers/CalculateRenderer.d.ts +10 -0
- package/dist/webui/tools/renderers/CalculateRenderer.d.ts.map +1 -0
- package/dist/webui/tools/renderers/CalculateRenderer.js +44 -0
- package/dist/webui/tools/renderers/DefaultRenderer.d.ts +6 -0
- package/dist/webui/tools/renderers/DefaultRenderer.d.ts.map +1 -0
- package/dist/webui/tools/renderers/DefaultRenderer.js +93 -0
- package/dist/webui/tools/renderers/GetCurrentTimeRenderer.d.ts +10 -0
- package/dist/webui/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -0
- package/dist/webui/tools/renderers/GetCurrentTimeRenderer.js +71 -0
- package/dist/webui/tools/types.d.ts +10 -0
- package/dist/webui/tools/types.d.ts.map +1 -0
- package/dist/webui/tools/types.js +1 -0
- package/dist/webui/utils/attachment-utils.d.ts +19 -0
- package/dist/webui/utils/attachment-utils.d.ts.map +1 -0
- package/dist/webui/utils/attachment-utils.js +414 -0
- package/dist/webui/utils/auth-token.d.ts +3 -0
- package/dist/webui/utils/auth-token.d.ts.map +1 -0
- package/dist/webui/utils/auth-token.js +18 -0
- package/dist/webui/utils/format.d.ts +6 -0
- package/dist/webui/utils/format.d.ts.map +1 -0
- package/dist/webui/utils/format.js +46 -0
- package/dist/webui/utils/i18n.d.ts +636 -0
- package/dist/webui/utils/i18n.d.ts.map +1 -0
- package/dist/webui/utils/i18n.js +417 -0
- package/dist/webui/utils/model-discovery.d.ts +38 -0
- package/dist/webui/utils/model-discovery.d.ts.map +1 -0
- package/dist/webui/utils/model-discovery.js +242 -0
- package/dist/webui/utils/proxy-utils.d.ts +45 -0
- package/dist/webui/utils/proxy-utils.d.ts.map +1 -0
- package/dist/webui/utils/proxy-utils.js +115 -0
- package/dist/webui/utils/test-sessions.d.ts +359 -0
- package/dist/webui/utils/test-sessions.d.ts.map +1 -0
- package/dist/webui/utils/test-sessions.js +2324 -0
- package/dist/webui.d.ts +2 -0
- package/dist/webui.d.ts.map +1 -0
- package/dist/webui.js +1 -0
- package/package.json +105 -0
package/README.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# indusagi
|
|
2
|
+
|
|
3
|
+
All-in-one package that re-exports:
|
|
4
|
+
|
|
5
|
+
- `indusagi-ai`
|
|
6
|
+
- `indusagi-agent`
|
|
7
|
+
- `indusagi-tui`
|
|
8
|
+
- `indusagi-webui`
|
|
9
|
+
- `indusagi-coding-agent`
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { getModel } from "indusagi/ai";
|
|
15
|
+
import { Agent } from "indusagi/agent";
|
|
16
|
+
import { TUI } from "indusagi/tui";
|
|
17
|
+
import { ChatPanel } from "indusagi/webui";
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Or import everything:
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import * as indusagi from "indusagi";
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent loop that works with AgentMessage throughout.
|
|
3
|
+
* Transforms to Message[] only at the LLM call boundary.
|
|
4
|
+
*/
|
|
5
|
+
import { EventStream } from "../ai/index.js";
|
|
6
|
+
import type { AgentContext, AgentEvent, AgentLoopConfig, AgentMessage, StreamFn } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Start an agent loop with a new prompt message.
|
|
9
|
+
* The prompt is added to the context and events are emitted for it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function agentLoop(prompts: AgentMessage[], context: AgentContext, config: AgentLoopConfig, signal?: AbortSignal, streamFn?: StreamFn): EventStream<AgentEvent, AgentMessage[]>;
|
|
12
|
+
/**
|
|
13
|
+
* Continue an agent loop from the current context without adding a new message.
|
|
14
|
+
* Used for retries - context already has user message or tool results.
|
|
15
|
+
*
|
|
16
|
+
* **Important:** The last message in context must convert to a `user` or `toolResult` message
|
|
17
|
+
* via `convertToLlm`. If it doesn't, the LLM provider will reject the request.
|
|
18
|
+
* This cannot be validated here since `convertToLlm` is only called once per turn.
|
|
19
|
+
*/
|
|
20
|
+
export declare function agentLoopContinue(context: AgentContext, config: AgentLoopConfig, signal?: AbortSignal, streamFn?: StreamFn): EventStream<AgentEvent, AgentMessage[]>;
|
|
21
|
+
//# sourceMappingURL=agent-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGN,WAAW,EAIX,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,YAAY,EAGZ,QAAQ,EACR,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,SAAS,CACxB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,GACjB,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAqBzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,GACjB,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAsBzC"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent loop that works with AgentMessage throughout.
|
|
3
|
+
* Transforms to Message[] only at the LLM call boundary.
|
|
4
|
+
*/
|
|
5
|
+
import { EventStream, streamSimple, validateToolArguments, } from "../ai/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Start an agent loop with a new prompt message.
|
|
8
|
+
* The prompt is added to the context and events are emitted for it.
|
|
9
|
+
*/
|
|
10
|
+
export function agentLoop(prompts, context, config, signal, streamFn) {
|
|
11
|
+
const stream = createAgentStream();
|
|
12
|
+
(async () => {
|
|
13
|
+
const newMessages = [...prompts];
|
|
14
|
+
const currentContext = {
|
|
15
|
+
...context,
|
|
16
|
+
messages: [...context.messages, ...prompts],
|
|
17
|
+
};
|
|
18
|
+
stream.push({ type: "agent_start" });
|
|
19
|
+
stream.push({ type: "turn_start" });
|
|
20
|
+
for (const prompt of prompts) {
|
|
21
|
+
stream.push({ type: "message_start", message: prompt });
|
|
22
|
+
stream.push({ type: "message_end", message: prompt });
|
|
23
|
+
}
|
|
24
|
+
await runLoop(currentContext, newMessages, config, signal, stream, streamFn);
|
|
25
|
+
})();
|
|
26
|
+
return stream;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Continue an agent loop from the current context without adding a new message.
|
|
30
|
+
* Used for retries - context already has user message or tool results.
|
|
31
|
+
*
|
|
32
|
+
* **Important:** The last message in context must convert to a `user` or `toolResult` message
|
|
33
|
+
* via `convertToLlm`. If it doesn't, the LLM provider will reject the request.
|
|
34
|
+
* This cannot be validated here since `convertToLlm` is only called once per turn.
|
|
35
|
+
*/
|
|
36
|
+
export function agentLoopContinue(context, config, signal, streamFn) {
|
|
37
|
+
if (context.messages.length === 0) {
|
|
38
|
+
throw new Error("Cannot continue: no messages in context");
|
|
39
|
+
}
|
|
40
|
+
if (context.messages[context.messages.length - 1].role === "assistant") {
|
|
41
|
+
throw new Error("Cannot continue from message role: assistant");
|
|
42
|
+
}
|
|
43
|
+
const stream = createAgentStream();
|
|
44
|
+
(async () => {
|
|
45
|
+
const newMessages = [];
|
|
46
|
+
const currentContext = { ...context };
|
|
47
|
+
stream.push({ type: "agent_start" });
|
|
48
|
+
stream.push({ type: "turn_start" });
|
|
49
|
+
await runLoop(currentContext, newMessages, config, signal, stream, streamFn);
|
|
50
|
+
})();
|
|
51
|
+
return stream;
|
|
52
|
+
}
|
|
53
|
+
function createAgentStream() {
|
|
54
|
+
return new EventStream((event) => event.type === "agent_end", (event) => (event.type === "agent_end" ? event.messages : []));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Main loop logic shared by agentLoop and agentLoopContinue.
|
|
58
|
+
*/
|
|
59
|
+
async function runLoop(currentContext, newMessages, config, signal, stream, streamFn) {
|
|
60
|
+
let firstTurn = true;
|
|
61
|
+
// Check for steering messages at start (user may have typed while waiting)
|
|
62
|
+
let pendingMessages = (await config.getSteeringMessages?.()) || [];
|
|
63
|
+
// Outer loop: continues when queued follow-up messages arrive after agent would stop
|
|
64
|
+
while (true) {
|
|
65
|
+
let hasMoreToolCalls = true;
|
|
66
|
+
let steeringAfterTools = null;
|
|
67
|
+
// Inner loop: process tool calls and steering messages
|
|
68
|
+
while (hasMoreToolCalls || pendingMessages.length > 0) {
|
|
69
|
+
if (!firstTurn) {
|
|
70
|
+
stream.push({ type: "turn_start" });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
firstTurn = false;
|
|
74
|
+
}
|
|
75
|
+
// Process pending messages (inject before next assistant response)
|
|
76
|
+
if (pendingMessages.length > 0) {
|
|
77
|
+
for (const message of pendingMessages) {
|
|
78
|
+
stream.push({ type: "message_start", message });
|
|
79
|
+
stream.push({ type: "message_end", message });
|
|
80
|
+
currentContext.messages.push(message);
|
|
81
|
+
newMessages.push(message);
|
|
82
|
+
}
|
|
83
|
+
pendingMessages = [];
|
|
84
|
+
}
|
|
85
|
+
// Stream assistant response
|
|
86
|
+
const message = await streamAssistantResponse(currentContext, config, signal, stream, streamFn);
|
|
87
|
+
newMessages.push(message);
|
|
88
|
+
if (message.stopReason === "error" || message.stopReason === "aborted") {
|
|
89
|
+
stream.push({ type: "turn_end", message, toolResults: [] });
|
|
90
|
+
stream.push({ type: "agent_end", messages: newMessages });
|
|
91
|
+
stream.end(newMessages);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
// Check for tool calls
|
|
95
|
+
const toolCalls = message.content.filter((c) => c.type === "toolCall");
|
|
96
|
+
hasMoreToolCalls = toolCalls.length > 0;
|
|
97
|
+
const toolResults = [];
|
|
98
|
+
if (hasMoreToolCalls) {
|
|
99
|
+
const toolExecution = await executeToolCalls(currentContext.tools, message, signal, stream, config.getSteeringMessages);
|
|
100
|
+
toolResults.push(...toolExecution.toolResults);
|
|
101
|
+
steeringAfterTools = toolExecution.steeringMessages ?? null;
|
|
102
|
+
for (const result of toolResults) {
|
|
103
|
+
currentContext.messages.push(result);
|
|
104
|
+
newMessages.push(result);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
stream.push({ type: "turn_end", message, toolResults });
|
|
108
|
+
// Get steering messages after turn completes
|
|
109
|
+
if (steeringAfterTools && steeringAfterTools.length > 0) {
|
|
110
|
+
pendingMessages = steeringAfterTools;
|
|
111
|
+
steeringAfterTools = null;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
pendingMessages = (await config.getSteeringMessages?.()) || [];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Agent would stop here. Check for follow-up messages.
|
|
118
|
+
const followUpMessages = (await config.getFollowUpMessages?.()) || [];
|
|
119
|
+
if (followUpMessages.length > 0) {
|
|
120
|
+
// Set as pending so inner loop processes them
|
|
121
|
+
pendingMessages = followUpMessages;
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
// No more messages, exit
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
stream.push({ type: "agent_end", messages: newMessages });
|
|
128
|
+
stream.end(newMessages);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Stream an assistant response from the LLM.
|
|
132
|
+
* This is where AgentMessage[] gets transformed to Message[] for the LLM.
|
|
133
|
+
*/
|
|
134
|
+
async function streamAssistantResponse(context, config, signal, stream, streamFn) {
|
|
135
|
+
// Apply context transform if configured (AgentMessage[] → AgentMessage[])
|
|
136
|
+
let messages = context.messages;
|
|
137
|
+
if (config.transformContext) {
|
|
138
|
+
messages = await config.transformContext(messages, signal);
|
|
139
|
+
}
|
|
140
|
+
// Convert to LLM-compatible messages (AgentMessage[] → Message[])
|
|
141
|
+
const llmMessages = await config.convertToLlm(messages);
|
|
142
|
+
// Build LLM context
|
|
143
|
+
const llmContext = {
|
|
144
|
+
systemPrompt: context.systemPrompt,
|
|
145
|
+
messages: llmMessages,
|
|
146
|
+
tools: context.tools,
|
|
147
|
+
};
|
|
148
|
+
const streamFunction = streamFn || streamSimple;
|
|
149
|
+
// Resolve API key (important for expiring tokens)
|
|
150
|
+
const resolvedApiKey = (config.getApiKey ? await config.getApiKey(config.model.provider) : undefined) || config.apiKey;
|
|
151
|
+
const response = await streamFunction(config.model, llmContext, {
|
|
152
|
+
...config,
|
|
153
|
+
apiKey: resolvedApiKey,
|
|
154
|
+
signal,
|
|
155
|
+
});
|
|
156
|
+
let partialMessage = null;
|
|
157
|
+
let addedPartial = false;
|
|
158
|
+
for await (const event of response) {
|
|
159
|
+
switch (event.type) {
|
|
160
|
+
case "start":
|
|
161
|
+
partialMessage = event.partial;
|
|
162
|
+
context.messages.push(partialMessage);
|
|
163
|
+
addedPartial = true;
|
|
164
|
+
stream.push({ type: "message_start", message: { ...partialMessage } });
|
|
165
|
+
break;
|
|
166
|
+
case "text_start":
|
|
167
|
+
case "text_delta":
|
|
168
|
+
case "text_end":
|
|
169
|
+
case "thinking_start":
|
|
170
|
+
case "thinking_delta":
|
|
171
|
+
case "thinking_end":
|
|
172
|
+
case "toolcall_start":
|
|
173
|
+
case "toolcall_delta":
|
|
174
|
+
case "toolcall_end":
|
|
175
|
+
if (partialMessage) {
|
|
176
|
+
partialMessage = event.partial;
|
|
177
|
+
context.messages[context.messages.length - 1] = partialMessage;
|
|
178
|
+
stream.push({
|
|
179
|
+
type: "message_update",
|
|
180
|
+
assistantMessageEvent: event,
|
|
181
|
+
message: { ...partialMessage },
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
break;
|
|
185
|
+
case "done":
|
|
186
|
+
case "error": {
|
|
187
|
+
const finalMessage = await response.result();
|
|
188
|
+
if (addedPartial) {
|
|
189
|
+
context.messages[context.messages.length - 1] = finalMessage;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
context.messages.push(finalMessage);
|
|
193
|
+
}
|
|
194
|
+
if (!addedPartial) {
|
|
195
|
+
stream.push({ type: "message_start", message: { ...finalMessage } });
|
|
196
|
+
}
|
|
197
|
+
stream.push({ type: "message_end", message: finalMessage });
|
|
198
|
+
return finalMessage;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return await response.result();
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Execute tool calls from an assistant message.
|
|
206
|
+
*/
|
|
207
|
+
async function executeToolCalls(tools, assistantMessage, signal, stream, getSteeringMessages) {
|
|
208
|
+
const toolCalls = assistantMessage.content.filter((c) => c.type === "toolCall");
|
|
209
|
+
const results = [];
|
|
210
|
+
let steeringMessages;
|
|
211
|
+
for (let index = 0; index < toolCalls.length; index++) {
|
|
212
|
+
const toolCall = toolCalls[index];
|
|
213
|
+
const tool = tools?.find((t) => t.name === toolCall.name);
|
|
214
|
+
stream.push({
|
|
215
|
+
type: "tool_execution_start",
|
|
216
|
+
toolCallId: toolCall.id,
|
|
217
|
+
toolName: toolCall.name,
|
|
218
|
+
args: toolCall.arguments,
|
|
219
|
+
});
|
|
220
|
+
let result;
|
|
221
|
+
let isError = false;
|
|
222
|
+
try {
|
|
223
|
+
if (!tool)
|
|
224
|
+
throw new Error(`Tool ${toolCall.name} not found`);
|
|
225
|
+
const validatedArgs = validateToolArguments(tool, toolCall);
|
|
226
|
+
result = await tool.execute(toolCall.id, validatedArgs, signal, (partialResult) => {
|
|
227
|
+
stream.push({
|
|
228
|
+
type: "tool_execution_update",
|
|
229
|
+
toolCallId: toolCall.id,
|
|
230
|
+
toolName: toolCall.name,
|
|
231
|
+
args: toolCall.arguments,
|
|
232
|
+
partialResult,
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
catch (e) {
|
|
237
|
+
result = {
|
|
238
|
+
content: [{ type: "text", text: e instanceof Error ? e.message : String(e) }],
|
|
239
|
+
details: {},
|
|
240
|
+
};
|
|
241
|
+
isError = true;
|
|
242
|
+
}
|
|
243
|
+
stream.push({
|
|
244
|
+
type: "tool_execution_end",
|
|
245
|
+
toolCallId: toolCall.id,
|
|
246
|
+
toolName: toolCall.name,
|
|
247
|
+
result,
|
|
248
|
+
isError,
|
|
249
|
+
});
|
|
250
|
+
const toolResultMessage = {
|
|
251
|
+
role: "toolResult",
|
|
252
|
+
toolCallId: toolCall.id,
|
|
253
|
+
toolName: toolCall.name,
|
|
254
|
+
content: result.content,
|
|
255
|
+
details: result.details,
|
|
256
|
+
isError,
|
|
257
|
+
timestamp: Date.now(),
|
|
258
|
+
};
|
|
259
|
+
results.push(toolResultMessage);
|
|
260
|
+
stream.push({ type: "message_start", message: toolResultMessage });
|
|
261
|
+
stream.push({ type: "message_end", message: toolResultMessage });
|
|
262
|
+
// Check for steering messages - skip remaining tools if user interrupted
|
|
263
|
+
if (getSteeringMessages) {
|
|
264
|
+
const steering = await getSteeringMessages();
|
|
265
|
+
if (steering.length > 0) {
|
|
266
|
+
steeringMessages = steering;
|
|
267
|
+
const remainingCalls = toolCalls.slice(index + 1);
|
|
268
|
+
for (const skipped of remainingCalls) {
|
|
269
|
+
results.push(skipToolCall(skipped, stream));
|
|
270
|
+
}
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return { toolResults: results, steeringMessages };
|
|
276
|
+
}
|
|
277
|
+
function skipToolCall(toolCall, stream) {
|
|
278
|
+
const result = {
|
|
279
|
+
content: [{ type: "text", text: "Skipped due to queued user message." }],
|
|
280
|
+
details: {},
|
|
281
|
+
};
|
|
282
|
+
stream.push({
|
|
283
|
+
type: "tool_execution_start",
|
|
284
|
+
toolCallId: toolCall.id,
|
|
285
|
+
toolName: toolCall.name,
|
|
286
|
+
args: toolCall.arguments,
|
|
287
|
+
});
|
|
288
|
+
stream.push({
|
|
289
|
+
type: "tool_execution_end",
|
|
290
|
+
toolCallId: toolCall.id,
|
|
291
|
+
toolName: toolCall.name,
|
|
292
|
+
result,
|
|
293
|
+
isError: true,
|
|
294
|
+
});
|
|
295
|
+
const toolResultMessage = {
|
|
296
|
+
role: "toolResult",
|
|
297
|
+
toolCallId: toolCall.id,
|
|
298
|
+
toolName: toolCall.name,
|
|
299
|
+
content: result.content,
|
|
300
|
+
details: {},
|
|
301
|
+
isError: true,
|
|
302
|
+
timestamp: Date.now(),
|
|
303
|
+
};
|
|
304
|
+
stream.push({ type: "message_start", message: toolResultMessage });
|
|
305
|
+
stream.push({ type: "message_end", message: toolResultMessage });
|
|
306
|
+
return toolResultMessage;
|
|
307
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent class that uses the agent-loop directly.
|
|
3
|
+
* No transport abstraction - calls streamSimple via the loop.
|
|
4
|
+
*/
|
|
5
|
+
import { type ImageContent, type Message, type Model, type ThinkingBudgets } from "../ai/index.js";
|
|
6
|
+
import type { AgentEvent, AgentMessage, AgentState, AgentTool, StreamFn, ThinkingLevel } from "./types.js";
|
|
7
|
+
export interface AgentOptions {
|
|
8
|
+
initialState?: Partial<AgentState>;
|
|
9
|
+
/**
|
|
10
|
+
* Converts AgentMessage[] to LLM-compatible Message[] before each LLM call.
|
|
11
|
+
* Default filters to user/assistant/toolResult and converts attachments.
|
|
12
|
+
*/
|
|
13
|
+
convertToLlm?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Optional transform applied to context before convertToLlm.
|
|
16
|
+
* Use for context pruning, injecting external context, etc.
|
|
17
|
+
*/
|
|
18
|
+
transformContext?: (messages: AgentMessage[], signal?: AbortSignal) => Promise<AgentMessage[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Steering mode: "all" = send all steering messages at once, "one-at-a-time" = one per turn
|
|
21
|
+
*/
|
|
22
|
+
steeringMode?: "all" | "one-at-a-time";
|
|
23
|
+
/**
|
|
24
|
+
* Follow-up mode: "all" = send all follow-up messages at once, "one-at-a-time" = one per turn
|
|
25
|
+
*/
|
|
26
|
+
followUpMode?: "all" | "one-at-a-time";
|
|
27
|
+
/**
|
|
28
|
+
* Custom stream function (for proxy backends, etc.). Default uses streamSimple.
|
|
29
|
+
*/
|
|
30
|
+
streamFn?: StreamFn;
|
|
31
|
+
/**
|
|
32
|
+
* Optional session identifier forwarded to LLM providers.
|
|
33
|
+
* Used by providers that support session-based caching (e.g., OpenAI Codex).
|
|
34
|
+
*/
|
|
35
|
+
sessionId?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Resolves an API key dynamically for each LLM call.
|
|
38
|
+
* Useful for expiring tokens (e.g., GitHub Copilot OAuth).
|
|
39
|
+
*/
|
|
40
|
+
getApiKey?: (provider: string) => Promise<string | undefined> | string | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Custom token budgets for thinking levels (token-based providers only).
|
|
43
|
+
*/
|
|
44
|
+
thinkingBudgets?: ThinkingBudgets;
|
|
45
|
+
}
|
|
46
|
+
export declare class Agent {
|
|
47
|
+
private _state;
|
|
48
|
+
private listeners;
|
|
49
|
+
private abortController?;
|
|
50
|
+
private convertToLlm;
|
|
51
|
+
private transformContext?;
|
|
52
|
+
private steeringQueue;
|
|
53
|
+
private followUpQueue;
|
|
54
|
+
private steeringMode;
|
|
55
|
+
private followUpMode;
|
|
56
|
+
streamFn: StreamFn;
|
|
57
|
+
private _sessionId?;
|
|
58
|
+
getApiKey?: (provider: string) => Promise<string | undefined> | string | undefined;
|
|
59
|
+
private runningPrompt?;
|
|
60
|
+
private resolveRunningPrompt?;
|
|
61
|
+
private _thinkingBudgets?;
|
|
62
|
+
constructor(opts?: AgentOptions);
|
|
63
|
+
/**
|
|
64
|
+
* Get the current session ID used for provider caching.
|
|
65
|
+
*/
|
|
66
|
+
get sessionId(): string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Set the session ID for provider caching.
|
|
69
|
+
* Call this when switching sessions (new session, branch, resume).
|
|
70
|
+
*/
|
|
71
|
+
set sessionId(value: string | undefined);
|
|
72
|
+
/**
|
|
73
|
+
* Get the current thinking budgets.
|
|
74
|
+
*/
|
|
75
|
+
get thinkingBudgets(): ThinkingBudgets | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Set custom thinking budgets for token-based providers.
|
|
78
|
+
*/
|
|
79
|
+
set thinkingBudgets(value: ThinkingBudgets | undefined);
|
|
80
|
+
get state(): AgentState;
|
|
81
|
+
subscribe(fn: (e: AgentEvent) => void): () => void;
|
|
82
|
+
setSystemPrompt(v: string): void;
|
|
83
|
+
setModel(m: Model<any>): void;
|
|
84
|
+
setThinkingLevel(l: ThinkingLevel): void;
|
|
85
|
+
setSteeringMode(mode: "all" | "one-at-a-time"): void;
|
|
86
|
+
getSteeringMode(): "all" | "one-at-a-time";
|
|
87
|
+
setFollowUpMode(mode: "all" | "one-at-a-time"): void;
|
|
88
|
+
getFollowUpMode(): "all" | "one-at-a-time";
|
|
89
|
+
setTools(t: AgentTool<any>[]): void;
|
|
90
|
+
replaceMessages(ms: AgentMessage[]): void;
|
|
91
|
+
appendMessage(m: AgentMessage): void;
|
|
92
|
+
/**
|
|
93
|
+
* Queue a steering message to interrupt the agent mid-run.
|
|
94
|
+
* Delivered after current tool execution, skips remaining tools.
|
|
95
|
+
*/
|
|
96
|
+
steer(m: AgentMessage): void;
|
|
97
|
+
/**
|
|
98
|
+
* Queue a follow-up message to be processed after the agent finishes.
|
|
99
|
+
* Delivered only when agent has no more tool calls or steering messages.
|
|
100
|
+
*/
|
|
101
|
+
followUp(m: AgentMessage): void;
|
|
102
|
+
clearSteeringQueue(): void;
|
|
103
|
+
clearFollowUpQueue(): void;
|
|
104
|
+
clearAllQueues(): void;
|
|
105
|
+
clearMessages(): void;
|
|
106
|
+
abort(): void;
|
|
107
|
+
waitForIdle(): Promise<void>;
|
|
108
|
+
reset(): void;
|
|
109
|
+
/** Send a prompt with an AgentMessage */
|
|
110
|
+
prompt(message: AgentMessage | AgentMessage[]): Promise<void>;
|
|
111
|
+
prompt(input: string, images?: ImageContent[]): Promise<void>;
|
|
112
|
+
/** Continue from current context (for retry after overflow) */
|
|
113
|
+
continue(): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Run the agent loop.
|
|
116
|
+
* If messages are provided, starts a new conversation turn with those messages.
|
|
117
|
+
* Otherwise, continues from existing context.
|
|
118
|
+
*/
|
|
119
|
+
private _runLoop;
|
|
120
|
+
private emit;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|