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,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Checkpoints - Snapshot session/run state for recovery
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.CheckpointManager = exports.FileCheckpointStorage = exports.MemoryCheckpointStorage = void 0;
|
|
40
|
+
exports.createCheckpointManager = createCheckpointManager;
|
|
41
|
+
exports.createFileCheckpointStorage = createFileCheckpointStorage;
|
|
42
|
+
/**
|
|
43
|
+
* In-memory checkpoint storage
|
|
44
|
+
*/
|
|
45
|
+
class MemoryCheckpointStorage {
|
|
46
|
+
constructor() {
|
|
47
|
+
this.checkpoints = new Map();
|
|
48
|
+
}
|
|
49
|
+
async save(checkpoint) {
|
|
50
|
+
this.checkpoints.set(checkpoint.id, { ...checkpoint });
|
|
51
|
+
}
|
|
52
|
+
async load(id) {
|
|
53
|
+
return this.checkpoints.get(id) || null;
|
|
54
|
+
}
|
|
55
|
+
async list() {
|
|
56
|
+
return Array.from(this.checkpoints.values())
|
|
57
|
+
.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
|
|
58
|
+
}
|
|
59
|
+
async delete(id) {
|
|
60
|
+
this.checkpoints.delete(id);
|
|
61
|
+
}
|
|
62
|
+
async clear() {
|
|
63
|
+
this.checkpoints.clear();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.MemoryCheckpointStorage = MemoryCheckpointStorage;
|
|
67
|
+
/**
|
|
68
|
+
* File-based checkpoint storage
|
|
69
|
+
*/
|
|
70
|
+
class FileCheckpointStorage {
|
|
71
|
+
constructor(dirPath) {
|
|
72
|
+
this.dirPath = dirPath;
|
|
73
|
+
}
|
|
74
|
+
async ensureDir() {
|
|
75
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
76
|
+
await fs.mkdir(this.dirPath, { recursive: true });
|
|
77
|
+
}
|
|
78
|
+
getFilePath(id) {
|
|
79
|
+
return `${this.dirPath}/${id}.json`;
|
|
80
|
+
}
|
|
81
|
+
async save(checkpoint) {
|
|
82
|
+
await this.ensureDir();
|
|
83
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
84
|
+
await fs.writeFile(this.getFilePath(checkpoint.id), JSON.stringify(checkpoint, null, 2));
|
|
85
|
+
}
|
|
86
|
+
async load(id) {
|
|
87
|
+
try {
|
|
88
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
89
|
+
const content = await fs.readFile(this.getFilePath(id), 'utf-8');
|
|
90
|
+
const data = JSON.parse(content);
|
|
91
|
+
data.timestamp = new Date(data.timestamp);
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async list() {
|
|
99
|
+
try {
|
|
100
|
+
await this.ensureDir();
|
|
101
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
102
|
+
const files = await fs.readdir(this.dirPath);
|
|
103
|
+
const checkpoints = [];
|
|
104
|
+
for (const file of files) {
|
|
105
|
+
if (file.endsWith('.json')) {
|
|
106
|
+
const id = file.replace('.json', '');
|
|
107
|
+
const checkpoint = await this.load(id);
|
|
108
|
+
if (checkpoint) {
|
|
109
|
+
checkpoints.push(checkpoint);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return checkpoints.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async delete(id) {
|
|
120
|
+
try {
|
|
121
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
122
|
+
await fs.unlink(this.getFilePath(id));
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// Ignore if file doesn't exist
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async clear() {
|
|
129
|
+
const checkpoints = await this.list();
|
|
130
|
+
for (const checkpoint of checkpoints) {
|
|
131
|
+
await this.delete(checkpoint.id);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.FileCheckpointStorage = FileCheckpointStorage;
|
|
136
|
+
/**
|
|
137
|
+
* Checkpoint Manager class
|
|
138
|
+
*/
|
|
139
|
+
class CheckpointManager {
|
|
140
|
+
constructor(config = {}) {
|
|
141
|
+
this.currentState = {};
|
|
142
|
+
this.config = {
|
|
143
|
+
autoSave: false,
|
|
144
|
+
autoSaveInterval: 60000, // 1 minute
|
|
145
|
+
maxCheckpoints: 10,
|
|
146
|
+
...config
|
|
147
|
+
};
|
|
148
|
+
this.storage = config.storage || new MemoryCheckpointStorage();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Create a checkpoint
|
|
152
|
+
*/
|
|
153
|
+
async create(name, options = {}) {
|
|
154
|
+
const checkpoint = {
|
|
155
|
+
id: `cp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
|
156
|
+
name,
|
|
157
|
+
timestamp: new Date(),
|
|
158
|
+
state: { ...this.currentState },
|
|
159
|
+
...options
|
|
160
|
+
};
|
|
161
|
+
await this.storage.save(checkpoint);
|
|
162
|
+
await this.enforceMaxCheckpoints();
|
|
163
|
+
return checkpoint;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Restore from a checkpoint
|
|
167
|
+
*/
|
|
168
|
+
async restore(id) {
|
|
169
|
+
const checkpoint = await this.storage.load(id);
|
|
170
|
+
if (checkpoint) {
|
|
171
|
+
this.currentState = { ...checkpoint.state };
|
|
172
|
+
}
|
|
173
|
+
return checkpoint;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Restore the latest checkpoint
|
|
177
|
+
*/
|
|
178
|
+
async restoreLatest() {
|
|
179
|
+
const checkpoints = await this.storage.list();
|
|
180
|
+
if (checkpoints.length === 0)
|
|
181
|
+
return null;
|
|
182
|
+
return this.restore(checkpoints[0].id);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get a checkpoint by ID
|
|
186
|
+
*/
|
|
187
|
+
async get(id) {
|
|
188
|
+
return this.storage.load(id);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* List all checkpoints
|
|
192
|
+
*/
|
|
193
|
+
async list() {
|
|
194
|
+
return this.storage.list();
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Delete a checkpoint
|
|
198
|
+
*/
|
|
199
|
+
async delete(id) {
|
|
200
|
+
await this.storage.delete(id);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Clear all checkpoints
|
|
204
|
+
*/
|
|
205
|
+
async clear() {
|
|
206
|
+
await this.storage.clear();
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Update current state
|
|
210
|
+
*/
|
|
211
|
+
setState(state) {
|
|
212
|
+
this.currentState = { ...this.currentState, ...state };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get current state
|
|
216
|
+
*/
|
|
217
|
+
getState() {
|
|
218
|
+
return { ...this.currentState };
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Start auto-save
|
|
222
|
+
*/
|
|
223
|
+
startAutoSave() {
|
|
224
|
+
if (this.autoSaveTimer)
|
|
225
|
+
return;
|
|
226
|
+
if (!this.config.autoSave)
|
|
227
|
+
return;
|
|
228
|
+
this.autoSaveTimer = setInterval(async () => {
|
|
229
|
+
await this.create('auto-save', { metadata: { auto: true } });
|
|
230
|
+
}, this.config.autoSaveInterval);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Stop auto-save
|
|
234
|
+
*/
|
|
235
|
+
stopAutoSave() {
|
|
236
|
+
if (this.autoSaveTimer) {
|
|
237
|
+
clearInterval(this.autoSaveTimer);
|
|
238
|
+
this.autoSaveTimer = undefined;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Enforce maximum checkpoints limit
|
|
243
|
+
*/
|
|
244
|
+
async enforceMaxCheckpoints() {
|
|
245
|
+
if (!this.config.maxCheckpoints)
|
|
246
|
+
return;
|
|
247
|
+
const checkpoints = await this.storage.list();
|
|
248
|
+
if (checkpoints.length > this.config.maxCheckpoints) {
|
|
249
|
+
// Delete oldest checkpoints (but keep auto-saves separate)
|
|
250
|
+
const toDelete = checkpoints.slice(this.config.maxCheckpoints);
|
|
251
|
+
for (const checkpoint of toDelete) {
|
|
252
|
+
await this.storage.delete(checkpoint.id);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Export checkpoint to JSON string
|
|
258
|
+
*/
|
|
259
|
+
async export(id) {
|
|
260
|
+
const checkpoint = await this.storage.load(id);
|
|
261
|
+
if (!checkpoint)
|
|
262
|
+
return null;
|
|
263
|
+
return JSON.stringify(checkpoint, null, 2);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Import checkpoint from JSON string
|
|
267
|
+
*/
|
|
268
|
+
async import(json) {
|
|
269
|
+
const data = JSON.parse(json);
|
|
270
|
+
data.timestamp = new Date(data.timestamp);
|
|
271
|
+
data.id = `cp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; // New ID
|
|
272
|
+
await this.storage.save(data);
|
|
273
|
+
return data;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
exports.CheckpointManager = CheckpointManager;
|
|
277
|
+
/**
|
|
278
|
+
* Create a checkpoint manager
|
|
279
|
+
*/
|
|
280
|
+
function createCheckpointManager(config) {
|
|
281
|
+
return new CheckpointManager(config);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Create file-based checkpoint storage
|
|
285
|
+
*/
|
|
286
|
+
function createFileCheckpointStorage(dirPath) {
|
|
287
|
+
return new FileCheckpointStorage(dirPath);
|
|
288
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost Tracker - Track token usage and costs across LLM requests
|
|
3
|
+
*/
|
|
4
|
+
export interface ModelPricing {
|
|
5
|
+
inputCostPer1k: number;
|
|
6
|
+
outputCostPer1k: number;
|
|
7
|
+
}
|
|
8
|
+
export interface TokenUsage {
|
|
9
|
+
inputTokens: number;
|
|
10
|
+
outputTokens: number;
|
|
11
|
+
totalTokens: number;
|
|
12
|
+
}
|
|
13
|
+
export interface RequestStats {
|
|
14
|
+
timestamp: number;
|
|
15
|
+
model: string;
|
|
16
|
+
usage: TokenUsage;
|
|
17
|
+
cost: number;
|
|
18
|
+
latencyMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface SessionStats {
|
|
21
|
+
totalInputTokens: number;
|
|
22
|
+
totalOutputTokens: number;
|
|
23
|
+
totalTokens: number;
|
|
24
|
+
totalCost: number;
|
|
25
|
+
requestCount: number;
|
|
26
|
+
avgLatencyMs: number;
|
|
27
|
+
startTime: number;
|
|
28
|
+
requests: RequestStats[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Model pricing data (USD per 1K tokens)
|
|
32
|
+
*/
|
|
33
|
+
export declare const MODEL_PRICING: Record<string, ModelPricing>;
|
|
34
|
+
/**
|
|
35
|
+
* Cost Tracker class
|
|
36
|
+
*/
|
|
37
|
+
export declare class CostTracker {
|
|
38
|
+
private stats;
|
|
39
|
+
private customPricing;
|
|
40
|
+
constructor();
|
|
41
|
+
private createEmptyStats;
|
|
42
|
+
/**
|
|
43
|
+
* Add a request's token usage
|
|
44
|
+
*/
|
|
45
|
+
addUsage(model: string, inputTokens: number, outputTokens: number, latencyMs?: number): RequestStats;
|
|
46
|
+
/**
|
|
47
|
+
* Calculate cost for token usage
|
|
48
|
+
*/
|
|
49
|
+
calculateCost(model: string, inputTokens: number, outputTokens: number): number;
|
|
50
|
+
/**
|
|
51
|
+
* Get pricing for a model
|
|
52
|
+
*/
|
|
53
|
+
getPricing(model: string): ModelPricing;
|
|
54
|
+
/**
|
|
55
|
+
* Set custom pricing for a model
|
|
56
|
+
*/
|
|
57
|
+
setCustomPricing(model: string, pricing: ModelPricing): void;
|
|
58
|
+
/**
|
|
59
|
+
* Get current session stats
|
|
60
|
+
*/
|
|
61
|
+
getStats(): SessionStats;
|
|
62
|
+
/**
|
|
63
|
+
* Get summary string
|
|
64
|
+
*/
|
|
65
|
+
getSummary(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Get detailed breakdown by model
|
|
68
|
+
*/
|
|
69
|
+
getBreakdownByModel(): Record<string, {
|
|
70
|
+
tokens: number;
|
|
71
|
+
cost: number;
|
|
72
|
+
requests: number;
|
|
73
|
+
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Reset stats
|
|
76
|
+
*/
|
|
77
|
+
reset(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Export stats to JSON
|
|
80
|
+
*/
|
|
81
|
+
toJSON(): SessionStats;
|
|
82
|
+
/**
|
|
83
|
+
* Import stats from JSON
|
|
84
|
+
*/
|
|
85
|
+
fromJSON(data: SessionStats): void;
|
|
86
|
+
get totalTokens(): number;
|
|
87
|
+
get totalCost(): number;
|
|
88
|
+
get requests(): number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a cost tracker instance
|
|
92
|
+
*/
|
|
93
|
+
export declare function createCostTracker(): CostTracker;
|
|
94
|
+
/**
|
|
95
|
+
* Estimate tokens from text (rough approximation)
|
|
96
|
+
*/
|
|
97
|
+
export declare function estimateTokens(text: string): number;
|
|
98
|
+
/**
|
|
99
|
+
* Format cost as currency string
|
|
100
|
+
*/
|
|
101
|
+
export declare function formatCost(cost: number): string;
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cost Tracker - Track token usage and costs across LLM requests
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CostTracker = exports.MODEL_PRICING = void 0;
|
|
7
|
+
exports.createCostTracker = createCostTracker;
|
|
8
|
+
exports.estimateTokens = estimateTokens;
|
|
9
|
+
exports.formatCost = formatCost;
|
|
10
|
+
/**
|
|
11
|
+
* Model pricing data (USD per 1K tokens)
|
|
12
|
+
*/
|
|
13
|
+
exports.MODEL_PRICING = {
|
|
14
|
+
// OpenAI
|
|
15
|
+
'gpt-4o': { inputCostPer1k: 0.005, outputCostPer1k: 0.015 },
|
|
16
|
+
'gpt-4o-mini': { inputCostPer1k: 0.00015, outputCostPer1k: 0.0006 },
|
|
17
|
+
'gpt-4-turbo': { inputCostPer1k: 0.01, outputCostPer1k: 0.03 },
|
|
18
|
+
'gpt-4': { inputCostPer1k: 0.03, outputCostPer1k: 0.06 },
|
|
19
|
+
'gpt-3.5-turbo': { inputCostPer1k: 0.0005, outputCostPer1k: 0.0015 },
|
|
20
|
+
'o1': { inputCostPer1k: 0.015, outputCostPer1k: 0.06 },
|
|
21
|
+
'o1-mini': { inputCostPer1k: 0.003, outputCostPer1k: 0.012 },
|
|
22
|
+
'o1-preview': { inputCostPer1k: 0.015, outputCostPer1k: 0.06 },
|
|
23
|
+
// Anthropic
|
|
24
|
+
'claude-3-5-sonnet-20241022': { inputCostPer1k: 0.003, outputCostPer1k: 0.015 },
|
|
25
|
+
'claude-3-5-haiku-20241022': { inputCostPer1k: 0.001, outputCostPer1k: 0.005 },
|
|
26
|
+
'claude-3-opus-20240229': { inputCostPer1k: 0.015, outputCostPer1k: 0.075 },
|
|
27
|
+
'claude-3-sonnet-20240229': { inputCostPer1k: 0.003, outputCostPer1k: 0.015 },
|
|
28
|
+
'claude-3-haiku-20240307': { inputCostPer1k: 0.00025, outputCostPer1k: 0.00125 },
|
|
29
|
+
// Google
|
|
30
|
+
'gemini-2.0-flash': { inputCostPer1k: 0.0001, outputCostPer1k: 0.0004 },
|
|
31
|
+
'gemini-1.5-pro': { inputCostPer1k: 0.00125, outputCostPer1k: 0.005 },
|
|
32
|
+
'gemini-1.5-flash': { inputCostPer1k: 0.000075, outputCostPer1k: 0.0003 },
|
|
33
|
+
// Default fallback
|
|
34
|
+
'default': { inputCostPer1k: 0.001, outputCostPer1k: 0.002 }
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Cost Tracker class
|
|
38
|
+
*/
|
|
39
|
+
class CostTracker {
|
|
40
|
+
constructor() {
|
|
41
|
+
this.customPricing = new Map();
|
|
42
|
+
this.stats = this.createEmptyStats();
|
|
43
|
+
}
|
|
44
|
+
createEmptyStats() {
|
|
45
|
+
return {
|
|
46
|
+
totalInputTokens: 0,
|
|
47
|
+
totalOutputTokens: 0,
|
|
48
|
+
totalTokens: 0,
|
|
49
|
+
totalCost: 0,
|
|
50
|
+
requestCount: 0,
|
|
51
|
+
avgLatencyMs: 0,
|
|
52
|
+
startTime: Date.now(),
|
|
53
|
+
requests: []
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Add a request's token usage
|
|
58
|
+
*/
|
|
59
|
+
addUsage(model, inputTokens, outputTokens, latencyMs) {
|
|
60
|
+
const totalTokens = inputTokens + outputTokens;
|
|
61
|
+
const cost = this.calculateCost(model, inputTokens, outputTokens);
|
|
62
|
+
const request = {
|
|
63
|
+
timestamp: Date.now(),
|
|
64
|
+
model,
|
|
65
|
+
usage: { inputTokens, outputTokens, totalTokens },
|
|
66
|
+
cost,
|
|
67
|
+
latencyMs
|
|
68
|
+
};
|
|
69
|
+
this.stats.requests.push(request);
|
|
70
|
+
this.stats.totalInputTokens += inputTokens;
|
|
71
|
+
this.stats.totalOutputTokens += outputTokens;
|
|
72
|
+
this.stats.totalTokens += totalTokens;
|
|
73
|
+
this.stats.totalCost += cost;
|
|
74
|
+
this.stats.requestCount++;
|
|
75
|
+
if (latencyMs !== undefined) {
|
|
76
|
+
const totalLatency = this.stats.avgLatencyMs * (this.stats.requestCount - 1) + latencyMs;
|
|
77
|
+
this.stats.avgLatencyMs = totalLatency / this.stats.requestCount;
|
|
78
|
+
}
|
|
79
|
+
return request;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Calculate cost for token usage
|
|
83
|
+
*/
|
|
84
|
+
calculateCost(model, inputTokens, outputTokens) {
|
|
85
|
+
const pricing = this.getPricing(model);
|
|
86
|
+
const inputCost = (inputTokens / 1000) * pricing.inputCostPer1k;
|
|
87
|
+
const outputCost = (outputTokens / 1000) * pricing.outputCostPer1k;
|
|
88
|
+
return inputCost + outputCost;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get pricing for a model
|
|
92
|
+
*/
|
|
93
|
+
getPricing(model) {
|
|
94
|
+
// Check custom pricing first
|
|
95
|
+
if (this.customPricing.has(model)) {
|
|
96
|
+
return this.customPricing.get(model);
|
|
97
|
+
}
|
|
98
|
+
// Check built-in pricing
|
|
99
|
+
if (exports.MODEL_PRICING[model]) {
|
|
100
|
+
return exports.MODEL_PRICING[model];
|
|
101
|
+
}
|
|
102
|
+
// Try to match partial model names
|
|
103
|
+
for (const [key, pricing] of Object.entries(exports.MODEL_PRICING)) {
|
|
104
|
+
if (model.includes(key) || key.includes(model)) {
|
|
105
|
+
return pricing;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return exports.MODEL_PRICING['default'];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Set custom pricing for a model
|
|
112
|
+
*/
|
|
113
|
+
setCustomPricing(model, pricing) {
|
|
114
|
+
this.customPricing.set(model, pricing);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get current session stats
|
|
118
|
+
*/
|
|
119
|
+
getStats() {
|
|
120
|
+
return { ...this.stats };
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get summary string
|
|
124
|
+
*/
|
|
125
|
+
getSummary() {
|
|
126
|
+
const duration = (Date.now() - this.stats.startTime) / 1000;
|
|
127
|
+
const lines = [
|
|
128
|
+
'=== Cost Summary ===',
|
|
129
|
+
`Requests: ${this.stats.requestCount}`,
|
|
130
|
+
`Duration: ${duration.toFixed(1)}s`,
|
|
131
|
+
'',
|
|
132
|
+
'Tokens:',
|
|
133
|
+
` Input: ${this.stats.totalInputTokens.toLocaleString()}`,
|
|
134
|
+
` Output: ${this.stats.totalOutputTokens.toLocaleString()}`,
|
|
135
|
+
` Total: ${this.stats.totalTokens.toLocaleString()}`,
|
|
136
|
+
'',
|
|
137
|
+
`Total Cost: $${this.stats.totalCost.toFixed(6)}`,
|
|
138
|
+
];
|
|
139
|
+
if (this.stats.avgLatencyMs > 0) {
|
|
140
|
+
lines.push(`Avg Latency: ${this.stats.avgLatencyMs.toFixed(0)}ms`);
|
|
141
|
+
}
|
|
142
|
+
return lines.join('\n');
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get detailed breakdown by model
|
|
146
|
+
*/
|
|
147
|
+
getBreakdownByModel() {
|
|
148
|
+
const breakdown = {};
|
|
149
|
+
for (const request of this.stats.requests) {
|
|
150
|
+
if (!breakdown[request.model]) {
|
|
151
|
+
breakdown[request.model] = { tokens: 0, cost: 0, requests: 0 };
|
|
152
|
+
}
|
|
153
|
+
breakdown[request.model].tokens += request.usage.totalTokens;
|
|
154
|
+
breakdown[request.model].cost += request.cost;
|
|
155
|
+
breakdown[request.model].requests++;
|
|
156
|
+
}
|
|
157
|
+
return breakdown;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Reset stats
|
|
161
|
+
*/
|
|
162
|
+
reset() {
|
|
163
|
+
this.stats = this.createEmptyStats();
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Export stats to JSON
|
|
167
|
+
*/
|
|
168
|
+
toJSON() {
|
|
169
|
+
return this.getStats();
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Import stats from JSON
|
|
173
|
+
*/
|
|
174
|
+
fromJSON(data) {
|
|
175
|
+
this.stats = { ...data };
|
|
176
|
+
}
|
|
177
|
+
// Legacy interface compatibility
|
|
178
|
+
get totalTokens() {
|
|
179
|
+
return this.stats.totalTokens;
|
|
180
|
+
}
|
|
181
|
+
get totalCost() {
|
|
182
|
+
return this.stats.totalCost;
|
|
183
|
+
}
|
|
184
|
+
get requests() {
|
|
185
|
+
return this.stats.requestCount;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.CostTracker = CostTracker;
|
|
189
|
+
/**
|
|
190
|
+
* Create a cost tracker instance
|
|
191
|
+
*/
|
|
192
|
+
function createCostTracker() {
|
|
193
|
+
return new CostTracker();
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Estimate tokens from text (rough approximation)
|
|
197
|
+
*/
|
|
198
|
+
function estimateTokens(text) {
|
|
199
|
+
return Math.ceil(text.length / 4);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Format cost as currency string
|
|
203
|
+
*/
|
|
204
|
+
function formatCost(cost) {
|
|
205
|
+
if (cost < 0.01) {
|
|
206
|
+
return `$${cost.toFixed(6)}`;
|
|
207
|
+
}
|
|
208
|
+
if (cost < 1) {
|
|
209
|
+
return `$${cost.toFixed(4)}`;
|
|
210
|
+
}
|
|
211
|
+
return `$${cost.toFixed(2)}`;
|
|
212
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External Agents - Integration adapters for external AI CLI tools
|
|
3
|
+
*
|
|
4
|
+
* Allows OverAI to use other CLI tools as sub-agents or tools.
|
|
5
|
+
*/
|
|
6
|
+
export interface ExternalAgentConfig {
|
|
7
|
+
name: string;
|
|
8
|
+
command: string;
|
|
9
|
+
args?: string[];
|
|
10
|
+
cwd?: string;
|
|
11
|
+
env?: Record<string, string>;
|
|
12
|
+
timeout?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ExternalAgentResult {
|
|
15
|
+
success: boolean;
|
|
16
|
+
output: string;
|
|
17
|
+
error?: string;
|
|
18
|
+
exitCode: number;
|
|
19
|
+
duration: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Base class for external agent integrations
|
|
23
|
+
*/
|
|
24
|
+
export declare abstract class BaseExternalAgent {
|
|
25
|
+
protected config: ExternalAgentConfig;
|
|
26
|
+
constructor(config: ExternalAgentConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Check if the external tool is available
|
|
29
|
+
*/
|
|
30
|
+
abstract isAvailable(): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Execute a prompt with the external agent
|
|
33
|
+
*/
|
|
34
|
+
abstract execute(prompt: string): Promise<ExternalAgentResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Get the agent name
|
|
37
|
+
*/
|
|
38
|
+
getName(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Execute a command and return result
|
|
41
|
+
*/
|
|
42
|
+
protected runCommand(args: string[]): Promise<ExternalAgentResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a command exists
|
|
45
|
+
*/
|
|
46
|
+
protected commandExists(command: string): Promise<boolean>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Claude Code CLI integration
|
|
50
|
+
*/
|
|
51
|
+
export declare class ClaudeCodeAgent extends BaseExternalAgent {
|
|
52
|
+
constructor(cwd?: string);
|
|
53
|
+
isAvailable(): Promise<boolean>;
|
|
54
|
+
execute(prompt: string): Promise<ExternalAgentResult>;
|
|
55
|
+
executeWithSession(prompt: string, sessionId?: string): Promise<ExternalAgentResult>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Gemini CLI integration
|
|
59
|
+
*/
|
|
60
|
+
export declare class GeminiCliAgent extends BaseExternalAgent {
|
|
61
|
+
private model;
|
|
62
|
+
constructor(cwd?: string, model?: string);
|
|
63
|
+
isAvailable(): Promise<boolean>;
|
|
64
|
+
execute(prompt: string): Promise<ExternalAgentResult>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* OpenAI Codex CLI integration
|
|
68
|
+
*/
|
|
69
|
+
export declare class CodexCliAgent extends BaseExternalAgent {
|
|
70
|
+
constructor(cwd?: string);
|
|
71
|
+
isAvailable(): Promise<boolean>;
|
|
72
|
+
execute(prompt: string): Promise<ExternalAgentResult>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Aider CLI integration
|
|
76
|
+
*/
|
|
77
|
+
export declare class AiderAgent extends BaseExternalAgent {
|
|
78
|
+
constructor(cwd?: string);
|
|
79
|
+
isAvailable(): Promise<boolean>;
|
|
80
|
+
execute(prompt: string): Promise<ExternalAgentResult>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generic external agent for any CLI tool
|
|
84
|
+
*/
|
|
85
|
+
export declare class GenericExternalAgent extends BaseExternalAgent {
|
|
86
|
+
private promptArg;
|
|
87
|
+
constructor(config: ExternalAgentConfig & {
|
|
88
|
+
promptArg?: string;
|
|
89
|
+
});
|
|
90
|
+
isAvailable(): Promise<boolean>;
|
|
91
|
+
execute(prompt: string): Promise<ExternalAgentResult>;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* External Agent Registry
|
|
95
|
+
*/
|
|
96
|
+
declare class ExternalAgentRegistry {
|
|
97
|
+
private agents;
|
|
98
|
+
constructor();
|
|
99
|
+
register(name: string, factory: () => BaseExternalAgent): void;
|
|
100
|
+
get(name: string): BaseExternalAgent | undefined;
|
|
101
|
+
list(): string[];
|
|
102
|
+
getAvailable(): Promise<string[]>;
|
|
103
|
+
}
|
|
104
|
+
export declare function getExternalAgentRegistry(): ExternalAgentRegistry;
|
|
105
|
+
/**
|
|
106
|
+
* Create an external agent by name
|
|
107
|
+
*/
|
|
108
|
+
export declare function createExternalAgent(name: string, cwd?: string): BaseExternalAgent | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* Convert external agent to tool for use with PraisonAI agents
|
|
111
|
+
*/
|
|
112
|
+
export declare function externalAgentAsTool(agent: BaseExternalAgent): {
|
|
113
|
+
name: string;
|
|
114
|
+
description: string;
|
|
115
|
+
execute: (input: string) => Promise<string>;
|
|
116
|
+
};
|
|
117
|
+
export {};
|