overai 1.4.0
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 +248 -0
- package/dist/agent/context.d.ts +74 -0
- package/dist/agent/context.js +140 -0
- package/dist/agent/enhanced.d.ts +98 -0
- package/dist/agent/enhanced.js +293 -0
- package/dist/agent/handoff.d.ts +82 -0
- package/dist/agent/handoff.js +124 -0
- package/dist/agent/image.d.ts +57 -0
- package/dist/agent/image.js +116 -0
- package/dist/agent/index.d.ts +19 -0
- package/dist/agent/index.js +38 -0
- package/dist/agent/prompt-expander.d.ts +43 -0
- package/dist/agent/prompt-expander.js +99 -0
- package/dist/agent/proxy.d.ts +26 -0
- package/dist/agent/proxy.js +173 -0
- package/dist/agent/query-rewriter.d.ts +41 -0
- package/dist/agent/query-rewriter.js +94 -0
- package/dist/agent/research.d.ts +55 -0
- package/dist/agent/research.js +134 -0
- package/dist/agent/router.d.ts +141 -0
- package/dist/agent/router.js +209 -0
- package/dist/agent/simple.d.ts +289 -0
- package/dist/agent/simple.js +696 -0
- package/dist/agent/types.d.ts +56 -0
- package/dist/agent/types.js +165 -0
- package/dist/ai/agent-loop.d.ts +177 -0
- package/dist/ai/agent-loop.js +313 -0
- package/dist/ai/devtools.d.ts +74 -0
- package/dist/ai/devtools.js +216 -0
- package/dist/ai/embed.d.ts +71 -0
- package/dist/ai/embed.js +154 -0
- package/dist/ai/generate-image.d.ts +66 -0
- package/dist/ai/generate-image.js +138 -0
- package/dist/ai/generate-object.d.ts +132 -0
- package/dist/ai/generate-object.js +206 -0
- package/dist/ai/generate-text.d.ts +201 -0
- package/dist/ai/generate-text.js +253 -0
- package/dist/ai/index.d.ts +27 -0
- package/dist/ai/index.js +140 -0
- package/dist/ai/mcp.d.ts +181 -0
- package/dist/ai/mcp.js +234 -0
- package/dist/ai/middleware.d.ts +110 -0
- package/dist/ai/middleware.js +186 -0
- package/dist/ai/models.d.ts +67 -0
- package/dist/ai/models.js +249 -0
- package/dist/ai/multimodal.d.ts +125 -0
- package/dist/ai/multimodal.js +270 -0
- package/dist/ai/nextjs.d.ts +122 -0
- package/dist/ai/nextjs.js +218 -0
- package/dist/ai/server.d.ts +126 -0
- package/dist/ai/server.js +336 -0
- package/dist/ai/speech.d.ts +135 -0
- package/dist/ai/speech.js +296 -0
- package/dist/ai/telemetry.d.ts +162 -0
- package/dist/ai/telemetry.js +311 -0
- package/dist/ai/tool-approval.d.ts +225 -0
- package/dist/ai/tool-approval.js +407 -0
- package/dist/ai/tools.d.ts +93 -0
- package/dist/ai/tools.js +89 -0
- package/dist/ai/types.d.ts +47 -0
- package/dist/ai/types.js +5 -0
- package/dist/ai/ui-message.d.ts +218 -0
- package/dist/ai/ui-message.js +291 -0
- package/dist/auto/index.d.ts +62 -0
- package/dist/auto/index.js +163 -0
- package/dist/cache/index.d.ts +78 -0
- package/dist/cache/index.js +235 -0
- package/dist/cli/commands/agent.d.ts +30 -0
- package/dist/cli/commands/agent.js +151 -0
- package/dist/cli/commands/agents.d.ts +24 -0
- package/dist/cli/commands/agents.js +166 -0
- package/dist/cli/commands/approval.d.ts +10 -0
- package/dist/cli/commands/approval.js +253 -0
- package/dist/cli/commands/auto.d.ts +12 -0
- package/dist/cli/commands/auto.js +109 -0
- package/dist/cli/commands/autonomy.d.ts +5 -0
- package/dist/cli/commands/autonomy.js +152 -0
- package/dist/cli/commands/benchmark.d.ts +19 -0
- package/dist/cli/commands/benchmark.js +484 -0
- package/dist/cli/commands/cache.d.ts +9 -0
- package/dist/cli/commands/cache.js +143 -0
- package/dist/cli/commands/chat.d.ts +14 -0
- package/dist/cli/commands/chat.js +127 -0
- package/dist/cli/commands/checkpoints.d.ts +5 -0
- package/dist/cli/commands/checkpoints.js +236 -0
- package/dist/cli/commands/context.d.ts +11 -0
- package/dist/cli/commands/context.js +182 -0
- package/dist/cli/commands/cost.d.ts +5 -0
- package/dist/cli/commands/cost.js +146 -0
- package/dist/cli/commands/db.d.ts +9 -0
- package/dist/cli/commands/db.js +149 -0
- package/dist/cli/commands/embed.d.ts +20 -0
- package/dist/cli/commands/embed.js +375 -0
- package/dist/cli/commands/eval.d.ts +17 -0
- package/dist/cli/commands/eval.js +247 -0
- package/dist/cli/commands/external-agents.d.ts +5 -0
- package/dist/cli/commands/external-agents.js +170 -0
- package/dist/cli/commands/fast-context.d.ts +5 -0
- package/dist/cli/commands/fast-context.js +126 -0
- package/dist/cli/commands/flow.d.ts +5 -0
- package/dist/cli/commands/flow.js +141 -0
- package/dist/cli/commands/git.d.ts +5 -0
- package/dist/cli/commands/git.js +178 -0
- package/dist/cli/commands/graph-rag.d.ts +9 -0
- package/dist/cli/commands/graph-rag.js +131 -0
- package/dist/cli/commands/guardrail.d.ts +11 -0
- package/dist/cli/commands/guardrail.js +156 -0
- package/dist/cli/commands/handoff.d.ts +9 -0
- package/dist/cli/commands/handoff.js +133 -0
- package/dist/cli/commands/help.d.ts +8 -0
- package/dist/cli/commands/help.js +139 -0
- package/dist/cli/commands/image.d.ts +13 -0
- package/dist/cli/commands/image.js +192 -0
- package/dist/cli/commands/interactive.d.ts +6 -0
- package/dist/cli/commands/interactive.js +79 -0
- package/dist/cli/commands/jobs.d.ts +5 -0
- package/dist/cli/commands/jobs.js +282 -0
- package/dist/cli/commands/knowledge.d.ts +9 -0
- package/dist/cli/commands/knowledge.js +226 -0
- package/dist/cli/commands/llm.d.ts +21 -0
- package/dist/cli/commands/llm.js +748 -0
- package/dist/cli/commands/mcp.d.ts +9 -0
- package/dist/cli/commands/mcp.js +243 -0
- package/dist/cli/commands/memory.d.ts +10 -0
- package/dist/cli/commands/memory.js +198 -0
- package/dist/cli/commands/n8n.d.ts +5 -0
- package/dist/cli/commands/n8n.js +137 -0
- package/dist/cli/commands/observability.d.ts +16 -0
- package/dist/cli/commands/observability.js +335 -0
- package/dist/cli/commands/planning.d.ts +9 -0
- package/dist/cli/commands/planning.js +167 -0
- package/dist/cli/commands/prompt-expand.d.ts +11 -0
- package/dist/cli/commands/prompt-expand.js +100 -0
- package/dist/cli/commands/providers.d.ts +17 -0
- package/dist/cli/commands/providers.js +386 -0
- package/dist/cli/commands/query-rewrite.d.ts +12 -0
- package/dist/cli/commands/query-rewrite.js +102 -0
- package/dist/cli/commands/repo-map.d.ts +5 -0
- package/dist/cli/commands/repo-map.js +151 -0
- package/dist/cli/commands/reranker.d.ts +10 -0
- package/dist/cli/commands/reranker.js +144 -0
- package/dist/cli/commands/research.d.ts +12 -0
- package/dist/cli/commands/research.js +108 -0
- package/dist/cli/commands/router.d.ts +11 -0
- package/dist/cli/commands/router.js +142 -0
- package/dist/cli/commands/run.d.ts +14 -0
- package/dist/cli/commands/run.js +111 -0
- package/dist/cli/commands/sandbox.d.ts +5 -0
- package/dist/cli/commands/sandbox.js +135 -0
- package/dist/cli/commands/scheduler.d.ts +5 -0
- package/dist/cli/commands/scheduler.js +260 -0
- package/dist/cli/commands/session.d.ts +9 -0
- package/dist/cli/commands/session.js +238 -0
- package/dist/cli/commands/skills.d.ts +9 -0
- package/dist/cli/commands/skills.js +256 -0
- package/dist/cli/commands/telemetry.d.ts +9 -0
- package/dist/cli/commands/telemetry.js +146 -0
- package/dist/cli/commands/tools.d.ts +19 -0
- package/dist/cli/commands/tools.js +576 -0
- package/dist/cli/commands/vector.d.ts +10 -0
- package/dist/cli/commands/vector.js +171 -0
- package/dist/cli/commands/version.d.ts +8 -0
- package/dist/cli/commands/version.js +40 -0
- package/dist/cli/commands/voice.d.ts +10 -0
- package/dist/cli/commands/voice.js +162 -0
- package/dist/cli/commands/workflow.d.ts +13 -0
- package/dist/cli/commands/workflow.js +184 -0
- package/dist/cli/config/index.d.ts +6 -0
- package/dist/cli/config/index.js +22 -0
- package/dist/cli/config/load.d.ts +20 -0
- package/dist/cli/config/load.js +229 -0
- package/dist/cli/config/resolve.d.ts +28 -0
- package/dist/cli/config/resolve.js +70 -0
- package/dist/cli/config/schema.d.ts +15 -0
- package/dist/cli/config/schema.js +65 -0
- package/dist/cli/features/autonomy-mode.d.ts +98 -0
- package/dist/cli/features/autonomy-mode.js +266 -0
- package/dist/cli/features/background-jobs.d.ts +155 -0
- package/dist/cli/features/background-jobs.js +416 -0
- package/dist/cli/features/checkpoints.d.ts +126 -0
- package/dist/cli/features/checkpoints.js +288 -0
- package/dist/cli/features/cost-tracker.d.ts +101 -0
- package/dist/cli/features/cost-tracker.js +212 -0
- package/dist/cli/features/external-agents.d.ts +117 -0
- package/dist/cli/features/external-agents.js +296 -0
- package/dist/cli/features/fast-context.d.ts +126 -0
- package/dist/cli/features/fast-context.js +310 -0
- package/dist/cli/features/flow-display.d.ts +100 -0
- package/dist/cli/features/flow-display.js +254 -0
- package/dist/cli/features/git-integration.d.ts +138 -0
- package/dist/cli/features/git-integration.js +374 -0
- package/dist/cli/features/index.d.ts +17 -0
- package/dist/cli/features/index.js +102 -0
- package/dist/cli/features/interactive-tui.d.ts +114 -0
- package/dist/cli/features/interactive-tui.js +326 -0
- package/dist/cli/features/n8n-integration.d.ts +111 -0
- package/dist/cli/features/n8n-integration.js +299 -0
- package/dist/cli/features/repo-map.d.ts +101 -0
- package/dist/cli/features/repo-map.js +350 -0
- package/dist/cli/features/sandbox-executor.d.ts +89 -0
- package/dist/cli/features/sandbox-executor.js +314 -0
- package/dist/cli/features/scheduler.d.ts +111 -0
- package/dist/cli/features/scheduler.js +298 -0
- package/dist/cli/features/slash-commands.d.ts +77 -0
- package/dist/cli/features/slash-commands.js +316 -0
- package/dist/cli/index.d.ts +24 -0
- package/dist/cli/index.js +214 -0
- package/dist/cli/output/errors.d.ts +23 -0
- package/dist/cli/output/errors.js +36 -0
- package/dist/cli/output/json.d.ts +27 -0
- package/dist/cli/output/json.js +31 -0
- package/dist/cli/output/pretty.d.ts +13 -0
- package/dist/cli/output/pretty.js +31 -0
- package/dist/cli/runtime/env.d.ts +12 -0
- package/dist/cli/runtime/env.js +55 -0
- package/dist/cli/runtime/exit.d.ts +11 -0
- package/dist/cli/runtime/exit.js +49 -0
- package/dist/cli/runtime/index.d.ts +6 -0
- package/dist/cli/runtime/index.js +22 -0
- package/dist/cli/runtime/lazy.d.ts +18 -0
- package/dist/cli/runtime/lazy.js +85 -0
- package/dist/cli/spec/cli-spec.d.ts +87 -0
- package/dist/cli/spec/cli-spec.js +551 -0
- package/dist/cli/spec/index.d.ts +4 -0
- package/dist/cli/spec/index.js +20 -0
- package/dist/db/index.d.ts +6 -0
- package/dist/db/index.js +75 -0
- package/dist/db/types.d.ts +42 -0
- package/dist/db/types.js +2 -0
- package/dist/eval/index.d.ts +61 -0
- package/dist/eval/index.js +157 -0
- package/dist/events/index.d.ts +84 -0
- package/dist/events/index.js +153 -0
- package/dist/guardrails/index.d.ts +82 -0
- package/dist/guardrails/index.js +202 -0
- package/dist/guardrails/llm-guardrail.d.ts +46 -0
- package/dist/guardrails/llm-guardrail.js +112 -0
- package/dist/index.d.ts +92 -0
- package/dist/index.js +608 -0
- package/dist/integrations/computer-use.d.ts +182 -0
- package/dist/integrations/computer-use.js +356 -0
- package/dist/integrations/index.d.ts +7 -0
- package/dist/integrations/index.js +26 -0
- package/dist/integrations/observability/base.d.ts +123 -0
- package/dist/integrations/observability/base.js +183 -0
- package/dist/integrations/observability/index.d.ts +8 -0
- package/dist/integrations/observability/index.js +29 -0
- package/dist/integrations/observability/langfuse.d.ts +32 -0
- package/dist/integrations/observability/langfuse.js +174 -0
- package/dist/integrations/postgres.d.ts +162 -0
- package/dist/integrations/postgres.js +396 -0
- package/dist/integrations/slack.d.ts +145 -0
- package/dist/integrations/slack.js +270 -0
- package/dist/integrations/vector/base.d.ts +110 -0
- package/dist/integrations/vector/base.js +158 -0
- package/dist/integrations/vector/chroma.d.ts +25 -0
- package/dist/integrations/vector/chroma.js +143 -0
- package/dist/integrations/vector/index.d.ts +14 -0
- package/dist/integrations/vector/index.js +37 -0
- package/dist/integrations/vector/pinecone.d.ts +28 -0
- package/dist/integrations/vector/pinecone.js +172 -0
- package/dist/integrations/vector/qdrant.d.ts +25 -0
- package/dist/integrations/vector/qdrant.js +146 -0
- package/dist/integrations/vector/weaviate.d.ts +30 -0
- package/dist/integrations/vector/weaviate.js +206 -0
- package/dist/integrations/voice/base.d.ts +76 -0
- package/dist/integrations/voice/base.js +168 -0
- package/dist/integrations/voice/index.d.ts +6 -0
- package/dist/integrations/voice/index.js +26 -0
- package/dist/knowledge/chunking.d.ts +55 -0
- package/dist/knowledge/chunking.js +158 -0
- package/dist/knowledge/graph-rag.d.ts +125 -0
- package/dist/knowledge/graph-rag.js +289 -0
- package/dist/knowledge/index.d.ts +24 -0
- package/dist/knowledge/index.js +47 -0
- package/dist/knowledge/knowledge.d.ts +0 -0
- package/dist/knowledge/knowledge.js +1 -0
- package/dist/knowledge/rag.d.ts +80 -0
- package/dist/knowledge/rag.js +147 -0
- package/dist/knowledge/reranker.d.ts +86 -0
- package/dist/knowledge/reranker.js +196 -0
- package/dist/llm/backend-resolver.d.ts +77 -0
- package/dist/llm/backend-resolver.js +242 -0
- package/dist/llm/embeddings.d.ts +66 -0
- package/dist/llm/embeddings.js +294 -0
- package/dist/llm/index.d.ts +29 -0
- package/dist/llm/index.js +33 -0
- package/dist/llm/llm.d.ts +0 -0
- package/dist/llm/llm.js +1 -0
- package/dist/llm/openai.d.ts +39 -0
- package/dist/llm/openai.js +302 -0
- package/dist/llm/providers/ai-sdk/adapter.d.ts +121 -0
- package/dist/llm/providers/ai-sdk/adapter.js +399 -0
- package/dist/llm/providers/ai-sdk/backend.d.ts +49 -0
- package/dist/llm/providers/ai-sdk/backend.js +421 -0
- package/dist/llm/providers/ai-sdk/index.d.ts +69 -0
- package/dist/llm/providers/ai-sdk/index.js +200 -0
- package/dist/llm/providers/ai-sdk/middleware.d.ts +60 -0
- package/dist/llm/providers/ai-sdk/middleware.js +262 -0
- package/dist/llm/providers/ai-sdk/provider-map.d.ts +75 -0
- package/dist/llm/providers/ai-sdk/provider-map.js +258 -0
- package/dist/llm/providers/ai-sdk/types.d.ts +217 -0
- package/dist/llm/providers/ai-sdk/types.js +222 -0
- package/dist/llm/providers/anthropic.d.ts +33 -0
- package/dist/llm/providers/anthropic.js +291 -0
- package/dist/llm/providers/base.d.ts +25 -0
- package/dist/llm/providers/base.js +43 -0
- package/dist/llm/providers/google.d.ts +27 -0
- package/dist/llm/providers/google.js +275 -0
- package/dist/llm/providers/index.d.ts +107 -0
- package/dist/llm/providers/index.js +216 -0
- package/dist/llm/providers/openai.d.ts +18 -0
- package/dist/llm/providers/openai.js +203 -0
- package/dist/llm/providers/registry.d.ts +159 -0
- package/dist/llm/providers/registry.js +279 -0
- package/dist/llm/providers/types.d.ts +94 -0
- package/dist/llm/providers/types.js +5 -0
- package/dist/main.d.ts +0 -0
- package/dist/main.js +1 -0
- package/dist/memory/auto-memory.d.ts +136 -0
- package/dist/memory/auto-memory.js +301 -0
- package/dist/memory/file-memory.d.ts +88 -0
- package/dist/memory/file-memory.js +287 -0
- package/dist/memory/index.d.ts +26 -0
- package/dist/memory/index.js +41 -0
- package/dist/memory/memory.d.ts +92 -0
- package/dist/memory/memory.js +170 -0
- package/dist/observability/adapters/console.d.ts +33 -0
- package/dist/observability/adapters/console.js +71 -0
- package/dist/observability/adapters/external/arize.d.ts +20 -0
- package/dist/observability/adapters/external/arize.js +22 -0
- package/dist/observability/adapters/external/axiom.d.ts +20 -0
- package/dist/observability/adapters/external/axiom.js +22 -0
- package/dist/observability/adapters/external/braintrust.d.ts +20 -0
- package/dist/observability/adapters/external/braintrust.js +22 -0
- package/dist/observability/adapters/external/helicone.d.ts +20 -0
- package/dist/observability/adapters/external/helicone.js +22 -0
- package/dist/observability/adapters/external/laminar.d.ts +20 -0
- package/dist/observability/adapters/external/laminar.js +22 -0
- package/dist/observability/adapters/external/langfuse.d.ts +28 -0
- package/dist/observability/adapters/external/langfuse.js +186 -0
- package/dist/observability/adapters/external/langsmith.d.ts +21 -0
- package/dist/observability/adapters/external/langsmith.js +83 -0
- package/dist/observability/adapters/external/langwatch.d.ts +20 -0
- package/dist/observability/adapters/external/langwatch.js +22 -0
- package/dist/observability/adapters/external/maxim.d.ts +20 -0
- package/dist/observability/adapters/external/maxim.js +22 -0
- package/dist/observability/adapters/external/patronus.d.ts +20 -0
- package/dist/observability/adapters/external/patronus.js +22 -0
- package/dist/observability/adapters/external/scorecard.d.ts +20 -0
- package/dist/observability/adapters/external/scorecard.js +22 -0
- package/dist/observability/adapters/external/signoz.d.ts +20 -0
- package/dist/observability/adapters/external/signoz.js +22 -0
- package/dist/observability/adapters/external/traceloop.d.ts +20 -0
- package/dist/observability/adapters/external/traceloop.js +22 -0
- package/dist/observability/adapters/external/weave.d.ts +20 -0
- package/dist/observability/adapters/external/weave.js +22 -0
- package/dist/observability/adapters/index.d.ts +19 -0
- package/dist/observability/adapters/index.js +289 -0
- package/dist/observability/adapters/memory.d.ts +41 -0
- package/dist/observability/adapters/memory.js +190 -0
- package/dist/observability/adapters/noop.d.ts +25 -0
- package/dist/observability/adapters/noop.js +64 -0
- package/dist/observability/index.d.ts +47 -0
- package/dist/observability/index.js +115 -0
- package/dist/observability/types.d.ts +165 -0
- package/dist/observability/types.js +165 -0
- package/dist/planning/index.d.ts +253 -0
- package/dist/planning/index.js +475 -0
- package/dist/process/index.d.ts +25 -0
- package/dist/process/index.js +37 -0
- package/dist/process/process.d.ts +0 -0
- package/dist/process/process.js +1 -0
- package/dist/session/index.d.ts +111 -0
- package/dist/session/index.js +250 -0
- package/dist/skills/index.d.ts +70 -0
- package/dist/skills/index.js +233 -0
- package/dist/task/index.d.ts +25 -0
- package/dist/task/index.js +32 -0
- package/dist/task/task.d.ts +0 -0
- package/dist/task/task.js +1 -0
- package/dist/telemetry/index.d.ts +175 -0
- package/dist/telemetry/index.js +287 -0
- package/dist/tools/arxivTools.d.ts +32 -0
- package/dist/tools/arxivTools.js +81 -0
- package/dist/tools/base.d.ts +97 -0
- package/dist/tools/base.js +147 -0
- package/dist/tools/builtins/airweave.d.ts +32 -0
- package/dist/tools/builtins/airweave.js +119 -0
- package/dist/tools/builtins/bedrock-agentcore.d.ts +62 -0
- package/dist/tools/builtins/bedrock-agentcore.js +233 -0
- package/dist/tools/builtins/code-execution.d.ts +36 -0
- package/dist/tools/builtins/code-execution.js +136 -0
- package/dist/tools/builtins/code-mode.d.ts +54 -0
- package/dist/tools/builtins/code-mode.js +167 -0
- package/dist/tools/builtins/custom.d.ts +42 -0
- package/dist/tools/builtins/custom.js +195 -0
- package/dist/tools/builtins/exa.d.ts +53 -0
- package/dist/tools/builtins/exa.js +112 -0
- package/dist/tools/builtins/firecrawl.d.ts +56 -0
- package/dist/tools/builtins/firecrawl.js +158 -0
- package/dist/tools/builtins/index.d.ts +45 -0
- package/dist/tools/builtins/index.js +180 -0
- package/dist/tools/builtins/parallel.d.ts +30 -0
- package/dist/tools/builtins/parallel.js +113 -0
- package/dist/tools/builtins/perplexity.d.ts +32 -0
- package/dist/tools/builtins/perplexity.js +113 -0
- package/dist/tools/builtins/superagent.d.ts +66 -0
- package/dist/tools/builtins/superagent.js +187 -0
- package/dist/tools/builtins/tavily.d.ts +99 -0
- package/dist/tools/builtins/tavily.js +285 -0
- package/dist/tools/builtins/valyu.d.ts +65 -0
- package/dist/tools/builtins/valyu.js +193 -0
- package/dist/tools/decorator.d.ts +91 -0
- package/dist/tools/decorator.js +165 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.js +36 -0
- package/dist/tools/mcpSse.d.ts +43 -0
- package/dist/tools/mcpSse.js +110 -0
- package/dist/tools/registry/index.d.ts +9 -0
- package/dist/tools/registry/index.js +28 -0
- package/dist/tools/registry/middleware.d.ts +43 -0
- package/dist/tools/registry/middleware.js +220 -0
- package/dist/tools/registry/registry.d.ts +92 -0
- package/dist/tools/registry/registry.js +280 -0
- package/dist/tools/registry/types.d.ts +217 -0
- package/dist/tools/registry/types.js +49 -0
- package/dist/tools/test.d.ts +0 -0
- package/dist/tools/test.js +1 -0
- package/dist/tools/tools.d.ts +74 -0
- package/dist/tools/tools.js +133 -0
- package/dist/utils/logger.d.ts +25 -0
- package/dist/utils/logger.js +149 -0
- package/dist/utils/pretty-logger.d.ts +21 -0
- package/dist/utils/pretty-logger.js +248 -0
- package/dist/workflows/index.d.ts +118 -0
- package/dist/workflows/index.js +247 -0
- package/dist/workflows/loop.d.ts +0 -0
- package/dist/workflows/loop.js +1 -0
- package/dist/workflows/yaml-parser.d.ts +48 -0
- package/dist/workflows/yaml-parser.js +304 -0
- package/package.json +119 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Models - AI SDK Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Provides model aliases and utilities for model resolution.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.MODEL_ALIASES = void 0;
|
|
42
|
+
exports.parseModel = parseModel;
|
|
43
|
+
exports.getModel = getModel;
|
|
44
|
+
exports.createModel = createModel;
|
|
45
|
+
exports.listModelAliases = listModelAliases;
|
|
46
|
+
exports.hasModelAlias = hasModelAlias;
|
|
47
|
+
exports.resolveModelAlias = resolveModelAlias;
|
|
48
|
+
/**
|
|
49
|
+
* Model aliases for common models across providers.
|
|
50
|
+
* Maps friendly names to provider/model format.
|
|
51
|
+
*/
|
|
52
|
+
exports.MODEL_ALIASES = {
|
|
53
|
+
// OpenAI
|
|
54
|
+
'gpt-4o': 'openai/gpt-4o',
|
|
55
|
+
'gpt-4o-mini': 'openai/gpt-4o-mini',
|
|
56
|
+
'gpt-4-turbo': 'openai/gpt-4-turbo',
|
|
57
|
+
'gpt-4': 'openai/gpt-4',
|
|
58
|
+
'gpt-3.5-turbo': 'openai/gpt-3.5-turbo',
|
|
59
|
+
'gpt-5': 'openai/gpt-5',
|
|
60
|
+
'o1': 'openai/o1',
|
|
61
|
+
'o1-mini': 'openai/o1-mini',
|
|
62
|
+
'o1-preview': 'openai/o1-preview',
|
|
63
|
+
'o3': 'openai/o3',
|
|
64
|
+
'o3-mini': 'openai/o3-mini',
|
|
65
|
+
// Anthropic
|
|
66
|
+
'claude-4': 'anthropic/claude-4-sonnet-20250514',
|
|
67
|
+
'claude-4-opus': 'anthropic/claude-4-opus-20250514',
|
|
68
|
+
'claude-4-sonnet': 'anthropic/claude-4-sonnet-20250514',
|
|
69
|
+
'claude-3.7-sonnet': 'anthropic/claude-3-7-sonnet-20250219',
|
|
70
|
+
'claude-3.5-sonnet': 'anthropic/claude-3-5-sonnet-20241022',
|
|
71
|
+
'claude-3-sonnet': 'anthropic/claude-3-sonnet-20240229',
|
|
72
|
+
'claude-3-opus': 'anthropic/claude-3-opus-20240229',
|
|
73
|
+
'claude-3-haiku': 'anthropic/claude-3-haiku-20240307',
|
|
74
|
+
// Google
|
|
75
|
+
'gemini-3': 'google/gemini-3.0-pro',
|
|
76
|
+
'gemini-2.5-pro': 'google/gemini-2.5-pro-preview-06-05',
|
|
77
|
+
'gemini-2.5-flash': 'google/gemini-2.5-flash-preview-05-20',
|
|
78
|
+
'gemini-2.0-flash': 'google/gemini-2.0-flash',
|
|
79
|
+
'gemini-1.5-pro': 'google/gemini-1.5-pro',
|
|
80
|
+
'gemini-1.5-flash': 'google/gemini-1.5-flash',
|
|
81
|
+
// DeepSeek
|
|
82
|
+
'deepseek-r1': 'deepseek/deepseek-reasoner',
|
|
83
|
+
'deepseek-v3': 'deepseek/deepseek-chat',
|
|
84
|
+
'deepseek-v3.2': 'deepseek/deepseek-chat-v3.2',
|
|
85
|
+
// Meta Llama
|
|
86
|
+
'llama-3.1': 'groq/llama-3.1-70b-versatile',
|
|
87
|
+
'llama-3.1-8b': 'groq/llama-3.1-8b-instant',
|
|
88
|
+
'llama-3.1-70b': 'groq/llama-3.1-70b-versatile',
|
|
89
|
+
'llama-3.1-405b': 'together/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo',
|
|
90
|
+
// Embedding models
|
|
91
|
+
'text-embedding-3-small': 'openai/text-embedding-3-small',
|
|
92
|
+
'text-embedding-3-large': 'openai/text-embedding-3-large',
|
|
93
|
+
'text-embedding-004': 'google/text-embedding-004',
|
|
94
|
+
// Image models
|
|
95
|
+
'dall-e-3': 'openai/dall-e-3',
|
|
96
|
+
'dall-e-2': 'openai/dall-e-2',
|
|
97
|
+
'imagen-3': 'google/imagen-3.0-generate-002',
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Parse a model string into provider and model ID.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* parseModel('gpt-4o') // { provider: 'openai', modelId: 'gpt-4o', original: 'gpt-4o' }
|
|
105
|
+
* parseModel('anthropic/claude-3-sonnet') // { provider: 'anthropic', modelId: 'claude-3-sonnet', original: 'anthropic/claude-3-sonnet' }
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
function parseModel(model) {
|
|
109
|
+
// Check aliases first
|
|
110
|
+
const aliased = exports.MODEL_ALIASES[model];
|
|
111
|
+
const modelString = aliased || model;
|
|
112
|
+
if (modelString.includes('/')) {
|
|
113
|
+
const parts = modelString.split('/');
|
|
114
|
+
return {
|
|
115
|
+
provider: parts[0].toLowerCase(),
|
|
116
|
+
modelId: parts.slice(1).join('/'),
|
|
117
|
+
original: model,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// Infer provider from model name
|
|
121
|
+
let provider = 'openai';
|
|
122
|
+
if (modelString.startsWith('claude'))
|
|
123
|
+
provider = 'anthropic';
|
|
124
|
+
else if (modelString.startsWith('gemini'))
|
|
125
|
+
provider = 'google';
|
|
126
|
+
else if (modelString.startsWith('deepseek'))
|
|
127
|
+
provider = 'deepseek';
|
|
128
|
+
else if (modelString.startsWith('llama'))
|
|
129
|
+
provider = 'groq';
|
|
130
|
+
return {
|
|
131
|
+
provider,
|
|
132
|
+
modelId: modelString,
|
|
133
|
+
original: model,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get a model instance from a model string.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const model = await getModel('gpt-4o');
|
|
142
|
+
* const result = await generateText({ model, prompt: 'Hello' });
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
async function getModel(model) {
|
|
146
|
+
const config = parseModel(model);
|
|
147
|
+
let providerModule;
|
|
148
|
+
try {
|
|
149
|
+
switch (config.provider) {
|
|
150
|
+
case 'openai':
|
|
151
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
152
|
+
return providerModule.openai(config.modelId);
|
|
153
|
+
case 'anthropic':
|
|
154
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/anthropic')));
|
|
155
|
+
return providerModule.anthropic(config.modelId);
|
|
156
|
+
case 'google':
|
|
157
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google')));
|
|
158
|
+
return providerModule.google(config.modelId);
|
|
159
|
+
case 'groq':
|
|
160
|
+
// @ts-ignore - Optional dependency
|
|
161
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/groq')));
|
|
162
|
+
return providerModule.groq(config.modelId);
|
|
163
|
+
case 'deepseek':
|
|
164
|
+
// @ts-ignore - Optional dependency
|
|
165
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/deepseek')));
|
|
166
|
+
return providerModule.deepseek(config.modelId);
|
|
167
|
+
default:
|
|
168
|
+
// Try OpenAI-compatible
|
|
169
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
170
|
+
return providerModule.openai(config.modelId);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
throw new Error(`Failed to load provider '${config.provider}': ${error.message}. ` +
|
|
175
|
+
`Install with: npm install @ai-sdk/${config.provider}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Create a model with custom configuration.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* const model = await createModel('gpt-4o', {
|
|
184
|
+
* baseURL: 'https://custom-endpoint.com/v1',
|
|
185
|
+
* apiKey: 'custom-key'
|
|
186
|
+
* });
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
async function createModel(model, options) {
|
|
190
|
+
const config = parseModel(model);
|
|
191
|
+
let providerModule;
|
|
192
|
+
try {
|
|
193
|
+
switch (config.provider) {
|
|
194
|
+
case 'openai':
|
|
195
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
196
|
+
const openaiProvider = providerModule.createOpenAI({
|
|
197
|
+
baseURL: options?.baseURL,
|
|
198
|
+
apiKey: options?.apiKey,
|
|
199
|
+
headers: options?.headers,
|
|
200
|
+
});
|
|
201
|
+
return openaiProvider(config.modelId);
|
|
202
|
+
case 'anthropic':
|
|
203
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/anthropic')));
|
|
204
|
+
const anthropicProvider = providerModule.createAnthropic({
|
|
205
|
+
baseURL: options?.baseURL,
|
|
206
|
+
apiKey: options?.apiKey,
|
|
207
|
+
headers: options?.headers,
|
|
208
|
+
});
|
|
209
|
+
return anthropicProvider(config.modelId);
|
|
210
|
+
case 'google':
|
|
211
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google')));
|
|
212
|
+
const googleProvider = providerModule.createGoogleGenerativeAI({
|
|
213
|
+
baseURL: options?.baseURL,
|
|
214
|
+
apiKey: options?.apiKey,
|
|
215
|
+
headers: options?.headers,
|
|
216
|
+
});
|
|
217
|
+
return googleProvider(config.modelId);
|
|
218
|
+
default:
|
|
219
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
220
|
+
const defaultProvider = providerModule.createOpenAI({
|
|
221
|
+
baseURL: options?.baseURL,
|
|
222
|
+
apiKey: options?.apiKey,
|
|
223
|
+
headers: options?.headers,
|
|
224
|
+
});
|
|
225
|
+
return defaultProvider(config.modelId);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
throw new Error(`Failed to create model '${model}': ${error.message}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* List all available model aliases.
|
|
234
|
+
*/
|
|
235
|
+
function listModelAliases() {
|
|
236
|
+
return Object.keys(exports.MODEL_ALIASES);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Check if a model alias exists.
|
|
240
|
+
*/
|
|
241
|
+
function hasModelAlias(alias) {
|
|
242
|
+
return alias in exports.MODEL_ALIASES;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Resolve a model alias to its full provider/model format.
|
|
246
|
+
*/
|
|
247
|
+
function resolveModelAlias(alias) {
|
|
248
|
+
return exports.MODEL_ALIASES[alias] || alias;
|
|
249
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multimodal - AI SDK Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for multimodal inputs (images, files, PDFs).
|
|
5
|
+
*/
|
|
6
|
+
export type InputPart = TextPart | ImagePart | FilePart | PdfPart;
|
|
7
|
+
export interface TextPart {
|
|
8
|
+
type: 'text';
|
|
9
|
+
text: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ImagePart {
|
|
12
|
+
type: 'image';
|
|
13
|
+
/** Image data as URL, base64 string, or Uint8Array */
|
|
14
|
+
image: string | Uint8Array | URL;
|
|
15
|
+
/** MIME type (auto-detected if not provided) */
|
|
16
|
+
mimeType?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface FilePart {
|
|
19
|
+
type: 'file';
|
|
20
|
+
/** File data as URL, base64 string, or Uint8Array */
|
|
21
|
+
data: string | Uint8Array | URL;
|
|
22
|
+
/** MIME type (required) */
|
|
23
|
+
mimeType: string;
|
|
24
|
+
/** File name (optional) */
|
|
25
|
+
name?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface PdfPart {
|
|
28
|
+
type: 'pdf';
|
|
29
|
+
/** PDF data as URL, base64 string, or Uint8Array */
|
|
30
|
+
data: string | Uint8Array | URL;
|
|
31
|
+
/** Page range to extract (optional) */
|
|
32
|
+
pages?: {
|
|
33
|
+
start?: number;
|
|
34
|
+
end?: number;
|
|
35
|
+
};
|
|
36
|
+
/** Extract text only (default: false) */
|
|
37
|
+
textOnly?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a text part.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createTextPart(text: string): TextPart;
|
|
43
|
+
/**
|
|
44
|
+
* Create an image part from various sources.
|
|
45
|
+
*
|
|
46
|
+
* @example From URL
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const imagePart = createImagePart('https://example.com/image.png');
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example From base64
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const imagePart = createImagePart('data:image/png;base64,...');
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @example From file path
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const imagePart = await createImagePart('./image.png');
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function createImagePart(source: string | Uint8Array | URL, mimeType?: string): ImagePart;
|
|
62
|
+
/**
|
|
63
|
+
* Create a file part from various sources.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const filePart = createFilePart('./document.txt', 'text/plain');
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function createFilePart(source: string | Uint8Array | URL, mimeType: string, name?: string): FilePart;
|
|
71
|
+
/**
|
|
72
|
+
* Create a PDF part from various sources.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const pdfPart = createPdfPart('./document.pdf');
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example With page range
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const pdfPart = createPdfPart('./document.pdf', { pages: { start: 1, end: 5 } });
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function createPdfPart(source: string | Uint8Array | URL, options?: {
|
|
85
|
+
pages?: {
|
|
86
|
+
start?: number;
|
|
87
|
+
end?: number;
|
|
88
|
+
};
|
|
89
|
+
textOnly?: boolean;
|
|
90
|
+
}): PdfPart;
|
|
91
|
+
/**
|
|
92
|
+
* Convert input parts to AI SDK message content format.
|
|
93
|
+
*/
|
|
94
|
+
export declare function toMessageContent(parts: InputPart[]): any[];
|
|
95
|
+
/**
|
|
96
|
+
* Create a multimodal message with text and images.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const message = createMultimodalMessage(
|
|
101
|
+
* 'What is in this image?',
|
|
102
|
+
* ['https://example.com/image.png']
|
|
103
|
+
* );
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function createMultimodalMessage(text: string, images: (string | Uint8Array | URL)[], role?: 'user' | 'assistant'): {
|
|
107
|
+
role: string;
|
|
108
|
+
content: any[];
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Convert a base64 string to Uint8Array.
|
|
112
|
+
*/
|
|
113
|
+
export declare function base64ToUint8Array(base64: string): Uint8Array;
|
|
114
|
+
/**
|
|
115
|
+
* Convert Uint8Array to base64 string.
|
|
116
|
+
*/
|
|
117
|
+
export declare function uint8ArrayToBase64(bytes: Uint8Array): string;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a string is a valid URL.
|
|
120
|
+
*/
|
|
121
|
+
export declare function isUrl(str: string): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Check if a string is a data URL.
|
|
124
|
+
*/
|
|
125
|
+
export declare function isDataUrl(str: string): boolean;
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Multimodal - AI SDK Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Provides utilities for multimodal inputs (images, files, PDFs).
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.createTextPart = createTextPart;
|
|
42
|
+
exports.createImagePart = createImagePart;
|
|
43
|
+
exports.createFilePart = createFilePart;
|
|
44
|
+
exports.createPdfPart = createPdfPart;
|
|
45
|
+
exports.toMessageContent = toMessageContent;
|
|
46
|
+
exports.createMultimodalMessage = createMultimodalMessage;
|
|
47
|
+
exports.base64ToUint8Array = base64ToUint8Array;
|
|
48
|
+
exports.uint8ArrayToBase64 = uint8ArrayToBase64;
|
|
49
|
+
exports.isUrl = isUrl;
|
|
50
|
+
exports.isDataUrl = isDataUrl;
|
|
51
|
+
const fs = __importStar(require("fs"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
53
|
+
/**
|
|
54
|
+
* Create a text part.
|
|
55
|
+
*/
|
|
56
|
+
function createTextPart(text) {
|
|
57
|
+
return { type: 'text', text };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create an image part from various sources.
|
|
61
|
+
*
|
|
62
|
+
* @example From URL
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const imagePart = createImagePart('https://example.com/image.png');
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @example From base64
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const imagePart = createImagePart('data:image/png;base64,...');
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @example From file path
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const imagePart = await createImagePart('./image.png');
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
function createImagePart(source, mimeType) {
|
|
78
|
+
// If it's a file path, read it
|
|
79
|
+
if (typeof source === 'string' && !source.startsWith('http') && !source.startsWith('data:')) {
|
|
80
|
+
if (fs.existsSync(source)) {
|
|
81
|
+
const buffer = fs.readFileSync(source);
|
|
82
|
+
const detectedMime = mimeType || detectImageMimeType(source);
|
|
83
|
+
return {
|
|
84
|
+
type: 'image',
|
|
85
|
+
image: buffer,
|
|
86
|
+
mimeType: detectedMime,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
type: 'image',
|
|
92
|
+
image: source,
|
|
93
|
+
mimeType,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create a file part from various sources.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const filePart = createFilePart('./document.txt', 'text/plain');
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
function createFilePart(source, mimeType, name) {
|
|
105
|
+
// If it's a file path, read it
|
|
106
|
+
if (typeof source === 'string' && !source.startsWith('http') && !source.startsWith('data:')) {
|
|
107
|
+
if (fs.existsSync(source)) {
|
|
108
|
+
const buffer = fs.readFileSync(source);
|
|
109
|
+
return {
|
|
110
|
+
type: 'file',
|
|
111
|
+
data: buffer,
|
|
112
|
+
mimeType,
|
|
113
|
+
name: name || path.basename(source),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
type: 'file',
|
|
119
|
+
data: source,
|
|
120
|
+
mimeType,
|
|
121
|
+
name,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Create a PDF part from various sources.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const pdfPart = createPdfPart('./document.pdf');
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @example With page range
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const pdfPart = createPdfPart('./document.pdf', { pages: { start: 1, end: 5 } });
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
function createPdfPart(source, options) {
|
|
138
|
+
// If it's a file path, read it
|
|
139
|
+
if (typeof source === 'string' && !source.startsWith('http') && !source.startsWith('data:')) {
|
|
140
|
+
if (fs.existsSync(source)) {
|
|
141
|
+
const buffer = fs.readFileSync(source);
|
|
142
|
+
return {
|
|
143
|
+
type: 'pdf',
|
|
144
|
+
data: buffer,
|
|
145
|
+
pages: options?.pages,
|
|
146
|
+
textOnly: options?.textOnly,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
type: 'pdf',
|
|
152
|
+
data: source,
|
|
153
|
+
pages: options?.pages,
|
|
154
|
+
textOnly: options?.textOnly,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Convert input parts to AI SDK message content format.
|
|
159
|
+
*/
|
|
160
|
+
function toMessageContent(parts) {
|
|
161
|
+
return parts.map(part => {
|
|
162
|
+
switch (part.type) {
|
|
163
|
+
case 'text':
|
|
164
|
+
return { type: 'text', text: part.text };
|
|
165
|
+
case 'image':
|
|
166
|
+
return {
|
|
167
|
+
type: 'image',
|
|
168
|
+
image: part.image,
|
|
169
|
+
mimeType: part.mimeType,
|
|
170
|
+
};
|
|
171
|
+
case 'file':
|
|
172
|
+
return {
|
|
173
|
+
type: 'file',
|
|
174
|
+
data: part.data,
|
|
175
|
+
mimeType: part.mimeType,
|
|
176
|
+
};
|
|
177
|
+
case 'pdf':
|
|
178
|
+
// PDFs are treated as files with application/pdf mime type
|
|
179
|
+
return {
|
|
180
|
+
type: 'file',
|
|
181
|
+
data: part.data,
|
|
182
|
+
mimeType: 'application/pdf',
|
|
183
|
+
};
|
|
184
|
+
default:
|
|
185
|
+
return part;
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create a multimodal message with text and images.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* const message = createMultimodalMessage(
|
|
195
|
+
* 'What is in this image?',
|
|
196
|
+
* ['https://example.com/image.png']
|
|
197
|
+
* );
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
function createMultimodalMessage(text, images, role = 'user') {
|
|
201
|
+
const content = [];
|
|
202
|
+
// Add images first
|
|
203
|
+
for (const image of images) {
|
|
204
|
+
content.push(createImagePart(image));
|
|
205
|
+
}
|
|
206
|
+
// Add text
|
|
207
|
+
content.push(createTextPart(text));
|
|
208
|
+
return {
|
|
209
|
+
role,
|
|
210
|
+
content: toMessageContent(content),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Detect image MIME type from file extension.
|
|
215
|
+
*/
|
|
216
|
+
function detectImageMimeType(filePath) {
|
|
217
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
218
|
+
const mimeTypes = {
|
|
219
|
+
'.png': 'image/png',
|
|
220
|
+
'.jpg': 'image/jpeg',
|
|
221
|
+
'.jpeg': 'image/jpeg',
|
|
222
|
+
'.gif': 'image/gif',
|
|
223
|
+
'.webp': 'image/webp',
|
|
224
|
+
'.svg': 'image/svg+xml',
|
|
225
|
+
'.bmp': 'image/bmp',
|
|
226
|
+
'.ico': 'image/x-icon',
|
|
227
|
+
};
|
|
228
|
+
return mimeTypes[ext] || 'image/png';
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Convert a base64 string to Uint8Array.
|
|
232
|
+
*/
|
|
233
|
+
function base64ToUint8Array(base64) {
|
|
234
|
+
// Handle data URLs
|
|
235
|
+
const base64Data = base64.includes(',') ? base64.split(',')[1] : base64;
|
|
236
|
+
const binaryString = atob(base64Data);
|
|
237
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
238
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
239
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
240
|
+
}
|
|
241
|
+
return bytes;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Convert Uint8Array to base64 string.
|
|
245
|
+
*/
|
|
246
|
+
function uint8ArrayToBase64(bytes) {
|
|
247
|
+
let binary = '';
|
|
248
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
249
|
+
binary += String.fromCharCode(bytes[i]);
|
|
250
|
+
}
|
|
251
|
+
return btoa(binary);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Check if a string is a valid URL.
|
|
255
|
+
*/
|
|
256
|
+
function isUrl(str) {
|
|
257
|
+
try {
|
|
258
|
+
new URL(str);
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Check if a string is a data URL.
|
|
267
|
+
*/
|
|
268
|
+
function isDataUrl(str) {
|
|
269
|
+
return str.startsWith('data:');
|
|
270
|
+
}
|