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,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Google Provider - Implementation for Google Gemini API
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GoogleProvider = void 0;
|
|
7
|
+
const base_1 = require("./base");
|
|
8
|
+
class GoogleProvider extends base_1.BaseProvider {
|
|
9
|
+
constructor(modelId, config = {}) {
|
|
10
|
+
super(modelId, config);
|
|
11
|
+
this.providerId = 'google';
|
|
12
|
+
this.apiKey = config.apiKey || process.env.GOOGLE_API_KEY || '';
|
|
13
|
+
this.baseUrl = config.baseUrl || 'https://generativelanguage.googleapis.com/v1beta';
|
|
14
|
+
if (!this.apiKey) {
|
|
15
|
+
throw new Error('GOOGLE_API_KEY is required');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async generateText(options) {
|
|
19
|
+
return this.withRetry(async () => {
|
|
20
|
+
const { systemInstruction, contents } = this.formatRequest(options.messages);
|
|
21
|
+
const response = await fetch(`${this.baseUrl}/models/${this.modelId}:generateContent?key=${this.apiKey}`, {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: { 'Content-Type': 'application/json' },
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
systemInstruction: systemInstruction ? { parts: [{ text: systemInstruction }] } : undefined,
|
|
26
|
+
contents,
|
|
27
|
+
generationConfig: {
|
|
28
|
+
temperature: options.temperature ?? 0.7,
|
|
29
|
+
maxOutputTokens: options.maxTokens,
|
|
30
|
+
topP: options.topP,
|
|
31
|
+
stopSequences: options.stop,
|
|
32
|
+
},
|
|
33
|
+
tools: options.tools ? this.formatTools(options.tools) : undefined,
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
const error = await response.json().catch(() => ({}));
|
|
38
|
+
throw Object.assign(new Error(error.error?.message || `Google API error: ${response.status}`), {
|
|
39
|
+
status: response.status,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const data = await response.json();
|
|
43
|
+
const candidate = data.candidates?.[0];
|
|
44
|
+
let text = '';
|
|
45
|
+
const toolCalls = [];
|
|
46
|
+
for (const part of candidate?.content?.parts || []) {
|
|
47
|
+
if (part.text) {
|
|
48
|
+
text += part.text;
|
|
49
|
+
}
|
|
50
|
+
else if (part.functionCall) {
|
|
51
|
+
toolCalls.push({
|
|
52
|
+
id: `call_${Math.random().toString(36).substr(2, 9)}`,
|
|
53
|
+
type: 'function',
|
|
54
|
+
function: {
|
|
55
|
+
name: part.functionCall.name,
|
|
56
|
+
arguments: JSON.stringify(part.functionCall.args || {}),
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
text,
|
|
63
|
+
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
64
|
+
usage: {
|
|
65
|
+
promptTokens: data.usageMetadata?.promptTokenCount || 0,
|
|
66
|
+
completionTokens: data.usageMetadata?.candidatesTokenCount || 0,
|
|
67
|
+
totalTokens: data.usageMetadata?.totalTokenCount || 0,
|
|
68
|
+
},
|
|
69
|
+
finishReason: this.mapFinishReason(candidate?.finishReason),
|
|
70
|
+
raw: data,
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async streamText(options) {
|
|
75
|
+
const self = this;
|
|
76
|
+
const { systemInstruction, contents } = this.formatRequest(options.messages);
|
|
77
|
+
return {
|
|
78
|
+
async *[Symbol.asyncIterator]() {
|
|
79
|
+
const response = await fetch(`${self.baseUrl}/models/${self.modelId}:streamGenerateContent?key=${self.apiKey}&alt=sse`, {
|
|
80
|
+
method: 'POST',
|
|
81
|
+
headers: { 'Content-Type': 'application/json' },
|
|
82
|
+
body: JSON.stringify({
|
|
83
|
+
systemInstruction: systemInstruction ? { parts: [{ text: systemInstruction }] } : undefined,
|
|
84
|
+
contents,
|
|
85
|
+
generationConfig: {
|
|
86
|
+
temperature: options.temperature ?? 0.7,
|
|
87
|
+
maxOutputTokens: options.maxTokens,
|
|
88
|
+
},
|
|
89
|
+
tools: options.tools ? self.formatTools(options.tools) : undefined,
|
|
90
|
+
}),
|
|
91
|
+
});
|
|
92
|
+
if (!response.ok) {
|
|
93
|
+
const error = await response.json().catch(() => ({}));
|
|
94
|
+
throw new Error(error.error?.message || `Google API error: ${response.status}`);
|
|
95
|
+
}
|
|
96
|
+
const reader = response.body?.getReader();
|
|
97
|
+
if (!reader)
|
|
98
|
+
throw new Error('No response body');
|
|
99
|
+
const decoder = new TextDecoder();
|
|
100
|
+
let buffer = '';
|
|
101
|
+
const toolCalls = [];
|
|
102
|
+
while (true) {
|
|
103
|
+
const { done, value } = await reader.read();
|
|
104
|
+
if (done)
|
|
105
|
+
break;
|
|
106
|
+
buffer += decoder.decode(value, { stream: true });
|
|
107
|
+
const lines = buffer.split('\n');
|
|
108
|
+
buffer = lines.pop() || '';
|
|
109
|
+
for (const line of lines) {
|
|
110
|
+
if (!line.startsWith('data: '))
|
|
111
|
+
continue;
|
|
112
|
+
const data = line.slice(6);
|
|
113
|
+
if (data === '[DONE]')
|
|
114
|
+
continue;
|
|
115
|
+
try {
|
|
116
|
+
const event = JSON.parse(data);
|
|
117
|
+
const candidate = event.candidates?.[0];
|
|
118
|
+
for (const part of candidate?.content?.parts || []) {
|
|
119
|
+
if (part.text) {
|
|
120
|
+
if (options.onToken)
|
|
121
|
+
options.onToken(part.text);
|
|
122
|
+
yield { text: part.text };
|
|
123
|
+
}
|
|
124
|
+
else if (part.functionCall) {
|
|
125
|
+
toolCalls.push({
|
|
126
|
+
id: `call_${Math.random().toString(36).substr(2, 9)}`,
|
|
127
|
+
type: 'function',
|
|
128
|
+
function: {
|
|
129
|
+
name: part.functionCall.name,
|
|
130
|
+
arguments: JSON.stringify(part.functionCall.args || {}),
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (candidate?.finishReason) {
|
|
136
|
+
yield {
|
|
137
|
+
finishReason: self.mapFinishReason(candidate.finishReason),
|
|
138
|
+
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
139
|
+
usage: event.usageMetadata ? {
|
|
140
|
+
promptTokens: event.usageMetadata.promptTokenCount || 0,
|
|
141
|
+
completionTokens: event.usageMetadata.candidatesTokenCount || 0,
|
|
142
|
+
totalTokens: event.usageMetadata.totalTokenCount || 0,
|
|
143
|
+
} : undefined,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
// Skip malformed JSON
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
async generateObject(options) {
|
|
156
|
+
const { systemInstruction, contents } = this.formatRequest(options.messages);
|
|
157
|
+
return this.withRetry(async () => {
|
|
158
|
+
const response = await fetch(`${this.baseUrl}/models/${this.modelId}:generateContent?key=${this.apiKey}`, {
|
|
159
|
+
method: 'POST',
|
|
160
|
+
headers: { 'Content-Type': 'application/json' },
|
|
161
|
+
body: JSON.stringify({
|
|
162
|
+
systemInstruction: systemInstruction
|
|
163
|
+
? { parts: [{ text: `${systemInstruction}\n\nRespond with valid JSON matching this schema:\n${JSON.stringify(options.schema, null, 2)}` }] }
|
|
164
|
+
: { parts: [{ text: `Respond with valid JSON matching this schema:\n${JSON.stringify(options.schema, null, 2)}` }] },
|
|
165
|
+
contents,
|
|
166
|
+
generationConfig: {
|
|
167
|
+
temperature: options.temperature ?? 0.7,
|
|
168
|
+
maxOutputTokens: options.maxTokens,
|
|
169
|
+
responseMimeType: 'application/json',
|
|
170
|
+
},
|
|
171
|
+
}),
|
|
172
|
+
});
|
|
173
|
+
if (!response.ok) {
|
|
174
|
+
const error = await response.json().catch(() => ({}));
|
|
175
|
+
throw new Error(error.error?.message || `Google API error: ${response.status}`);
|
|
176
|
+
}
|
|
177
|
+
const data = await response.json();
|
|
178
|
+
const candidate = data.candidates?.[0];
|
|
179
|
+
let text = '';
|
|
180
|
+
for (const part of candidate?.content?.parts || []) {
|
|
181
|
+
if (part.text)
|
|
182
|
+
text += part.text;
|
|
183
|
+
}
|
|
184
|
+
let parsed;
|
|
185
|
+
try {
|
|
186
|
+
parsed = JSON.parse(text);
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
// Try to extract JSON from text
|
|
190
|
+
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
191
|
+
if (!jsonMatch)
|
|
192
|
+
throw new Error(`No JSON found: ${text}`);
|
|
193
|
+
parsed = JSON.parse(jsonMatch[0]);
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
object: parsed,
|
|
197
|
+
usage: {
|
|
198
|
+
promptTokens: data.usageMetadata?.promptTokenCount || 0,
|
|
199
|
+
completionTokens: data.usageMetadata?.candidatesTokenCount || 0,
|
|
200
|
+
totalTokens: data.usageMetadata?.totalTokenCount || 0,
|
|
201
|
+
},
|
|
202
|
+
raw: data,
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
formatRequest(messages) {
|
|
207
|
+
const systemMessages = messages.filter(m => m.role === 'system');
|
|
208
|
+
const otherMessages = messages.filter(m => m.role !== 'system');
|
|
209
|
+
const systemInstruction = systemMessages.length > 0
|
|
210
|
+
? systemMessages.map(m => m.content).join('\n')
|
|
211
|
+
: null;
|
|
212
|
+
return {
|
|
213
|
+
systemInstruction,
|
|
214
|
+
contents: this.formatMessages(otherMessages),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
formatMessages(messages) {
|
|
218
|
+
const result = [];
|
|
219
|
+
for (const msg of messages) {
|
|
220
|
+
if (msg.role === 'system')
|
|
221
|
+
continue;
|
|
222
|
+
const role = msg.role === 'assistant' ? 'model' : 'user';
|
|
223
|
+
if (msg.role === 'tool') {
|
|
224
|
+
result.push({
|
|
225
|
+
role: 'user',
|
|
226
|
+
parts: [{
|
|
227
|
+
functionResponse: {
|
|
228
|
+
name: msg.name || 'function',
|
|
229
|
+
response: { result: msg.content },
|
|
230
|
+
},
|
|
231
|
+
}],
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
else if (msg.role === 'assistant' && msg.tool_calls) {
|
|
235
|
+
const parts = [];
|
|
236
|
+
if (msg.content)
|
|
237
|
+
parts.push({ text: msg.content });
|
|
238
|
+
for (const tc of msg.tool_calls) {
|
|
239
|
+
parts.push({
|
|
240
|
+
functionCall: {
|
|
241
|
+
name: tc.function.name,
|
|
242
|
+
args: JSON.parse(tc.function.arguments),
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
result.push({ role: 'model', parts });
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
result.push({
|
|
250
|
+
role,
|
|
251
|
+
parts: [{ text: msg.content || '' }],
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
257
|
+
formatTools(tools) {
|
|
258
|
+
return [{
|
|
259
|
+
functionDeclarations: tools.map(tool => ({
|
|
260
|
+
name: tool.name,
|
|
261
|
+
description: tool.description || `Function ${tool.name}`,
|
|
262
|
+
parameters: tool.parameters || { type: 'object', properties: {} },
|
|
263
|
+
})),
|
|
264
|
+
}];
|
|
265
|
+
}
|
|
266
|
+
mapFinishReason(reason) {
|
|
267
|
+
switch (reason) {
|
|
268
|
+
case 'STOP': return 'stop';
|
|
269
|
+
case 'MAX_TOKENS': return 'length';
|
|
270
|
+
case 'SAFETY': return 'content_filter';
|
|
271
|
+
default: return 'stop';
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
exports.GoogleProvider = GoogleProvider;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Providers - Factory and exports for multi-provider support
|
|
3
|
+
*
|
|
4
|
+
* This module provides an extensible provider registry system that allows
|
|
5
|
+
* users to register custom providers (e.g., Cloudflare, Ollama) alongside
|
|
6
|
+
* the built-in providers (OpenAI, Anthropic, Google).
|
|
7
|
+
*
|
|
8
|
+
* @example Register a custom provider
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { registerProvider, Agent } from 'praisonai';
|
|
11
|
+
* import { CloudflareProvider } from './my-cloudflare-provider';
|
|
12
|
+
*
|
|
13
|
+
* registerProvider('cloudflare', CloudflareProvider);
|
|
14
|
+
* const agent = new Agent({ llm: 'cloudflare/workers-ai' });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export * from './types';
|
|
18
|
+
export * from './base';
|
|
19
|
+
export { OpenAIProvider } from './openai';
|
|
20
|
+
export { AnthropicProvider } from './anthropic';
|
|
21
|
+
export { GoogleProvider } from './google';
|
|
22
|
+
export { ProviderRegistry, ProviderConstructor, ProviderLoader, RegisterOptions, IProviderRegistry, getDefaultRegistry, createProviderRegistry, registerProvider, unregisterProvider, hasProvider, listProviders, registerBuiltinProviders, } from './registry';
|
|
23
|
+
import type { LLMProvider, ProviderConfig } from './types';
|
|
24
|
+
import type { ProviderRegistry } from './registry';
|
|
25
|
+
/**
|
|
26
|
+
* Parse model string into provider and model ID
|
|
27
|
+
* Supports formats:
|
|
28
|
+
* - "provider/model" (e.g., "openai/gpt-4o")
|
|
29
|
+
* - "model" (defaults to OpenAI, e.g., "gpt-4o-mini")
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseModelString(model: string): {
|
|
32
|
+
providerId: string;
|
|
33
|
+
modelId: string;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Input types for createProvider
|
|
37
|
+
*/
|
|
38
|
+
export type ProviderInput = string | LLMProvider | {
|
|
39
|
+
name: string;
|
|
40
|
+
modelId?: string;
|
|
41
|
+
config?: ProviderConfig;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Options for createProvider
|
|
45
|
+
*/
|
|
46
|
+
export interface CreateProviderOptions {
|
|
47
|
+
/** Override the default registry */
|
|
48
|
+
registry?: ProviderRegistry;
|
|
49
|
+
/** Provider configuration */
|
|
50
|
+
config?: ProviderConfig;
|
|
51
|
+
/** Model ID (used when input is a constructor or spec without modelId) */
|
|
52
|
+
modelId?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create a provider instance from various input types
|
|
56
|
+
*
|
|
57
|
+
* @example String input (backward compatible)
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const provider = createProvider('openai/gpt-4o');
|
|
60
|
+
* const provider = createProvider('anthropic/claude-3-5-sonnet-latest');
|
|
61
|
+
* const provider = createProvider('google/gemini-2.0-flash');
|
|
62
|
+
* const provider = createProvider('gpt-4o-mini'); // Defaults to OpenAI
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @example Custom provider (after registration)
|
|
66
|
+
* ```typescript
|
|
67
|
+
* registerProvider('cloudflare', CloudflareProvider);
|
|
68
|
+
* const provider = createProvider('cloudflare/workers-ai');
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example Provider instance (pass-through)
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const myProvider = new CustomProvider('model');
|
|
74
|
+
* const provider = createProvider(myProvider); // Returns same instance
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example Spec object
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const provider = createProvider({ name: 'openai', modelId: 'gpt-4o', config: { timeout: 5000 } });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function createProvider(input: ProviderInput, options?: CreateProviderOptions | ProviderConfig): LLMProvider;
|
|
83
|
+
/**
|
|
84
|
+
* Get the default provider (OpenAI with gpt-4o-mini)
|
|
85
|
+
*/
|
|
86
|
+
export declare function getDefaultProvider(config?: ProviderConfig): LLMProvider;
|
|
87
|
+
/**
|
|
88
|
+
* Check if a provider is available (has required API key)
|
|
89
|
+
*/
|
|
90
|
+
export declare function isProviderAvailable(providerId: string): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Get list of available providers (registered and with API keys)
|
|
93
|
+
*/
|
|
94
|
+
export declare function getAvailableProviders(): string[];
|
|
95
|
+
/**
|
|
96
|
+
* AI SDK Backend - Multi-provider LLM support via Vercel's AI SDK
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* import { createAISDKBackend } from 'praisonai';
|
|
101
|
+
*
|
|
102
|
+
* const backend = createAISDKBackend('anthropic/claude-3-5-sonnet');
|
|
103
|
+
* const result = await backend.generateText({ messages: [...] });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export { AISDKBackend, createAISDKBackend, isProviderSupported as isAISDKProviderSupported, listSupportedProviders as listAISDKProviders, registerCustomProvider as registerAISDKCustomProvider, validateProviderApiKey as validateAISDKProviderApiKey, getMissingApiKeyMessage as getAISDKMissingApiKeyMessage, isAISDKAvailable, getAISDKVersion, AISDKError, SAFE_DEFAULTS as AISDK_SAFE_DEFAULTS, AISDK_PROVIDERS, PROVIDER_ALIASES as AISDK_PROVIDER_ALIASES, createAttributionMiddleware, createStandardMiddleware, redactSensitiveData, } from './ai-sdk';
|
|
107
|
+
export type { AISDKBackendConfig, AISDKProviderOptions, AttributionContext, AISDKTelemetrySettings, AISDKErrorCode, PraisonStreamChunk, AISDKToolDefinition, AISDKToolCall, AISDKToolResult, AISDKMiddleware, } from './ai-sdk';
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LLM Providers - Factory and exports for multi-provider support
|
|
4
|
+
*
|
|
5
|
+
* This module provides an extensible provider registry system that allows
|
|
6
|
+
* users to register custom providers (e.g., Cloudflare, Ollama) alongside
|
|
7
|
+
* the built-in providers (OpenAI, Anthropic, Google).
|
|
8
|
+
*
|
|
9
|
+
* @example Register a custom provider
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { registerProvider, Agent } from 'praisonai';
|
|
12
|
+
* import { CloudflareProvider } from './my-cloudflare-provider';
|
|
13
|
+
*
|
|
14
|
+
* registerProvider('cloudflare', CloudflareProvider);
|
|
15
|
+
* const agent = new Agent({ llm: 'cloudflare/workers-ai' });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
21
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
22
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
23
|
+
}
|
|
24
|
+
Object.defineProperty(o, k2, desc);
|
|
25
|
+
}) : (function(o, m, k, k2) {
|
|
26
|
+
if (k2 === undefined) k2 = k;
|
|
27
|
+
o[k2] = m[k];
|
|
28
|
+
}));
|
|
29
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
30
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.redactSensitiveData = exports.createStandardMiddleware = exports.createAttributionMiddleware = exports.AISDK_PROVIDER_ALIASES = exports.AISDK_PROVIDERS = exports.AISDK_SAFE_DEFAULTS = exports.AISDKError = exports.getAISDKVersion = exports.isAISDKAvailable = exports.getAISDKMissingApiKeyMessage = exports.validateAISDKProviderApiKey = exports.registerAISDKCustomProvider = exports.listAISDKProviders = exports.isAISDKProviderSupported = exports.createAISDKBackend = exports.AISDKBackend = exports.registerBuiltinProviders = exports.listProviders = exports.hasProvider = exports.unregisterProvider = exports.registerProvider = exports.createProviderRegistry = exports.getDefaultRegistry = exports.ProviderRegistry = exports.GoogleProvider = exports.AnthropicProvider = exports.OpenAIProvider = void 0;
|
|
34
|
+
exports.parseModelString = parseModelString;
|
|
35
|
+
exports.createProvider = createProvider;
|
|
36
|
+
exports.getDefaultProvider = getDefaultProvider;
|
|
37
|
+
exports.isProviderAvailable = isProviderAvailable;
|
|
38
|
+
exports.getAvailableProviders = getAvailableProviders;
|
|
39
|
+
__exportStar(require("./types"), exports);
|
|
40
|
+
__exportStar(require("./base"), exports);
|
|
41
|
+
var openai_1 = require("./openai");
|
|
42
|
+
Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openai_1.OpenAIProvider; } });
|
|
43
|
+
var anthropic_1 = require("./anthropic");
|
|
44
|
+
Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return anthropic_1.AnthropicProvider; } });
|
|
45
|
+
var google_1 = require("./google");
|
|
46
|
+
Object.defineProperty(exports, "GoogleProvider", { enumerable: true, get: function () { return google_1.GoogleProvider; } });
|
|
47
|
+
// Export registry types and functions
|
|
48
|
+
var registry_1 = require("./registry");
|
|
49
|
+
Object.defineProperty(exports, "ProviderRegistry", { enumerable: true, get: function () { return registry_1.ProviderRegistry; } });
|
|
50
|
+
Object.defineProperty(exports, "getDefaultRegistry", { enumerable: true, get: function () { return registry_1.getDefaultRegistry; } });
|
|
51
|
+
Object.defineProperty(exports, "createProviderRegistry", { enumerable: true, get: function () { return registry_1.createProviderRegistry; } });
|
|
52
|
+
Object.defineProperty(exports, "registerProvider", { enumerable: true, get: function () { return registry_1.registerProvider; } });
|
|
53
|
+
Object.defineProperty(exports, "unregisterProvider", { enumerable: true, get: function () { return registry_1.unregisterProvider; } });
|
|
54
|
+
Object.defineProperty(exports, "hasProvider", { enumerable: true, get: function () { return registry_1.hasProvider; } });
|
|
55
|
+
Object.defineProperty(exports, "listProviders", { enumerable: true, get: function () { return registry_1.listProviders; } });
|
|
56
|
+
Object.defineProperty(exports, "registerBuiltinProviders", { enumerable: true, get: function () { return registry_1.registerBuiltinProviders; } });
|
|
57
|
+
const registry_2 = require("./registry");
|
|
58
|
+
/**
|
|
59
|
+
* Parse model string into provider and model ID
|
|
60
|
+
* Supports formats:
|
|
61
|
+
* - "provider/model" (e.g., "openai/gpt-4o")
|
|
62
|
+
* - "model" (defaults to OpenAI, e.g., "gpt-4o-mini")
|
|
63
|
+
*/
|
|
64
|
+
function parseModelString(model) {
|
|
65
|
+
if (model.includes('/')) {
|
|
66
|
+
const [providerId, ...rest] = model.split('/');
|
|
67
|
+
return { providerId: providerId.toLowerCase(), modelId: rest.join('/') };
|
|
68
|
+
}
|
|
69
|
+
// Default to OpenAI for common model prefixes
|
|
70
|
+
if (model.startsWith('gpt-') || model.startsWith('o1') || model.startsWith('o3')) {
|
|
71
|
+
return { providerId: 'openai', modelId: model };
|
|
72
|
+
}
|
|
73
|
+
if (model.startsWith('claude-')) {
|
|
74
|
+
return { providerId: 'anthropic', modelId: model };
|
|
75
|
+
}
|
|
76
|
+
if (model.startsWith('gemini-')) {
|
|
77
|
+
return { providerId: 'google', modelId: model };
|
|
78
|
+
}
|
|
79
|
+
// Default to OpenAI
|
|
80
|
+
return { providerId: 'openai', modelId: model };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a provider instance from various input types
|
|
84
|
+
*
|
|
85
|
+
* @example String input (backward compatible)
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const provider = createProvider('openai/gpt-4o');
|
|
88
|
+
* const provider = createProvider('anthropic/claude-3-5-sonnet-latest');
|
|
89
|
+
* const provider = createProvider('google/gemini-2.0-flash');
|
|
90
|
+
* const provider = createProvider('gpt-4o-mini'); // Defaults to OpenAI
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @example Custom provider (after registration)
|
|
94
|
+
* ```typescript
|
|
95
|
+
* registerProvider('cloudflare', CloudflareProvider);
|
|
96
|
+
* const provider = createProvider('cloudflare/workers-ai');
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @example Provider instance (pass-through)
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const myProvider = new CustomProvider('model');
|
|
102
|
+
* const provider = createProvider(myProvider); // Returns same instance
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @example Spec object
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const provider = createProvider({ name: 'openai', modelId: 'gpt-4o', config: { timeout: 5000 } });
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
function createProvider(input, options) {
|
|
111
|
+
// Handle legacy signature: createProvider(model, config)
|
|
112
|
+
const opts = options && 'registry' in options
|
|
113
|
+
? options
|
|
114
|
+
: { config: options };
|
|
115
|
+
const registry = opts.registry || (0, registry_2.getDefaultRegistry)();
|
|
116
|
+
// Case 1: Already a provider instance - pass through
|
|
117
|
+
if (isProviderInstance(input)) {
|
|
118
|
+
return input;
|
|
119
|
+
}
|
|
120
|
+
// Case 2: Spec object
|
|
121
|
+
if (typeof input === 'object' && 'name' in input) {
|
|
122
|
+
const { name, modelId, config } = input;
|
|
123
|
+
return registry.resolve(name, modelId || 'default', config || opts.config);
|
|
124
|
+
}
|
|
125
|
+
// Case 3: String - parse and resolve
|
|
126
|
+
if (typeof input === 'string') {
|
|
127
|
+
const { providerId, modelId } = parseModelString(input);
|
|
128
|
+
return registry.resolve(providerId, modelId, opts.config);
|
|
129
|
+
}
|
|
130
|
+
throw new Error(`Invalid provider input. Expected string, provider instance, or spec object. ` +
|
|
131
|
+
`Got: ${typeof input}`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Type guard to check if value is a provider instance
|
|
135
|
+
*/
|
|
136
|
+
function isProviderInstance(value) {
|
|
137
|
+
return (typeof value === 'object' &&
|
|
138
|
+
value !== null &&
|
|
139
|
+
'providerId' in value &&
|
|
140
|
+
'modelId' in value &&
|
|
141
|
+
'generateText' in value &&
|
|
142
|
+
typeof value.generateText === 'function');
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get the default provider (OpenAI with gpt-4o-mini)
|
|
146
|
+
*/
|
|
147
|
+
function getDefaultProvider(config) {
|
|
148
|
+
return createProvider('openai/gpt-4o-mini', config);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if a provider is available (has required API key)
|
|
152
|
+
*/
|
|
153
|
+
function isProviderAvailable(providerId) {
|
|
154
|
+
const normalizedId = providerId.toLowerCase();
|
|
155
|
+
// Check if provider is registered
|
|
156
|
+
if (!(0, registry_2.getDefaultRegistry)().has(normalizedId)) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
// Check for API keys based on known providers
|
|
160
|
+
switch (normalizedId) {
|
|
161
|
+
case 'openai':
|
|
162
|
+
case 'oai':
|
|
163
|
+
return !!process.env.OPENAI_API_KEY;
|
|
164
|
+
case 'anthropic':
|
|
165
|
+
case 'claude':
|
|
166
|
+
return !!process.env.ANTHROPIC_API_KEY;
|
|
167
|
+
case 'google':
|
|
168
|
+
case 'gemini':
|
|
169
|
+
return !!process.env.GOOGLE_API_KEY;
|
|
170
|
+
default:
|
|
171
|
+
// For custom providers, assume available if registered
|
|
172
|
+
// Users can override this behavior
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get list of available providers (registered and with API keys)
|
|
178
|
+
*/
|
|
179
|
+
function getAvailableProviders() {
|
|
180
|
+
return (0, registry_2.getDefaultRegistry)().list().filter(isProviderAvailable);
|
|
181
|
+
}
|
|
182
|
+
// ============================================================================
|
|
183
|
+
// AI SDK Integration Exports
|
|
184
|
+
// ============================================================================
|
|
185
|
+
/**
|
|
186
|
+
* AI SDK Backend - Multi-provider LLM support via Vercel's AI SDK
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* import { createAISDKBackend } from 'praisonai';
|
|
191
|
+
*
|
|
192
|
+
* const backend = createAISDKBackend('anthropic/claude-3-5-sonnet');
|
|
193
|
+
* const result = await backend.generateText({ messages: [...] });
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
var ai_sdk_1 = require("./ai-sdk");
|
|
197
|
+
// Backend
|
|
198
|
+
Object.defineProperty(exports, "AISDKBackend", { enumerable: true, get: function () { return ai_sdk_1.AISDKBackend; } });
|
|
199
|
+
Object.defineProperty(exports, "createAISDKBackend", { enumerable: true, get: function () { return ai_sdk_1.createAISDKBackend; } });
|
|
200
|
+
// Provider utilities
|
|
201
|
+
Object.defineProperty(exports, "isAISDKProviderSupported", { enumerable: true, get: function () { return ai_sdk_1.isProviderSupported; } });
|
|
202
|
+
Object.defineProperty(exports, "listAISDKProviders", { enumerable: true, get: function () { return ai_sdk_1.listSupportedProviders; } });
|
|
203
|
+
Object.defineProperty(exports, "registerAISDKCustomProvider", { enumerable: true, get: function () { return ai_sdk_1.registerCustomProvider; } });
|
|
204
|
+
Object.defineProperty(exports, "validateAISDKProviderApiKey", { enumerable: true, get: function () { return ai_sdk_1.validateProviderApiKey; } });
|
|
205
|
+
Object.defineProperty(exports, "getAISDKMissingApiKeyMessage", { enumerable: true, get: function () { return ai_sdk_1.getMissingApiKeyMessage; } });
|
|
206
|
+
Object.defineProperty(exports, "isAISDKAvailable", { enumerable: true, get: function () { return ai_sdk_1.isAISDKAvailable; } });
|
|
207
|
+
Object.defineProperty(exports, "getAISDKVersion", { enumerable: true, get: function () { return ai_sdk_1.getAISDKVersion; } });
|
|
208
|
+
// Types
|
|
209
|
+
Object.defineProperty(exports, "AISDKError", { enumerable: true, get: function () { return ai_sdk_1.AISDKError; } });
|
|
210
|
+
Object.defineProperty(exports, "AISDK_SAFE_DEFAULTS", { enumerable: true, get: function () { return ai_sdk_1.SAFE_DEFAULTS; } });
|
|
211
|
+
Object.defineProperty(exports, "AISDK_PROVIDERS", { enumerable: true, get: function () { return ai_sdk_1.AISDK_PROVIDERS; } });
|
|
212
|
+
Object.defineProperty(exports, "AISDK_PROVIDER_ALIASES", { enumerable: true, get: function () { return ai_sdk_1.PROVIDER_ALIASES; } });
|
|
213
|
+
// Middleware
|
|
214
|
+
Object.defineProperty(exports, "createAttributionMiddleware", { enumerable: true, get: function () { return ai_sdk_1.createAttributionMiddleware; } });
|
|
215
|
+
Object.defineProperty(exports, "createStandardMiddleware", { enumerable: true, get: function () { return ai_sdk_1.createStandardMiddleware; } });
|
|
216
|
+
Object.defineProperty(exports, "redactSensitiveData", { enumerable: true, get: function () { return ai_sdk_1.redactSensitiveData; } });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Provider - Implementation for OpenAI API
|
|
3
|
+
*/
|
|
4
|
+
import type { ChatCompletionMessageParam, ChatCompletionTool } from 'openai/resources/chat/completions';
|
|
5
|
+
import { BaseProvider } from './base';
|
|
6
|
+
import type { ProviderConfig, GenerateTextOptions, GenerateTextResult, StreamTextOptions, StreamChunk, GenerateObjectOptions, GenerateObjectResult, Message, ToolDefinition } from './types';
|
|
7
|
+
export declare class OpenAIProvider extends BaseProvider {
|
|
8
|
+
readonly providerId = "openai";
|
|
9
|
+
private client;
|
|
10
|
+
constructor(modelId: string, config?: ProviderConfig);
|
|
11
|
+
generateText(options: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
12
|
+
streamText(options: StreamTextOptions): Promise<AsyncIterable<StreamChunk>>;
|
|
13
|
+
generateObject<T = any>(options: GenerateObjectOptions<T>): Promise<GenerateObjectResult<T>>;
|
|
14
|
+
protected formatMessages(messages: Message[]): ChatCompletionMessageParam[];
|
|
15
|
+
protected formatTools(tools: ToolDefinition[]): ChatCompletionTool[];
|
|
16
|
+
private mapFinishReason;
|
|
17
|
+
private normalizeSchema;
|
|
18
|
+
}
|