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,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Graph RAG - Graph-based Retrieval Augmented Generation
|
|
4
|
+
* Inspired by mastra's graph-rag module
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.GraphRAG = exports.GraphStore = void 0;
|
|
8
|
+
exports.createGraphRAG = createGraphRAG;
|
|
9
|
+
/**
|
|
10
|
+
* In-memory Graph Store for Graph RAG
|
|
11
|
+
*/
|
|
12
|
+
class GraphStore {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.nodes = new Map();
|
|
15
|
+
this.edges = new Map();
|
|
16
|
+
this.adjacencyList = new Map();
|
|
17
|
+
this.reverseAdjacencyList = new Map();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Add a node to the graph
|
|
21
|
+
*/
|
|
22
|
+
addNode(node) {
|
|
23
|
+
this.nodes.set(node.id, node);
|
|
24
|
+
if (!this.adjacencyList.has(node.id)) {
|
|
25
|
+
this.adjacencyList.set(node.id, new Set());
|
|
26
|
+
}
|
|
27
|
+
if (!this.reverseAdjacencyList.has(node.id)) {
|
|
28
|
+
this.reverseAdjacencyList.set(node.id, new Set());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Add an edge to the graph
|
|
33
|
+
*/
|
|
34
|
+
addEdge(edge) {
|
|
35
|
+
this.edges.set(edge.id, edge);
|
|
36
|
+
// Update adjacency lists
|
|
37
|
+
if (!this.adjacencyList.has(edge.source)) {
|
|
38
|
+
this.adjacencyList.set(edge.source, new Set());
|
|
39
|
+
}
|
|
40
|
+
this.adjacencyList.get(edge.source).add(edge.target);
|
|
41
|
+
if (!this.reverseAdjacencyList.has(edge.target)) {
|
|
42
|
+
this.reverseAdjacencyList.set(edge.target, new Set());
|
|
43
|
+
}
|
|
44
|
+
this.reverseAdjacencyList.get(edge.target).add(edge.source);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a node by ID
|
|
48
|
+
*/
|
|
49
|
+
getNode(id) {
|
|
50
|
+
return this.nodes.get(id);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get all nodes
|
|
54
|
+
*/
|
|
55
|
+
getAllNodes() {
|
|
56
|
+
return Array.from(this.nodes.values());
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get neighbors of a node
|
|
60
|
+
*/
|
|
61
|
+
getNeighbors(nodeId, direction = 'both') {
|
|
62
|
+
const neighborIds = new Set();
|
|
63
|
+
if (direction === 'outgoing' || direction === 'both') {
|
|
64
|
+
const outgoing = this.adjacencyList.get(nodeId);
|
|
65
|
+
if (outgoing) {
|
|
66
|
+
outgoing.forEach(id => neighborIds.add(id));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (direction === 'incoming' || direction === 'both') {
|
|
70
|
+
const incoming = this.reverseAdjacencyList.get(nodeId);
|
|
71
|
+
if (incoming) {
|
|
72
|
+
incoming.forEach(id => neighborIds.add(id));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return Array.from(neighborIds)
|
|
76
|
+
.map(id => this.nodes.get(id))
|
|
77
|
+
.filter((n) => n !== undefined);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get edges between two nodes
|
|
81
|
+
*/
|
|
82
|
+
getEdgesBetween(sourceId, targetId) {
|
|
83
|
+
return Array.from(this.edges.values()).filter(e => (e.source === sourceId && e.target === targetId) ||
|
|
84
|
+
(e.source === targetId && e.target === sourceId));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Find paths between two nodes using BFS
|
|
88
|
+
*/
|
|
89
|
+
findPaths(startId, endId, maxDepth = 3) {
|
|
90
|
+
const paths = [];
|
|
91
|
+
const queue = [
|
|
92
|
+
{ path: [startId], visited: new Set([startId]) }
|
|
93
|
+
];
|
|
94
|
+
while (queue.length > 0) {
|
|
95
|
+
const { path, visited } = queue.shift();
|
|
96
|
+
const currentId = path[path.length - 1];
|
|
97
|
+
if (currentId === endId) {
|
|
98
|
+
paths.push(path.map(id => this.nodes.get(id)).filter(n => n));
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (path.length >= maxDepth) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const neighbors = this.adjacencyList.get(currentId) || new Set();
|
|
105
|
+
for (const neighborId of neighbors) {
|
|
106
|
+
if (!visited.has(neighborId)) {
|
|
107
|
+
const newVisited = new Set(visited);
|
|
108
|
+
newVisited.add(neighborId);
|
|
109
|
+
queue.push({ path: [...path, neighborId], visited: newVisited });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return paths;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get subgraph around a node
|
|
117
|
+
*/
|
|
118
|
+
getSubgraph(nodeId, depth = 2) {
|
|
119
|
+
const visitedNodes = new Set();
|
|
120
|
+
const resultEdges = [];
|
|
121
|
+
const queue = [{ id: nodeId, currentDepth: 0 }];
|
|
122
|
+
while (queue.length > 0) {
|
|
123
|
+
const { id, currentDepth } = queue.shift();
|
|
124
|
+
if (visitedNodes.has(id) || currentDepth > depth) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
visitedNodes.add(id);
|
|
128
|
+
if (currentDepth < depth) {
|
|
129
|
+
const neighbors = this.getNeighbors(id);
|
|
130
|
+
for (const neighbor of neighbors) {
|
|
131
|
+
if (!visitedNodes.has(neighbor.id)) {
|
|
132
|
+
queue.push({ id: neighbor.id, currentDepth: currentDepth + 1 });
|
|
133
|
+
// Add edges
|
|
134
|
+
const edges = this.getEdgesBetween(id, neighbor.id);
|
|
135
|
+
resultEdges.push(...edges);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const resultNodes = Array.from(visitedNodes)
|
|
141
|
+
.map(id => this.nodes.get(id))
|
|
142
|
+
.filter((n) => n !== undefined);
|
|
143
|
+
return { nodes: resultNodes, edges: resultEdges };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Clear the graph
|
|
147
|
+
*/
|
|
148
|
+
clear() {
|
|
149
|
+
this.nodes.clear();
|
|
150
|
+
this.edges.clear();
|
|
151
|
+
this.adjacencyList.clear();
|
|
152
|
+
this.reverseAdjacencyList.clear();
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get graph statistics
|
|
156
|
+
*/
|
|
157
|
+
getStats() {
|
|
158
|
+
return {
|
|
159
|
+
nodeCount: this.nodes.size,
|
|
160
|
+
edgeCount: this.edges.size
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.GraphStore = GraphStore;
|
|
165
|
+
/**
|
|
166
|
+
* Graph RAG - Combines graph traversal with vector similarity
|
|
167
|
+
*/
|
|
168
|
+
class GraphRAG {
|
|
169
|
+
constructor(config = {}) {
|
|
170
|
+
this.graphStore = new GraphStore();
|
|
171
|
+
this.embedFn = config.embedFn;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Add a document as a node
|
|
175
|
+
*/
|
|
176
|
+
async addDocument(doc) {
|
|
177
|
+
const embedding = this.embedFn ? await this.embedFn(doc.content) : undefined;
|
|
178
|
+
this.graphStore.addNode({
|
|
179
|
+
id: doc.id,
|
|
180
|
+
type: doc.type || 'document',
|
|
181
|
+
content: doc.content,
|
|
182
|
+
metadata: doc.metadata,
|
|
183
|
+
embedding
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Add a relationship between documents
|
|
188
|
+
*/
|
|
189
|
+
addRelationship(sourceId, targetId, type, weight) {
|
|
190
|
+
this.graphStore.addEdge({
|
|
191
|
+
id: `${sourceId}-${type}-${targetId}`,
|
|
192
|
+
source: sourceId,
|
|
193
|
+
target: targetId,
|
|
194
|
+
type,
|
|
195
|
+
weight
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Query the graph with a natural language query
|
|
200
|
+
*/
|
|
201
|
+
async query(query, config = {}) {
|
|
202
|
+
const { maxDepth = 2, maxNodes = 10, minScore = 0, includeEdges = true } = config;
|
|
203
|
+
// Get all nodes and score them
|
|
204
|
+
const allNodes = this.graphStore.getAllNodes();
|
|
205
|
+
let scoredNodes;
|
|
206
|
+
if (this.embedFn) {
|
|
207
|
+
// Use embedding similarity
|
|
208
|
+
const queryEmbedding = await this.embedFn(query);
|
|
209
|
+
scoredNodes = allNodes
|
|
210
|
+
.filter(n => n.embedding)
|
|
211
|
+
.map(node => ({
|
|
212
|
+
node,
|
|
213
|
+
score: this.cosineSimilarity(queryEmbedding, node.embedding)
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// Use keyword matching
|
|
218
|
+
const queryTerms = query.toLowerCase().split(/\s+/);
|
|
219
|
+
scoredNodes = allNodes.map(node => {
|
|
220
|
+
const content = node.content.toLowerCase();
|
|
221
|
+
let score = 0;
|
|
222
|
+
for (const term of queryTerms) {
|
|
223
|
+
if (content.includes(term))
|
|
224
|
+
score += 1;
|
|
225
|
+
}
|
|
226
|
+
return { node, score: score / queryTerms.length };
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
// Filter and sort by score
|
|
230
|
+
scoredNodes = scoredNodes
|
|
231
|
+
.filter(s => s.score >= minScore)
|
|
232
|
+
.sort((a, b) => b.score - a.score);
|
|
233
|
+
// Get top nodes and expand graph
|
|
234
|
+
const topNodes = scoredNodes.slice(0, Math.min(3, maxNodes));
|
|
235
|
+
const resultNodes = [];
|
|
236
|
+
const resultEdges = [];
|
|
237
|
+
const seenNodeIds = new Set();
|
|
238
|
+
for (const { node } of topNodes) {
|
|
239
|
+
const subgraph = this.graphStore.getSubgraph(node.id, maxDepth);
|
|
240
|
+
for (const n of subgraph.nodes) {
|
|
241
|
+
if (!seenNodeIds.has(n.id) && resultNodes.length < maxNodes) {
|
|
242
|
+
seenNodeIds.add(n.id);
|
|
243
|
+
resultNodes.push(n);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (includeEdges) {
|
|
247
|
+
resultEdges.push(...subgraph.edges);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Find paths between top nodes
|
|
251
|
+
const paths = [];
|
|
252
|
+
if (topNodes.length >= 2) {
|
|
253
|
+
for (let i = 0; i < topNodes.length - 1; i++) {
|
|
254
|
+
const foundPaths = this.graphStore.findPaths(topNodes[i].node.id, topNodes[i + 1].node.id, maxDepth);
|
|
255
|
+
paths.push(...foundPaths.slice(0, 3));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
nodes: resultNodes,
|
|
260
|
+
edges: resultEdges,
|
|
261
|
+
paths,
|
|
262
|
+
score: topNodes.length > 0 ? topNodes[0].score : 0
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get context string from query results
|
|
267
|
+
*/
|
|
268
|
+
getContext(result) {
|
|
269
|
+
const nodeContents = result.nodes.map(n => n.content);
|
|
270
|
+
return nodeContents.join('\n\n---\n\n');
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Get the underlying graph store
|
|
274
|
+
*/
|
|
275
|
+
getGraphStore() {
|
|
276
|
+
return this.graphStore;
|
|
277
|
+
}
|
|
278
|
+
cosineSimilarity(a, b) {
|
|
279
|
+
const dot = a.reduce((sum, x, i) => sum + x * b[i], 0);
|
|
280
|
+
const normA = Math.sqrt(a.reduce((sum, x) => sum + x * x, 0));
|
|
281
|
+
const normB = Math.sqrt(b.reduce((sum, x) => sum + x * x, 0));
|
|
282
|
+
return dot / (normA * normB);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
exports.GraphRAG = GraphRAG;
|
|
286
|
+
// Factory function
|
|
287
|
+
function createGraphRAG(config) {
|
|
288
|
+
return new GraphRAG(config);
|
|
289
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface Knowledge {
|
|
2
|
+
id: string;
|
|
3
|
+
type: string;
|
|
4
|
+
content: any;
|
|
5
|
+
metadata: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
export interface KnowledgeBase {
|
|
8
|
+
addKnowledge(knowledge: Knowledge): void;
|
|
9
|
+
getKnowledge(id: string): Knowledge | undefined;
|
|
10
|
+
searchKnowledge(query: string): Knowledge[];
|
|
11
|
+
updateKnowledge(id: string, knowledge: Partial<Knowledge>): boolean;
|
|
12
|
+
deleteKnowledge(id: string): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class BaseKnowledgeBase implements KnowledgeBase {
|
|
15
|
+
private knowledge;
|
|
16
|
+
constructor();
|
|
17
|
+
addKnowledge(knowledge: Knowledge): void;
|
|
18
|
+
getKnowledge(id: string): Knowledge | undefined;
|
|
19
|
+
searchKnowledge(query: string): Knowledge[];
|
|
20
|
+
updateKnowledge(id: string, update: Partial<Knowledge>): boolean;
|
|
21
|
+
deleteKnowledge(id: string): boolean;
|
|
22
|
+
}
|
|
23
|
+
export * from './reranker';
|
|
24
|
+
export * from './graph-rag';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.BaseKnowledgeBase = void 0;
|
|
18
|
+
class BaseKnowledgeBase {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.knowledge = new Map();
|
|
21
|
+
}
|
|
22
|
+
addKnowledge(knowledge) {
|
|
23
|
+
this.knowledge.set(knowledge.id, knowledge);
|
|
24
|
+
}
|
|
25
|
+
getKnowledge(id) {
|
|
26
|
+
return this.knowledge.get(id);
|
|
27
|
+
}
|
|
28
|
+
searchKnowledge(query) {
|
|
29
|
+
// Basic implementation - should be enhanced with proper search logic
|
|
30
|
+
return Array.from(this.knowledge.values()).filter(k => JSON.stringify(k).toLowerCase().includes(query.toLowerCase()));
|
|
31
|
+
}
|
|
32
|
+
updateKnowledge(id, update) {
|
|
33
|
+
const existing = this.knowledge.get(id);
|
|
34
|
+
if (!existing)
|
|
35
|
+
return false;
|
|
36
|
+
this.knowledge.set(id, { ...existing, ...update });
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
deleteKnowledge(id) {
|
|
40
|
+
return this.knowledge.delete(id);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.BaseKnowledgeBase = BaseKnowledgeBase;
|
|
44
|
+
// Export Reranker
|
|
45
|
+
__exportStar(require("./reranker"), exports);
|
|
46
|
+
// Export Graph RAG
|
|
47
|
+
__exportStar(require("./graph-rag"), exports);
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Base (RAG) - Retrieval Augmented Generation
|
|
3
|
+
*/
|
|
4
|
+
export interface Document {
|
|
5
|
+
id: string;
|
|
6
|
+
content: string;
|
|
7
|
+
metadata?: Record<string, any>;
|
|
8
|
+
embedding?: number[];
|
|
9
|
+
}
|
|
10
|
+
export interface SearchResult {
|
|
11
|
+
document: Document;
|
|
12
|
+
score: number;
|
|
13
|
+
}
|
|
14
|
+
export interface EmbeddingProvider {
|
|
15
|
+
embed(text: string): Promise<number[]>;
|
|
16
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
17
|
+
}
|
|
18
|
+
export interface KnowledgeBaseConfig {
|
|
19
|
+
embeddingProvider?: EmbeddingProvider;
|
|
20
|
+
similarityThreshold?: number;
|
|
21
|
+
maxResults?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Simple in-memory vector store for RAG
|
|
25
|
+
*/
|
|
26
|
+
export declare class KnowledgeBase {
|
|
27
|
+
private documents;
|
|
28
|
+
private embeddingProvider?;
|
|
29
|
+
private similarityThreshold;
|
|
30
|
+
private maxResults;
|
|
31
|
+
constructor(config?: KnowledgeBaseConfig);
|
|
32
|
+
/**
|
|
33
|
+
* Add a document to the knowledge base
|
|
34
|
+
*/
|
|
35
|
+
add(doc: Omit<Document, 'embedding'>): Promise<Document>;
|
|
36
|
+
/**
|
|
37
|
+
* Add multiple documents
|
|
38
|
+
*/
|
|
39
|
+
addBatch(docs: Array<Omit<Document, 'embedding'>>): Promise<Document[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Get a document by ID
|
|
42
|
+
*/
|
|
43
|
+
get(id: string): Document | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Delete a document
|
|
46
|
+
*/
|
|
47
|
+
delete(id: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Search for similar documents
|
|
50
|
+
*/
|
|
51
|
+
search(query: string, limit?: number): Promise<SearchResult[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Simple text-based search fallback
|
|
54
|
+
*/
|
|
55
|
+
private textSearch;
|
|
56
|
+
/**
|
|
57
|
+
* Calculate cosine similarity between two vectors
|
|
58
|
+
*/
|
|
59
|
+
private cosineSimilarity;
|
|
60
|
+
/**
|
|
61
|
+
* Get all documents
|
|
62
|
+
*/
|
|
63
|
+
list(): Document[];
|
|
64
|
+
/**
|
|
65
|
+
* Clear all documents
|
|
66
|
+
*/
|
|
67
|
+
clear(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get document count
|
|
70
|
+
*/
|
|
71
|
+
get size(): number;
|
|
72
|
+
/**
|
|
73
|
+
* Build context from search results for RAG
|
|
74
|
+
*/
|
|
75
|
+
buildContext(results: SearchResult[]): string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create a knowledge base
|
|
79
|
+
*/
|
|
80
|
+
export declare function createKnowledgeBase(config?: KnowledgeBaseConfig): KnowledgeBase;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Knowledge Base (RAG) - Retrieval Augmented Generation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.KnowledgeBase = void 0;
|
|
7
|
+
exports.createKnowledgeBase = createKnowledgeBase;
|
|
8
|
+
/**
|
|
9
|
+
* Simple in-memory vector store for RAG
|
|
10
|
+
*/
|
|
11
|
+
class KnowledgeBase {
|
|
12
|
+
constructor(config = {}) {
|
|
13
|
+
this.documents = new Map();
|
|
14
|
+
this.embeddingProvider = config.embeddingProvider;
|
|
15
|
+
this.similarityThreshold = config.similarityThreshold ?? 0.7;
|
|
16
|
+
this.maxResults = config.maxResults ?? 5;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Add a document to the knowledge base
|
|
20
|
+
*/
|
|
21
|
+
async add(doc) {
|
|
22
|
+
const document = { ...doc };
|
|
23
|
+
if (this.embeddingProvider) {
|
|
24
|
+
document.embedding = await this.embeddingProvider.embed(doc.content);
|
|
25
|
+
}
|
|
26
|
+
this.documents.set(doc.id, document);
|
|
27
|
+
return document;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Add multiple documents
|
|
31
|
+
*/
|
|
32
|
+
async addBatch(docs) {
|
|
33
|
+
if (this.embeddingProvider && docs.length > 0) {
|
|
34
|
+
const embeddings = await this.embeddingProvider.embedBatch(docs.map(d => d.content));
|
|
35
|
+
return Promise.all(docs.map(async (doc, i) => {
|
|
36
|
+
const document = { ...doc, embedding: embeddings[i] };
|
|
37
|
+
this.documents.set(doc.id, document);
|
|
38
|
+
return document;
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
return Promise.all(docs.map(doc => this.add(doc)));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get a document by ID
|
|
45
|
+
*/
|
|
46
|
+
get(id) {
|
|
47
|
+
return this.documents.get(id);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Delete a document
|
|
51
|
+
*/
|
|
52
|
+
delete(id) {
|
|
53
|
+
return this.documents.delete(id);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Search for similar documents
|
|
57
|
+
*/
|
|
58
|
+
async search(query, limit) {
|
|
59
|
+
const maxResults = limit ?? this.maxResults;
|
|
60
|
+
if (!this.embeddingProvider) {
|
|
61
|
+
// Fallback to simple text matching
|
|
62
|
+
return this.textSearch(query, maxResults);
|
|
63
|
+
}
|
|
64
|
+
const queryEmbedding = await this.embeddingProvider.embed(query);
|
|
65
|
+
const results = [];
|
|
66
|
+
for (const doc of this.documents.values()) {
|
|
67
|
+
if (doc.embedding) {
|
|
68
|
+
const score = this.cosineSimilarity(queryEmbedding, doc.embedding);
|
|
69
|
+
if (score >= this.similarityThreshold) {
|
|
70
|
+
results.push({ document: doc, score });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return results
|
|
75
|
+
.sort((a, b) => b.score - a.score)
|
|
76
|
+
.slice(0, maxResults);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Simple text-based search fallback
|
|
80
|
+
*/
|
|
81
|
+
textSearch(query, limit) {
|
|
82
|
+
const queryLower = query.toLowerCase();
|
|
83
|
+
const results = [];
|
|
84
|
+
for (const doc of this.documents.values()) {
|
|
85
|
+
const contentLower = doc.content.toLowerCase();
|
|
86
|
+
if (contentLower.includes(queryLower)) {
|
|
87
|
+
const score = queryLower.length / contentLower.length;
|
|
88
|
+
results.push({ document: doc, score: Math.min(score * 10, 1) });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return results
|
|
92
|
+
.sort((a, b) => b.score - a.score)
|
|
93
|
+
.slice(0, limit);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Calculate cosine similarity between two vectors
|
|
97
|
+
*/
|
|
98
|
+
cosineSimilarity(a, b) {
|
|
99
|
+
if (a.length !== b.length)
|
|
100
|
+
return 0;
|
|
101
|
+
let dotProduct = 0;
|
|
102
|
+
let normA = 0;
|
|
103
|
+
let normB = 0;
|
|
104
|
+
for (let i = 0; i < a.length; i++) {
|
|
105
|
+
dotProduct += a[i] * b[i];
|
|
106
|
+
normA += a[i] * a[i];
|
|
107
|
+
normB += b[i] * b[i];
|
|
108
|
+
}
|
|
109
|
+
const denominator = Math.sqrt(normA) * Math.sqrt(normB);
|
|
110
|
+
return denominator === 0 ? 0 : dotProduct / denominator;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get all documents
|
|
114
|
+
*/
|
|
115
|
+
list() {
|
|
116
|
+
return Array.from(this.documents.values());
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Clear all documents
|
|
120
|
+
*/
|
|
121
|
+
clear() {
|
|
122
|
+
this.documents.clear();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get document count
|
|
126
|
+
*/
|
|
127
|
+
get size() {
|
|
128
|
+
return this.documents.size;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Build context from search results for RAG
|
|
132
|
+
*/
|
|
133
|
+
buildContext(results) {
|
|
134
|
+
if (results.length === 0)
|
|
135
|
+
return '';
|
|
136
|
+
return results
|
|
137
|
+
.map((r, i) => `[${i + 1}] ${r.document.content}`)
|
|
138
|
+
.join('\n\n');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.KnowledgeBase = KnowledgeBase;
|
|
142
|
+
/**
|
|
143
|
+
* Create a knowledge base
|
|
144
|
+
*/
|
|
145
|
+
function createKnowledgeBase(config) {
|
|
146
|
+
return new KnowledgeBase(config);
|
|
147
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reranker - Rerank search results for improved relevance
|
|
3
|
+
* Inspired by mastra's rerank module
|
|
4
|
+
*/
|
|
5
|
+
export interface RerankResult {
|
|
6
|
+
id: string;
|
|
7
|
+
score: number;
|
|
8
|
+
content: string;
|
|
9
|
+
metadata?: Record<string, any>;
|
|
10
|
+
originalRank: number;
|
|
11
|
+
newRank: number;
|
|
12
|
+
}
|
|
13
|
+
export interface RerankConfig {
|
|
14
|
+
model?: string;
|
|
15
|
+
topK?: number;
|
|
16
|
+
threshold?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Abstract base class for rerankers
|
|
20
|
+
*/
|
|
21
|
+
export declare abstract class BaseReranker {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
constructor(name: string);
|
|
24
|
+
abstract rerank(query: string, documents: Array<{
|
|
25
|
+
id: string;
|
|
26
|
+
content: string;
|
|
27
|
+
metadata?: Record<string, any>;
|
|
28
|
+
}>, config?: RerankConfig): Promise<RerankResult[]>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Cohere Reranker - Uses Cohere's rerank API
|
|
32
|
+
*/
|
|
33
|
+
export declare class CohereReranker extends BaseReranker {
|
|
34
|
+
private apiKey;
|
|
35
|
+
private model;
|
|
36
|
+
constructor(config?: {
|
|
37
|
+
apiKey?: string;
|
|
38
|
+
model?: string;
|
|
39
|
+
});
|
|
40
|
+
rerank(query: string, documents: Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
content: string;
|
|
43
|
+
metadata?: Record<string, any>;
|
|
44
|
+
}>, config?: RerankConfig): Promise<RerankResult[]>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Cross-Encoder Reranker - Uses sentence similarity for reranking
|
|
48
|
+
* This is a simple implementation using cosine similarity
|
|
49
|
+
*/
|
|
50
|
+
export declare class CrossEncoderReranker extends BaseReranker {
|
|
51
|
+
private embedFn?;
|
|
52
|
+
constructor(config?: {
|
|
53
|
+
embedFn?: (texts: string[]) => Promise<number[][]>;
|
|
54
|
+
});
|
|
55
|
+
rerank(query: string, documents: Array<{
|
|
56
|
+
id: string;
|
|
57
|
+
content: string;
|
|
58
|
+
metadata?: Record<string, any>;
|
|
59
|
+
}>, config?: RerankConfig): Promise<RerankResult[]>;
|
|
60
|
+
private keywordRerank;
|
|
61
|
+
private cosineSimilarity;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* LLM Reranker - Uses an LLM to score relevance
|
|
65
|
+
*/
|
|
66
|
+
export declare class LLMReranker extends BaseReranker {
|
|
67
|
+
private generateFn;
|
|
68
|
+
constructor(config: {
|
|
69
|
+
generateFn: (prompt: string) => Promise<string>;
|
|
70
|
+
});
|
|
71
|
+
rerank(query: string, documents: Array<{
|
|
72
|
+
id: string;
|
|
73
|
+
content: string;
|
|
74
|
+
metadata?: Record<string, any>;
|
|
75
|
+
}>, config?: RerankConfig): Promise<RerankResult[]>;
|
|
76
|
+
}
|
|
77
|
+
export declare function createCohereReranker(config?: {
|
|
78
|
+
apiKey?: string;
|
|
79
|
+
model?: string;
|
|
80
|
+
}): CohereReranker;
|
|
81
|
+
export declare function createCrossEncoderReranker(config?: {
|
|
82
|
+
embedFn?: (texts: string[]) => Promise<number[][]>;
|
|
83
|
+
}): CrossEncoderReranker;
|
|
84
|
+
export declare function createLLMReranker(config: {
|
|
85
|
+
generateFn: (prompt: string) => Promise<string>;
|
|
86
|
+
}): LLMReranker;
|